@mui/system 5.7.0 → 5.8.2

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 (57) hide show
  1. package/Box/Box.spec.d.ts +1 -1
  2. package/CHANGELOG.md +201 -4
  3. package/Container/Container.d.ts +13 -0
  4. package/Container/Container.js +81 -0
  5. package/Container/ContainerProps.d.ts +40 -0
  6. package/Container/ContainerProps.js +5 -0
  7. package/Container/containerClasses.d.ts +22 -0
  8. package/Container/containerClasses.js +17 -0
  9. package/Container/createContainer.d.ts +18 -0
  10. package/Container/createContainer.js +172 -0
  11. package/Container/index.d.ts +5 -0
  12. package/Container/index.js +42 -0
  13. package/Container/package.json +6 -0
  14. package/createBox.spec.d.ts +1 -1
  15. package/createTheme/createBreakpoints.d.ts +5 -0
  16. package/createTheme/createSpacing.d.ts +10 -10
  17. package/cssVars/createCssVarsProvider.js +9 -5
  18. package/cssVars/createCssVarsProvider.spec.d.ts +1 -1
  19. package/cssVars/createGetCssVar.d.ts +5 -5
  20. package/cssVars/cssVarsParser.d.ts +70 -70
  21. package/cssVars/getInitColorSchemeScript.d.ts +40 -40
  22. package/cssVars/index.d.ts +2 -2
  23. package/cssVars/useCurrentColorScheme.d.ts +53 -53
  24. package/esm/Container/Container.js +70 -0
  25. package/esm/Container/ContainerProps.js +1 -0
  26. package/esm/Container/containerClasses.js +6 -0
  27. package/esm/Container/createContainer.js +151 -0
  28. package/esm/Container/index.js +3 -0
  29. package/esm/cssVars/createCssVarsProvider.js +9 -5
  30. package/esm/index.js +4 -1
  31. package/esm/spacing.js +1 -1
  32. package/esm/style.js +2 -2
  33. package/index.d.ts +6 -0
  34. package/index.js +32 -2
  35. package/index.spec.d.ts +1 -1
  36. package/legacy/Container/Container.js +70 -0
  37. package/legacy/Container/ContainerProps.js +1 -0
  38. package/legacy/Container/containerClasses.js +6 -0
  39. package/legacy/Container/createContainer.js +148 -0
  40. package/legacy/Container/index.js +3 -0
  41. package/legacy/cssVars/createCssVarsProvider.js +11 -5
  42. package/legacy/index.js +5 -2
  43. package/legacy/spacing.js +1 -1
  44. package/legacy/style.js +3 -1
  45. package/modern/Container/Container.js +70 -0
  46. package/modern/Container/ContainerProps.js +1 -0
  47. package/modern/Container/containerClasses.js +6 -0
  48. package/modern/Container/createContainer.js +151 -0
  49. package/modern/Container/index.js +3 -0
  50. package/modern/cssVars/createCssVarsProvider.js +9 -5
  51. package/modern/index.js +5 -2
  52. package/modern/spacing.js +1 -1
  53. package/modern/style.js +2 -2
  54. package/package.json +5 -5
  55. package/spacing.js +1 -1
  56. package/style.js +2 -2
  57. package/styleFunctionSx/styleFunctionSx.spec.d.ts +1 -1
@@ -0,0 +1,70 @@
1
+ import PropTypes from 'prop-types';
2
+ import createContainer from './createContainer';
3
+ /**
4
+ *
5
+ * Demos:
6
+ *
7
+ * - [Container (Material UI)](https://mui.com/material-ui/react-container/)
8
+ * - [Container (MUI System)](https://mui.com/system/react-container/)
9
+ *
10
+ * API:
11
+ *
12
+ * - [Container API](https://mui.com/system/api/container/)
13
+ */
14
+
15
+ const Container = createContainer();
16
+ process.env.NODE_ENV !== "production" ? Container.propTypes
17
+ /* remove-proptypes */
18
+ = {
19
+ // ----------------------------- Warning --------------------------------
20
+ // | These PropTypes are generated from the TypeScript type definitions |
21
+ // | To update them edit TypeScript types and run "yarn proptypes" |
22
+ // ----------------------------------------------------------------------
23
+
24
+ /**
25
+ * @ignore
26
+ */
27
+ children: PropTypes.node,
28
+
29
+ /**
30
+ * Override or extend the styles applied to the component.
31
+ */
32
+ classes: PropTypes.object,
33
+
34
+ /**
35
+ * The component used for the root node.
36
+ * Either a string to use a HTML element or a component.
37
+ */
38
+ component: PropTypes.elementType,
39
+
40
+ /**
41
+ * If `true`, the left and right padding is removed.
42
+ * @default false
43
+ */
44
+ disableGutters: PropTypes.bool,
45
+
46
+ /**
47
+ * Set the max-width to match the min-width of the current breakpoint.
48
+ * This is useful if you'd prefer to design for a fixed set of sizes
49
+ * instead of trying to accommodate a fully fluid viewport.
50
+ * It's fluid by default.
51
+ * @default false
52
+ */
53
+ fixed: PropTypes.bool,
54
+
55
+ /**
56
+ * Determine the max-width of the container.
57
+ * The container width grows with the size of the screen.
58
+ * Set to `false` to disable `maxWidth`.
59
+ * @default 'lg'
60
+ */
61
+ maxWidth: PropTypes
62
+ /* @typescript-to-proptypes-ignore */
63
+ .oneOfType([PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', false]), PropTypes.string]),
64
+
65
+ /**
66
+ * The system prop that allows defining system overrides as well as additional CSS styles.
67
+ */
68
+ sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
69
+ } : void 0;
70
+ export default Container;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,6 @@
1
+ import { unstable_generateUtilityClass as generateUtilityClass, unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';
2
+ export function getContainerUtilityClass(slot) {
3
+ return generateUtilityClass('MuiContainer', slot);
4
+ }
5
+ const containerClasses = generateUtilityClasses('MuiContainer', ['root', 'disableGutters', 'fixed', 'maxWidthXs', 'maxWidthSm', 'maxWidthMd', 'maxWidthLg', 'maxWidthXl']);
6
+ export default containerClasses;
@@ -0,0 +1,151 @@
1
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
+ import _extends from "@babel/runtime/helpers/esm/extends";
3
+ const _excluded = ["className", "component", "disableGutters", "fixed", "maxWidth", "classes"];
4
+ import * as React from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import clsx from 'clsx';
7
+ import { unstable_capitalize as capitalize, unstable_composeClasses as composeClasses, unstable_generateUtilityClass as generateUtilityClass } from '@mui/utils';
8
+ import useThemePropsSystem from '../useThemeProps';
9
+ import systemStyled from '../styled';
10
+ import createTheme from '../createTheme';
11
+ import { jsx as _jsx } from "react/jsx-runtime";
12
+ const defaultTheme = createTheme();
13
+ const defaultCreateStyledComponent = systemStyled('div', {
14
+ name: 'MuiContainer',
15
+ slot: 'Root',
16
+ overridesResolver: (props, styles) => {
17
+ const {
18
+ ownerState
19
+ } = props;
20
+ return [styles.root, styles[`maxWidth${capitalize(String(ownerState.maxWidth))}`], ownerState.fixed && styles.fixed, ownerState.disableGutters && styles.disableGutters];
21
+ }
22
+ });
23
+
24
+ const useThemePropsDefault = inProps => useThemePropsSystem({
25
+ props: inProps,
26
+ name: 'MuiContainer',
27
+ defaultTheme
28
+ });
29
+
30
+ const useUtilityClasses = (ownerState, componentName) => {
31
+ const getContainerUtilityClass = slot => {
32
+ return generateUtilityClass(componentName, slot);
33
+ };
34
+
35
+ const {
36
+ classes,
37
+ fixed,
38
+ disableGutters,
39
+ maxWidth
40
+ } = ownerState;
41
+ const slots = {
42
+ root: ['root', maxWidth && `maxWidth${capitalize(String(maxWidth))}`, fixed && 'fixed', disableGutters && 'disableGutters']
43
+ };
44
+ return composeClasses(slots, getContainerUtilityClass, classes);
45
+ };
46
+
47
+ export default function createContainer(options = {}) {
48
+ const {
49
+ // This will allow adding custom styled fn (for example for custom sx style function)
50
+ createStyledComponent = defaultCreateStyledComponent,
51
+ useThemeProps = useThemePropsDefault,
52
+ componentName = 'MuiContainer'
53
+ } = options;
54
+ const ContainerRoot = createStyledComponent(({
55
+ theme,
56
+ ownerState
57
+ }) => _extends({
58
+ width: '100%',
59
+ marginLeft: 'auto',
60
+ boxSizing: 'border-box',
61
+ marginRight: 'auto',
62
+ display: 'block'
63
+ }, !ownerState.disableGutters && {
64
+ paddingLeft: theme.spacing(2),
65
+ paddingRight: theme.spacing(2),
66
+ // @ts-ignore module augmentation fails if custom breakpoints are used
67
+ [theme.breakpoints.up('sm')]: {
68
+ paddingLeft: theme.spacing(3),
69
+ paddingRight: theme.spacing(3)
70
+ }
71
+ }), ({
72
+ theme,
73
+ ownerState
74
+ }) => ownerState.fixed && Object.keys(theme.breakpoints.values).reduce((acc, breakpointValueKey) => {
75
+ const breakpoint = breakpointValueKey;
76
+ const value = theme.breakpoints.values[breakpoint];
77
+
78
+ if (value !== 0) {
79
+ // @ts-ignore
80
+ acc[theme.breakpoints.up(breakpoint)] = {
81
+ maxWidth: `${value}${theme.breakpoints.unit}`
82
+ };
83
+ }
84
+
85
+ return acc;
86
+ }, {}), ({
87
+ theme,
88
+ ownerState
89
+ }) => _extends({}, ownerState.maxWidth === 'xs' && {
90
+ // @ts-ignore module augmentation fails if custom breakpoints are used
91
+ [theme.breakpoints.up('xs')]: {
92
+ // @ts-ignore module augmentation fails if custom breakpoints are used
93
+ maxWidth: Math.max(theme.breakpoints.values.xs, 444)
94
+ }
95
+ }, ownerState.maxWidth && // @ts-ignore module augmentation fails if custom breakpoints are used
96
+ ownerState.maxWidth !== 'xs' && {
97
+ // @ts-ignore module augmentation fails if custom breakpoints are used
98
+ [theme.breakpoints.up(ownerState.maxWidth)]: {
99
+ // @ts-ignore module augmentation fails if custom breakpoints are used
100
+ maxWidth: `${theme.breakpoints.values[ownerState.maxWidth]}${theme.breakpoints.unit}`
101
+ }
102
+ }));
103
+ const Container = /*#__PURE__*/React.forwardRef(function Container(inProps, ref) {
104
+ const props = useThemeProps(inProps);
105
+
106
+ const {
107
+ className,
108
+ component = 'div',
109
+ disableGutters = false,
110
+ fixed = false,
111
+ maxWidth = 'lg'
112
+ } = props,
113
+ other = _objectWithoutPropertiesLoose(props, _excluded);
114
+
115
+ const ownerState = _extends({}, props, {
116
+ component,
117
+ disableGutters,
118
+ fixed,
119
+ maxWidth
120
+ }); // @ts-ignore module augmentation fails if custom breakpoints are used
121
+
122
+
123
+ const classes = useUtilityClasses(ownerState, componentName);
124
+ return (
125
+ /*#__PURE__*/
126
+ // @ts-ignore theme is injected by the styled util
127
+ _jsx(ContainerRoot, _extends({
128
+ as: component // @ts-ignore module augmentation fails if custom breakpoints are used
129
+ ,
130
+ ownerState: ownerState,
131
+ className: clsx(classes.root, className),
132
+ ref: ref
133
+ }, other))
134
+ );
135
+ });
136
+ process.env.NODE_ENV !== "production" ? Container.propTypes
137
+ /* remove-proptypes */
138
+ = {
139
+ children: PropTypes.node,
140
+ classes: PropTypes.object,
141
+ className: PropTypes.string,
142
+ component: PropTypes.elementType,
143
+ disableGutters: PropTypes.bool,
144
+ fixed: PropTypes.bool,
145
+ maxWidth: PropTypes
146
+ /* @typescript-to-proptypes-ignore */
147
+ .oneOfType([PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', false]), PropTypes.string]),
148
+ sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
149
+ } : void 0;
150
+ return Container;
151
+ }
@@ -0,0 +1,3 @@
1
+ export { default } from './Container';
2
+ export { default as containerClasses } from './containerClasses';
3
+ export * from './containerClasses';
@@ -116,9 +116,11 @@ export default function createCssVarsProvider(options) {
116
116
  colorSchemes,
117
117
  prefix,
118
118
  vars: rootVars,
119
- getCssVar: createGetCssVar(prefix)
119
+ getCssVar: createGetCssVar(prefix),
120
+ getColorSchemeSelector: targetColorScheme => `[${attribute}="${targetColorScheme}"] &`
120
121
  });
121
- const styleSheet = {};
122
+ const defaultColorSchemeStyleSheet = {};
123
+ const otherColorSchemesStyleSheet = {};
122
124
  Object.entries(colorSchemes).forEach(([key, scheme]) => {
123
125
  const {
124
126
  css,
@@ -154,9 +156,9 @@ export default function createCssVarsProvider(options) {
154
156
  })();
155
157
 
156
158
  if (key === resolvedDefaultColorScheme) {
157
- styleSheet[colorSchemeSelector] = css;
159
+ defaultColorSchemeStyleSheet[colorSchemeSelector] = css;
158
160
  } else {
159
- styleSheet[`${colorSchemeSelector === ':root' ? '' : colorSchemeSelector}[${attribute}="${key}"]`] = css;
161
+ otherColorSchemesStyleSheet[`${colorSchemeSelector === ':root' ? '' : colorSchemeSelector}[${attribute}="${key}"]`] = css;
160
162
  }
161
163
  });
162
164
  React.useEffect(() => {
@@ -223,7 +225,9 @@ export default function createCssVarsProvider(options) {
223
225
  [colorSchemeSelector]: rootCss
224
226
  }
225
227
  }), /*#__PURE__*/_jsx(GlobalStyles, {
226
- styles: styleSheet
228
+ styles: defaultColorSchemeStyleSheet
229
+ }), /*#__PURE__*/_jsx(GlobalStyles, {
230
+ styles: otherColorSchemesStyleSheet
227
231
  }), /*#__PURE__*/_jsx(ThemeProvider, {
228
232
  theme: resolveTheme ? resolveTheme(theme) : theme,
229
233
  children: children
package/modern/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license MUI v5.7.0
1
+ /** @license MUI v5.8.2
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.
@@ -44,4 +44,7 @@ export { default as useThemeWithoutDefault } from './useThemeWithoutDefault';
44
44
  export * from './colorManipulator';
45
45
  export { default as ThemeProvider } from './ThemeProvider';
46
46
  export { default as unstable_createCssVarsProvider } from './cssVars/createCssVarsProvider';
47
- export { default as unstable_createGetCssVar } from './cssVars/createGetCssVar';
47
+ export { default as unstable_createGetCssVar } from './cssVars/createGetCssVar';
48
+ export { default as createContainer } from './Container/createContainer';
49
+ export { default as Container } from './Container';
50
+ export * from './Container';
package/modern/spacing.js CHANGED
@@ -43,7 +43,7 @@ const marginKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'margin', 'marginTo
43
43
  const paddingKeys = ['p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY', 'paddingInline', 'paddingInlineStart', 'paddingInlineEnd', 'paddingBlock', 'paddingBlockStart', 'paddingBlockEnd'];
44
44
  const spacingKeys = [...marginKeys, ...paddingKeys];
45
45
  export function createUnaryUnit(theme, themeKey, defaultValue, propName) {
46
- const themeSpacing = getPath(theme, themeKey) ?? defaultValue;
46
+ const themeSpacing = getPath(theme, themeKey, false) ?? defaultValue;
47
47
 
48
48
  if (typeof themeSpacing === 'number') {
49
49
  return abs => {
package/modern/style.js CHANGED
@@ -1,13 +1,13 @@
1
1
  import { unstable_capitalize as capitalize } from '@mui/utils';
2
2
  import responsivePropType from './responsivePropType';
3
3
  import { handleBreakpoints } from './breakpoints';
4
- export function getPath(obj, path) {
4
+ export function getPath(obj, path, checkVars = true) {
5
5
  if (!path || typeof path !== 'string') {
6
6
  return null;
7
7
  } // Check if CSS variables are used
8
8
 
9
9
 
10
- if (obj && obj.vars) {
10
+ if (obj && obj.vars && checkVars) {
11
11
  const val = `vars.${path}`.split('.').reduce((acc, item) => acc && acc[item] ? acc[item] : null, obj);
12
12
 
13
13
  if (val != null) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/system",
3
- "version": "5.7.0",
3
+ "version": "5.8.2",
4
4
  "private": false,
5
5
  "author": "MUI Team",
6
6
  "description": "CSS utilities for rapidly laying out custom designs.",
@@ -44,12 +44,12 @@
44
44
  },
45
45
  "dependencies": {
46
46
  "@babel/runtime": "^7.17.2",
47
- "@mui/private-theming": "^5.7.0",
48
- "@mui/styled-engine": "^5.7.0",
47
+ "@mui/private-theming": "^5.8.0",
48
+ "@mui/styled-engine": "^5.8.0",
49
49
  "@mui/types": "^7.1.3",
50
- "@mui/utils": "^5.7.0",
50
+ "@mui/utils": "^5.8.0",
51
51
  "clsx": "^1.1.1",
52
- "csstype": "^3.0.11",
52
+ "csstype": "^3.1.0",
53
53
  "prop-types": "^15.8.1"
54
54
  },
55
55
  "sideEffects": false,
package/spacing.js CHANGED
@@ -66,7 +66,7 @@ const spacingKeys = [...marginKeys, ...paddingKeys];
66
66
  function createUnaryUnit(theme, themeKey, defaultValue, propName) {
67
67
  var _getPath;
68
68
 
69
- const themeSpacing = (_getPath = (0, _style.getPath)(theme, themeKey)) != null ? _getPath : defaultValue;
69
+ const themeSpacing = (_getPath = (0, _style.getPath)(theme, themeKey, false)) != null ? _getPath : defaultValue;
70
70
 
71
71
  if (typeof themeSpacing === 'number') {
72
72
  return abs => {
package/style.js CHANGED
@@ -14,13 +14,13 @@ var _responsivePropType = _interopRequireDefault(require("./responsivePropType")
14
14
 
15
15
  var _breakpoints = require("./breakpoints");
16
16
 
17
- function getPath(obj, path) {
17
+ function getPath(obj, path, checkVars = true) {
18
18
  if (!path || typeof path !== 'string') {
19
19
  return null;
20
20
  } // Check if CSS variables are used
21
21
 
22
22
 
23
- if (obj && obj.vars) {
23
+ if (obj && obj.vars && checkVars) {
24
24
  const val = `vars.${path}`.split('.').reduce((acc, item) => acc && acc[item] ? acc[item] : null, obj);
25
25
 
26
26
  if (val != null) {
@@ -1 +1 @@
1
- export {};
1
+ export {};