@mui/system 5.10.1 → 5.10.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 (41) hide show
  1. package/Box/Box.d.ts +10 -10
  2. package/Box/Box.spec.d.ts +1 -1
  3. package/CHANGELOG.md +165 -0
  4. package/Container/Container.d.ts +13 -13
  5. package/Container/ContainerProps.d.ts +40 -40
  6. package/Container/containerClasses.d.ts +22 -22
  7. package/Container/createContainer.d.ts +18 -18
  8. package/Stack/Stack.d.ts +13 -12
  9. package/Stack/Stack.js +1 -0
  10. package/Stack/StackProps.d.ts +42 -42
  11. package/Stack/createStack.d.ts +21 -21
  12. package/Stack/index.d.ts +5 -5
  13. package/Stack/stackClasses.d.ts +8 -8
  14. package/Unstable_Grid/Grid.d.ts +12 -12
  15. package/Unstable_Grid/GridProps.d.ts +162 -162
  16. package/Unstable_Grid/createGrid.d.ts +11 -11
  17. package/Unstable_Grid/gridClasses.d.ts +20 -20
  18. package/Unstable_Grid/gridGenerator.d.ts +26 -26
  19. package/Unstable_Grid/index.d.ts +5 -5
  20. package/createBox.spec.d.ts +1 -1
  21. package/createTheme/createSpacing.d.ts +10 -10
  22. package/cssVars/createCssVarsProvider.spec.d.ts +1 -1
  23. package/cssVars/createGetCssVar.d.ts +5 -5
  24. package/cssVars/cssVarsParser.d.ts +65 -65
  25. package/cssVars/getInitColorSchemeScript.d.ts +45 -45
  26. package/cssVars/index.d.ts +3 -3
  27. package/cssVars/useCurrentColorScheme.d.ts +53 -53
  28. package/cssVars/useCurrentColorScheme.js +60 -49
  29. package/esm/Stack/Stack.js +1 -0
  30. package/esm/cssVars/useCurrentColorScheme.js +60 -47
  31. package/index.js +1 -1
  32. package/index.spec.d.ts +1 -1
  33. package/legacy/Stack/Stack.js +1 -0
  34. package/legacy/cssVars/useCurrentColorScheme.js +60 -47
  35. package/legacy/index.js +1 -1
  36. package/modern/Stack/Stack.js +1 -0
  37. package/modern/cssVars/useCurrentColorScheme.js +60 -47
  38. package/modern/index.js +1 -1
  39. package/package.json +6 -6
  40. package/styleFunctionSx/styleFunctionSx.spec.d.ts +1 -1
  41. package/useThemeProps/getThemeProps.d.ts +5 -5
@@ -1,45 +1,45 @@
1
- /// <reference types="react" />
2
- export declare const DEFAULT_MODE_STORAGE_KEY = "mode";
3
- export declare const DEFAULT_COLOR_SCHEME_STORAGE_KEY = "color-scheme";
4
- export declare const DEFAULT_ATTRIBUTE = "data-color-scheme";
5
- export interface GetInitColorSchemeScriptOptions {
6
- /**
7
- * Indicate to the browser which color scheme is used (light or dark) for rendering built-in UI
8
- * @default true
9
- */
10
- enableColorScheme?: boolean;
11
- /**
12
- * If `true`, the initial color scheme is set to the user's prefers-color-scheme mode
13
- * @default false
14
- */
15
- enableSystem?: boolean;
16
- /**
17
- * The default color scheme to be used on the light mode
18
- */
19
- defaultLightColorScheme?: string;
20
- /**
21
- * The default color scheme to be used on the dark mode
22
- */
23
- defaultDarkColorScheme?: string;
24
- /**
25
- * The node (provided as string) used to attach the color-scheme attribute
26
- * @default 'document.documentElement'
27
- */
28
- colorSchemeNode?: string;
29
- /**
30
- * localStorage key used to store `mode`
31
- * @default 'mode'
32
- */
33
- modeStorageKey?: string;
34
- /**
35
- * localStorage key used to store `colorScheme`
36
- * @default 'color-scheme'
37
- */
38
- colorSchemeStorageKey?: string;
39
- /**
40
- * DOM attribute for applying color scheme
41
- * @default 'data-color-scheme'
42
- */
43
- attribute?: string;
44
- }
45
- export default function getInitColorSchemeScript(options?: GetInitColorSchemeScriptOptions): JSX.Element;
1
+ /// <reference types="react" />
2
+ export declare const DEFAULT_MODE_STORAGE_KEY = "mode";
3
+ export declare const DEFAULT_COLOR_SCHEME_STORAGE_KEY = "color-scheme";
4
+ export declare const DEFAULT_ATTRIBUTE = "data-color-scheme";
5
+ export interface GetInitColorSchemeScriptOptions {
6
+ /**
7
+ * Indicate to the browser which color scheme is used (light or dark) for rendering built-in UI
8
+ * @default true
9
+ */
10
+ enableColorScheme?: boolean;
11
+ /**
12
+ * If `true`, the initial color scheme is set to the user's prefers-color-scheme mode
13
+ * @default false
14
+ */
15
+ enableSystem?: boolean;
16
+ /**
17
+ * The default color scheme to be used on the light mode
18
+ */
19
+ defaultLightColorScheme?: string;
20
+ /**
21
+ * The default color scheme to be used on the dark mode
22
+ */
23
+ defaultDarkColorScheme?: string;
24
+ /**
25
+ * The node (provided as string) used to attach the color-scheme attribute
26
+ * @default 'document.documentElement'
27
+ */
28
+ colorSchemeNode?: string;
29
+ /**
30
+ * localStorage key used to store `mode`
31
+ * @default 'mode'
32
+ */
33
+ modeStorageKey?: string;
34
+ /**
35
+ * localStorage key used to store `colorScheme`
36
+ * @default 'color-scheme'
37
+ */
38
+ colorSchemeStorageKey?: string;
39
+ /**
40
+ * DOM attribute for applying color scheme
41
+ * @default 'data-color-scheme'
42
+ */
43
+ attribute?: string;
44
+ }
45
+ export default function getInitColorSchemeScript(options?: GetInitColorSchemeScriptOptions): JSX.Element;
@@ -1,3 +1,3 @@
1
- export { default } from './createCssVarsProvider';
2
- export type { CreateCssVarsProviderResult, CssVarsProviderConfig, ColorSchemeContextValue, } from './createCssVarsProvider';
3
- export { default as getInitColorSchemeScript } from './getInitColorSchemeScript';
1
+ export { default } from './createCssVarsProvider';
2
+ export type { CreateCssVarsProviderResult, CssVarsProviderConfig, ColorSchemeContextValue, } from './createCssVarsProvider';
3
+ export { default as getInitColorSchemeScript } from './getInitColorSchemeScript';
@@ -1,53 +1,53 @@
1
- export declare type Mode = 'light' | 'dark' | 'system';
2
- export declare type SystemMode = Exclude<Mode, 'system'>;
3
- export interface State<SupportedColorScheme extends string> {
4
- /**
5
- * User selected mode.
6
- * Note: on the server, mode is always undefined
7
- */
8
- mode: Mode | undefined;
9
- /**
10
- * Only valid if `mode: 'system'`, either 'light' | 'dark'.
11
- */
12
- systemMode: SystemMode | undefined;
13
- /**
14
- * The color scheme for the light mode.
15
- */
16
- lightColorScheme: SupportedColorScheme;
17
- /**
18
- * The color scheme for the dark mode.
19
- */
20
- darkColorScheme: SupportedColorScheme;
21
- }
22
- export declare type Result<SupportedColorScheme extends string> = State<SupportedColorScheme> & {
23
- /**
24
- * The current application color scheme. It is always `undefined` on the server.
25
- */
26
- colorScheme: SupportedColorScheme | undefined;
27
- /**
28
- * `mode` is saved to internal state and localStorage
29
- * If `mode` is null, it will be reset to the defaultMode
30
- */
31
- setMode: (mode: Mode | null) => void;
32
- /**
33
- * `colorScheme` is saved to internal state and localStorage
34
- * If `colorScheme` is null, it will be reset to the defaultColorScheme (light | dark)
35
- */
36
- setColorScheme: (colorScheme: SupportedColorScheme | Partial<{
37
- light: SupportedColorScheme | null;
38
- dark: SupportedColorScheme | null;
39
- }> | null) => void;
40
- };
41
- export declare function getSystemMode(mode: undefined | string): SystemMode | undefined;
42
- export declare function getColorScheme<SupportedColorScheme extends string>(state: State<SupportedColorScheme>): SupportedColorScheme | undefined;
43
- interface UseCurrentColoSchemeOptions<SupportedColorScheme extends string> {
44
- defaultLightColorScheme: SupportedColorScheme;
45
- defaultDarkColorScheme: SupportedColorScheme;
46
- supportedColorSchemes: Array<SupportedColorScheme>;
47
- defaultMode?: Mode;
48
- modeStorageKey?: string;
49
- colorSchemeStorageKey?: string;
50
- storageWindow?: Window | null;
51
- }
52
- export default function useCurrentColorScheme<SupportedColorScheme extends string>(options: UseCurrentColoSchemeOptions<SupportedColorScheme>): Result<SupportedColorScheme>;
53
- export {};
1
+ export declare type Mode = 'light' | 'dark' | 'system';
2
+ export declare type SystemMode = Exclude<Mode, 'system'>;
3
+ export interface State<SupportedColorScheme extends string> {
4
+ /**
5
+ * User selected mode.
6
+ * Note: on the server, mode is always undefined
7
+ */
8
+ mode: Mode | undefined;
9
+ /**
10
+ * Only valid if `mode: 'system'`, either 'light' | 'dark'.
11
+ */
12
+ systemMode: SystemMode | undefined;
13
+ /**
14
+ * The color scheme for the light mode.
15
+ */
16
+ lightColorScheme: SupportedColorScheme;
17
+ /**
18
+ * The color scheme for the dark mode.
19
+ */
20
+ darkColorScheme: SupportedColorScheme;
21
+ }
22
+ export declare type Result<SupportedColorScheme extends string> = State<SupportedColorScheme> & {
23
+ /**
24
+ * The current application color scheme. It is always `undefined` on the server.
25
+ */
26
+ colorScheme: SupportedColorScheme | undefined;
27
+ /**
28
+ * `mode` is saved to internal state and localStorage
29
+ * If `mode` is null, it will be reset to the defaultMode
30
+ */
31
+ setMode: (mode: Mode | null) => void;
32
+ /**
33
+ * `colorScheme` is saved to internal state and localStorage
34
+ * If `colorScheme` is null, it will be reset to the defaultColorScheme (light | dark)
35
+ */
36
+ setColorScheme: (colorScheme: SupportedColorScheme | Partial<{
37
+ light: SupportedColorScheme | null;
38
+ dark: SupportedColorScheme | null;
39
+ }> | null) => void;
40
+ };
41
+ export declare function getSystemMode(mode: undefined | string): SystemMode | undefined;
42
+ export declare function getColorScheme<SupportedColorScheme extends string>(state: State<SupportedColorScheme>): SupportedColorScheme | undefined;
43
+ interface UseCurrentColoSchemeOptions<SupportedColorScheme extends string> {
44
+ defaultLightColorScheme: SupportedColorScheme;
45
+ defaultDarkColorScheme: SupportedColorScheme;
46
+ supportedColorSchemes: Array<SupportedColorScheme>;
47
+ defaultMode?: Mode;
48
+ modeStorageKey?: string;
49
+ colorSchemeStorageKey?: string;
50
+ storageWindow?: Window | null;
51
+ }
52
+ export default function useCurrentColorScheme<SupportedColorScheme extends string>(options: UseCurrentColoSchemeOptions<SupportedColorScheme>): Result<SupportedColorScheme>;
53
+ export {};
@@ -59,7 +59,7 @@ function getColorScheme(state) {
59
59
  });
60
60
  }
61
61
 
62
- function resolveValue(key, defaultValue) {
62
+ function initializeValue(key, defaultValue) {
63
63
  if (typeof window === 'undefined') {
64
64
  return undefined;
65
65
  }
@@ -68,6 +68,11 @@ function resolveValue(key, defaultValue) {
68
68
 
69
69
  try {
70
70
  value = localStorage.getItem(key) || undefined;
71
+
72
+ if (!value) {
73
+ // the first time that user enters the site.
74
+ localStorage.setItem(key, defaultValue);
75
+ }
71
76
  } catch (e) {// Unsupported
72
77
  }
73
78
 
@@ -86,25 +91,29 @@ function useCurrentColorScheme(options) {
86
91
  } = options;
87
92
  const joinedColorSchemes = supportedColorSchemes.join(',');
88
93
  const [state, setState] = React.useState(() => {
89
- const initialMode = resolveValue(modeStorageKey, defaultMode);
94
+ const initialMode = initializeValue(modeStorageKey, defaultMode);
95
+ const lightColorScheme = initializeValue(`${colorSchemeStorageKey}-light`, defaultLightColorScheme);
96
+ const darkColorScheme = initializeValue(`${colorSchemeStorageKey}-dark`, defaultDarkColorScheme);
90
97
  return {
91
98
  mode: initialMode,
92
99
  systemMode: getSystemMode(initialMode),
93
- lightColorScheme: resolveValue(`${colorSchemeStorageKey}-light`) || defaultLightColorScheme,
94
- darkColorScheme: resolveValue(`${colorSchemeStorageKey}-dark`) || defaultDarkColorScheme
100
+ lightColorScheme,
101
+ darkColorScheme
95
102
  };
96
103
  });
97
104
  const colorScheme = getColorScheme(state);
98
105
  const setMode = React.useCallback(mode => {
99
106
  setState(currentState => {
100
- const newMode = !mode ? defaultMode : mode;
101
-
102
107
  if (mode === currentState.mode) {
108
+ // do nothing if mode does not change
103
109
  return currentState;
104
110
  }
105
111
 
106
- if (typeof localStorage !== 'undefined') {
112
+ const newMode = !mode ? defaultMode : mode;
113
+
114
+ try {
107
115
  localStorage.setItem(modeStorageKey, newMode);
116
+ } catch (e) {// Unsupported
108
117
  }
109
118
 
110
119
  return (0, _extends2.default)({}, currentState, {
@@ -114,22 +123,30 @@ function useCurrentColorScheme(options) {
114
123
  });
115
124
  }, [modeStorageKey, defaultMode]);
116
125
  const setColorScheme = React.useCallback(value => {
117
- if (!value || typeof value === 'string') {
126
+ if (!value) {
127
+ setState(currentState => {
128
+ try {
129
+ localStorage.setItem(`${colorSchemeStorageKey}-light`, defaultLightColorScheme);
130
+ localStorage.setItem(`${colorSchemeStorageKey}-dark`, defaultDarkColorScheme);
131
+ } catch (e) {// Unsupported
132
+ }
133
+
134
+ return (0, _extends2.default)({}, currentState, {
135
+ lightColorScheme: defaultLightColorScheme,
136
+ darkColorScheme: defaultDarkColorScheme
137
+ });
138
+ });
139
+ } else if (typeof value === 'string') {
118
140
  if (value && !joinedColorSchemes.includes(value)) {
119
141
  console.error(`\`${value}\` does not exist in \`theme.colorSchemes\`.`);
120
142
  } else {
121
143
  setState(currentState => {
122
144
  const newState = (0, _extends2.default)({}, currentState);
123
-
124
- if (!value) {
125
- // reset to default color scheme
126
- newState.lightColorScheme = defaultLightColorScheme;
127
- newState.darkColorScheme = defaultDarkColorScheme;
128
- return newState;
129
- }
130
-
131
145
  processState(currentState, mode => {
132
- localStorage.setItem(`${colorSchemeStorageKey}-${mode}`, value);
146
+ try {
147
+ localStorage.setItem(`${colorSchemeStorageKey}-${mode}`, value);
148
+ } catch (e) {// Unsupported
149
+ }
133
150
 
134
151
  if (mode === 'light') {
135
152
  newState.lightColorScheme = value;
@@ -142,30 +159,40 @@ function useCurrentColorScheme(options) {
142
159
  return newState;
143
160
  });
144
161
  }
145
- } else if (value.light && !joinedColorSchemes.includes(value.light) || value.dark && !joinedColorSchemes.includes(value.dark)) {
146
- console.error(`\`${value}\` does not exist in \`theme.colorSchemes\`.`);
147
162
  } else {
148
163
  setState(currentState => {
149
164
  const newState = (0, _extends2.default)({}, currentState);
150
-
151
- if (value.light || value.light === null) {
152
- newState.lightColorScheme = value.light === null ? defaultLightColorScheme : value.light;
165
+ const newLightColorScheme = value.light === null ? defaultLightColorScheme : value.light;
166
+ const newDarkColorScheme = value.dark === null ? defaultDarkColorScheme : value.dark;
167
+
168
+ if (newLightColorScheme) {
169
+ if (!joinedColorSchemes.includes(newLightColorScheme)) {
170
+ console.error(`\`${newLightColorScheme}\` does not exist in \`theme.colorSchemes\`.`);
171
+ } else {
172
+ newState.lightColorScheme = newLightColorScheme;
173
+
174
+ try {
175
+ localStorage.setItem(`${colorSchemeStorageKey}-light`, newLightColorScheme);
176
+ } catch (error) {// Unsupported
177
+ }
178
+ }
153
179
  }
154
180
 
155
- if (value.dark || value.dark === null) {
156
- newState.darkColorScheme = value.dark === null ? defaultDarkColorScheme : value.dark;
181
+ if (newDarkColorScheme) {
182
+ if (!joinedColorSchemes.includes(newDarkColorScheme)) {
183
+ console.error(`\`${newDarkColorScheme}\` does not exist in \`theme.colorSchemes\`.`);
184
+ } else {
185
+ newState.darkColorScheme = newDarkColorScheme;
186
+
187
+ try {
188
+ localStorage.setItem(`${colorSchemeStorageKey}-dark`, newDarkColorScheme);
189
+ } catch (error) {// Unsupported
190
+ }
191
+ }
157
192
  }
158
193
 
159
194
  return newState;
160
195
  });
161
-
162
- if (value.light) {
163
- localStorage.setItem(`${colorSchemeStorageKey}-light`, value.light);
164
- }
165
-
166
- if (value.dark) {
167
- localStorage.setItem(`${colorSchemeStorageKey}-dark`, value.dark);
168
- }
169
196
  }
170
197
  }, [joinedColorSchemes, colorSchemeStorageKey, defaultLightColorScheme, defaultDarkColorScheme]);
171
198
  const handleMediaQuery = React.useCallback(e => {
@@ -187,23 +214,7 @@ function useCurrentColorScheme(options) {
187
214
  media.addListener(handler);
188
215
  handler(media);
189
216
  return () => media.removeListener(handler);
190
- }, []); // Save mode, lightColorScheme & darkColorScheme to localStorage
191
-
192
- React.useEffect(() => {
193
- if (state.mode) {
194
- localStorage.setItem(modeStorageKey, state.mode);
195
- }
196
-
197
- processState(state, mode => {
198
- if (mode === 'light') {
199
- localStorage.setItem(`${colorSchemeStorageKey}-light`, state.lightColorScheme);
200
- }
201
-
202
- if (mode === 'dark') {
203
- localStorage.setItem(`${colorSchemeStorageKey}-dark`, state.darkColorScheme);
204
- }
205
- });
206
- }, [state, colorSchemeStorageKey, modeStorageKey]); // Handle when localStorage has changed
217
+ }, []); // Handle when localStorage has changed
207
218
 
208
219
  React.useEffect(() => {
209
220
  const handleStorage = event => {
@@ -5,6 +5,7 @@ import createStack from './createStack';
5
5
  * Demos:
6
6
  *
7
7
  * - [Stack (Material UI)](https://mui.com/material-ui/react-stack/)
8
+ * - [Stack (MUI System)](https://mui.com/system/react-stack/)
8
9
  *
9
10
  * API:
10
11
  *
@@ -41,7 +41,7 @@ export function getColorScheme(state) {
41
41
  });
42
42
  }
43
43
 
44
- function resolveValue(key, defaultValue) {
44
+ function initializeValue(key, defaultValue) {
45
45
  if (typeof window === 'undefined') {
46
46
  return undefined;
47
47
  }
@@ -50,6 +50,11 @@ function resolveValue(key, defaultValue) {
50
50
 
51
51
  try {
52
52
  value = localStorage.getItem(key) || undefined;
53
+
54
+ if (!value) {
55
+ // the first time that user enters the site.
56
+ localStorage.setItem(key, defaultValue);
57
+ }
53
58
  } catch (e) {// Unsupported
54
59
  }
55
60
 
@@ -68,25 +73,29 @@ export default function useCurrentColorScheme(options) {
68
73
  } = options;
69
74
  const joinedColorSchemes = supportedColorSchemes.join(',');
70
75
  const [state, setState] = React.useState(() => {
71
- const initialMode = resolveValue(modeStorageKey, defaultMode);
76
+ const initialMode = initializeValue(modeStorageKey, defaultMode);
77
+ const lightColorScheme = initializeValue(`${colorSchemeStorageKey}-light`, defaultLightColorScheme);
78
+ const darkColorScheme = initializeValue(`${colorSchemeStorageKey}-dark`, defaultDarkColorScheme);
72
79
  return {
73
80
  mode: initialMode,
74
81
  systemMode: getSystemMode(initialMode),
75
- lightColorScheme: resolveValue(`${colorSchemeStorageKey}-light`) || defaultLightColorScheme,
76
- darkColorScheme: resolveValue(`${colorSchemeStorageKey}-dark`) || defaultDarkColorScheme
82
+ lightColorScheme,
83
+ darkColorScheme
77
84
  };
78
85
  });
79
86
  const colorScheme = getColorScheme(state);
80
87
  const setMode = React.useCallback(mode => {
81
88
  setState(currentState => {
82
- const newMode = !mode ? defaultMode : mode;
83
-
84
89
  if (mode === currentState.mode) {
90
+ // do nothing if mode does not change
85
91
  return currentState;
86
92
  }
87
93
 
88
- if (typeof localStorage !== 'undefined') {
94
+ const newMode = !mode ? defaultMode : mode;
95
+
96
+ try {
89
97
  localStorage.setItem(modeStorageKey, newMode);
98
+ } catch (e) {// Unsupported
90
99
  }
91
100
 
92
101
  return _extends({}, currentState, {
@@ -96,22 +105,31 @@ export default function useCurrentColorScheme(options) {
96
105
  });
97
106
  }, [modeStorageKey, defaultMode]);
98
107
  const setColorScheme = React.useCallback(value => {
99
- if (!value || typeof value === 'string') {
108
+ if (!value) {
109
+ setState(currentState => {
110
+ try {
111
+ localStorage.setItem(`${colorSchemeStorageKey}-light`, defaultLightColorScheme);
112
+ localStorage.setItem(`${colorSchemeStorageKey}-dark`, defaultDarkColorScheme);
113
+ } catch (e) {// Unsupported
114
+ }
115
+
116
+ return _extends({}, currentState, {
117
+ lightColorScheme: defaultLightColorScheme,
118
+ darkColorScheme: defaultDarkColorScheme
119
+ });
120
+ });
121
+ } else if (typeof value === 'string') {
100
122
  if (value && !joinedColorSchemes.includes(value)) {
101
123
  console.error(`\`${value}\` does not exist in \`theme.colorSchemes\`.`);
102
124
  } else {
103
125
  setState(currentState => {
104
126
  const newState = _extends({}, currentState);
105
127
 
106
- if (!value) {
107
- // reset to default color scheme
108
- newState.lightColorScheme = defaultLightColorScheme;
109
- newState.darkColorScheme = defaultDarkColorScheme;
110
- return newState;
111
- }
112
-
113
128
  processState(currentState, mode => {
114
- localStorage.setItem(`${colorSchemeStorageKey}-${mode}`, value);
129
+ try {
130
+ localStorage.setItem(`${colorSchemeStorageKey}-${mode}`, value);
131
+ } catch (e) {// Unsupported
132
+ }
115
133
 
116
134
  if (mode === 'light') {
117
135
  newState.lightColorScheme = value;
@@ -124,30 +142,41 @@ export default function useCurrentColorScheme(options) {
124
142
  return newState;
125
143
  });
126
144
  }
127
- } else if (value.light && !joinedColorSchemes.includes(value.light) || value.dark && !joinedColorSchemes.includes(value.dark)) {
128
- console.error(`\`${value}\` does not exist in \`theme.colorSchemes\`.`);
129
145
  } else {
130
146
  setState(currentState => {
131
147
  const newState = _extends({}, currentState);
132
148
 
133
- if (value.light || value.light === null) {
134
- newState.lightColorScheme = value.light === null ? defaultLightColorScheme : value.light;
149
+ const newLightColorScheme = value.light === null ? defaultLightColorScheme : value.light;
150
+ const newDarkColorScheme = value.dark === null ? defaultDarkColorScheme : value.dark;
151
+
152
+ if (newLightColorScheme) {
153
+ if (!joinedColorSchemes.includes(newLightColorScheme)) {
154
+ console.error(`\`${newLightColorScheme}\` does not exist in \`theme.colorSchemes\`.`);
155
+ } else {
156
+ newState.lightColorScheme = newLightColorScheme;
157
+
158
+ try {
159
+ localStorage.setItem(`${colorSchemeStorageKey}-light`, newLightColorScheme);
160
+ } catch (error) {// Unsupported
161
+ }
162
+ }
135
163
  }
136
164
 
137
- if (value.dark || value.dark === null) {
138
- newState.darkColorScheme = value.dark === null ? defaultDarkColorScheme : value.dark;
165
+ if (newDarkColorScheme) {
166
+ if (!joinedColorSchemes.includes(newDarkColorScheme)) {
167
+ console.error(`\`${newDarkColorScheme}\` does not exist in \`theme.colorSchemes\`.`);
168
+ } else {
169
+ newState.darkColorScheme = newDarkColorScheme;
170
+
171
+ try {
172
+ localStorage.setItem(`${colorSchemeStorageKey}-dark`, newDarkColorScheme);
173
+ } catch (error) {// Unsupported
174
+ }
175
+ }
139
176
  }
140
177
 
141
178
  return newState;
142
179
  });
143
-
144
- if (value.light) {
145
- localStorage.setItem(`${colorSchemeStorageKey}-light`, value.light);
146
- }
147
-
148
- if (value.dark) {
149
- localStorage.setItem(`${colorSchemeStorageKey}-dark`, value.dark);
150
- }
151
180
  }
152
181
  }, [joinedColorSchemes, colorSchemeStorageKey, defaultLightColorScheme, defaultDarkColorScheme]);
153
182
  const handleMediaQuery = React.useCallback(e => {
@@ -169,23 +198,7 @@ export default function useCurrentColorScheme(options) {
169
198
  media.addListener(handler);
170
199
  handler(media);
171
200
  return () => media.removeListener(handler);
172
- }, []); // Save mode, lightColorScheme & darkColorScheme to localStorage
173
-
174
- React.useEffect(() => {
175
- if (state.mode) {
176
- localStorage.setItem(modeStorageKey, state.mode);
177
- }
178
-
179
- processState(state, mode => {
180
- if (mode === 'light') {
181
- localStorage.setItem(`${colorSchemeStorageKey}-light`, state.lightColorScheme);
182
- }
183
-
184
- if (mode === 'dark') {
185
- localStorage.setItem(`${colorSchemeStorageKey}-dark`, state.darkColorScheme);
186
- }
187
- });
188
- }, [state, colorSchemeStorageKey, modeStorageKey]); // Handle when localStorage has changed
201
+ }, []); // Handle when localStorage has changed
189
202
 
190
203
  React.useEffect(() => {
191
204
  const handleStorage = event => {
package/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license MUI v5.10.1
1
+ /** @license MUI v5.10.4
2
2
  *
3
3
  * This source code is licensed under the MIT license found in the
4
4
  * LICENSE file in the root directory of this source tree.
package/index.spec.d.ts CHANGED
@@ -1 +1 @@
1
- export {};
1
+ export {};
@@ -5,6 +5,7 @@ import createStack from './createStack';
5
5
  * Demos:
6
6
  *
7
7
  * - [Stack (Material UI)](https://mui.com/material-ui/react-stack/)
8
+ * - [Stack (MUI System)](https://mui.com/system/react-stack/)
8
9
  *
9
10
  * API:
10
11
  *