The theme's components key allows you to customize a component without wrapping it in another component. You can change the styles, the default props, and more.
+## Default props
+
+You can change the default of every prop of a MUI component.
+A `defaultProps` key is exposed in the theme's `components` key for this use case.
+
+```js
+const theme = createTheme({
+ components: {
+ // Name of the component
+ MuiButtonBase: {
+ defaultProps: {
+ // The props to change the default for.
+ disableRipple: true, // No more ripple!
+ },
+ },
+ },
+});
+```
+
+{{"demo": "pages/customization/theme-components/DefaultProps.js"}}
+
+To override lab component styles with TypeScript, check [this page](/components/about-the-lab/#typescript).
+
## Global style overrides
You can use the theme's `styleOverrides` key to potentially change every single style injected by MUI into the DOM.
@@ -29,31 +52,45 @@ The list of each component's classes is documented under the **CSS** section of
To override a lab component's styles with TypeScript, check [this section of the documentation](/components/about-the-lab/#typescript).
-## Default props
+### Overrides based on props
-You can change the default of every prop of a MUI component.
-A `defaultProps` key is exposed in the theme's `components` key for this use case.
+You can pass a callback as a value in each slot of the component's `styleOverrides` to apply styles based on props.
+
+The `ownerState` prop is a combination of public props that you pass to the component + internal state of the component.
```js
-const theme = createTheme({
+const finalTheme = createTheme({
components: {
- // Name of the component
- MuiButtonBase: {
- defaultProps: {
- // The props to change the default for.
- disableRipple: true, // No more ripple!
+ MuiSlider: {
+ styleOverrides: {
+ valueLabel: ({ ownerState, theme }) => ({
+ ...(ownerState.orientation === 'vertical' && {
+ backgroundColor: 'transparent',
+ color: theme.palette.grey[500],
+ }),
+ }),
},
},
},
});
```
-{{"demo": "pages/customization/theme-components/DefaultProps.js"}}
+{{"demo": "pages/customization/theme-components/GlobalThemeOverrideCallback.js"}}
-To override lab component styles with TypeScript, check [this page](/components/about-the-lab/#typescript).
+### Using `sx` (experimental) syntax
+
+If you are not familiar `sx`, first check out [the concept](/system/the-sx-prop) and [the difference with the `styled`](/system/styled/#difference-with-the-sx-prop).
+
+`sx` is also compatible with theme style overrides if you prefer the shorthand notation.
+
+{{"demo": "pages/customization/theme-components/GlobalThemeOverrideSx.js"}}
## Adding new component variants
+> ⚠️ This API has been **deprecated** and will likely be removed in the next major release. If you want to apply styles based on props, take a look at [Overrides based on props](#overrides-based-on-props) instead.
+>
+> If you are interested to see the reasoning behind this change, check out [issue #30412](https://github.com/mui-org/material-ui/issues/30412)
+
You can use the `variants` key in the theme's `components` section to add new variants to MUI components. These new variants can specify what styles the component should have when specific props are applied.
The definitions are specified in an array, under the component's name. For each of them a CSS class is added to the HTML ``. The order is important, so make sure that the styles that should win are specified last.
diff --git a/packages/mui-joy/src/Button/Button.test.js b/packages/mui-joy/src/Button/Button.test.js
index 29b110ff47766b..f90484573aab82 100644
--- a/packages/mui-joy/src/Button/Button.test.js
+++ b/packages/mui-joy/src/Button/Button.test.js
@@ -14,7 +14,6 @@ describe('Joy ', () => {
refInstanceof: window.HTMLButtonElement,
muiName: 'MuiButton',
testVariantProps: { variant: 'contained', fullWidth: true },
- testStateOverrides: { prop: 'size', value: 'sm', styleKey: 'sizeSm' },
skip: ['propsSpread', 'componentsProp', 'classesRoot'],
}));
diff --git a/packages/mui-joy/src/Button/Button.tsx b/packages/mui-joy/src/Button/Button.tsx
index 9f0aca879baccc..7b494c24ed6775 100644
--- a/packages/mui-joy/src/Button/Button.tsx
+++ b/packages/mui-joy/src/Button/Button.tsx
@@ -36,17 +36,7 @@ const useUtilityClasses = (ownerState: ButtonProps & { focusVisible: boolean })
const ButtonRoot = styled('button', {
name: 'MuiButton',
slot: 'Root',
- overridesResolver: (props, styles) => {
- const { ownerState } = props;
-
- return [
- styles.root,
- styles[`variant${capitalize(ownerState.variant)}`],
- styles[`color${capitalize(ownerState.color)}`],
- ownerState.size && styles[`size${capitalize(ownerState.size)}`],
- ownerState.fullWidth && styles.fullWidth,
- ];
- },
+ overridesResolver: (props, styles) => styles.root,
})<{ ownerState: ButtonProps }>(({ theme, ownerState }) => {
return [
{
diff --git a/packages/mui-joy/src/Button/ButtonProps.ts b/packages/mui-joy/src/Button/ButtonProps.ts
index 5a341d91bbf643..65fc098e16c540 100644
--- a/packages/mui-joy/src/Button/ButtonProps.ts
+++ b/packages/mui-joy/src/Button/ButtonProps.ts
@@ -8,6 +8,8 @@ import {
import { SxProps } from '../styles/defaultTheme';
import { ColorPaletteProp, VariantProp } from '../styles/types';
+export type ButtonSlot = 'root';
+
export interface ButtonPropsVariantOverrides {}
export interface ButtonPropsColorOverrides {}
diff --git a/packages/mui-joy/src/SvgIcon/SvgIcon.tsx b/packages/mui-joy/src/SvgIcon/SvgIcon.tsx
index 85cd991764b573..cca928aacca7c7 100644
--- a/packages/mui-joy/src/SvgIcon/SvgIcon.tsx
+++ b/packages/mui-joy/src/SvgIcon/SvgIcon.tsx
@@ -26,15 +26,7 @@ const useUtilityClasses = (ownerState: SvgIconProps) => {
const SvgIconRoot = styled('svg', {
name: 'MuiSvgIcon',
slot: 'Root',
- overridesResolver: (props, styles) => {
- const { ownerState } = props;
-
- return [
- styles.root,
- styles[`color${capitalize(ownerState.color)}`],
- styles[`fontSize${capitalize(ownerState.fontSize)}`],
- ];
- },
+ overridesResolver: (props, styles) => styles.root,
})<{ ownerState: SvgIconProps }>(({ theme, ownerState }) => {
return [
{
diff --git a/packages/mui-joy/src/SvgIcon/SvgIconProps.ts b/packages/mui-joy/src/SvgIcon/SvgIconProps.ts
index 4112b6173bd1a1..b17f8a2ea75ce6 100644
--- a/packages/mui-joy/src/SvgIcon/SvgIconProps.ts
+++ b/packages/mui-joy/src/SvgIcon/SvgIconProps.ts
@@ -4,6 +4,8 @@ import { SxProps } from '../styles/defaultTheme';
import { ColorPaletteProp, FontSize } from '../styles/types';
import { SvgIconClasses } from './svgIconClasses';
+export type SvgIconSlot = 'root';
+
export interface SvgIconPropsSizeOverrides {}
export interface SvgIconPropsColorOverrides {}
diff --git a/packages/mui-joy/src/Switch/Switch.test.js b/packages/mui-joy/src/Switch/Switch.test.js
index 53478b34da225c..35a2e8579df2b6 100644
--- a/packages/mui-joy/src/Switch/Switch.test.js
+++ b/packages/mui-joy/src/Switch/Switch.test.js
@@ -15,6 +15,7 @@ describe('', () => {
testDeepOverrides: [
{ slotName: 'track', slotClassName: classes.track },
{ slotName: 'input', slotClassName: classes.input },
+ { slotName: 'thumb', slotClassName: classes.thumb },
],
refInstanceof: window.HTMLSpanElement,
skip: [
diff --git a/packages/mui-joy/src/Switch/SwitchProps.ts b/packages/mui-joy/src/Switch/SwitchProps.ts
index e4298111914736..db13852e69ca1d 100644
--- a/packages/mui-joy/src/Switch/SwitchProps.ts
+++ b/packages/mui-joy/src/Switch/SwitchProps.ts
@@ -5,6 +5,8 @@ import { SwitchClasses } from './switchClasses';
import { SxProps } from '../styles/defaultTheme';
import { ColorPaletteProp } from '../styles/types';
+export type SwitchSlot = 'root' | 'input' | 'track' | 'thumb';
+
export interface SwitchPropsColorOverrides {}
export interface SwitchPropsSizeOverrides {}
diff --git a/packages/mui-joy/src/Typography/Typography.test.js b/packages/mui-joy/src/Typography/Typography.test.js
index a7d7e2907ec02f..93a3e42f8048eb 100644
--- a/packages/mui-joy/src/Typography/Typography.test.js
+++ b/packages/mui-joy/src/Typography/Typography.test.js
@@ -14,7 +14,6 @@ describe('', () => {
render,
refInstanceof: window.HTMLParagraphElement,
muiName: 'MuiTypography',
- testStateOverrides: { prop: 'level', value: 'h2', styleKey: 'h2' },
skip: ['componentsProp', 'classesRoot', 'themeVariants'],
}));
diff --git a/packages/mui-joy/src/Typography/Typography.tsx b/packages/mui-joy/src/Typography/Typography.tsx
index 63710217dfef7c..f4a98fc83c573a 100644
--- a/packages/mui-joy/src/Typography/Typography.tsx
+++ b/packages/mui-joy/src/Typography/Typography.tsx
@@ -22,16 +22,7 @@ const useUtilityClasses = (ownerState: TypographyProps) => {
export const TypographyRoot = styled('span', {
name: 'MuiTypography',
slot: 'Root',
- overridesResolver: (props, styles) => {
- const { ownerState } = props;
-
- return [
- styles.root,
- ownerState.level && styles[ownerState.level],
- ownerState.noWrap && styles.noWrap,
- ownerState.gutterBottom && styles.gutterBottom,
- ];
- },
+ overridesResolver: (props, styles) => styles.root,
})<{ ownerState: TypographyProps }>(({ theme, ownerState }) => ({
margin: 0,
...(ownerState.level && ownerState.level !== 'inherit' && theme.typography[ownerState.level]),
diff --git a/packages/mui-joy/src/Typography/TypographyProps.ts b/packages/mui-joy/src/Typography/TypographyProps.ts
index abda52a0692c7a..84faff18e9d25d 100644
--- a/packages/mui-joy/src/Typography/TypographyProps.ts
+++ b/packages/mui-joy/src/Typography/TypographyProps.ts
@@ -4,6 +4,8 @@ import { TypographyClasses } from './typographyClasses';
import { SxProps } from '../styles/defaultTheme';
import { TypographySystem } from '../styles/types';
+export type TypographySlot = 'root';
+
export interface TypographyTypeMap
{
props: P & {
/**
diff --git a/packages/mui-joy/src/styles/CssVarsProvider.tsx b/packages/mui-joy/src/styles/CssVarsProvider.tsx
index 3b99bf1fbf0b92..772c0828ed1479 100644
--- a/packages/mui-joy/src/styles/CssVarsProvider.tsx
+++ b/packages/mui-joy/src/styles/CssVarsProvider.tsx
@@ -8,6 +8,7 @@ import defaultTheme, {
darkColorSystem,
Focus,
ThemeScales,
+ JoyTheme,
} from './defaultTheme';
import { DefaultColorScheme, ExtendedColorScheme } from './types/colorScheme';
import { Variants } from './types/variants';
@@ -35,7 +36,7 @@ type ThemeInput = PartialNested<
> & {
breakpoints?: BreakpointsOptions;
spacing?: SpacingOptions;
- components?: Components;
+ components?: Components;
};
type JoyThemeInput = ThemeInput & {
diff --git a/packages/mui-joy/src/styles/components.d.ts b/packages/mui-joy/src/styles/components.d.ts
index b0d2231051b87a..cd42de8190ddec 100644
--- a/packages/mui-joy/src/styles/components.d.ts
+++ b/packages/mui-joy/src/styles/components.d.ts
@@ -1,22 +1,44 @@
import { CSSInterpolation } from '@mui/system';
import { GlobalStateSlot } from '@mui/base';
-import { ButtonProps } from '../Button/ButtonProps';
-import { ButtonClassKey } from '../Button/buttonClasses';
-import { SwitchProps } from '../Switch/SwitchProps';
-import { SwitchClassKey } from '../Switch/switchClasses';
+import { ButtonProps, ButtonSlot } from '../Button/ButtonProps';
+import { SwitchProps, SwitchSlot } from '../Switch/SwitchProps';
+import { TypographyProps, TypographySlot } from '../Typography/TypographyProps';
+import { SvgIconProps, SvgIconSlot } from '../SvgIcon/SvgIconProps';
-export type OverridesStyleRules = Record<
- ClassKey,
- CSSInterpolation
+export type OverridesStyleRules<
+ ClassKey extends string = string,
+ ComponentProps = Record,
+ Theme = unknown,
+> = Partial<
+ Record<
+ Exclude,
+ | CSSInterpolation
+ | ((
+ // Record is for other props that the slot receive internally
+ // Documenting all ownerStates could be a huge work, let's wait until we have a real needs from developers.
+ props: {
+ ownerState: ComponentProps & Record;
+ theme: Theme;
+ } & Record,
+ ) => CSSInterpolation)
+ >
>;
-export interface Components {
+export interface Components {
MuiButton?: {
defaultProps?: Partial;
- styleOverrides?: Partial>>;
+ styleOverrides?: OverridesStyleRules;
};
MuiSwitch?: {
defaultProps?: Partial;
- styleOverrides?: Partial>>;
+ styleOverrides?: OverridesStyleRules;
+ };
+ MuiTypography?: {
+ defaultProps?: Partial;
+ styleOverrides?: OverridesStyleRules;
+ };
+ MuiSvgIcon?: {
+ defaultProps?: Partial;
+ styleOverrides?: OverridesStyleRules;
};
}
diff --git a/packages/mui-joy/test/typescript/moduleAugmentation/CssVarsProvider.spec.tsx b/packages/mui-joy/test/typescript/moduleAugmentation/CssVarsProvider.spec.tsx
index 834d06a2fc9d63..fcc4631bd1d29c 100644
--- a/packages/mui-joy/test/typescript/moduleAugmentation/CssVarsProvider.spec.tsx
+++ b/packages/mui-joy/test/typescript/moduleAugmentation/CssVarsProvider.spec.tsx
@@ -112,5 +112,36 @@ declare module '@mui/joy/styles' {
lineHeight: 1,
},
},
+ components: {
+ MuiButton: {
+ styleOverrides: {
+ root: ({ ownerState, theme }) => {
+ const { color, variant } = ownerState;
+ const styles = [];
+ if (color === 'primary') {
+ styles.push({
+ width: 120,
+ height: 48,
+ });
+ }
+ if (variant === 'contained') {
+ styles.push(theme.typography.body1);
+ }
+ return styles;
+ },
+ },
+ },
+ MuiSwitch: {
+ styleOverrides: {
+ thumb: ({ ownerState, theme }) => [
+ ownerState.color === 'primary' && {
+ '&:hover': {
+ backgroundColor: theme.vars.palette.primary.containedHoverBg,
+ },
+ },
+ ],
+ },
+ },
+ },
}}
/>;
diff --git a/packages/mui-lab/src/themeAugmentation/components.d.ts b/packages/mui-lab/src/themeAugmentation/components.d.ts
index cfadf3cb1db509..9d5203aaa9929d 100644
--- a/packages/mui-lab/src/themeAugmentation/components.d.ts
+++ b/packages/mui-lab/src/themeAugmentation/components.d.ts
@@ -1,114 +1,190 @@
-import { ComponentsProps, ComponentsOverrides, ComponentsVariants } from '@mui/material/styles';
+import {
+ ComponentsProps,
+ ComponentsOverrides,
+ ComponentsVariants,
+ Theme as MuiTheme,
+} from '@mui/material/styles';
+
+type Theme = Omit;
+
+// shut off automatic exporting for the `Theme` above
+export {};
export interface LabComponents {
MuiCalendarPicker?: {
defaultProps?: ComponentsProps['MuiCalendarPicker'];
- styleOverrides?: ComponentsOverrides['MuiCalendarPicker'];
+ styleOverrides?: ComponentsOverrides['MuiCalendarPicker'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiCalendarPicker'];
};
MuiCalendarPickerSkeleton?: {
defaultProps?: ComponentsProps['MuiCalendarPickerSkeleton'];
- styleOverrides?: ComponentsOverrides['MuiCalendarPickerSkeleton'];
+ styleOverrides?: ComponentsOverrides['MuiCalendarPickerSkeleton'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiCalendarPickerSkeleton'];
};
MuiClockPicker?: {
defaultProps?: ComponentsProps['MuiClockPicker'];
- styleOverrides?: ComponentsOverrides['MuiClockPicker'];
+ styleOverrides?: ComponentsOverrides['MuiClockPicker'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiClockPicker'];
};
MuiDatePicker?: {
defaultProps?: ComponentsProps['MuiDatePicker'];
- styleOverrides?: ComponentsOverrides['MuiDatePicker'];
+ styleOverrides?: ComponentsOverrides['MuiDatePicker'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiDatePicker'];
};
MuiDateRangePickerDay?: {
defaultProps?: ComponentsProps['MuiDateRangePickerDay'];
- styleOverrides?: ComponentsOverrides['MuiDateRangePickerDay'];
+ styleOverrides?: ComponentsOverrides['MuiDateRangePickerDay'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiDateRangePickerDay'];
};
MuiDateTimePicker?: {
defaultProps?: ComponentsProps['MuiDateTimePicker'];
- styleOverrides?: ComponentsOverrides['MuiDateTimePicker'];
+ styleOverrides?: ComponentsOverrides['MuiDateTimePicker'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiDateTimePicker'];
};
MuiLoadingButton?: {
defaultProps?: ComponentsProps['MuiLoadingButton'];
- styleOverrides?: ComponentsOverrides['MuiLoadingButton'];
+ styleOverrides?: ComponentsOverrides['MuiLoadingButton'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiLoadingButton'];
};
MuiMonthPicker?: {
defaultProps?: ComponentsProps['MuiMonthPicker'];
- styleOverrides?: ComponentsOverrides['MuiMonthPicker'];
+ styleOverrides?: ComponentsOverrides['MuiMonthPicker'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiMonthPicker'];
};
MuiPickersDay?: {
defaultProps?: ComponentsProps['MuiPickersDay'];
- styleOverrides?: ComponentsOverrides['MuiPickersDay'];
+ styleOverrides?: ComponentsOverrides['MuiPickersDay'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiPickersDay'];
};
MuiTabList?: {
defaultProps?: ComponentsProps['MuiTabList'];
- styleOverrides?: ComponentsOverrides['MuiTabList'];
+ styleOverrides?: ComponentsOverrides['MuiTabList'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiTabList'];
};
MuiTabPanel?: {
defaultProps?: ComponentsProps['MuiTabPanel'];
- styleOverrides?: ComponentsOverrides['MuiTabPanel'];
+ styleOverrides?: ComponentsOverrides['MuiTabPanel'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiTabPanel'];
};
MuiTimeline?: {
defaultProps?: ComponentsProps['MuiTimeline'];
- styleOverrides?: ComponentsOverrides['MuiTimeline'];
+ styleOverrides?: ComponentsOverrides['MuiTimeline'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiTimeline'];
};
MuiTimelineConnector?: {
defaultProps?: ComponentsProps['MuiTimelineConnector'];
- styleOverrides?: ComponentsOverrides['MuiTimelineConnector'];
+ styleOverrides?: ComponentsOverrides['MuiTimelineConnector'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiTimelineConnector'];
};
MuiTimelineContent?: {
defaultProps?: ComponentsProps['MuiTimelineContent'];
- styleOverrides?: ComponentsOverrides['MuiTimelineContent'];
+ styleOverrides?: ComponentsOverrides['MuiTimelineContent'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiTimelineContent'];
};
MuiTimelineDot?: {
defaultProps?: ComponentsProps['MuiTimelineDot'];
- styleOverrides?: ComponentsOverrides['MuiTimelineDot'];
+ styleOverrides?: ComponentsOverrides['MuiTimelineDot'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiTimelineDot'];
};
MuiTimelineItem?: {
defaultProps?: ComponentsProps['MuiTimelineItem'];
- styleOverrides?: ComponentsOverrides['MuiTimelineItem'];
+ styleOverrides?: ComponentsOverrides['MuiTimelineItem'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiTimelineItem'];
};
MuiTimelineOppositeContent?: {
defaultProps?: ComponentsProps['MuiTimelineOppositeContent'];
- styleOverrides?: ComponentsOverrides['MuiTimelineOppositeContent'];
+ styleOverrides?: ComponentsOverrides['MuiTimelineOppositeContent'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiTimelineOppositeContent'];
};
MuiTimelineSeparator?: {
defaultProps?: ComponentsProps['MuiTimelineSeparator'];
- styleOverrides?: ComponentsOverrides['MuiTimelineSeparator'];
+ styleOverrides?: ComponentsOverrides['MuiTimelineSeparator'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiTimelineSeparator'];
};
MuiTreeItem?: {
defaultProps?: ComponentsProps['MuiTreeItem'];
- styleOverrides?: ComponentsOverrides['MuiTreeItem'];
+ styleOverrides?: ComponentsOverrides['MuiTreeItem'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiTreeItem'];
};
MuiTreeView?: {
defaultProps?: ComponentsProps['MuiTreeView'];
- styleOverrides?: ComponentsOverrides['MuiTreeView'];
+ styleOverrides?: ComponentsOverrides['MuiTreeView'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiTreeView'];
};
MuiYearPicker?: {
defaultProps?: ComponentsProps['MuiYearPicker'];
- styleOverrides?: ComponentsOverrides['MuiYearPicker'];
+ styleOverrides?: ComponentsOverrides['MuiYearPicker'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiYearPicker'];
};
MuiPickerStaticWrapper?: {
defaultProps?: ComponentsProps['MuiPickerStaticWrapper'];
- styleOverrides?: ComponentsOverrides['MuiPickerStaticWrapper'];
+ styleOverrides?: ComponentsOverrides['MuiPickerStaticWrapper'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiPickerStaticWrapper'];
};
}
diff --git a/packages/mui-material/src/styles/components.d.ts b/packages/mui-material/src/styles/components.d.ts
index c181cf028b26df..07f4f62afe7caf 100644
--- a/packages/mui-material/src/styles/components.d.ts
+++ b/packages/mui-material/src/styles/components.d.ts
@@ -2,569 +2,908 @@ import { ComponentsProps } from './props';
import { ComponentsOverrides } from './overrides';
import { ComponentsVariants } from './variants';
-export interface Components {
+export interface Components {
MuiAlert?: {
defaultProps?: ComponentsProps['MuiAlert'];
- styleOverrides?: ComponentsOverrides['MuiAlert'];
+ styleOverrides?: ComponentsOverrides['MuiAlert'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiAlert'];
};
MuiAlertTitle?: {
defaultProps?: ComponentsProps['MuiAlertTitle'];
- styleOverrides?: ComponentsOverrides['MuiAlertTitle'];
+ styleOverrides?: ComponentsOverrides['MuiAlertTitle'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiAlertTitle'];
};
MuiAppBar?: {
defaultProps?: ComponentsProps['MuiAppBar'];
- styleOverrides?: ComponentsOverrides['MuiAppBar'];
+ styleOverrides?: ComponentsOverrides['MuiAppBar'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiAppBar'];
};
MuiAutocomplete?: {
defaultProps?: ComponentsProps['MuiAutocomplete'];
- styleOverrides?: ComponentsOverrides['MuiAutocomplete'];
+ styleOverrides?: ComponentsOverrides['MuiAutocomplete'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiAutocomplete'];
};
MuiAvatar?: {
defaultProps?: ComponentsProps['MuiAvatar'];
- styleOverrides?: ComponentsOverrides['MuiAvatar'];
+ styleOverrides?: ComponentsOverrides['MuiAvatar'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiAvatar'];
};
MuiAvatarGroup?: {
defaultProps?: ComponentsProps['MuiAvatarGroup'];
- styleOverrides?: ComponentsOverrides['MuiAvatarGroup'];
+ styleOverrides?: ComponentsOverrides['MuiAvatarGroup'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiAvatarGroup'];
};
MuiBackdrop?: {
defaultProps?: ComponentsProps['MuiBackdrop'];
- styleOverrides?: ComponentsOverrides['MuiBackdrop'];
+ styleOverrides?: ComponentsOverrides['MuiBackdrop'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiBackdrop'];
};
MuiBadge?: {
defaultProps?: ComponentsProps['MuiBadge'];
- styleOverrides?: ComponentsOverrides['MuiBadge'];
+ styleOverrides?: ComponentsOverrides['MuiBadge'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiBadge'];
};
MuiBottomNavigation?: {
defaultProps?: ComponentsProps['MuiBottomNavigation'];
- styleOverrides?: ComponentsOverrides['MuiBottomNavigation'];
+ styleOverrides?: ComponentsOverrides['MuiBottomNavigation'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiBottomNavigation'];
};
MuiBottomNavigationAction?: {
defaultProps?: ComponentsProps['MuiBottomNavigationAction'];
- styleOverrides?: ComponentsOverrides['MuiBottomNavigationAction'];
+ styleOverrides?: ComponentsOverrides['MuiBottomNavigationAction'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiBottomNavigationAction'];
};
MuiBreadcrumbs?: {
defaultProps?: ComponentsProps['MuiBreadcrumbs'];
- styleOverrides?: ComponentsOverrides['MuiBreadcrumbs'];
+ styleOverrides?: ComponentsOverrides['MuiBreadcrumbs'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiBreadcrumbs'];
};
MuiButton?: {
defaultProps?: ComponentsProps['MuiButton'];
- styleOverrides?: ComponentsOverrides['MuiButton'];
+ styleOverrides?: ComponentsOverrides['MuiButton'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiButton'];
};
MuiButtonBase?: {
defaultProps?: ComponentsProps['MuiButtonBase'];
- styleOverrides?: ComponentsOverrides['MuiButtonBase'];
+ styleOverrides?: ComponentsOverrides['MuiButtonBase'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiButtonBase'];
};
MuiButtonGroup?: {
defaultProps?: ComponentsProps['MuiButtonGroup'];
- styleOverrides?: ComponentsOverrides['MuiButtonGroup'];
+ styleOverrides?: ComponentsOverrides['MuiButtonGroup'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiButtonGroup'];
};
MuiCard?: {
defaultProps?: ComponentsProps['MuiCard'];
- styleOverrides?: ComponentsOverrides['MuiCard'];
+ styleOverrides?: ComponentsOverrides['MuiCard'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiCard'];
};
MuiCardActionArea?: {
defaultProps?: ComponentsProps['MuiCardActionArea'];
- styleOverrides?: ComponentsOverrides['MuiCardActionArea'];
+ styleOverrides?: ComponentsOverrides['MuiCardActionArea'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiCardActionArea'];
};
MuiCardActions?: {
defaultProps?: ComponentsProps['MuiCardActions'];
- styleOverrides?: ComponentsOverrides['MuiCardActions'];
+ styleOverrides?: ComponentsOverrides['MuiCardActions'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiCardActions'];
};
MuiCardContent?: {
defaultProps?: ComponentsProps['MuiCardContent'];
- styleOverrides?: ComponentsOverrides['MuiCardContent'];
+ styleOverrides?: ComponentsOverrides['MuiCardContent'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiCardContent'];
};
MuiCardHeader?: {
defaultProps?: ComponentsProps['MuiCardHeader'];
- styleOverrides?: ComponentsOverrides['MuiCardHeader'];
+ styleOverrides?: ComponentsOverrides['MuiCardHeader'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiCardHeader'];
};
MuiCardMedia?: {
defaultProps?: ComponentsProps['MuiCardMedia'];
- styleOverrides?: ComponentsOverrides['MuiCardMedia'];
+ styleOverrides?: ComponentsOverrides['MuiCardMedia'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiCardMedia'];
};
MuiCheckbox?: {
defaultProps?: ComponentsProps['MuiCheckbox'];
- styleOverrides?: ComponentsOverrides['MuiCheckbox'];
+ styleOverrides?: ComponentsOverrides['MuiCheckbox'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiCheckbox'];
};
MuiChip?: {
defaultProps?: ComponentsProps['MuiChip'];
- styleOverrides?: ComponentsOverrides['MuiChip'];
+ styleOverrides?: ComponentsOverrides['MuiChip'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiChip'];
};
MuiCircularProgress?: {
defaultProps?: ComponentsProps['MuiCircularProgress'];
- styleOverrides?: ComponentsOverrides['MuiCircularProgress'];
+ styleOverrides?: ComponentsOverrides['MuiCircularProgress'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiCircularProgress'];
};
MuiCollapse?: {
defaultProps?: ComponentsProps['MuiCollapse'];
- styleOverrides?: ComponentsOverrides['MuiCollapse'];
+ styleOverrides?: ComponentsOverrides['MuiCollapse'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiCollapse'];
};
MuiContainer?: {
defaultProps?: ComponentsProps['MuiContainer'];
- styleOverrides?: ComponentsOverrides['MuiContainer'];
+ styleOverrides?: ComponentsOverrides['MuiContainer'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiContainer'];
};
MuiCssBaseline?: {
defaultProps?: ComponentsProps['MuiCssBaseline'];
- styleOverrides?: ComponentsOverrides['MuiCssBaseline'];
+ styleOverrides?: ComponentsOverrides['MuiCssBaseline'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiCssBaseline'];
};
MuiDialog?: {
defaultProps?: ComponentsProps['MuiDialog'];
- styleOverrides?: ComponentsOverrides['MuiDialog'];
+ styleOverrides?: ComponentsOverrides['MuiDialog'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiDialog'];
};
MuiDialogActions?: {
defaultProps?: ComponentsProps['MuiDialogActions'];
- styleOverrides?: ComponentsOverrides['MuiDialogActions'];
+ styleOverrides?: ComponentsOverrides['MuiDialogActions'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiDialogActions'];
};
MuiDialogContent?: {
defaultProps?: ComponentsProps['MuiDialogContent'];
- styleOverrides?: ComponentsOverrides['MuiDialogContent'];
+ styleOverrides?: ComponentsOverrides['MuiDialogContent'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiDialogContent'];
};
MuiDialogContentText?: {
defaultProps?: ComponentsProps['MuiDialogContentText'];
- styleOverrides?: ComponentsOverrides['MuiDialogContentText'];
+ styleOverrides?: ComponentsOverrides['MuiDialogContentText'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiDialogContentText'];
};
MuiDialogTitle?: {
defaultProps?: ComponentsProps['MuiDialogTitle'];
- styleOverrides?: ComponentsOverrides['MuiDialogTitle'];
+ styleOverrides?: ComponentsOverrides['MuiDialogTitle'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiDialogTitle'];
};
MuiDivider?: {
defaultProps?: ComponentsProps['MuiDivider'];
- styleOverrides?: ComponentsOverrides['MuiDivider'];
+ styleOverrides?: ComponentsOverrides['MuiDivider'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiDivider'];
};
MuiDrawer?: {
defaultProps?: ComponentsProps['MuiDrawer'];
- styleOverrides?: ComponentsOverrides['MuiDrawer'];
+ styleOverrides?: ComponentsOverrides['MuiDrawer'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiDrawer'];
};
MuiAccordion?: {
defaultProps?: ComponentsProps['MuiAccordion'];
- styleOverrides?: ComponentsOverrides['MuiAccordion'];
+ styleOverrides?: ComponentsOverrides['MuiAccordion'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiAccordion'];
};
MuiAccordionActions?: {
defaultProps?: ComponentsProps['MuiAccordionActions'];
- styleOverrides?: ComponentsOverrides['MuiAccordionActions'];
+ styleOverrides?: ComponentsOverrides['MuiAccordionActions'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiAccordionActions'];
};
MuiAccordionDetails?: {
defaultProps?: ComponentsProps['MuiAccordionDetails'];
- styleOverrides?: ComponentsOverrides['MuiAccordionDetails'];
+ styleOverrides?: ComponentsOverrides['MuiAccordionDetails'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiAccordionDetails'];
};
MuiAccordionSummary?: {
defaultProps?: ComponentsProps['MuiAccordionSummary'];
- styleOverrides?: ComponentsOverrides['MuiAccordionSummary'];
+ styleOverrides?: ComponentsOverrides['MuiAccordionSummary'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiAccordionSummary'];
};
MuiFab?: {
defaultProps?: ComponentsProps['MuiFab'];
- styleOverrides?: ComponentsOverrides['MuiFab'];
+ styleOverrides?: ComponentsOverrides['MuiFab'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiFab'];
};
MuiFilledInput?: {
defaultProps?: ComponentsProps['MuiFilledInput'];
- styleOverrides?: ComponentsOverrides['MuiFilledInput'];
+ styleOverrides?: ComponentsOverrides['MuiFilledInput'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiFilledInput'];
};
MuiFormControl?: {
defaultProps?: ComponentsProps['MuiFormControl'];
- styleOverrides?: ComponentsOverrides['MuiFormControl'];
+ styleOverrides?: ComponentsOverrides['MuiFormControl'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiFormControl'];
};
MuiFormControlLabel?: {
defaultProps?: ComponentsProps['MuiFormControlLabel'];
- styleOverrides?: ComponentsOverrides['MuiFormControlLabel'];
+ styleOverrides?: ComponentsOverrides['MuiFormControlLabel'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiFormControlLabel'];
};
MuiFormGroup?: {
defaultProps?: ComponentsProps['MuiFormGroup'];
- styleOverrides?: ComponentsOverrides['MuiFormGroup'];
+ styleOverrides?: ComponentsOverrides['MuiFormGroup'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiFormGroup'];
};
MuiFormHelperText?: {
defaultProps?: ComponentsProps['MuiFormHelperText'];
- styleOverrides?: ComponentsOverrides['MuiFormHelperText'];
+ styleOverrides?: ComponentsOverrides['MuiFormHelperText'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiFormHelperText'];
};
MuiFormLabel?: {
defaultProps?: ComponentsProps['MuiFormLabel'];
- styleOverrides?: ComponentsOverrides['MuiFormLabel'];
+ styleOverrides?: ComponentsOverrides['MuiFormLabel'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiFormLabel'];
};
MuiGrid?: {
defaultProps?: ComponentsProps['MuiGrid'];
- styleOverrides?: ComponentsOverrides['MuiGrid'];
+ styleOverrides?: ComponentsOverrides['MuiGrid'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiGrid'];
};
MuiImageList?: {
defaultProps?: ComponentsProps['MuiImageList'];
- styleOverrides?: ComponentsOverrides['MuiImageList'];
+ styleOverrides?: ComponentsOverrides['MuiImageList'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiImageList'];
};
MuiImageListItem?: {
defaultProps?: ComponentsProps['MuiImageListItem'];
- styleOverrides?: ComponentsOverrides['MuiImageListItem'];
+ styleOverrides?: ComponentsOverrides['MuiImageListItem'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiImageListItem'];
};
MuiImageListItemBar?: {
defaultProps?: ComponentsProps['MuiImageListItemBar'];
- styleOverrides?: ComponentsOverrides['MuiImageListItemBar'];
+ styleOverrides?: ComponentsOverrides['MuiImageListItemBar'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiImageListItemBar'];
};
MuiIcon?: {
defaultProps?: ComponentsProps['MuiIcon'];
- styleOverrides?: ComponentsOverrides['MuiIcon'];
+ styleOverrides?: ComponentsOverrides['MuiIcon'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiIcon'];
};
MuiIconButton?: {
defaultProps?: ComponentsProps['MuiIconButton'];
- styleOverrides?: ComponentsOverrides['MuiIconButton'];
+ styleOverrides?: ComponentsOverrides['MuiIconButton'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiIconButton'];
};
MuiInput?: {
defaultProps?: ComponentsProps['MuiInput'];
- styleOverrides?: ComponentsOverrides['MuiInput'];
+ styleOverrides?: ComponentsOverrides['MuiInput'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiInput'];
};
MuiInputAdornment?: {
defaultProps?: ComponentsProps['MuiInputAdornment'];
- styleOverrides?: ComponentsOverrides['MuiInputAdornment'];
+ styleOverrides?: ComponentsOverrides['MuiInputAdornment'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiInputAdornment'];
};
MuiInputBase?: {
defaultProps?: ComponentsProps['MuiInputBase'];
- styleOverrides?: ComponentsOverrides['MuiInputBase'];
+ styleOverrides?: ComponentsOverrides['MuiInputBase'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiInputBase'];
};
MuiInputLabel?: {
defaultProps?: ComponentsProps['MuiInputLabel'];
- styleOverrides?: ComponentsOverrides['MuiInputLabel'];
+ styleOverrides?: ComponentsOverrides['MuiInputLabel'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiInputLabel'];
};
MuiLinearProgress?: {
defaultProps?: ComponentsProps['MuiLinearProgress'];
- styleOverrides?: ComponentsOverrides['MuiLinearProgress'];
+ styleOverrides?: ComponentsOverrides['MuiLinearProgress'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiLinearProgress'];
};
MuiLink?: {
defaultProps?: ComponentsProps['MuiLink'];
- styleOverrides?: ComponentsOverrides['MuiLink'];
+ styleOverrides?: ComponentsOverrides['MuiLink'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiLink'];
};
MuiList?: {
defaultProps?: ComponentsProps['MuiList'];
- styleOverrides?: ComponentsOverrides['MuiList'];
+ styleOverrides?: ComponentsOverrides['MuiList'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiList'];
};
MuiListItem?: {
defaultProps?: ComponentsProps['MuiListItem'];
- styleOverrides?: ComponentsOverrides['MuiListItem'];
+ styleOverrides?: ComponentsOverrides['MuiListItem'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiListItem'];
};
MuiListItemButton?: {
defaultProps?: ComponentsProps['MuiListItemButton'];
- styleOverrides?: ComponentsOverrides['MuiListItemButton'];
+ styleOverrides?: ComponentsOverrides['MuiListItemButton'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiListItemButton'];
};
MuiListItemAvatar?: {
defaultProps?: ComponentsProps['MuiListItemAvatar'];
- styleOverrides?: ComponentsOverrides['MuiListItemAvatar'];
+ styleOverrides?: ComponentsOverrides['MuiListItemAvatar'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiListItemAvatar'];
};
MuiListItemIcon?: {
defaultProps?: ComponentsProps['MuiListItemIcon'];
- styleOverrides?: ComponentsOverrides['MuiListItemIcon'];
+ styleOverrides?: ComponentsOverrides['MuiListItemIcon'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiListItemIcon'];
};
MuiListItemSecondaryAction?: {
defaultProps?: ComponentsProps['MuiListItemSecondaryAction'];
- styleOverrides?: ComponentsOverrides['MuiListItemSecondaryAction'];
+ styleOverrides?: ComponentsOverrides['MuiListItemSecondaryAction'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiListItemSecondaryAction'];
};
MuiListItemText?: {
defaultProps?: ComponentsProps['MuiListItemText'];
- styleOverrides?: ComponentsOverrides['MuiListItemText'];
+ styleOverrides?: ComponentsOverrides['MuiListItemText'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiListItemText'];
};
MuiListSubheader?: {
defaultProps?: ComponentsProps['MuiListSubheader'];
- styleOverrides?: ComponentsOverrides['MuiListSubheader'];
+ styleOverrides?: ComponentsOverrides['MuiListSubheader'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiListSubheader'];
};
MuiMenu?: {
defaultProps?: ComponentsProps['MuiMenu'];
- styleOverrides?: ComponentsOverrides['MuiMenu'];
+ styleOverrides?: ComponentsOverrides['MuiMenu'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiMenu'];
};
MuiMenuItem?: {
defaultProps?: ComponentsProps['MuiMenuItem'];
- styleOverrides?: ComponentsOverrides['MuiMenuItem'];
+ styleOverrides?: ComponentsOverrides['MuiMenuItem'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiMenuItem'];
};
MuiMobileStepper?: {
defaultProps?: ComponentsProps['MuiMobileStepper'];
- styleOverrides?: ComponentsOverrides['MuiMobileStepper'];
+ styleOverrides?: ComponentsOverrides['MuiMobileStepper'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiMobileStepper'];
};
MuiModal?: {
defaultProps?: ComponentsProps['MuiModal'];
- styleOverrides?: ComponentsOverrides['MuiModal'];
+ styleOverrides?: ComponentsOverrides['MuiModal'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiModal'];
};
MuiNativeSelect?: {
defaultProps?: ComponentsProps['MuiNativeSelect'];
- styleOverrides?: ComponentsOverrides['MuiNativeSelect'];
+ styleOverrides?: ComponentsOverrides['MuiNativeSelect'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiNativeSelect'];
};
MuiOutlinedInput?: {
defaultProps?: ComponentsProps['MuiOutlinedInput'];
- styleOverrides?: ComponentsOverrides['MuiOutlinedInput'];
+ styleOverrides?: ComponentsOverrides['MuiOutlinedInput'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiOutlinedInput'];
};
MuiPagination?: {
defaultProps?: ComponentsProps['MuiPagination'];
- styleOverrides?: ComponentsOverrides['MuiPagination'];
+ styleOverrides?: ComponentsOverrides['MuiPagination'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiPagination'];
};
MuiPaginationItem?: {
defaultProps?: ComponentsProps['MuiPaginationItem'];
- styleOverrides?: ComponentsOverrides['MuiPaginationItem'];
+ styleOverrides?: ComponentsOverrides['MuiPaginationItem'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiPaginationItem'];
};
MuiPaper?: {
defaultProps?: ComponentsProps['MuiPaper'];
- styleOverrides?: ComponentsOverrides['MuiPaper'];
+ styleOverrides?: ComponentsOverrides['MuiPaper'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiPaper'];
};
MuiPopover?: {
defaultProps?: ComponentsProps['MuiPopover'];
- styleOverrides?: ComponentsOverrides['MuiPopover'];
+ styleOverrides?: ComponentsOverrides['MuiPopover'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiPopover'];
};
MuiRadio?: {
defaultProps?: ComponentsProps['MuiRadio'];
- styleOverrides?: ComponentsOverrides['MuiRadio'];
+ styleOverrides?: ComponentsOverrides['MuiRadio'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiRadio'];
};
MuiRating?: {
defaultProps?: ComponentsProps['MuiRating'];
- styleOverrides?: ComponentsOverrides['MuiRating'];
+ styleOverrides?: ComponentsOverrides['MuiRating'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiRating'];
};
MuiScopedCssBaseline?: {
defaultProps?: ComponentsProps['MuiScopedCssBaseline'];
- styleOverrides?: ComponentsOverrides['MuiScopedCssBaseline'];
+ styleOverrides?: ComponentsOverrides['MuiScopedCssBaseline'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiScopedCssBaseline'];
};
MuiSelect?: {
defaultProps?: ComponentsProps['MuiSelect'];
- styleOverrides?: ComponentsOverrides['MuiSelect'];
+ styleOverrides?: ComponentsOverrides['MuiSelect'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiSelect'];
};
MuiSkeleton?: {
defaultProps?: ComponentsProps['MuiSkeleton'];
- styleOverrides?: ComponentsOverrides['MuiSkeleton'];
+ styleOverrides?: ComponentsOverrides['MuiSkeleton'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiSkeleton'];
};
MuiSlider?: {
defaultProps?: ComponentsProps['MuiSlider'];
- styleOverrides?: ComponentsOverrides['MuiSlider'];
+ styleOverrides?: ComponentsOverrides['MuiSlider'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiSlider'];
};
MuiSnackbar?: {
defaultProps?: ComponentsProps['MuiSnackbar'];
- styleOverrides?: ComponentsOverrides['MuiSnackbar'];
+ styleOverrides?: ComponentsOverrides['MuiSnackbar'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiSnackbar'];
};
MuiSnackbarContent?: {
defaultProps?: ComponentsProps['MuiSnackbarContent'];
- styleOverrides?: ComponentsOverrides['MuiSnackbarContent'];
+ styleOverrides?: ComponentsOverrides['MuiSnackbarContent'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiSnackbarContent'];
};
MuiSpeedDial?: {
defaultProps?: ComponentsProps['MuiSpeedDial'];
- styleOverrides?: ComponentsOverrides['MuiSpeedDial'];
+ styleOverrides?: ComponentsOverrides['MuiSpeedDial'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiSpeedDial'];
};
MuiSpeedDialAction?: {
defaultProps?: ComponentsProps['MuiSpeedDialAction'];
- styleOverrides?: ComponentsOverrides['MuiSpeedDialAction'];
+ styleOverrides?: ComponentsOverrides['MuiSpeedDialAction'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiSpeedDialAction'];
};
MuiSpeedDialIcon?: {
defaultProps?: ComponentsProps['MuiSpeedDialIcon'];
- styleOverrides?: ComponentsOverrides['MuiSpeedDialIcon'];
+ styleOverrides?: ComponentsOverrides['MuiSpeedDialIcon'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiSpeedDialIcon'];
};
MuiStack?: {
defaultProps?: ComponentsProps['MuiStack'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiStack'];
};
MuiStep?: {
defaultProps?: ComponentsProps['MuiStep'];
- styleOverrides?: ComponentsOverrides['MuiStep'];
+ styleOverrides?: ComponentsOverrides['MuiStep'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiStep'];
};
MuiStepButton?: {
defaultProps?: ComponentsProps['MuiStepButton'];
- styleOverrides?: ComponentsOverrides['MuiStepButton'];
+ styleOverrides?: ComponentsOverrides['MuiStepButton'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiStepButton'];
};
MuiStepConnector?: {
defaultProps?: ComponentsProps['MuiStepConnector'];
- styleOverrides?: ComponentsOverrides['MuiStepConnector'];
+ styleOverrides?: ComponentsOverrides['MuiStepConnector'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiStepConnector'];
};
MuiStepContent?: {
defaultProps?: ComponentsProps['MuiStepContent'];
- styleOverrides?: ComponentsOverrides['MuiStepContent'];
+ styleOverrides?: ComponentsOverrides['MuiStepContent'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiStepContent'];
};
MuiStepIcon?: {
defaultProps?: ComponentsProps['MuiStepIcon'];
- styleOverrides?: ComponentsOverrides['MuiStepIcon'];
+ styleOverrides?: ComponentsOverrides['MuiStepIcon'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiStepIcon'];
};
MuiStepLabel?: {
defaultProps?: ComponentsProps['MuiStepLabel'];
- styleOverrides?: ComponentsOverrides['MuiStepLabel'];
+ styleOverrides?: ComponentsOverrides['MuiStepLabel'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiStepLabel'];
};
MuiStepper?: {
defaultProps?: ComponentsProps['MuiStepper'];
- styleOverrides?: ComponentsOverrides['MuiStepper'];
+ styleOverrides?: ComponentsOverrides['MuiStepper'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiStepper'];
};
MuiSvgIcon?: {
defaultProps?: ComponentsProps['MuiSvgIcon'];
- styleOverrides?: ComponentsOverrides['MuiSvgIcon'];
+ styleOverrides?: ComponentsOverrides['MuiSvgIcon'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiSvgIcon'];
};
MuiSwitch?: {
defaultProps?: ComponentsProps['MuiSwitch'];
- styleOverrides?: ComponentsOverrides['MuiSwitch'];
+ styleOverrides?: ComponentsOverrides['MuiSwitch'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiSwitch'];
};
MuiTab?: {
defaultProps?: ComponentsProps['MuiTab'];
- styleOverrides?: ComponentsOverrides['MuiTab'];
+ styleOverrides?: ComponentsOverrides['MuiTab'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiTab'];
};
MuiTable?: {
defaultProps?: ComponentsProps['MuiTable'];
- styleOverrides?: ComponentsOverrides['MuiTable'];
+ styleOverrides?: ComponentsOverrides['MuiTable'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiTable'];
};
MuiTableBody?: {
defaultProps?: ComponentsProps['MuiTableBody'];
- styleOverrides?: ComponentsOverrides['MuiTableBody'];
+ styleOverrides?: ComponentsOverrides['MuiTableBody'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiTableBody'];
};
MuiTableCell?: {
defaultProps?: ComponentsProps['MuiTableCell'];
- styleOverrides?: ComponentsOverrides['MuiTableCell'];
+ styleOverrides?: ComponentsOverrides['MuiTableCell'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiTableCell'];
};
MuiTableContainer?: {
defaultProps?: ComponentsProps['MuiTableContainer'];
- styleOverrides?: ComponentsOverrides['MuiTableContainer'];
+ styleOverrides?: ComponentsOverrides['MuiTableContainer'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiTableContainer'];
};
MuiTableFooter?: {
defaultProps?: ComponentsProps['MuiTableFooter'];
- styleOverrides?: ComponentsOverrides['MuiTableFooter'];
+ styleOverrides?: ComponentsOverrides['MuiTableFooter'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiTableFooter'];
};
MuiTableHead?: {
defaultProps?: ComponentsProps['MuiTableHead'];
- styleOverrides?: ComponentsOverrides['MuiTableHead'];
+ styleOverrides?: ComponentsOverrides['MuiTableHead'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiTableHead'];
};
MuiTablePagination?: {
defaultProps?: ComponentsProps['MuiTablePagination'];
- styleOverrides?: ComponentsOverrides['MuiTablePagination'];
+ styleOverrides?: ComponentsOverrides['MuiTablePagination'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiTablePagination'];
};
MuiTableRow?: {
defaultProps?: ComponentsProps['MuiTableRow'];
- styleOverrides?: ComponentsOverrides['MuiTableRow'];
+ styleOverrides?: ComponentsOverrides['MuiTableRow'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiTableRow'];
};
MuiTableSortLabel?: {
defaultProps?: ComponentsProps['MuiTableSortLabel'];
- styleOverrides?: ComponentsOverrides['MuiTableSortLabel'];
+ styleOverrides?: ComponentsOverrides['MuiTableSortLabel'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiTableSortLabel'];
};
MuiTabs?: {
defaultProps?: ComponentsProps['MuiTabs'];
- styleOverrides?: ComponentsOverrides['MuiTabs'];
+ styleOverrides?: ComponentsOverrides['MuiTabs'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiTabs'];
};
MuiTextField?: {
defaultProps?: ComponentsProps['MuiTextField'];
- styleOverrides?: ComponentsOverrides['MuiTextField'];
+ styleOverrides?: ComponentsOverrides['MuiTextField'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiTextField'];
};
MuiToggleButton?: {
defaultProps?: ComponentsProps['MuiToggleButton'];
- styleOverrides?: ComponentsOverrides['MuiToggleButton'];
+ styleOverrides?: ComponentsOverrides['MuiToggleButton'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiToggleButton'];
};
MuiToggleButtonGroup?: {
defaultProps?: ComponentsProps['MuiToggleButtonGroup'];
- styleOverrides?: ComponentsOverrides['MuiToggleButtonGroup'];
+ styleOverrides?: ComponentsOverrides['MuiToggleButtonGroup'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiToggleButtonGroup'];
};
MuiToolbar?: {
defaultProps?: ComponentsProps['MuiToolbar'];
- styleOverrides?: ComponentsOverrides['MuiToolbar'];
+ styleOverrides?: ComponentsOverrides['MuiToolbar'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiToolbar'];
};
MuiTooltip?: {
defaultProps?: ComponentsProps['MuiTooltip'];
- styleOverrides?: ComponentsOverrides['MuiTooltip'];
+ styleOverrides?: ComponentsOverrides['MuiTooltip'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiTooltip'];
};
MuiTouchRipple?: {
defaultProps?: ComponentsProps['MuiTouchRipple'];
- styleOverrides?: ComponentsOverrides['MuiTouchRipple'];
+ styleOverrides?: ComponentsOverrides['MuiTouchRipple'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiTouchRipple'];
};
MuiTypography?: {
defaultProps?: ComponentsProps['MuiTypography'];
- styleOverrides?: ComponentsOverrides['MuiTypography'];
+ styleOverrides?: ComponentsOverrides['MuiTypography'];
+ /**
+ * @deprecated pass a callback to the slot in `styleOverrides` instead. [See example](https://mui.com/customization/theme-components/#overrides-based-on-props)
+ */
variants?: ComponentsVariants['MuiTypography'];
};
MuiUseMediaQuery?: {
diff --git a/packages/mui-material/src/styles/createTheme.d.ts b/packages/mui-material/src/styles/createTheme.d.ts
index 99006fd4d8f968..ac0ecfa7e73a23 100644
--- a/packages/mui-material/src/styles/createTheme.d.ts
+++ b/packages/mui-material/src/styles/createTheme.d.ts
@@ -9,7 +9,7 @@ import { Components } from './components';
export interface ThemeOptions extends Omit {
mixins?: MixinsOptions;
- components?: Components;
+ components?: Components;
palette?: PaletteOptions;
shadows?: Shadows;
transitions?: TransitionsOptions;
@@ -18,12 +18,8 @@ export interface ThemeOptions extends Omit {
unstable_strictMode?: boolean;
}
-/**
- * Our [TypeScript guide on theme customization](https://mui.com/guides/typescript/#customization-of-theme) explains in detail how you would add custom properties.
- */
-export interface Theme extends SystemTheme {
+interface BaseTheme extends SystemTheme {
mixins: Mixins;
- components?: Components;
palette: Palette;
shadows: Shadows;
transitions: Transitions;
@@ -32,6 +28,16 @@ export interface Theme extends SystemTheme {
unstable_strictMode?: boolean;
}
+// shut off automatic exporting for the `BaseTheme` above
+export {};
+
+/**
+ * Our [TypeScript guide on theme customization](https://mui.com/guides/typescript/#customization-of-theme) explains in detail how you would add custom properties.
+ */
+export interface Theme extends BaseTheme {
+ components?: Components;
+}
+
/**
* @deprecated
* Use `import { createTheme } from '@mui/material/styles'` instead.
diff --git a/packages/mui-material/src/styles/overrides.d.ts b/packages/mui-material/src/styles/overrides.d.ts
index dd5c574d86a38e..a3a65c964b842b 100644
--- a/packages/mui-material/src/styles/overrides.d.ts
+++ b/packages/mui-material/src/styles/overrides.d.ts
@@ -1,4 +1,5 @@
import { CSSObject, CSSInterpolation } from '@mui/system';
+import { ComponentsPropsList } from './props';
import { AccordionActionsClassKey } from '../AccordionActions';
import { AccordionClassKey } from '../Accordion';
import { AccordionDetailsClassKey } from '../AccordionDetails';
@@ -111,14 +112,25 @@ import { TooltipClassKey } from '../Tooltip';
import { TouchRippleClassKey } from '../ButtonBase/TouchRipple';
import { TypographyClassKey } from '../Typography';
-export type OverridesStyleRules = Record<
+export type OverridesStyleRules<
+ ClassKey extends string = string,
+ ComponentName = keyof ComponentsPropsList,
+ Theme = unknown,
+> = Record<
ClassKey,
- CSSInterpolation
+ | CSSInterpolation
+ | ((
+ // Record is for other props that the slot receive internally
+ // Documenting all ownerStates could be a huge work, let's wait until we have a real needs from developers.
+ props: (ComponentName extends keyof ComponentsPropsList
+ ? { ownerState: ComponentsPropsList[ComponentName] & Record }
+ : {}) & { theme: Theme } & Record,
+ ) => CSSInterpolation)
>;
-export type ComponentsOverrides = {
+export type ComponentsOverrides = {
[Name in keyof ComponentNameToClassKey]?: Partial<
- OverridesStyleRules
+ OverridesStyleRules
>;
} & {
MuiCssBaseline?: CSSObject | string;
diff --git a/packages/mui-material/src/styles/styled.spec.tsx b/packages/mui-material/src/styles/styled.spec.tsx
index 47109f0f10d0c8..2d940bbab26c10 100644
--- a/packages/mui-material/src/styles/styled.spec.tsx
+++ b/packages/mui-material/src/styles/styled.spec.tsx
@@ -1,5 +1,11 @@
import * as React from 'react';
-import { styled, css } from '@mui/material/styles';
+import {
+ styled,
+ css,
+ ThemeProvider,
+ createTheme,
+ experimental_sx as sx,
+} from '@mui/material/styles';
const Box = styled('div')(({ theme }) => ({
color: theme.palette.primary.main,
@@ -53,3 +59,105 @@ const rendered = (
);
+/**
+ * ===================================================================
+ */
+
+/**
+ * Test styleOverrides callback types
+ */
+interface ButtonProps {
+ startIcon?: React.ReactNode;
+ endIcon?: React.ReactNode;
+ color?: 'primary';
+ variant?: 'contained';
+}
+
+const ButtonRoot = styled('button', {
+ name: 'MuiButton',
+ slot: 'Root',
+ overridesResolver: (props, styles) => styles.root,
+})<{ ownerState: ButtonProps }>({});
+
+const ButtonIcon = styled('span', {
+ name: 'MuiButton',
+ slot: 'Icon',
+ overridesResolver: (props, styles) => styles.icon,
+})<{ ownerState: ButtonProps }>({});
+
+const Button = ({
+ children,
+ startIcon,
+ endIcon,
+ color = 'primary',
+ variant = 'contained',
+ ...props
+}: React.PropsWithChildren) => {
+ const ownerState = { startIcon, endIcon, color, variant, ...props };
+ return (
+
+ {startIcon && {startIcon}}
+ {children}
+ {endIcon && {endIcon}}
+
+ );
+};
+
+ {
+ const { color, variant } = ownerState;
+ const styles = [];
+ if (color === 'primary') {
+ styles.push({
+ width: 120,
+ height: 48,
+ });
+ }
+ if (variant === 'contained') {
+ styles.push(theme.typography.button);
+ }
+ return styles;
+ },
+ startIcon: ({ ownerState: { startIcon, endIcon } }) => [
+ startIcon && { marginRight: 8 },
+ endIcon && { marginLeft: 8 },
+ ],
+ },
+ },
+ MuiSlider: {
+ styleOverrides: {
+ mark: (props) => ({
+ ...(props['data-index'] === 0 && {}),
+ }),
+ thumb: sx({
+ p: 1,
+ }),
+ track: ({ ownerState }) => [
+ sx({ height: 10 }),
+ ownerState.orientation === 'vertical' &&
+ sx({
+ my: 2,
+ }),
+ ],
+ },
+ },
+ },
+ })}
+>
+
+;
+
+/**
+ * ============================================================
+ */
diff --git a/packages/mui-material/src/styles/useThemeProps.d.ts b/packages/mui-material/src/styles/useThemeProps.d.ts
index 811028ac2bffc5..1fb5722e78b23a 100644
--- a/packages/mui-material/src/styles/useThemeProps.d.ts
+++ b/packages/mui-material/src/styles/useThemeProps.d.ts
@@ -1,7 +1,8 @@
+import { Theme } from './createTheme';
import { Components } from './components';
export interface ThemeWithProps {
- components?: Components;
+ components?: Components>;
}
export type ThemedProps = Theme extends {
diff --git a/packages/mui-material/test/typescript/moduleAugmentation/styleOverridesCallback.spec.tsx b/packages/mui-material/test/typescript/moduleAugmentation/styleOverridesCallback.spec.tsx
new file mode 100644
index 00000000000000..f06290de5c3648
--- /dev/null
+++ b/packages/mui-material/test/typescript/moduleAugmentation/styleOverridesCallback.spec.tsx
@@ -0,0 +1,48 @@
+import * as React from 'react';
+import Chip from '@mui/material/Chip';
+import { createTheme } from '@mui/material/styles';
+
+// Update the Chip's extendable props options
+declare module '@mui/material/Chip' {
+ interface ChipPropsVariantOverrides {
+ dashed: true;
+ outlined: false;
+ }
+ interface ChipPropsColorOverrides {
+ success: true;
+ }
+ interface ChipPropsSizeOverrides {
+ extraLarge: true;
+ }
+}
+
+// theme typings should work as expected
+const finalTheme = createTheme({
+ components: {
+ MuiChip: {
+ styleOverrides: {
+ root: ({ ownerState, theme }) => ({
+ ...(ownerState.variant &&
+ {
+ dashed: {
+ border: '1px dashed',
+ },
+ filled: {
+ backgroundColor: ownerState.color === 'success' ? 'lime' : theme.palette.grey[100],
+ },
+ }[ownerState.variant]),
+ }),
+ label: ({ ownerState }) => [
+ ownerState.color === 'success' && {
+ color: 'lime',
+ },
+ ],
+ },
+ },
+ },
+});
+
+;
+
+// @ts-expect-error The contained variant was disabled
+;
diff --git a/packages/mui-material/test/typescript/moduleAugmentation/styleOverridesCallback.tsconfig.json b/packages/mui-material/test/typescript/moduleAugmentation/styleOverridesCallback.tsconfig.json
new file mode 100644
index 00000000000000..11e671f45f81a4
--- /dev/null
+++ b/packages/mui-material/test/typescript/moduleAugmentation/styleOverridesCallback.tsconfig.json
@@ -0,0 +1,4 @@
+{
+ "extends": "../../../../../tsconfig",
+ "files": ["styleOverridesCallback.spec.tsx"]
+}
diff --git a/packages/mui-system/src/createStyled.js b/packages/mui-system/src/createStyled.js
index 74c8629360111e..36b534475d1402 100644
--- a/packages/mui-system/src/createStyled.js
+++ b/packages/mui-system/src/createStyled.js
@@ -135,7 +135,12 @@ export default function createStyled(input = {}) {
const styleOverrides = getStyleOverrides(componentName, theme);
if (styleOverrides) {
- return overridesResolver(props, styleOverrides);
+ const resolvedStyleOverrides = {};
+ Object.entries(styleOverrides).forEach(([slotKey, slotStyle]) => {
+ resolvedStyleOverrides[slotKey] =
+ typeof slotStyle === 'function' ? slotStyle(props) : slotStyle;
+ });
+ return overridesResolver(props, resolvedStyleOverrides);
}
return null;
diff --git a/packages/mui-system/src/createStyled.test.js b/packages/mui-system/src/createStyled.test.js
index 58369457a25694..39be9742a592f6 100644
--- a/packages/mui-system/src/createStyled.test.js
+++ b/packages/mui-system/src/createStyled.test.js
@@ -3,6 +3,7 @@ import { expect } from 'chai';
import { ThemeProvider, createTheme } from '@mui/material/styles';
import { createRenderer } from 'test/utils';
import createStyled from './createStyled';
+import sx from './sx';
describe('createStyled', () => {
const { render } = createRenderer();
@@ -100,4 +101,184 @@ describe('createStyled', () => {
});
});
});
+
+ describe('styleOverrides callback', () => {
+ const styled = createStyled({});
+ const ButtonRoot = styled('button', {
+ name: 'MuiButton',
+ slot: 'Root',
+ overridesResolver: (props, styles) => [
+ styles.root,
+ { [`& .MuiButton-avatar`]: styles.avatar },
+ ],
+ })({});
+ const ButtonIcon = styled('span', {
+ name: 'MuiButton',
+ slot: 'Icon',
+ overridesResolver: (props, styles) => styles.icon,
+ })({});
+ const Button = ({ children, startIcon, endIcon, color = 'primary', ...props }) => {
+ const ownerState = { startIcon, endIcon, color, ...props };
+ return (
+
+ {startIcon && {startIcon}}
+ {children}
+ {endIcon && {endIcon}}
+
+ );
+ };
+
+ it('spread ownerState as props to the slot styleOverrides', () => {
+ const finalTheme = createTheme({
+ components: {
+ MuiButton: {
+ styleOverrides: {
+ avatar: () => {
+ return {
+ width: '100px',
+ };
+ },
+ },
+ },
+ },
+ });
+ const { container } = render(
+
+
+ ,
+ );
+ expect(container.firstChild.firstChild).toHaveComputedStyle({
+ width: '100px',
+ });
+ });
+
+ it('support slot as nested class', () => {
+ const finalTheme = createTheme({
+ typography: {
+ button: {
+ fontSize: '20px',
+ },
+ },
+ components: {
+ MuiButton: {
+ styleOverrides: {
+ root: ({ ownerState, theme }) => {
+ const { color, variant } = ownerState;
+ const styles = [];
+ if (color === 'primary') {
+ styles.push({
+ width: 120,
+ height: 48,
+ });
+ }
+ if (variant === 'contained') {
+ styles.push(theme.typography.button);
+ }
+ return styles;
+ },
+ icon: ({ ownerState }) => [
+ ownerState.startIcon && { marginRight: 8 },
+ ownerState.endIcon && { marginLeft: 8 },
+ ],
+ },
+ },
+ },
+ });
+ const { container } = render(
+
+
+ ,
+ );
+ expect(container.firstChild).toHaveComputedStyle({
+ width: '120px',
+ height: '48px',
+ fontSize: '20px',
+ });
+ expect(
+ container.firstChild.firstChild, // startIcon
+ ).toHaveComputedStyle({
+ marginRight: '8px',
+ });
+ });
+
+ it('support object return from the callback', () => {
+ const finalTheme = createTheme({
+ components: {
+ MuiButton: {
+ styleOverrides: {
+ root: () => ({
+ width: '300px',
+ }),
+ },
+ },
+ },
+ });
+ const { container } = render(
+
+
+ ,
+ );
+ expect(container.firstChild).toHaveComputedStyle({
+ width: '300px',
+ });
+ });
+
+ it('support template string return from the callback', () => {
+ const finalTheme = createTheme({
+ components: {
+ MuiButton: {
+ styleOverrides: {
+ root: () => `
+ width: 300px;
+ `,
+ },
+ },
+ },
+ });
+ const { container } = render(
+
+
+ ,
+ );
+ expect(container.firstChild).toHaveComputedStyle({
+ width: '300px',
+ });
+ });
+
+ it('works with sx', () => {
+ const finalTheme = createTheme({
+ components: {
+ MuiButton: {
+ styleOverrides: {
+ root: sx({
+ pt: 10,
+ }),
+ icon: ({ ownerState }) => [
+ ownerState.color === 'primary' &&
+ sx({
+ mr: 10,
+ }),
+ ],
+ },
+ },
+ },
+ });
+ const { container } = render(
+
+
+ ,
+ );
+ expect(container.firstChild).toHaveComputedStyle({
+ paddingTop: '80px',
+ });
+ expect(container.firstChild.firstChild).toHaveComputedStyle({
+ marginRight: '80px',
+ });
+ });
+ });
});