>;
diff --git a/packages/mui-joy/src/Option/OptionProps.ts b/packages/mui-joy/src/Option/OptionProps.ts
index e13575dfa2bcd3..6466898f1f634a 100644
--- a/packages/mui-joy/src/Option/OptionProps.ts
+++ b/packages/mui-joy/src/Option/OptionProps.ts
@@ -48,7 +48,7 @@ export interface OptionTypeMap {
* A text representation of the option's content.
* Used for keyboard text navigation matching.
*/
- label?: string | React.ReactElement;
+ label?: string | React.ReactElement;
/**
* The [global variant](https://mui.com/joy-ui/main-features/global-variants/) to use.
* @default 'plain'
@@ -100,5 +100,5 @@ export interface OptionOwnerState extends ApplyColorInversion = ((
props: OverrideProps, 'a'>,
-) => JSX.Element) &
+) => React.JSX.Element) &
OverridableComponent>;
diff --git a/packages/mui-joy/src/Select/Select.tsx b/packages/mui-joy/src/Select/Select.tsx
index 017fd87c2c348e..5a4db947b53849 100644
--- a/packages/mui-joy/src/Select/Select.tsx
+++ b/packages/mui-joy/src/Select/Select.tsx
@@ -626,12 +626,12 @@ interface SelectComponent {
component: C;
multiple?: Multiple;
} & OverrideProps, C>,
- ): JSX.Element | null;
+ ): React.JSX.Element | null;
(
props: {
multiple?: Multiple;
} & DefaultComponentProps>,
- ): JSX.Element | null;
+ ): React.JSX.Element | null;
propTypes?: any;
}
diff --git a/packages/mui-joy/src/Snackbar/Snackbar.test.tsx b/packages/mui-joy/src/Snackbar/Snackbar.test.tsx
index e0041cbe6e5ab1..2d9fdc6c2173a3 100644
--- a/packages/mui-joy/src/Snackbar/Snackbar.test.tsx
+++ b/packages/mui-joy/src/Snackbar/Snackbar.test.tsx
@@ -19,7 +19,7 @@ describe('Joy ', () => {
* We have to defer the effect manually like `useEffect` would so we have to flush the effect manually instead of relying on `act()`.
* React bug: https://github.com/facebook/react/issues/20074
*/
- function render(...args: [React.ReactElement]) {
+ function render(...args: [React.ReactElement]) {
const result = clientRender(...args);
clock.tick(0);
return result;
diff --git a/packages/mui-joy/src/ToggleButtonGroup/ToggleButtonGroup.tsx b/packages/mui-joy/src/ToggleButtonGroup/ToggleButtonGroup.tsx
index 54564bcc9c78b2..85282d67ef56aa 100644
--- a/packages/mui-joy/src/ToggleButtonGroup/ToggleButtonGroup.tsx
+++ b/packages/mui-joy/src/ToggleButtonGroup/ToggleButtonGroup.tsx
@@ -193,10 +193,10 @@ interface ToggleButtonGroupComponent {
*/
component: C;
} & OverrideProps, C>,
- ): JSX.Element | null;
+ ): React.JSX.Element | null;
(
props: DefaultComponentProps>,
- ): JSX.Element | null;
+ ): React.JSX.Element | null;
propTypes?: any;
}
diff --git a/packages/mui-joy/src/Tooltip/TooltipProps.ts b/packages/mui-joy/src/Tooltip/TooltipProps.ts
index bd01a316186c3c..f76a50e775fd86 100644
--- a/packages/mui-joy/src/Tooltip/TooltipProps.ts
+++ b/packages/mui-joy/src/Tooltip/TooltipProps.ts
@@ -47,7 +47,7 @@ export interface TooltipTypeMap {
/**
* Tooltip reference element.
*/
- children: React.ReactElement;
+ children: React.ReactElement;
/**
* The color of the component. It supports those theme colors that make sense for this component.
* @default 'neutral'
diff --git a/packages/mui-joy/src/Typography/Typography.spec.tsx b/packages/mui-joy/src/Typography/Typography.spec.tsx
index 87059cd77ed56c..c85d02d5e2ebc2 100644
--- a/packages/mui-joy/src/Typography/Typography.spec.tsx
+++ b/packages/mui-joy/src/Typography/Typography.spec.tsx
@@ -6,7 +6,7 @@ import Typography, { TypographyOwnerState } from '@mui/joy/Typography';
Text
;
-function Link(props: JSX.IntrinsicElements['a']) {
+function Link(props: React.JSX.IntrinsicElements['a']) {
return ;
}
diff --git a/packages/mui-joy/src/Typography/Typography.tsx b/packages/mui-joy/src/Typography/Typography.tsx
index e77423e8c6400e..dd520cde4d4d3b 100644
--- a/packages/mui-joy/src/Typography/Typography.tsx
+++ b/packages/mui-joy/src/Typography/Typography.tsx
@@ -250,8 +250,8 @@ const Typography = React.forwardRef(function Typography(inProps, ref) {
)}
{hasSkeleton
- ? React.cloneElement(children as React.ReactElement, {
- variant: (children as React.ReactElement).props.variant || 'inline',
+ ? React.cloneElement(children as React.ReactElement, {
+ variant: (children as React.ReactElement).props.variant || 'inline',
})
: children}
{endDecorator && {endDecorator}}
diff --git a/packages/mui-joy/test/describeConformance.ts b/packages/mui-joy/test/describeConformance.ts
index f82c1e1e0215b7..ade3a04028c76a 100644
--- a/packages/mui-joy/test/describeConformance.ts
+++ b/packages/mui-joy/test/describeConformance.ts
@@ -6,7 +6,7 @@ import { ThemeProvider } from '@mui/joy/styles';
import { createTheme } from '@mui/system';
export default function describeConformance(
- minimalElement: React.ReactElement,
+ minimalElement: React.ReactElement,
getOptions: () => ConformanceOptions,
) {
function getOptionsWithDefaults() {
diff --git a/packages/mui-lab/package.json b/packages/mui-lab/package.json
index 9f14cb509ba02d..2e026b9228f721 100644
--- a/packages/mui-lab/package.json
+++ b/packages/mui-lab/package.json
@@ -40,7 +40,7 @@
"typescript": "tsc -p tsconfig.json"
},
"dependencies": {
- "@babel/runtime": "^7.24.5",
+ "@babel/runtime": "^7.24.6",
"@mui/base": "workspace:*",
"@mui/system": "workspace:^",
"@mui/types": "workspace:^",
diff --git a/packages/mui-lab/src/CalendarPicker/CalendarPicker.tsx b/packages/mui-lab/src/CalendarPicker/CalendarPicker.tsx
index d1b244336688e5..f5999beccc8488 100644
--- a/packages/mui-lab/src/CalendarPicker/CalendarPicker.tsx
+++ b/packages/mui-lab/src/CalendarPicker/CalendarPicker.tsx
@@ -23,7 +23,7 @@ const warn = () => {
type CalendarPickerComponent = ((
props: CalendarPickerProps & React.RefAttributes,
-) => JSX.Element) & { propTypes?: any };
+) => React.JSX.Element) & { propTypes?: any };
/**
* @deprecated The CalendarPicker component was moved from `@mui/lab` to `@mui/x-date-pickers`. More information about this migration on our blog: https://mui.com/blog/lab-date-pickers-to-mui-x/.
diff --git a/packages/mui-lab/src/CalendarPickerSkeleton/CalendarPickerSkeleton.tsx b/packages/mui-lab/src/CalendarPickerSkeleton/CalendarPickerSkeleton.tsx
index 5a5eedc42e23ba..1fdb678f251d1a 100644
--- a/packages/mui-lab/src/CalendarPickerSkeleton/CalendarPickerSkeleton.tsx
+++ b/packages/mui-lab/src/CalendarPickerSkeleton/CalendarPickerSkeleton.tsx
@@ -23,7 +23,7 @@ const warn = () => {
type CalendarPickerSkeletonComponent = ((
props: CalendarPickerSkeletonProps & React.RefAttributes,
-) => JSX.Element) & { propTypes?: any };
+) => React.JSX.Element) & { propTypes?: any };
/**
* @deprecated The CalendarPickerSkeleton component was moved from `@mui/lab` to `@mui/x-date-pickers`. More information about this migration on our blog: https://mui.com/blog/lab-date-pickers-to-mui-x/.
diff --git a/packages/mui-lab/src/ClockPicker/ClockPicker.tsx b/packages/mui-lab/src/ClockPicker/ClockPicker.tsx
index ff9f19395863cb..47187af85eee8c 100644
--- a/packages/mui-lab/src/ClockPicker/ClockPicker.tsx
+++ b/packages/mui-lab/src/ClockPicker/ClockPicker.tsx
@@ -23,7 +23,7 @@ const warn = () => {
type ClockPickerComponent = ((
props: ClockPickerProps & React.RefAttributes,
-) => JSX.Element) & { propTypes?: any };
+) => React.JSX.Element) & { propTypes?: any };
/**
* @deprecated The ClockPicker component was moved from `@mui/lab` to `@mui/x-date-pickers`. More information about this migration on our blog: https://mui.com/blog/lab-date-pickers-to-mui-x/.
diff --git a/packages/mui-lab/src/DatePicker/DatePicker.tsx b/packages/mui-lab/src/DatePicker/DatePicker.tsx
index de1b2d83ea164c..a684d79cae4e1f 100644
--- a/packages/mui-lab/src/DatePicker/DatePicker.tsx
+++ b/packages/mui-lab/src/DatePicker/DatePicker.tsx
@@ -23,7 +23,7 @@ const warn = () => {
type DatePickerComponent = ((
props: DatePickerProps & React.RefAttributes,
-) => JSX.Element) & { propTypes?: any };
+) => React.JSX.Element) & { propTypes?: any };
/**
* @ignore - do not document.
diff --git a/packages/mui-lab/src/DateRangePicker/DateRangePicker.ts b/packages/mui-lab/src/DateRangePicker/DateRangePicker.ts
index a0e08d393c6d44..24c4bfc4352984 100644
--- a/packages/mui-lab/src/DateRangePicker/DateRangePicker.ts
+++ b/packages/mui-lab/src/DateRangePicker/DateRangePicker.ts
@@ -23,7 +23,7 @@ const warn = () => {
type DateRangePickerComponent = ((
props: DateRangePickerProps & React.RefAttributes,
-) => JSX.Element) & { propTypes?: any };
+) => React.JSX.Element) & { propTypes?: any };
/**
* @deprecated The DateRangePicker component was moved from `@mui/lab` to `@mui/x-date-pickers-pro`. More information about this migration on our blog: https://mui.com/blog/lab-date-pickers-to-mui-x/.
diff --git a/packages/mui-lab/src/DateRangePickerDay/DateRangePickerDay.ts b/packages/mui-lab/src/DateRangePickerDay/DateRangePickerDay.ts
index 2b2c3db7ed6912..f7a27e2bbb22f7 100644
--- a/packages/mui-lab/src/DateRangePickerDay/DateRangePickerDay.ts
+++ b/packages/mui-lab/src/DateRangePickerDay/DateRangePickerDay.ts
@@ -22,7 +22,7 @@ const warn = () => {
type DateRangePickerDayComponent = ((
props: DateRangePickerDayProps & React.RefAttributes,
-) => JSX.Element) & { propTypes?: any };
+) => React.JSX.Element) & { propTypes?: any };
/**
* @deprecated The DateRangePickerDay component was moved from `@mui/lab` to `@mui/x-date-pickers-pro`. More information about this migration on our blog: https://mui.com/blog/lab-date-pickers-to-mui-x/.
diff --git a/packages/mui-lab/src/DateTimePicker/DateTimePicker.tsx b/packages/mui-lab/src/DateTimePicker/DateTimePicker.tsx
index c65c2db4a7d155..aefd8cde158008 100644
--- a/packages/mui-lab/src/DateTimePicker/DateTimePicker.tsx
+++ b/packages/mui-lab/src/DateTimePicker/DateTimePicker.tsx
@@ -23,7 +23,7 @@ const warn = () => {
type DateTimePickerComponent = ((
props: DateTimePickerProps & React.RefAttributes,
-) => JSX.Element) & { propTypes?: any };
+) => React.JSX.Element) & { propTypes?: any };
/**
* @deprecated The DateTimePicker component was moved from `@mui/lab` to `@mui/x-date-pickers`. More information about this migration on our blog: https://mui.com/blog/lab-date-pickers-to-mui-x/.
diff --git a/packages/mui-lab/src/DesktopDatePicker/DesktopDatePicker.tsx b/packages/mui-lab/src/DesktopDatePicker/DesktopDatePicker.tsx
index 23bfe7b4a463b8..0d48b7a1847e35 100644
--- a/packages/mui-lab/src/DesktopDatePicker/DesktopDatePicker.tsx
+++ b/packages/mui-lab/src/DesktopDatePicker/DesktopDatePicker.tsx
@@ -23,7 +23,7 @@ const warn = () => {
type DesktopDatePickerComponent = ((
props: DesktopDatePickerProps & React.RefAttributes,
-) => JSX.Element) & { propTypes?: any };
+) => React.JSX.Element) & { propTypes?: any };
/**
* @deprecated The DesktopDatePicker component was moved from `@mui/lab` to `@mui/x-date-pickers`. More information about this migration on our blog: https://mui.com/blog/lab-date-pickers-to-mui-x/.
diff --git a/packages/mui-lab/src/DesktopDateRangePicker/DesktopDateRangePicker.ts b/packages/mui-lab/src/DesktopDateRangePicker/DesktopDateRangePicker.ts
index bc5697f3f97cdd..b9343203786669 100644
--- a/packages/mui-lab/src/DesktopDateRangePicker/DesktopDateRangePicker.ts
+++ b/packages/mui-lab/src/DesktopDateRangePicker/DesktopDateRangePicker.ts
@@ -23,7 +23,7 @@ const warn = () => {
type DesktopDateRangePickerComponent = ((
props: DesktopDateRangePickerProps & React.RefAttributes,
-) => JSX.Element) & { propTypes?: any };
+) => React.JSX.Element) & { propTypes?: any };
/**
* @deprecated The DesktopDateRangePicker component was moved from `@mui/lab` to `@mui/x-date-pickers-pro`. More information about this migration on our blog: https://mui.com/blog/lab-date-pickers-to-mui-x/.
diff --git a/packages/mui-lab/src/DesktopDateTimePicker/DesktopDateTimePicker.tsx b/packages/mui-lab/src/DesktopDateTimePicker/DesktopDateTimePicker.tsx
index fc3f559a4a3ff2..c7cc3a097b1a7d 100644
--- a/packages/mui-lab/src/DesktopDateTimePicker/DesktopDateTimePicker.tsx
+++ b/packages/mui-lab/src/DesktopDateTimePicker/DesktopDateTimePicker.tsx
@@ -23,7 +23,7 @@ const warn = () => {
type DesktopDateTimePickerComponent = ((
props: DesktopDateTimePickerProps & React.RefAttributes,
-) => JSX.Element) & { propTypes?: any };
+) => React.JSX.Element) & { propTypes?: any };
/**
* @deprecated The DesktopDateTimePicker component was moved from `@mui/lab` to `@mui/x-date-pickers`. More information about this migration on our blog: https://mui.com/blog/lab-date-pickers-to-mui-x/.
diff --git a/packages/mui-lab/src/DesktopTimePicker/DesktopTimePicker.tsx b/packages/mui-lab/src/DesktopTimePicker/DesktopTimePicker.tsx
index f09c774b9bf6e7..cb9be262d70210 100644
--- a/packages/mui-lab/src/DesktopTimePicker/DesktopTimePicker.tsx
+++ b/packages/mui-lab/src/DesktopTimePicker/DesktopTimePicker.tsx
@@ -23,7 +23,7 @@ const warn = () => {
type DesktopTimePickerComponent = ((
props: DesktopTimePickerProps & React.RefAttributes,
-) => JSX.Element) & { propTypes?: any };
+) => React.JSX.Element) & { propTypes?: any };
/**
* @deprecated The DesktopTimePicker component was moved from `@mui/lab` to `@mui/x-date-pickers-pro`. More information about this migration on our blog: https://mui.com/blog/lab-date-pickers-to-mui-x/.
diff --git a/packages/mui-lab/src/LocalizationProvider/LocalizationProvider.tsx b/packages/mui-lab/src/LocalizationProvider/LocalizationProvider.tsx
index 2e3ead720c4300..8b662afd80a00f 100644
--- a/packages/mui-lab/src/LocalizationProvider/LocalizationProvider.tsx
+++ b/packages/mui-lab/src/LocalizationProvider/LocalizationProvider.tsx
@@ -22,7 +22,7 @@ const warn = () => {
type LocalizationProviderComponent = ((
props: LocalizationProviderProps & React.RefAttributes,
-) => JSX.Element) & { propTypes?: any };
+) => React.JSX.Element) & { propTypes?: any };
/**
* @deprecated The LocalizationProvider component was moved from `@mui/lab` to `@mui/x-date-pickers`. More information about this migration on our blog: https://mui.com/blog/lab-date-pickers-to-mui-x/.
diff --git a/packages/mui-lab/src/MobileDatePicker/MobileDatePicker.tsx b/packages/mui-lab/src/MobileDatePicker/MobileDatePicker.tsx
index f0b0f9defa6395..d2fb825a73f84e 100644
--- a/packages/mui-lab/src/MobileDatePicker/MobileDatePicker.tsx
+++ b/packages/mui-lab/src/MobileDatePicker/MobileDatePicker.tsx
@@ -23,7 +23,7 @@ const warn = () => {
type MobileDatePickerComponent = ((
props: MobileDatePickerProps & React.RefAttributes,
-) => JSX.Element) & { propTypes?: any };
+) => React.JSX.Element) & { propTypes?: any };
/**
* @deprecated The MobileDatePicker component was moved from `@mui/lab` to `@mui/x-date-pickers`. More information about this migration on our blog: https://mui.com/blog/lab-date-pickers-to-mui-x/.
diff --git a/packages/mui-lab/src/MobileDateRangePicker/MobileDateRangePicker.ts b/packages/mui-lab/src/MobileDateRangePicker/MobileDateRangePicker.ts
index a5a9768e1e57aa..d8609f6a180f4e 100644
--- a/packages/mui-lab/src/MobileDateRangePicker/MobileDateRangePicker.ts
+++ b/packages/mui-lab/src/MobileDateRangePicker/MobileDateRangePicker.ts
@@ -23,7 +23,7 @@ const warn = () => {
type MobileDateRangePickerComponent = ((
props: MobileDateRangePickerProps & React.RefAttributes,
-) => JSX.Element) & { propTypes?: any };
+) => React.JSX.Element) & { propTypes?: any };
/**
* @deprecated The MobileDateRangePicker component was moved from `@mui/lab` to `@mui/x-date-pickers-pro`. More information about this migration on our blog: https://mui.com/blog/lab-date-pickers-to-mui-x/.
diff --git a/packages/mui-lab/src/MobileDateTimePicker/MobileDateTimePicker.tsx b/packages/mui-lab/src/MobileDateTimePicker/MobileDateTimePicker.tsx
index 6a24b35b216f53..992337cf359ec3 100644
--- a/packages/mui-lab/src/MobileDateTimePicker/MobileDateTimePicker.tsx
+++ b/packages/mui-lab/src/MobileDateTimePicker/MobileDateTimePicker.tsx
@@ -23,7 +23,7 @@ const warn = () => {
type MobileDateTimePickerComponent = ((
props: MobileDateTimePickerProps & React.RefAttributes,
-) => JSX.Element) & { propTypes?: any };
+) => React.JSX.Element) & { propTypes?: any };
/**
* @deprecated The MobileDateTimePicker component was moved from `@mui/lab` to `@mui/x-date-pickers`. More information about this migration on our blog: https://mui.com/blog/lab-date-pickers-to-mui-x/.
diff --git a/packages/mui-lab/src/MobileTimePicker/MobileTimePicker.tsx b/packages/mui-lab/src/MobileTimePicker/MobileTimePicker.tsx
index aef9f13eb0f734..b59f3e8066f2fc 100644
--- a/packages/mui-lab/src/MobileTimePicker/MobileTimePicker.tsx
+++ b/packages/mui-lab/src/MobileTimePicker/MobileTimePicker.tsx
@@ -23,7 +23,7 @@ const warn = () => {
type MobileTimePickerComponent = ((
props: MobileTimePickerProps & React.RefAttributes,
-) => JSX.Element) & { propTypes?: any };
+) => React.JSX.Element) & { propTypes?: any };
/**
* @deprecated The MobileTimePicker component was moved from `@mui/lab` to `@mui/x-date-pickers`. More information about this migration on our blog: https://mui.com/blog/lab-date-pickers-to-mui-x/.
diff --git a/packages/mui-lab/src/MonthPicker/MonthPicker.tsx b/packages/mui-lab/src/MonthPicker/MonthPicker.tsx
index baa3643955e109..bfd784b256e06b 100644
--- a/packages/mui-lab/src/MonthPicker/MonthPicker.tsx
+++ b/packages/mui-lab/src/MonthPicker/MonthPicker.tsx
@@ -23,7 +23,7 @@ const warn = () => {
type MonthPickerComponent = ((
props: MonthPickerProps & React.RefAttributes,
-) => JSX.Element) & { propTypes?: any };
+) => React.JSX.Element) & { propTypes?: any };
/**
* @deprecated The MonthPicker component was moved from `@mui/lab` to `@mui/x-date-pickers`. More information about this migration on our blog: https://mui.com/blog/lab-date-pickers-to-mui-x/.
diff --git a/packages/mui-lab/src/PickersDay/PickersDay.tsx b/packages/mui-lab/src/PickersDay/PickersDay.tsx
index dbd13583b7e868..d4ec6e02fe99e1 100644
--- a/packages/mui-lab/src/PickersDay/PickersDay.tsx
+++ b/packages/mui-lab/src/PickersDay/PickersDay.tsx
@@ -23,7 +23,7 @@ const warn = () => {
type PickersDayComponent = ((
props: PickersDayProps & React.RefAttributes,
-) => JSX.Element) & { propTypes?: any };
+) => React.JSX.Element) & { propTypes?: any };
/**
* @deprecated The PickersDay component was moved from `@mui/lab` to `@mui/x-date-pickers`. More information about this migration on our blog: https://mui.com/blog/lab-date-pickers-to-mui-x/.
diff --git a/packages/mui-lab/src/StaticDatePicker/StaticDatePicker.tsx b/packages/mui-lab/src/StaticDatePicker/StaticDatePicker.tsx
index 07aedfa8e1c201..e25bd78b8df689 100644
--- a/packages/mui-lab/src/StaticDatePicker/StaticDatePicker.tsx
+++ b/packages/mui-lab/src/StaticDatePicker/StaticDatePicker.tsx
@@ -23,7 +23,7 @@ const warn = () => {
type StaticDatePickerComponent = ((
props: StaticDatePickerProps & React.RefAttributes,
-) => JSX.Element) & { propTypes?: any };
+) => React.JSX.Element) & { propTypes?: any };
/**
* @deprecated The StaticDatePicker component was moved from `@mui/lab` to `@mui/x-date-pickers`. More information about this migration on our blog: https://mui.com/blog/lab-date-pickers-to-mui-x/.
diff --git a/packages/mui-lab/src/StaticDateRangePicker/StaticDateRangePicker.ts b/packages/mui-lab/src/StaticDateRangePicker/StaticDateRangePicker.ts
index ab9e86fe8bcfa0..51954ef4cabaa1 100644
--- a/packages/mui-lab/src/StaticDateRangePicker/StaticDateRangePicker.ts
+++ b/packages/mui-lab/src/StaticDateRangePicker/StaticDateRangePicker.ts
@@ -23,7 +23,7 @@ const warn = () => {
type StaticDateRangePickerComponent = ((
props: StaticDateRangePickerProps & React.RefAttributes,
-) => JSX.Element) & { propTypes?: any };
+) => React.JSX.Element) & { propTypes?: any };
/**
* @deprecated The StaticDateRangePicker component was moved from `@mui/lab` to `@mui/x-date-pickers-pro`. More information about this migration on our blog: https://mui.com/blog/lab-date-pickers-to-mui-x/.
diff --git a/packages/mui-lab/src/StaticDateTimePicker/StaticDateTimePicker.tsx b/packages/mui-lab/src/StaticDateTimePicker/StaticDateTimePicker.tsx
index e2adcb889202ea..cee2ec9b345afc 100644
--- a/packages/mui-lab/src/StaticDateTimePicker/StaticDateTimePicker.tsx
+++ b/packages/mui-lab/src/StaticDateTimePicker/StaticDateTimePicker.tsx
@@ -23,7 +23,7 @@ const warn = () => {
type StaticDateTimePickerComponent = ((
props: StaticDateTimePickerProps & React.RefAttributes,
-) => JSX.Element) & { propTypes?: any };
+) => React.JSX.Element) & { propTypes?: any };
/**
* @deprecated The StaticDateTimePicker component was moved from `@mui/lab` to `@mui/x-date-pickers`. More information about this migration on our blog: https://mui.com/blog/lab-date-pickers-to-mui-x/.
diff --git a/packages/mui-lab/src/StaticTimePicker/StaticTimePicker.tsx b/packages/mui-lab/src/StaticTimePicker/StaticTimePicker.tsx
index 743b8168c0d2b2..d09364b5804bd3 100644
--- a/packages/mui-lab/src/StaticTimePicker/StaticTimePicker.tsx
+++ b/packages/mui-lab/src/StaticTimePicker/StaticTimePicker.tsx
@@ -23,7 +23,7 @@ const warn = () => {
type StaticTimePickerComponent = ((
props: StaticTimePickerProps & React.RefAttributes,
-) => JSX.Element) & { propTypes?: any };
+) => React.JSX.Element) & { propTypes?: any };
/**
* @deprecated The StaticTimePicker component was moved from `@mui/lab` to `@mui/x-date-pickers`. More information about this migration on our blog: https://mui.com/blog/lab-date-pickers-to-mui-x/.
diff --git a/packages/mui-lab/src/TabContext/TabContext.d.ts b/packages/mui-lab/src/TabContext/TabContext.d.ts
index b3db92467f8936..38274ad8257053 100644
--- a/packages/mui-lab/src/TabContext/TabContext.d.ts
+++ b/packages/mui-lab/src/TabContext/TabContext.d.ts
@@ -25,7 +25,7 @@ export interface TabContextProps {
*
* - [TabContext API](https://mui.com/material-ui/api/tab-context/)
*/
-export default function TabContext(props: TabContextProps): JSX.Element;
+export default function TabContext(props: TabContextProps): React.JSX.Element;
export function useTabContext(): TabContextValue | null;
export function getPanelId(context: TabContextValue, tabValue: string): string;
export function getTabId(context: TabContextValue, tabValue: string): string;
diff --git a/packages/mui-lab/src/TabPanel/TabPanel.d.ts b/packages/mui-lab/src/TabPanel/TabPanel.d.ts
index 378190b80f60e7..47905950704896 100644
--- a/packages/mui-lab/src/TabPanel/TabPanel.d.ts
+++ b/packages/mui-lab/src/TabPanel/TabPanel.d.ts
@@ -39,4 +39,4 @@ export interface TabPanelProps extends StandardProps {
type TimePickerComponent = ((
props: TimePickerProps & React.RefAttributes,
-) => JSX.Element) & { propTypes?: any };
+) => React.JSX.Element) & { propTypes?: any };
/**
* @deprecated The StaticTimePicker component was moved from `@mui/lab` to `@mui/x-date-pickers`. More information about this migration on our blog: https://mui.com/blog/lab-date-pickers-to-mui-x/.
diff --git a/packages/mui-lab/src/TimelineConnector/TimelineConnector.d.ts b/packages/mui-lab/src/TimelineConnector/TimelineConnector.d.ts
index df54d02189e8cb..168b023cece9c2 100644
--- a/packages/mui-lab/src/TimelineConnector/TimelineConnector.d.ts
+++ b/packages/mui-lab/src/TimelineConnector/TimelineConnector.d.ts
@@ -30,4 +30,4 @@ export interface TimelineConnectorProps
*
* - [TimelineConnector API](https://mui.com/material-ui/api/timeline-connector/)
*/
-export default function TimelineConnector(props: TimelineConnectorProps): JSX.Element;
+export default function TimelineConnector(props: TimelineConnectorProps): React.JSX.Element;
diff --git a/packages/mui-lab/src/TimelineContent/TimelineContent.d.ts b/packages/mui-lab/src/TimelineContent/TimelineContent.d.ts
index a7991cd1aba397..6bfe5fe24e9ffd 100644
--- a/packages/mui-lab/src/TimelineContent/TimelineContent.d.ts
+++ b/packages/mui-lab/src/TimelineContent/TimelineContent.d.ts
@@ -30,4 +30,4 @@ export interface TimelineContentProps extends StandardProps {
* - [TimelineContent API](https://mui.com/material-ui/api/timeline-content/)
* - inherits [Typography API](https://mui.com/material-ui/api/typography/)
*/
-export default function TimelineContent(props: TimelineContentProps): JSX.Element;
+export default function TimelineContent(props: TimelineContentProps): React.JSX.Element;
diff --git a/packages/mui-lab/src/TimelineDot/TimelineDot.d.ts b/packages/mui-lab/src/TimelineDot/TimelineDot.d.ts
index 2109ee9592186c..1d04d9caacd8f4 100644
--- a/packages/mui-lab/src/TimelineDot/TimelineDot.d.ts
+++ b/packages/mui-lab/src/TimelineDot/TimelineDot.d.ts
@@ -47,4 +47,4 @@ export interface TimelineDotProps extends StandardProps JSX.Element) & {
+declare const TimelineOppositeContent: ((
+ props: TimelineOppositeContentProps,
+) => React.JSX.Element) & {
muiName: string;
};
diff --git a/packages/mui-lab/src/TimelineSeparator/TimelineSeparator.d.ts b/packages/mui-lab/src/TimelineSeparator/TimelineSeparator.d.ts
index 4f851adbfa3f7e..3f5b950647e812 100644
--- a/packages/mui-lab/src/TimelineSeparator/TimelineSeparator.d.ts
+++ b/packages/mui-lab/src/TimelineSeparator/TimelineSeparator.d.ts
@@ -30,4 +30,4 @@ export interface TimelineSeparatorProps
*
* - [TimelineSeparator API](https://mui.com/material-ui/api/timeline-separator/)
*/
-export default function TimelineSeparator(props: TimelineSeparatorProps): JSX.Element;
+export default function TimelineSeparator(props: TimelineSeparatorProps): React.JSX.Element;
diff --git a/packages/mui-lab/src/TreeItem/TreeItem.tsx b/packages/mui-lab/src/TreeItem/TreeItem.tsx
index 5920ce65567cae..6a202115c04d23 100644
--- a/packages/mui-lab/src/TreeItem/TreeItem.tsx
+++ b/packages/mui-lab/src/TreeItem/TreeItem.tsx
@@ -22,7 +22,7 @@ const warn = () => {
type TreeItemComponent = ((
props: TreeItemProps & React.RefAttributes,
-) => JSX.Element) & { propTypes?: any };
+) => React.JSX.Element) & { propTypes?: any };
/**
* @deprecated The TreeItem component was moved from `@mui/lab` to `@mui/x-tree-view`. More information about this migration on our blog: https://mui.com/blog/lab-tree-view-to-mui-x/.
diff --git a/packages/mui-lab/src/TreeView/TreeView.tsx b/packages/mui-lab/src/TreeView/TreeView.tsx
index a9baef3618f4ba..cc7b3000f58154 100644
--- a/packages/mui-lab/src/TreeView/TreeView.tsx
+++ b/packages/mui-lab/src/TreeView/TreeView.tsx
@@ -23,7 +23,7 @@ const warn = () => {
type TreeViewComponent = ((
props: TreeViewProps & React.RefAttributes,
-) => JSX.Element) & { propTypes?: any };
+) => React.JSX.Element) & { propTypes?: any };
/**
* @deprecated The TreeView component was moved from `@mui/lab` to `@mui/x-tree-view`. More information about this migration on our blog: https://mui.com/blog/lab-tree-view-to-mui-x/.
diff --git a/packages/mui-lab/src/YearPicker/YearPicker.tsx b/packages/mui-lab/src/YearPicker/YearPicker.tsx
index b83ba6b10812dd..9f67498da59c8d 100644
--- a/packages/mui-lab/src/YearPicker/YearPicker.tsx
+++ b/packages/mui-lab/src/YearPicker/YearPicker.tsx
@@ -23,7 +23,7 @@ const warn = () => {
type YearPickerComponent = ((
props: YearPickerProps & React.RefAttributes,
-) => JSX.Element) & { propTypes?: any };
+) => React.JSX.Element) & { propTypes?: any };
/**
* @deprecated The YearPicker component was moved from `@mui/lab` to `@mui/x-date-pickers`. More information about this migration on our blog: https://mui.com/blog/lab-date-pickers-to-mui-x/.
diff --git a/packages/mui-lab/test/describeConformance.ts b/packages/mui-lab/test/describeConformance.ts
index 633cf72e03ebbe..4715d91bad6817 100644
--- a/packages/mui-lab/test/describeConformance.ts
+++ b/packages/mui-lab/test/describeConformance.ts
@@ -5,7 +5,7 @@ import {
import { ThemeProvider, createTheme } from '@mui/material/styles';
export default function describeConformance(
- minimalElement: React.ReactElement,
+ minimalElement: React.ReactElement,
getOptions: () => ConformanceOptions,
) {
function getOptionsWithDefaults() {
diff --git a/packages/mui-material-nextjs/package.json b/packages/mui-material-nextjs/package.json
index e4d07fc672a085..36263785a85244 100644
--- a/packages/mui-material-nextjs/package.json
+++ b/packages/mui-material-nextjs/package.json
@@ -36,7 +36,7 @@
"typescript": "tsc -p tsconfig.json"
},
"dependencies": {
- "@babel/runtime": "^7.24.5"
+ "@babel/runtime": "^7.24.6"
},
"devDependencies": {
"@emotion/cache": "^11.11.0",
diff --git a/packages/mui-material-nextjs/src/v13-pagesRouter/pagesRouterV13Document.tsx b/packages/mui-material-nextjs/src/v13-pagesRouter/pagesRouterV13Document.tsx
index c8c385ea74ab10..2bc922d62dd059 100644
--- a/packages/mui-material-nextjs/src/v13-pagesRouter/pagesRouterV13Document.tsx
+++ b/packages/mui-material-nextjs/src/v13-pagesRouter/pagesRouterV13Document.tsx
@@ -9,7 +9,7 @@ import createEmotionCache from './createCache';
interface Plugin {
enhanceApp: (
App: React.ComponentType>,
- ) => (props: any) => JSX.Element;
+ ) => (props: any) => React.JSX.Element;
resolveProps: (initialProps: DocumentInitialProps) => Promise;
}
@@ -37,7 +37,7 @@ export function createGetInitialProps(plugins: Plugin[]) {
}
export interface DocumentHeadTagsProps {
- emotionStyleTags: React.ReactElement[];
+ emotionStyleTags: React.ReactElement[];
}
export function DocumentHeadTags(props: DocumentHeadTagsProps) {
diff --git a/packages/mui-material/package.json b/packages/mui-material/package.json
index f61bb88e72e63c..3610ded6e9449e 100644
--- a/packages/mui-material/package.json
+++ b/packages/mui-material/package.json
@@ -40,7 +40,7 @@
"typescript:module-augmentation": "node scripts/testModuleAugmentation.js"
},
"dependencies": {
- "@babel/runtime": "^7.24.5",
+ "@babel/runtime": "^7.24.6",
"@mui/base": "workspace:*",
"@mui/core-downloads-tracker": "workspace:^",
"@mui/system": "workspace:^",
diff --git a/packages/mui-material/src/AccordionActions/AccordionActions.d.ts b/packages/mui-material/src/AccordionActions/AccordionActions.d.ts
index 2e8b781355f70a..39c13ee770255f 100644
--- a/packages/mui-material/src/AccordionActions/AccordionActions.d.ts
+++ b/packages/mui-material/src/AccordionActions/AccordionActions.d.ts
@@ -33,4 +33,4 @@ export interface AccordionActionsProps extends StandardProps {
* - [AlertTitle API](https://mui.com/material-ui/api/alert-title/)
* - inherits [Typography API](https://mui.com/material-ui/api/typography/)
*/
-export default function AlertTitle(props: AlertTitleProps): JSX.Element;
+export default function AlertTitle(props: AlertTitleProps): React.JSX.Element;
diff --git a/packages/mui-material/src/Autocomplete/Autocomplete.d.ts b/packages/mui-material/src/Autocomplete/Autocomplete.d.ts
index cfc564954e847c..3119083dab2ef3 100644
--- a/packages/mui-material/src/Autocomplete/Autocomplete.d.ts
+++ b/packages/mui-material/src/Autocomplete/Autocomplete.d.ts
@@ -372,4 +372,4 @@ export default function Autocomplete<
ChipComponent extends React.ElementType = ChipTypeMap['defaultComponent'],
>(
props: AutocompleteProps,
-): JSX.Element;
+): React.JSX.Element;
diff --git a/packages/mui-material/src/AvatarGroup/AvatarGroup.d.ts b/packages/mui-material/src/AvatarGroup/AvatarGroup.d.ts
index ed052bbf48d468..e0f06ce925decd 100644
--- a/packages/mui-material/src/AvatarGroup/AvatarGroup.d.ts
+++ b/packages/mui-material/src/AvatarGroup/AvatarGroup.d.ts
@@ -92,4 +92,4 @@ export interface AvatarGroupProps extends StandardProps {
export type ExtendButton = ((
props: { href: string } & OverrideProps, 'a'>,
-) => JSX.Element) &
+) => React.JSX.Element) &
OverridableComponent>;
/**
diff --git a/packages/mui-material/src/ButtonBase/ButtonBase.d.ts b/packages/mui-material/src/ButtonBase/ButtonBase.d.ts
index af1edc9aa88849..53a65f79fc1920 100644
--- a/packages/mui-material/src/ButtonBase/ButtonBase.d.ts
+++ b/packages/mui-material/src/ButtonBase/ButtonBase.d.ts
@@ -105,7 +105,7 @@ export interface ExtendButtonBaseTypeMap {
export type ExtendButtonBase = ((
props: { href: string } & OverrideProps, 'a'>,
-) => JSX.Element) &
+) => React.JSX.Element) &
OverridableComponent>;
/**
diff --git a/packages/mui-material/src/CardActions/CardActions.d.ts b/packages/mui-material/src/CardActions/CardActions.d.ts
index 3258f2ca248e6d..eb5494dc0e0229 100644
--- a/packages/mui-material/src/CardActions/CardActions.d.ts
+++ b/packages/mui-material/src/CardActions/CardActions.d.ts
@@ -33,4 +33,4 @@ export interface CardActionsProps extends StandardProps,
- ): JSX.Element;
+ ): React.JSX.Element;
}
export type CardHeaderProps<
diff --git a/packages/mui-material/src/Checkbox/Checkbox.d.ts b/packages/mui-material/src/Checkbox/Checkbox.d.ts
index 8d3b3529cde81e..9d9d6ffca56d24 100644
--- a/packages/mui-material/src/Checkbox/Checkbox.d.ts
+++ b/packages/mui-material/src/Checkbox/Checkbox.d.ts
@@ -115,4 +115,4 @@ export interface CheckboxProps
* - [Checkbox API](https://mui.com/material-ui/api/checkbox/)
* - inherits [ButtonBase API](https://mui.com/material-ui/api/button-base/)
*/
-export default function Checkbox(props: CheckboxProps): JSX.Element;
+export default function Checkbox(props: CheckboxProps): React.JSX.Element;
diff --git a/packages/mui-material/src/Chip/Chip.d.ts b/packages/mui-material/src/Chip/Chip.d.ts
index 1b576bf9705a27..4db5e9ac779872 100644
--- a/packages/mui-material/src/Chip/Chip.d.ts
+++ b/packages/mui-material/src/Chip/Chip.d.ts
@@ -15,7 +15,7 @@ export interface ChipOwnProps {
/**
* The Avatar element to display.
*/
- avatar?: React.ReactElement;
+ avatar?: React.ReactElement;
/**
* This prop isn't supported.
* Use the `component` prop if you need to change the children structure.
@@ -47,7 +47,7 @@ export interface ChipOwnProps {
/**
* Override the default delete icon element. Shown only if `onDelete` is set.
*/
- deleteIcon?: React.ReactElement;
+ deleteIcon?: React.ReactElement;
/**
* If `true`, the component is disabled.
* @default false
@@ -56,7 +56,7 @@ export interface ChipOwnProps {
/**
* Icon element.
*/
- icon?: React.ReactElement;
+ icon?: React.ReactElement;
/**
* The content of the component.
*/
diff --git a/packages/mui-material/src/Chip/Chip.test.js b/packages/mui-material/src/Chip/Chip.test.js
index 6af617103ddb7d..1e47fa38beba73 100644
--- a/packages/mui-material/src/Chip/Chip.test.js
+++ b/packages/mui-material/src/Chip/Chip.test.js
@@ -11,12 +11,7 @@ import {
} from '@mui-internal/test-utils';
import Avatar from '@mui/material/Avatar';
import Chip, { chipClasses as classes } from '@mui/material/Chip';
-import {
- ThemeProvider,
- createTheme,
- hexToRgb,
- experimental_extendTheme as extendTheme,
-} from '@mui/material/styles';
+import { ThemeProvider, createTheme, hexToRgb, extendTheme } from '@mui/material/styles';
import CheckBox from '../internal/svg-icons/CheckBox';
import defaultTheme from '../styles/defaultTheme';
import describeConformance from '../../test/describeConformance';
diff --git a/packages/mui-material/src/CircularProgress/CircularProgress.d.ts b/packages/mui-material/src/CircularProgress/CircularProgress.d.ts
index c0046a5b247e2b..31b99ab6a7273e 100644
--- a/packages/mui-material/src/CircularProgress/CircularProgress.d.ts
+++ b/packages/mui-material/src/CircularProgress/CircularProgress.d.ts
@@ -73,4 +73,4 @@ export interface CircularProgressProps
*
* - [CircularProgress API](https://mui.com/material-ui/api/circular-progress/)
*/
-export default function CircularProgress(props: CircularProgressProps): JSX.Element;
+export default function CircularProgress(props: CircularProgressProps): React.JSX.Element;
diff --git a/packages/mui-material/src/Collapse/Collapse.d.ts b/packages/mui-material/src/Collapse/Collapse.d.ts
index 2206f44019aefc..aa756bb779a3f7 100644
--- a/packages/mui-material/src/Collapse/Collapse.d.ts
+++ b/packages/mui-material/src/Collapse/Collapse.d.ts
@@ -69,4 +69,4 @@ export interface CollapseProps extends StandardProps
* - inherits [Transition API](https://reactcommunity.org/react-transition-group/transition/#Transition-props)
*/
-export default function Collapse(props: CollapseProps): JSX.Element;
+export default function Collapse(props: CollapseProps): React.JSX.Element;
diff --git a/packages/mui-material/src/CssBaseline/CssBaseline.d.ts b/packages/mui-material/src/CssBaseline/CssBaseline.d.ts
index 45af35281561a9..11cb225bd7ac03 100644
--- a/packages/mui-material/src/CssBaseline/CssBaseline.d.ts
+++ b/packages/mui-material/src/CssBaseline/CssBaseline.d.ts
@@ -26,4 +26,4 @@ export interface CssBaselineProps extends StyledComponentProps {
*
* - [CssBaseline API](https://mui.com/material-ui/api/css-baseline/)
*/
-export default function CssBaseline(props: CssBaselineProps): JSX.Element;
+export default function CssBaseline(props: CssBaselineProps): React.JSX.Element;
diff --git a/packages/mui-material/src/Dialog/Dialog.d.ts b/packages/mui-material/src/Dialog/Dialog.d.ts
index 14fdf0f2bc5c9d..d3c52d4ce7ccb4 100644
--- a/packages/mui-material/src/Dialog/Dialog.d.ts
+++ b/packages/mui-material/src/Dialog/Dialog.d.ts
@@ -118,4 +118,4 @@ export interface DialogProps extends StandardProps {
* - [Dialog API](https://mui.com/material-ui/api/dialog/)
* - inherits [Modal API](https://mui.com/material-ui/api/modal/)
*/
-export default function Dialog(props: DialogProps): JSX.Element;
+export default function Dialog(props: DialogProps): React.JSX.Element;
diff --git a/packages/mui-material/src/DialogActions/DialogActions.d.ts b/packages/mui-material/src/DialogActions/DialogActions.d.ts
index 5e6a13e309c1d0..3f1842f3461c08 100644
--- a/packages/mui-material/src/DialogActions/DialogActions.d.ts
+++ b/packages/mui-material/src/DialogActions/DialogActions.d.ts
@@ -33,4 +33,4 @@ export interface DialogActionsProps extends StandardProps {
* - [Fade API](https://mui.com/material-ui/api/fade/)
* - inherits [Transition API](https://reactcommunity.org/react-transition-group/transition/#Transition-props)
*/
-export default function Fade(props: FadeProps): JSX.Element;
+export default function Fade(props: FadeProps): React.JSX.Element;
diff --git a/packages/mui-material/src/FilledInput/FilledInput.d.ts b/packages/mui-material/src/FilledInput/FilledInput.d.ts
index b54d7c165608ec..c31279ed4f8b8b 100644
--- a/packages/mui-material/src/FilledInput/FilledInput.d.ts
+++ b/packages/mui-material/src/FilledInput/FilledInput.d.ts
@@ -37,6 +37,6 @@ export interface FilledInputProps extends StandardProps {
* - [FilledInput API](https://mui.com/material-ui/api/filled-input/)
* - inherits [InputBase API](https://mui.com/material-ui/api/input-base/)
*/
-declare const FilledInput: ((props: FilledInputProps) => JSX.Element) & { muiName: string };
+declare const FilledInput: ((props: FilledInputProps) => React.JSX.Element) & { muiName: string };
export default FilledInput;
diff --git a/packages/mui-material/src/FormControlLabel/FormControlLabel.d.ts b/packages/mui-material/src/FormControlLabel/FormControlLabel.d.ts
index 0a171d69a5db2f..8191b83c0638bc 100644
--- a/packages/mui-material/src/FormControlLabel/FormControlLabel.d.ts
+++ b/packages/mui-material/src/FormControlLabel/FormControlLabel.d.ts
@@ -106,4 +106,4 @@ export interface FormControlLabelProps
*
* - [FormControlLabel API](https://mui.com/material-ui/api/form-control-label/)
*/
-export default function FormControlLabel(props: FormControlLabelProps): JSX.Element;
+export default function FormControlLabel(props: FormControlLabelProps): React.JSX.Element;
diff --git a/packages/mui-material/src/FormGroup/FormGroup.d.ts b/packages/mui-material/src/FormGroup/FormGroup.d.ts
index b8e6478f1b3ef4..120c8bda2f6ad4 100644
--- a/packages/mui-material/src/FormGroup/FormGroup.d.ts
+++ b/packages/mui-material/src/FormGroup/FormGroup.d.ts
@@ -37,4 +37,4 @@ export interface FormGroupProps extends StandardProps;
diff --git a/packages/mui-material/src/Grid/Grid.d.ts b/packages/mui-material/src/Grid/Grid.d.ts
index 8df168eec79edb..b25bcac691eeb5 100644
--- a/packages/mui-material/src/Grid/Grid.d.ts
+++ b/packages/mui-material/src/Grid/Grid.d.ts
@@ -139,6 +139,7 @@ export interface GridOwnProps extends SystemProps, Breakpoints {
* Defines the `flex-wrap` style property.
* It's applied for all screen sizes.
* @default 'wrap'
+ * @deprecated Use `flexWrap` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
*/
wrap?: GridWrap;
/**
diff --git a/packages/mui-material/src/Grid/Grid.js b/packages/mui-material/src/Grid/Grid.js
index 7d8935e4395b74..da39ef72229cf7 100644
--- a/packages/mui-material/src/Grid/Grid.js
+++ b/packages/mui-material/src/Grid/Grid.js
@@ -598,6 +598,7 @@ Grid.propTypes /* remove-proptypes */ = {
* Defines the `flex-wrap` style property.
* It's applied for all screen sizes.
* @default 'wrap'
+ * @deprecated Use `flexWrap` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
*/
wrap: PropTypes.oneOf(['nowrap', 'wrap-reverse', 'wrap']),
/**
diff --git a/packages/mui-material/src/Grow/Grow.d.ts b/packages/mui-material/src/Grow/Grow.d.ts
index 173360b6ed7b55..244a6278f734e6 100644
--- a/packages/mui-material/src/Grow/Grow.d.ts
+++ b/packages/mui-material/src/Grow/Grow.d.ts
@@ -47,4 +47,4 @@ export interface GrowProps extends Omit {
* - [Grow API](https://mui.com/material-ui/api/grow/)
* - inherits [Transition API](https://reactcommunity.org/react-transition-group/transition/#Transition-props)
*/
-export default function Grow(props: GrowProps): JSX.Element;
+export default function Grow(props: GrowProps): React.JSX.Element;
diff --git a/packages/mui-material/src/ImageListItemBar/ImageListItemBar.d.ts b/packages/mui-material/src/ImageListItemBar/ImageListItemBar.d.ts
index fb9e5260c08a64..b134d22e35121d 100644
--- a/packages/mui-material/src/ImageListItemBar/ImageListItemBar.d.ts
+++ b/packages/mui-material/src/ImageListItemBar/ImageListItemBar.d.ts
@@ -48,4 +48,4 @@ export interface ImageListItemBarProps
*
* - [ImageListItemBar API](https://mui.com/material-ui/api/image-list-item-bar/)
*/
-export default function ImageListItemBar(props: ImageListItemBarProps): JSX.Element;
+export default function ImageListItemBar(props: ImageListItemBarProps): React.JSX.Element;
diff --git a/packages/mui-material/src/Input/Input.d.ts b/packages/mui-material/src/Input/Input.d.ts
index 87e624d32c0b21..771af138da3324 100644
--- a/packages/mui-material/src/Input/Input.d.ts
+++ b/packages/mui-material/src/Input/Input.d.ts
@@ -30,6 +30,6 @@ export interface InputProps extends StandardProps {
* - [Input API](https://mui.com/material-ui/api/input/)
* - inherits [InputBase API](https://mui.com/material-ui/api/input-base/)
*/
-declare const Input: ((props: InputProps) => JSX.Element) & { muiName: string };
+declare const Input: ((props: InputProps) => React.JSX.Element) & { muiName: string };
export default Input;
diff --git a/packages/mui-material/src/InputBase/InputBase.d.ts b/packages/mui-material/src/InputBase/InputBase.d.ts
index 98d5fb1e411020..abf037f2288987 100644
--- a/packages/mui-material/src/InputBase/InputBase.d.ts
+++ b/packages/mui-material/src/InputBase/InputBase.d.ts
@@ -263,4 +263,4 @@ export interface InputBaseComponentProps
*
* - [InputBase API](https://mui.com/material-ui/api/input-base/)
*/
-export default function InputBase(props: InputBaseProps): JSX.Element;
+export default function InputBase(props: InputBaseProps): React.JSX.Element;
diff --git a/packages/mui-material/src/LinearProgress/LinearProgress.d.ts b/packages/mui-material/src/LinearProgress/LinearProgress.d.ts
index 9b940c879c61bd..58e7a73e9e80c5 100644
--- a/packages/mui-material/src/LinearProgress/LinearProgress.d.ts
+++ b/packages/mui-material/src/LinearProgress/LinearProgress.d.ts
@@ -59,4 +59,4 @@ export interface LinearProgressProps
*
* - [LinearProgress API](https://mui.com/material-ui/api/linear-progress/)
*/
-export default function LinearProgress(props: LinearProgressProps): JSX.Element;
+export default function LinearProgress(props: LinearProgressProps): React.JSX.Element;
diff --git a/packages/mui-material/src/Link/getTextDecoration.test.js b/packages/mui-material/src/Link/getTextDecoration.test.js
index 41e92011448c54..cf15c993b1d48c 100644
--- a/packages/mui-material/src/Link/getTextDecoration.test.js
+++ b/packages/mui-material/src/Link/getTextDecoration.test.js
@@ -1,5 +1,5 @@
import { expect } from 'chai';
-import { createTheme, experimental_extendTheme as extendTheme } from '../styles';
+import { createTheme, extendTheme } from '../styles';
import getTextDecoration from './getTextDecoration';
describe('getTextDecoration', () => {
diff --git a/packages/mui-material/src/ListItemAvatar/ListItemAvatar.d.ts b/packages/mui-material/src/ListItemAvatar/ListItemAvatar.d.ts
index 0fe8e56956dc83..5a13d4c9d5d8de 100644
--- a/packages/mui-material/src/ListItemAvatar/ListItemAvatar.d.ts
+++ b/packages/mui-material/src/ListItemAvatar/ListItemAvatar.d.ts
@@ -28,4 +28,4 @@ export interface ListItemAvatarProps extends StandardProps JSX.Element) & {
+declare const ListItemSecondaryAction: ((
+ props: ListItemSecondaryActionProps,
+) => React.JSX.Element) & {
muiName: string;
};
diff --git a/packages/mui-material/src/ListItemText/ListItemText.d.ts b/packages/mui-material/src/ListItemText/ListItemText.d.ts
index 5c1f4f1690ca8b..f99f467ec6b74c 100644
--- a/packages/mui-material/src/ListItemText/ListItemText.d.ts
+++ b/packages/mui-material/src/ListItemText/ListItemText.d.ts
@@ -73,4 +73,6 @@ export interface ListItemTextProps<
export default function ListItemText<
PrimaryTypographyComponent extends React.ElementType = 'span',
SecondaryTypographyComponent extends React.ElementType = 'p',
->(props: ListItemTextProps): JSX.Element;
+>(
+ props: ListItemTextProps,
+): React.JSX.Element;
diff --git a/packages/mui-material/src/Menu/Menu.d.ts b/packages/mui-material/src/Menu/Menu.d.ts
index 34b27cb8cca448..4e25f63ddfd124 100644
--- a/packages/mui-material/src/Menu/Menu.d.ts
+++ b/packages/mui-material/src/Menu/Menu.d.ts
@@ -94,4 +94,4 @@ export declare const MenuPaper: React.FC;
* - [Menu API](https://mui.com/material-ui/api/menu/)
* - inherits [Popover API](https://mui.com/material-ui/api/popover/)
*/
-export default function Menu(props: MenuProps): JSX.Element;
+export default function Menu(props: MenuProps): React.JSX.Element;
diff --git a/packages/mui-material/src/MobileStepper/MobileStepper.d.ts b/packages/mui-material/src/MobileStepper/MobileStepper.d.ts
index 86a5e95f20981e..9a05cabb4b9b5d 100644
--- a/packages/mui-material/src/MobileStepper/MobileStepper.d.ts
+++ b/packages/mui-material/src/MobileStepper/MobileStepper.d.ts
@@ -59,4 +59,4 @@ export interface MobileStepperProps extends StandardProps;
/**
* Override or extend the styles applied to the component.
*/
diff --git a/packages/mui-material/src/NativeSelect/NativeSelect.d.ts b/packages/mui-material/src/NativeSelect/NativeSelect.d.ts
index 6e4d078e6179ce..4f09d74c00833a 100644
--- a/packages/mui-material/src/NativeSelect/NativeSelect.d.ts
+++ b/packages/mui-material/src/NativeSelect/NativeSelect.d.ts
@@ -64,6 +64,6 @@ export interface NativeSelectProps
* - [NativeSelect API](https://mui.com/material-ui/api/native-select/)
* - inherits [Input API](https://mui.com/material-ui/api/input/)
*/
-declare const NativeSelect: ((props: NativeSelectProps) => JSX.Element) & { muiName: string };
+declare const NativeSelect: ((props: NativeSelectProps) => React.JSX.Element) & { muiName: string };
export default NativeSelect;
diff --git a/packages/mui-material/src/OutlinedInput/OutlinedInput.d.ts b/packages/mui-material/src/OutlinedInput/OutlinedInput.d.ts
index 61646bc8096fef..f8faee63a44db8 100644
--- a/packages/mui-material/src/OutlinedInput/OutlinedInput.d.ts
+++ b/packages/mui-material/src/OutlinedInput/OutlinedInput.d.ts
@@ -35,6 +35,8 @@ export interface OutlinedInputProps extends StandardProps {
* - [OutlinedInput API](https://mui.com/material-ui/api/outlined-input/)
* - inherits [InputBase API](https://mui.com/material-ui/api/input-base/)
*/
-declare const OutlinedInput: ((props: OutlinedInputProps) => JSX.Element) & { muiName: string };
+declare const OutlinedInput: ((props: OutlinedInputProps) => React.JSX.Element) & {
+ muiName: string;
+};
export default OutlinedInput;
diff --git a/packages/mui-material/src/OverridableComponent.d.ts b/packages/mui-material/src/OverridableComponent.d.ts
index 1a65de60e6c1f5..d982e97a4d009a 100644
--- a/packages/mui-material/src/OverridableComponent.d.ts
+++ b/packages/mui-material/src/OverridableComponent.d.ts
@@ -20,8 +20,8 @@ export interface OverridableComponent {
*/
component: RootComponent;
} & OverrideProps,
- ): JSX.Element | null;
- (props: DefaultComponentProps): JSX.Element | null;
+ ): React.JSX.Element | null;
+ (props: DefaultComponentProps): React.JSX.Element | null;
}
/**
diff --git a/packages/mui-material/src/Pagination/Pagination.d.ts b/packages/mui-material/src/Pagination/Pagination.d.ts
index 11a27ca7b51a4c..130d148f830c15 100644
--- a/packages/mui-material/src/Pagination/Pagination.d.ts
+++ b/packages/mui-material/src/Pagination/Pagination.d.ts
@@ -86,4 +86,4 @@ export interface PaginationProps
*
* - [Pagination API](https://mui.com/material-ui/api/pagination/)
*/
-export default function Pagination(props: PaginationProps): JSX.Element;
+export default function Pagination(props: PaginationProps): React.JSX.Element;
diff --git a/packages/mui-material/src/Popover/Popover.d.ts b/packages/mui-material/src/Popover/Popover.d.ts
index d8308b68ac7a5b..cd61ebd110215c 100644
--- a/packages/mui-material/src/Popover/Popover.d.ts
+++ b/packages/mui-material/src/Popover/Popover.d.ts
@@ -195,4 +195,4 @@ export declare const PopoverPaper: React.FC;
* - [Popover API](https://mui.com/material-ui/api/popover/)
* - inherits [Modal API](https://mui.com/material-ui/api/modal/)
*/
-export default function Popover(props: PopoverProps): JSX.Element;
+export default function Popover(props: PopoverProps): React.JSX.Element;
diff --git a/packages/mui-material/src/Popper/Popper.spec.tsx b/packages/mui-material/src/Popper/Popper.spec.tsx
index c970097dd3db65..0431883265da3f 100644
--- a/packages/mui-material/src/Popper/Popper.spec.tsx
+++ b/packages/mui-material/src/Popper/Popper.spec.tsx
@@ -3,7 +3,7 @@ import { Instance } from '@popperjs/core';
import Tooltip from '@mui/material/Tooltip';
interface Props {
- children: React.ReactElement;
+ children: React.ReactElement;
value: number;
}
diff --git a/packages/mui-material/src/Popper/Popper.tsx b/packages/mui-material/src/Popper/Popper.tsx
index 3d946e9e32adf8..2213d3ee72419b 100644
--- a/packages/mui-material/src/Popper/Popper.tsx
+++ b/packages/mui-material/src/Popper/Popper.tsx
@@ -17,6 +17,8 @@ export interface PopperProps extends Omit {
/**
* The components used for each slot inside the Popper.
* Either a string to use a HTML element or a component.
+ *
+ * @deprecated use the `slots` prop instead. This prop will be removed in v7. [How to migrate](/material-ui/migration/migrating-from-deprecated-apis/).
* @default {}
*/
components?: {
@@ -24,6 +26,8 @@ export interface PopperProps extends Omit {
};
/**
* The props used for each slot inside the Popper.
+ *
+ * @deprecated use the `slotProps` prop instead. This prop will be removed in v7. [How to migrate](/material-ui/migration/migrating-from-deprecated-apis/).
* @default {}
*/
componentsProps?: BasePopperProps['slotProps'];
@@ -137,6 +141,8 @@ Popper.propTypes /* remove-proptypes */ = {
/**
* The components used for each slot inside the Popper.
* Either a string to use a HTML element or a component.
+ *
+ * @deprecated use the `slots` prop instead. This prop will be removed in v7. [How to migrate](/material-ui/migration/migrating-from-deprecated-apis/).
* @default {}
*/
components: PropTypes.shape({
@@ -144,6 +150,8 @@ Popper.propTypes /* remove-proptypes */ = {
}),
/**
* The props used for each slot inside the Popper.
+ *
+ * @deprecated use the `slotProps` prop instead. This prop will be removed in v7. [How to migrate](/material-ui/migration/migrating-from-deprecated-apis/).
* @default {}
*/
componentsProps: PropTypes.shape({
diff --git a/packages/mui-material/src/Radio/Radio.d.ts b/packages/mui-material/src/Radio/Radio.d.ts
index 9b07e5576a34c3..839696994c4b31 100644
--- a/packages/mui-material/src/Radio/Radio.d.ts
+++ b/packages/mui-material/src/Radio/Radio.d.ts
@@ -62,4 +62,4 @@ export interface RadioProps
* - [Radio API](https://mui.com/material-ui/api/radio/)
* - inherits [ButtonBase API](https://mui.com/material-ui/api/button-base/)
*/
-export default function Radio(props: RadioProps): JSX.Element;
+export default function Radio(props: RadioProps): React.JSX.Element;
diff --git a/packages/mui-material/src/RadioGroup/RadioGroup.d.ts b/packages/mui-material/src/RadioGroup/RadioGroup.d.ts
index 3cfdf5713537e9..3793f088ac1384 100644
--- a/packages/mui-material/src/RadioGroup/RadioGroup.d.ts
+++ b/packages/mui-material/src/RadioGroup/RadioGroup.d.ts
@@ -36,4 +36,4 @@ export interface RadioGroupProps extends Omit {
* - [RadioGroup API](https://mui.com/material-ui/api/radio-group/)
* - inherits [FormGroup API](https://mui.com/material-ui/api/form-group/)
*/
-export default function RadioGroup(props: RadioGroupProps): JSX.Element;
+export default function RadioGroup(props: RadioGroupProps): React.JSX.Element;
diff --git a/packages/mui-material/src/Rating/Rating.d.ts b/packages/mui-material/src/Rating/Rating.d.ts
index 1eb262d4c43d9f..6056f8966d5d4f 100644
--- a/packages/mui-material/src/Rating/Rating.d.ts
+++ b/packages/mui-material/src/Rating/Rating.d.ts
@@ -124,4 +124,4 @@ export interface RatingProps
*
* - [Rating API](https://mui.com/material-ui/api/rating/)
*/
-export default function Rating(props: RatingProps): JSX.Element;
+export default function Rating(props: RatingProps): React.JSX.Element;
diff --git a/packages/mui-material/src/Select/Select.d.ts b/packages/mui-material/src/Select/Select.d.ts
index f4984bdc71f84d..3f68467ee861ab 100644
--- a/packages/mui-material/src/Select/Select.d.ts
+++ b/packages/mui-material/src/Select/Select.d.ts
@@ -196,7 +196,7 @@ export type SelectProps =
* - [Select API](https://mui.com/material-ui/api/select/)
* - inherits [OutlinedInput API](https://mui.com/material-ui/api/outlined-input/)
*/
-declare const Select: ((props: SelectProps) => JSX.Element) & {
+declare const Select: ((props: SelectProps) => React.JSX.Element) & {
muiName: string;
};
diff --git a/packages/mui-material/src/Slide/Slide.d.ts b/packages/mui-material/src/Slide/Slide.d.ts
index 76621b10735cbf..c7e2d14e5bc92f 100644
--- a/packages/mui-material/src/Slide/Slide.d.ts
+++ b/packages/mui-material/src/Slide/Slide.d.ts
@@ -61,4 +61,4 @@ export interface SlideProps extends TransitionProps {
* - [Slide API](https://mui.com/material-ui/api/slide/)
* - inherits [Transition API](https://reactcommunity.org/react-transition-group/transition/#Transition-props)
*/
-export default function Slide(props: SlideProps): JSX.Element;
+export default function Slide(props: SlideProps): React.JSX.Element;
diff --git a/packages/mui-material/src/Slider/Slider.d.ts b/packages/mui-material/src/Slider/Slider.d.ts
index 98a9f281f14ae6..4aa0b3f0f7a399 100644
--- a/packages/mui-material/src/Slider/Slider.d.ts
+++ b/packages/mui-material/src/Slider/Slider.d.ts
@@ -281,7 +281,7 @@ export interface SliderTypeMap<
}
export interface SliderValueLabelProps extends React.HTMLAttributes {
- children: React.ReactElement;
+ children: React.ReactElement;
index: number;
open: boolean;
value: number;
diff --git a/packages/mui-material/src/Slider/SliderValueLabel.types.ts b/packages/mui-material/src/Slider/SliderValueLabel.types.ts
index 68fe865e14d10f..251c91edc65617 100644
--- a/packages/mui-material/src/Slider/SliderValueLabel.types.ts
+++ b/packages/mui-material/src/Slider/SliderValueLabel.types.ts
@@ -1,5 +1,5 @@
export interface SliderValueLabelProps {
- children?: React.ReactElement;
+ children?: React.ReactElement;
className?: string;
style?: React.CSSProperties;
/**
diff --git a/packages/mui-material/src/Snackbar/Snackbar.d.ts b/packages/mui-material/src/Snackbar/Snackbar.d.ts
index 30b6fc17082d8b..7c9d89895df2e7 100644
--- a/packages/mui-material/src/Snackbar/Snackbar.d.ts
+++ b/packages/mui-material/src/Snackbar/Snackbar.d.ts
@@ -127,4 +127,4 @@ export interface SnackbarProps extends StandardProps JSX.Element) & { muiName: string };
+declare const SpeedDialIcon: ((props: SpeedDialIconProps) => React.JSX.Element) & {
+ muiName: string;
+};
export default SpeedDialIcon;
diff --git a/packages/mui-material/src/StepConnector/StepConnector.d.ts b/packages/mui-material/src/StepConnector/StepConnector.d.ts
index 28d55ad48c9476..e60c7c6bac61b4 100644
--- a/packages/mui-material/src/StepConnector/StepConnector.d.ts
+++ b/packages/mui-material/src/StepConnector/StepConnector.d.ts
@@ -4,7 +4,7 @@ import { InternalStandardProps as StandardProps } from '..';
import { Theme } from '../styles';
import { StepConnectorClasses } from './stepConnectorClasses';
-export type StepConnectorIcon = React.ReactElement | string | number;
+export type StepConnectorIcon = React.ReactElement | string | number;
export interface StepConnectorProps
extends StandardProps, 'children'> {
@@ -30,4 +30,4 @@ export type StepConnectorClasskey = keyof NonNullable
*
* - [StepContent API](https://mui.com/material-ui/api/step-content/)
*/
-export default function StepContent(props: StepContentProps): JSX.Element;
+export default function StepContent(props: StepContentProps): React.JSX.Element;
diff --git a/packages/mui-material/src/StepIcon/StepIcon.d.ts b/packages/mui-material/src/StepIcon/StepIcon.d.ts
index 4f0c11140ae708..d71906a033977e 100644
--- a/packages/mui-material/src/StepIcon/StepIcon.d.ts
+++ b/packages/mui-material/src/StepIcon/StepIcon.d.ts
@@ -47,4 +47,4 @@ export type StepIconClasskey = keyof NonNullable;
*
* - [StepIcon API](https://mui.com/material-ui/api/step-icon/)
*/
-export default function StepIcon(props: StepIconProps): JSX.Element;
+export default function StepIcon(props: StepIconProps): React.JSX.Element;
diff --git a/packages/mui-material/src/StepLabel/StepLabel.d.ts b/packages/mui-material/src/StepLabel/StepLabel.d.ts
index c695ac48ef9fe5..f3606a5e8c7b55 100644
--- a/packages/mui-material/src/StepLabel/StepLabel.d.ts
+++ b/packages/mui-material/src/StepLabel/StepLabel.d.ts
@@ -92,7 +92,7 @@ export type StepLabelClasskey = keyof NonNullable;
*
* - [StepLabel API](https://mui.com/material-ui/api/step-label/)
*/
-declare const StepLabel: ((props: StepLabelProps) => JSX.Element) & {
+declare const StepLabel: ((props: StepLabelProps) => React.JSX.Element) & {
muiName: string;
};
diff --git a/packages/mui-material/src/Switch/Switch.d.ts b/packages/mui-material/src/Switch/Switch.d.ts
index e4592a27ebfd57..b57cb0aa32fa4c 100644
--- a/packages/mui-material/src/Switch/Switch.d.ts
+++ b/packages/mui-material/src/Switch/Switch.d.ts
@@ -66,4 +66,4 @@ export interface SwitchProps
* - [Switch API](https://mui.com/material-ui/api/switch/)
* - inherits [IconButton API](https://mui.com/material-ui/api/icon-button/)
*/
-export default function Switch(props: SwitchProps): JSX.Element;
+export default function Switch(props: SwitchProps): React.JSX.Element;
diff --git a/packages/mui-material/src/Tab/Tab.d.ts b/packages/mui-material/src/Tab/Tab.d.ts
index dc19a6eed31db4..f4885f67009c07 100644
--- a/packages/mui-material/src/Tab/Tab.d.ts
+++ b/packages/mui-material/src/Tab/Tab.d.ts
@@ -28,7 +28,7 @@ export interface TabOwnProps {
/**
* The icon to display.
*/
- icon?: string | React.ReactElement;
+ icon?: string | React.ReactElement;
/**
* The position of the icon relative to the label.
* @default 'top'
diff --git a/packages/mui-material/src/TabScrollButton/TabScrollButton.d.ts b/packages/mui-material/src/TabScrollButton/TabScrollButton.d.ts
index e8d396e4a49b12..e755333b88ed82 100644
--- a/packages/mui-material/src/TabScrollButton/TabScrollButton.d.ts
+++ b/packages/mui-material/src/TabScrollButton/TabScrollButton.d.ts
@@ -75,4 +75,4 @@ export interface TabScrollButtonProps extends ButtonBaseProps {
*
* - [TabScrollButton API](https://mui.com/material-ui/api/tab-scroll-button/)
*/
-export default function TabScrollButton(props: TabScrollButtonProps): JSX.Element;
+export default function TabScrollButton(props: TabScrollButtonProps): React.JSX.Element;
diff --git a/packages/mui-material/src/TableCell/TableCell.d.ts b/packages/mui-material/src/TableCell/TableCell.d.ts
index a702716b8e456f..0a5de08842ca09 100644
--- a/packages/mui-material/src/TableCell/TableCell.d.ts
+++ b/packages/mui-material/src/TableCell/TableCell.d.ts
@@ -83,4 +83,4 @@ export type SortDirection = 'asc' | 'desc' | false;
*
* - [TableCell API](https://mui.com/material-ui/api/table-cell/)
*/
-export default function TableCell(props: TableCellProps): JSX.Element;
+export default function TableCell(props: TableCellProps): React.JSX.Element;
diff --git a/packages/mui-material/src/TextField/TextField.d.ts b/packages/mui-material/src/TextField/TextField.d.ts
index 84c910a3e11599..eaa9d2ab97c03d 100644
--- a/packages/mui-material/src/TextField/TextField.d.ts
+++ b/packages/mui-material/src/TextField/TextField.d.ts
@@ -340,4 +340,4 @@ export default function TextField(
*/
variant?: Variant;
} & Omit,
-): JSX.Element;
+): React.JSX.Element;
diff --git a/packages/mui-material/src/ToggleButtonGroup/ToggleButtonGroup.d.ts b/packages/mui-material/src/ToggleButtonGroup/ToggleButtonGroup.d.ts
index 2ba480dca945d4..dee8f289b5553b 100644
--- a/packages/mui-material/src/ToggleButtonGroup/ToggleButtonGroup.d.ts
+++ b/packages/mui-material/src/ToggleButtonGroup/ToggleButtonGroup.d.ts
@@ -86,4 +86,4 @@ export interface ToggleButtonGroupProps
*
* - [ToggleButtonGroup API](https://mui.com/material-ui/api/toggle-button-group/)
*/
-export default function ToggleButtonGroup(props: ToggleButtonGroupProps): JSX.Element;
+export default function ToggleButtonGroup(props: ToggleButtonGroupProps): React.JSX.Element;
diff --git a/packages/mui-material/src/Tooltip/Tooltip.d.ts b/packages/mui-material/src/Tooltip/Tooltip.d.ts
index a6f699533ec61f..9991be721dcccc 100644
--- a/packages/mui-material/src/Tooltip/Tooltip.d.ts
+++ b/packages/mui-material/src/Tooltip/Tooltip.d.ts
@@ -24,8 +24,7 @@ export interface TooltipProps extends StandardProps {
...props
}: TypographyProps & {
maxLines?: number;
- }): JSX.Element => {
+ }): React.JSX.Element => {
return (
{
let originalMatchmedia;
diff --git a/packages/mui-material/src/styles/CssVarsProvider.tsx b/packages/mui-material/src/styles/CssVarsProvider.tsx
index e7779777a3094c..06c0ad33302fda 100644
--- a/packages/mui-material/src/styles/CssVarsProvider.tsx
+++ b/packages/mui-material/src/styles/CssVarsProvider.tsx
@@ -1,18 +1,12 @@
'use client';
-// do not remove the following import (https://github.com/microsoft/TypeScript/issues/29808#issuecomment-1320713018)
-/* eslint-disable @typescript-eslint/no-unused-vars */
-// @ts-ignore
import * as React from 'react';
import { unstable_createCssVarsProvider as createCssVarsProvider, SxProps } from '@mui/system';
import styleFunctionSx from '@mui/system/styleFunctionSx';
-import experimental_extendTheme, {
- SupportedColorScheme,
- CssVarsTheme,
-} from './experimental_extendTheme';
+import extendTheme, { SupportedColorScheme, CssVarsTheme } from './extendTheme';
import createTypography from './createTypography';
import THEME_ID from './identifier';
-const defaultTheme = experimental_extendTheme();
+const defaultTheme = extendTheme();
const { CssVarsProvider, useColorScheme, getInitColorSchemeScript } = createCssVarsProvider<
SupportedColorScheme,
@@ -41,8 +35,23 @@ const { CssVarsProvider, useColorScheme, getInitColorSchemeScript } = createCssV
},
});
-export {
- useColorScheme,
- getInitColorSchemeScript,
- CssVarsProvider as Experimental_CssVarsProvider,
-};
+let warnedOnce = false;
+
+// eslint-disable-next-line @typescript-eslint/naming-convention
+function Experimental_CssVarsProvider(props: any) {
+ if (!warnedOnce) {
+ console.warn(
+ [
+ 'MUI: The Experimental_CssVarsProvider component has been stabilized.',
+ '',
+ "You should use `import { CssVarsProvider } from '@mui/material/styles'`",
+ ].join('\n'),
+ );
+
+ warnedOnce = true;
+ }
+
+ return ;
+}
+
+export { useColorScheme, getInitColorSchemeScript, CssVarsProvider, Experimental_CssVarsProvider };
diff --git a/packages/mui-material/src/styles/experimental_extendTheme.js b/packages/mui-material/src/styles/experimental_extendTheme.js
index 8dea1c19f7ef61..3ead445e2bd92a 100644
--- a/packages/mui-material/src/styles/experimental_extendTheme.js
+++ b/packages/mui-material/src/styles/experimental_extendTheme.js
@@ -1,452 +1,19 @@
-import deepmerge from '@mui/utils/deepmerge';
-import { unstable_createGetCssVar as systemCreateGetCssVar, createSpacing } from '@mui/system';
-import { createUnarySpacing } from '@mui/system/spacing';
-import { prepareCssVars, prepareTypographyVars } from '@mui/system/cssVars';
-import styleFunctionSx, {
- unstable_defaultSxConfig as defaultSxConfig,
-} from '@mui/system/styleFunctionSx';
-
-import {
- private_safeColorChannel as safeColorChannel,
- private_safeAlpha as safeAlpha,
- private_safeDarken as safeDarken,
- private_safeLighten as safeLighten,
- private_safeEmphasize as safeEmphasize,
- hslToRgb,
-} from '@mui/system/colorManipulator';
-
-import defaultShouldSkipGeneratingVar from './shouldSkipGeneratingVar';
-import createThemeWithoutVars from './createTheme';
-import getOverlayAlpha from './getOverlayAlpha';
-import defaultGetSelector from './createGetSelector';
-
-const defaultDarkOverlays = [...Array(25)].map((_, index) => {
- if (index === 0) {
- return undefined;
- }
- const overlay = getOverlayAlpha(index);
- return `linear-gradient(rgba(255 255 255 / ${overlay}), rgba(255 255 255 / ${overlay}))`;
-});
-
-function assignNode(obj, keys) {
- keys.forEach((k) => {
- if (!obj[k]) {
- obj[k] = {};
- }
- });
-}
-
-function setColor(obj, key, defaultValue) {
- if (!obj[key] && defaultValue) {
- obj[key] = defaultValue;
- }
-}
-
-function toRgb(color) {
- if (!color || !color.startsWith('hsl')) {
- return color;
- }
- return hslToRgb(color);
-}
-
-function setColorChannel(obj, key) {
- if (!(`${key}Channel` in obj)) {
- // custom channel token is not provided, generate one.
- // if channel token can't be generated, show a warning.
- obj[`${key}Channel`] = safeColorChannel(
- toRgb(obj[key]),
- `MUI: Can't create \`palette.${key}Channel\` because \`palette.${key}\` is not one of these formats: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().` +
- '\n' +
- `To suppress this warning, you need to explicitly provide the \`palette.${key}Channel\` as a string (in rgb format, for example "12 12 12") or undefined if you want to remove the channel token.`,
+import extendTheme from './extendTheme';
+
+let warnedOnce = false;
+
+export default function deprecatedExtendTheme(...args) {
+ if (!warnedOnce) {
+ console.warn(
+ [
+ 'MUI: The `experimental_extendTheme` has been stabilized.',
+ '',
+ "You should use `import { extendTheme } from '@mui/material/styles'`",
+ ].join('\n'),
);
- }
-}
-
-function getSpacingVal(spacingInput) {
- if (typeof spacingInput === 'number') {
- return `${spacingInput}px`;
- }
- if (typeof spacingInput === 'string') {
- return spacingInput;
- }
- if (typeof spacingInput === 'function') {
- return getSpacingVal(spacingInput(1));
- }
- if (Array.isArray(spacingInput)) {
- return spacingInput;
- }
- return '8px';
-}
-const silent = (fn) => {
- try {
- return fn();
- } catch (error) {
- // ignore error
+ warnedOnce = true;
}
- return undefined;
-};
-
-export const createGetCssVar = (cssVarPrefix = 'mui') => systemCreateGetCssVar(cssVarPrefix);
-
-export default function extendTheme(options = {}, ...args) {
- const {
- colorSchemes: colorSchemesInput = {},
- cssVarPrefix = 'mui',
- shouldSkipGeneratingVar = defaultShouldSkipGeneratingVar,
- getSelector,
- ...input
- } = options;
- const getCssVar = createGetCssVar(cssVarPrefix);
-
- const { palette: lightPalette, ...muiTheme } = createThemeWithoutVars({
- ...input,
- ...(colorSchemesInput.light && { palette: colorSchemesInput.light?.palette }),
- });
- const { palette: darkPalette } = createThemeWithoutVars({
- palette: { mode: 'dark', ...colorSchemesInput.dark?.palette },
- });
-
- let theme = {
- defaultColorScheme: 'light',
- ...muiTheme,
- cssVarPrefix,
- getCssVar,
- colorSchemes: {
- ...colorSchemesInput,
- light: {
- ...colorSchemesInput.light,
- palette: lightPalette,
- opacity: {
- inputPlaceholder: 0.42,
- inputUnderline: 0.42,
- switchTrackDisabled: 0.12,
- switchTrack: 0.38,
- ...colorSchemesInput.light?.opacity,
- },
- overlays: colorSchemesInput.light?.overlays || [],
- },
- dark: {
- ...colorSchemesInput.dark,
- palette: darkPalette,
- opacity: {
- inputPlaceholder: 0.5,
- inputUnderline: 0.7,
- switchTrackDisabled: 0.2,
- switchTrack: 0.3,
- ...colorSchemesInput.dark?.opacity,
- },
- overlays: colorSchemesInput.dark?.overlays || defaultDarkOverlays,
- },
- },
- font: { ...prepareTypographyVars(muiTheme.typography), ...muiTheme.font },
- spacing: getSpacingVal(input.spacing),
- };
-
- Object.keys(theme.colorSchemes).forEach((key) => {
- const palette = theme.colorSchemes[key].palette;
-
- const setCssVarColor = (cssVar) => {
- const tokens = cssVar.split('-');
- const color = tokens[1];
- const colorToken = tokens[2];
- return getCssVar(cssVar, palette[color][colorToken]);
- };
-
- // attach black & white channels to common node
- if (key === 'light') {
- setColor(palette.common, 'background', '#fff');
- setColor(palette.common, 'onBackground', '#000');
- } else {
- setColor(palette.common, 'background', '#000');
- setColor(palette.common, 'onBackground', '#fff');
- }
-
- // assign component variables
- assignNode(palette, [
- 'Alert',
- 'AppBar',
- 'Avatar',
- 'Button',
- 'Chip',
- 'FilledInput',
- 'LinearProgress',
- 'Skeleton',
- 'Slider',
- 'SnackbarContent',
- 'SpeedDialAction',
- 'StepConnector',
- 'StepContent',
- 'Switch',
- 'TableCell',
- 'Tooltip',
- ]);
- if (key === 'light') {
- setColor(palette.Alert, 'errorColor', safeDarken(palette.error.light, 0.6));
- setColor(palette.Alert, 'infoColor', safeDarken(palette.info.light, 0.6));
- setColor(palette.Alert, 'successColor', safeDarken(palette.success.light, 0.6));
- setColor(palette.Alert, 'warningColor', safeDarken(palette.warning.light, 0.6));
- setColor(palette.Alert, 'errorFilledBg', setCssVarColor('palette-error-main'));
- setColor(palette.Alert, 'infoFilledBg', setCssVarColor('palette-info-main'));
- setColor(palette.Alert, 'successFilledBg', setCssVarColor('palette-success-main'));
- setColor(palette.Alert, 'warningFilledBg', setCssVarColor('palette-warning-main'));
- setColor(
- palette.Alert,
- 'errorFilledColor',
- silent(() => lightPalette.getContrastText(palette.error.main)),
- );
- setColor(
- palette.Alert,
- 'infoFilledColor',
- silent(() => lightPalette.getContrastText(palette.info.main)),
- );
- setColor(
- palette.Alert,
- 'successFilledColor',
- silent(() => lightPalette.getContrastText(palette.success.main)),
- );
- setColor(
- palette.Alert,
- 'warningFilledColor',
- silent(() => lightPalette.getContrastText(palette.warning.main)),
- );
- setColor(palette.Alert, 'errorStandardBg', safeLighten(palette.error.light, 0.9));
- setColor(palette.Alert, 'infoStandardBg', safeLighten(palette.info.light, 0.9));
- setColor(palette.Alert, 'successStandardBg', safeLighten(palette.success.light, 0.9));
- setColor(palette.Alert, 'warningStandardBg', safeLighten(palette.warning.light, 0.9));
- setColor(palette.Alert, 'errorIconColor', setCssVarColor('palette-error-main'));
- setColor(palette.Alert, 'infoIconColor', setCssVarColor('palette-info-main'));
- setColor(palette.Alert, 'successIconColor', setCssVarColor('palette-success-main'));
- setColor(palette.Alert, 'warningIconColor', setCssVarColor('palette-warning-main'));
- setColor(palette.AppBar, 'defaultBg', setCssVarColor('palette-grey-100'));
- setColor(palette.Avatar, 'defaultBg', setCssVarColor('palette-grey-400'));
- setColor(palette.Button, 'inheritContainedBg', setCssVarColor('palette-grey-300'));
- setColor(palette.Button, 'inheritContainedHoverBg', setCssVarColor('palette-grey-A100'));
- setColor(palette.Chip, 'defaultBorder', setCssVarColor('palette-grey-400'));
- setColor(palette.Chip, 'defaultAvatarColor', setCssVarColor('palette-grey-700'));
- setColor(palette.Chip, 'defaultIconColor', setCssVarColor('palette-grey-700'));
- setColor(palette.FilledInput, 'bg', 'rgba(0, 0, 0, 0.06)');
- setColor(palette.FilledInput, 'hoverBg', 'rgba(0, 0, 0, 0.09)');
- setColor(palette.FilledInput, 'disabledBg', 'rgba(0, 0, 0, 0.12)');
- setColor(palette.LinearProgress, 'primaryBg', safeLighten(palette.primary.main, 0.62));
- setColor(palette.LinearProgress, 'secondaryBg', safeLighten(palette.secondary.main, 0.62));
- setColor(palette.LinearProgress, 'errorBg', safeLighten(palette.error.main, 0.62));
- setColor(palette.LinearProgress, 'infoBg', safeLighten(palette.info.main, 0.62));
- setColor(palette.LinearProgress, 'successBg', safeLighten(palette.success.main, 0.62));
- setColor(palette.LinearProgress, 'warningBg', safeLighten(palette.warning.main, 0.62));
- setColor(
- palette.Skeleton,
- 'bg',
- `rgba(${setCssVarColor('palette-text-primaryChannel')} / 0.11)`,
- );
- setColor(palette.Slider, 'primaryTrack', safeLighten(palette.primary.main, 0.62));
- setColor(palette.Slider, 'secondaryTrack', safeLighten(palette.secondary.main, 0.62));
- setColor(palette.Slider, 'errorTrack', safeLighten(palette.error.main, 0.62));
- setColor(palette.Slider, 'infoTrack', safeLighten(palette.info.main, 0.62));
- setColor(palette.Slider, 'successTrack', safeLighten(palette.success.main, 0.62));
- setColor(palette.Slider, 'warningTrack', safeLighten(palette.warning.main, 0.62));
- const snackbarContentBackground = safeEmphasize(palette.background.default, 0.8);
- setColor(palette.SnackbarContent, 'bg', snackbarContentBackground);
- setColor(
- palette.SnackbarContent,
- 'color',
- silent(() => lightPalette.getContrastText(snackbarContentBackground)),
- );
- setColor(
- palette.SpeedDialAction,
- 'fabHoverBg',
- safeEmphasize(palette.background.paper, 0.15),
- );
- setColor(palette.StepConnector, 'border', setCssVarColor('palette-grey-400'));
- setColor(palette.StepContent, 'border', setCssVarColor('palette-grey-400'));
- setColor(palette.Switch, 'defaultColor', setCssVarColor('palette-common-white'));
- setColor(palette.Switch, 'defaultDisabledColor', setCssVarColor('palette-grey-100'));
- setColor(palette.Switch, 'primaryDisabledColor', safeLighten(palette.primary.main, 0.62));
- setColor(palette.Switch, 'secondaryDisabledColor', safeLighten(palette.secondary.main, 0.62));
- setColor(palette.Switch, 'errorDisabledColor', safeLighten(palette.error.main, 0.62));
- setColor(palette.Switch, 'infoDisabledColor', safeLighten(palette.info.main, 0.62));
- setColor(palette.Switch, 'successDisabledColor', safeLighten(palette.success.main, 0.62));
- setColor(palette.Switch, 'warningDisabledColor', safeLighten(palette.warning.main, 0.62));
- setColor(palette.TableCell, 'border', safeLighten(safeAlpha(palette.divider, 1), 0.88));
- setColor(palette.Tooltip, 'bg', safeAlpha(palette.grey[700], 0.92));
- } else {
- setColor(palette.Alert, 'errorColor', safeLighten(palette.error.light, 0.6));
- setColor(palette.Alert, 'infoColor', safeLighten(palette.info.light, 0.6));
- setColor(palette.Alert, 'successColor', safeLighten(palette.success.light, 0.6));
- setColor(palette.Alert, 'warningColor', safeLighten(palette.warning.light, 0.6));
- setColor(palette.Alert, 'errorFilledBg', setCssVarColor('palette-error-dark'));
- setColor(palette.Alert, 'infoFilledBg', setCssVarColor('palette-info-dark'));
- setColor(palette.Alert, 'successFilledBg', setCssVarColor('palette-success-dark'));
- setColor(palette.Alert, 'warningFilledBg', setCssVarColor('palette-warning-dark'));
- setColor(
- palette.Alert,
- 'errorFilledColor',
- silent(() => darkPalette.getContrastText(palette.error.dark)),
- );
- setColor(
- palette.Alert,
- 'infoFilledColor',
- silent(() => darkPalette.getContrastText(palette.info.dark)),
- );
- setColor(
- palette.Alert,
- 'successFilledColor',
- silent(() => darkPalette.getContrastText(palette.success.dark)),
- );
- setColor(
- palette.Alert,
- 'warningFilledColor',
- silent(() => darkPalette.getContrastText(palette.warning.dark)),
- );
- setColor(palette.Alert, 'errorStandardBg', safeDarken(palette.error.light, 0.9));
- setColor(palette.Alert, 'infoStandardBg', safeDarken(palette.info.light, 0.9));
- setColor(palette.Alert, 'successStandardBg', safeDarken(palette.success.light, 0.9));
- setColor(palette.Alert, 'warningStandardBg', safeDarken(palette.warning.light, 0.9));
- setColor(palette.Alert, 'errorIconColor', setCssVarColor('palette-error-main'));
- setColor(palette.Alert, 'infoIconColor', setCssVarColor('palette-info-main'));
- setColor(palette.Alert, 'successIconColor', setCssVarColor('palette-success-main'));
- setColor(palette.Alert, 'warningIconColor', setCssVarColor('palette-warning-main'));
- setColor(palette.AppBar, 'defaultBg', setCssVarColor('palette-grey-900'));
- setColor(palette.AppBar, 'darkBg', setCssVarColor('palette-background-paper')); // specific for dark mode
- setColor(palette.AppBar, 'darkColor', setCssVarColor('palette-text-primary')); // specific for dark mode
- setColor(palette.Avatar, 'defaultBg', setCssVarColor('palette-grey-600'));
- setColor(palette.Button, 'inheritContainedBg', setCssVarColor('palette-grey-800'));
- setColor(palette.Button, 'inheritContainedHoverBg', setCssVarColor('palette-grey-700'));
- setColor(palette.Chip, 'defaultBorder', setCssVarColor('palette-grey-700'));
- setColor(palette.Chip, 'defaultAvatarColor', setCssVarColor('palette-grey-300'));
- setColor(palette.Chip, 'defaultIconColor', setCssVarColor('palette-grey-300'));
- setColor(palette.FilledInput, 'bg', 'rgba(255, 255, 255, 0.09)');
- setColor(palette.FilledInput, 'hoverBg', 'rgba(255, 255, 255, 0.13)');
- setColor(palette.FilledInput, 'disabledBg', 'rgba(255, 255, 255, 0.12)');
- setColor(palette.LinearProgress, 'primaryBg', safeDarken(palette.primary.main, 0.5));
- setColor(palette.LinearProgress, 'secondaryBg', safeDarken(palette.secondary.main, 0.5));
- setColor(palette.LinearProgress, 'errorBg', safeDarken(palette.error.main, 0.5));
- setColor(palette.LinearProgress, 'infoBg', safeDarken(palette.info.main, 0.5));
- setColor(palette.LinearProgress, 'successBg', safeDarken(palette.success.main, 0.5));
- setColor(palette.LinearProgress, 'warningBg', safeDarken(palette.warning.main, 0.5));
- setColor(
- palette.Skeleton,
- 'bg',
- `rgba(${setCssVarColor('palette-text-primaryChannel')} / 0.13)`,
- );
- setColor(palette.Slider, 'primaryTrack', safeDarken(palette.primary.main, 0.5));
- setColor(palette.Slider, 'secondaryTrack', safeDarken(palette.secondary.main, 0.5));
- setColor(palette.Slider, 'errorTrack', safeDarken(palette.error.main, 0.5));
- setColor(palette.Slider, 'infoTrack', safeDarken(palette.info.main, 0.5));
- setColor(palette.Slider, 'successTrack', safeDarken(palette.success.main, 0.5));
- setColor(palette.Slider, 'warningTrack', safeDarken(palette.warning.main, 0.5));
- const snackbarContentBackground = safeEmphasize(palette.background.default, 0.98);
- setColor(palette.SnackbarContent, 'bg', snackbarContentBackground);
- setColor(
- palette.SnackbarContent,
- 'color',
- silent(() => darkPalette.getContrastText(snackbarContentBackground)),
- );
- setColor(
- palette.SpeedDialAction,
- 'fabHoverBg',
- safeEmphasize(palette.background.paper, 0.15),
- );
- setColor(palette.StepConnector, 'border', setCssVarColor('palette-grey-600'));
- setColor(palette.StepContent, 'border', setCssVarColor('palette-grey-600'));
- setColor(palette.Switch, 'defaultColor', setCssVarColor('palette-grey-300'));
- setColor(palette.Switch, 'defaultDisabledColor', setCssVarColor('palette-grey-600'));
- setColor(palette.Switch, 'primaryDisabledColor', safeDarken(palette.primary.main, 0.55));
- setColor(palette.Switch, 'secondaryDisabledColor', safeDarken(palette.secondary.main, 0.55));
- setColor(palette.Switch, 'errorDisabledColor', safeDarken(palette.error.main, 0.55));
- setColor(palette.Switch, 'infoDisabledColor', safeDarken(palette.info.main, 0.55));
- setColor(palette.Switch, 'successDisabledColor', safeDarken(palette.success.main, 0.55));
- setColor(palette.Switch, 'warningDisabledColor', safeDarken(palette.warning.main, 0.55));
- setColor(palette.TableCell, 'border', safeDarken(safeAlpha(palette.divider, 1), 0.68));
- setColor(palette.Tooltip, 'bg', safeAlpha(palette.grey[700], 0.92));
- }
-
- // MUI X - DataGrid needs this token.
- setColorChannel(palette.background, 'default');
-
- // added for consistency with the `background.default` token
- setColorChannel(palette.background, 'paper');
-
- setColorChannel(palette.common, 'background');
- setColorChannel(palette.common, 'onBackground');
-
- setColorChannel(palette, 'divider');
-
- Object.keys(palette).forEach((color) => {
- const colors = palette[color];
-
- // The default palettes (primary, secondary, error, info, success, and warning) errors are handled by the above `createTheme(...)`.
-
- if (colors && typeof colors === 'object') {
- // Silent the error for custom palettes.
- if (colors.main) {
- setColor(palette[color], 'mainChannel', safeColorChannel(toRgb(colors.main)));
- }
- if (colors.light) {
- setColor(palette[color], 'lightChannel', safeColorChannel(toRgb(colors.light)));
- }
- if (colors.dark) {
- setColor(palette[color], 'darkChannel', safeColorChannel(toRgb(colors.dark)));
- }
- if (colors.contrastText) {
- setColor(
- palette[color],
- 'contrastTextChannel',
- safeColorChannel(toRgb(colors.contrastText)),
- );
- }
-
- if (color === 'text') {
- // Text colors: text.primary, text.secondary
- setColorChannel(palette[color], 'primary');
- setColorChannel(palette[color], 'secondary');
- }
-
- if (color === 'action') {
- // Action colors: action.active, action.selected
- if (colors.active) {
- setColorChannel(palette[color], 'active');
- }
- if (colors.selected) {
- setColorChannel(palette[color], 'selected');
- }
- }
- }
- });
- });
-
- theme = args.reduce((acc, argument) => deepmerge(acc, argument), theme);
-
- const parserConfig = {
- prefix: cssVarPrefix,
- shouldSkipGeneratingVar,
- getSelector: getSelector || defaultGetSelector(theme),
- };
- const { vars, generateThemeVars, generateStyleSheets } = prepareCssVars(theme, parserConfig);
- theme.attribute = 'data-mui-color-scheme';
- theme.colorSchemeSelector = ':root';
- theme.vars = vars;
- Object.entries(theme.colorSchemes[theme.defaultColorScheme]).forEach(([key, value]) => {
- theme[key] = value;
- });
- theme.generateThemeVars = generateThemeVars;
- theme.generateStyleSheets = generateStyleSheets;
- theme.generateSpacing = function generateSpacing() {
- return createSpacing(input.spacing, createUnarySpacing(this));
- };
- theme.getColorSchemeSelector = (colorScheme) => `[${theme.attribute}="${colorScheme}"] &`;
- theme.spacing = theme.generateSpacing();
- theme.shouldSkipGeneratingVar = shouldSkipGeneratingVar;
- theme.unstable_sxConfig = {
- ...defaultSxConfig,
- ...input?.unstable_sxConfig,
- };
- theme.unstable_sx = function sx(props) {
- return styleFunctionSx({
- sx: props,
- theme: this,
- });
- };
- return theme;
+ return extendTheme(...args);
}
diff --git a/packages/mui-material/src/styles/experimental_extendTheme.d.ts b/packages/mui-material/src/styles/extendTheme.d.ts
similarity index 99%
rename from packages/mui-material/src/styles/experimental_extendTheme.d.ts
rename to packages/mui-material/src/styles/extendTheme.d.ts
index b82af5287cf4aa..6a01d0dae59322 100644
--- a/packages/mui-material/src/styles/experimental_extendTheme.d.ts
+++ b/packages/mui-material/src/styles/extendTheme.d.ts
@@ -1,4 +1,3 @@
-/* eslint-disable @typescript-eslint/naming-convention */
import { OverridableStringUnion } from '@mui/types';
import { SxConfig, SxProps, CSSObject, ApplyStyles } from '@mui/system';
import { ExtractTypographyTokens } from '@mui/system/cssVars';
@@ -465,7 +464,7 @@ export interface CssVarsTheme extends ColorSystem {
* @param args Deep merge the arguments with the about to be returned theme.
* @returns A complete, ready-to-use theme object.
*/
-export default function experimental_extendTheme(
+export default function extendTheme(
options?: CssVarsThemeOptions,
...args: object[]
): Omit & CssVarsTheme;
diff --git a/packages/mui-material/src/styles/extendTheme.js b/packages/mui-material/src/styles/extendTheme.js
new file mode 100644
index 00000000000000..8dea1c19f7ef61
--- /dev/null
+++ b/packages/mui-material/src/styles/extendTheme.js
@@ -0,0 +1,452 @@
+import deepmerge from '@mui/utils/deepmerge';
+import { unstable_createGetCssVar as systemCreateGetCssVar, createSpacing } from '@mui/system';
+import { createUnarySpacing } from '@mui/system/spacing';
+import { prepareCssVars, prepareTypographyVars } from '@mui/system/cssVars';
+import styleFunctionSx, {
+ unstable_defaultSxConfig as defaultSxConfig,
+} from '@mui/system/styleFunctionSx';
+
+import {
+ private_safeColorChannel as safeColorChannel,
+ private_safeAlpha as safeAlpha,
+ private_safeDarken as safeDarken,
+ private_safeLighten as safeLighten,
+ private_safeEmphasize as safeEmphasize,
+ hslToRgb,
+} from '@mui/system/colorManipulator';
+
+import defaultShouldSkipGeneratingVar from './shouldSkipGeneratingVar';
+import createThemeWithoutVars from './createTheme';
+import getOverlayAlpha from './getOverlayAlpha';
+import defaultGetSelector from './createGetSelector';
+
+const defaultDarkOverlays = [...Array(25)].map((_, index) => {
+ if (index === 0) {
+ return undefined;
+ }
+ const overlay = getOverlayAlpha(index);
+ return `linear-gradient(rgba(255 255 255 / ${overlay}), rgba(255 255 255 / ${overlay}))`;
+});
+
+function assignNode(obj, keys) {
+ keys.forEach((k) => {
+ if (!obj[k]) {
+ obj[k] = {};
+ }
+ });
+}
+
+function setColor(obj, key, defaultValue) {
+ if (!obj[key] && defaultValue) {
+ obj[key] = defaultValue;
+ }
+}
+
+function toRgb(color) {
+ if (!color || !color.startsWith('hsl')) {
+ return color;
+ }
+ return hslToRgb(color);
+}
+
+function setColorChannel(obj, key) {
+ if (!(`${key}Channel` in obj)) {
+ // custom channel token is not provided, generate one.
+ // if channel token can't be generated, show a warning.
+ obj[`${key}Channel`] = safeColorChannel(
+ toRgb(obj[key]),
+ `MUI: Can't create \`palette.${key}Channel\` because \`palette.${key}\` is not one of these formats: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().` +
+ '\n' +
+ `To suppress this warning, you need to explicitly provide the \`palette.${key}Channel\` as a string (in rgb format, for example "12 12 12") or undefined if you want to remove the channel token.`,
+ );
+ }
+}
+
+function getSpacingVal(spacingInput) {
+ if (typeof spacingInput === 'number') {
+ return `${spacingInput}px`;
+ }
+ if (typeof spacingInput === 'string') {
+ return spacingInput;
+ }
+ if (typeof spacingInput === 'function') {
+ return getSpacingVal(spacingInput(1));
+ }
+ if (Array.isArray(spacingInput)) {
+ return spacingInput;
+ }
+ return '8px';
+}
+
+const silent = (fn) => {
+ try {
+ return fn();
+ } catch (error) {
+ // ignore error
+ }
+ return undefined;
+};
+
+export const createGetCssVar = (cssVarPrefix = 'mui') => systemCreateGetCssVar(cssVarPrefix);
+
+export default function extendTheme(options = {}, ...args) {
+ const {
+ colorSchemes: colorSchemesInput = {},
+ cssVarPrefix = 'mui',
+ shouldSkipGeneratingVar = defaultShouldSkipGeneratingVar,
+ getSelector,
+ ...input
+ } = options;
+ const getCssVar = createGetCssVar(cssVarPrefix);
+
+ const { palette: lightPalette, ...muiTheme } = createThemeWithoutVars({
+ ...input,
+ ...(colorSchemesInput.light && { palette: colorSchemesInput.light?.palette }),
+ });
+ const { palette: darkPalette } = createThemeWithoutVars({
+ palette: { mode: 'dark', ...colorSchemesInput.dark?.palette },
+ });
+
+ let theme = {
+ defaultColorScheme: 'light',
+ ...muiTheme,
+ cssVarPrefix,
+ getCssVar,
+ colorSchemes: {
+ ...colorSchemesInput,
+ light: {
+ ...colorSchemesInput.light,
+ palette: lightPalette,
+ opacity: {
+ inputPlaceholder: 0.42,
+ inputUnderline: 0.42,
+ switchTrackDisabled: 0.12,
+ switchTrack: 0.38,
+ ...colorSchemesInput.light?.opacity,
+ },
+ overlays: colorSchemesInput.light?.overlays || [],
+ },
+ dark: {
+ ...colorSchemesInput.dark,
+ palette: darkPalette,
+ opacity: {
+ inputPlaceholder: 0.5,
+ inputUnderline: 0.7,
+ switchTrackDisabled: 0.2,
+ switchTrack: 0.3,
+ ...colorSchemesInput.dark?.opacity,
+ },
+ overlays: colorSchemesInput.dark?.overlays || defaultDarkOverlays,
+ },
+ },
+ font: { ...prepareTypographyVars(muiTheme.typography), ...muiTheme.font },
+ spacing: getSpacingVal(input.spacing),
+ };
+
+ Object.keys(theme.colorSchemes).forEach((key) => {
+ const palette = theme.colorSchemes[key].palette;
+
+ const setCssVarColor = (cssVar) => {
+ const tokens = cssVar.split('-');
+ const color = tokens[1];
+ const colorToken = tokens[2];
+ return getCssVar(cssVar, palette[color][colorToken]);
+ };
+
+ // attach black & white channels to common node
+ if (key === 'light') {
+ setColor(palette.common, 'background', '#fff');
+ setColor(palette.common, 'onBackground', '#000');
+ } else {
+ setColor(palette.common, 'background', '#000');
+ setColor(palette.common, 'onBackground', '#fff');
+ }
+
+ // assign component variables
+ assignNode(palette, [
+ 'Alert',
+ 'AppBar',
+ 'Avatar',
+ 'Button',
+ 'Chip',
+ 'FilledInput',
+ 'LinearProgress',
+ 'Skeleton',
+ 'Slider',
+ 'SnackbarContent',
+ 'SpeedDialAction',
+ 'StepConnector',
+ 'StepContent',
+ 'Switch',
+ 'TableCell',
+ 'Tooltip',
+ ]);
+ if (key === 'light') {
+ setColor(palette.Alert, 'errorColor', safeDarken(palette.error.light, 0.6));
+ setColor(palette.Alert, 'infoColor', safeDarken(palette.info.light, 0.6));
+ setColor(palette.Alert, 'successColor', safeDarken(palette.success.light, 0.6));
+ setColor(palette.Alert, 'warningColor', safeDarken(palette.warning.light, 0.6));
+ setColor(palette.Alert, 'errorFilledBg', setCssVarColor('palette-error-main'));
+ setColor(palette.Alert, 'infoFilledBg', setCssVarColor('palette-info-main'));
+ setColor(palette.Alert, 'successFilledBg', setCssVarColor('palette-success-main'));
+ setColor(palette.Alert, 'warningFilledBg', setCssVarColor('palette-warning-main'));
+ setColor(
+ palette.Alert,
+ 'errorFilledColor',
+ silent(() => lightPalette.getContrastText(palette.error.main)),
+ );
+ setColor(
+ palette.Alert,
+ 'infoFilledColor',
+ silent(() => lightPalette.getContrastText(palette.info.main)),
+ );
+ setColor(
+ palette.Alert,
+ 'successFilledColor',
+ silent(() => lightPalette.getContrastText(palette.success.main)),
+ );
+ setColor(
+ palette.Alert,
+ 'warningFilledColor',
+ silent(() => lightPalette.getContrastText(palette.warning.main)),
+ );
+ setColor(palette.Alert, 'errorStandardBg', safeLighten(palette.error.light, 0.9));
+ setColor(palette.Alert, 'infoStandardBg', safeLighten(palette.info.light, 0.9));
+ setColor(palette.Alert, 'successStandardBg', safeLighten(palette.success.light, 0.9));
+ setColor(palette.Alert, 'warningStandardBg', safeLighten(palette.warning.light, 0.9));
+ setColor(palette.Alert, 'errorIconColor', setCssVarColor('palette-error-main'));
+ setColor(palette.Alert, 'infoIconColor', setCssVarColor('palette-info-main'));
+ setColor(palette.Alert, 'successIconColor', setCssVarColor('palette-success-main'));
+ setColor(palette.Alert, 'warningIconColor', setCssVarColor('palette-warning-main'));
+ setColor(palette.AppBar, 'defaultBg', setCssVarColor('palette-grey-100'));
+ setColor(palette.Avatar, 'defaultBg', setCssVarColor('palette-grey-400'));
+ setColor(palette.Button, 'inheritContainedBg', setCssVarColor('palette-grey-300'));
+ setColor(palette.Button, 'inheritContainedHoverBg', setCssVarColor('palette-grey-A100'));
+ setColor(palette.Chip, 'defaultBorder', setCssVarColor('palette-grey-400'));
+ setColor(palette.Chip, 'defaultAvatarColor', setCssVarColor('palette-grey-700'));
+ setColor(palette.Chip, 'defaultIconColor', setCssVarColor('palette-grey-700'));
+ setColor(palette.FilledInput, 'bg', 'rgba(0, 0, 0, 0.06)');
+ setColor(palette.FilledInput, 'hoverBg', 'rgba(0, 0, 0, 0.09)');
+ setColor(palette.FilledInput, 'disabledBg', 'rgba(0, 0, 0, 0.12)');
+ setColor(palette.LinearProgress, 'primaryBg', safeLighten(palette.primary.main, 0.62));
+ setColor(palette.LinearProgress, 'secondaryBg', safeLighten(palette.secondary.main, 0.62));
+ setColor(palette.LinearProgress, 'errorBg', safeLighten(palette.error.main, 0.62));
+ setColor(palette.LinearProgress, 'infoBg', safeLighten(palette.info.main, 0.62));
+ setColor(palette.LinearProgress, 'successBg', safeLighten(palette.success.main, 0.62));
+ setColor(palette.LinearProgress, 'warningBg', safeLighten(palette.warning.main, 0.62));
+ setColor(
+ palette.Skeleton,
+ 'bg',
+ `rgba(${setCssVarColor('palette-text-primaryChannel')} / 0.11)`,
+ );
+ setColor(palette.Slider, 'primaryTrack', safeLighten(palette.primary.main, 0.62));
+ setColor(palette.Slider, 'secondaryTrack', safeLighten(palette.secondary.main, 0.62));
+ setColor(palette.Slider, 'errorTrack', safeLighten(palette.error.main, 0.62));
+ setColor(palette.Slider, 'infoTrack', safeLighten(palette.info.main, 0.62));
+ setColor(palette.Slider, 'successTrack', safeLighten(palette.success.main, 0.62));
+ setColor(palette.Slider, 'warningTrack', safeLighten(palette.warning.main, 0.62));
+ const snackbarContentBackground = safeEmphasize(palette.background.default, 0.8);
+ setColor(palette.SnackbarContent, 'bg', snackbarContentBackground);
+ setColor(
+ palette.SnackbarContent,
+ 'color',
+ silent(() => lightPalette.getContrastText(snackbarContentBackground)),
+ );
+ setColor(
+ palette.SpeedDialAction,
+ 'fabHoverBg',
+ safeEmphasize(palette.background.paper, 0.15),
+ );
+ setColor(palette.StepConnector, 'border', setCssVarColor('palette-grey-400'));
+ setColor(palette.StepContent, 'border', setCssVarColor('palette-grey-400'));
+ setColor(palette.Switch, 'defaultColor', setCssVarColor('palette-common-white'));
+ setColor(palette.Switch, 'defaultDisabledColor', setCssVarColor('palette-grey-100'));
+ setColor(palette.Switch, 'primaryDisabledColor', safeLighten(palette.primary.main, 0.62));
+ setColor(palette.Switch, 'secondaryDisabledColor', safeLighten(palette.secondary.main, 0.62));
+ setColor(palette.Switch, 'errorDisabledColor', safeLighten(palette.error.main, 0.62));
+ setColor(palette.Switch, 'infoDisabledColor', safeLighten(palette.info.main, 0.62));
+ setColor(palette.Switch, 'successDisabledColor', safeLighten(palette.success.main, 0.62));
+ setColor(palette.Switch, 'warningDisabledColor', safeLighten(palette.warning.main, 0.62));
+ setColor(palette.TableCell, 'border', safeLighten(safeAlpha(palette.divider, 1), 0.88));
+ setColor(palette.Tooltip, 'bg', safeAlpha(palette.grey[700], 0.92));
+ } else {
+ setColor(palette.Alert, 'errorColor', safeLighten(palette.error.light, 0.6));
+ setColor(palette.Alert, 'infoColor', safeLighten(palette.info.light, 0.6));
+ setColor(palette.Alert, 'successColor', safeLighten(palette.success.light, 0.6));
+ setColor(palette.Alert, 'warningColor', safeLighten(palette.warning.light, 0.6));
+ setColor(palette.Alert, 'errorFilledBg', setCssVarColor('palette-error-dark'));
+ setColor(palette.Alert, 'infoFilledBg', setCssVarColor('palette-info-dark'));
+ setColor(palette.Alert, 'successFilledBg', setCssVarColor('palette-success-dark'));
+ setColor(palette.Alert, 'warningFilledBg', setCssVarColor('palette-warning-dark'));
+ setColor(
+ palette.Alert,
+ 'errorFilledColor',
+ silent(() => darkPalette.getContrastText(palette.error.dark)),
+ );
+ setColor(
+ palette.Alert,
+ 'infoFilledColor',
+ silent(() => darkPalette.getContrastText(palette.info.dark)),
+ );
+ setColor(
+ palette.Alert,
+ 'successFilledColor',
+ silent(() => darkPalette.getContrastText(palette.success.dark)),
+ );
+ setColor(
+ palette.Alert,
+ 'warningFilledColor',
+ silent(() => darkPalette.getContrastText(palette.warning.dark)),
+ );
+ setColor(palette.Alert, 'errorStandardBg', safeDarken(palette.error.light, 0.9));
+ setColor(palette.Alert, 'infoStandardBg', safeDarken(palette.info.light, 0.9));
+ setColor(palette.Alert, 'successStandardBg', safeDarken(palette.success.light, 0.9));
+ setColor(palette.Alert, 'warningStandardBg', safeDarken(palette.warning.light, 0.9));
+ setColor(palette.Alert, 'errorIconColor', setCssVarColor('palette-error-main'));
+ setColor(palette.Alert, 'infoIconColor', setCssVarColor('palette-info-main'));
+ setColor(palette.Alert, 'successIconColor', setCssVarColor('palette-success-main'));
+ setColor(palette.Alert, 'warningIconColor', setCssVarColor('palette-warning-main'));
+ setColor(palette.AppBar, 'defaultBg', setCssVarColor('palette-grey-900'));
+ setColor(palette.AppBar, 'darkBg', setCssVarColor('palette-background-paper')); // specific for dark mode
+ setColor(palette.AppBar, 'darkColor', setCssVarColor('palette-text-primary')); // specific for dark mode
+ setColor(palette.Avatar, 'defaultBg', setCssVarColor('palette-grey-600'));
+ setColor(palette.Button, 'inheritContainedBg', setCssVarColor('palette-grey-800'));
+ setColor(palette.Button, 'inheritContainedHoverBg', setCssVarColor('palette-grey-700'));
+ setColor(palette.Chip, 'defaultBorder', setCssVarColor('palette-grey-700'));
+ setColor(palette.Chip, 'defaultAvatarColor', setCssVarColor('palette-grey-300'));
+ setColor(palette.Chip, 'defaultIconColor', setCssVarColor('palette-grey-300'));
+ setColor(palette.FilledInput, 'bg', 'rgba(255, 255, 255, 0.09)');
+ setColor(palette.FilledInput, 'hoverBg', 'rgba(255, 255, 255, 0.13)');
+ setColor(palette.FilledInput, 'disabledBg', 'rgba(255, 255, 255, 0.12)');
+ setColor(palette.LinearProgress, 'primaryBg', safeDarken(palette.primary.main, 0.5));
+ setColor(palette.LinearProgress, 'secondaryBg', safeDarken(palette.secondary.main, 0.5));
+ setColor(palette.LinearProgress, 'errorBg', safeDarken(palette.error.main, 0.5));
+ setColor(palette.LinearProgress, 'infoBg', safeDarken(palette.info.main, 0.5));
+ setColor(palette.LinearProgress, 'successBg', safeDarken(palette.success.main, 0.5));
+ setColor(palette.LinearProgress, 'warningBg', safeDarken(palette.warning.main, 0.5));
+ setColor(
+ palette.Skeleton,
+ 'bg',
+ `rgba(${setCssVarColor('palette-text-primaryChannel')} / 0.13)`,
+ );
+ setColor(palette.Slider, 'primaryTrack', safeDarken(palette.primary.main, 0.5));
+ setColor(palette.Slider, 'secondaryTrack', safeDarken(palette.secondary.main, 0.5));
+ setColor(palette.Slider, 'errorTrack', safeDarken(palette.error.main, 0.5));
+ setColor(palette.Slider, 'infoTrack', safeDarken(palette.info.main, 0.5));
+ setColor(palette.Slider, 'successTrack', safeDarken(palette.success.main, 0.5));
+ setColor(palette.Slider, 'warningTrack', safeDarken(palette.warning.main, 0.5));
+ const snackbarContentBackground = safeEmphasize(palette.background.default, 0.98);
+ setColor(palette.SnackbarContent, 'bg', snackbarContentBackground);
+ setColor(
+ palette.SnackbarContent,
+ 'color',
+ silent(() => darkPalette.getContrastText(snackbarContentBackground)),
+ );
+ setColor(
+ palette.SpeedDialAction,
+ 'fabHoverBg',
+ safeEmphasize(palette.background.paper, 0.15),
+ );
+ setColor(palette.StepConnector, 'border', setCssVarColor('palette-grey-600'));
+ setColor(palette.StepContent, 'border', setCssVarColor('palette-grey-600'));
+ setColor(palette.Switch, 'defaultColor', setCssVarColor('palette-grey-300'));
+ setColor(palette.Switch, 'defaultDisabledColor', setCssVarColor('palette-grey-600'));
+ setColor(palette.Switch, 'primaryDisabledColor', safeDarken(palette.primary.main, 0.55));
+ setColor(palette.Switch, 'secondaryDisabledColor', safeDarken(palette.secondary.main, 0.55));
+ setColor(palette.Switch, 'errorDisabledColor', safeDarken(palette.error.main, 0.55));
+ setColor(palette.Switch, 'infoDisabledColor', safeDarken(palette.info.main, 0.55));
+ setColor(palette.Switch, 'successDisabledColor', safeDarken(palette.success.main, 0.55));
+ setColor(palette.Switch, 'warningDisabledColor', safeDarken(palette.warning.main, 0.55));
+ setColor(palette.TableCell, 'border', safeDarken(safeAlpha(palette.divider, 1), 0.68));
+ setColor(palette.Tooltip, 'bg', safeAlpha(palette.grey[700], 0.92));
+ }
+
+ // MUI X - DataGrid needs this token.
+ setColorChannel(palette.background, 'default');
+
+ // added for consistency with the `background.default` token
+ setColorChannel(palette.background, 'paper');
+
+ setColorChannel(palette.common, 'background');
+ setColorChannel(palette.common, 'onBackground');
+
+ setColorChannel(palette, 'divider');
+
+ Object.keys(palette).forEach((color) => {
+ const colors = palette[color];
+
+ // The default palettes (primary, secondary, error, info, success, and warning) errors are handled by the above `createTheme(...)`.
+
+ if (colors && typeof colors === 'object') {
+ // Silent the error for custom palettes.
+ if (colors.main) {
+ setColor(palette[color], 'mainChannel', safeColorChannel(toRgb(colors.main)));
+ }
+ if (colors.light) {
+ setColor(palette[color], 'lightChannel', safeColorChannel(toRgb(colors.light)));
+ }
+ if (colors.dark) {
+ setColor(palette[color], 'darkChannel', safeColorChannel(toRgb(colors.dark)));
+ }
+ if (colors.contrastText) {
+ setColor(
+ palette[color],
+ 'contrastTextChannel',
+ safeColorChannel(toRgb(colors.contrastText)),
+ );
+ }
+
+ if (color === 'text') {
+ // Text colors: text.primary, text.secondary
+ setColorChannel(palette[color], 'primary');
+ setColorChannel(palette[color], 'secondary');
+ }
+
+ if (color === 'action') {
+ // Action colors: action.active, action.selected
+ if (colors.active) {
+ setColorChannel(palette[color], 'active');
+ }
+ if (colors.selected) {
+ setColorChannel(palette[color], 'selected');
+ }
+ }
+ }
+ });
+ });
+
+ theme = args.reduce((acc, argument) => deepmerge(acc, argument), theme);
+
+ const parserConfig = {
+ prefix: cssVarPrefix,
+ shouldSkipGeneratingVar,
+ getSelector: getSelector || defaultGetSelector(theme),
+ };
+ const { vars, generateThemeVars, generateStyleSheets } = prepareCssVars(theme, parserConfig);
+ theme.attribute = 'data-mui-color-scheme';
+ theme.colorSchemeSelector = ':root';
+ theme.vars = vars;
+ Object.entries(theme.colorSchemes[theme.defaultColorScheme]).forEach(([key, value]) => {
+ theme[key] = value;
+ });
+ theme.generateThemeVars = generateThemeVars;
+ theme.generateStyleSheets = generateStyleSheets;
+ theme.generateSpacing = function generateSpacing() {
+ return createSpacing(input.spacing, createUnarySpacing(this));
+ };
+ theme.getColorSchemeSelector = (colorScheme) => `[${theme.attribute}="${colorScheme}"] &`;
+ theme.spacing = theme.generateSpacing();
+ theme.shouldSkipGeneratingVar = shouldSkipGeneratingVar;
+ theme.unstable_sxConfig = {
+ ...defaultSxConfig,
+ ...input?.unstable_sxConfig,
+ };
+ theme.unstable_sx = function sx(props) {
+ return styleFunctionSx({
+ sx: props,
+ theme: this,
+ });
+ };
+
+ return theme;
+}
diff --git a/packages/mui-material/src/styles/experimental_extendTheme.spec.ts b/packages/mui-material/src/styles/extendTheme.spec.ts
similarity index 86%
rename from packages/mui-material/src/styles/experimental_extendTheme.spec.ts
rename to packages/mui-material/src/styles/extendTheme.spec.ts
index 96e6b8b89b5256..ae8722c899c93b 100644
--- a/packages/mui-material/src/styles/experimental_extendTheme.spec.ts
+++ b/packages/mui-material/src/styles/extendTheme.spec.ts
@@ -1,4 +1,4 @@
-import { experimental_extendTheme as extendTheme } from '@mui/material/styles';
+import { extendTheme } from '@mui/material/styles';
const theme = extendTheme();
diff --git a/packages/mui-material/src/styles/experimental_extendTheme.test.js b/packages/mui-material/src/styles/extendTheme.test.js
similarity index 99%
rename from packages/mui-material/src/styles/experimental_extendTheme.test.js
rename to packages/mui-material/src/styles/extendTheme.test.js
index 601dc385562a73..a06f9b4eea416c 100644
--- a/packages/mui-material/src/styles/experimental_extendTheme.test.js
+++ b/packages/mui-material/src/styles/extendTheme.test.js
@@ -2,14 +2,10 @@ import * as React from 'react';
import { expect } from 'chai';
import { createRenderer } from '@mui-internal/test-utils';
import Button from '@mui/material/Button';
-import {
- Experimental_CssVarsProvider as CssVarsProvider,
- experimental_extendTheme as extendTheme,
- styled,
-} from '@mui/material/styles';
+import { CssVarsProvider, extendTheme, styled } from '@mui/material/styles';
import { deepOrange, green } from '@mui/material/colors';
-describe('experimental_extendTheme', () => {
+describe('extendTheme', () => {
let originalMatchmedia;
const { render } = createRenderer();
const storage = {};
diff --git a/packages/mui-material/src/styles/index.d.ts b/packages/mui-material/src/styles/index.d.ts
index 234aed07d592ce..8db9015025569e 100644
--- a/packages/mui-material/src/styles/index.d.ts
+++ b/packages/mui-material/src/styles/index.d.ts
@@ -99,7 +99,7 @@ export { default as withTheme } from './withTheme';
export * from './CssVarsProvider';
-export { default as experimental_extendTheme } from './experimental_extendTheme';
+export { default as extendTheme } from './extendTheme';
export type {
ColorSchemeOverrides,
SupportedColorScheme,
@@ -132,7 +132,7 @@ export type {
ThemeCssVar,
ThemeCssVarOverrides,
ColorSystemOptions,
-} from './experimental_extendTheme';
+} from './extendTheme';
export { default as getOverlayAlpha } from './getOverlayAlpha';
export { default as shouldSkipGeneratingVar } from './shouldSkipGeneratingVar';
diff --git a/packages/mui-material/src/styles/index.js b/packages/mui-material/src/styles/index.js
index 42e3a789b6c13c..82a05b20ac68e6 100644
--- a/packages/mui-material/src/styles/index.js
+++ b/packages/mui-material/src/styles/index.js
@@ -45,7 +45,8 @@ export { default as withStyles } from './withStyles';
export { default as withTheme } from './withTheme';
export * from './CssVarsProvider';
-export { default as experimental_extendTheme } from './experimental_extendTheme';
+export { default as extendTheme } from './extendTheme';
+export { default as experimental_extendTheme } from './experimental_extendTheme'; // TODO: Remove in v7
export { default as getOverlayAlpha } from './getOverlayAlpha';
export { default as shouldSkipGeneratingVar } from './shouldSkipGeneratingVar';
diff --git a/packages/mui-material/src/styles/responsiveFontSizes.js b/packages/mui-material/src/styles/responsiveFontSizes.js
index fe0a5a6eda7d4f..e01b0a3e186c5c 100644
--- a/packages/mui-material/src/styles/responsiveFontSizes.js
+++ b/packages/mui-material/src/styles/responsiveFontSizes.js
@@ -34,6 +34,11 @@ export default function responsiveFontSizes(themeInput, options = {}) {
variants.forEach((variant) => {
const style = typography[variant];
+
+ if (!style) {
+ return;
+ }
+
const remFontSize = parseFloat(convert(style.fontSize, 'rem'));
if (remFontSize <= 1) {
diff --git a/packages/mui-material/src/styles/responsiveFontSizes.test.js b/packages/mui-material/src/styles/responsiveFontSizes.test.js
index 2383c2ecddd6c2..bf7da7e0d2a9ef 100644
--- a/packages/mui-material/src/styles/responsiveFontSizes.test.js
+++ b/packages/mui-material/src/styles/responsiveFontSizes.test.js
@@ -59,6 +59,19 @@ describe('responsiveFontSizes', () => {
});
});
+ it('should handle variants that have been reset to undefined', () => {
+ const theme = createTheme({
+ typography: {
+ h1: undefined,
+ },
+ });
+ const { typography } = responsiveFontSizes(theme, {
+ disableAlign: true,
+ });
+
+ expect(typography.h1).to.deep.equal(undefined);
+ });
+
describe('when requesting a responsive typography with non unitless line height and alignment', () => {
it('should throw an error, as this is not supported', () => {
const theme = createTheme({
diff --git a/packages/mui-material/src/themeCssVarsAugmentation/index.d.ts b/packages/mui-material/src/themeCssVarsAugmentation/index.d.ts
index b34facddabf5d9..06f66f75d2088a 100644
--- a/packages/mui-material/src/themeCssVarsAugmentation/index.d.ts
+++ b/packages/mui-material/src/themeCssVarsAugmentation/index.d.ts
@@ -6,7 +6,7 @@ import type {
PaletteColorChannel,
PaletteTextChannel,
PaletteActionChannel,
-} from '../styles/experimental_extendTheme';
+} from '../styles/extendTheme';
/**
* Enhance the theme types to include new properties from the CssVarsProvider.
diff --git a/packages/mui-material/src/types/OverridableComponentAugmentation.ts b/packages/mui-material/src/types/OverridableComponentAugmentation.ts
index e3b9d08664e56f..f7f3bb22765d8b 100644
--- a/packages/mui-material/src/types/OverridableComponentAugmentation.ts
+++ b/packages/mui-material/src/types/OverridableComponentAugmentation.ts
@@ -16,8 +16,8 @@ declare module '@mui/material/OverridableComponent' {
*/
component: DefaultComponent;
} & OverridePropsVer2,
- ): JSX.Element;
- (props: DefaultComponentPropsVer2): JSX.Element;
+ ): React.JSX.Element;
+ (props: DefaultComponentPropsVer2): React.JSX.Element;
}
/**
diff --git a/packages/mui-material/test/describeConformance.ts b/packages/mui-material/test/describeConformance.ts
index 633cf72e03ebbe..4715d91bad6817 100644
--- a/packages/mui-material/test/describeConformance.ts
+++ b/packages/mui-material/test/describeConformance.ts
@@ -5,7 +5,7 @@ import {
import { ThemeProvider, createTheme } from '@mui/material/styles';
export default function describeConformance(
- minimalElement: React.ReactElement,
+ minimalElement: React.ReactElement,
getOptions: () => ConformanceOptions,
) {
function getOptionsWithDefaults() {
diff --git a/packages/mui-material/test/typescript/moduleAugmentation/themeCssVariables.spec.tsx b/packages/mui-material/test/typescript/moduleAugmentation/themeCssVariables.spec.tsx
index 7c319f041a45a1..b6a26ebfc464ba 100644
--- a/packages/mui-material/test/typescript/moduleAugmentation/themeCssVariables.spec.tsx
+++ b/packages/mui-material/test/typescript/moduleAugmentation/themeCssVariables.spec.tsx
@@ -1,5 +1,5 @@
// testing docs/src/pages/customization/theme-components/theme-components.md
-import { styled, experimental_extendTheme as extendTheme } from '@mui/material/styles';
+import { styled, extendTheme } from '@mui/material/styles';
import type {} from '@mui/material/themeCssVarsAugmentation';
declare module '@mui/material/styles' {
diff --git a/packages/mui-material/test/typescript/moduleAugmentation/themeGetCssVar.spec.tsx b/packages/mui-material/test/typescript/moduleAugmentation/themeGetCssVar.spec.tsx
index 96c53215f78be1..8690b12518c372 100644
--- a/packages/mui-material/test/typescript/moduleAugmentation/themeGetCssVar.spec.tsx
+++ b/packages/mui-material/test/typescript/moduleAugmentation/themeGetCssVar.spec.tsx
@@ -1,4 +1,4 @@
-import { experimental_extendTheme as extendTheme } from '@mui/material/styles';
+import { extendTheme } from '@mui/material/styles';
import type {} from '@mui/material/themeCssVarsAugmentation';
declare module '@mui/material/styles' {
diff --git a/packages/mui-private-theming/package.json b/packages/mui-private-theming/package.json
index 5aaea93a6ba4ab..7349046aa2e34d 100644
--- a/packages/mui-private-theming/package.json
+++ b/packages/mui-private-theming/package.json
@@ -37,7 +37,7 @@
"typescript": "tsc -p tsconfig.json"
},
"dependencies": {
- "@babel/runtime": "^7.24.5",
+ "@babel/runtime": "^7.24.6",
"@mui/utils": "workspace:^",
"prop-types": "^15.8.1"
},
diff --git a/packages/mui-styled-engine-sc/package.json b/packages/mui-styled-engine-sc/package.json
index 518d19a65a450f..2e8da75804a2c5 100644
--- a/packages/mui-styled-engine-sc/package.json
+++ b/packages/mui-styled-engine-sc/package.json
@@ -37,7 +37,7 @@
"typescript": "tsc -p tsconfig.json"
},
"dependencies": {
- "@babel/runtime": "^7.24.5",
+ "@babel/runtime": "^7.24.6",
"csstype": "^3.1.3",
"hoist-non-react-statics": "^3.3.2",
"prop-types": "^15.8.1"
diff --git a/packages/mui-styled-engine-sc/src/GlobalStyles/GlobalStyles.d.ts b/packages/mui-styled-engine-sc/src/GlobalStyles/GlobalStyles.d.ts
index 6e46a0722a27e1..0c2ef1cd47e33f 100644
--- a/packages/mui-styled-engine-sc/src/GlobalStyles/GlobalStyles.d.ts
+++ b/packages/mui-styled-engine-sc/src/GlobalStyles/GlobalStyles.d.ts
@@ -8,4 +8,4 @@ export interface GlobalStylesProps {
export default function Global(
props: GlobalStylesProps,
-): React.ReactElement;
+): React.ReactElement;
diff --git a/packages/mui-styled-engine-sc/src/GlobalStyles/GlobalStyles.spec.tsx b/packages/mui-styled-engine-sc/src/GlobalStyles/GlobalStyles.spec.tsx
index a87926dad34aac..f253f453661a40 100644
--- a/packages/mui-styled-engine-sc/src/GlobalStyles/GlobalStyles.spec.tsx
+++ b/packages/mui-styled-engine-sc/src/GlobalStyles/GlobalStyles.spec.tsx
@@ -25,7 +25,7 @@ export interface GlobalStylesProps {
styles: SCGlobalStylesProps['styles'];
}
-function GlobalStyles(props: GlobalStylesProps): React.ReactElement {
+function GlobalStyles(props: GlobalStylesProps): React.ReactElement