Files
metabuilder/python/README.md
johndoe6345789 c406b8df96 refactor: Reorganize FakeMUI by implementation type
Move FakeMUI content to appropriate root-level folders by implementation:

**React Components → components/fakemui/**
- 537 components (inputs, surfaces, layout, data-display, feedback,
  navigation, utils, atoms, lab, x, email, workflows)
- 416 SVG icons
- Full barrel exports in components/fakemui/index.ts

**QML Components → qml/**
- 104 Material Design 3 components (11 categories)
- 7 hybrid application views
- 8 desktop widgets
- qmldir module registration

**Python Bindings → python/fakemui/**
- 15 PyQt6 modules (120+ components)
- Full Python package structure with pyproject.toml

**SCSS/Styles → fakemui/** (renamed purpose)
- scss/ - Material Design 3 stylesheets
- styles/ - Component SCSS modules
- src/utils/ - Accessibility utilities
- index.ts now re-exports from components/fakemui/

This separation allows:
- React: import { Button } from '@metabuilder/components/fakemui'
- QML: import QmlComponents 1.0
- Python: from fakemui import Button, Card
- Backward compat: import { Button } from '@metabuilder/fakemui'

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 12:59:24 +00:00

3.3 KiB

MetaBuilder Python Packages

Python packages for MetaBuilder, including FakeMUI - a PyQt6-based Material UI component library.

Packages

fakemui

Material UI-style widgets for PyQt6. A complete replacement for complex Qt styling with simple, composable components.

Features:

  • 120+ Material Design 3 components
  • Full theming support (light/dark modes)
  • Consistent API mirroring MUI React components
  • Cross-platform desktop support via PyQt6

Component Categories:

  • Inputs (16): Button, IconButton, Fab, Input, TextArea, Select, CheckBox, RadioButton, Switch, Slider, FormGroup, FormLabel, FormHelperText, TextField, ToggleButton, ToggleButtonGroup
  • Data Display (19): Avatar, AvatarGroup, Badge, Chip, Divider, Icon, ListWidget, ListItem, ListItemButton, ListItemIcon, ListItemText, ListItemAvatar, ListSubheader, TableWidget, TableHeader, TableBody, TableRow, TableCell, Tooltip, Typography
  • Feedback (8): Alert, Backdrop, Spinner, CircularProgress, LinearProgress, Progress, Skeleton, Snackbar
  • Surfaces (14): Paper, Card, CardHeader, CardContent, CardActions, CardActionArea, CardMedia, Accordion, AccordionSummary, AccordionDetails, AccordionActions, AppBar, Toolbar, Drawer
  • Navigation (13): Breadcrumbs, Link, Menu, MenuItem, MenuList, TabWidget, Tab, Pagination, Stepper, Step, StepLabel, BottomNavigation, BottomNavigationAction
  • Layout (9): Box, Container, Grid, Stack, Flex, ImageList, ImageListItem, ImageListItemBar, Spacer
  • Utils (13): Modal, Dialog, DialogOverlay, DialogHeader, DialogTitle, DialogContent, DialogActions, Popover, Collapse, Fade, ClickAwayListener, apply_theme, get_theme, ThemeProvider
  • Atoms (14): Title, Subtitle, Label, Text, StatBadge, Section, SectionHeader, SectionTitle, SectionContent, EmptyState, LoadingState, ErrorState, Panel, AutoGrid
  • Theming (12): Theme, Palette, Typography, Shape, Shadows, Transitions, ZIndex, Breakpoints, default_theme, create_theme, ThemeProvider, use_theme, styled, process_sx_prop
  • Lab (11): LoadingButton, Timeline, TimelineItem, TimelineSeparator, TimelineConnector, TimelineContent, TimelineDot, TimelineOppositeContent, TreeView, TreeItem, Masonry
  • MUI X (12): DataGrid, DataGridPro, DataGridPremium, DataGridColumn, DatePicker, TimePicker, DateTimePicker, DesktopDatePicker, MobileDatePicker, StaticDatePicker, CalendarPicker, ClockPicker

Installation

# From project root
pip install -e ./python

# Or install dependencies directly
pip install PyQt6>=6.4.0

Usage

from fakemui import (
    Button, TextField, Card, CardContent,
    Box, Stack, Typography, ThemeProvider,
    create_theme
)

# Create a theme
theme = create_theme(palette={'mode': 'dark'})

# Build UI
app = QApplication(sys.argv)
with ThemeProvider(theme):
    window = Box()
    window.add_widget(
        Card(
            CardContent(
                Stack(spacing=2, children=[
                    Typography("Hello FakeMUI!", variant="h4"),
                    TextField(label="Name", variant="outlined"),
                    Button("Submit", variant="contained", color="primary")
                ])
            )
        )
    )
    window.show()
    app.exec()

Development

# Install dev dependencies
pip install -e ./python[dev]

# Run tests
pytest

# Type checking
mypy fakemui

License

MIT