@mui/material 6.0.0-alpha.0 → 6.0.0-alpha.1

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 (77) hide show
  1. package/AppBar/AppBar.js +118 -68
  2. package/Badge/Badge.d.ts +2 -4
  3. package/Badge/Badge.js +2 -4
  4. package/Button/Button.js +220 -131
  5. package/ButtonBase/ButtonBase.js +2 -2
  6. package/ButtonBase/Ripple.js +1 -1
  7. package/ButtonBase/TouchRipple.js +3 -4
  8. package/ButtonGroup/ButtonGroup.js +167 -70
  9. package/CHANGELOG.md +129 -2
  10. package/Grid/Grid.js +3 -0
  11. package/RadioGroup/RadioGroup.d.ts +0 -2
  12. package/RadioGroup/RadioGroup.js +23 -2
  13. package/RadioGroup/index.d.ts +3 -0
  14. package/RadioGroup/index.js +3 -1
  15. package/RadioGroup/radioGroupClasses.d.ts +6 -0
  16. package/RadioGroup/radioGroupClasses.js +7 -0
  17. package/Slider/Slider.js +22 -22
  18. package/Table/Table.d.ts +0 -2
  19. package/Table/Table.js +0 -2
  20. package/index.js +1 -1
  21. package/legacy/AppBar/AppBar.js +124 -64
  22. package/legacy/Badge/Badge.js +2 -4
  23. package/legacy/Button/Button.js +218 -123
  24. package/legacy/ButtonBase/ButtonBase.js +2 -2
  25. package/legacy/ButtonBase/Ripple.js +1 -1
  26. package/legacy/ButtonBase/TouchRipple.js +3 -4
  27. package/legacy/ButtonGroup/ButtonGroup.js +163 -68
  28. package/legacy/Grid/Grid.js +3 -0
  29. package/legacy/RadioGroup/RadioGroup.js +21 -2
  30. package/legacy/RadioGroup/index.js +3 -1
  31. package/legacy/RadioGroup/radioGroupClasses.js +7 -0
  32. package/legacy/Slider/Slider.js +24 -24
  33. package/legacy/Table/Table.js +0 -2
  34. package/legacy/index.js +1 -1
  35. package/legacy/styles/experimental_extendTheme.js +24 -2
  36. package/legacy/zero-styled/index.js +1 -0
  37. package/modern/AppBar/AppBar.js +118 -68
  38. package/modern/Badge/Badge.js +2 -4
  39. package/modern/Button/Button.js +220 -131
  40. package/modern/ButtonBase/ButtonBase.js +2 -2
  41. package/modern/ButtonBase/Ripple.js +1 -1
  42. package/modern/ButtonBase/TouchRipple.js +3 -4
  43. package/modern/ButtonGroup/ButtonGroup.js +167 -70
  44. package/modern/Grid/Grid.js +3 -0
  45. package/modern/RadioGroup/RadioGroup.js +23 -2
  46. package/modern/RadioGroup/index.js +3 -1
  47. package/modern/RadioGroup/radioGroupClasses.js +7 -0
  48. package/modern/Slider/Slider.js +22 -22
  49. package/modern/Table/Table.js +0 -2
  50. package/modern/index.js +1 -1
  51. package/modern/styles/experimental_extendTheme.js +24 -2
  52. package/modern/zero-styled/index.js +1 -0
  53. package/node/AppBar/AppBar.js +125 -66
  54. package/node/Badge/Badge.js +2 -4
  55. package/node/Button/Button.js +224 -135
  56. package/node/ButtonBase/ButtonBase.js +4 -4
  57. package/node/ButtonBase/Ripple.js +1 -1
  58. package/node/ButtonBase/TouchRipple.js +9 -10
  59. package/node/ButtonGroup/ButtonGroup.js +169 -72
  60. package/node/Grid/Grid.js +3 -0
  61. package/node/RadioGroup/RadioGroup.js +23 -2
  62. package/node/RadioGroup/index.js +25 -1
  63. package/node/RadioGroup/radioGroupClasses.js +15 -0
  64. package/node/Slider/Slider.js +25 -25
  65. package/node/Table/Table.js +0 -2
  66. package/node/index.js +1 -1
  67. package/node/styles/experimental_extendTheme.js +24 -2
  68. package/node/zero-styled/index.js +7 -0
  69. package/package.json +7 -7
  70. package/styles/components.d.ts +5 -0
  71. package/styles/experimental_extendTheme.d.ts +2 -0
  72. package/styles/experimental_extendTheme.js +24 -2
  73. package/styles/overrides.d.ts +2 -0
  74. package/umd/material-ui.development.js +888 -593
  75. package/umd/material-ui.production.min.js +4 -4
  76. package/zero-styled/index.d.ts +1 -0
  77. package/zero-styled/index.js +1 -0
@@ -9,14 +9,14 @@ import clsx from 'clsx';
9
9
  import refType from '@mui/utils/refType';
10
10
  import elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';
11
11
  import composeClasses from '@mui/utils/composeClasses';
12
- import styled from '../styles/styled';
13
- import useThemeProps from '../styles/useThemeProps';
12
+ import { styled, createUseThemeProps } from '../zero-styled';
14
13
  import useForkRef from '../utils/useForkRef';
15
14
  import useEventCallback from '../utils/useEventCallback';
16
15
  import useIsFocusVisible from '../utils/useIsFocusVisible';
17
16
  import TouchRipple from './TouchRipple';
18
17
  import buttonBaseClasses, { getButtonBaseUtilityClass } from './buttonBaseClasses';
19
18
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
19
+ const useThemeProps = createUseThemeProps('MuiButtonBase');
20
20
  const useUtilityClasses = ownerState => {
21
21
  const {
22
22
  disabled,
@@ -50,7 +50,7 @@ function Ripple(props) {
50
50
  })
51
51
  });
52
52
  }
53
- process.env.NODE_ENV !== "production" ? Ripple.propTypes = {
53
+ process.env.NODE_ENV !== "production" ? Ripple.propTypes /* remove-proptypes */ = {
54
54
  /**
55
55
  * Override or extend the styles applied to the component.
56
56
  */
@@ -7,13 +7,12 @@ import * as React from 'react';
7
7
  import PropTypes from 'prop-types';
8
8
  import { TransitionGroup } from 'react-transition-group';
9
9
  import clsx from 'clsx';
10
- import { keyframes } from '@mui/system';
11
10
  import useTimeout from '@mui/utils/useTimeout';
12
- import styled from '../styles/styled';
13
- import useThemeProps from '../styles/useThemeProps';
11
+ import { keyframes, styled, createUseThemeProps } from '../zero-styled';
14
12
  import Ripple from './Ripple';
15
13
  import touchRippleClasses from './touchRippleClasses';
16
14
  import { jsx as _jsx } from "react/jsx-runtime";
15
+ const useThemeProps = createUseThemeProps('MuiTouchRipple');
17
16
  const DURATION = 550;
18
17
  export const DELAY_RIPPLE = 80;
19
18
  const enterKeyframe = keyframes`
@@ -310,7 +309,7 @@ const TouchRipple = /*#__PURE__*/React.forwardRef(function TouchRipple(inProps,
310
309
  })
311
310
  }));
312
311
  });
313
- process.env.NODE_ENV !== "production" ? TouchRipple.propTypes = {
312
+ process.env.NODE_ENV !== "production" ? TouchRipple.propTypes /* remove-proptypes */ = {
314
313
  /**
315
314
  * If `true`, the ripple starts at the center of the component
316
315
  * rather than at the point of interaction.
@@ -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", "color", "component", "disabled", "disableElevation", "disableFocusRipple", "disableRipple", "fullWidth", "orientation", "size", "variant"];
6
6
  import * as React from 'react';
7
7
  import PropTypes from 'prop-types';
@@ -10,12 +10,12 @@ import composeClasses from '@mui/utils/composeClasses';
10
10
  import { alpha } from '@mui/system/colorManipulator';
11
11
  import getValidReactChildren from '@mui/utils/getValidReactChildren';
12
12
  import capitalize from '../utils/capitalize';
13
- import styled from '../styles/styled';
14
- import useThemeProps from '../styles/useThemeProps';
13
+ import { styled, createUseThemeProps } from '../zero-styled';
15
14
  import buttonGroupClasses, { getButtonGroupUtilityClass } from './buttonGroupClasses';
16
15
  import ButtonGroupContext from './ButtonGroupContext';
17
16
  import ButtonGroupButtonContext from './ButtonGroupButtonContext';
18
17
  import { jsx as _jsx } from "react/jsx-runtime";
18
+ const useThemeProps = createUseThemeProps('MuiButtonGroup');
19
19
  const overridesResolver = (props, styles) => {
20
20
  const {
21
21
  ownerState
@@ -62,80 +62,177 @@ const ButtonGroupRoot = styled('div', {
62
62
  slot: 'Root',
63
63
  overridesResolver
64
64
  })(({
65
- theme,
66
- ownerState
67
- }) => _extends({
65
+ theme
66
+ }) => ({
68
67
  display: 'inline-flex',
69
- borderRadius: (theme.vars || theme).shape.borderRadius
70
- }, ownerState.variant === 'contained' && {
71
- boxShadow: (theme.vars || theme).shadows[2]
72
- }, ownerState.disableElevation && {
73
- boxShadow: 'none'
74
- }, ownerState.fullWidth && {
75
- width: '100%'
76
- }, ownerState.orientation === 'vertical' && {
77
- flexDirection: 'column'
78
- }, {
79
- [`& .${buttonGroupClasses.grouped}`]: _extends({
80
- minWidth: 40,
81
- '&:hover': _extends({}, ownerState.variant === 'contained' && {
68
+ borderRadius: (theme.vars || theme).shape.borderRadius,
69
+ variants: [{
70
+ props: {
71
+ variant: 'contained'
72
+ },
73
+ style: {
74
+ boxShadow: (theme.vars || theme).shadows[2]
75
+ }
76
+ }, {
77
+ props: {
78
+ disableElevation: true
79
+ },
80
+ style: {
82
81
  boxShadow: 'none'
83
- })
84
- }, ownerState.variant === 'contained' && {
85
- boxShadow: 'none'
86
- }),
87
- [`& .${buttonGroupClasses.firstButton},& .${buttonGroupClasses.middleButton}`]: _extends({}, ownerState.orientation === 'horizontal' && {
88
- borderTopRightRadius: 0,
89
- borderBottomRightRadius: 0
90
- }, ownerState.orientation === 'vertical' && {
91
- borderBottomRightRadius: 0,
92
- borderBottomLeftRadius: 0
93
- }, ownerState.variant === 'text' && ownerState.orientation === 'horizontal' && {
94
- borderRight: theme.vars ? `1px solid rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.23)` : `1px solid ${theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)'}`,
95
- [`&.${buttonGroupClasses.disabled}`]: {
96
- borderRight: `1px solid ${(theme.vars || theme).palette.action.disabled}`
97
82
  }
98
- }, ownerState.variant === 'text' && ownerState.orientation === 'vertical' && {
99
- borderBottom: theme.vars ? `1px solid rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.23)` : `1px solid ${theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)'}`,
100
- [`&.${buttonGroupClasses.disabled}`]: {
101
- borderBottom: `1px solid ${(theme.vars || theme).palette.action.disabled}`
83
+ }, {
84
+ props: {
85
+ fullWidth: true
86
+ },
87
+ style: {
88
+ width: '100%'
89
+ }
90
+ }, {
91
+ props: {
92
+ orientation: 'vertical'
93
+ },
94
+ style: {
95
+ flexDirection: 'column',
96
+ [`& .${buttonGroupClasses.lastButton},& .${buttonGroupClasses.middleButton}`]: {
97
+ borderTopRightRadius: 0,
98
+ borderTopLeftRadius: 0
99
+ },
100
+ [`& .${buttonGroupClasses.firstButton},& .${buttonGroupClasses.middleButton}`]: {
101
+ borderBottomRightRadius: 0,
102
+ borderBottomLeftRadius: 0
103
+ }
102
104
  }
103
- }, ownerState.variant === 'text' && ownerState.color !== 'inherit' && {
104
- borderColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / 0.5)` : alpha(theme.palette[ownerState.color].main, 0.5)
105
- }, ownerState.variant === 'outlined' && ownerState.orientation === 'horizontal' && {
106
- borderRightColor: 'transparent'
107
- }, ownerState.variant === 'outlined' && ownerState.orientation === 'vertical' && {
108
- borderBottomColor: 'transparent'
109
- }, ownerState.variant === 'contained' && ownerState.orientation === 'horizontal' && {
110
- borderRight: `1px solid ${(theme.vars || theme).palette.grey[400]}`,
111
- [`&.${buttonGroupClasses.disabled}`]: {
112
- borderRight: `1px solid ${(theme.vars || theme).palette.action.disabled}`
105
+ }, {
106
+ props: {
107
+ orientation: 'horizontal'
108
+ },
109
+ style: {
110
+ [`& .${buttonGroupClasses.firstButton},& .${buttonGroupClasses.middleButton}`]: {
111
+ borderTopRightRadius: 0,
112
+ borderBottomRightRadius: 0
113
+ },
114
+ [`& .${buttonGroupClasses.lastButton},& .${buttonGroupClasses.middleButton}`]: {
115
+ borderTopLeftRadius: 0,
116
+ borderBottomLeftRadius: 0
117
+ }
113
118
  }
114
- }, ownerState.variant === 'contained' && ownerState.orientation === 'vertical' && {
115
- borderBottom: `1px solid ${(theme.vars || theme).palette.grey[400]}`,
116
- [`&.${buttonGroupClasses.disabled}`]: {
117
- borderBottom: `1px solid ${(theme.vars || theme).palette.action.disabled}`
119
+ }, {
120
+ props: {
121
+ variant: 'text',
122
+ orientation: 'horizontal'
123
+ },
124
+ style: {
125
+ [`& .${buttonGroupClasses.firstButton},& .${buttonGroupClasses.middleButton}`]: {
126
+ borderRight: theme.vars ? `1px solid rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.23)` : `1px solid ${theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)'}`,
127
+ [`&.${buttonGroupClasses.disabled}`]: {
128
+ borderRight: `1px solid ${(theme.vars || theme).palette.action.disabled}`
129
+ }
130
+ }
118
131
  }
119
- }, ownerState.variant === 'contained' && ownerState.color !== 'inherit' && {
120
- borderColor: (theme.vars || theme).palette[ownerState.color].dark
121
132
  }, {
122
- '&:hover': _extends({}, ownerState.variant === 'outlined' && ownerState.orientation === 'horizontal' && {
123
- borderRightColor: 'currentColor'
124
- }, ownerState.variant === 'outlined' && ownerState.orientation === 'vertical' && {
125
- borderBottomColor: 'currentColor'
126
- })
127
- }),
128
- [`& .${buttonGroupClasses.lastButton},& .${buttonGroupClasses.middleButton}`]: _extends({}, ownerState.orientation === 'horizontal' && {
129
- borderTopLeftRadius: 0,
130
- borderBottomLeftRadius: 0
131
- }, ownerState.orientation === 'vertical' && {
132
- borderTopRightRadius: 0,
133
- borderTopLeftRadius: 0
134
- }, ownerState.variant === 'outlined' && ownerState.orientation === 'horizontal' && {
135
- marginLeft: -1
136
- }, ownerState.variant === 'outlined' && ownerState.orientation === 'vertical' && {
137
- marginTop: -1
138
- })
133
+ props: {
134
+ variant: 'text',
135
+ orientation: 'vertical'
136
+ },
137
+ style: {
138
+ [`& .${buttonGroupClasses.firstButton},& .${buttonGroupClasses.middleButton}`]: {
139
+ borderBottom: theme.vars ? `1px solid rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.23)` : `1px solid ${theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)'}`,
140
+ [`&.${buttonGroupClasses.disabled}`]: {
141
+ borderBottom: `1px solid ${(theme.vars || theme).palette.action.disabled}`
142
+ }
143
+ }
144
+ }
145
+ }, ...Object.entries(theme.palette).filter(([, value]) => value.main).flatMap(([color]) => [{
146
+ props: {
147
+ variant: 'text',
148
+ color
149
+ },
150
+ style: {
151
+ [`& .${buttonGroupClasses.firstButton},& .${buttonGroupClasses.middleButton}`]: {
152
+ borderColor: theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / 0.5)` : alpha(theme.palette[color].main, 0.5)
153
+ }
154
+ }
155
+ }]), {
156
+ props: {
157
+ variant: 'outlined',
158
+ orientation: 'horizontal'
159
+ },
160
+ style: {
161
+ [`& .${buttonGroupClasses.firstButton},& .${buttonGroupClasses.middleButton}`]: {
162
+ borderRightColor: 'transparent',
163
+ '&:hover': {
164
+ borderRightColor: 'currentColor'
165
+ }
166
+ },
167
+ [`& .${buttonGroupClasses.lastButton},& .${buttonGroupClasses.middleButton}`]: {
168
+ marginLeft: -1
169
+ }
170
+ }
171
+ }, {
172
+ props: {
173
+ variant: 'outlined',
174
+ orientation: 'vertical'
175
+ },
176
+ style: {
177
+ [`& .${buttonGroupClasses.firstButton},& .${buttonGroupClasses.middleButton}`]: {
178
+ borderBottomColor: 'transparent',
179
+ '&:hover': {
180
+ borderBottomColor: 'currentColor'
181
+ }
182
+ },
183
+ [`& .${buttonGroupClasses.lastButton},& .${buttonGroupClasses.middleButton}`]: {
184
+ marginTop: -1
185
+ }
186
+ }
187
+ }, {
188
+ props: {
189
+ variant: 'contained',
190
+ orientation: 'horizontal'
191
+ },
192
+ style: {
193
+ [`& .${buttonGroupClasses.firstButton},& .${buttonGroupClasses.middleButton}`]: {
194
+ borderRight: `1px solid ${(theme.vars || theme).palette.grey[400]}`,
195
+ [`&.${buttonGroupClasses.disabled}`]: {
196
+ borderRight: `1px solid ${(theme.vars || theme).palette.action.disabled}`
197
+ }
198
+ }
199
+ }
200
+ }, {
201
+ props: {
202
+ variant: 'contained',
203
+ orientation: 'vertical'
204
+ },
205
+ style: {
206
+ [`& .${buttonGroupClasses.firstButton},& .${buttonGroupClasses.middleButton}`]: {
207
+ borderBottom: `1px solid ${(theme.vars || theme).palette.grey[400]}`,
208
+ [`&.${buttonGroupClasses.disabled}`]: {
209
+ borderBottom: `1px solid ${(theme.vars || theme).palette.action.disabled}`
210
+ }
211
+ }
212
+ }
213
+ }, ...Object.entries(theme.palette).filter(([, value]) => value.dark).map(([color]) => ({
214
+ props: {
215
+ variant: 'contained',
216
+ color
217
+ },
218
+ style: {
219
+ [`& .${buttonGroupClasses.firstButton},& .${buttonGroupClasses.middleButton}`]: {
220
+ borderColor: (theme.vars || theme).palette[color].dark
221
+ }
222
+ }
223
+ }))],
224
+ [`& .${buttonGroupClasses.grouped}`]: {
225
+ minWidth: 40,
226
+ boxShadow: 'none',
227
+ props: {
228
+ variant: 'contained'
229
+ },
230
+ style: {
231
+ '&:hover': {
232
+ boxShadow: 'none'
233
+ }
234
+ }
235
+ }
139
236
  }));
140
237
  const ButtonGroup = /*#__PURE__*/React.forwardRef(function ButtonGroup(inProps, ref) {
141
238
  const props = useThemeProps({
package/CHANGELOG.md CHANGED
@@ -1,5 +1,92 @@
1
1
  # [Versions](https://mui.com/versions/)
2
2
 
3
+ ## v6.0.0-alpha.1
4
+
5
+ <!-- generated comparing v6.0.0-alpha.0..next -->
6
+
7
+ _Apr 5, 2024_
8
+
9
+ A big thanks to the 19 contributors who made this release possible. Here are some highlights ✨:
10
+
11
+ - 🔥 Converted 3 more Material UI components to use Pigment CSS. Current progress is 36%!
12
+ - 🚀 Added a spacing CSS variable to the Material UI and Joy UI themes.
13
+ - 💫 Added 3 redesigned free Material UI templates: [Sign-in](https://next.mui.com/material-ui/getting-started/templates/sign-in/), [Sign-in side](https://next.mui.com/material-ui/getting-started/templates/sign-in-side/), and [Sign-up](https://next.mui.com/material-ui/getting-started/templates/sign-up/).
14
+
15
+ ### `@mui/material@6.0.0-alpha.1`
16
+
17
+ - [AppBar] Convert to support CSS extraction (#41247) @mnajdova
18
+ - [Badge] Deprecate components and componentsProps (#41655) @skmanoj322
19
+ - [Button] Convert to support CSS extraction (#41378) @siriwatknp
20
+ - [ButtonGroup] Convert to support CSS extraction (#41666) @zanivan
21
+ - [RadioGroup] Apply classnames (#41610) @ZeeshanTamboli
22
+ - [Slider] Move palette styles to the bottom (#41676) @siriwatknp
23
+ - Add the `spacing` theme token (#40224) @siriwatknp
24
+
25
+ ### `@mui/system@6.0.0-alpha.1`
26
+
27
+ - Add the `spacing` theme token to be used in `theme.spacing()` (#40224) @siriwatknp
28
+
29
+ ### `@mui/codemod@6.0.0-alpha.1`
30
+
31
+ - [codemod] Setup v6 codemod structure (#41668) @DiegoAndai
32
+
33
+ ### `@mui/lab@6.0.0-alpha.1`
34
+
35
+ - [TabPanel] Add keepMounted prop to match Joy UI (#41651) @ppaskaris-plooto
36
+
37
+ ### `@mui/joy@5.0.0-beta.34`
38
+
39
+ - Add `spacing` theme token (#40224) @siriwatknp
40
+
41
+ ### `@pigment-css/react@0.0.5`
42
+
43
+ - Improve sx prop support (#41589) @brijeshb42
44
+ - Fix Emotion styled error (#41699) @siriwatknp
45
+ - Fix propTypes removal during eval stage (#41695) @brijeshb42
46
+ - Fix props forwarding (#41688) @siriwatknp
47
+ - Fix sx prop transformation on Box (#41705) @brijeshb42
48
+
49
+ ### `@pigment-css/vite-plugin@0.0.5`
50
+
51
+ - Use constant filename for pigment styles (#41667) @brijeshb42
52
+
53
+ ### `@pigment-css/nextjs-plugin@0.0.5`
54
+
55
+ - Add missing RTL implementation (#41751) @brijeshb42
56
+
57
+ ### Docs
58
+
59
+ - [pigment-css] Update README.md installation to use the next tag (#41649) @mnajdova
60
+ - [pigment-css] Add "Building design system components" guide with Pigment CSS (#41635) @siriwatknp
61
+ - Continue migration of Base UI to sperate repository @oliviertassinari
62
+ - Stick to one way to write IE 11 @oliviertassinari
63
+ - Fix typo in CONTRIBUTING.md (#41670) @adriancuadrado
64
+ - Drop IE 11 official support (#41611) @iammminzzy
65
+ - [material-ui] Fix typo on the Accordion page (#41687) @connorshea
66
+ - [pigment-css] Add small edits on the README (#41646) @danilo-leal
67
+ - [pigment-css] Edit the example app's README files (#41639) @danilo-leal
68
+
69
+ ### Core
70
+
71
+ - [code-infra] Move BrandingProvider/brandingTheme/InfoCard to @mui/docs (#41206) @Janpot
72
+ - [core] Automate cherry-pick of PRs from `next` -> `master` (#41741) @aarongarciah
73
+ - [core] Update the prettier script to use the next branch (#41637) @mnajdova
74
+ - [docs-infra] Skip loading source for non-editable modules (#41588) @bharatkashyap
75
+ - [docs-infra] Vale rule for M3 (#41737) @oliviertassinari
76
+ - [docs-infra] Allows to remove edit button (#41702) @alexfauquette
77
+ - [pigment-css][examples] Add example project with Remix (#41700) @brijeshb42
78
+ - [examples] Update MUI's packages to the next version (#41701) @mnajdova
79
+ - [material-ui] Refine the Sign-in and Sign-up templates (#41192) @zanivan
80
+ - [test] Add test to display options provided to the options prop even if loading is true. (#41675) @ZeeshanTamboli
81
+ - [blog] Refresh the design slightly (#41697) @danilo-leal
82
+ - [website] Use en-US over en-UK for career link @oliviertassinari
83
+ - [website] Add Aarón to About Us (#41736) @aarongarciah
84
+ - [website] Refine button design and other details (#41686) @danilo-leal
85
+ - [website] Improve job og image (#41672) @oliviertassinari
86
+ - [website] Page <title> should have no dots @oliviertassinari
87
+
88
+ All contributors of this release in alphabetical order: @aarongarciah, @adriancuadrado, @alexfauquette, @bharatkashyap, @brijeshb42, @connorshea, @danilo-leal, @DiegoAndai, @iammminzzy, @Janpot, @JCQuintas, @levigunz, @mnajdova, @oliviertassinari, @ppaskaris-plooto, @siriwatknp, @skmanoj322, @zanivan, @ZeeshanTamboli
89
+
3
90
  ## v6.0.0-alpha.0
4
91
 
5
92
  <!-- generated comparing v5.15.14..next -->
@@ -79,6 +166,46 @@ A big thanks to the 18 contributors who made this release possible. Here are som
79
166
 
80
167
  All contributors of this release in alphabetical order: @aacevski, @brijeshb42, @cherniavskii, @cipherlogs, @danilo-leal, @DiegoAndai, @harry-whorlow, @Janpot, @joserodolfofreitas, @michael-land, @michaldudak, @mnajdova, @nekoya, @sai6855, @siriwatknp, @StylesTrip, @zanivan, @ZeeshanTamboli
81
168
 
169
+ ## v5.15.15
170
+
171
+ <!-- generated comparing v5.15.14..master -->
172
+
173
+ _Apr 4, 2024_
174
+
175
+ A big thanks to the 7 contributors who made this release possible. Here are some highlights ✨:
176
+ This release was mostly about 🐛 bug fixes and 📚 documentation improvements.
177
+
178
+ ### `@mui/material@5.15.15`
179
+
180
+ - [Autocomplete] Display options provided to the `options` prop even if loading is true (#41677) @ZeeshanTamboli
181
+ - [RadioGroup] Apply classnames (#41681) @ZeeshanTamboli
182
+
183
+ ### `@mui/system@5.15.15`
184
+
185
+ - Fix typo to avoid infinite recursion in function call (#41678) @ZeeshanTamboli
186
+
187
+ ### Docs
188
+
189
+ - [material-ui][Slider] Remove `valueLabelFormat` from restricted values demo so that the tooltip thumb label displays the same as the value text (#41679) @ZeeshanTamboli
190
+ - [material-ui] Remove deleted page from the sidenav (#41594) @danilo-leal
191
+ - [material-ui] Fix typo in CSS theme variables customization (#41680) @ZeeshanTamboli
192
+ - Continue migration of Base UI to sperate repository @oliviertassinari
193
+ - Add notification for MUI X v7 blog post (#41587) (#41605) @cherniavskii
194
+ - Update the versions dropdown to show v6 (#41557) @mnajdova
195
+
196
+ ### Core
197
+
198
+ - [blog] Link to Romain's blog post in MUI X v7 announcement post (#41641) @cherniavskii
199
+ - [blog] Blog post with MUI X v7.0.0 annoucement (#41563) (#41604) @cherniavskii
200
+ - [blog] Add post about remote (#41565) @danilo-leal
201
+ - [core] Continue rename of Toolpad @oliviertassinari
202
+ - [docs-infra] Add Toolpad product/category IDs to types (#41551) @bharatkashyap
203
+ - [website] Add Aarón to About Us (#41747) @aarongarciah
204
+ - [website] Add stray design adjustments throughout the site (#41642) @mnajdova
205
+ - [website] Update pricing table (#41606) @cherniavskii
206
+
207
+ All contributors of this release in alphabetical order: @aarongarciah, @bharatkashyap, @cherniavskii, @danilo-leal, @mnajdova, @oliviertassinari, @ZeeshanTamboli
208
+
82
209
  ## v5.15.14
83
210
 
84
211
  <!-- generated comparing v5.15.13..master -->
@@ -893,7 +1020,7 @@ A big thanks to the 22 contributors who made this release possible. Here are som
893
1020
  - [material-ui] Revise the Alert demo page (#34892) @samuelsycamore
894
1021
  - [material-ui] Revise the Accordion page (#40284) @anle9650
895
1022
  - [material-ui] Add docs for complementary Card components (#40346) @anle9650
896
- - [material-ui] Add Material 3 components page (#40350) @DiegoAndai
1023
+ - [material-ui] Add Material Design 3 components page (#40350) @DiegoAndai
897
1024
  - Fix strange italic style @oliviertassinari
898
1025
  - Fix references to ESLint @oliviertassinari
899
1026
  - Fix 301 redirections @oliviertassinari
@@ -13057,7 +13184,7 @@ Here are some highlights ✨:
13057
13184
 
13058
13185
  1. `stable` (default, formerly `esm`) which targets a snapshot (on release) of `> 0.5%, last 2 versions, Firefox ESR, not dead, not IE 11"`
13059
13186
  2. `node` (formerly default) which targets a snapshot (on release) of `maintained node versions`
13060
- 3. `legacy` (new) which is `stable` + IE11
13187
+ 3. `legacy` (new) which is `stable` + IE 11
13061
13188
  4. `modern` (formerly `es`) which targets the last 1 version of evergreen browsers and active node (currently that is 14
13062
13189
 
13063
13190
  The change yields a 6% reduction in bundle size 📦 (Babel only).
package/Grid/Grid.js CHANGED
@@ -28,6 +28,9 @@ import gridClasses, { getGridUtilityClass } from './gridClasses';
28
28
  import { jsx as _jsx } from "react/jsx-runtime";
29
29
  function getOffset(val) {
30
30
  const parse = parseFloat(val);
31
+ if (Number.isNaN(parse)) {
32
+ return val;
33
+ }
31
34
  return `${parse}${String(val).replace(String(parse), '') || 'px'}`;
32
35
  }
33
36
  export function generateGrid({
@@ -25,8 +25,6 @@ export interface RadioGroupProps extends Omit<FormGroupProps, 'onChange'> {
25
25
  value?: any;
26
26
  }
27
27
 
28
- export type RadioGroupClassKey = keyof NonNullable<RadioGroupProps['classes']>;
29
-
30
28
  /**
31
29
  *
32
30
  * Demos:
@@ -2,21 +2,36 @@
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 = ["actions", "children", "defaultValue", "name", "onChange", "value"];
5
+ const _excluded = ["actions", "children", "className", "defaultValue", "name", "onChange", "value"];
6
6
  import * as React from 'react';
7
7
  import PropTypes from 'prop-types';
8
+ import clsx from 'clsx';
9
+ import composeClasses from '@mui/utils/composeClasses';
8
10
  import FormGroup from '../FormGroup';
11
+ import { getRadioGroupUtilityClass } from './radioGroupClasses';
9
12
  import useForkRef from '../utils/useForkRef';
10
13
  import useControlled from '../utils/useControlled';
11
14
  import RadioGroupContext from './RadioGroupContext';
12
15
  import useId from '../utils/useId';
13
16
  import { jsx as _jsx } from "react/jsx-runtime";
17
+ const useUtilityClasses = props => {
18
+ const {
19
+ classes,
20
+ row,
21
+ error
22
+ } = props;
23
+ const slots = {
24
+ root: ['root', row && 'row', error && 'error']
25
+ };
26
+ return composeClasses(slots, getRadioGroupUtilityClass, classes);
27
+ };
14
28
  const RadioGroup = /*#__PURE__*/React.forwardRef(function RadioGroup(props, ref) {
15
29
  const {
16
30
  // private
17
31
  // eslint-disable-next-line react/prop-types
18
32
  actions,
19
33
  children,
34
+ className,
20
35
  defaultValue,
21
36
  name: nameProp,
22
37
  onChange,
@@ -24,6 +39,7 @@ const RadioGroup = /*#__PURE__*/React.forwardRef(function RadioGroup(props, ref)
24
39
  } = props,
25
40
  other = _objectWithoutPropertiesLoose(props, _excluded);
26
41
  const rootRef = React.useRef(null);
42
+ const classes = useUtilityClasses(props);
27
43
  const [value, setValueState] = useControlled({
28
44
  controlled: valueProp,
29
45
  default: defaultValue,
@@ -56,7 +72,8 @@ const RadioGroup = /*#__PURE__*/React.forwardRef(function RadioGroup(props, ref)
56
72
  value: contextValue,
57
73
  children: /*#__PURE__*/_jsx(FormGroup, _extends({
58
74
  role: "radiogroup",
59
- ref: handleRef
75
+ ref: handleRef,
76
+ className: clsx(classes.root, className)
60
77
  }, other, {
61
78
  children: children
62
79
  }))
@@ -71,6 +88,10 @@ process.env.NODE_ENV !== "production" ? RadioGroup.propTypes /* remove-proptypes
71
88
  * The content of the component.
72
89
  */
73
90
  children: PropTypes.node,
91
+ /**
92
+ * @ignore
93
+ */
94
+ className: PropTypes.string,
74
95
  /**
75
96
  * The default value. Use when the component is not controlled.
76
97
  */
@@ -2,3 +2,6 @@ export { default } from './RadioGroup';
2
2
  export * from './RadioGroup';
3
3
 
4
4
  export { default as useRadioGroup, RadioGroupState } from './useRadioGroup';
5
+
6
+ export { default as radioGroupClasses } from './radioGroupClasses';
7
+ export * from './radioGroupClasses';
@@ -1,4 +1,6 @@
1
1
  'use client';
2
2
 
3
3
  export { default } from './RadioGroup';
4
- export { default as useRadioGroup } from './useRadioGroup';
4
+ export { default as useRadioGroup } from './useRadioGroup';
5
+ export { default as radioGroupClasses } from './radioGroupClasses';
6
+ export * from './radioGroupClasses';
@@ -0,0 +1,6 @@
1
+ import { FormGroupClasses } from '../FormGroup';
2
+ export type RadioGroupClassKey = keyof FormGroupClasses;
3
+ export type RadioGroupClasses = FormGroupClasses;
4
+ export declare function getRadioGroupUtilityClass(slot: string): string;
5
+ declare const radioGroupClasses: RadioGroupClasses;
6
+ export default radioGroupClasses;
@@ -0,0 +1,7 @@
1
+ import generateUtilityClasses from '@mui/utils/generateUtilityClasses';
2
+ import generateUtilityClass from '@mui/utils/generateUtilityClass';
3
+ export function getRadioGroupUtilityClass(slot) {
4
+ return generateUtilityClass('MuiRadioGroup', slot);
5
+ }
6
+ const radioGroupClasses = generateUtilityClasses('MuiRadioGroup', ['root', 'row', 'error']);
7
+ export default radioGroupClasses;
package/Slider/Slider.js CHANGED
@@ -279,27 +279,7 @@ export const SliderThumb = styled('span', {
279
279
  boxShadow: 'none'
280
280
  }
281
281
  },
282
- variants: [...Object.keys((theme.vars ?? theme).palette).filter(key => (theme.vars ?? theme).palette[key].main).map(color => ({
283
- props: {
284
- color
285
- },
286
- style: {
287
- [`&:hover, &.${sliderClasses.focusVisible}`]: _extends({}, theme.vars ? {
288
- boxShadow: `0px 0px 0px 8px rgba(${theme.vars.palette[color].mainChannel} / 0.16)`
289
- } : {
290
- boxShadow: `0px 0px 0px 8px ${alpha(theme.palette[color].main, 0.16)}`
291
- }, {
292
- '@media (hover: none)': {
293
- boxShadow: 'none'
294
- }
295
- }),
296
- [`&.${sliderClasses.active}`]: _extends({}, theme.vars ? {
297
- boxShadow: `0px 0px 0px 14px rgba(${theme.vars.palette[color].mainChannel} / 0.16)}`
298
- } : {
299
- boxShadow: `0px 0px 0px 14px ${alpha(theme.palette[color].main, 0.16)}`
300
- })
301
- }
302
- })), {
282
+ variants: [{
303
283
  props: {
304
284
  size: 'small'
305
285
  },
@@ -326,7 +306,27 @@ export const SliderThumb = styled('span', {
326
306
  left: '50%',
327
307
  transform: 'translate(-50%, 50%)'
328
308
  }
329
- }]
309
+ }, ...Object.keys((theme.vars ?? theme).palette).filter(key => (theme.vars ?? theme).palette[key].main).map(color => ({
310
+ props: {
311
+ color
312
+ },
313
+ style: {
314
+ [`&:hover, &.${sliderClasses.focusVisible}`]: _extends({}, theme.vars ? {
315
+ boxShadow: `0px 0px 0px 8px rgba(${theme.vars.palette[color].mainChannel} / 0.16)`
316
+ } : {
317
+ boxShadow: `0px 0px 0px 8px ${alpha(theme.palette[color].main, 0.16)}`
318
+ }, {
319
+ '@media (hover: none)': {
320
+ boxShadow: 'none'
321
+ }
322
+ }),
323
+ [`&.${sliderClasses.active}`]: _extends({}, theme.vars ? {
324
+ boxShadow: `0px 0px 0px 14px rgba(${theme.vars.palette[color].mainChannel} / 0.16)}`
325
+ } : {
326
+ boxShadow: `0px 0px 0px 14px ${alpha(theme.palette[color].main, 0.16)}`
327
+ })
328
+ }
329
+ }))]
330
330
  }));
331
331
  export const SliderValueLabel = styled(BaseSliderValueLabel, {
332
332
  name: 'MuiSlider',