@mui/system 5.5.3 → 5.6.0

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.
package/Box/Box.spec.d.ts CHANGED
@@ -1 +1 @@
1
- export {};
1
+ export {};
package/CHANGELOG.md CHANGED
@@ -1,5 +1,79 @@
1
1
  # [Versions](https://mui.com/versions/)
2
2
 
3
+ ## 5.6.0
4
+
5
+ <!-- generated comparing v5.5.3..master -->
6
+
7
+ _Apr 5, 2022_
8
+
9
+ A big thanks to the 15 contributors who made this release possible. Here are some highlights ✨:
10
+
11
+ - 🧰 Update peer dependencies to support React 18 (#32063) @eps1lon
12
+ - 🚀 Added the experimental `CssVarsProvider` in `@mui/material` for generating theme CSS variables (#31138) @mnajdova
13
+ - 📣 Moved date and time pickers from the lab to MUI X (#31984) @flaviendelangle
14
+ - Several 🐛 bug fixes and 📚 documentation improvements
15
+
16
+ ### `@mui/material@5.6.0`
17
+
18
+ - &#8203;<!-- 25 -->[CssVarsProvider] Add experimental CssVarsProvider in @mui/material (#31138) @mnajdova
19
+ - &#8203;<!-- 06 -->[Link] Fix `sx` color to support callback (#32123) @siriwatknp
20
+ - &#8203;<!-- 05 -->[Link] Fix color transformation (#32045) @siriwatknp
21
+ - &#8203;<!-- 04 -->[ListItemButton] Specified width so that text would ellide (#32083) @MatthijsMud
22
+ - &#8203;<!-- 03 -->[TablePagination] Fixed the etEE locale (#32052) @raigoinabox
23
+
24
+ ### `@mui/base@5.0.0-alpha.75`
25
+
26
+ - &#8203;<!-- 31 -->[Badge] Simplify unstyled API (#31974) @michaldudak
27
+
28
+ ### `@mui/codemod@5.6.0`
29
+
30
+ - &#8203;<!-- 29 -->[codemod] Add v5.0.0/date-pickers-moved-to-x codemod (#31373) @flaviendelangle
31
+
32
+ ### `@mui/lab@5.0.0-alpha.76`
33
+
34
+ - &#8203;<!-- 24 -->[DatePicker] Remove date and time pickers from the lab (#31984) @flaviendelangle
35
+
36
+ ### `@mui/joy@5.0.0-alpha.22`
37
+
38
+ - &#8203;<!-- 07 -->[Joy] Add `Card` components (#32027) @siriwatknp
39
+
40
+ ### Docs
41
+
42
+ - &#8203;<!-- 30 -->[blog] New article for the date pickers migration to X (#31831) @flaviendelangle
43
+ - &#8203;<!-- 33 -->[docs] Base Menu style revisions and final review (#32097) @samuelsycamore
44
+ - &#8203;<!-- 32 -->[docs] Base Select style revisions and final review (#32095) @samuelsycamore
45
+ - &#8203;<!-- 31 -->[docs] Base Input style revisions and final review (#32096) @samuelsycamore
46
+ - &#8203;<!-- 30 -->[docs] Base Slider style revisions and final review (#32140) @samuelsycamore
47
+ - &#8203;<!-- 29 -->[docs] Base Modal style revisions and final review (#32093) @samuelsycamore
48
+ - &#8203;<!-- 28 -->[docs] Add page for CSS variables support in @mui/material (#32050) @mnajdova
49
+ - &#8203;<!-- 27 -->[docs] Add TSS support for theme style overrides (#31918) @garronej
50
+ - &#8203;<!-- 23 -->[docs] Simplify customization examples in ButtonUnstyled demos (#32092) @michaldudak
51
+ - &#8203;<!-- 22 -->[docs] Fix linking issues for the redirects (#32101) @siriwatknp
52
+ - &#8203;<!-- 21 -->[docs] Create the FormControl page (#32073) @michaldudak
53
+ - &#8203;<!-- 20 -->[docs] Remove trap-focus from the navigation (#32079) @psjishnu
54
+ - &#8203;<!-- 19 -->[docs] Add date-pickers product identifier (#32076) @siriwatknp
55
+ - &#8203;<!-- 18 -->[docs] Move SwitchUnstyled docs to the Base space (#31964) @michaldudak
56
+ - &#8203;<!-- 17 -->[docs] Add docs page for unstyled popper (#31813) @siriwatknp
57
+ - &#8203;<!-- 16 -->[docs] Copy TextareaAutosize docs to Base (#32034) @michaldudak
58
+ - &#8203;<!-- 15 -->[docs] Add react-hook-form-mui to Complementary projects #32015 @TkaczykAdam
59
+ - &#8203;<!-- 14 -->[docs] Improve the translation experience (#32021) @oliviertassinari
60
+ - &#8203;<!-- 13 -->[docs] Add small size Select demo (#32060) @ivan-ngchakming
61
+ - &#8203;<!-- 12 -->[docs] Correct typos (#32029) @apeltop
62
+ - &#8203;<!-- 11 -->[docs] Create SliderUnstyled docs (#31850) @michaldudak
63
+ - &#8203;<!-- 10 -->[docs] Create TablePaginationUnstyled docs (#32018) @michaldudak
64
+ - &#8203;<!-- 09 -->[docs] Move SelectUnstyled docs to the Base space (#31816) @michaldudak
65
+ - &#8203;<!-- 08 -->[docs] Create the TabsUnstyled docs (#32023) @michaldudak
66
+ - &#8203;<!-- 02 -->[website] The studio finally has a name, use it (#32105) @oliviertassinari
67
+ - &#8203;<!-- 01 -->[website] Disable job ad @oliviertassinari
68
+
69
+ ### Core
70
+
71
+ - &#8203;<!-- 28 -->[core] Update peer deps to support React 18 (#32063) @eps1lon
72
+ - &#8203;<!-- 27 -->[core] Fix running docs:api on Windows (#32091) @michaldudak
73
+ - &#8203;<!-- 26 -->[core] Fix api build script for MUI Base (#32081) @siriwatknp
74
+
75
+ All contributors of this release in alphabetical order: @apeltop, @eps1lon, @flaviendelangle, @garronej, @ivan-ngchakming, @m4theushw, @MatthijsMud, @michaldudak, @mnajdova, @oliviertassinari, @psjishnu, @raigoinabox, @samuelsycamore, @siriwatknp, @TkaczykAdam
76
+
3
77
  ## 5.5.3
4
78
 
5
79
  <!-- generated comparing v5.5.2..master -->
@@ -9,6 +9,7 @@ export function hexToRgb(hex: string): string;
9
9
  export function rgbToHex(color: string): string;
10
10
  export function hslToRgb(color: string): string;
11
11
  export function decomposeColor(color: string): ColorObject;
12
+ export function colorChannel(color: string): string;
12
13
  export function recomposeColor(color: ColorObject): string;
13
14
  export function getContrastRatio(foreground: string, background: string): number;
14
15
  export function getLuminance(color: string): number;
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.alpha = alpha;
7
+ exports.colorChannel = void 0;
7
8
  exports.darken = darken;
8
9
  exports.decomposeColor = decomposeColor;
9
10
  exports.emphasize = emphasize;
@@ -111,6 +112,18 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
111
112
  colorSpace
112
113
  };
113
114
  }
115
+ /**
116
+ * Returns a channel created from the input color.
117
+ *
118
+ * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()
119
+ * @returns {string} - The channel for the color, that can be used in rgba or hsla colors
120
+ */
121
+
122
+
123
+ const colorChannel = color => {
124
+ const decomposedColor = decomposeColor(color);
125
+ return decomposedColor.values.slice(0, 3).map((val, idx) => decomposedColor.type.indexOf('hsl') !== -1 && idx !== 0 ? `${val}%` : val).join(' ');
126
+ };
114
127
  /**
115
128
  * Converts a color object with type and values to a string.
116
129
  * @param {object} color - Decomposed color
@@ -120,6 +133,8 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
120
133
  */
121
134
 
122
135
 
136
+ exports.colorChannel = colorChannel;
137
+
123
138
  function recomposeColor(color) {
124
139
  const {
125
140
  type,
@@ -1 +1 @@
1
- export {};
1
+ export {};
@@ -1,10 +1,10 @@
1
- export declare type SpacingOptions = number | Spacing | ((abs: number) => number | string) | ((abs: number | string) => number | string) | ReadonlyArray<string | number>;
2
- export declare type SpacingArgument = number | string;
3
- export interface Spacing {
4
- (): string;
5
- (value: number): string;
6
- (topBottom: SpacingArgument, rightLeft: SpacingArgument): string;
7
- (top: SpacingArgument, rightLeft: SpacingArgument, bottom: SpacingArgument): string;
8
- (top: SpacingArgument, right: SpacingArgument, bottom: SpacingArgument, left: SpacingArgument): string;
9
- }
10
- export default function createSpacing(spacingInput?: SpacingOptions): Spacing;
1
+ export declare type SpacingOptions = number | Spacing | ((abs: number) => number | string) | ((abs: number | string) => number | string) | ReadonlyArray<string | number>;
2
+ export declare type SpacingArgument = number | string;
3
+ export interface Spacing {
4
+ (): string;
5
+ (value: number): string;
6
+ (topBottom: SpacingArgument, rightLeft: SpacingArgument): string;
7
+ (top: SpacingArgument, rightLeft: SpacingArgument, bottom: SpacingArgument): string;
8
+ (top: SpacingArgument, right: SpacingArgument, bottom: SpacingArgument, left: SpacingArgument): string;
9
+ }
10
+ export default function createSpacing(spacingInput?: SpacingOptions): Spacing;
@@ -36,6 +36,28 @@ export interface CssVarsProviderConfig<ColorScheme extends string> {
36
36
  prefix?: string;
37
37
  }
38
38
 
39
+ export interface CreateCssVarsProviderResult<ColorScheme extends string, ThemeInput> {
40
+ CssVarsProvider: (
41
+ props: React.PropsWithChildren<
42
+ Partial<CssVarsProviderConfig<ColorScheme>> & {
43
+ theme?: ThemeInput;
44
+ /**
45
+ * localStorage key used to store application `mode`
46
+ * @default 'mui-mode'
47
+ */
48
+ modeStorageKey?: string;
49
+ /**
50
+ * DOM attribute for applying color scheme
51
+ * @default 'data-mui-color-scheme'
52
+ */
53
+ attribute?: string;
54
+ }
55
+ >,
56
+ ) => React.ReactElement;
57
+ useColorScheme: () => ColorSchemeContextValue<ColorScheme>;
58
+ getInitColorSchemeScript: typeof getInitColorSchemeScript;
59
+ }
60
+
39
61
  export default function createCssVarsProvider<
40
62
  ColorScheme extends string,
41
63
  ThemeInput extends { colorSchemes?: Partial<Record<ColorScheme, any>> },
@@ -83,27 +105,7 @@ export default function createCssVarsProvider<
83
105
  */
84
106
  resolveTheme?: (theme: any) => any; // the type is any because it depends on the design system.
85
107
  },
86
- ): {
87
- CssVarsProvider: (
88
- props: React.PropsWithChildren<
89
- Partial<CssVarsProviderConfig<ColorScheme>> & {
90
- theme?: ThemeInput;
91
- /**
92
- * localStorage key used to store application `mode`
93
- * @default 'mui-mode'
94
- */
95
- modeStorageKey?: string;
96
- /**
97
- * DOM attribute for applying color scheme
98
- * @default 'data-mui-color-scheme'
99
- */
100
- attribute?: string;
101
- }
102
- >,
103
- ) => React.ReactElement;
104
- useColorScheme: () => ColorSchemeContextValue<ColorScheme>;
105
- getInitColorSchemeScript: typeof getInitColorSchemeScript;
106
- };
108
+ ): CreateCssVarsProviderResult<ColorScheme, ThemeInput>;
107
109
 
108
110
  // disable automatic export
109
111
  export {};
@@ -1 +1 @@
1
- export {};
1
+ export {};
@@ -1,5 +1,5 @@
1
- /**
2
- * The benefit of this function is to help developers get CSS var from theme without specifying the whole variable
3
- * and they does not need to remember the prefix (defined once).
4
- */
5
- export default function createGetCssVar<T extends string = string>(prefix?: string): <AdditionalVars extends string = never>(field: T | AdditionalVars, ...vars: (T | AdditionalVars)[]) => string;
1
+ /**
2
+ * The benefit of this function is to help developers get CSS var from theme without specifying the whole variable
3
+ * and they does not need to remember the prefix (defined once).
4
+ */
5
+ export default function createGetCssVar<T extends string = string>(prefix?: string): <AdditionalVars extends string = never>(field: T | AdditionalVars, ...vars: (T | AdditionalVars)[]) => string;
@@ -1,70 +1,70 @@
1
- declare type NestedRecord<V = any> = {
2
- [k: string | number]: NestedRecord<V> | V;
3
- };
4
- /**
5
- * This function create an object from keys, value and then assign to target
6
- *
7
- * @param {Object} obj : the target object to be assigned
8
- * @param {string[]} keys
9
- * @param {string | number} value
10
- *
11
- * @example
12
- * const source = {}
13
- * assignNestedKeys(source, ['palette', 'primary'], 'var(--palette-primary)')
14
- * console.log(source) // { palette: { primary: 'var(--palette-primary)' } }
15
- *
16
- * @example
17
- * const source = { palette: { primary: 'var(--palette-primary)' } }
18
- * assignNestedKeys(source, ['palette', 'secondary'], 'var(--palette-secondary)')
19
- * console.log(source) // { palette: { primary: 'var(--palette-primary)', secondary: 'var(--palette-secondary)' } }
20
- */
21
- export declare const assignNestedKeys: <Object_1 = NestedRecord<any>, Value = any>(obj: Object_1, keys: Array<string>, value: Value) => void;
22
- /**
23
- *
24
- * @param {Object} obj : source object
25
- * @param {Function} callback : a function that will be called when
26
- * - the deepest key in source object is reached
27
- * - the value of the deepest key is NOT `undefined` | `null`
28
- *
29
- * @example
30
- * walkObjectDeep({ palette: { primary: { main: '#000000' } } }, console.log)
31
- * // ['palette', 'primary', 'main'] '#000000'
32
- */
33
- export declare const walkObjectDeep: <Value, T = Record<string, any>>(obj: T, callback: (keys: Array<string>, value: Value, scope: Record<string, string | number>) => void, shouldSkipPaths?: ((keys: Array<string>) => boolean) | undefined) => void;
34
- /**
35
- * a function that parse theme and return { css, vars }
36
- *
37
- * @param {Object} theme
38
- * @param {{
39
- * prefix?: string,
40
- * basePrefix?: string,
41
- * shouldSkipGeneratingVar?: (objectPathKeys: Array<string>, value: string | number) => boolean
42
- * }} options.
43
- * `basePrefix`: defined by design system.
44
- * `prefix`: defined by application
45
- *
46
- * the CSS variable value will be adjusted based on the provided `basePrefix` & `prefix` which can be found in `parsedTheme`.
47
- *
48
- * @returns {{ css: Object, vars: Object, parsedTheme: typeof theme }} `css` is the stylesheet, `vars` is an object to get css variable (same structure as theme), and `parsedTheme` is the cloned version of theme.
49
- *
50
- * @example
51
- * const { css, vars, parsedTheme } = parser({
52
- * fontSize: 12,
53
- * lineHeight: 1.2,
54
- * palette: { primary: { 500: 'var(--color)' } }
55
- * }, { prefix: 'foo' })
56
- *
57
- * console.log(css) // { '--foo-fontSize': '12px', '--foo-lineHeight': 1.2, '--foo-palette-primary-500': 'var(--foo-color)' }
58
- * console.log(vars) // { fontSize: '--foo-fontSize', lineHeight: '--foo-lineHeight', palette: { primary: { 500: 'var(--foo-palette-primary-500)' } } }
59
- * console.log(parsedTheme) // { fontSize: 12, lineHeight: 1.2, palette: { primary: { 500: 'var(--foo-color)' } } }
60
- */
61
- export default function cssVarsParser<T extends Record<string, any>>(theme: T, options?: {
62
- prefix?: string;
63
- basePrefix?: string;
64
- shouldSkipGeneratingVar?: (objectPathKeys: Array<string>, value: string | number) => boolean;
65
- }): {
66
- css: NestedRecord<string>;
67
- vars: NestedRecord<string>;
68
- parsedTheme: T;
69
- };
70
- export {};
1
+ declare type NestedRecord<V = any> = {
2
+ [k: string | number]: NestedRecord<V> | V;
3
+ };
4
+ /**
5
+ * This function create an object from keys, value and then assign to target
6
+ *
7
+ * @param {Object} obj : the target object to be assigned
8
+ * @param {string[]} keys
9
+ * @param {string | number} value
10
+ *
11
+ * @example
12
+ * const source = {}
13
+ * assignNestedKeys(source, ['palette', 'primary'], 'var(--palette-primary)')
14
+ * console.log(source) // { palette: { primary: 'var(--palette-primary)' } }
15
+ *
16
+ * @example
17
+ * const source = { palette: { primary: 'var(--palette-primary)' } }
18
+ * assignNestedKeys(source, ['palette', 'secondary'], 'var(--palette-secondary)')
19
+ * console.log(source) // { palette: { primary: 'var(--palette-primary)', secondary: 'var(--palette-secondary)' } }
20
+ */
21
+ export declare const assignNestedKeys: <Object_1 = NestedRecord<any>, Value = any>(obj: Object_1, keys: Array<string>, value: Value) => void;
22
+ /**
23
+ *
24
+ * @param {Object} obj : source object
25
+ * @param {Function} callback : a function that will be called when
26
+ * - the deepest key in source object is reached
27
+ * - the value of the deepest key is NOT `undefined` | `null`
28
+ *
29
+ * @example
30
+ * walkObjectDeep({ palette: { primary: { main: '#000000' } } }, console.log)
31
+ * // ['palette', 'primary', 'main'] '#000000'
32
+ */
33
+ export declare const walkObjectDeep: <Value, T = Record<string, any>>(obj: T, callback: (keys: Array<string>, value: Value, scope: Record<string, string | number>) => void, shouldSkipPaths?: ((keys: Array<string>) => boolean) | undefined) => void;
34
+ /**
35
+ * a function that parse theme and return { css, vars }
36
+ *
37
+ * @param {Object} theme
38
+ * @param {{
39
+ * prefix?: string,
40
+ * basePrefix?: string,
41
+ * shouldSkipGeneratingVar?: (objectPathKeys: Array<string>, value: string | number) => boolean
42
+ * }} options.
43
+ * `basePrefix`: defined by design system.
44
+ * `prefix`: defined by application
45
+ *
46
+ * the CSS variable value will be adjusted based on the provided `basePrefix` & `prefix` which can be found in `parsedTheme`.
47
+ *
48
+ * @returns {{ css: Object, vars: Object, parsedTheme: typeof theme }} `css` is the stylesheet, `vars` is an object to get css variable (same structure as theme), and `parsedTheme` is the cloned version of theme.
49
+ *
50
+ * @example
51
+ * const { css, vars, parsedTheme } = parser({
52
+ * fontSize: 12,
53
+ * lineHeight: 1.2,
54
+ * palette: { primary: { 500: 'var(--color)' } }
55
+ * }, { prefix: 'foo' })
56
+ *
57
+ * console.log(css) // { '--foo-fontSize': '12px', '--foo-lineHeight': 1.2, '--foo-palette-primary-500': 'var(--foo-color)' }
58
+ * console.log(vars) // { fontSize: '--foo-fontSize', lineHeight: '--foo-lineHeight', palette: { primary: { 500: 'var(--foo-palette-primary-500)' } } }
59
+ * console.log(parsedTheme) // { fontSize: 12, lineHeight: 1.2, palette: { primary: { 500: 'var(--foo-color)' } } }
60
+ */
61
+ export default function cssVarsParser<T extends Record<string, any>>(theme: T, options?: {
62
+ prefix?: string;
63
+ basePrefix?: string;
64
+ shouldSkipGeneratingVar?: (objectPathKeys: Array<string>, value: string | number) => boolean;
65
+ }): {
66
+ css: NestedRecord<string>;
67
+ vars: NestedRecord<string>;
68
+ parsedTheme: T;
69
+ };
70
+ export {};
@@ -82,6 +82,13 @@ const getCssValue = (keys, value) => {
82
82
  return value;
83
83
  }
84
84
 
85
+ const lastKey = keys[keys.length - 1];
86
+
87
+ if (lastKey.toLowerCase().indexOf('opacity') >= 0) {
88
+ // opacity values are unitless
89
+ return value;
90
+ }
91
+
85
92
  return `${value}px`;
86
93
  }
87
94
 
@@ -1,12 +1,12 @@
1
- /// <reference types="react" />
2
- export declare const DEFAULT_MODE_STORAGE_KEY = "mui-mode";
3
- export declare const DEFAULT_COLOR_SCHEME_STORAGE_KEY = "mui-color-scheme";
4
- export declare const DEFAULT_ATTRIBUTE = "data-mui-color-scheme";
5
- export default function getInitColorSchemeScript(options?: {
6
- enableSystem?: boolean;
7
- defaultLightColorScheme?: string;
8
- defaultDarkColorScheme?: string;
9
- modeStorageKey?: string;
10
- colorSchemeStorageKey?: string;
11
- attribute?: string;
12
- }): JSX.Element;
1
+ /// <reference types="react" />
2
+ export declare const DEFAULT_MODE_STORAGE_KEY = "mui-mode";
3
+ export declare const DEFAULT_COLOR_SCHEME_STORAGE_KEY = "mui-color-scheme";
4
+ export declare const DEFAULT_ATTRIBUTE = "data-mui-color-scheme";
5
+ export default function getInitColorSchemeScript(options?: {
6
+ enableSystem?: boolean;
7
+ defaultLightColorScheme?: string;
8
+ defaultDarkColorScheme?: string;
9
+ modeStorageKey?: string;
10
+ colorSchemeStorageKey?: string;
11
+ attribute?: string;
12
+ }): JSX.Element;
@@ -1 +1,2 @@
1
- export { default } from './createCssVarsProvider';
1
+ export { default } from './createCssVarsProvider';
2
+ export type { CreateCssVarsProviderResult } from './createCssVarsProvider';
@@ -1,50 +1,50 @@
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
- export default function useCurrentColorScheme<SupportedColorScheme extends string>(options: {
44
- defaultLightColorScheme: SupportedColorScheme;
45
- defaultDarkColorScheme: SupportedColorScheme;
46
- supportedColorSchemes: Array<SupportedColorScheme>;
47
- defaultMode?: Mode;
48
- modeStorageKey?: string;
49
- colorSchemeStorageKey?: string;
50
- }): Result<SupportedColorScheme>;
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
+ export default function useCurrentColorScheme<SupportedColorScheme extends string>(options: {
44
+ defaultLightColorScheme: SupportedColorScheme;
45
+ defaultDarkColorScheme: SupportedColorScheme;
46
+ supportedColorSchemes: Array<SupportedColorScheme>;
47
+ defaultMode?: Mode;
48
+ modeStorageKey?: string;
49
+ colorSchemeStorageKey?: string;
50
+ }): Result<SupportedColorScheme>;
@@ -94,6 +94,17 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
94
94
  colorSpace
95
95
  };
96
96
  }
97
+ /**
98
+ * Returns a channel created from the input color.
99
+ *
100
+ * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()
101
+ * @returns {string} - The channel for the color, that can be used in rgba or hsla colors
102
+ */
103
+
104
+ export const colorChannel = color => {
105
+ const decomposedColor = decomposeColor(color);
106
+ return decomposedColor.values.slice(0, 3).map((val, idx) => decomposedColor.type.indexOf('hsl') !== -1 && idx !== 0 ? `${val}%` : val).join(' ');
107
+ };
97
108
  /**
98
109
  * Converts a color object with type and values to a string.
99
110
  * @param {object} color - Decomposed color
@@ -68,6 +68,13 @@ const getCssValue = (keys, value) => {
68
68
  return value;
69
69
  }
70
70
 
71
+ const lastKey = keys[keys.length - 1];
72
+
73
+ if (lastKey.toLowerCase().indexOf('opacity') >= 0) {
74
+ // opacity values are unitless
75
+ return value;
76
+ }
77
+
71
78
  return `${value}px`;
72
79
  }
73
80
 
package/index.d.ts CHANGED
@@ -162,6 +162,6 @@ export * from './colorManipulator';
162
162
  export { default as ThemeProvider } from './ThemeProvider';
163
163
  export * from './ThemeProvider';
164
164
 
165
- export { default as unstable_createCssVarsProvider } from './cssVars';
165
+ export { default as unstable_createCssVarsProvider, CreateCssVarsProviderResult } from './cssVars';
166
166
  export { default as unstable_createGetCssVar } from './cssVars/createGetCssVar';
167
167
  export * from './cssVars';
package/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license MUI v5.5.3
1
+ /** @license MUI v5.6.0
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 {};
@@ -99,6 +99,19 @@ export function decomposeColor(color) {
99
99
  colorSpace: colorSpace
100
100
  };
101
101
  }
102
+ /**
103
+ * Returns a channel created from the input color.
104
+ *
105
+ * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()
106
+ * @returns {string} - The channel for the color, that can be used in rgba or hsla colors
107
+ */
108
+
109
+ export var colorChannel = function colorChannel(color) {
110
+ var decomposedColor = decomposeColor(color);
111
+ return decomposedColor.values.slice(0, 3).map(function (val, idx) {
112
+ return decomposedColor.type.indexOf('hsl') !== -1 && idx !== 0 ? "".concat(val, "%") : val;
113
+ }).join(' ');
114
+ };
102
115
  /**
103
116
  * Converts a color object with type and values to a string.
104
117
  * @param {object} color - Decomposed color
@@ -81,6 +81,13 @@ var getCssValue = function getCssValue(keys, value) {
81
81
  return value;
82
82
  }
83
83
 
84
+ var lastKey = keys[keys.length - 1];
85
+
86
+ if (lastKey.toLowerCase().indexOf('opacity') >= 0) {
87
+ // opacity values are unitless
88
+ return value;
89
+ }
90
+
84
91
  return "".concat(value, "px");
85
92
  }
86
93
 
package/legacy/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license MUI v5.5.3
1
+ /** @license MUI v5.6.0
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.
@@ -94,6 +94,17 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
94
94
  colorSpace
95
95
  };
96
96
  }
97
+ /**
98
+ * Returns a channel created from the input color.
99
+ *
100
+ * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()
101
+ * @returns {string} - The channel for the color, that can be used in rgba or hsla colors
102
+ */
103
+
104
+ export const colorChannel = color => {
105
+ const decomposedColor = decomposeColor(color);
106
+ return decomposedColor.values.slice(0, 3).map((val, idx) => decomposedColor.type.indexOf('hsl') !== -1 && idx !== 0 ? `${val}%` : val).join(' ');
107
+ };
97
108
  /**
98
109
  * Converts a color object with type and values to a string.
99
110
  * @param {object} color - Decomposed color
@@ -68,6 +68,13 @@ const getCssValue = (keys, value) => {
68
68
  return value;
69
69
  }
70
70
 
71
+ const lastKey = keys[keys.length - 1];
72
+
73
+ if (lastKey.toLowerCase().indexOf('opacity') >= 0) {
74
+ // opacity values are unitless
75
+ return value;
76
+ }
77
+
71
78
  return `${value}px`;
72
79
  }
73
80
 
package/modern/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license MUI v5.5.3
1
+ /** @license MUI v5.6.0
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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/system",
3
- "version": "5.5.3",
3
+ "version": "5.6.0",
4
4
  "private": false,
5
5
  "author": "MUI Team",
6
6
  "description": "CSS utilities for rapidly laying out custom designs.",
@@ -28,8 +28,8 @@
28
28
  "peerDependencies": {
29
29
  "@emotion/react": "^11.5.0",
30
30
  "@emotion/styled": "^11.3.0",
31
- "@types/react": "^16.8.6 || ^17.0.0",
32
- "react": "^17.0.0"
31
+ "@types/react": "^16.8.6 || ^17.0.0 || ^18.0.0",
32
+ "react": "^17.0.0 || ^18.0.0"
33
33
  },
34
34
  "peerDependenciesMeta": {
35
35
  "@types/react": {
@@ -44,10 +44,10 @@
44
44
  },
45
45
  "dependencies": {
46
46
  "@babel/runtime": "^7.17.2",
47
- "@mui/private-theming": "^5.5.3",
48
- "@mui/styled-engine": "^5.5.2",
47
+ "@mui/private-theming": "^5.6.0",
48
+ "@mui/styled-engine": "^5.6.0",
49
49
  "@mui/types": "^7.1.3",
50
- "@mui/utils": "^5.5.3",
50
+ "@mui/utils": "^5.6.0",
51
51
  "clsx": "^1.1.1",
52
52
  "csstype": "^3.0.11",
53
53
  "prop-types": "^15.7.2"
@@ -1 +1 @@
1
- export {};
1
+ export {};