@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
package/Grid/Grid.js CHANGED
@@ -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
package/Grow/Grow.js CHANGED
@@ -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
 
@@ -45,6 +45,11 @@ export interface InputLabelProps extends StandardProps<FormLabelProps> {
45
45
  * If `true`, the label is shrunk.
46
46
  */
47
47
  shrink?: boolean;
48
+ /**
49
+ * The size of the component.
50
+ * @default 'normal'
51
+ */
52
+ size?: 'small' | 'normal';
48
53
  /**
49
54
  * The system prop that allows defining system overrides as well as additional CSS styles.
50
55
  */
@@ -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
  */
package/Link/Link.js CHANGED
@@ -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,15 @@
1
+ import type { Theme } from '../styles';
2
+ export declare const colorTransformations: {
3
+ primary: string;
4
+ textPrimary: string;
5
+ secondary: string;
6
+ textSecondary: string;
7
+ error: string;
8
+ };
9
+ declare const getTextDecoration: <T extends Theme>({ theme, ownerState, }: {
10
+ theme: T;
11
+ ownerState: {
12
+ color: string;
13
+ };
14
+ }) => string;
15
+ export default getTextDecoration;
@@ -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;
@@ -133,6 +133,13 @@ export interface PopoverActions {
133
133
  updatePosition(): void;
134
134
  }
135
135
 
136
+ export function getOffsetTop(rect: DOMRect, vertical: number | 'center' | 'bottom' | 'top'): number;
137
+
138
+ export function getOffsetLeft(
139
+ rect: DOMRect,
140
+ horizontal: number | 'center' | 'right' | 'left',
141
+ ): number;
142
+
136
143
  /**
137
144
  *
138
145
  * Demos:
package/Popover/index.js CHANGED
@@ -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';
package/README.md CHANGED
@@ -7,11 +7,13 @@
7
7
 
8
8
  **MUI Core** contains foundational React UI component libraries for shipping new features faster.
9
9
 
10
- - _Material UI_ is a comprehensive library of components that features our implementation of Google's [Material Design](https://material.io/design/introduction/) system.
10
+ - [_Material UI_](https://mui.com/material-ui/getting-started/overview/) is a comprehensive library of components that features our implementation of Google's [Material Design](https://material.io/design/introduction/) system.
11
11
 
12
- - _MUI Base_ is our library of "unstyled" components and low-level hooks. With Base, you gain complete control over your app's CSS and accessibility features.
12
+ - [_Joy UI_](https://mui.com/joy-ui/getting-started/overview/) is a beautifully designed library of React UI components.
13
13
 
14
- - _MUI System_ is a collection of CSS utilities to help you rapidly lay out custom designs.
14
+ - [_MUI Base_](https://mui.com/base/getting-started/overview/) is our library of "unstyled" components and low-level hooks. With Base, you gain complete control over your app's CSS and accessibility features.
15
+
16
+ - [_MUI System_](https://mui.com/system/basics/) is a collection of CSS utilities to help you rapidly lay out custom designs.
15
17
 
16
18
  <div align="center">
17
19
 
@@ -48,9 +50,9 @@ yarn add @mui/material @emotion/react @emotion/styled
48
50
  <details>
49
51
  <summary>Older versions</summary>
50
52
 
51
- - **[v4.x](https://v4.mui.com/)** ([Migration from v4 to v5](https://mui.com/material-ui/guides/migration-v4/))
52
- - **[v3.x](https://v3.mui.com/)** ([Migration from v3 to v4](https://mui.com/material-ui/guides/migration-v3/))
53
- - **[v0.x](https://v0.mui.com/)** ([Migration to v1](https://mui.com/material-ui/guides/migration-v0x/))
53
+ - **[v4.x](https://v4.mui.com/)** ([Migration from v4 to v5](https://mui.com/material-ui/migration/migration-v4/))
54
+ - **[v3.x](https://v3.mui.com/)** ([Migration from v3 to v4](https://mui.com/material-ui/migration/migration-v3/))
55
+ - **[v0.x](https://v0.mui.com/)** ([Migration to v1](https://mui.com/material-ui/migration/migration-v0x/))
54
56
 
55
57
  </details>
56
58
 
@@ -134,15 +136,10 @@ Here is an example of a basic app using Material UI's `Button` component:
134
136
 
135
137
  ```jsx
136
138
  import * as React from 'react';
137
- import ReactDOM from 'react-dom';
138
139
  import Button from '@mui/material/Button';
139
140
 
140
141
  function App() {
141
- return (
142
- <Button variant="contained" color="primary">
143
- Hello World
144
- </Button>
145
- );
142
+ return <Button variant="contained">Hello World</Button>;
146
143
  }
147
144
  ```
148
145
 
@@ -191,6 +188,10 @@ Future plans and high-priority features and enhancements can be found in our [ro
191
188
  This project is licensed under the terms of the
192
189
  [MIT license](/LICENSE).
193
190
 
191
+ ## Security
192
+
193
+ For details of supported versions and contact details for reporting security issues, please refer to the [security policy](https://github.com/mui/material-ui/blob/master/SECURITY.md).
194
+
194
195
  ## Sponsoring services
195
196
 
196
197
  These great services sponsor MUI's core infrastructure:
@@ -3,6 +3,7 @@ import {
3
3
  ExtendSliderUnstyledTypeMap,
4
4
  ExtendSliderUnstyled,
5
5
  SliderUnstyledTypeMap,
6
+ SliderValueLabelProps,
6
7
  } from '@mui/base/SliderUnstyled';
7
8
  import { SxProps } from '@mui/system';
8
9
  import { OverridableStringUnion } from '@mui/types';
@@ -55,13 +56,14 @@ export type SliderTypeMap<
55
56
  defaultComponent: D;
56
57
  }>;
57
58
 
59
+ export { SliderValueLabelProps } from '@mui/base/SliderUnstyled';
60
+
58
61
  type SliderRootProps = NonNullable<SliderTypeMap['props']['componentsProps']>['root'];
59
62
  type SliderMarkProps = NonNullable<SliderTypeMap['props']['componentsProps']>['mark'];
60
63
  type SliderMarkLabelProps = NonNullable<SliderTypeMap['props']['componentsProps']>['markLabel'];
61
64
  type SliderRailProps = NonNullable<SliderTypeMap['props']['componentsProps']>['rail'];
62
65
  type SliderTrackProps = NonNullable<SliderTypeMap['props']['componentsProps']>['track'];
63
66
  type SliderThumbProps = NonNullable<SliderTypeMap['props']['componentsProps']>['thumb'];
64
- type SliderValueLabelProps = NonNullable<SliderTypeMap['props']['componentsProps']>['valueLabel'];
65
67
  type SliderInputProps = NonNullable<SliderTypeMap['props']['componentsProps']>['input'];
66
68
 
67
69
  export const SliderRoot: React.FC<SliderRootProps>;
package/Slider/Slider.js CHANGED
@@ -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 */
@@ -574,12 +587,14 @@ process.env.NODE_ENV !== "production" ? Slider.propTypes
574
587
  thumb: PropTypes.object,
575
588
  track: PropTypes.object,
576
589
  valueLabel: PropTypes.shape({
590
+ children: PropTypes.element,
577
591
  className: PropTypes.string,
578
592
  components: PropTypes.shape({
579
593
  Root: PropTypes.elementType
580
594
  }),
595
+ open: PropTypes.bool,
581
596
  style: PropTypes.object,
582
- value: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.number), PropTypes.number]),
597
+ value: PropTypes.number,
583
598
  valueLabelDisplay: PropTypes.oneOf(['auto', 'off', 'on'])
584
599
  })
585
600
  }),
@@ -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);
package/Stack/Stack.js CHANGED
@@ -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
  })]
package/Tab/Tab.d.ts CHANGED
@@ -30,7 +30,6 @@ export type TabTypeMap<P = {}, D extends React.ElementType = 'div'> = ExtendButt
30
30
  * The icon to display.
31
31
  */
32
32
  icon?: string | React.ReactElement;
33
-
34
33
  /**
35
34
  * The position of the icon relative to the label.
36
35
  * @default 'top'