@mui/material 5.8.1 → 5.8.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/Alert/Alert.js +3 -1
  2. package/Autocomplete/autocompleteClasses.d.ts +1 -1
  3. package/Button/buttonClasses.d.ts +24 -0
  4. package/Button/buttonClasses.js +1 -1
  5. package/CHANGELOG.md +217 -8
  6. package/Checkbox/Checkbox.js +4 -4
  7. package/Grid/Grid.d.ts +73 -52
  8. package/Grid/Grid.js +94 -40
  9. package/Grow/Grow.js +4 -4
  10. package/Hidden/withWidth.js +0 -2
  11. package/InputLabel/InputLabel.d.ts +5 -0
  12. package/InputLabel/InputLabel.js +6 -0
  13. package/Link/Link.js +10 -17
  14. package/Link/getTextDecoration.d.ts +15 -0
  15. package/Link/getTextDecoration.js +29 -0
  16. package/Popover/Popover.d.ts +7 -0
  17. package/Popover/index.js +1 -0
  18. package/README.md +13 -12
  19. package/Slider/Slider.d.ts +3 -1
  20. package/Slider/Slider.js +23 -8
  21. package/Snackbar/Snackbar.js +6 -20
  22. package/Stack/Stack.js +1 -1
  23. package/StepIcon/StepIcon.js +2 -1
  24. package/Tab/Tab.d.ts +0 -1
  25. package/Tabs/Tabs.js +16 -0
  26. package/index.js +1 -1
  27. package/legacy/Alert/Alert.js +3 -1
  28. package/legacy/Button/buttonClasses.js +1 -1
  29. package/legacy/Checkbox/Checkbox.js +4 -4
  30. package/legacy/Grid/Grid.js +97 -48
  31. package/legacy/Grow/Grow.js +4 -4
  32. package/legacy/Hidden/withWidth.js +0 -2
  33. package/legacy/InputLabel/InputLabel.js +6 -0
  34. package/legacy/Link/Link.js +10 -17
  35. package/legacy/Link/getTextDecoration.js +28 -0
  36. package/legacy/Popover/index.js +1 -0
  37. package/legacy/Slider/Slider.js +23 -8
  38. package/legacy/Snackbar/Snackbar.js +6 -21
  39. package/legacy/Stack/Stack.js +2 -1
  40. package/legacy/StepIcon/StepIcon.js +2 -1
  41. package/legacy/Tabs/Tabs.js +16 -0
  42. package/legacy/index.js +1 -1
  43. package/legacy/styles/CssVarsProvider.js +3 -0
  44. package/modern/Alert/Alert.js +3 -1
  45. package/modern/Button/buttonClasses.js +1 -1
  46. package/modern/Checkbox/Checkbox.js +4 -4
  47. package/modern/Grid/Grid.js +94 -40
  48. package/modern/Grow/Grow.js +4 -4
  49. package/modern/Hidden/withWidth.js +0 -2
  50. package/modern/InputLabel/InputLabel.js +6 -0
  51. package/modern/Link/Link.js +10 -17
  52. package/modern/Link/getTextDecoration.js +29 -0
  53. package/modern/Popover/index.js +1 -0
  54. package/modern/Slider/Slider.js +23 -8
  55. package/modern/Snackbar/Snackbar.js +6 -20
  56. package/modern/Stack/Stack.js +1 -1
  57. package/modern/StepIcon/StepIcon.js +2 -1
  58. package/modern/Tabs/Tabs.js +16 -0
  59. package/modern/index.js +1 -1
  60. package/modern/styles/CssVarsProvider.js +3 -0
  61. package/node/Alert/Alert.js +3 -1
  62. package/node/Button/buttonClasses.js +1 -1
  63. package/node/Checkbox/Checkbox.js +4 -4
  64. package/node/Grid/Grid.js +95 -40
  65. package/node/Grow/Grow.js +4 -4
  66. package/node/Hidden/withWidth.js +0 -3
  67. package/node/InputLabel/InputLabel.js +6 -0
  68. package/node/Link/Link.js +12 -20
  69. package/node/Link/getTextDecoration.js +39 -0
  70. package/node/Popover/index.js +13 -3
  71. package/node/Slider/Slider.js +23 -8
  72. package/node/Snackbar/Snackbar.js +6 -18
  73. package/node/Stack/Stack.js +1 -1
  74. package/node/StepIcon/StepIcon.js +2 -1
  75. package/node/Tabs/Tabs.js +16 -0
  76. package/node/index.js +1 -1
  77. package/node/styles/CssVarsProvider.js +3 -0
  78. package/package.json +6 -7
  79. package/styles/CssVarsProvider.js +3 -0
  80. package/umd/material-ui.development.js +291 -227
  81. package/umd/material-ui.production.min.js +21 -21
@@ -8,6 +8,9 @@ var defaultTheme = experimental_extendTheme();
8
8
 
9
9
  var _createCssVarsProvide = createCssVarsProvider({
10
10
  theme: defaultTheme,
11
+ attribute: 'data-mui-color-scheme',
12
+ modeStorageKey: 'mui-mode',
13
+ colorSchemeStorageKey: 'mui-color-scheme',
11
14
  defaultColorScheme: {
12
15
  light: 'light',
13
16
  dark: 'dark'
@@ -93,7 +93,9 @@ const AlertMessage = styled('div', {
93
93
  slot: 'Message',
94
94
  overridesResolver: (props, styles) => styles.message
95
95
  })({
96
- padding: '8px 0'
96
+ padding: '8px 0',
97
+ minWidth: 0,
98
+ overflow: 'auto'
97
99
  });
98
100
  const AlertAction = styled('div', {
99
101
  name: 'MuiAlert',
@@ -2,5 +2,5 @@ import { generateUtilityClass, generateUtilityClasses } from '@mui/base';
2
2
  export function getButtonUtilityClass(slot) {
3
3
  return generateUtilityClass('MuiButton', slot);
4
4
  }
5
- const buttonClasses = generateUtilityClasses('MuiButton', ['root', 'text', 'textInherit', 'textPrimary', 'textSecondary', 'outlined', 'outlinedInherit', 'outlinedPrimary', 'outlinedSecondary', 'contained', 'containedInherit', 'containedPrimary', 'containedSecondary', 'disableElevation', 'focusVisible', 'disabled', 'colorInherit', 'textSizeSmall', 'textSizeMedium', 'textSizeLarge', 'outlinedSizeSmall', 'outlinedSizeMedium', 'outlinedSizeLarge', 'containedSizeSmall', 'containedSizeMedium', 'containedSizeLarge', 'sizeMedium', 'sizeSmall', 'sizeLarge', 'fullWidth', 'startIcon', 'endIcon', 'iconSizeSmall', 'iconSizeMedium', 'iconSizeLarge']);
5
+ const buttonClasses = generateUtilityClasses('MuiButton', ['root', 'text', 'textInherit', 'textPrimary', 'textSecondary', 'textSuccess', 'textError', 'textInfo', 'textWarning', 'outlined', 'outlinedInherit', 'outlinedPrimary', 'outlinedSecondary', 'outlinedSuccess', 'outlinedError', 'outlinedInfo', 'outlinedWarning', 'contained', 'containedInherit', 'containedPrimary', 'containedSecondary', 'containedSuccess', 'containedError', 'containedInfo', 'containedWarning', 'disableElevation', 'focusVisible', 'disabled', 'colorInherit', 'textSizeSmall', 'textSizeMedium', 'textSizeLarge', 'outlinedSizeSmall', 'outlinedSizeMedium', 'outlinedSizeLarge', 'containedSizeSmall', 'containedSizeMedium', 'containedSizeLarge', 'sizeMedium', 'sizeSmall', 'sizeLarge', 'fullWidth', 'startIcon', 'endIcon', 'iconSizeSmall', 'iconSizeMedium', 'iconSizeLarge']);
6
6
  export default buttonClasses;
@@ -43,10 +43,10 @@ const CheckboxRoot = styled(SwitchBase, {
43
43
  theme,
44
44
  ownerState
45
45
  }) => _extends({
46
- color: theme.palette.text.secondary
46
+ color: (theme.vars || theme).palette.text.secondary
47
47
  }, !ownerState.disableRipple && {
48
48
  '&:hover': {
49
- backgroundColor: alpha(ownerState.color === 'default' ? theme.palette.action.active : theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),
49
+ backgroundColor: theme.vars ? `rgba(${ownerState.color === 'default' ? theme.vars.palette.action.activeChannel : theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(ownerState.color === 'default' ? theme.palette.action.active : theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),
50
50
  // Reset on touch devices, it doesn't add specificity
51
51
  '@media (hover: none)': {
52
52
  backgroundColor: 'transparent'
@@ -54,10 +54,10 @@ const CheckboxRoot = styled(SwitchBase, {
54
54
  }
55
55
  }, ownerState.color !== 'default' && {
56
56
  [`&.${checkboxClasses.checked}, &.${checkboxClasses.indeterminate}`]: {
57
- color: theme.palette[ownerState.color].main
57
+ color: (theme.vars || theme).palette[ownerState.color].main
58
58
  },
59
59
  [`&.${checkboxClasses.disabled}`]: {
60
- color: theme.palette.action.disabled
60
+ color: (theme.vars || theme).palette.action.disabled
61
61
  }
62
62
  }));
63
63
 
@@ -1,6 +1,6 @@
1
1
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
- const _excluded = ["className", "columns", "columnSpacing", "component", "container", "direction", "item", "lg", "md", "rowSpacing", "sm", "spacing", "wrap", "xl", "xs", "zeroMinWidth"];
3
+ const _excluded = ["className", "columns", "columnSpacing", "component", "container", "direction", "item", "rowSpacing", "spacing", "wrap", "zeroMinWidth"];
4
4
  // A grid component using the following libs as inspiration.
5
5
  //
6
6
  // For the implementation:
@@ -19,6 +19,7 @@ import { unstable_composeClasses as composeClasses } from '@mui/base';
19
19
  import requirePropFactory from '../utils/requirePropFactory';
20
20
  import styled from '../styles/styled';
21
21
  import useThemeProps from '../styles/useThemeProps';
22
+ import useTheme from '../styles/useTheme';
22
23
  import GridContext from './GridContext';
23
24
  import gridClasses, { getGridUtilityClass } from './gridClasses';
24
25
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -201,26 +202,27 @@ export function generateColumnGap({
201
202
 
202
203
  return styles;
203
204
  }
204
- export function resolveSpacingClasses(spacing, container, styles = {}) {
205
- // in case of grid item or undefined/null or `spacing` <= 0
206
- if (!container || !spacing || spacing <= 0) {
205
+ export function resolveSpacingStyles(spacing, breakpoints, styles = {}) {
206
+ // undefined/null or `spacing` <= 0
207
+ if (!spacing || spacing <= 0) {
207
208
  return [];
208
209
  } // in case of string/number `spacing`
209
210
 
210
211
 
211
212
  if (typeof spacing === 'string' && !Number.isNaN(Number(spacing)) || typeof spacing === 'number') {
212
- return [styles[`spacing-xs-${String(spacing)}`] || `spacing-xs-${String(spacing)}`];
213
+ return [styles[`spacing-xs-${String(spacing)}`]];
213
214
  } // in case of object `spacing`
214
215
 
215
216
 
216
- const {
217
- xs,
218
- sm,
219
- md,
220
- lg,
221
- xl
222
- } = spacing;
223
- return [Number(xs) > 0 && (styles[`spacing-xs-${String(xs)}`] || `spacing-xs-${String(xs)}`), Number(sm) > 0 && (styles[`spacing-sm-${String(sm)}`] || `spacing-sm-${String(sm)}`), Number(md) > 0 && (styles[`spacing-md-${String(md)}`] || `spacing-md-${String(md)}`), Number(lg) > 0 && (styles[`spacing-lg-${String(lg)}`] || `spacing-lg-${String(lg)}`), Number(xl) > 0 && (styles[`spacing-xl-${String(xl)}`] || `spacing-xl-${String(xl)}`)];
217
+ const spacingStyles = [];
218
+ breakpoints.forEach(breakpoint => {
219
+ const value = spacing[breakpoint];
220
+
221
+ if (Number(value) > 0) {
222
+ spacingStyles.push(styles[`spacing-${breakpoint}-${String(value)}`]);
223
+ }
224
+ });
225
+ return spacingStyles;
224
226
  } // Default CSS values
225
227
  // flex: '0 1 auto',
226
228
  // flexDirection: 'row',
@@ -232,20 +234,33 @@ const GridRoot = styled('div', {
232
234
  name: 'MuiGrid',
233
235
  slot: 'Root',
234
236
  overridesResolver: (props, styles) => {
237
+ const {
238
+ ownerState
239
+ } = props;
235
240
  const {
236
241
  container,
237
242
  direction,
238
243
  item,
239
- lg,
240
- md,
241
- sm,
242
244
  spacing,
243
245
  wrap,
244
- xl,
245
- xs,
246
- zeroMinWidth
247
- } = props.ownerState;
248
- return [styles.root, container && styles.container, item && styles.item, zeroMinWidth && styles.zeroMinWidth, ...resolveSpacingClasses(spacing, container, styles), direction !== 'row' && styles[`direction-xs-${String(direction)}`], wrap !== 'wrap' && styles[`wrap-xs-${String(wrap)}`], xs !== false && styles[`grid-xs-${String(xs)}`], sm !== false && styles[`grid-sm-${String(sm)}`], md !== false && styles[`grid-md-${String(md)}`], lg !== false && styles[`grid-lg-${String(lg)}`], xl !== false && styles[`grid-xl-${String(xl)}`]];
246
+ zeroMinWidth,
247
+ breakpoints
248
+ } = ownerState;
249
+ let spacingStyles = []; // in case of grid item
250
+
251
+ if (container) {
252
+ spacingStyles = resolveSpacingStyles(spacing, breakpoints, styles);
253
+ }
254
+
255
+ const breakpointsStyles = [];
256
+ breakpoints.forEach(breakpoint => {
257
+ const value = ownerState[breakpoint];
258
+
259
+ if (value) {
260
+ breakpointsStyles.push(styles[`grid-${breakpoint}-${String(value)}`]);
261
+ }
262
+ });
263
+ return [styles.root, container && styles.container, item && styles.item, zeroMinWidth && styles.zeroMinWidth, ...spacingStyles, direction !== 'row' && styles[`direction-xs-${String(direction)}`], wrap !== 'wrap' && styles[`wrap-xs-${String(wrap)}`], ...breakpointsStyles];
249
264
  }
250
265
  })(({
251
266
  ownerState
@@ -263,6 +278,29 @@ const GridRoot = styled('div', {
263
278
  }, ownerState.wrap !== 'wrap' && {
264
279
  flexWrap: ownerState.wrap
265
280
  }), generateDirection, generateRowGap, generateColumnGap, generateGrid);
281
+ export function resolveSpacingClasses(spacing, breakpoints) {
282
+ // undefined/null or `spacing` <= 0
283
+ if (!spacing || spacing <= 0) {
284
+ return [];
285
+ } // in case of string/number `spacing`
286
+
287
+
288
+ if (typeof spacing === 'string' && !Number.isNaN(Number(spacing)) || typeof spacing === 'number') {
289
+ return [`spacing-xs-${String(spacing)}`];
290
+ } // in case of object `spacing`
291
+
292
+
293
+ const classes = [];
294
+ breakpoints.forEach(breakpoint => {
295
+ const value = spacing[breakpoint];
296
+
297
+ if (Number(value) > 0) {
298
+ const className = `spacing-${breakpoint}-${String(value)}`;
299
+ classes.push(className);
300
+ }
301
+ });
302
+ return classes;
303
+ }
266
304
 
267
305
  const useUtilityClasses = ownerState => {
268
306
  const {
@@ -270,17 +308,27 @@ const useUtilityClasses = ownerState => {
270
308
  container,
271
309
  direction,
272
310
  item,
273
- lg,
274
- md,
275
- sm,
276
311
  spacing,
277
312
  wrap,
278
- xl,
279
- xs,
280
- zeroMinWidth
313
+ zeroMinWidth,
314
+ breakpoints
281
315
  } = ownerState;
316
+ let spacingClasses = []; // in case of grid item
317
+
318
+ if (container) {
319
+ spacingClasses = resolveSpacingClasses(spacing, breakpoints);
320
+ }
321
+
322
+ const breakpointsClasses = [];
323
+ breakpoints.forEach(breakpoint => {
324
+ const value = ownerState[breakpoint];
325
+
326
+ if (value) {
327
+ breakpointsClasses.push(`grid-${breakpoint}-${String(value)}`);
328
+ }
329
+ });
282
330
  const slots = {
283
- root: ['root', container && 'container', item && 'item', zeroMinWidth && 'zeroMinWidth', ...resolveSpacingClasses(spacing, container), direction !== 'row' && `direction-xs-${String(direction)}`, wrap !== 'wrap' && `wrap-xs-${String(wrap)}`, xs !== false && `grid-xs-${String(xs)}`, sm !== false && `grid-sm-${String(sm)}`, md !== false && `grid-md-${String(md)}`, lg !== false && `grid-lg-${String(lg)}`, xl !== false && `grid-xl-${String(xl)}`]
331
+ root: ['root', container && 'container', item && 'item', zeroMinWidth && 'zeroMinWidth', ...spacingClasses, direction !== 'row' && `direction-xs-${String(direction)}`, wrap !== 'wrap' && `wrap-xs-${String(wrap)}`, ...breakpointsClasses]
284
332
  };
285
333
  return composeClasses(slots, getGridUtilityClass, classes);
286
334
  };
@@ -290,6 +338,9 @@ const Grid = /*#__PURE__*/React.forwardRef(function Grid(inProps, ref) {
290
338
  props: inProps,
291
339
  name: 'MuiGrid'
292
340
  });
341
+ const {
342
+ breakpoints
343
+ } = useTheme();
293
344
  const props = extendSxProp(themeProps);
294
345
 
295
346
  const {
@@ -300,14 +351,9 @@ const Grid = /*#__PURE__*/React.forwardRef(function Grid(inProps, ref) {
300
351
  container = false,
301
352
  direction = 'row',
302
353
  item = false,
303
- lg = false,
304
- md = false,
305
354
  rowSpacing: rowSpacingProp,
306
- sm = false,
307
355
  spacing = 0,
308
356
  wrap = 'wrap',
309
- xl = false,
310
- xs = false,
311
357
  zeroMinWidth = false
312
358
  } = props,
313
359
  other = _objectWithoutPropertiesLoose(props, _excluded);
@@ -317,21 +363,29 @@ const Grid = /*#__PURE__*/React.forwardRef(function Grid(inProps, ref) {
317
363
  const columnsContext = React.useContext(GridContext); // columns set with default breakpoint unit of 12
318
364
 
319
365
  const columns = container ? columnsProp || 12 : columnsContext;
366
+ const breakpointsValues = {};
367
+
368
+ const otherFiltered = _extends({}, other);
369
+
370
+ breakpoints.keys.forEach(breakpoint => {
371
+ if (other[breakpoint] != null) {
372
+ breakpointsValues[breakpoint] = other[breakpoint];
373
+ delete otherFiltered[breakpoint];
374
+ }
375
+ });
320
376
 
321
377
  const ownerState = _extends({}, props, {
322
378
  columns,
323
379
  container,
324
380
  direction,
325
381
  item,
326
- lg,
327
- md,
328
- sm,
329
382
  rowSpacing,
330
383
  columnSpacing,
331
384
  wrap,
332
- xl,
333
- xs,
334
- zeroMinWidth
385
+ zeroMinWidth,
386
+ spacing
387
+ }, breakpointsValues, {
388
+ breakpoints: breakpoints.keys
335
389
  });
336
390
 
337
391
  const classes = useUtilityClasses(ownerState);
@@ -342,7 +396,7 @@ const Grid = /*#__PURE__*/React.forwardRef(function Grid(inProps, ref) {
342
396
  className: clsx(classes.root, className),
343
397
  as: component,
344
398
  ref: ref
345
- }, other))
399
+ }, otherFiltered))
346
400
  });
347
401
  });
348
402
  process.env.NODE_ENV !== "production" ? Grid.propTypes
@@ -24,12 +24,12 @@ const styles = {
24
24
  transform: 'none'
25
25
  }
26
26
  };
27
- /**
28
- * Conditionally apply a workaround for the CSS transition bug in Safari 15.4 / WebKit browsers.
29
- * Remove this workaround once the WebKit bug fix is released.
27
+ /*
28
+ TODO v6: remove
29
+ Conditionally apply a workaround for the CSS transition bug in Safari 15.4 / WebKit browsers.
30
30
  */
31
31
 
32
- const isWebKit154 = typeof navigator !== 'undefined' && /^((?!chrome|android).)*(safari|mobile)/i.test(navigator.userAgent) && /(os |version\/)15(.|_)[4-9]/i.test(navigator.userAgent);
32
+ const isWebKit154 = typeof navigator !== 'undefined' && /^((?!chrome|android).)*(safari|mobile)/i.test(navigator.userAgent) && /(os |version\/)15(.|_)4/i.test(navigator.userAgent);
33
33
  /**
34
34
  * The Grow transition is used by the [Tooltip](/material-ui/react-tooltip/) and
35
35
  * [Popover](/material-ui/react-popover/) components.
@@ -5,7 +5,6 @@ import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import { getDisplayName } from '@mui/utils';
7
7
  import { getThemeProps } from '@mui/system';
8
- import hoistNonReactStatics from 'hoist-non-react-statics';
9
8
  import useTheme from '../styles/useTheme';
10
9
  import useEnhancedEffect from '../utils/useEnhancedEffect';
11
10
  import useMediaQuery from '../useMediaQuery';
@@ -113,7 +112,6 @@ const withWidth = (options = {}) => Component => {
113
112
  WithWidth.displayName = `WithWidth(${getDisplayName(Component)})`;
114
113
  }
115
114
 
116
- hoistNonReactStatics(WithWidth, Component);
117
115
  return WithWidth;
118
116
  };
119
117
 
@@ -209,6 +209,12 @@ process.env.NODE_ENV !== "production" ? InputLabel.propTypes
209
209
  */
210
210
  shrink: PropTypes.bool,
211
211
 
212
+ /**
213
+ * The size of the component.
214
+ * @default 'normal'
215
+ */
216
+ size: PropTypes.oneOf(['normal', 'small']),
217
+
212
218
  /**
213
219
  * The system prop that allows defining system overrides as well as additional CSS styles.
214
220
  */
@@ -6,7 +6,6 @@ import PropTypes from 'prop-types';
6
6
  import clsx from 'clsx';
7
7
  import { elementTypeAcceptingRef } from '@mui/utils';
8
8
  import { unstable_composeClasses as composeClasses } from '@mui/base';
9
- import { alpha, getPath } from '@mui/system';
10
9
  import capitalize from '../utils/capitalize';
11
10
  import styled from '../styles/styled';
12
11
  import useThemeProps from '../styles/useThemeProps';
@@ -14,18 +13,8 @@ import useIsFocusVisible from '../utils/useIsFocusVisible';
14
13
  import useForkRef from '../utils/useForkRef';
15
14
  import Typography from '../Typography';
16
15
  import linkClasses, { getLinkUtilityClass } from './linkClasses';
16
+ import getTextDecoration, { colorTransformations } from './getTextDecoration';
17
17
  import { jsx as _jsx } from "react/jsx-runtime";
18
- const colorTransformations = {
19
- primary: 'primary.main',
20
- textPrimary: 'text.primary',
21
- secondary: 'secondary.main',
22
- textSecondary: 'text.secondary',
23
- error: 'error.main'
24
- };
25
-
26
- const transformDeprecatedColors = color => {
27
- return colorTransformations[color] || color;
28
- };
29
18
 
30
19
  const useUtilityClasses = ownerState => {
31
20
  const {
@@ -53,7 +42,6 @@ const LinkRoot = styled(Typography, {
53
42
  theme,
54
43
  ownerState
55
44
  }) => {
56
- const color = getPath(theme, `palette.${transformDeprecatedColors(ownerState.color)}`) || ownerState.color;
57
45
  return _extends({}, ownerState.underline === 'none' && {
58
46
  textDecoration: 'none'
59
47
  }, ownerState.underline === 'hover' && {
@@ -61,13 +49,18 @@ const LinkRoot = styled(Typography, {
61
49
  '&:hover': {
62
50
  textDecoration: 'underline'
63
51
  }
64
- }, ownerState.underline === 'always' && {
65
- textDecoration: 'underline',
66
- textDecorationColor: color !== 'inherit' ? alpha(color, 0.4) : undefined,
52
+ }, ownerState.underline === 'always' && _extends({
53
+ textDecoration: 'underline'
54
+ }, ownerState.color !== 'inherit' && {
55
+ textDecorationColor: getTextDecoration({
56
+ theme,
57
+ ownerState
58
+ })
59
+ }, {
67
60
  '&:hover': {
68
61
  textDecorationColor: 'inherit'
69
62
  }
70
- }, ownerState.component === 'button' && {
63
+ }), ownerState.component === 'button' && {
71
64
  position: 'relative',
72
65
  WebkitTapHighlightColor: 'transparent',
73
66
  backgroundColor: 'transparent',
@@ -0,0 +1,29 @@
1
+ import { alpha, getPath } from '@mui/system';
2
+ export const colorTransformations = {
3
+ primary: 'primary.main',
4
+ textPrimary: 'text.primary',
5
+ secondary: 'secondary.main',
6
+ textSecondary: 'text.secondary',
7
+ error: 'error.main'
8
+ };
9
+
10
+ const transformDeprecatedColors = color => {
11
+ return colorTransformations[color] || color;
12
+ };
13
+
14
+ const getTextDecoration = ({
15
+ theme,
16
+ ownerState
17
+ }) => {
18
+ const transformedColor = transformDeprecatedColors(ownerState.color);
19
+ const color = getPath(theme, `palette.${transformedColor}`, false) || ownerState.color;
20
+ const channelColor = getPath(theme, `palette.${transformedColor}Channel`);
21
+
22
+ if ('vars' in theme && channelColor) {
23
+ return `rgba(${channelColor} / 0.4)`;
24
+ }
25
+
26
+ return alpha(color, 0.4);
27
+ };
28
+
29
+ export default getTextDecoration;
@@ -1,3 +1,4 @@
1
1
  export { default } from './Popover';
2
+ export * from './Popover';
2
3
  export { default as popoverClasses } from './popoverClasses';
3
4
  export * from './popoverClasses';
@@ -284,7 +284,6 @@ const SliderValueLabel = styled(SliderValueLabelUnstyled, {
284
284
  transition: theme.transitions.create(['transform'], {
285
285
  duration: theme.transitions.duration.shortest
286
286
  }),
287
- top: -10,
288
287
  transformOrigin: 'bottom center',
289
288
  transform: 'translateY(-100%) scale(0)',
290
289
  position: 'absolute',
@@ -295,20 +294,34 @@ const SliderValueLabel = styled(SliderValueLabelUnstyled, {
295
294
  alignItems: 'center',
296
295
  justifyContent: 'center',
297
296
  padding: '0.25rem 0.75rem'
298
- }, ownerState.size === 'small' && {
299
- fontSize: theme.typography.pxToRem(12),
300
- padding: '0.25rem 0.5rem'
301
- }, {
297
+ }, ownerState.orientation === 'horizontal' && {
298
+ top: '-10px',
302
299
  '&:before': {
303
300
  position: 'absolute',
304
301
  content: '""',
305
302
  width: 8,
306
303
  height: 8,
304
+ transform: 'translate(-50%, 50%) rotate(45deg)',
305
+ backgroundColor: 'inherit',
307
306
  bottom: 0,
308
- left: '50%',
307
+ left: '50%'
308
+ }
309
+ }, ownerState.orientation === 'vertical' && {
310
+ right: '30px',
311
+ top: '25px',
312
+ '&:before': {
313
+ position: 'absolute',
314
+ content: '""',
315
+ width: 8,
316
+ height: 8,
309
317
  transform: 'translate(-50%, 50%) rotate(45deg)',
310
- backgroundColor: 'inherit'
318
+ backgroundColor: 'inherit',
319
+ right: '-20%',
320
+ top: '25%'
311
321
  }
322
+ }, ownerState.size === 'small' && {
323
+ fontSize: theme.typography.pxToRem(12),
324
+ padding: '0.25rem 0.5rem'
312
325
  }));
313
326
  process.env.NODE_ENV !== "production" ? SliderValueLabel.propTypes
314
327
  /* remove-proptypes */
@@ -572,12 +585,14 @@ process.env.NODE_ENV !== "production" ? Slider.propTypes
572
585
  thumb: PropTypes.object,
573
586
  track: PropTypes.object,
574
587
  valueLabel: PropTypes.shape({
588
+ children: PropTypes.element,
575
589
  className: PropTypes.string,
576
590
  components: PropTypes.shape({
577
591
  Root: PropTypes.elementType
578
592
  }),
593
+ open: PropTypes.bool,
579
594
  style: PropTypes.object,
580
- value: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.number), PropTypes.number]),
595
+ value: PropTypes.number,
581
596
  valueLabelDisplay: PropTypes.oneOf(['auto', 'off', 'on'])
582
597
  })
583
598
  }),
@@ -41,16 +41,11 @@ const SnackbarRoot = styled('div', {
41
41
  theme,
42
42
  ownerState
43
43
  }) => {
44
- const center = _extends({}, !ownerState.isRtl && {
44
+ const center = {
45
45
  left: '50%',
46
46
  right: 'auto',
47
47
  transform: 'translateX(-50%)'
48
- }, ownerState.isRtl && {
49
- right: '50%',
50
- left: 'auto',
51
- transform: 'translateX(50%)'
52
- });
53
-
48
+ };
54
49
  return _extends({
55
50
  zIndex: (theme.vars || theme).zIndex.snackbar,
56
51
  position: 'fixed',
@@ -72,19 +67,13 @@ const SnackbarRoot = styled('div', {
72
67
  top: 24
73
68
  } : {
74
69
  bottom: 24
75
- }, ownerState.anchorOrigin.horizontal === 'center' && center, ownerState.anchorOrigin.horizontal === 'left' && _extends({}, !ownerState.isRtl && {
70
+ }, ownerState.anchorOrigin.horizontal === 'center' && center, ownerState.anchorOrigin.horizontal === 'left' && {
76
71
  left: 24,
77
72
  right: 'auto'
78
- }, ownerState.isRtl && {
73
+ }, ownerState.anchorOrigin.horizontal === 'right' && {
79
74
  right: 24,
80
75
  left: 'auto'
81
- }), ownerState.anchorOrigin.horizontal === 'right' && _extends({}, !ownerState.isRtl && {
82
- right: 24,
83
- left: 'auto'
84
- }, ownerState.isRtl && {
85
- left: 24,
86
- right: 'auto'
87
- }))
76
+ })
88
77
  });
89
78
  });
90
79
  const Snackbar = /*#__PURE__*/React.forwardRef(function Snackbar(inProps, ref) {
@@ -131,14 +120,11 @@ const Snackbar = /*#__PURE__*/React.forwardRef(function Snackbar(inProps, ref) {
131
120
  TransitionProps = _objectWithoutPropertiesLoose(props.TransitionProps, _excluded),
132
121
  other = _objectWithoutPropertiesLoose(props, _excluded2);
133
122
 
134
- const isRtl = theme.direction === 'rtl';
135
-
136
123
  const ownerState = _extends({}, props, {
137
124
  anchorOrigin: {
138
125
  vertical,
139
126
  horizontal
140
- },
141
- isRtl
127
+ }
142
128
  });
143
129
 
144
130
  const classes = useUtilityClasses(ownerState);
@@ -59,7 +59,7 @@ export const style = ({
59
59
  if (ownerState.spacing) {
60
60
  const transformer = createUnarySpacing(theme);
61
61
  const base = Object.keys(theme.breakpoints.values).reduce((acc, breakpoint) => {
62
- if (ownerState.spacing[breakpoint] != null || ownerState.direction[breakpoint] != null) {
62
+ if (typeof ownerState.spacing === 'object' && ownerState.spacing[breakpoint] != null || typeof ownerState.direction === 'object' && ownerState.direction[breakpoint] != null) {
63
63
  acc[breakpoint] = true;
64
64
  }
65
65
 
@@ -120,8 +120,9 @@ const StepIcon = /*#__PURE__*/React.forwardRef(function StepIcon(inProps, ref) {
120
120
  })), /*#__PURE__*/_jsx(StepIconText, {
121
121
  className: classes.text,
122
122
  x: "12",
123
- y: "16",
123
+ y: "12",
124
124
  textAnchor: "middle",
125
+ dominantBaseline: "central",
125
126
  ownerState: ownerState,
126
127
  children: icon
127
128
  })]
@@ -417,10 +417,26 @@ const Tabs = /*#__PURE__*/React.forwardRef(function Tabs(inProps, ref) {
417
417
  scroll(scrollValue);
418
418
  };
419
419
 
420
+ const getFirstVisibleTab = tabs => {
421
+ const containerSize = tabsRef.current[clientSize];
422
+ const containerStartBound = Math.round(tabsRef.current[scrollStart]);
423
+ const containerEndBound = Math.round(containerStartBound + containerSize);
424
+ const offset = vertical ? 'offsetTop' : 'offsetLeft';
425
+ return tabs.find(tab => {
426
+ const centerPoint = tab[offset] + tab[clientSize] / 2;
427
+ return centerPoint >= containerStartBound && centerPoint <= containerEndBound;
428
+ });
429
+ };
430
+
420
431
  const getScrollSize = () => {
421
432
  const containerSize = tabsRef.current[clientSize];
422
433
  let totalSize = 0;
423
434
  const children = Array.from(tabListRef.current.children);
435
+ const firstVisibleTab = getFirstVisibleTab(children);
436
+
437
+ if (firstVisibleTab && firstVisibleTab[clientSize] > containerSize) {
438
+ return firstVisibleTab[clientSize];
439
+ }
424
440
 
425
441
  for (let i = 0; i < children.length; i += 1) {
426
442
  const tab = children[i];
package/modern/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license MUI v5.8.1
1
+ /** @license MUI v5.8.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.
@@ -11,6 +11,9 @@ const {
11
11
  getInitColorSchemeScript
12
12
  } = createCssVarsProvider({
13
13
  theme: defaultTheme,
14
+ attribute: 'data-mui-color-scheme',
15
+ modeStorageKey: 'mui-mode',
16
+ colorSchemeStorageKey: 'mui-color-scheme',
14
17
  defaultColorScheme: {
15
18
  light: 'light',
16
19
  dark: 'dark'
@@ -123,7 +123,9 @@ const AlertMessage = (0, _styled.default)('div', {
123
123
  slot: 'Message',
124
124
  overridesResolver: (props, styles) => styles.message
125
125
  })({
126
- padding: '8px 0'
126
+ padding: '8px 0',
127
+ minWidth: 0,
128
+ overflow: 'auto'
127
129
  });
128
130
  const AlertAction = (0, _styled.default)('div', {
129
131
  name: 'MuiAlert',
@@ -12,6 +12,6 @@ function getButtonUtilityClass(slot) {
12
12
  return (0, _base.generateUtilityClass)('MuiButton', slot);
13
13
  }
14
14
 
15
- const buttonClasses = (0, _base.generateUtilityClasses)('MuiButton', ['root', 'text', 'textInherit', 'textPrimary', 'textSecondary', 'outlined', 'outlinedInherit', 'outlinedPrimary', 'outlinedSecondary', 'contained', 'containedInherit', 'containedPrimary', 'containedSecondary', 'disableElevation', 'focusVisible', 'disabled', 'colorInherit', 'textSizeSmall', 'textSizeMedium', 'textSizeLarge', 'outlinedSizeSmall', 'outlinedSizeMedium', 'outlinedSizeLarge', 'containedSizeSmall', 'containedSizeMedium', 'containedSizeLarge', 'sizeMedium', 'sizeSmall', 'sizeLarge', 'fullWidth', 'startIcon', 'endIcon', 'iconSizeSmall', 'iconSizeMedium', 'iconSizeLarge']);
15
+ const buttonClasses = (0, _base.generateUtilityClasses)('MuiButton', ['root', 'text', 'textInherit', 'textPrimary', 'textSecondary', 'textSuccess', 'textError', 'textInfo', 'textWarning', 'outlined', 'outlinedInherit', 'outlinedPrimary', 'outlinedSecondary', 'outlinedSuccess', 'outlinedError', 'outlinedInfo', 'outlinedWarning', 'contained', 'containedInherit', 'containedPrimary', 'containedSecondary', 'containedSuccess', 'containedError', 'containedInfo', 'containedWarning', 'disableElevation', 'focusVisible', 'disabled', 'colorInherit', 'textSizeSmall', 'textSizeMedium', 'textSizeLarge', 'outlinedSizeSmall', 'outlinedSizeMedium', 'outlinedSizeLarge', 'containedSizeSmall', 'containedSizeMedium', 'containedSizeLarge', 'sizeMedium', 'sizeSmall', 'sizeLarge', 'fullWidth', 'startIcon', 'endIcon', 'iconSizeSmall', 'iconSizeMedium', 'iconSizeLarge']);
16
16
  var _default = buttonClasses;
17
17
  exports.default = _default;