@mui/material 7.0.0-beta.2 → 7.0.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/Accordion/Accordion.d.ts +13 -2
  2. package/Accordion/Accordion.js +18 -6
  3. package/AccordionSummary/AccordionSummary.d.ts +39 -4
  4. package/AccordionSummary/AccordionSummary.js +67 -16
  5. package/CHANGELOG.md +80 -0
  6. package/ListItemText/ListItemText.d.ts +10 -0
  7. package/ListItemText/ListItemText.js +14 -5
  8. package/Radio/Radio.js +3 -1
  9. package/SpeedDial/SpeedDial.d.ts +10 -0
  10. package/SpeedDial/SpeedDial.js +40 -11
  11. package/SpeedDialAction/SpeedDialAction.js +1 -1
  12. package/TextareaAutosize/TextareaAutosize.js +25 -14
  13. package/Tooltip/Tooltip.d.ts +1 -1
  14. package/Tooltip/Tooltip.js +1 -1
  15. package/Typography/Typography.d.ts +3 -3
  16. package/esm/Accordion/Accordion.d.ts +13 -2
  17. package/esm/Accordion/Accordion.js +18 -6
  18. package/esm/AccordionSummary/AccordionSummary.d.ts +39 -4
  19. package/esm/AccordionSummary/AccordionSummary.js +67 -16
  20. package/esm/ListItemText/ListItemText.d.ts +10 -0
  21. package/esm/ListItemText/ListItemText.js +14 -5
  22. package/esm/Radio/Radio.js +3 -1
  23. package/esm/SpeedDial/SpeedDial.d.ts +10 -0
  24. package/esm/SpeedDial/SpeedDial.js +40 -11
  25. package/esm/SpeedDialAction/SpeedDialAction.js +1 -1
  26. package/esm/TextareaAutosize/TextareaAutosize.js +26 -15
  27. package/esm/Tooltip/Tooltip.d.ts +1 -1
  28. package/esm/Tooltip/Tooltip.js +1 -1
  29. package/esm/Typography/Typography.d.ts +3 -3
  30. package/esm/index.js +1 -1
  31. package/esm/styles/ThemeProvider.d.ts +12 -0
  32. package/esm/styles/ThemeProvider.js +11 -0
  33. package/esm/styles/ThemeProviderWithVars.d.ts +1 -0
  34. package/esm/styles/adaptV4Theme.d.ts +2 -2
  35. package/esm/styles/createThemeNoVars.d.ts +3 -3
  36. package/esm/styles/createTypography.d.ts +4 -4
  37. package/esm/styles/index.d.ts +2 -1
  38. package/esm/styles/responsiveFontSizes.d.ts +3 -3
  39. package/esm/useScrollTrigger/useScrollTrigger.d.ts +1 -1
  40. package/esm/useScrollTrigger/useScrollTrigger.js +3 -0
  41. package/esm/version/index.js +2 -2
  42. package/index.js +1 -1
  43. package/modern/Accordion/Accordion.d.ts +13 -2
  44. package/modern/Accordion/Accordion.js +18 -6
  45. package/modern/AccordionSummary/AccordionSummary.d.ts +39 -4
  46. package/modern/AccordionSummary/AccordionSummary.js +67 -16
  47. package/modern/ListItemText/ListItemText.d.ts +10 -0
  48. package/modern/ListItemText/ListItemText.js +14 -5
  49. package/modern/Radio/Radio.js +3 -1
  50. package/modern/SpeedDial/SpeedDial.d.ts +10 -0
  51. package/modern/SpeedDial/SpeedDial.js +40 -11
  52. package/modern/SpeedDialAction/SpeedDialAction.js +1 -1
  53. package/modern/TextareaAutosize/TextareaAutosize.js +26 -15
  54. package/modern/Tooltip/Tooltip.d.ts +1 -1
  55. package/modern/Tooltip/Tooltip.js +1 -1
  56. package/modern/Typography/Typography.d.ts +3 -3
  57. package/modern/index.js +1 -1
  58. package/modern/styles/ThemeProvider.d.ts +12 -0
  59. package/modern/styles/ThemeProvider.js +11 -0
  60. package/modern/styles/ThemeProviderWithVars.d.ts +1 -0
  61. package/modern/styles/adaptV4Theme.d.ts +2 -2
  62. package/modern/styles/createThemeNoVars.d.ts +3 -3
  63. package/modern/styles/createTypography.d.ts +4 -4
  64. package/modern/styles/index.d.ts +2 -1
  65. package/modern/styles/responsiveFontSizes.d.ts +3 -3
  66. package/modern/useScrollTrigger/useScrollTrigger.d.ts +1 -1
  67. package/modern/useScrollTrigger/useScrollTrigger.js +3 -0
  68. package/modern/version/index.js +2 -2
  69. package/package.json +6 -6
  70. package/styles/ThemeProvider.d.ts +12 -0
  71. package/styles/ThemeProvider.js +11 -0
  72. package/styles/ThemeProviderWithVars.d.ts +1 -0
  73. package/styles/adaptV4Theme.d.ts +2 -2
  74. package/styles/createThemeNoVars.d.ts +3 -3
  75. package/styles/createTypography.d.ts +4 -4
  76. package/styles/index.d.ts +2 -1
  77. package/styles/responsiveFontSizes.d.ts +3 -3
  78. package/tsconfig.build.tsbuildinfo +1 -1
  79. package/useScrollTrigger/useScrollTrigger.d.ts +1 -1
  80. package/useScrollTrigger/useScrollTrigger.js +3 -0
  81. package/version/index.js +2 -2
@@ -2,7 +2,7 @@
2
2
 
3
3
  import * as React from 'react';
4
4
  import PropTypes from 'prop-types';
5
- import { unstable_debounce as debounce, unstable_useForkRef as useForkRef, unstable_useEnhancedEffect as useEnhancedEffect, unstable_ownerWindow as ownerWindow } from '@mui/utils';
5
+ import { unstable_debounce as debounce, unstable_useForkRef as useForkRef, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useEventCallback as useEventCallback, unstable_ownerWindow as ownerWindow } from '@mui/utils';
6
6
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
7
  function getStyleValue(value) {
8
8
  return parseInt(value, 10) || 0;
@@ -112,6 +112,15 @@ const TextareaAutosize = /*#__PURE__*/React.forwardRef(function TextareaAutosize
112
112
  overflowing
113
113
  };
114
114
  }, [maxRows, minRows, props.placeholder]);
115
+ const didHeightChange = useEventCallback(() => {
116
+ const textarea = textareaRef.current;
117
+ const textareaStyles = calculateTextareaStyles();
118
+ if (!textarea || !textareaStyles || isEmpty(textareaStyles)) {
119
+ return false;
120
+ }
121
+ const outerHeightStyle = textareaStyles.outerHeightStyle;
122
+ return heightRef.current != null && heightRef.current !== outerHeightStyle;
123
+ });
115
124
  const syncHeight = React.useCallback(() => {
116
125
  const textarea = textareaRef.current;
117
126
  const textareaStyles = calculateTextareaStyles();
@@ -127,37 +136,39 @@ const TextareaAutosize = /*#__PURE__*/React.forwardRef(function TextareaAutosize
127
136
  }, [calculateTextareaStyles]);
128
137
  const frameRef = React.useRef(-1);
129
138
  useEnhancedEffect(() => {
130
- const debounceHandleResize = debounce(() => syncHeight());
139
+ const debouncedHandleResize = debounce(syncHeight);
131
140
  const textarea = textareaRef?.current;
132
141
  if (!textarea) {
133
142
  return undefined;
134
143
  }
135
144
  const containerWindow = ownerWindow(textarea);
136
- containerWindow.addEventListener('resize', debounceHandleResize);
145
+ containerWindow.addEventListener('resize', debouncedHandleResize);
137
146
  let resizeObserver;
138
147
  if (typeof ResizeObserver !== 'undefined') {
139
148
  resizeObserver = new ResizeObserver(() => {
140
- // avoid "ResizeObserver loop completed with undelivered notifications" error
141
- // by temporarily unobserving the textarea element while manipulating the height
142
- // and reobserving one frame later
143
- resizeObserver.unobserve(textarea);
144
- cancelAnimationFrame(frameRef.current);
145
- syncHeight();
146
- frameRef.current = requestAnimationFrame(() => {
147
- resizeObserver.observe(textarea);
148
- });
149
+ if (didHeightChange()) {
150
+ // avoid "ResizeObserver loop completed with undelivered notifications" error
151
+ // by temporarily unobserving the textarea element while manipulating the height
152
+ // and reobserving one frame later
153
+ resizeObserver.unobserve(textarea);
154
+ cancelAnimationFrame(frameRef.current);
155
+ syncHeight();
156
+ frameRef.current = requestAnimationFrame(() => {
157
+ resizeObserver.observe(textarea);
158
+ });
159
+ }
149
160
  });
150
161
  resizeObserver.observe(textarea);
151
162
  }
152
163
  return () => {
153
- debounceHandleResize.clear();
164
+ debouncedHandleResize.clear();
154
165
  cancelAnimationFrame(frameRef.current);
155
- containerWindow.removeEventListener('resize', debounceHandleResize);
166
+ containerWindow.removeEventListener('resize', debouncedHandleResize);
156
167
  if (resizeObserver) {
157
168
  resizeObserver.disconnect();
158
169
  }
159
170
  };
160
- }, [calculateTextareaStyles, syncHeight]);
171
+ }, [calculateTextareaStyles, syncHeight, didHeightChange]);
161
172
  useEnhancedEffect(() => {
162
173
  syncHeight();
163
174
  });
@@ -178,7 +178,7 @@ export interface TooltipProps extends StandardProps<React.HTMLAttributes<HTMLDiv
178
178
  * Tooltip placement.
179
179
  * @default 'bottom'
180
180
  */
181
- placement?: 'bottom-end' | 'bottom-start' | 'bottom' | 'left-end' | 'left-start' | 'left' | 'right-end' | 'right-start' | 'right' | 'top-end' | 'top-start' | 'top';
181
+ placement?: PopperProps['placement'];
182
182
  /**
183
183
  * The component used for the popper.
184
184
  * @deprecated use the `slots.popper` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.
@@ -841,7 +841,7 @@ process.env.NODE_ENV !== "production" ? Tooltip.propTypes /* remove-proptypes */
841
841
  * Tooltip placement.
842
842
  * @default 'bottom'
843
843
  */
844
- placement: PropTypes.oneOf(['bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),
844
+ placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),
845
845
  /**
846
846
  * The component used for the popper.
847
847
  * @deprecated use the `slots.popper` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.
@@ -3,7 +3,7 @@ import { OverridableStringUnion } from '@mui/types';
3
3
  import { SxProps, SystemProps } from '@mui/system';
4
4
  import { Theme, TypeText } from "../styles/index.js";
5
5
  import { OverrideProps, OverridableComponent } from "../OverridableComponent/index.js";
6
- import { Variant } from "../styles/createTypography.js";
6
+ import { TypographyVariant } from "../styles/createTypography.js";
7
7
  import { TypographyClasses } from "./typographyClasses.js";
8
8
  export interface TypographyPropsVariantOverrides {}
9
9
  export interface TypographyPropsColorOverrides {}
@@ -54,7 +54,7 @@ export interface TypographyOwnProps extends Omit<SystemProps<Theme>, 'color'> {
54
54
  * Applies the theme typography styles.
55
55
  * @default 'body1'
56
56
  */
57
- variant?: OverridableStringUnion<Variant | 'inherit', TypographyPropsVariantOverrides>;
57
+ variant?: OverridableStringUnion<TypographyVariant | 'inherit', TypographyPropsVariantOverrides>;
58
58
  /**
59
59
  * The component maps the variant prop to a range of different HTML element types.
60
60
  * For instance, subtitle1 to `<h6>`.
@@ -74,7 +74,7 @@ export interface TypographyOwnProps extends Omit<SystemProps<Theme>, 'color'> {
74
74
  * inherit: 'p',
75
75
  * }
76
76
  */
77
- variantMapping?: Partial<Record<OverridableStringUnion<Variant | 'inherit', TypographyPropsVariantOverrides>, string>>;
77
+ variantMapping?: Partial<Record<OverridableStringUnion<TypographyVariant | 'inherit', TypographyPropsVariantOverrides>, string>>;
78
78
  }
79
79
  export interface TypographyTypeMap<AdditionalProps = {}, RootComponent extends React.ElementType = 'span'> {
80
80
  props: AdditionalProps & TypographyOwnProps;
package/modern/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/material v7.0.0-beta.2
2
+ * @mui/material v7.0.0-beta.4
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -1,5 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { DefaultTheme } from '@mui/system';
3
+ import { StorageManager } from '@mui/system/cssVars';
3
4
  import { CssThemeVariables } from "./createThemeNoVars.js";
4
5
  type ThemeProviderCssVariablesProps = CssThemeVariables extends {
5
6
  enabled: true;
@@ -20,6 +21,12 @@ type ThemeProviderCssVariablesProps = CssThemeVariables extends {
20
21
  * @default false
21
22
  */
22
23
  disableStyleSheetGeneration?: boolean;
24
+ /**
25
+ * If `true`, theme values are recalculated when the mode changes.
26
+ * The `theme.colorSchemes.{mode}.*` nodes will be shallow merged to the top-level of the theme.
27
+ * @default false
28
+ */
29
+ forceThemeRerender?: boolean;
23
30
  } : {};
24
31
  export interface ThemeProviderProps<Theme = DefaultTheme> extends ThemeProviderCssVariablesProps {
25
32
  children?: React.ReactNode;
@@ -40,6 +47,11 @@ export interface ThemeProviderProps<Theme = DefaultTheme> extends ThemeProviderC
40
47
  * @default window
41
48
  */
42
49
  storageWindow?: Window | null;
50
+ /**
51
+ * The storage manager to be used for storing the mode and color scheme
52
+ * @default using `window.localStorage`
53
+ */
54
+ storageManager?: StorageManager | null;
43
55
  /**
44
56
  * localStorage key used to store application `mode`
45
57
  * @default 'mui-mode'
@@ -17,6 +17,17 @@ export default function ThemeProvider({
17
17
  }
18
18
  const muiTheme = THEME_ID in theme ? theme[THEME_ID] : theme;
19
19
  if (!('colorSchemes' in muiTheme)) {
20
+ if (!('vars' in muiTheme)) {
21
+ // For non-CSS variables themes, set `vars` to null to prevent theme inheritance from the upper theme.
22
+ // The example use case is the docs demo that uses ThemeProvider to customize the theme while the upper theme is using CSS variables.
23
+ return /*#__PURE__*/_jsx(ThemeProviderNoVars, {
24
+ theme: {
25
+ ...theme,
26
+ vars: null
27
+ },
28
+ ...props
29
+ });
30
+ }
20
31
  return /*#__PURE__*/_jsx(ThemeProviderNoVars, {
21
32
  theme: theme,
22
33
  ...props
@@ -43,6 +43,7 @@ export declare const CssVarsProvider: (props: React.PropsWithChildren<Partial<im
43
43
  defaultMode?: "light" | "dark" | "system";
44
44
  documentNode?: Document | null;
45
45
  colorSchemeNode?: Element | null;
46
+ storageManager?: import("@mui/system").StorageManager | null;
46
47
  storageWindow?: Window | null;
47
48
  disableNestedContext?: boolean;
48
49
  disableStyleSheetGeneration?: boolean;
@@ -1,7 +1,7 @@
1
1
  import { BreakpointsOptions, ShapeOptions, SpacingOptions } from '@mui/system';
2
2
  import { MixinsOptions } from "./createMixins.js";
3
3
  import { Palette, PaletteOptions } from "./createPalette.js";
4
- import { TypographyOptions } from "./createTypography.js";
4
+ import { TypographyVariantsOptions } from "./createTypography.js";
5
5
  import { Shadows } from "./shadows.js";
6
6
  import { TransitionsOptions } from "./createTransitions.js";
7
7
  import { ZIndexOptions } from "./zIndex.js";
@@ -21,7 +21,7 @@ export interface DeprecatedThemeOptions {
21
21
  shadows?: Shadows;
22
22
  spacing?: SpacingOptions;
23
23
  transitions?: TransitionsOptions;
24
- typography?: TypographyOptions | ((palette: Palette) => TypographyOptions);
24
+ typography?: TypographyVariantsOptions | ((palette: Palette) => TypographyVariantsOptions);
25
25
  variants?: ComponentsVariants;
26
26
  zIndex?: ZIndexOptions;
27
27
  unstable_strictMode?: boolean;
@@ -1,7 +1,7 @@
1
1
  import { ThemeOptions as SystemThemeOptions, Theme as SystemTheme, SxProps, CSSObject, SxConfig } from '@mui/system';
2
2
  import { Mixins, MixinsOptions } from "./createMixins.js";
3
3
  import { Palette, PaletteOptions } from "./createPalette.js";
4
- import { Typography, TypographyOptions } from "./createTypography.js";
4
+ import { TypographyVariants, TypographyVariantsOptions } from "./createTypography.js";
5
5
  import { Shadows } from "./shadows.js";
6
6
  import { Transitions, TransitionsOptions } from "./createTransitions.js";
7
7
  import { ZIndex, ZIndexOptions } from "./zIndex.js";
@@ -28,7 +28,7 @@ export interface ThemeOptions extends Omit<SystemThemeOptions, 'zIndex'>, CssVar
28
28
  palette?: PaletteOptions;
29
29
  shadows?: Shadows;
30
30
  transitions?: TransitionsOptions;
31
- typography?: TypographyOptions | ((palette: Palette) => TypographyOptions);
31
+ typography?: TypographyVariantsOptions | ((palette: Palette) => TypographyVariantsOptions);
32
32
  zIndex?: ZIndexOptions;
33
33
  unstable_strictMode?: boolean;
34
34
  unstable_sxConfig?: SxConfig;
@@ -40,7 +40,7 @@ export interface BaseTheme extends SystemTheme {
40
40
  } ? CssVarsPalette : {});
41
41
  shadows: Shadows;
42
42
  transitions: Transitions;
43
- typography: Typography;
43
+ typography: TypographyVariants;
44
44
  zIndex: ZIndex;
45
45
  unstable_strictMode?: boolean;
46
46
  }
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import * as CSS from 'csstype';
3
3
  import { Palette } from "./createPalette.js";
4
- export type Variant = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'subtitle1' | 'subtitle2' | 'body1' | 'body2' | 'caption' | 'button' | 'overline';
4
+ export type TypographyVariant = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'subtitle1' | 'subtitle2' | 'body1' | 'body2' | 'caption' | 'button' | 'overline';
5
5
  export interface FontStyle {
6
6
  fontFamily: React.CSSProperties['fontFamily'];
7
7
  fontSize: number;
@@ -45,6 +45,6 @@ export interface TypographyStyleOptions extends TypographyStyle {}
45
45
  export interface TypographyUtils {
46
46
  pxToRem: (px: number) => string;
47
47
  }
48
- export interface Typography extends Record<Variant, TypographyStyle>, FontStyle, TypographyUtils {}
49
- export interface TypographyOptions extends Partial<Record<Variant, TypographyStyleOptions> & FontStyleOptions> {}
50
- export default function createTypography(palette: Palette, typography: TypographyOptions | ((palette: Palette) => TypographyOptions)): Typography;
48
+ export interface TypographyVariants extends Record<TypographyVariant, TypographyStyle>, FontStyle, TypographyUtils {}
49
+ export interface TypographyVariantsOptions extends Partial<Record<TypographyVariant, TypographyStyleOptions> & FontStyleOptions> {}
50
+ export default function createTypography(palette: Palette, typography: TypographyVariantsOptions | ((palette: Palette) => TypographyVariantsOptions)): TypographyVariants;
@@ -6,7 +6,7 @@ export { ZIndex } from "./zIndex.js";
6
6
  export { CommonColors, Palette, PaletteColor, PaletteColorOptions, PaletteOptions, SimplePaletteColorOptions, TypeText, TypeAction, TypeBackground, PaletteMode, Color } from "./createPalette.js";
7
7
  export { default as createColorScheme } from "./createColorScheme.js";
8
8
  export { default as createStyles } from "./createStyles.js";
9
- export { Typography as TypographyVariants, TypographyOptions as TypographyVariantsOptions, TypographyStyle, Variant as TypographyVariant } from "./createTypography.js";
9
+ export { TypographyVariants, TypographyVariantsOptions, TypographyStyle, TypographyVariant } from "./createTypography.js";
10
10
  export { default as responsiveFontSizes } from "./responsiveFontSizes.js";
11
11
  export { Duration, Easing, Transitions, TransitionsOptions, duration, easing } from "./createTransitions.js";
12
12
  export { Mixins } from "./createMixins.js";
@@ -38,6 +38,7 @@ export { default as makeStyles } from "./makeStyles.js";
38
38
  export { default as withStyles } from "./withStyles.js";
39
39
  export { default as withTheme } from "./withTheme.js";
40
40
  export * from "./ThemeProviderWithVars.js";
41
+ export type { StorageManager } from '@mui/system/cssVars';
41
42
  export { default as extendTheme } from "./createThemeWithVars.js";
42
43
  export type { ColorSchemeOverrides, SupportedColorScheme, ColorSystem, CssVarsPalette, Opacity, Overlays, PaletteAlert, PaletteActionChannel, PaletteAppBar, PaletteAvatar, PaletteChip, PaletteColorChannel, PaletteCommonChannel, PaletteFilledInput, PaletteLinearProgress, PaletteSkeleton, PaletteSlider, PaletteSnackbarContent, PaletteSpeedDialAction, PaletteStepConnector, PaletteStepContent, PaletteSwitch, PaletteTableCell, PaletteTextChannel, PaletteTooltip, CssVarsThemeOptions, CssVarsTheme, ThemeVars, ThemeCssVar, ThemeCssVarOverrides, ColorSystemOptions } from "./createThemeWithVars.js";
43
44
  export { default as getOverlayAlpha } from "./getOverlayAlpha.js";
@@ -1,11 +1,11 @@
1
1
  import { Breakpoint } from '@mui/system';
2
- import { Typography } from "./createTypography.js";
2
+ import { TypographyVariants } from "./createTypography.js";
3
3
  export interface ResponsiveFontSizesOptions {
4
4
  breakpoints?: Breakpoint[];
5
5
  disableAlign?: boolean;
6
6
  factor?: number;
7
- variants?: Array<keyof Typography>;
7
+ variants?: Array<keyof TypographyVariants>;
8
8
  }
9
9
  export default function responsiveFontSizes<T extends {
10
- typography: Typography;
10
+ typography: TypographyVariants;
11
11
  }>(theme: T, options?: ResponsiveFontSizesOptions): T;
@@ -1,6 +1,6 @@
1
1
  export interface UseScrollTriggerOptions {
2
2
  disableHysteresis?: boolean;
3
- target?: Node | Window;
3
+ target?: Node | Window | null;
4
4
  threshold?: number;
5
5
  }
6
6
  export default function useScrollTrigger(options?: UseScrollTriggerOptions): boolean;
@@ -29,6 +29,9 @@ export default function useScrollTrigger(options = {}) {
29
29
  const store = React.useRef();
30
30
  const [trigger, setTrigger] = React.useState(() => getTrigger(store, other));
31
31
  React.useEffect(() => {
32
+ if (target === null) {
33
+ return setTrigger(false);
34
+ }
32
35
  const handleScroll = () => {
33
36
  setTrigger(getTrigger(store, {
34
37
  target,
@@ -1,6 +1,6 @@
1
- export const version = "7.0.0-beta.2";
1
+ export const version = "7.0.0-beta.4";
2
2
  export const major = Number("7");
3
3
  export const minor = Number("0");
4
4
  export const patch = Number("0");
5
- export const prerelease = "beta.2";
5
+ export const prerelease = "beta.4";
6
6
  export default version;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/material",
3
- "version": "7.0.0-beta.2",
3
+ "version": "7.0.0-beta.4",
4
4
  "private": false,
5
5
  "author": "MUI Team",
6
6
  "description": "Material UI is an open-source React component library that implements Google's Material Design. It's comprehensive and can be used in production out of the box.",
@@ -35,10 +35,10 @@
35
35
  "prop-types": "^15.8.1",
36
36
  "react-is": "^19.0.0",
37
37
  "react-transition-group": "^4.4.5",
38
- "@mui/core-downloads-tracker": "^7.0.0-beta.2",
39
- "@mui/system": "7.0.0-beta.2",
40
- "@mui/types": "^7.2.22",
41
- "@mui/utils": "7.0.0-beta.2"
38
+ "@mui/types": "^7.3.0",
39
+ "@mui/utils": "7.0.0-beta.4",
40
+ "@mui/system": "7.0.0-beta.4",
41
+ "@mui/core-downloads-tracker": "^7.0.0-beta.4"
42
42
  },
43
43
  "peerDependencies": {
44
44
  "@emotion/react": "^11.5.0",
@@ -46,7 +46,7 @@
46
46
  "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
47
47
  "react": "^17.0.0 || ^18.0.0 || ^19.0.0",
48
48
  "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0",
49
- "@mui/material-pigment-css": "7.0.0-beta.2"
49
+ "@mui/material-pigment-css": "7.0.0-beta.4"
50
50
  },
51
51
  "peerDependenciesMeta": {
52
52
  "@types/react": {
@@ -1,5 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { DefaultTheme } from '@mui/system';
3
+ import { StorageManager } from '@mui/system/cssVars';
3
4
  import { CssThemeVariables } from "./createThemeNoVars.js";
4
5
  type ThemeProviderCssVariablesProps = CssThemeVariables extends {
5
6
  enabled: true;
@@ -20,6 +21,12 @@ type ThemeProviderCssVariablesProps = CssThemeVariables extends {
20
21
  * @default false
21
22
  */
22
23
  disableStyleSheetGeneration?: boolean;
24
+ /**
25
+ * If `true`, theme values are recalculated when the mode changes.
26
+ * The `theme.colorSchemes.{mode}.*` nodes will be shallow merged to the top-level of the theme.
27
+ * @default false
28
+ */
29
+ forceThemeRerender?: boolean;
23
30
  } : {};
24
31
  export interface ThemeProviderProps<Theme = DefaultTheme> extends ThemeProviderCssVariablesProps {
25
32
  children?: React.ReactNode;
@@ -40,6 +47,11 @@ export interface ThemeProviderProps<Theme = DefaultTheme> extends ThemeProviderC
40
47
  * @default window
41
48
  */
42
49
  storageWindow?: Window | null;
50
+ /**
51
+ * The storage manager to be used for storing the mode and color scheme
52
+ * @default using `window.localStorage`
53
+ */
54
+ storageManager?: StorageManager | null;
43
55
  /**
44
56
  * localStorage key used to store application `mode`
45
57
  * @default 'mui-mode'
@@ -24,6 +24,17 @@ function ThemeProvider({
24
24
  }
25
25
  const muiTheme = _identifier.default in theme ? theme[_identifier.default] : theme;
26
26
  if (!('colorSchemes' in muiTheme)) {
27
+ if (!('vars' in muiTheme)) {
28
+ // For non-CSS variables themes, set `vars` to null to prevent theme inheritance from the upper theme.
29
+ // The example use case is the docs demo that uses ThemeProvider to customize the theme while the upper theme is using CSS variables.
30
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ThemeProviderNoVars.default, {
31
+ theme: {
32
+ ...theme,
33
+ vars: null
34
+ },
35
+ ...props
36
+ });
37
+ }
27
38
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ThemeProviderNoVars.default, {
28
39
  theme: theme,
29
40
  ...props
@@ -43,6 +43,7 @@ export declare const CssVarsProvider: (props: React.PropsWithChildren<Partial<im
43
43
  defaultMode?: "light" | "dark" | "system";
44
44
  documentNode?: Document | null;
45
45
  colorSchemeNode?: Element | null;
46
+ storageManager?: import("@mui/system").StorageManager | null;
46
47
  storageWindow?: Window | null;
47
48
  disableNestedContext?: boolean;
48
49
  disableStyleSheetGeneration?: boolean;
@@ -1,7 +1,7 @@
1
1
  import { BreakpointsOptions, ShapeOptions, SpacingOptions } from '@mui/system';
2
2
  import { MixinsOptions } from "./createMixins.js";
3
3
  import { Palette, PaletteOptions } from "./createPalette.js";
4
- import { TypographyOptions } from "./createTypography.js";
4
+ import { TypographyVariantsOptions } from "./createTypography.js";
5
5
  import { Shadows } from "./shadows.js";
6
6
  import { TransitionsOptions } from "./createTransitions.js";
7
7
  import { ZIndexOptions } from "./zIndex.js";
@@ -21,7 +21,7 @@ export interface DeprecatedThemeOptions {
21
21
  shadows?: Shadows;
22
22
  spacing?: SpacingOptions;
23
23
  transitions?: TransitionsOptions;
24
- typography?: TypographyOptions | ((palette: Palette) => TypographyOptions);
24
+ typography?: TypographyVariantsOptions | ((palette: Palette) => TypographyVariantsOptions);
25
25
  variants?: ComponentsVariants;
26
26
  zIndex?: ZIndexOptions;
27
27
  unstable_strictMode?: boolean;
@@ -1,7 +1,7 @@
1
1
  import { ThemeOptions as SystemThemeOptions, Theme as SystemTheme, SxProps, CSSObject, SxConfig } from '@mui/system';
2
2
  import { Mixins, MixinsOptions } from "./createMixins.js";
3
3
  import { Palette, PaletteOptions } from "./createPalette.js";
4
- import { Typography, TypographyOptions } from "./createTypography.js";
4
+ import { TypographyVariants, TypographyVariantsOptions } from "./createTypography.js";
5
5
  import { Shadows } from "./shadows.js";
6
6
  import { Transitions, TransitionsOptions } from "./createTransitions.js";
7
7
  import { ZIndex, ZIndexOptions } from "./zIndex.js";
@@ -28,7 +28,7 @@ export interface ThemeOptions extends Omit<SystemThemeOptions, 'zIndex'>, CssVar
28
28
  palette?: PaletteOptions;
29
29
  shadows?: Shadows;
30
30
  transitions?: TransitionsOptions;
31
- typography?: TypographyOptions | ((palette: Palette) => TypographyOptions);
31
+ typography?: TypographyVariantsOptions | ((palette: Palette) => TypographyVariantsOptions);
32
32
  zIndex?: ZIndexOptions;
33
33
  unstable_strictMode?: boolean;
34
34
  unstable_sxConfig?: SxConfig;
@@ -40,7 +40,7 @@ export interface BaseTheme extends SystemTheme {
40
40
  } ? CssVarsPalette : {});
41
41
  shadows: Shadows;
42
42
  transitions: Transitions;
43
- typography: Typography;
43
+ typography: TypographyVariants;
44
44
  zIndex: ZIndex;
45
45
  unstable_strictMode?: boolean;
46
46
  }
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import * as CSS from 'csstype';
3
3
  import { Palette } from "./createPalette.js";
4
- export type Variant = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'subtitle1' | 'subtitle2' | 'body1' | 'body2' | 'caption' | 'button' | 'overline';
4
+ export type TypographyVariant = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'subtitle1' | 'subtitle2' | 'body1' | 'body2' | 'caption' | 'button' | 'overline';
5
5
  export interface FontStyle {
6
6
  fontFamily: React.CSSProperties['fontFamily'];
7
7
  fontSize: number;
@@ -45,6 +45,6 @@ export interface TypographyStyleOptions extends TypographyStyle {}
45
45
  export interface TypographyUtils {
46
46
  pxToRem: (px: number) => string;
47
47
  }
48
- export interface Typography extends Record<Variant, TypographyStyle>, FontStyle, TypographyUtils {}
49
- export interface TypographyOptions extends Partial<Record<Variant, TypographyStyleOptions> & FontStyleOptions> {}
50
- export default function createTypography(palette: Palette, typography: TypographyOptions | ((palette: Palette) => TypographyOptions)): Typography;
48
+ export interface TypographyVariants extends Record<TypographyVariant, TypographyStyle>, FontStyle, TypographyUtils {}
49
+ export interface TypographyVariantsOptions extends Partial<Record<TypographyVariant, TypographyStyleOptions> & FontStyleOptions> {}
50
+ export default function createTypography(palette: Palette, typography: TypographyVariantsOptions | ((palette: Palette) => TypographyVariantsOptions)): TypographyVariants;
package/styles/index.d.ts CHANGED
@@ -6,7 +6,7 @@ export { ZIndex } from "./zIndex.js";
6
6
  export { CommonColors, Palette, PaletteColor, PaletteColorOptions, PaletteOptions, SimplePaletteColorOptions, TypeText, TypeAction, TypeBackground, PaletteMode, Color } from "./createPalette.js";
7
7
  export { default as createColorScheme } from "./createColorScheme.js";
8
8
  export { default as createStyles } from "./createStyles.js";
9
- export { Typography as TypographyVariants, TypographyOptions as TypographyVariantsOptions, TypographyStyle, Variant as TypographyVariant } from "./createTypography.js";
9
+ export { TypographyVariants, TypographyVariantsOptions, TypographyStyle, TypographyVariant } from "./createTypography.js";
10
10
  export { default as responsiveFontSizes } from "./responsiveFontSizes.js";
11
11
  export { Duration, Easing, Transitions, TransitionsOptions, duration, easing } from "./createTransitions.js";
12
12
  export { Mixins } from "./createMixins.js";
@@ -38,6 +38,7 @@ export { default as makeStyles } from "./makeStyles.js";
38
38
  export { default as withStyles } from "./withStyles.js";
39
39
  export { default as withTheme } from "./withTheme.js";
40
40
  export * from "./ThemeProviderWithVars.js";
41
+ export type { StorageManager } from '@mui/system/cssVars';
41
42
  export { default as extendTheme } from "./createThemeWithVars.js";
42
43
  export type { ColorSchemeOverrides, SupportedColorScheme, ColorSystem, CssVarsPalette, Opacity, Overlays, PaletteAlert, PaletteActionChannel, PaletteAppBar, PaletteAvatar, PaletteChip, PaletteColorChannel, PaletteCommonChannel, PaletteFilledInput, PaletteLinearProgress, PaletteSkeleton, PaletteSlider, PaletteSnackbarContent, PaletteSpeedDialAction, PaletteStepConnector, PaletteStepContent, PaletteSwitch, PaletteTableCell, PaletteTextChannel, PaletteTooltip, CssVarsThemeOptions, CssVarsTheme, ThemeVars, ThemeCssVar, ThemeCssVarOverrides, ColorSystemOptions } from "./createThemeWithVars.js";
43
44
  export { default as getOverlayAlpha } from "./getOverlayAlpha.js";
@@ -1,11 +1,11 @@
1
1
  import { Breakpoint } from '@mui/system';
2
- import { Typography } from "./createTypography.js";
2
+ import { TypographyVariants } from "./createTypography.js";
3
3
  export interface ResponsiveFontSizesOptions {
4
4
  breakpoints?: Breakpoint[];
5
5
  disableAlign?: boolean;
6
6
  factor?: number;
7
- variants?: Array<keyof Typography>;
7
+ variants?: Array<keyof TypographyVariants>;
8
8
  }
9
9
  export default function responsiveFontSizes<T extends {
10
- typography: Typography;
10
+ typography: TypographyVariants;
11
11
  }>(theme: T, options?: ResponsiveFontSizesOptions): T;