@mui/system 6.0.0-beta.1 → 6.0.0-beta.3

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 (33) hide show
  1. package/CHANGELOG.md +442 -32
  2. package/InitColorSchemeScript/InitColorSchemeScript.d.ts +3 -5
  3. package/InitColorSchemeScript/InitColorSchemeScript.js +26 -7
  4. package/createTheme/applyStyles.js +10 -4
  5. package/cssVars/createCssVarsProvider.d.ts +2 -11
  6. package/cssVars/createCssVarsProvider.js +33 -72
  7. package/cssVars/createCssVarsTheme.d.ts +2 -1
  8. package/cssVars/createCssVarsTheme.js +10 -2
  9. package/cssVars/getColorSchemeSelector.d.ts +1 -0
  10. package/cssVars/getColorSchemeSelector.js +26 -0
  11. package/cssVars/index.d.ts +1 -0
  12. package/cssVars/index.js +2 -1
  13. package/cssVars/prepareCssVars.d.ts +3 -2
  14. package/cssVars/prepareCssVars.js +56 -14
  15. package/cssVars/useCurrentColorScheme.d.ts +2 -2
  16. package/index.js +1 -1
  17. package/modern/InitColorSchemeScript/InitColorSchemeScript.js +26 -7
  18. package/modern/createTheme/applyStyles.js +10 -4
  19. package/modern/cssVars/createCssVarsProvider.js +33 -72
  20. package/modern/cssVars/createCssVarsTheme.js +10 -2
  21. package/modern/cssVars/getColorSchemeSelector.js +26 -0
  22. package/modern/cssVars/index.js +2 -1
  23. package/modern/cssVars/prepareCssVars.js +56 -14
  24. package/modern/index.js +1 -1
  25. package/node/InitColorSchemeScript/InitColorSchemeScript.js +26 -7
  26. package/node/createTheme/applyStyles.js +11 -4
  27. package/node/cssVars/createCssVarsProvider.js +33 -72
  28. package/node/cssVars/createCssVarsTheme.js +10 -2
  29. package/node/cssVars/getColorSchemeSelector.js +32 -0
  30. package/node/cssVars/index.js +8 -1
  31. package/node/cssVars/prepareCssVars.js +59 -14
  32. package/node/index.js +1 -1
  33. package/package.json +5 -5
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createGetColorSchemeSelector = createGetColorSchemeSelector;
7
+ /* eslint-disable import/prefer-default-export */
8
+ function createGetColorSchemeSelector(selector) {
9
+ return function getColorSchemeSelector(colorScheme) {
10
+ if (selector === 'media') {
11
+ if (process.env.NODE_ENV !== 'production') {
12
+ if (colorScheme !== 'light' && colorScheme !== 'dark') {
13
+ console.error(`MUI: @media (prefers-color-scheme) supports only 'light' or 'dark', but receive '${colorScheme}'.`);
14
+ }
15
+ }
16
+ return `@media (prefers-color-scheme: ${colorScheme})`;
17
+ }
18
+ if (selector) {
19
+ if (selector.startsWith('data-') && !selector.includes('%s')) {
20
+ return `[${selector}="${colorScheme}"] &`;
21
+ }
22
+ if (selector === 'class') {
23
+ return `.${colorScheme} &`;
24
+ }
25
+ if (selector === 'data') {
26
+ return `[data-${colorScheme}] &`;
27
+ }
28
+ return `${selector.replace('%s', colorScheme)} &`;
29
+ }
30
+ return '&';
31
+ };
32
+ }
@@ -11,6 +11,12 @@ Object.defineProperty(exports, "createCssVarsTheme", {
11
11
  return _createCssVarsTheme.default;
12
12
  }
13
13
  });
14
+ Object.defineProperty(exports, "createGetColorSchemeSelector", {
15
+ enumerable: true,
16
+ get: function () {
17
+ return _getColorSchemeSelector.createGetColorSchemeSelector;
18
+ }
19
+ });
14
20
  Object.defineProperty(exports, "default", {
15
21
  enumerable: true,
16
22
  get: function () {
@@ -32,4 +38,5 @@ Object.defineProperty(exports, "prepareTypographyVars", {
32
38
  var _createCssVarsProvider = _interopRequireDefault(require("./createCssVarsProvider"));
33
39
  var _prepareCssVars = _interopRequireDefault(require("./prepareCssVars"));
34
40
  var _prepareTypographyVars = _interopRequireDefault(require("./prepareTypographyVars"));
35
- var _createCssVarsTheme = _interopRequireDefault(require("./createCssVarsTheme"));
41
+ var _createCssVarsTheme = _interopRequireDefault(require("./createCssVarsTheme"));
42
+ var _getColorSchemeSelector = require("./getColorSchemeSelector");
@@ -7,10 +7,12 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.default = void 0;
8
8
  var _deepmerge = _interopRequireDefault(require("@mui/utils/deepmerge"));
9
9
  var _cssVarsParser = _interopRequireDefault(require("./cssVarsParser"));
10
- function prepareCssVars(theme, {
11
- getSelector,
12
- ...parserConfig
13
- } = {}) {
10
+ function prepareCssVars(theme, parserConfig = {}) {
11
+ const {
12
+ getSelector = defaultGetSelector,
13
+ disableCssColorScheme,
14
+ colorSchemeSelector: selector
15
+ } = parserConfig;
14
16
  // @ts-ignore - ignore components do not exist
15
17
  const {
16
18
  colorSchemes = {},
@@ -54,6 +56,33 @@ function prepareCssVars(theme, {
54
56
  vars
55
57
  };
56
58
  }
59
+ function defaultGetSelector(colorScheme) {
60
+ let rule = selector;
61
+ if (selector === 'class') {
62
+ rule = '.%s';
63
+ }
64
+ if (selector === 'data') {
65
+ rule = '[data-%s]';
66
+ }
67
+ if (selector != null && selector.startsWith('data-') && !selector.includes('%s')) {
68
+ // 'data-joy-color-scheme' -> '[data-joy-color-scheme="%s"]'
69
+ rule = `[${selector}="%s"]`;
70
+ }
71
+ if (colorScheme) {
72
+ if (rule === 'media') {
73
+ var _colorSchemes;
74
+ if (theme.defaultColorScheme === colorScheme) {
75
+ return ':root';
76
+ }
77
+ const mode = ((_colorSchemes = colorSchemes[colorScheme]) == null || (_colorSchemes = _colorSchemes.palette) == null ? void 0 : _colorSchemes.mode) || colorScheme;
78
+ return `@media (prefers-color-scheme: ${mode}) { :root`;
79
+ }
80
+ if (rule) {
81
+ return rule.replace('%s', String(colorScheme));
82
+ }
83
+ }
84
+ return ':root';
85
+ }
57
86
  const generateThemeVars = () => {
58
87
  let vars = {
59
88
  ...rootVars
@@ -68,37 +97,53 @@ function prepareCssVars(theme, {
68
97
  const generateStyleSheets = () => {
69
98
  const stylesheets = [];
70
99
  const colorScheme = theme.defaultColorScheme || 'light';
71
- function insertStyleSheet(selector, css) {
100
+ function insertStyleSheet(key, css) {
72
101
  if (Object.keys(css).length) {
73
- stylesheets.push(typeof selector === 'string' ? {
74
- [selector]: {
102
+ stylesheets.push(typeof key === 'string' ? {
103
+ [key]: {
75
104
  ...css
76
105
  }
77
- } : selector);
106
+ } : key);
78
107
  }
79
108
  }
80
- insertStyleSheet((getSelector == null ? void 0 : getSelector(undefined, {
109
+ insertStyleSheet(getSelector(undefined, {
81
110
  ...rootCss
82
- })) || ':root', rootCss);
111
+ }), rootCss);
83
112
  const {
84
113
  [colorScheme]: defaultSchemeVal,
85
114
  ...other
86
115
  } = colorSchemesMap;
87
116
  if (defaultSchemeVal) {
117
+ var _colorSchemes$colorSc;
88
118
  // default color scheme has to come before other color schemes
89
119
  const {
90
120
  css
91
121
  } = defaultSchemeVal;
92
- insertStyleSheet((getSelector == null ? void 0 : getSelector(colorScheme, {
122
+ const cssColorSheme = (_colorSchemes$colorSc = colorSchemes[colorScheme]) == null || (_colorSchemes$colorSc = _colorSchemes$colorSc.palette) == null ? void 0 : _colorSchemes$colorSc.mode;
123
+ const finalCss = !disableCssColorScheme && cssColorSheme ? {
124
+ colorScheme: cssColorSheme,
93
125
  ...css
94
- })) || `[${theme.attribute || 'data-color-scheme'}="${colorScheme}"]`, css);
126
+ } : {
127
+ ...css
128
+ };
129
+ insertStyleSheet(getSelector(colorScheme, {
130
+ ...finalCss
131
+ }), finalCss);
95
132
  }
96
133
  Object.entries(other).forEach(([key, {
97
134
  css
98
135
  }]) => {
99
- insertStyleSheet((getSelector == null ? void 0 : getSelector(key, {
136
+ var _colorSchemes$key;
137
+ const cssColorSheme = (_colorSchemes$key = colorSchemes[key]) == null || (_colorSchemes$key = _colorSchemes$key.palette) == null ? void 0 : _colorSchemes$key.mode;
138
+ const finalCss = !disableCssColorScheme && cssColorSheme ? {
139
+ colorScheme: cssColorSheme,
140
+ ...css
141
+ } : {
100
142
  ...css
101
- })) || `[${theme.attribute || 'data-color-scheme'}="${key}"]`, css);
143
+ };
144
+ insertStyleSheet(getSelector(key, {
145
+ ...finalCss
146
+ }), finalCss);
102
147
  });
103
148
  return stylesheets;
104
149
  };
package/node/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/system v6.0.0-beta.1
2
+ * @mui/system v6.0.0-beta.3
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/system",
3
- "version": "6.0.0-beta.1",
3
+ "version": "6.0.0-beta.3",
4
4
  "private": false,
5
5
  "author": "MUI Team",
6
6
  "description": "MUI System is a set of CSS utilities to help you build custom designs more efficiently. It makes it possible to rapidly lay out custom designs.",
@@ -30,10 +30,10 @@
30
30
  "clsx": "^2.1.1",
31
31
  "csstype": "^3.1.3",
32
32
  "prop-types": "^15.8.1",
33
- "@mui/private-theming": "6.0.0-beta.1",
33
+ "@mui/private-theming": "6.0.0-beta.3",
34
+ "@mui/styled-engine": "6.0.0-beta.3",
34
35
  "@mui/types": "^7.2.14",
35
- "@mui/utils": "6.0.0-beta.1",
36
- "@mui/styled-engine": "6.0.0-beta.1"
36
+ "@mui/utils": "6.0.0-beta.3"
37
37
  },
38
38
  "peerDependencies": {
39
39
  "@emotion/react": "^11.5.0",
@@ -58,7 +58,7 @@
58
58
  "directory": "build"
59
59
  },
60
60
  "engines": {
61
- "node": ">=12.0.0"
61
+ "node": ">=14.0.0"
62
62
  },
63
63
  "module": "./index.js",
64
64
  "types": "./index.d.ts"