@mui/material 6.0.0-alpha.3 → 6.0.0-alpha.5

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 (86) hide show
  1. package/CHANGELOG.md +93 -0
  2. package/Checkbox/Checkbox.js +51 -20
  3. package/FormControlLabel/FormControlLabel.d.ts +21 -14
  4. package/FormControlLabel/FormControlLabel.js +22 -4
  5. package/FormHelperText/FormHelperText.js +18 -8
  6. package/IconButton/IconButton.js +97 -40
  7. package/ImageList/ImageList.js +16 -14
  8. package/ImageListItem/ImageListItem.js +37 -22
  9. package/ImageListItemBar/ImageListItemBar.js +65 -32
  10. package/ListItem/ListItem.js +94 -50
  11. package/ListItemAvatar/ListItemAvatar.js +12 -8
  12. package/ListItemButton/ListItemButton.js +35 -15
  13. package/ListItemSecondaryAction/ListItemSecondaryAction.js +12 -8
  14. package/ListItemText/ListItemText.js +20 -11
  15. package/ListSubheader/ListSubheader.js +44 -19
  16. package/PaginationItem/PaginationItem.d.ts +26 -14
  17. package/PaginationItem/PaginationItem.js +64 -20
  18. package/Radio/Radio.js +50 -20
  19. package/Radio/RadioButtonIcon.js +18 -12
  20. package/Rating/Rating.js +71 -37
  21. package/SvgIcon/SvgIcon.js +73 -21
  22. package/Table/Table.js +11 -6
  23. package/TableCell/TableCell.js +96 -41
  24. package/TableSortLabel/TableSortLabel.js +19 -9
  25. package/Toolbar/Toolbar.js +33 -17
  26. package/Typography/Typography.js +3 -2
  27. package/index.js +1 -1
  28. package/modern/Checkbox/Checkbox.js +51 -20
  29. package/modern/FormControlLabel/FormControlLabel.js +22 -4
  30. package/modern/FormHelperText/FormHelperText.js +18 -8
  31. package/modern/IconButton/IconButton.js +97 -40
  32. package/modern/ImageList/ImageList.js +16 -14
  33. package/modern/ImageListItem/ImageListItem.js +37 -22
  34. package/modern/ImageListItemBar/ImageListItemBar.js +65 -32
  35. package/modern/ListItem/ListItem.js +94 -50
  36. package/modern/ListItemAvatar/ListItemAvatar.js +12 -8
  37. package/modern/ListItemButton/ListItemButton.js +35 -15
  38. package/modern/ListItemSecondaryAction/ListItemSecondaryAction.js +12 -8
  39. package/modern/ListItemText/ListItemText.js +20 -11
  40. package/modern/ListSubheader/ListSubheader.js +44 -19
  41. package/modern/PaginationItem/PaginationItem.js +64 -20
  42. package/modern/Radio/Radio.js +50 -20
  43. package/modern/Radio/RadioButtonIcon.js +18 -12
  44. package/modern/Rating/Rating.js +71 -37
  45. package/modern/SvgIcon/SvgIcon.js +73 -21
  46. package/modern/Table/Table.js +11 -6
  47. package/modern/TableCell/TableCell.js +96 -41
  48. package/modern/TableSortLabel/TableSortLabel.js +19 -9
  49. package/modern/Toolbar/Toolbar.js +33 -17
  50. package/modern/Typography/Typography.js +3 -2
  51. package/modern/index.js +1 -1
  52. package/modern/styles/experimental_extendTheme.js +2 -1
  53. package/modern/styles/getOverlayAlpha.js +3 -4
  54. package/node/Checkbox/Checkbox.js +54 -23
  55. package/node/FormControlLabel/FormControlLabel.js +23 -5
  56. package/node/FormHelperText/FormHelperText.js +18 -8
  57. package/node/IconButton/IconButton.js +99 -43
  58. package/node/ImageList/ImageList.js +16 -14
  59. package/node/ImageListItem/ImageListItem.js +37 -22
  60. package/node/ImageListItemBar/ImageListItemBar.js +65 -32
  61. package/node/ListItem/ListItem.js +94 -50
  62. package/node/ListItemAvatar/ListItemAvatar.js +12 -8
  63. package/node/ListItemButton/ListItemButton.js +35 -15
  64. package/node/ListItemSecondaryAction/ListItemSecondaryAction.js +12 -8
  65. package/node/ListItemText/ListItemText.js +20 -11
  66. package/node/ListSubheader/ListSubheader.js +44 -19
  67. package/node/PaginationItem/PaginationItem.js +65 -20
  68. package/node/Radio/Radio.js +52 -22
  69. package/node/Radio/RadioButtonIcon.js +21 -15
  70. package/node/Rating/Rating.js +71 -37
  71. package/node/SvgIcon/SvgIcon.js +79 -24
  72. package/node/Table/Table.js +11 -6
  73. package/node/TableCell/TableCell.js +96 -41
  74. package/node/TableSortLabel/TableSortLabel.js +19 -9
  75. package/node/Toolbar/Toolbar.js +33 -17
  76. package/node/Typography/Typography.js +3 -2
  77. package/node/index.js +1 -1
  78. package/node/styles/experimental_extendTheme.js +1 -0
  79. package/node/styles/getOverlayAlpha.js +4 -5
  80. package/package.json +6 -6
  81. package/styles/experimental_extendTheme.d.ts +2 -0
  82. package/styles/experimental_extendTheme.js +2 -1
  83. package/styles/getOverlayAlpha.d.ts +1 -2
  84. package/styles/getOverlayAlpha.js +3 -4
  85. package/umd/material-ui.development.js +1223 -583
  86. package/umd/material-ui.production.min.js +4 -4
package/CHANGELOG.md CHANGED
@@ -1,5 +1,98 @@
1
1
  # [Versions](https://mui.com/versions/)
2
2
 
3
+ ## v6.0.0-alpha.5
4
+
5
+ <!-- generated comparing v6.0.0-alpha.4..next -->
6
+
7
+ _May 1, 2024_
8
+
9
+ A big thanks to the 9 contributors who made this release possible. Here are some highlights ✨:
10
+
11
+ ### `@mui/material@6.0.0-alpha.5`
12
+
13
+ - [FormControlLabel] Deprecate `componentsProps` (#41767) @sai6855
14
+ - [PaginationItem] Deprecate components prop (#41777) @sai6855
15
+ - [SvgIcon] Convert to support CSS extraction (#41779) @aarongarciah
16
+
17
+ ### `@mui/base@5.0.0-beta.43`
18
+
19
+ - [TextareaAutosize] Fix resizing instability (#41638) @ZeeshanTamboli
20
+
21
+ ### Docs
22
+
23
+ - Fix small SEO issues @oliviertassinari
24
+ - [material-ui] Fix minor spelling error in the "About the lab" page (#42073) @ryanhartwig
25
+ - [material-ui] Update Figma plugin name (#41967) @danilo-leal
26
+ - [material-ui][templates] Fix input props attributes in Landing Page template (#42013) @5-tom
27
+ - [system] Update typo on the sx prop page (#42035) @bricker
28
+
29
+ ### Core
30
+
31
+ - [docs-infra] Clean up branding theme file and improve font-face readibility (#42023) @danilo-leal
32
+ - [docs-infra] Simplify docs demo (#42016) @oliviertassinari
33
+ - [website] Add content about the Sync plugin in the Material UI page (#40515) @danilo-leal
34
+ - [website] Sync career roles (#42058) @oliviertassinari
35
+ - [website] Add Nadja on the about page (#42021) @mnajdova
36
+ - [website] Fix code block design by changing the `MarkdownElement` import (#42022) @danilo-leal
37
+ - [wesbite] Remove duplicate MarkdownElement component (#42028) @danilo-leal
38
+
39
+ All contributors of this release in alphabetical order: @5-tom, @aarongarciah, @bricker, @danilo-leal, @mnajdova, @oliviertassinari, @ryanhartwig, @sai6855, @ZeeshanTamboli
40
+
41
+ ## v6.0.0-alpha.4
42
+
43
+ <!-- generated comparing v6.0.0-alpha.3..next -->
44
+
45
+ _Apr 24, 2024_
46
+
47
+ A big thanks to the 15 contributors who made this release possible. Here are some highlights ✨:
48
+
49
+ - 🔥 Converted 3 more Material UI components to use Pigment CSS.
50
+ - ℹ️ Pigment CSS now lives in [its own repository](https://github.com/mui/pigment-css)! From now on, all future development will happen there.
51
+
52
+ ### `@mui/material@6.0.0-alpha.4`
53
+
54
+ - [Checkbox] Convert to support CSS extraction (#41957) @lhilgert9
55
+ - [IconButton] Convert to support CSS extraction (#41850) @gijsbotje
56
+ - [Radio] Convert to support CSS extraction (#41840) @lhilgert9
57
+ - [Typography] Fix ownerState prop placement (#41903) @sai6855
58
+ - Generate typography tokens (#41703) @siriwatknp
59
+ - Move typography CSS variables to `font` (#42003) @siriwatknp
60
+ - Fix getOverlayAlpha type (#41995) @oliviertassinari
61
+ - Support CSS Extraction using codemod (#41935) @siriwatknp
62
+
63
+ ### `@mui/icons-material@6.0.0-alpha.4`
64
+
65
+ - &#8203;<!-- 08 -->[icons] Update the icons package (#41937) @danilo-leal
66
+
67
+ ### Docs
68
+
69
+ - [material-ui] Remove react-swipeable-views from demos as it's no longer maintained (#41912) @soler1212
70
+ - [material-ui] Add dark theme thumbnails for templates (#41947) @zanivan
71
+ - [material-ui] Remove links and interdependencies from free templates (#41941) @zanivan
72
+ - [material-ui] Add missing backticks to HTML tag in the installation page (#41972) @Miguelrom
73
+ - Fix 301 Toolpad links @oliviertassinari
74
+ - Fix 301 image redirections @oliviertassinari
75
+
76
+ ### Core
77
+
78
+ - pnpm docs:zipRules && vale sync @oliviertassinari
79
+ - Remove @pigment-css/\* packages (#41965) @mnajdova
80
+ - [code-infra] Move the HighlightedCode component to @mui/docs (#41859) @Janpot
81
+ - [code-infra] Move the HighlightedCode component to @mui/docs (#41859) @Janpot
82
+ - [code-infra] Make Babel config path configurable in API docs builder (#41999) @michaldudak
83
+ - [docs-infra] Fix flex-shrink pro-plan (#41990) @oliviertassinari
84
+ - [docs-infra] Allow more value uses of MUI (#41706) @oliviertassinari
85
+ - [docs-infra] Move CPU to shared config (#41901) @oliviertassinari
86
+ - [docs-infra] Improve Twitter OG:image (#41860) @oliviertassinari
87
+ - [docs-infra] Adapt docs infra to Base UI docs needs (#41963) @michaldudak
88
+ - [docs-infra] Add demo container design refinements (#41948) @danilo-leal
89
+ - [docs-infra] Use the `getLayout` on the material demo pages (#41936) @alexfauquette
90
+ - [test] Update browser versions in karma config (#42008) @ZeeshanTamboli
91
+ - [website] Remove customer support agent role from website (#41969) @rluzists1
92
+ - [website] Fix grid usage and add stray improvements (#41930) @danilo-leal
93
+
94
+ All contributors of this release in alphabetical order: @alexfauquette, @danilo-leal, @gijsbotje, @Janpot, @lhilgert9, @michaldudak, @Miguelrom, @mnajdova, @oliviertassinari, @rluzists1, @sai6855, @siriwatknp, @soler1212, @zanivan, @ZeeshanTamboli
95
+
3
96
  ## v6.0.0-alpha.3
4
97
 
5
98
  <!-- generated comparing v6.0.0-alpha.2..next -->
@@ -14,10 +14,11 @@ import CheckBoxOutlineBlankIcon from '../internal/svg-icons/CheckBoxOutlineBlank
14
14
  import CheckBoxIcon from '../internal/svg-icons/CheckBox';
15
15
  import IndeterminateCheckBoxIcon from '../internal/svg-icons/IndeterminateCheckBox';
16
16
  import capitalize from '../utils/capitalize';
17
- import useThemeProps from '../styles/useThemeProps';
18
- import styled, { rootShouldForwardProp } from '../styles/styled';
17
+ import rootShouldForwardProp from '../styles/rootShouldForwardProp';
19
18
  import checkboxClasses, { getCheckboxUtilityClass } from './checkboxClasses';
19
+ import { createUseThemeProps, styled } from '../zero-styled';
20
20
  import { jsx as _jsx } from "react/jsx-runtime";
21
+ const useThemeProps = createUseThemeProps('MuiCheckbox');
21
22
  const useUtilityClasses = ownerState => {
22
23
  const {
23
24
  classes,
@@ -42,25 +43,55 @@ const CheckboxRoot = styled(SwitchBase, {
42
43
  return [styles.root, ownerState.indeterminate && styles.indeterminate, styles[`size${capitalize(ownerState.size)}`], ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`]];
43
44
  }
44
45
  })(({
45
- theme,
46
- ownerState
47
- }) => _extends({
48
- color: (theme.vars || theme).palette.text.secondary
49
- }, !ownerState.disableRipple && {
50
- '&:hover': {
51
- backgroundColor: theme.vars ? `rgba(${ownerState.color === 'default' ? theme.vars.palette.action.activeChannel : theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(ownerState.color === 'default' ? theme.palette.action.active : theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),
52
- // Reset on touch devices, it doesn't add specificity
53
- '@media (hover: none)': {
54
- backgroundColor: 'transparent'
46
+ theme
47
+ }) => ({
48
+ color: (theme.vars || theme).palette.text.secondary,
49
+ variants: [{
50
+ props: {
51
+ color: 'default',
52
+ disableRipple: false
53
+ },
54
+ style: {
55
+ '&:hover': {
56
+ backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.action.active, theme.palette.action.hoverOpacity)
57
+ }
55
58
  }
56
- }
57
- }, ownerState.color !== 'default' && {
58
- [`&.${checkboxClasses.checked}, &.${checkboxClasses.indeterminate}`]: {
59
- color: (theme.vars || theme).palette[ownerState.color].main
60
- },
61
- [`&.${checkboxClasses.disabled}`]: {
62
- color: (theme.vars || theme).palette.action.disabled
63
- }
59
+ }, ...Object.entries(theme.palette).filter(([, palette]) => palette.main).map(([color]) => ({
60
+ props: {
61
+ color,
62
+ disableRipple: false
63
+ },
64
+ style: {
65
+ '&:hover': {
66
+ backgroundColor: theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[color].main, theme.palette.action.hoverOpacity)
67
+ }
68
+ }
69
+ })), ...Object.entries(theme.palette).filter(([, palette]) => palette.main).map(([color]) => ({
70
+ props: {
71
+ color
72
+ },
73
+ style: {
74
+ [`&.${checkboxClasses.checked}, &.${checkboxClasses.indeterminate}`]: {
75
+ color: (theme.vars || theme).palette[color].main
76
+ },
77
+ [`&.${checkboxClasses.disabled}`]: {
78
+ color: (theme.vars || theme).palette.action.disabled
79
+ }
80
+ }
81
+ })), {
82
+ // Should be last to override other colors
83
+ props: {
84
+ disableRipple: false
85
+ },
86
+ style: {
87
+ // Reset on touch devices, it doesn't add specificity
88
+ '&:hover': {
89
+ '@media (hover: none)': {
90
+ backgroundColor: 'transparent'
91
+ }
92
+ }
93
+ }
94
+ }]
64
95
  }));
65
96
  const defaultCheckedIcon = /*#__PURE__*/_jsx(CheckBoxIcon, {});
66
97
  const defaultIcon = /*#__PURE__*/_jsx(CheckBoxOutlineBlankIcon, {});
@@ -1,11 +1,29 @@
1
1
  import * as React from 'react';
2
2
  import { SxProps } from '@mui/system';
3
3
  import { Theme, InternalStandardProps as StandardProps } from '..';
4
- import { TypographyProps } from '../Typography';
4
+ import Typography, { TypographyProps } from '../Typography';
5
5
  import { FormControlLabelClasses } from './formControlLabelClasses';
6
+ import { CreateSlotsAndSlotProps, SlotProps } from '../utils/types';
7
+
8
+ export interface FormControlLabelSlots {
9
+ /**
10
+ * The component that renders the label.
11
+ * This is unused if `disableTypography` is true.
12
+ * @default Typography
13
+ */
14
+ typography?: React.ElementType;
15
+ }
16
+
17
+ export type FormControlLabelSlotsAndSlotProps = CreateSlotsAndSlotProps<
18
+ FormControlLabelSlots,
19
+ {
20
+ typography: SlotProps<typeof Typography, {}, FormControlLabelProps>;
21
+ }
22
+ >;
6
23
 
7
24
  export interface FormControlLabelProps
8
- extends StandardProps<React.LabelHTMLAttributes<HTMLLabelElement>, 'children' | 'onChange'> {
25
+ extends StandardProps<React.LabelHTMLAttributes<HTMLLabelElement>, 'children' | 'onChange'>,
26
+ FormControlLabelSlotsAndSlotProps {
9
27
  /**
10
28
  * If `true`, the component appears selected.
11
29
  */
@@ -17,6 +35,7 @@ export interface FormControlLabelProps
17
35
  /**
18
36
  * The props used for each slot inside.
19
37
  * @default {}
38
+ * @deprecated use the `slotProps` prop instead. This prop will be removed in v7. [How to migrate](/material-ui/migration/migrating-from-deprecated-apis/).
20
39
  */
21
40
  componentsProps?: {
22
41
  /**
@@ -63,18 +82,6 @@ export interface FormControlLabelProps
63
82
  * If `true`, the label will indicate that the `input` is required.
64
83
  */
65
84
  required?: boolean;
66
- /**
67
- * The props used for each slot inside.
68
- * @default {}
69
- */
70
- slotProps?: {
71
- /**
72
- * Props applied to the Typography wrapper of the passed label.
73
- * This is unused if disableTypography is true.
74
- * @default {}
75
- */
76
- typography?: TypographyProps;
77
- };
78
85
  /**
79
86
  * The system prop that allows defining system overrides as well as additional CSS styles.
80
87
  */
@@ -2,7 +2,7 @@
2
2
 
3
3
  import _extends from "@babel/runtime/helpers/esm/extends";
4
4
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
5
- const _excluded = ["checked", "className", "componentsProps", "control", "disabled", "disableTypography", "inputRef", "label", "labelPlacement", "name", "onChange", "required", "slotProps", "value"];
5
+ const _excluded = ["checked", "className", "componentsProps", "control", "disabled", "disableTypography", "inputRef", "label", "labelPlacement", "name", "onChange", "required", "slots", "slotProps", "value"];
6
6
  import * as React from 'react';
7
7
  import PropTypes from 'prop-types';
8
8
  import clsx from 'clsx';
@@ -15,6 +15,7 @@ import Typography from '../Typography';
15
15
  import capitalize from '../utils/capitalize';
16
16
  import formControlLabelClasses, { getFormControlLabelUtilityClasses } from './formControlLabelClasses';
17
17
  import formControlState from '../FormControl/formControlState';
18
+ import useSlot from '../utils/useSlot';
18
19
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
19
20
  const useThemeProps = createUseThemeProps('MuiFormControlLabel');
20
21
  const useUtilityClasses = ownerState => {
@@ -124,6 +125,7 @@ const FormControlLabel = /*#__PURE__*/React.forwardRef(function FormControlLabel
124
125
  label: labelProp,
125
126
  labelPlacement = 'end',
126
127
  required: requiredProp,
128
+ slots = {},
127
129
  slotProps = {}
128
130
  } = props,
129
131
  other = _objectWithoutPropertiesLoose(props, _excluded);
@@ -151,10 +153,18 @@ const FormControlLabel = /*#__PURE__*/React.forwardRef(function FormControlLabel
151
153
  error: fcs.error
152
154
  });
153
155
  const classes = useUtilityClasses(ownerState);
154
- const typographySlotProps = slotProps.typography ?? componentsProps.typography;
156
+ const externalForwardedProps = {
157
+ slots,
158
+ slotProps: _extends({}, componentsProps, slotProps)
159
+ };
160
+ const [TypographySlot, typographySlotProps] = useSlot('typography', {
161
+ elementType: Typography,
162
+ externalForwardedProps,
163
+ ownerState
164
+ });
155
165
  let label = labelProp;
156
166
  if (label != null && label.type !== Typography && !disableTypography) {
157
- label = /*#__PURE__*/_jsx(Typography, _extends({
167
+ label = /*#__PURE__*/_jsx(TypographySlot, _extends({
158
168
  component: "span"
159
169
  }, typographySlotProps, {
160
170
  className: clsx(classes.label, typographySlotProps?.className),
@@ -197,6 +207,7 @@ process.env.NODE_ENV !== "production" ? FormControlLabel.propTypes /* remove-pro
197
207
  /**
198
208
  * The props used for each slot inside.
199
209
  * @default {}
210
+ * @deprecated use the `slotProps` prop instead. This prop will be removed in v7. [How to migrate](/material-ui/migration/migrating-from-deprecated-apis/).
200
211
  */
201
212
  componentsProps: PropTypes.shape({
202
213
  typography: PropTypes.object
@@ -246,7 +257,14 @@ process.env.NODE_ENV !== "production" ? FormControlLabel.propTypes /* remove-pro
246
257
  * @default {}
247
258
  */
248
259
  slotProps: PropTypes.shape({
249
- typography: PropTypes.object
260
+ typography: PropTypes.oneOfType([PropTypes.func, PropTypes.object])
261
+ }),
262
+ /**
263
+ * The components used for each slot inside.
264
+ * @default {}
265
+ */
266
+ slots: PropTypes.shape({
267
+ typography: PropTypes.elementType
250
268
  }),
251
269
  /**
252
270
  * The system prop that allows defining system overrides as well as additional CSS styles.
@@ -41,8 +41,7 @@ const FormHelperTextRoot = styled('p', {
41
41
  return [styles.root, ownerState.size && styles[`size${capitalize(ownerState.size)}`], ownerState.contained && styles.contained, ownerState.filled && styles.filled];
42
42
  }
43
43
  })(({
44
- theme,
45
- ownerState
44
+ theme
46
45
  }) => _extends({
47
46
  color: (theme.vars || theme).palette.text.secondary
48
47
  }, theme.typography.caption, {
@@ -56,12 +55,23 @@ const FormHelperTextRoot = styled('p', {
56
55
  },
57
56
  [`&.${formHelperTextClasses.error}`]: {
58
57
  color: (theme.vars || theme).palette.error.main
59
- }
60
- }, ownerState.size === 'small' && {
61
- marginTop: 4
62
- }, ownerState.contained && {
63
- marginLeft: 14,
64
- marginRight: 14
58
+ },
59
+ variants: [{
60
+ props: {
61
+ size: 'small'
62
+ },
63
+ style: {
64
+ marginTop: 4
65
+ }
66
+ }, {
67
+ props: ({
68
+ ownerState
69
+ }) => ownerState.contained,
70
+ style: {
71
+ marginLeft: 14,
72
+ marginRight: 14
73
+ }
74
+ }]
65
75
  }));
66
76
  const FormHelperText = /*#__PURE__*/React.forwardRef(function FormHelperText(inProps, ref) {
67
77
  const props = useThemeProps({
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
 
3
- import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
4
3
  import _extends from "@babel/runtime/helpers/esm/extends";
4
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
5
5
  const _excluded = ["edge", "children", "className", "color", "disabled", "disableFocusRipple", "size"];
6
6
  import * as React from 'react';
7
7
  import PropTypes from 'prop-types';
@@ -9,12 +9,12 @@ import clsx from 'clsx';
9
9
  import chainPropTypes from '@mui/utils/chainPropTypes';
10
10
  import composeClasses from '@mui/utils/composeClasses';
11
11
  import { alpha } from '@mui/system/colorManipulator';
12
- import styled from '../styles/styled';
13
- import useThemeProps from '../styles/useThemeProps';
12
+ import { styled, createUseThemeProps } from '../zero-styled';
14
13
  import ButtonBase from '../ButtonBase';
15
14
  import capitalize from '../utils/capitalize';
16
15
  import iconButtonClasses, { getIconButtonUtilityClass } from './iconButtonClasses';
17
16
  import { jsx as _jsx } from "react/jsx-runtime";
17
+ const useThemeProps = createUseThemeProps('MuiIconButton');
18
18
  const useUtilityClasses = ownerState => {
19
19
  const {
20
20
  classes,
@@ -38,9 +38,8 @@ const IconButtonRoot = styled(ButtonBase, {
38
38
  return [styles.root, ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`], ownerState.edge && styles[`edge${capitalize(ownerState.edge)}`], styles[`size${capitalize(ownerState.size)}`]];
39
39
  }
40
40
  })(({
41
- theme,
42
- ownerState
43
- }) => _extends({
41
+ theme
42
+ }) => ({
44
43
  textAlign: 'center',
45
44
  flex: '0 0 auto',
46
45
  fontSize: theme.typography.pxToRem(24),
@@ -51,49 +50,107 @@ const IconButtonRoot = styled(ButtonBase, {
51
50
  color: (theme.vars || theme).palette.action.active,
52
51
  transition: theme.transitions.create('background-color', {
53
52
  duration: theme.transitions.duration.shortest
54
- })
55
- }, !ownerState.disableRipple && {
56
- '&:hover': {
57
- backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.action.active, theme.palette.action.hoverOpacity),
58
- // Reset on touch devices, it doesn't add specificity
59
- '@media (hover: none)': {
60
- backgroundColor: 'transparent'
53
+ }),
54
+ variants: [{
55
+ props: {
56
+ disableRipple: false
57
+ },
58
+ style: {
59
+ '&:hover': {
60
+ backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.action.active, theme.palette.action.hoverOpacity),
61
+ // Reset on touch devices, it doesn't add specificity
62
+ '@media (hover: none)': {
63
+ backgroundColor: 'transparent'
64
+ }
65
+ }
61
66
  }
62
- }
63
- }, ownerState.edge === 'start' && {
64
- marginLeft: ownerState.size === 'small' ? -3 : -12
65
- }, ownerState.edge === 'end' && {
66
- marginRight: ownerState.size === 'small' ? -3 : -12
67
+ }, {
68
+ props: {
69
+ edge: 'start'
70
+ },
71
+ style: {
72
+ marginLeft: -12
73
+ }
74
+ }, {
75
+ props: {
76
+ edge: 'start',
77
+ size: 'small'
78
+ },
79
+ style: {
80
+ marginLeft: -3
81
+ }
82
+ }, {
83
+ props: {
84
+ edge: 'end'
85
+ },
86
+ style: {
87
+ marginRight: -12
88
+ }
89
+ }, {
90
+ props: {
91
+ edge: 'end',
92
+ size: 'small'
93
+ },
94
+ style: {
95
+ marginRight: -3
96
+ }
97
+ }]
67
98
  }), ({
68
- theme,
69
- ownerState
99
+ theme
70
100
  }) => {
71
- const palette = (theme.vars || theme).palette?.[ownerState.color];
72
- return _extends({}, ownerState.color === 'inherit' && {
73
- color: 'inherit'
74
- }, ownerState.color !== 'inherit' && ownerState.color !== 'default' && _extends({
75
- color: palette?.main
76
- }, !ownerState.disableRipple && {
77
- '&:hover': _extends({}, palette && {
78
- backgroundColor: theme.vars ? `rgba(${palette.mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(palette.main, theme.palette.action.hoverOpacity)
101
+ return {
102
+ variants: [{
103
+ props: {
104
+ color: 'inherit'
105
+ },
106
+ style: {
107
+ color: 'inherit'
108
+ }
109
+ }, ...Object.entries(theme.palette).filter(([, value]) => value.main) // check all the used fields in the style below
110
+ .map(([color]) => ({
111
+ props: {
112
+ color
113
+ },
114
+ style: {
115
+ color: (theme.vars || theme).palette[color].main
116
+ }
117
+ })), ...Object.entries(theme.palette).filter(([, value]) => value.main) // check all the used fields in the style below
118
+ .map(([color]) => ({
119
+ props: {
120
+ color,
121
+ disableRipple: false
122
+ },
123
+ style: {
124
+ '&:hover': {
125
+ backgroundColor: theme.vars ? `rgba(${(theme.vars || theme).palette[color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha((theme.vars || theme).palette[color].main, theme.palette.action.hoverOpacity),
126
+ // Reset on touch devices, it doesn't add specificity
127
+ '@media (hover: none)': {
128
+ backgroundColor: 'transparent'
129
+ }
130
+ }
131
+ }
132
+ })), {
133
+ props: {
134
+ size: 'small'
135
+ },
136
+ style: {
137
+ padding: 5,
138
+ fontSize: theme.typography.pxToRem(18)
139
+ }
79
140
  }, {
80
- // Reset on touch devices, it doesn't add specificity
81
- '@media (hover: none)': {
82
- backgroundColor: 'transparent'
141
+ props: {
142
+ size: 'large'
143
+ },
144
+ style: {
145
+ padding: 12,
146
+ fontSize: theme.typography.pxToRem(28)
83
147
  }
84
- })
85
- }), ownerState.size === 'small' && {
86
- padding: 5,
87
- fontSize: theme.typography.pxToRem(18)
88
- }, ownerState.size === 'large' && {
89
- padding: 12,
90
- fontSize: theme.typography.pxToRem(28)
91
- }, {
148
+ }],
92
149
  [`&.${iconButtonClasses.disabled}`]: {
93
150
  backgroundColor: 'transparent',
94
151
  color: (theme.vars || theme).palette.action.disabled
95
152
  }
96
- });
153
+ };
97
154
  });
98
155
 
99
156
  /**
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
 
3
- import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
4
3
  import _extends from "@babel/runtime/helpers/esm/extends";
4
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
5
5
  const _excluded = ["children", "className", "cols", "component", "rowHeight", "gap", "style", "variant"];
6
6
  import composeClasses from '@mui/utils/composeClasses';
7
7
  import integerPropType from '@mui/utils/integerPropType';
@@ -32,19 +32,21 @@ const ImageListRoot = styled('ul', {
32
32
  } = props;
33
33
  return [styles.root, styles[ownerState.variant]];
34
34
  }
35
- })(({
36
- ownerState
37
- }) => {
38
- return _extends({
39
- display: 'grid',
40
- overflowY: 'auto',
41
- listStyle: 'none',
42
- padding: 0,
43
- // Add iOS momentum scrolling for iOS < 13.0
44
- WebkitOverflowScrolling: 'touch'
45
- }, ownerState.variant === 'masonry' && {
46
- display: 'block'
47
- });
35
+ })({
36
+ display: 'grid',
37
+ overflowY: 'auto',
38
+ listStyle: 'none',
39
+ padding: 0,
40
+ // Add iOS momentum scrolling for iOS < 13.0
41
+ WebkitOverflowScrolling: 'touch',
42
+ variants: [{
43
+ props: {
44
+ variant: 'masonry'
45
+ },
46
+ style: {
47
+ display: 'block'
48
+ }
49
+ }]
48
50
  });
49
51
  const ImageList = /*#__PURE__*/React.forwardRef(function ImageList(inProps, ref) {
50
52
  const props = useThemeProps({
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
 
3
- import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
4
3
  import _extends from "@babel/runtime/helpers/esm/extends";
4
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
5
5
  const _excluded = ["children", "className", "cols", "component", "rows", "style"];
6
6
  import composeClasses from '@mui/utils/composeClasses';
7
7
  import integerPropType from '@mui/utils/integerPropType';
@@ -37,32 +37,47 @@ const ImageListItemRoot = styled('li', {
37
37
  [`& .${imageListItemClasses.img}`]: styles.img
38
38
  }, styles.root, styles[ownerState.variant]];
39
39
  }
40
- })(({
41
- ownerState
42
- }) => _extends({
40
+ })({
43
41
  display: 'block',
44
- position: 'relative'
45
- }, ownerState.variant === 'standard' && {
46
- // For titlebar under list item
47
- display: 'flex',
48
- flexDirection: 'column'
49
- }, ownerState.variant === 'woven' && {
50
- height: '100%',
51
- alignSelf: 'center',
52
- '&:nth-of-type(even)': {
53
- height: '70%'
54
- }
55
- }, {
56
- [`& .${imageListItemClasses.img}`]: _extends({
42
+ position: 'relative',
43
+ [`& .${imageListItemClasses.img}`]: {
57
44
  objectFit: 'cover',
58
45
  width: '100%',
59
46
  height: '100%',
60
47
  display: 'block'
61
- }, ownerState.variant === 'standard' && {
62
- height: 'auto',
63
- flexGrow: 1
64
- })
65
- }));
48
+ },
49
+ variants: [{
50
+ props: {
51
+ variant: 'standard'
52
+ },
53
+ style: {
54
+ // For titlebar under list item
55
+ display: 'flex',
56
+ flexDirection: 'column'
57
+ }
58
+ }, {
59
+ props: {
60
+ variant: 'woven'
61
+ },
62
+ style: {
63
+ height: '100%',
64
+ alignSelf: 'center',
65
+ '&:nth-of-type(even)': {
66
+ height: '70%'
67
+ }
68
+ }
69
+ }, {
70
+ props: {
71
+ variant: 'standard'
72
+ },
73
+ style: {
74
+ [`& .${imageListItemClasses.img}`]: {
75
+ height: 'auto',
76
+ flexGrow: 1
77
+ }
78
+ }
79
+ }]
80
+ });
66
81
  const ImageListItem = /*#__PURE__*/React.forwardRef(function ImageListItem(inProps, ref) {
67
82
  const props = useThemeProps({
68
83
  props: inProps,