Codemod scripts for Material UI.
npm install @mui/codemod> Codemod scripts for Material UI, Base UI, MUI System, Joy UI.


This repository contains a collection of codemod scripts based for use with
jscodeshift that help update the APIs.
Some of the codemods also run postcss plugins to update CSS files.
``bash
npx @mui/codemod
Applies a @mui/codemod to the specified paths
Positionals:
codemod The name of the codemod [string]
paths Paths forwarded to jscodeshift [string]
Options:
--version Show version number [boolean]
--help Show help [boolean]
--dry dry run (no changes are made to files)
[boolean] [default: false]
--parser which parser for jscodeshift to use.
[string] [default: 'tsx']
--print print transformed files to stdout, useful for development
[boolean] [default: false]
--jscodeshift [string] [default: false]
Examples:
npx @mui/codemod@latest v4.0.0/theme-spacing-api src
npx @mui/codemod@latest v5.0.0/component-rename-prop src --
--component=Grid --from=prop --to=newProp
npx @mui/codemod@latest v5.0.0/preset-safe src --parser=flow
`
Use this flag if you have a custom package name that reexports Material UI components. For example:
`bash`
npx @mui/codemod@latest --packageName="@org/ui"
The snippet above will look for @org/ui instead of @mui/material in the codemod.
To pass more options directly to jscodeshift, use --jscodeshift="...". For example:
`bash`
npx @mui/codemod@latest --jscodeshift="--run-in-band --verbose=2"
See all available options here.
Options to recast's printer can be provided
through jscodeshift's printOptions command line argument
`bash`
npx @mui/codemod@latest
- Deprecations
- v7
- v6
- v5
- v4
- v1
- v0.15
`bash`
npx @mui/codemod@latest deprecations/all
#### all
A combination of all deprecations.
#### accordion-props
`diff`
- TransitionProps={{ unmountOnExit: true }}
+ slots={{ transition: CustomTransition }}
+ slotProps={{ transition: { unmountOnExit: true } }}
/>
`bash`
npx @mui/codemod@latest deprecations/accordion-props
#### accordion-summary-classes
JS transforms:
`diff
import { accordionSummaryClasses } from '@mui/material/AccordionSummary';
MuiAccordionSummary: {
styleOverrides: {
root: {
- [& .${accordionSummaryClasses.contentGutters}]: {&.${accordionSummaryClasses.gutters} .${accordionSummaryClasses.content}
+ []: {`
color: 'red',
},
},
},
},
`diff`
MuiAccordionSummary: {
styleOverrides: {
root: {
- '& .MuiAccordionSummary-contentGutters': {
+ '&.MuiAccordionSummary-gutters .MuiAccordionSummary-content': {
color: 'red',
},
},
},
},
CSS transforms:
`diff`
-.MuiAccordionSummary-root .MuiAccordionSummary-contentGutters
+.MuiAccordionSummary-root.MuiAccordionSummary-gutters .MuiAccordionSummary-content
`bash`
npx @mui/codemod@latest deprecations/accordion-summary-classes
#### alert-classes
JS transforms:
`diff
import { alertClasses } from '@mui/material/PaginationItem';
MuiPaginationItem: {
styleOverrides: {
root: {
- [&.${alertClasses.standardSuccess}]: {&.${alertClasses.standard}.${alertClasses.colorSuccess}
+ []: {&.${alertClasses.standardInfo}
color: 'red',
},
- []: {&.${alertClasses.standard}.${alertClasses.colorInfo}
+ []: {&.${alertClasses.standardWarning}
color: 'red',
},
- []: {&.${alertClasses.standard}.${alertClasses.colorWarning}
+ []: {&.${alertClasses.standardError}
color: 'red',
},
- []: {&.${alertClasses.standard}.${alertClasses.colorError}
+ []: {&.${alertClasses.outlinedSuccess}
color: 'red',
},
- []: {&.${alertClasses.outlined}.${alertClasses.colorSuccess}
+ []: {&.${alertClasses.outlinedInfo}
color: 'red',
},
- []: {&.${alertClasses.outlined}.${alertClasses.colorInfo}
+ []: {&.${alertClasses.outlinedWarning}
color: 'red',
},
- []: {&.${alertClasses.outlined}.${alertClasses.colorWarning}
+ []: {&.${alertClasses.outlinedError}
color: 'red',
},
- []: {&.${alertClasses.outlined}.${alertClasses.colorError}
+ []: {&.${alertClasses.filledSuccess}
color: 'red',
},
- []: {&.${alertClasses.filled}.${alertClasses.colorSuccess}
+ []: {&.${alertClasses.filledInfo}
color: 'red',
},
- []: {&.${alertClasses.filled}.${alertClasses.colorInfo}
+ []: {&.${alertClasses.filledWarning}
color: 'red',
},
- []: {&.${alertClasses.filled}.${alertClasses.colorWarning}
+ []: {&.${alertClasses.filledError}
color: 'red',
},
- []: {&.${alertClasses.filled}.${alertClasses.colorError}
+ []: {`
color: 'red',
},
},
},
},
CSS transforms:
`diff`
-.MuiAlert-standardSuccess
+.MuiAlert-standard.MuiAlert-colorSuccess
-.MuiAlert-standardInfo
+.MuiAlert-standard.MuiAlert-colorInfo
-.MuiAlert-standardWarning
+.MuiAlert-standard.MuiAlert-colorWarning
-.MuiAlert-standardError
+.MuiAlert-standard.MuiAlert-colorError
-.MuiAlert-outlinedSuccess
+.MuiAlert-outlined.MuiAlert-colorSuccess
-.MuiAlert-outlinedInfo
+.MuiAlert-outlined.MuiAlert-colorInfo
-.MuiAlert-outlinedWarning
+.MuiAlert-outlined.MuiAlert-colorWarning
-.MuiAlert-outlinedError
+.MuiAlert-outlined.MuiAlert-colorError
-.MuiAlert-filledSuccess
+.MuiAlert-filled.MuiAlert-colorSuccess
-.MuiAlert-filledInfo
+.MuiAlert-filled.MuiAlert-colorInfo
-.MuiAlert-filledWarning
+.MuiAlert-filled.MuiAlert-colorWarning
-.MuiAlert-filledError
+.MuiAlert-filled.MuiAlert-colorError
`bash`
npx @mui/codemod@latest deprecations/alert-classes
#### alert-props
`diff`
- componentsProps={{ closeButton: { testid: 'test-id' } }}
+ slots={{ closeButton: CustomButton }}
+ slotProps={{ closeButton: { testid: 'test-id' } }}
/>
`diff`
MuiAlert: {
defaultProps: {
- components: { CloseButton: CustomButton }
- componentsProps: { closeButton: { testid: 'test-id' }}
+ slots: { closeButton: CustomButton },
+ slotProps: { closeButton: { testid: 'test-id' } },
},
},
`bash`
npx @mui/codemod@latest deprecations/alert-props
#### autocomplete-props
`diff`
- PaperComponent={CustomPaper}
- PopperComponent={CustomPopper}
- ListboxComponent={CustomListbox}
- ListboxProps={{ height: 12 }}
- componentsProps={{
- clearIndicator: { width: 10 },
- paper: { width: 12 },
- popper: { width: 14 },
- popupIndicator: { width: 16 },
- }}
+ slots={{
+ paper: CustomPaper,
+ popper: CustomPopper
+ }}
+ slotProps={{
+ chip: { height: 10 },
+ listbox: {
+ component: CustomListbox,
+ ...{ height: 12 },
+ },
+ clearIndicator: { width: 10 },
+ paper: { width: 12 },
+ popper: { width: 14 },
+ popupIndicator: { width: 16 },
+ }}
/>
`diff`
MuiAutocomplete: {
defaultProps: {
- ChipProps: { height: 10 },
- PaperComponent: CustomPaper,
- PopperComponent: CustomPopper,
- ListboxComponent: CustomListbox,
- ListboxProps: { height: 12 },
- componentsProps: {
- clearIndicator: { width: 10 },
- paper: { width: 12 },
- popper: { width: 14 },
- popupIndicator: { width: 16 },
- }
+ slots: {
+ paper: CustomPaper,
+ popper: CustomPopper,
+ },
+ slotProps: {
+ chip: { height: 10 },
+ listbox: {
+ component: CustomListbox,
+ ...{ height: 12 },
+ },
+ clearIndicator: { width: 10 },
+ paper: { width: 12 },
+ popper: { width: 14 },
+ popupIndicator: { width: 16 },
+ },
},
},
`bash`
npx @mui/codemod@latest deprecations/autocomplete-props
#### avatar-group-props
`diff`
- additionalAvatar: { color: 'red' },
+ slotProps={{
+ surplus: { color: 'red' },
}}
/>
`diff`
- additionalAvatar: { color: 'red' },
+ surplus: { color: 'red' },
}}
/>
`diff`
MuiAvatarGroup: {
defaultProps: {
- componentsProps: {
- additionalAvatar: { color: 'red' },
+ slotProps: {
+ surplus: { color: 'red' },
},
},
},
`diff`
MuiAvatarGroup: {
defaultProps: {
slotProps: {
- additionalAvatar: { color: 'red' },
+ surplus: { color: 'red' },
},
},
},
`bash`
npx @mui/codemod@latest deprecations/avatar-group-props
#### avatar-props
`diff`
- onError: () => {},
- onLoad: () => {},
+ slotProps={{
+ img: {
+ onError: () => {},
+ onLoad: () => {},
+ },
}}
/>
`bash`
npx @mui/codemod@latest deprecations/avatar-props
#### backdrop-props
`diff`
- componentsProps={{ root: { testid: 'test-id' } }}
+ slots={{ root: CustomRoot }}
+ slotProps={{ root: { testid: 'test-id' } }}
/>
`diff`
MuiBackdrop: {
defaultProps: {
- components: { Root: CustomRoot }
- componentsProps: { root: { testid: 'root-id' } }
+ slots: { root: CustomRoot },
+ slotProps: { root: { testid: 'root-id' } },
},
},
`diff`
+ slots={{ transition: CustomTransition }}
/>
`bash`
npx @mui/codemod@latest deprecations/backdrop-props
#### badge-props
`diff`
- componentsProps={{ root: { testid: 'test-id' } }}
+ slots={{ root: CustomRoot }}
+ slotProps={{ root: { testid: 'test-id' } }}
/>
`diff`
MuiBadge: {
defaultProps: {
- components: { Root: CustomRoot }
- componentsProps: { root: { testid: 'test-id' }}
+ slots: { root: CustomRoot },
+ slotProps: { root: { testid: 'test-id' } },
},
},
`bash`
npx @mui/codemod@latest deprecations/badge-props
#### button-classes
JS transforms:
`diff
import { buttonClasses } from '@mui/material/Button';
MuiButton: {
styleOverrides: {
root: {
- [&.${buttonClasses.textInherit}]: {&.${buttonClasses.text}.${buttonClasses.colorInherit}
+ []: {&.${buttonClasses.textPrimary}
color: 'red',
},
- []: {&.${buttonClasses.text}.${buttonClasses.colorPrimary}
+ []: {&.${buttonClasses.textSecondary}
color: 'red',
},
- []: {&.${buttonClasses.text}.${buttonClasses.colorSecondary}
+ []: {&.${buttonClasses.textSuccess}
color: 'red',
},
- []: {&.${buttonClasses.text}.${buttonClasses.colorSuccess}
+ []: {&.${buttonClasses.textError}
color: 'red',
},
- []: {&.${buttonClasses.text}.${buttonClasses.colorError}
+ []: {&.${buttonClasses.textInfo}
color: 'red',
},
- []: {&.${buttonClasses.text}.${buttonClasses.colorInfo}
+ []: {&.${buttonClasses.textWarning}
color: 'red',
},
- []: {&.${buttonClasses.text}.${buttonClasses.colorWarning}
+ []: {&.${buttonClasses.outlinedInherit}
color: 'red',
},
- []: {&.${buttonClasses.outlined}.${buttonClasses.colorInherit}
+ []: {&.${buttonClasses.outlinedPrimary}
color: 'red',
},
- []: {&.${buttonClasses.outlined}.${buttonClasses.colorPrimary}
+ []: {&.${buttonClasses.outlinedSecondary}
color: 'red',
},
- []: {&.${buttonClasses.outlined}.${buttonClasses.colorSecondary}
+ []: {&.${buttonClasses.outlinedSuccess}
color: 'red',
},
- []: {&.${buttonClasses.outlined}.${buttonClasses.colorSuccess}
+ []: {&.${buttonClasses.outlinedError}
color: 'red',
},
- []: {&.${buttonClasses.outlined}.${buttonClasses.colorError}
+ []: {&.${buttonClasses.outlinedInfo}
color: 'red',
},
- []: {&.${buttonClasses.outlined}.${buttonClasses.colorInfo}
+ []: {&.${buttonClasses.outlinedWarning}
color: 'red',
},
- []: {&.${buttonClasses.outlined}.${buttonClasses.colorWarning}
+ []: {&.${buttonClasses.containedInherit}
color: 'red',
},
- []: {&.${buttonClasses.contained}.${buttonClasses.colorInherit}
+ []: {&.${buttonClasses.containedPrimary}
color: 'red',
},
- []: {&.${buttonClasses.contained}.${buttonClasses.colorPrimary}
+ []: {&.${buttonClasses.containedSecondary}
color: 'red',
},
- []: {&.${buttonClasses.contained}.${buttonClasses.colorSecondary}
+ []: {&.${buttonClasses.containedSuccess}
color: 'red',
},
- []: {&.${buttonClasses.contained}.${buttonClasses.colorSuccess}
+ []: {&.${buttonClasses.containedError}
color: 'red',
},
- []: {&.${buttonClasses.contained}.${buttonClasses.colorError}
+ []: {&.${buttonClasses.containedInfo}
color: 'red',
},
- []: {&.${buttonClasses.contained}.${buttonClasses.colorInfo}
+ []: {&.${buttonClasses.containedWarning}
color: 'red',
},
- []: {&.${buttonClasses.contained}.${buttonClasses.colorWarning}
+ []: {&.${buttonClasses.containedSizeSmall}
color: 'red',
},
- []: {&.${buttonClasses.contained}.${buttonClasses.sizeSmall}
+ []: {&.${buttonClasses.containedSizeMedium}
color: 'red',
},
- []: {&.${buttonClasses.contained}.${buttonClasses.sizeMedium}
+ []: {&.${buttonClasses.containedSizeLarge}
color: 'red',
},
- []: {&.${buttonClasses.contained}.${buttonClasses.sizeLarge}
+ []: {&.${buttonClasses.textSizeSmall}
color: 'red',
},
- []: {&.${buttonClasses.text}.${buttonClasses.sizeSmall}
+ []: {&.${buttonClasses.textSizeMedium}
color: 'red',
},
- []: {&.${buttonClasses.text}.${buttonClasses.sizeMedium}
+ []: {&.${buttonClasses.textSizeLarge}
color: 'red',
},
- []: {&.${buttonClasses.text}.${buttonClasses.sizeLarge}
+ []: {&.${buttonClasses.outlinedSizeSmall}
color: 'red',
},
- []: {&.${buttonClasses.outlined}.${buttonClasses.sizeSmall}
+ []: {&.${buttonClasses.outlinedSizeMedium}
color: 'red',
},
- []: {&.${buttonClasses.outlined}.${buttonClasses.sizeMedium}
+ []: {&.${buttonClasses.outlinedSizeLarge}
color: 'red',
},
- []: {&.${buttonClasses.outlined}.${buttonClasses.sizeLarge}
+ []: {& .${buttonClasses.iconSizeSmall}
color: 'red',
},
- []: {&.${buttonClasses.sizeSmall} > .${buttonClasses.icon}
+ []: {& .${buttonClasses.iconSizeMedium}
color: 'red',
},
- []: {&.${buttonClasses.sizeMedium} > .${buttonClasses.icon}
+ []: {& .${buttonClasses.iconSizeLarge}
color: 'red',
},
- []: {&.${buttonClasses.sizeLarge} > .${buttonClasses.icon}
+ []: {`
color: 'red',
},
},
},
},
CSS transforms:
`diff`
-.MuiButton-textInherit
+.MuiButton-text.MuiButton-colorInherit
-.MuiButton-textPrimary
+.MuiButton-text.MuiButton-colorPrimary
-.MuiButton-textSecondary
+.MuiButton-text.MuiButton-colorSecondary
-.MuiButton-textSuccess
+.MuiButton-text.MuiButton-colorSuccess
-.MuiButton-textError
+.MuiButton-text.MuiButton-colorError
-.MuiButton-textInfo
+.MuiButton-text.MuiButton-colorInfo
-.MuiButton-textWarning
+.MuiButton-text.MuiButton-colorWarning
-.MuiButton-outlinedInherit
+.MuiButton-outlined.MuiButton-colorInherit
-.MuiButton-outlinedPrimary
+.MuiButton-outlined.MuiButton-colorPrimary
-.MuiButton-outlinedSecondary
+.MuiButton-outlined.MuiButton-colorSecondary
-.MuiButton-outlinedSuccess
+.MuiButton-outlined.MuiButton-colorSuccess
-.MuiButton-outlinedError
+.MuiButton-outlined.MuiButton-colorError
-.MuiButton-outlinedInfo
+.MuiButton-outlined.MuiButton-colorInfo
-.MuiButton-outlinedWarning
+.MuiButton-outlined.MuiButton-colorWarning
-.MuiButton-containedInherit
+.MuiButton-contained.MuiButton-colorInherit
-.MuiButton-containedPrimary
+.MuiButton-contained.MuiButton-colorPrimary
-.MuiButton-containedSecondary
+.MuiButton-contained.MuiButton-colorSecondary
-.MuiButton-containedSuccess
+.MuiButton-contained.MuiButton-colorSuccess
-.MuiButton-containedError
+.MuiButton-contained.MuiButton-colorError
-.MuiButton-containedInfo
+.MuiButton-contained.MuiButton-colorInfo
-.MuiButton-containedWarning
+.MuiButton-contained.MuiButton-colorWarning
-.MuiButton-textSizeSmall
+.MuiButton-text.MuiButton-sizeSmall
-.MuiButton-textSizeMedium
+.MuiButton-text.MuiButton-sizeMedium
-.MuiButton-textSizeLarge
+.MuiButton-text.MuiButton-sizeLarge
-.MuiButton-outlinedSizeSmall
+.MuiButton-outlined.MuiButton-sizeSmall
-.MuiButton-outlinedSizeMedium
+.MuiButton-outlined.MuiButton-sizeMedium
-.MuiButton-outlinedSizeLarge
+.MuiButton-outlined.MuiButton-sizeLarge
-.MuiButton-containedSizeSmall
+.MuiButton-contained.MuiButton-sizeSmall
-.MuiButton-containedSizeMedium
+.MuiButton-contained.MuiButton-sizeMedium
-.MuiButton-containedSizeLarge
+.MuiButton-contained.MuiButton-sizeLarge
-.MuiButton-root .MuiButton-iconSizeSmall
+.MuiButton-root.MuiButton-sizeSmall > .MuiButton-icon
-.MuiButton-root .MuiButton-iconSizeMedium
+.MuiButton-root.MuiButton-sizeMedium > .MuiButton-icon
-.MuiButton-root .MuiButton-iconSizeLarge
+.MuiButton-root.MuiButton-sizeLarge > .MuiButton-icon
`bash`
npx @mui/codemod@latest deprecations/button-classes
#### button-group-classes
JS transforms:
`diff
import { buttonGroupClasses } from '@mui/material/ButtonGroup';
MuiButtonGroup: {
styleOverrides: {
root: {
- [& .${buttonGroupClasses.groupedHorizontal}]: {&.${buttonGroupClasses.horizontal} > .${buttonGroupClasses.grouped}
+ []: {& .${buttonGroupClasses.groupedVertical}
color: 'red',
},
- []: {&.${buttonGroupClasses.vertical} > .${buttonGroupClasses.grouped}
+ []: {& .${buttonGroupClasses.groupedText}
color: 'red',
},
- []: {&.${buttonGroupClasses.text} > .${buttonGroupClasses.grouped}
+ []: {& .${buttonGroupClasses.groupedTextHorizontal}
color: 'red',
},
- []: {&.${buttonGroupClasses.text}.${buttonGroupClasses.horizontal} > .${buttonGroupClasses.grouped}
+ []: {& .${buttonGroupClasses.groupedTextVertical}
color: 'red',
},
- []: {&.${buttonGroupClasses.text}.${buttonGroupClasses.vertical} > .${buttonGroupClasses.grouped}
+ []: {& .${buttonGroupClasses.groupedTextPrimary}
color: 'red',
},
- []: {&.${buttonGroupClasses.text}.${buttonGroupClasses.colorPrimary} > .${buttonGroupClasses.grouped}
+ []: {& .${buttonGroupClasses.groupedTextSecondary}
color: 'red',
},
- []: {&.${buttonGroupClasses.text}.${buttonGroupClasses.colorSecondary} > .${buttonGroupClasses.grouped}
+ []: {& .${buttonGroupClasses.groupedOutlined}
color: 'red',
},
- []: {&.${buttonGroupClasses.outlined} > .${buttonGroupClasses.grouped}
+ []: {& .${buttonGroupClasses.groupedOutlinedHorizontal}
color: 'red',
},
- []: {&.${buttonGroupClasses.outlined}.${buttonGroupClasses.horizontal} > .${buttonGroupClasses.grouped}
+ []: {& .${buttonGroupClasses.groupedOutlinedVertical}
color: 'red',
},
- []: {&.${buttonGroupClasses.outlined}.${buttonGroupClasses.vertical} > .${buttonGroupClasses.grouped}
+ []: {& .${buttonGroupClasses.groupedOutlinedPrimary}
color: 'red',
},
- []: {&.${buttonGroupClasses.outlined}.${buttonGroupClasses.colorPrimary} > .${buttonGroupClasses.grouped}
+ []: {& .${buttonGroupClasses.groupedOutlinedSecondary}
color: 'red',
},
- []: {&.${buttonGroupClasses.outlined}.${buttonGroupClasses.colorSecondary} > .${buttonGroupClasses.grouped}
+ []: {& .${buttonGroupClasses.groupedContained}
color: 'red',
},
- []: {&.${buttonGroupClasses.contained} > .${buttonGroupClasses.grouped}
+ []: {& .${buttonGroupClasses.groupedContainedHorizontal}
color: 'red',
},
- []: {&.${buttonGroupClasses.contained}.${buttonGroupClasses.horizontal} > .${buttonGroupClasses.grouped}
+ []: {& .${buttonGroupClasses.groupedContainedVertical}
color: 'red',
},
- []: {&.${buttonGroupClasses.contained}.${buttonGroupClasses.vertical} > .${buttonGroupClasses.grouped}
+ []: {& .${buttonGroupClasses.groupedContainedPrimary}
color: 'red',
},
- []: {&.${buttonGroupClasses.contained}.${buttonGroupClasses.colorPrimary} > .${buttonGroupClasses.grouped}
+ []: {& .${buttonGroupClasses.groupedContainedSecondary}
color: 'red',
},
- []: {&.${buttonGroupClasses.contained}.${buttonGroupClasses.colorSecondary} > .${buttonGroupClasses.grouped}
+ []: {`
color: 'red',
},
},
},
},
CSS transforms:
`diff`
-.MuiButtonGroup-root .MuiButtonGroup-groupedHorizontal
+.MuiButtonGroup-root.MuiButtonGroup-horizontal > .MuiButtonGroup-grouped
-.MuiButtonGroup-root .MuiButtonGroup-groupedVertical
+.MuiButtonGroup-root.MuiButtonGroup-vertical > .MuiButtonGroup-grouped
-.MuiButtonGroup-root .MuiButtonGroup-groupedText
+.MuiButtonGroup-root.MuiButtonGroup-text > .MuiButtonGroup-grouped
-.MuiButtonGroup-root .MuiButtonGroup-groupedTextHorizontal
+.MuiButtonGroup-root.MuiButtonGroup-text.MuiButtonGroup-horizontal > .MuiButtonGroup-grouped
-.MuiButtonGroup-root .MuiButtonGroup-groupedTextVertical
+.MuiButtonGroup-root.MuiButtonGroup-text.MuiButtonGroup-vertical > .MuiButtonGroup-grouped
-.MuiButtonGroup-root .MuiButtonGroup-groupedTextPrimary
+.MuiButtonGroup-root.MuiButtonGroup-text.MuiButtonGroup-colorPrimary > .MuiButtonGroup-grouped
-.MuiButtonGroup-root .MuiButtonGroup-groupedTextSecondary
+.MuiButtonGroup-root.MuiButtonGroup-text.MuiButtonGroup-colorSecondary > .MuiButtonGroup-grouped
-.MuiButtonGroup-root .MuiButtonGroup-groupedOutlined
+.MuiButtonGroup-root.MuiButtonGroup-outlined > .MuiButtonGroup-grouped
-.MuiButtonGroup-root .MuiButtonGroup-groupedOutlinedHorizontal
+.MuiButtonGroup-root.MuiButtonGroup-outlined.MuiButtonGroup-horizontal > .MuiButtonGroup-grouped
-.MuiButtonGroup-root .MuiButtonGroup-groupedOutlinedVertical
+.MuiButtonGroup-root.MuiButtonGroup-outlined.MuiButtonGroup-vertical > .MuiButtonGroup-grouped
-.MuiButtonGroup-root .MuiButtonGroup-groupedOutlinedPrimary
+.MuiButtonGroup-root.MuiButtonGroup-outlined.MuiButtonGroup-colorPrimary > .MuiButtonGroup-grouped
-.MuiButtonGroup-root .MuiButtonGroup-groupedOutlinedSecondary
+.MuiButtonGroup-root.MuiButtonGroup-outlined.MuiButtonGroup-colorSecondary > .MuiButtonGroup-grouped
-.MuiButtonGroup-root .MuiButtonGroup-groupedContained
+.MuiButtonGroup-root.MuiButtonGroup-contained > .MuiButtonGroup-grouped
-.MuiButtonGroup-root .MuiButtonGroup-groupedContainedHorizontal
+.MuiButtonGroup-root.MuiButtonGroup-contained.MuiButtonGroup-horizontal > .MuiButtonGroup-grouped
-.MuiButtonGroup-root .MuiButtonGroup-groupedContainedVertical
+.MuiButtonGroup-root.MuiButtonGroup-contained.MuiButtonGroup-vertical > .MuiButtonGroup-grouped
-.MuiButtonGroup-root .MuiButtonGroup-groupedContainedPrimary
+.MuiButtonGroup-root.MuiButtonGroup-contained.MuiButtonGroup-colorPrimary > .MuiButtonGroup-grouped
-.MuiButtonGroup-root .MuiButtonGroup-groupedContainedSecondary
+.MuiButtonGroup-root.MuiButtonGroup-contained.MuiButtonGroup-colorSecondary > .MuiButtonGroup-grouped
`bash`
npx @mui/codemod@latest deprecations/button-group-classes
#### chip-classes
JS transforms:
`diff
import { chipClasses } from '@mui/material/Chip';
MuiChip: {
styleOverrides: {
root: {
- [&.${chipClasses.clickableColorPrimary}]: {&.${chipClasses.clickable}.${chipClasses.colorPrimary}
+ []: {&.${chipClasses.clickableColorSecondary}
color: 'red',
},
- []: {&.${chipClasses.clickable}.${chipClasses.colorSecondary}
+ []: {&.${chipClasses.deletableColorPrimary}
color: 'red',
},
- []: {&.${chipClasses.deletable}.${chipClasses.colorPrimary}
+ []: {&.${chipClasses.deletableColorSecondary}
color: 'red',
},
- []: {&.${chipClasses.deletable}.${chipClasses.colorSecondary}
+ []: {&.${chipClasses.outlinedPrimary}
color: 'red',
},
- []: {&.${chipClasses.outlined}.${chipClasses.colorPrimary}
+ []: {&.${chipClasses.outlinedSecondary}
color: 'red',
},
- []: {&.${chipClasses.outlined}.${chipClasses.colorSecondary}
+ []: {&.${chipClasses.filledPrimary}
color: 'red',
},
- []: {&.${chipClasses.filled}.${chipClasses.colorPrimary}
+ []: {&.${chipClasses.filledSecondary}
color: 'red',
},
- []: {&.${chipClasses.filled}.${chipClasses.colorSecondary}
+ []: {& .${chipClasses.avatarSmall}
color: 'red',
},
- []: {&.${chipClasses.sizeSmall} > .${chipClasses.avatar}
+ []: {& .${chipClasses.avatarMedium}
color: 'red',
},
- []: {&.${chipClasses.sizeMedium} > .${chipClasses.avatar}
+ []: {& .${chipClasses.avatarColorPrimary}
color: 'red',
},
- []: {&.${chipClasses.colorPrimary} > .${chipClasses.avatar}
+ []: {& .${chipClasses.avatarColorSecondary}
color: 'red',
},
- []: {&.${chipClasses.colorSecondary} > .${chipClasses.avatar}
+ []: {& .${chipClasses.iconSmall}
color: 'red',
},
- []: {&.${chipClasses.sizeSmall} > .${chipClasses.icon}
+ []: {& .${chipClasses.iconMedium}
color: 'red',
},
- []: {&.${chipClasses.sizeMedium} > .${chipClasses.icon}
+ []: {& .${chipClasses.iconColorPrimary}
color: 'red',
},
- []: {&.${chipClasses.colorPrimary} > .${chipClasses.icon}
+ []: {& .${chipClasses.iconColorSecondary}
color: 'red',
},
- []: {&.${chipClasses.colorSecondary} > .${chipClasses.icon}
+ []: {& .${chipClasses.labelSmall}
color: 'red',
},
- []: {&.${chipClasses.sizeSmall} > .${chipClasses.label}
+ []: {& .${chipClasses.labelMedium}
color: 'red',
},
- []: {&.${chipClasses.sizeMedium} > .${chipClasses.label}
+ []: {& .${chipClasses.deleteIconSmall}
color: 'red',
},
- []: {&.${chipClasses.sizeSmall} > .${chipClasses.deleteIcon}
+ []: {& .${chipClasses.deleteIconMedium}
color: 'red',
},
- []: {&.${chipClasses.sizeMedium} > .${chipClasses.deleteIcon}
+ []: {& .${chipClasses.deleteIconColorPrimary}
color: 'red',
},
- []: {&.${chipClasses.colorPrimary} > .${chipClasses.deleteIcon}
+ []: {& .${chipClasses.deleteIconColorSecondary}
color: 'red',
},
- []: {&.${chipClasses.colorSecondary} > .${chipClasses.deleteIcon}
+ []: {& .${chipClasses.deleteIconOutlinedColorPrimary}
color: 'red',
},
- []: {&.${chipClasses.outlined}.${chipClasses.colorPrimary} > .${chipClasses.deleteIcon}
+ []: {& .${chipClasses.deleteIconOutlinedColorSecondary}
color: 'red',
},
- []: {&.${chipClasses.outlined}.${chipClasses.colorSecondary} > .${chipClasses.deleteIcon}
+ []: {& .${chipClasses.deleteIconFilledColorPrimary}
color: 'red',
},
- []: {&.${chipClasses.filled}.${chipClasses.colorPrimary} > .${chipClasses.deleteIcon}
+ []: {& .${chipClasses.deleteIconFilledColorSecondary}
color: 'red',
},
- []: {&.${chipClasses.filled}.${chipClasses.colorSecondary} > .${chipClasses.deleteIcon}
+ []: {
color: 'red',
},
},
},
},
`
CSS transforms:
`diff`
-.MuiChip-clickableColorPrimary
+.MuiChip-clickable.MuiChip-colorPrimary
-.MuiChip-clickableColorSecondary
+.MuiChip-clickable.MuiChip-colorSecondary
-.MuiChip-deletableColorPrimary
+.MuiChip-deletable.MuiChip-colorPrimary
-.MuiChip-deletableColorSecondary
+.MuiChip-deletable.MuiChip-colorSecondary
-.MuiChip-outlinedPrimary
+.MuiChip-outlined.MuiChip-colorPrimary
-.MuiChip-outlinedSecondary
+.MuiChip-outlined.MuiChip-colorSecondary
-.MuiChip-filledPrimary
+.MuiChip-filled.MuiChip-colorPrimary
-.MuiChip-filledSecondary
+.MuiChip-filled.MuiChip-colorSecondary
-.MuiChip-root .MuiChip-avatarSmall
+.MuiChip-root.MuiChip-sizeSmall > .MuiChip-avatar
-.MuiChip-root .MuiChip-avatarMedium
+.MuiChip-root.MuiChip-sizeMedium > .MuiChip-avatar
-.MuiChip-root .MuiChip-avatarColorPrimary
+.MuiChip-root.MuiChip-colorPrimary > .MuiChip-avatar
-.MuiChip-root .MuiChip-avatarColorSecondary
+.MuiChip-root.MuiChip-colorSecondary > .MuiChip-avatar
-.MuiChip-root .MuiChip-iconSmall
+.MuiChip-root.MuiChip-sizeSmall > .MuiChip-icon
-.MuiChip-root .MuiChip-iconMedium
+.MuiChip-root.MuiChip-sizeMedium > .MuiChip-icon
-.MuiChip-root .MuiChip-iconColorPrimary
+.MuiChip-root.MuiChip-colorPrimary > .MuiChip-icon
-.MuiChip-root .MuiChip-iconColorSecondary
+.MuiChip-root.MuiChip-colorSecondary > .MuiChip-icon
-.MuiChip-root .MuiChip-labelSmall
+.MuiChip-root.MuiChip-sizeSmall > .MuiChip-label
-.MuiChip-root .MuiChip-labelMedium
+.MuiChip-root.MuiChip-sizeMedium > .MuiChip-label
-.MuiChip-root .MuiChip-deleteIconSmall
+.MuiChip-root.MuiChip-sizeSmall > .MuiChip-deleteIcon
-.MuiChip-root .MuiChip-deleteIconMedium
+.MuiChip-root.MuiChip-sizeMedium > .MuiChip-deleteIcon
-.MuiChip-root .MuiChip-deleteIconColorPrimary
+.MuiChip-root.MuiChip-colorPrimary > .MuiChip-deleteIcon
-.MuiChip-root .MuiChip-deleteIconColorSecondary
+.MuiChip-root.MuiChip-colorSecondary > .MuiChip-deleteIcon
-.MuiChip-root .MuiChip-deleteIconOutlinedColorPrimary
+.MuiChip-root.MuiChip-outlined.MuiChip-colorPrimary > .MuiChip-deleteIcon
-.MuiChip-root .MuiChip-deleteIconOutlinedColorSecondary
+.MuiChip-root.MuiChip-outlined.MuiChip-colorSecondary > .MuiChip-deleteIcon
-.MuiChip-root .MuiChip-deleteIconFilledColorPrimary
+.MuiChip-root.MuiChip-filled.MuiChip-colorPrimary > .MuiChip-deleteIcon
-.MuiChip-root .MuiChip-deleteIconFilledColorSecondary
+.MuiChip-root.MuiChip-filled.MuiChip-colorSecondary > .MuiChip-deleteIcon
`bash`
npx @mui/codemod@latest deprecations/chip-classes
#### circular-progress-classes
JS transforms:
`diff
import { circularProgressClasses } from '@mui/material/CircularProgress';
MuiCircularProgress: {
styleOverrides: {
root: {
- [& .${circularProgressClasses.circleDeterminate}]: {&.${circularProgressClasses.determinate} > .${circularProgressClasses.circle}
+ []: {& .${circularProgressClasses.circleIndeterminate}
color: 'red',
},
- []: {&.${circularProgressClasses.indeterminate} > .${circularProgressClasses.circle}
+ []: {`
color: 'red',
},
},
},
},
CSS transforms:
`diff`
-.MuiCircularProgress-circleDeterminate
+.MuiCircularProgress-determinate > .MuiCircularProgress-circle
`diff`
-.MuiCircularProgress-circleIndeterminate
+.MuiCircularProgress-indeterminate > .MuiCircularProgress-circle
`bash`
npx @mui/codemod@latest deprecations/circular-progress-classes
#### divider-props
`diff`
+ sx={{ opacity: 0.6 }}
/>
`bash`
npx @mui/codemod@latest deprecations/divider-props
#### dialog-classes
JS transforms:
`diff
import { dialogClasses } from '@mui/material/Dialog';
MuiDialog: {
styleOverrides: {
root: {
- [& .${dialogClasses.paperScrollBody}]: {& .${dialogClasses.scrollBody} > .${dialogClasses.paper}
+ []: {& .${dialogClasses.paperScrollPaper}
color: 'red',
},
- []: {& .${dialogClasses.scrollPaper} > .${dialogClasses.paper}
+ []: {`
color: 'red',
},
},
},
},
CSS transforms:
`diff`
-.MuiDialog-root .MuiDialog-paperScrollBody
+.MuiDialog-root .MuiDialog-scrollBody > .MuiDialog-paper
-.MuiDialog-root .MuiDialog-paperScrollPaper
+.MuiDialog-root .MuiDialog-scrollPaper > .MuiDialog-paper
`bash`
npx @mui/codemod@latest deprecations/dialog-classes
#### dialog-props
JS transforms:
`diff`
- PaperProps={paperProps}
+ slotProps={{ paper: paperProps }}
- TransitionComponent={CustomTransition}
+ slots={{ transition: CustomTransition }}
- TransitionProps={CustomTransitionProps}
+ slotProps={{ transition: CustomTransitionProps }}
/>
},
},
},
`bash`
npx @mui/codemod@latest deprecations/dialog-props
#### drawer-classes
JS transforms:
`diff
import { drawerClasses } from '@mui/material/Drawer';
MuiDrawer: {
styleOverrides: {
root: {
- [.${drawerClasses.paperAnchorBottom}]: {&.${drawerClasses.anchorBottom} > .${drawerClasses.paper}
+ []: {.${drawerClasses.paperAnchorLeft}
color: 'red',
},
- []: {&.${drawerClasses.anchorLeft} > .${drawerClasses.paper}
+ []: {.${drawerClasses.paperAnchorRight}
color: 'red',
},
- []: {&.${drawerClasses.anchorRight} > .${drawerClasses.paper}
+ []: {.${drawerClasses.paperAnchorTop}
color: 'red',
},
- []: {&.${drawerClasses.anchorTop} > .${drawerClasses.paper}
+ []: {.${drawerClasses.paperAnchorDockedBottom}
color: 'red',
},
- []: {&.${drawerClasses.docked}.${drawerClasses.anchorBottom} > .${drawerClasses.paper}
+ []: {.${drawerClasses.paperAnchorDockedLeft}
color: 'red',
},
- []: {&.${drawerClasses.docked}.${drawerClasses.anchorLeft} > .${drawerClasses.paper}
+ []: {.${drawerClasses.paperAnchorDockedRight}
color: 'red',
},
- []: {&.${drawerClasses.docked}.${drawerClasses.anchorRight} > .${drawerClasses.paper}
+ []: {.${drawerClasses.paperAnchorDockedTop}
color: 'red',
},
- []: {&.${drawerClasses.docked}.${drawerClasses.anchorTop} > .${drawerClasses.paper}
+ []: {`
color: 'red',
},
},
},
},
CSS transforms:
`diff`
-.MuiDrawer-paperAnchorBottom
+.MuiDrawer-anchorBottom > .MuiDrawer-paper
-.MuiDrawer-paperAnchorLeft
+.MuiDrawer-anchorLeft > .MuiDrawer-paper
-.MuiDrawer-paperAnchorRight
+.MuiDrawer-anchorRight > .MuiDrawer-paper
-.MuiDrawer-paperAnchorTop
+.MuiDrawer-anchorTop > .MuiDrawer-paper
-.MuiDrawer-paperAnchorDockedBottom
+.MuiDrawer-docked.MuiDrawer-anchorBottom > .MuiDrawer-paper
-.MuiDrawer-paperAnchorDockedLeft
+.MuiDrawer-docked.MuiDrawer-anchorLeft > .MuiDrawer-paper
-.MuiDrawer-paperAnchorDockedRight
+.MuiDrawer-docked.MuiDrawer-anchorRight > .MuiDrawer-paper
-.MuiDrawer-paperAnchorDockedTop
+.MuiDrawer-docked.MuiDrawer-anchorTop > .MuiDrawer-paper
`bash`
npx @mui/codemod@latest deprecations/drawer-classes
#### filled-input-props
`diff`
- componentsProps={{ input: { id: 'test-input-id' }, root: { id: 'test-root-id' } }}
+ slots={{ input: CustomInput, root: CustomRoot }}
+ slotProps={{ input: { id: 'test-input-id' }, root: { id: 'test-root-id' } }}
/>
`diff`
MuiFilledInput: {
defaultProps: {
- components: { Input: CustomInput, Root: CustomRoot }
- componentsProps: { input: { id: 'test-input-id' }, root: { id: 'test-root-id' } }
+ slots: { input: CustomInput, root: CustomRoot },
+ slotProps: { input: { id: 'test-input-id' }, root: { id: 'test-root-id' } },
},
},
`bash`
npx @mui/codemod@latest deprecations/filled-input-props
#### form-control-label-props
`diff`
+ slotProps={{ typography: typographyProps }}
/>
`diff`
MuiFormControlLabel: {
defaultProps: {
- componentsProps={{ typography: typographyProps }}
+ slotProps={{ typography: typographyProps }}
},
},
`bash
npx @mui/codemod@latest deprecations/form-control-label-props
`
#### list-item-props
`diff`
- componentsProps={{ root: { testid: 'test-id' } }}
+ slots={{ root: CustomRoot }}
+ slotProps={{ root: { testid: 'test-id' } }}
/>
`diff`
MuiListItem: {
defaultProps: {
- components: { Root: CustomRoot }
- componentsProps: { root: { testid: 'test-id' }}
+ slots: { root: CustomRoot },
+ slotProps: { root: { testid: 'test-id' } },
},
},
`bash`
npx @mui/codemod@latest deprecations/list-item-props
#### list-item-text-props
`diff`
+ slotProps={{ primary: primaryTypographyProps }}
- secondaryTypographyProps={secondaryTypographyProps}
+ slotProps={{ secondary: secondaryTypographyProps }}
/>
`diff`
MuiListItemText: {
defaultProps: {
- primaryTypographyProps:primaryTypographyProps
+ slotProps:{ primary: primaryTypographyProps }
- secondaryTypographyProps:secondaryTypographyProps
+ slotProps:{ secondary: secondaryTypographyProps }
},
},
`bash`
npx @mui/codemod@latest deprecations/list-item-text-props
#### image-list-item-bar-classes
JS transforms:
`diff
import { imageListItemBarClasses } from '@mui/material/ImageListItemBar';
MuiImageListItemBar: {
styleOverrides: {
root: {
- [& .${imageListItemBarClasses.titleWrapBelow}]: {&.${imageListItemBarClasses.positionBelow} > .${imageListItemBarClasses.titleWrap}
+ []: {& .${imageListItemBarClasses.titleWrapActionPosLeft}
color: 'red',
},
- []: {&.${imageListItemBarClasses.actionPositionLeft} > .${imageListItemBarClasses.titleWrap}
+ []: {& .${imageListItemBarClasses.titleWrapActionPosRight}
color: 'red',
},
- []: {&.${imageListItemBarClasses.actionPositionRight} > .${imageListItemBarClasses.titleWrap}
+ []: {& .${imageListItemBarClasses.actionIconActionPosLeft}
color: 'red',
},
- []: {&.${imageListItemBarClasses.actionPositionLeft} > .${imageListItemBarClasses.actionIcon}
+ []: {`
color: 'red',
},
},
},
},
CSS transforms:
`diff`
- .MuiImageListItemBar-titleWrapBelow
+.MuiImageListItemBar-positionBelow > .MuiImageListItemBar-titleWrap
`diff`
- .MuiImageListItemBar-titleWrapActionPosLeft
+.MuiImageListItemBar-actionPositionLeft > .MuiImageListItemBar-titleWrap
`diff`
- .MuiImageListItemBar-titleWrapActionPosRight
+.MuiImageListItemBar-actionPositionRight > .MuiImageListItemBar-titleWrap
`diff`
- .MuiImageListItemBar-actionIconActionPosLeft
+.MuiImageListItemBar-actionPositionLeft > .MuiImageListItemBar-actionIcon
`bash`
npx @mui/codemod@latest deprecations/image-list-item-bar-classes
#### input-base-props
`diff`
- componentsProps={{ input: { id: 'test-input-id' }, root: { id: 'test-root-id' } }}
+ slots={{ input: CustomInput, root: CustomRoot }}
+ slotProps={{ input: { id: 'test-input-id' }, root: { id: 'test-root-id' } }}
/>
`diff`
MuiInputBase: {
defaultProps: {
- components: { Input: CustomInput, Root: CustomRoot }
- componentsProps: { input: { id: 'test-input-id' }, root: { id: 'test-root-id' } }
+ slots: { input: CustomInput, root: CustomRoot },
+ slotProps: { input: { id: 'test-input-id' }, root: { id: 'test-root-id' } },
},
},
`bash`
npx @mui/codemod@latest deprecations/input-base-props
#### input-base-classes
JS transforms:
`diff
import { inputBaseClasses } from '@mui/material/InputBase';
MuiInputBase: {
styleOverrides: {
root: {
- [& .${inputBaseClasses.inputSizeSmall}]: {&.${inputBaseClasses.sizeSmall} > .${inputBaseClasses.input}
+ []: {& .${inputBaseClasses.inputMultiline}
color: 'red',
},
- []: {&.${inputBaseClasses.multiline} > .${inputBaseClasses.input}
+ []: {& .${inputBaseClasses.inputAdornedStart}
color: 'red',
},
- []: {&.${inputBaseClasses.adornedStart} > .${inputBaseClasses.input}
+ []: {& .${inputBaseClasses.inputAdornedEnd}
color: 'red',
},
- []: {&.${inputBaseClasses.adornedEnd} > .${inputBaseClasses.input}
+ []: {& .${inputBaseClasses.inputHiddenLabel}
color: 'red',
},
- []: {&.${inputBaseClasses.hiddenLabel} > .${inputBaseClasses.input}
+ []: {`
color: 'red',
},
},
},
},
CSS transforms:
`diff`
-.MuiInputBase-root .MuiInputBase-inputSizeSmall
+.MuiInputBase-root.MuiInputBase-sizeSmall > .MuiInputBase-input
-.MuiInputBase-root .MuiInputBase-inputMultiline
+.MuiInputBase-root.MuiInputBase-multiline > .MuiInputBase-input
-.MuiInputBase-root .MuiInputBase-inputAdornedStart
+.MuiInputBase-root.MuiInputBase-adornedStart > .MuiInputBase-input
-.MuiInputBase-root .MuiInputBase-inputAdornedEnd
+.MuiInputBase-root.MuiInputBase-adornedEnd > .MuiInputBase-input
-.MuiInputBase-root .MuiInputBase-inputHiddenLabel
+.MuiInputBase-root.MuiInputBase-hiddenLabel > .MuiInputBase-input
`bash`
npx @mui/codemod@latest deprecations/input-base-classes
#### input-props
`diff`
- components={{ Input: CustomInput, Root: CustomRoot }}
- componentsProps={{ input: { id: 'test-input-id' }, root: { id: 'test-root-id' } }}
+ slots={{ input: CustomInput, root: CustomRoot }}
+ slotProps={{ input: { id: 'test-input-id' }, root: { id: 'test-root-id' } }}
/>
`diff`
MuiInput: {
defaultProps: {
- components: { Input: CustomInput, Root: CustomRoot }
- componentsProps: { input: { id: 'test-input-id' }, root: { id: 'test-root-id' } }
+ slots: { input: CustomInput, root: CustomRoot },
+ slotProps: { input: { id: 'test-input-id' }, root: { id: 'test-root-id' } },
},
},
`bash`
npx @mui/codemod@latest deprecations/input-props
#### linear-progress-classes
JS transforms:
`diff
import { linearProgressClasses } from '@mui/material/LinearProgress';
MuiLinearProgress: {
styleOverrides: {
root: {
- [&.${linearProgressClasses.bar1Buffer}]: {},&.${linearProgressClasses.buffer} > .${linearProgressClasses.bar1}
+ []: {},&.${linearProgressClasses.bar1Determinate}
- []: {},&.${linearProgressClasses.determinate} > .${linearProgressClasses.bar1}
+ []: {},&.${linearProgressClasses.bar1Indeterminate}
- []: {},&.${linearProgressClasses.indeterminate} > .${linearProgressClasses.bar1}
+ []: {},&.${linearProgressClasses.bar2Buffer}
- []: {},&.${linearProgressClasses.buffer} > .${linearProgressClasses.bar2}
+ []: {},&.${linearProgressClasses.bar2Indeterminate}
- []: {},&.${linearProgressClasses.indeterminate} > .${linearProgressClasses.bar2}
+ []: {},&.${linearProgressClasses.barColorPrimary}
- []: {},&.${linearProgressClasses.colorPrimary} > .${linearProgressClasses.bar}
+ []: {},&.${linearProgressClasses.barColorSecondary}
- []: {},&.${linearProgressClasses.colorSecondary} > .${linearProgressClasses.bar}
+ []: {},&.${linearProgressClasses.dashedColorPrimary}
- []: {},&.${linearProgressClasses.colorPrimary} > .${linearProgressClasses.dashed}
+ []: {},&.${linearProgressClasses.dashedColorSecondary}
- []: {},&.${linearProgressClasses.colorSecondary} > .${linearProgressClasses.dashed}
+ []: {},`
},
},
}
CSS transforms:
`diff`
-.MuiLinearProgress-bar1Buffer
+.MuiLinearProgress-buffer > .MuiLinearProgress-bar1
-.MuiLinearProgress-bar1Determinate
+.MuiLinearProgress-determinate > .MuiLinearProgress-bar1
-.MuiLinearProgress-bar1Indeterminate
+.MuiLinearProgress-indeterminate > .MuiLinearProgress-bar1
-.MuiLinearProgress-bar2Buffer
+.MuiLinearProgress-buffer > .MuiLinearProgress-bar2
-.MuiLinearProgress-bar2Indeterminate
+.MuiLinearProgress-indeterminate > .MuiLinearProgress-bar2
-.MuiLinearProgress-barColorPrimary
+.MuiLinearProgress-colorPrimary > .MuiLinearProgress-bar
-.MuiLinearProgress-barColorSecondary
+.MuiLinearProgress-colorSecondary > .MuiLinearProgress-bar
-.MuiLinearProgress-dashedColorPrimary
+.MuiLinearProgress-colorPrimary > .MuiLinearProgress-dashed
-.MuiLinearProgress-dashedColorSecondary
+.MuiLinearProgress-colorSecondary > .MuiLinearProgress-dashed
`bash`
npx @mui/codemod@latest deprecations/linear-progress-classes
#### modal-props
`diff`
- componentsProps={{ root: { testid: 'root-id' }, backdrop: { testid: 'backdrop-id' } }}
+ slots={{ root: CustomRoot, backdrop: CustomBackdrop }}
+ slotProps={{ root: { testid: 'root-id' }, backdrop: { testid: 'backdrop-id' } }}
/>
`diff`
MuiModal: {
defaultProps: {
- components: { Root: CustomRoot, Backdrop: CustomBackdrop }
- componentsProps: { root: { testid: 'root-id' }, backdrop: { testid: 'backdrop-id' }}
+ slots: { root: CustomRoot, backdrop: CustomBackdrop },
+ slotProps: { root: { testid: 'root-id' }, backdrop: { testid: 'backdrop-id' } },
},
},
`bash`
npx @mui/codemod@latest deprecations/modal-props
#### mobile-stepper-props
`diff`
+ slotProps={{ progress: { color: 'primary' } }}
/>
`bash`
npx @mui/codemod@latest deprecations/mobile-stepper-props
#### pagination-item-classes
JS transforms:
`diff
import { paginationItemClasses } from '@mui/material/PaginationItem';
MuiPaginationItem: {
styleOverrides: {
root: {
- [&.${paginationItemClasses.textPrimary}]: {&.${paginationItemClasses.text}.${paginationItemClasses.colorPrimary}
+ []: {&.${paginationItemClasses.textSecondary}
color: 'red',
},
- []: {&.${paginationItemClasses.text}.${paginationItemClasses.colorSecondary}
+ []: {&.${paginationItemClasses.outlinedPrimary}
color: 'red',
},
- []: {&.${paginationItemClasses.outlined}.${paginationItemClasses.colorPrimary}
+ []: {&.${paginationItemClasses.outlinedSecondary}
color: 'red',
},
- []: {&.${paginationItemClasses.outlined}.${paginationItemClasses.colorSecondary}
+ []: {`
color: 'red',
},
- '&.MuiPaginationItem-textPrimary': {
+ '&.MuiPaginationItem-text.MuiPaginationItem-colorPrimary': {
color: 'red',
},
- '&.MuiPaginationItem-textSecondary': {
+ '&.MuiPaginationItem-text.MuiPaginationItem-colorSecondary': {
color: 'red',
},
- '&.MuiPaginationItem-outlinedPrimary': {
+ '&.MuiPaginationItem-outlined.MuiPaginationItem-colorPrimary': {
color: 'red',
},
- '&.MuiPaginationItem-outlinedSecondary': {
+ '&.MuiPaginationItem-outlined.MuiPaginationItem-colorSecondary': {
color: 'red',
},
},
},
},
CSS transforms:
`diff`
-.MuiPaginationItem-textPrimary
+.MuiPaginationItem-text.MuiPaginationItem-primary
-.MuiPaginationItem-textSecondary
+.MuiPaginationItem-text.MuiPaginationItem-secondary
-.MuiPaginationItem-outlinedPrimary
+.MuiPaginationItem-outlined.MuiPaginationItem-primary
-.MuiPaginationItem-outlinedSecondary
+.MuiPaginationItem-outlined.MuiPaginationItem-secondary
`bash`
npx @mui/codemod@latest deprecations/pagination-item-classes
#### pagination-item-props
`diff`
+ slots={{ first: FirstIcon, last: LastIcon, next: NextIcon, previous: PreviousIcons }}
/>
`diff`
MuiPaginationItem: {
defaultProps: {
- components: { first: FirstIcon, last: LastIcon, next: NextIcon, previous: PreviousIcons }
+ slots: { first: FirstIcon, last: LastIcon, next: NextIcon, previous: PreviousIcons }
},
},
`bash`
npx @mui/codemod@latest deprecations/pagination-item-props
#### popper-props
`diff`
- componentsProps={{ root: { testid: 'test-id' } }}
+ slots={{ root: CustomRoot }}
+ slotProps={{ root: { testid: 'test-id' } }}
/>
`diff`
MuiPopper: {
defaultProps: {
- components: { Root: CustomRoot }
- componentsProps: { root: { testid: 'test-id' }}
+ slots: { root: CustomRoot },
+ slotProps: { root: { testid: 'test-id' } },
},
},
`bash`
npx @mui/codemod@latest deprecations/popper-props
#### outlined-input-props
`diff`
- componentsProps={{ input: { id: 'test-input-id' }, root: { id: 'test-root-id' } }}
+ slots={{ input: CustomInput, root: CustomRoot }}
+ slotProps={{ input: { id: 'test-input-id' }, root: { id: 'test-root-id' } }}
/>
`diff`
MuiOutlinedInput: {
defaultProps: {
- components: { Input: CustomInput, Root: CustomRoot }
- componentsProps: { input: { id: 'test-input-id' }, root: { id: 'test-root-id' } }
+ slots: { input: CustomInput, root: CustomRoot },
+ slotProps: { input: { id: 'test-input-id' }, root: { id: 'test-root-id' } },
},
},
`bash`
npx @mui/codemod@latest deprecations/outlined-input-props
#### rating-props
`diff`
+ slots={{
+ icon: { component: CustomContainer }
+ }}
/>
`bash`
npx @mui/codemod deprecations/rating-props
#### select-classes
JS transforms:
`diff
import { selectClasses } from '@mui/material/Select';
MuiSelect: {
styleOverrides: {
root: {
- [& .${selectClasses.iconFilled}]: {& .${selectClasses.filled} ~ .${selectClasses.icon}
+ []: {& .${selectClasses.iconOutlined}
color: 'red',
},
- []: {& .${selectClasses.outlined} ~ .${selectClasses.icon}
+ []: {& .${selectClasses.iconStandard}
color: 'red',
},
- []: {& .${selectClasses.standard} ~ .${selectClasses.icon}
+ []: {`
color: 'red',
},
},
},
},
CSS transforms:
`diff`
- .MuiSelect-iconFilled
+ .MuiSelect-filled ~ .MuiSelect-icon
`diff`
- .MuiSelect-iconOutlined
+ .MuiSelect-outlined ~ .MuiSelect-icon
`diff`
- .MuiSelect-iconStandard
+ .MuiSelect-standard ~ .MuiSelect-icon
`bash`
npx @mui/codemod@latest deprecations/select-classes
#### slider-props
`diff`
- componentsProps={{ track: { testid: 'test-id' } }}
+ slots={{ track: CustomTrack }}
+ slotProps={{ track: { testid: 'test-id' } }}
/>
`diff`
MuiSlider: {
defaultProps: {
- components: { Track: CustomTrack }
- componentsProps: { track: { testid: 'test-id' }}
+ slots: { track: CustomTrack },
+ slotProps: { track: { testid: 'test-id' } },
},
},
`bash`
npx @mui/codemod@latest deprecations/slider-props
#### snackbar-props
`diff`
- ContentProps={CustomContentProps}
- TransitionComponent={CustomTransition}
- TransitionProps={CustomTransitionProps}
+ slots={{ transition: CustomTransition }}
+ slotProps={{
+ clickAwayListener: CustomClickAwayListenerProps,
+ content: CustomContentProps,
+ transition: CustomTransitionProps
+ }}
/>
`bash`
npx @mui/codemod deprecations/snackbar-props
#### slider-classes
JS transforms:
`diff
import { sliderClasses } from '@mui/material/Slider';
MuiSlider: {
styleOverrides: {
root: {
- [& .${sliderClasses.thumbSizeSmall}]: {&.${sliderClasses.sizeSmall} > .${sliderClasses.thumb}
+ []: {& .${sliderClasses.thumbSizeMedium}
color: 'red',
},
- []: {&.${sliderClasses.sizeMedium} > .${sliderClasses.thumb}
+ []: {& .${sliderClasses.thumbColorPrimary}
color: 'red',
},
- []: {&.${sliderClasses.colorPrimary} > .${sliderClasses.thumb}
+ []: {& .${sliderClasses.thumbColorSecondary}
color: 'red',
},
- []: {&.${sliderClasses.colorSecondary} > .${sliderClasses.thumb}
+ []: {& .${sliderClasses.thumbColorError}
color: 'red',
},
- []: {&.${sliderClasses.colorError} > .${sliderClasses.thumb}
+ []: {& .${sliderClasses.thumbColorInfo}
color: 'red',
},
- []: {&.${sliderClasses.colorInfo} > .${sliderClasses.thumb}
+ []: {& .${sliderClasses.thumbColorSuccess}
color: 'red',
},
- []: {&.${sliderClasses.colorSuccess} > .${sliderClasses.thumb}
+ []: {& .${sliderClasses.thumbColorWarning}
color: 'red',
},
- []: {&.${sliderClasses.colorWarning} > .${sliderClasses.thumb}
+ []: {`
color: 'red',
},
},
},
},
CSS transforms:
`diff`
-.MuiSlider-root .MuiSlider-thumbSizeSmall
+.MuiSlider-root.MuiSlider-sizeSmall > .MuiSlider-thumb
-.MuiSlider-root .MuiSlider-thumbSizeMedium
+.MuiSlider-root.MuiSlider-sizeMedium > .MuiSlider-thumb
-.MuiSlider-root .MuiSlider-thumbColorPrimary
+.MuiSlider-root.MuiSlider-colorPrimary > .MuiSlider-thumb
-.MuiSlider-root .MuiSlider-thumbColorSecondary
+.MuiSlider-root.MuiSlider-colorSecondary > .MuiSlider-thumb
-.MuiSlider-root .MuiSlider-thumbColorError
+.MuiSlider-root.MuiSlider-colorError > .MuiSlider-thumb
-.MuiSlider-root .MuiSlider-thumbColorInfo
+.MuiSlider-root.MuiSlider-colorInfo > .MuiSlider-thumb
-.MuiSlider-root .MuiSlider-thumbColorSuccess
+.MuiSlider-root.MuiSlider-colorSuccess > .MuiSlider-thumb
-.MuiSlider-root .MuiSlider-thumbColorWarning
+.MuiSlider-root.MuiSlider-colorWarning > .MuiSlider-thumb
`bash`
npx @mui/codemod@latest deprecations/slider-classes
#### tooltip-props
`diff`
- componentsProps={{ arrow: { testid: 'test-id' } }}
- PopperComponent={CustomPopperComponent}
- TransitionComponent={CustomTransitionComponent}
- PopperProps={CustomPopperProps}
- TransitionProps={CustomTransitionProps}
+ slots={{
+ arrow: CustomArrow,
+ popper: CustomPopperComponent,
+ transition: CustomTransitionComponent,
+ }}
+ slotProps={{
+ arrow: { testid: 'test-id' },
+ popper: CustomPopperProps,
+ transition: CustomTransitionProps,
+ }}
/>
`diff`
MuiTooltip: {
defaultProps: {
- PopperComponent: CustomPopperComponent,
- TransitionComponent: CustomTransitionComponent,
- PopperProps: CustomPopperProps,
- TransitionProps: CustomTransitionProps,
- components: { Arrow: CustomArrow }
+ slots: {
+ arrow: CustomArrow,
+ popper: CustomPopperComponent,
+ transition: CustomTransitionComponent,
+ },
- componentsProps: { arrow: { testid: 'test-id' }}
+ slotProps: {
+ arrow: { testid: 'test-id' },
+ popper: CustomPopperProps,
+ transition: CustomTransitionProps,
+ },
},
},
`bash`
npx @mui/codemod@latest deprecations/tooltip-props
#### step-connector-classes
JS transforms:
`diff
import { stepConnectorClasses } from '@mui/material/StepConnector';
MuiStepConnector: {
styleOverrides: {
root: {
- [& .${stepConnectorClasses.lineHorizontal}]: {&.${stepConnectorClasses.horizontal} > .${stepConnectorClasses.line}
+ []: {& .${stepConnectorClasses.lineVertical}
color: 'red',
},
- []: {&.${stepConnectorClasses.vertical} > .${stepConnectorClasses.line}
+ []: {`
color: 'red',
},
},
},
},
CSS transforms:
`diff`
-.MuiStepConnector-lineHorizontal
+.MuiStepConnector-horizontal > .MuiStepConnector-line
`diff`
-.MuiStepConnector-lineVertical
+.MuiStepConnector-vertical > .MuiStepConnector-line
`bash`
npx @mui/codemod deprecations/step-connector-classes
#### step-content-props
`diff`
- TransitionProps={{ unmountOnExit: true }}
+ slots={{ transition: CustomTransition }}
+ slotProps={{ transition: { unmountOnExit: true } }}
/>
`bash`
npx @mui/codemod@latest deprecations/step-content-props
#### step-label-props
`diff`
+ slotProps={{ label: labelProps }}
- StepIconComponent={StepIconComponent}
+ slots={{ stepIcon: StepIconComponent }}
- StepIconProps={StepIconProps}
+ slotProps={{ stepIcon: StepIconProps }}
/>
`diff`
MuiStepLabel: {
defaultProps: {
- componentsProps:{ label: labelProps }
+ slotProps:{ label: labelProps }
- StepIconComponent:StepIconComponent
+ slots:{ stepIcon: StepIconComponent }
- StepIconProps:StepIconProps
+ slotProps:{ stepIcon: StepIconProps }
},
},
`bash`
npx @mui/codemod@latest deprecations/step-label-props
#### text-field-props
`diff`
- inputProps={CustomHtmlInputProps}
- SelectProps={CustomSelectProps}
- InputLabelProps={CustomInputLabelProps}
- FormHelperTextProps={CustomFormHelperProps}
+ slotProps={{
+ input: CustomInputProps,
+ htmlInput: CustomHtmlInputProps,
+ select: CustomSelectProps,
+ inputLabel: CustomInputLabelProps,
+ formHelper: CustomFormHelperProps,
+ }}
/>
`bash`
npx @mui/codemod@latest deprecations/text-field-props
#### toggle-button-group-classes
JS transforms:
`diff
import { toggleButtonGroupClasses } from '@mui/material/ToggleButtonGroup';
MuiToggleButtonGroup: {
styleOverrides: {
root: {
- [& .${toggleButtonGroupClasses.groupedHorizontal}]: {&.${toggleButtonGroupClasses.horizontal} > .${toggleButtonGroupClasses.grouped}
+ []: {& .${toggleButtonGroupClasses.groupedVertical}
color: 'red',
},
- []: {&.${toggleButtonGroupClasses.vertical} > .${toggleButtonGroupClasses.grouped}
+ []: {`
color: 'red',
},
},
},
},
CSS transforms:
`diff`
-.MuiToggleButtonGroup-root .MuiToggleButtonGroup-groupedHorizontal
+.MuiToggleButtonGroup-root.MuiToggleButtonGroup-horizontal > .MuiToggleButtonGroup-grouped
`diff`
-.MuiToggleButtonGroup-root .MuiToggleButtonGroup-groupedVertical
+.MuiToggleButtonGroup-root.MuiToggleButtonGroup-vertical > .MuiToggleButtonGroup-grouped
`bash`
npx @mui/codemod@latest deprecations/toggle-button-group-classes
#### tab-classes
JS transforms:
`diff
import { tabClasses } from '@mui/material/Tab';
MuiTab: {
styleOverrides: {
root: {
- [& .${tabClasses.iconWrapper}]: {& .${tabClasses.icon}
+ []: {`
color: 'red',
},
},
},
},
CSS transforms:
`diff`
-.MuiTab-iconWrapper
+.MuiTab-icon
`bash`
npx @mui/codemod@latest deprecations/tab-classes
#### table-sort-label-classes
JS transforms:
`diff
import { tableSortLabelClasses } from '@mui/material/TableSortLabel';
MuiTableSortLabel: {
styleOverrides: {
root: {
- [& .${tableSortLabelClasses.iconDirectionDesc}]: {&.${tableSortLabelClasses.directionDesc} > .${tableSortLabelClasses.icon}
+ []: {& .${tableSortLabelClasses.iconDirectionAsc}
color: 'red',
},
- []: {&.${tableSortLabelClasses.directionAsc} > .${tableSortLabelClasses.icon}
+ []: {`
color: 'red',
},
},
},
},
CSS transforms:
`diff`
-.MuiTableSortLabel-iconDirectionDesc
+.MuiTableSortLabel-directionDesc > .MuiTableSortLabel-icon
`diff`
-.MuiTableSortLabel-iconDirectionAsc
+.MuiTableSortLabel-directionAsc > .MuiTableSortLabel-icon
`bash`
npx @mui/codemod@latest deprecations/table-sort-label-classes
#### typography-props
`diff`
+ sx={{ marginBottom: '16px' }}
/>
`diff`
+ sx={isTypographyParagraph ? { marginBottom: '16px' } : undefined}
/>
`diff`
MuiTypography: {
defaultProps: {
- paragraph: true
+ sx: { marginBottom: '16px' },
},
},
`bash`
npx @mui/codemod@latest deprecations/typography-props
#### theme-color-functions
`bash`
npx @mui/codemod@latest v7.0.0/theme-color-functions
Replace the usage of the alpha(), lighten(), and darken() functions from @mui/system/colorManipulator to use the theme object instead.
`diff
- import { alpha, lighten, darken } from '@mui/system/colorManipulator';
- alpha(theme.palette.primary.main, 0.8)
+ theme.alpha((theme.vars || theme).palette.primary.main, 0.8)
- lighten(theme.palette.primary.main, 0.1)
+ theme.lighten(theme.palette.primary.main, 0.1)
- darken(theme.palette.primary.main, 0.3)
+ theme.darken(theme.palette.primary.main, 0.3)
`
#### grid-props
`bash`
npx @mui/codemod v7.0.0/grid-props
Updates the usage of the @mui/material/Grid, @mui/system/Grid, and @mui/joy/Grid components to their updated APIs.
`diff`
- sm={6}
- xsOffset={2}
- smOffset={3}
+ size={{ xs: 12, sm: 6 }}
+ offset={{ xs: 2, sm: 3 }}
/>
You can provide the theme breakpoints via options, for example, --jscodeshift='--muiBreakpoints=mobile,desktop', to use your custom breakpoints in the transformation.
`bash`
npx @mui/codemod v7.0.0/grid-props
`diff`
-
+
#### lab-removed-components
`bash`
npx @mui/codemod v7.0.0/lab-removed-components
Update the import of the following components and hook moved from @mui/lab to @mui/material:
- Alert
- AlertTitle
- Autocomplete
- AvatarGroup
- Pagination
- PaginationItem
- Rating
- Skeleton
- SpeedDial
- SpeedDialAction
- SpeedDialIcon
- ToggleButton
- ToggleButtonGroup
- usePagination
It updates named imports from top-level @mui/lab:
`diff`
- import { Alert } from '@mui/lab';
+ import { Alert } from '@mui/material';
As well as default and named imports from component-level files:
`diff`
- import Alert, { alertClasses } from '@mui/lab/Alert';
+ import Alert, { alertClasses } from '@mui/material/Alert';
#### input-label-size-normal-medium
Updates the InputLabel's size value from normal to medium.
`diff`
-
+
`bash`
npx @mui/codemod v7.0.0/input-label-size-normal-medium
You can find more details about this breaking change in the migration guide.
#### sx-prop
`bash`
npx @mui/codemod@latest v6.0.0/sx-prop
Update the usage of the sx prop to be compatible with @pigment-css/react.
`diff`
- backgroundColor: (theme) =>
- theme.palette.mode === 'light' ? theme.palette.grey[100] : theme.palette.grey[900],
- }}
+ sx={theme => ({
+ backgroundColor: theme.palette.grey[900],
+ ...theme.applyStyles("light", {
+ backgroundColor: theme.palette.grey[100]
+ })
+ })}
/>
#### system-props
`bash`
npx @mui/codemod@latest v6.0.0/system-props
Remove system props and add them to the sx prop.
`diff`
-
+
#### theme-v6
`bash`
npx @mui/codemod@latest v6.0.0/theme-v6
Update the theme creation from @mui/system@v5 to be compatible with @pigment-css/react.
- replace palette mode conditional with theme.applyStyles()ownerState
- replace with variants
- move theme variants to the root slot
``diff
createTheme({
components: {
MuiButton: {
- variants: [
- {
- props: { color: 'primary' },
-