Material UI React component library. Use for React UI.
BY G1JoshiUPDATED Oct 28, 2026
INTENDED FOR✳Claude Code>_Codex↗Cursor◎ChatGPT✦GeminiInstall in a listed agent.
instructions.md
---
name: materialui-b5cab7ed6608
description: Expert Material UI (MUI) assistance covering Emotion styled components, theme customization, DataGrid, and accessible icons. Use when building React enterprise dashboards with Google's Material Design.
---
# Material UI (MUI)
MUI Core (v6) is the gold standard for React UI. v6 introduces **Pigment CSS** (Zero-runtime CSS-in-JS) for compatibility with React Server Components (Next.js App Router).
## When to Use
- **Enterprise React Design Systems**: Implementing Google's Material Design guidelines with battle-tested React components.
- **Complex Administrative Portals**: Utilizing advanced Data Grid, Date Pickers, and Tree View components.
- **Custom Theming & Design Tokens**: Building accessible, branded design systems via `createTheme` and CSS variables.
- **Rapid Dashboard Prototyping**: Developing polished responsive dashboards with minimal custom CSS.
## Quick Start
```tsx
import * as React from "react";
import {
Button,
Container,
Typography,
Card,
CardContent,
} from "@mui/material";
export default function MuiDemo() {
return (
<Container maxWidth="sm" sx={{ py: 4 }}>
<Card elevation={3}>
<CardContent>
<Typography variant="h5" component="div" gutterBottom>
Material UI Card
</Typography>
<Typography color="text.secondary" paragraph>
Pre-styled component adhering to Material Design 3.
</Typography>
<Button variant="contained" color="primary">
Primary Action
</Button>
</CardContent>
</Card>
</Container>
);
}
```
## Core Concepts
### Theme Customization & CSS Theme Variables
Configuring design tokens and light/dark color schemes with MUI:
```tsx
import { createTheme, ThemeProvider, CssBaseline } from "@mui/material";
const theme = createTheme({
cssVariables: true, // Enables native CSS variables
colorSchemes: {
light: {
palette: {
primary: { main: "#2563eb" },
secondary: { main: "#475569" },
},
},
dark: {
palette: {
primary: { main: "#60a5fa" },
secondary: { main: "#94a3b8" },
},
},
},
typography: {
fontFamily: '"Inter", "Roboto", "Helvetica", sans-serif',
},
});
export function AppThemeProvider({ children }: { children: React.ReactNode }) {
return (
<ThemeProvider theme={theme}>
<CssBaseline />
{children}
</ThemeProvider>
);
}
```
### The SX Prop & Dynamic System Styling
Applying theme-aware styles directly to components:
```tsx
import { Box, Typography, Button, Stack } from "@mui/material";
export function StatCard({ label, value }: { label: string; value: string }) {
return (
<Box
sx={{
p: 3,
bgcolor: "background.paper",
borderRadius: 2,
boxShadow: 1,
border: "1px solid",
borderColor: "divider",
transition: "transform 0.2s, box-shadow 0.2s",
"&:hover": {
transform: "translateY(-2px)",
boxShadow: 3,
},
}}
>
<Typography variant="body2" color="text.secondary">
{label}
</Typography>
<Typography variant="h4" fontWeight="bold" sx={{ mt: 1 }}>
{value}
</Typography>
</Box>
);
}
```
### Accessible Form Controls & Dialog Composition
Building composable modal workflows with focus trap:
```tsx
import {
Dialog,
DialogTitle,
DialogContent,
DialogActions,
TextField,
Button,
} from "@mui/material";
import { useState } from "react";
export function EditDialog({
open,
onClose,
}: {
open: boolean;
onClose: () => void;
}) {
const [name, setName] = useState("");
return (
<Dialog open={open} onClose={onClose} fullWidth maxWidth="sm">
<DialogTitle>Update Profile</DialogTitle>
<DialogContent>
<TextField
autoFocus
margin="dense"
label="Full Name"
type="text"
fullWidth
variant="outlined"
value={name}
onChange={(e) => setName(e.target.value)}
/>
</DialogContent>
<DialogActions>
<Button onClick={onClose}>Cancel</Button>
<Button variant="contained" onClick={onClose}>
Save
</Button>
</DialogActions>
</Dialog>
);
}
```
## Common Patterns
### Custom Theme Provider with Global Style Overrides
**Problem**: Overriding MUI typography and component defaults across an entire application without repetitive `sx` props.
**Solution**:
Use `createTheme` with component default props:
```typescript
import { createTheme, ThemeProvider } from "@mui/material/styles";
const theme = createTheme({
palette: {
primary: { main: "#1976d2" },
secondary: { main: "#dc004e" },
},
components: {
MuiButton: {
defaultProps: { disableElevation: true },
styleOverrides: {
root: { textTransform: "none", borderRadius: 8 },
},
},
},
});
// Wrap app: <ThemeProvider theme={theme}><App /></ThemeProvider>
```
## Best Practices
**Do**:
- Enable `cssVariables: true` in `createTheme` to prevent SSR dark-mode flicker.
- Import icons using path imports (`import AddIcon from '@mui/icons-material/Add'`) to reduce bundle size.
- Use MUI Joy UI or MUI Base UI for unstyled / modern non-Material design requirements.
- Wrap inputs with `FormControl`, `InputLabel`, and `FormHelperText` for accessibility.
**Don't**:
- Use inline style objects (`style={{...}}`); use the theme-aware `sx` prop.
- Override MUI internal classnames (`.MuiButton-root`) directly; use theme overrides or `sx`.
- Nest multiple `ThemeProvider` instances without inheritance.
## Troubleshooting
| Error | Cause | Solution |
| :------------------------------------------------------------------- | :--------------------------------------------------------------- | :---------------------------------------------------------------------------- |
| `TypeError: Cannot read properties of undefined (reading 'spacing')` | Component rendered outside `<ThemeProvider>`. | Ensure root app is wrapped in `<ThemeProvider theme={theme}>`. |
| `MUI: The value provided to Autocomplete is invalid` | Value object reference does not match any item in options array. | Implement `isOptionEqualToValue={(option, value) => option.id === value.id}`. |
| `CSS specificity clash with Tailwind / emotion` | Order of CSS injection causes rules to be overridden. | Configure Emotion `StyledEngineProvider` with `injectFirst`. |
## References
- [Material UI Documentation](https://mui.com/)
---
name: materialui-b5cab7ed6608
description: Expert Material UI (MUI) assistance covering Emotion styled components, theme customization, DataGrid, and accessible icons. Use when building React enterprise dashboards with Google's Material Design.
---
# Material UI (MUI)
MUI Core (v6) is the gold standard for React UI. v6 introduces **Pigment CSS** (Zero-runtime CSS-in-JS) for compatibility with React Server Components (Next.js App Router).
## When to Use
- **Enterprise React Design Systems**: Implementing Google's Material Design guidelines with battle-tested React components.
- **Complex Administrative Portals**: Utilizing advanced Data Grid, Date Pickers, and Tree View components.
- **Custom Theming & Design Tokens**: Building accessible, branded design systems via `createTheme` and CSS variables.
- **Rapid Dashboard Prototyping**: Developing polished responsive dashboards with minimal custom CSS.
## Quick Start
```tsx
import * as React from "react";
import {
Button,
Container,
Typography,
Card,
CardContent,
} from "@mui/material";
export default function MuiDemo() {
return (
<Container maxWidth="sm" sx={{ py: 4 }}>
<Card elevation={3}>
<CardContent>
<Typography variant="h5" component="div" gutterBottom>
Material UI Card
</Typography>
<Typography color="text.secondary" paragraph>
Pre-styled component adhering to Material Design 3.
</Typography>
<Button variant="contained" color="primary">
Primary Action
</Button>
</CardContent>
</Card>
</Container>
);
}
```
## Core Concepts
### Theme Customization & CSS Theme Variables
Configuring design tokens and light/dark color schemes with MUI:
```tsx
import { createTheme, ThemeProvider, CssBaseline } from "@mui/material";
const theme = createTheme({
cssVariables: true, // Enables native CSS variables
colorSchemes: {
light: {
palette: {
primary: { main: "#2563eb" },
secondary: { main: "#475569" },
},
},
dark: {
palette: {
primary: { main: "#60a5fa" },
secondary: { main: "#94a3b8" },
},
},
},
typography: {
fontFamily: '"Inter", "Roboto", "Helvetica", sans-serif',
},
});
export function AppThemeProvider({ children }: { children: React.ReactNode }) {
return (
<ThemeProvider theme={theme}>
<CssBaseline />
{children}
</ThemeProvider>
);
}
```
### The SX Prop & Dynamic System Styling
Applying theme-aware styles directly to components:
```tsx
import { Box, Typography, Button, Stack } from "@mui/material";
export function StatCard({ label, value }: { label: string; value: string }) {
return (
<Box
sx={{
p: 3,
bgcolor: "background.paper",
borderRadius: 2,
boxShadow: 1,
border: "1px solid",
borderColor: "divider",
transition: "transform 0.2s, box-shadow 0.2s",
"&:hover": {
transform: "translateY(-2px)",
boxShadow: 3,
},
}}
>
<Typography variant="body2" color="text.secondary">
{label}
</Typography>
<Typography variant="h4" fontWeight="bold" sx={{ mt: 1 }}>
{value}
</Typography>
</Box>
);
}
```
### Accessible Form Controls & Dialog Composition
Building composable modal workflows with focus trap:
```tsx
import {
Dialog,
DialogTitle,
DialogContent,
DialogActions,
TextField,
Button,
} from "@mui/material";
import { useState } from "react";
export function EditDialog({
open,
onClose,
}: {
open: boolean;
onClose: () => void;
}) {
const [name, setName] = useState("");
return (
<Dialog open={open} onClose={onClose} fullWidth maxWidth="sm">
<DialogTitle>Update Profile</DialogTitle>
<DialogContent>
<TextField
autoFocus
margin="dense"
label="Full Name"
type="text"
fullWidth
variant="outlined"
value={name}
onChange={(e) => setName(e.target.value)}
/>
</DialogContent>
<DialogActions>
<Button onClick={onClose}>Cancel</Button>
<Button variant="contained" onClick={onClose}>
Save
</Button>
</DialogActions>
</Dialog>
);
}
```
## Common Patterns
### Custom Theme Provider with Global Style Overrides
**Problem**: Overriding MUI typography and component defaults across an entire application without repetitive `sx` props.
**Solution**:
Use `createTheme` with component default props:
```typescript
import { createTheme, ThemeProvider } from "@mui/material/styles";
const theme = createTheme({
palette: {
primary: { main: "#1976d2" },
secondary: { main: "#dc004e" },
},
components: {
MuiButton: {
defaultProps: { disableElevation: true },
styleOverrides: {
root: { textTransform: "none", borderRadius: 8 },
},
},
},
});
// Wrap app: <ThemeProvider theme={theme}><App /></ThemeProvider>
```
## Best Practices
**Do**:
- Enable `cssVariables: true` in `createTheme` to prevent SSR dark-mode flicker.
- Import icons using path imports (`import AddIcon from '@mui/icons-material/Add'`) to reduce bundle size.
- Use MUI Joy UI or MUI Base UI for unstyled / modern non-Material design requirements.
- Wrap inputs with `FormControl`, `InputLabel`, and `FormHelperText` for accessibility.
**Don't**:
- Use inline style objects (`style={{...}}`); use the theme-aware `sx` prop.
- Override MUI internal classnames (`.MuiButton-root`) directly; use theme overrides or `sx`.
- Nest multiple `ThemeProvider` instances without inheritance.
## Troubleshooting
| Error | Cause | Solution |
| :------------------------------------------------------------------- | :--------------------------------------------------------------- | :---------------------------------------------------------------------------- |
| `TypeError: Cannot read properties of undefined (reading 'spacing')` | Component rendered outside `<ThemeProvider>`. | Ensure root app is wrapped in `<ThemeProvider theme={theme}>`. |
| `MUI: The value provided to Autocomplete is invalid` | Value object reference does not match any item in options array. | Implement `isOptionEqualToValue={(option, value) => option.id === value.id}`. |
| `CSS specificity clash with Tailwind / emotion` | Order of CSS injection causes rules to be overridden. | Configure Emotion `StyledEngineProvider` with `injectFirst`. |
## References
- [Material UI Documentation](https://mui.com/)
COMPATIBILITY & REFERENCES
Platform guidance
Imported from the listed AgentSkill.sh category. Complete supplied package files and notices are retained. Required external tools and credentials are not installed. No bundled code was executed during import. Individual agent task behavior has not been tested.
Creates comprehensive frontend UI/UX designs including user interfaces, design systems, component libraries, responsive layouts, and accessibility implementations. Produces wireframes, mockups, design specifications, and implementation guidelines. Use when designing user interfaces, creating desi...
Expert in building scalable design systems with Atomic Design, design tokens, and theming infrastructure. Use when creating component libraries, implementing dark mode, or establishing typography and color systems. Covers multi-brand support, Storybook-driven development, and accessibility-first ...
Use when implementing Liquid Glass effects, reviewing UI for Liquid Glass adoption, debugging visual artifacts, optimizing performance, or requesting expert review of Liquid Glass implementation - provides comprehensive design principles, API patterns, and troubleshooting guidance from WWDC 2025....