@mui/material 6.1.10 → 6.2.0

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.
package/Box/Box.d.ts CHANGED
@@ -18,6 +18,8 @@ declare const Box: OverridableComponent<BoxTypeMap<{}, 'div', MaterialTheme>>;
18
18
  export type BoxProps<
19
19
  RootComponent extends React.ElementType = BoxTypeMap['defaultComponent'],
20
20
  AdditionalProps = {},
21
- > = OverrideProps<BoxTypeMap<AdditionalProps, RootComponent, MaterialTheme>, RootComponent>;
21
+ > = OverrideProps<BoxTypeMap<AdditionalProps, RootComponent, MaterialTheme>, RootComponent> & {
22
+ component?: React.ElementType;
23
+ };
22
24
 
23
25
  export default Box;
package/CHANGELOG.md CHANGED
@@ -1,12 +1,47 @@
1
1
  # [Versions](https://mui.com/versions/)
2
2
 
3
+ ## 6.2.0
4
+
5
+ <!-- generated comparing v6.1.10..master -->
6
+
7
+ _Dec 10, 2024_
8
+
9
+ A big thanks to the 9 contributors who made this release possible. Here are some highlights ✨:
10
+
11
+ - Material UI is now compatible with React 19 (#44672) @DiegoAndai
12
+ - Fixed incorrect `aria-orientation` for vertical sliders. <kbd>ArrowRight</kbd> now increases the value and <kbd>ArrowLeft</kbd> decreases the value in vertical sliders; they were reversed in prior versions. (#44537) @mj12albert
13
+
14
+ ### `@mui/material@6.2.0`
15
+
16
+ - [Box] Add missing `component` to `BoxProps` type (#44643) @DiegoAndai
17
+ - [Grid] Fix spacing when using css variables (#44663) @DiegoAndai
18
+ - [ListItemText] Add `slots` and `slotProps` (#44571) @sai6855
19
+
20
+ ### Docs
21
+
22
+ - Add Toolpad Core template link (#44415) @bharatkashyap
23
+
24
+ ### Core
25
+
26
+ - [docs-infra] Allow custom annotations (#44707) @vladmoroz
27
+ - [Box] Fix `component` prop test (#44651) @DiegoAndai
28
+ - React 19 useRef cleanup (#44704) @DiegoAndai
29
+ - Remove obselete lerna options (#44676) @ZeeshanTamboli
30
+ - Fix Regular Expression Denial of Service (ReDoS) vulnerabilities (#44627) @SuperMaxine
31
+ - Fix number of contributors (#44650) @aarongarciah
32
+ - [docs-infra] Add support for data attributes in the API generation (#44709) @mnajdova
33
+ - [docs-infra] Fix RTL dark mode (#41803) @alexfauquette
34
+ - [Grid] Remove deeply nested imports (#43605) @Janpot
35
+
36
+ All contributors of this release in alphabetical order: @aarongarciah, @alexfauquette, @bharatkashyap, @DiegoAndai, @Janpot, @mj12albert, @mnajdova, @sai6855, @SuperMaxine, @vladmoroz, @ZeeshanTamboli
37
+
3
38
  ## 6.1.10
4
39
 
5
40
  <!-- generated comparing v6.1.9..master -->
6
41
 
7
42
  _Dec 3, 2024_
8
43
 
9
- A big thanks to the 10 contributors who made this release possible.
44
+ A big thanks to the 11 contributors who made this release possible.
10
45
 
11
46
  ### `@mui/material@6.1.10`
12
47
 
@@ -45,7 +80,7 @@ A big thanks to the 10 contributors who made this release possible.
45
80
  - [docs-infra] Fix TOC RTL padding regression (#44535) @oliviertassinari
46
81
  - [test-utils] Remove leftover React.ReactElement<any> from describeConformance.tsx (#44639) @sai6855
47
82
 
48
- All contributors of this release in alphabetical order: @albarv340, @arishoham, @DiegoAndai, @joserodolfofreitas, @MBilalShafi, @mnajdova, @oliviertassinari, @renovate[bot], @sai6855, @samuelsycamore, @siriwatknp, @ZeeshanTamboli
83
+ All contributors of this release in alphabetical order: @albarv340, @arishoham, @DiegoAndai, @joserodolfofreitas, @MBilalShafi, @mnajdova, @oliviertassinari, @sai6855, @samuelsycamore, @siriwatknp, @ZeeshanTamboli
49
84
 
50
85
  ## 6.1.9
51
86
 
package/Grid/Grid.js CHANGED
@@ -167,7 +167,7 @@ export function generateRowGap({
167
167
  const themeSpacing = theme.spacing(propValue);
168
168
  if (themeSpacing !== '0px') {
169
169
  return {
170
- marginTop: `-${themeSpacing}`,
170
+ marginTop: `calc(-1 * ${themeSpacing})`,
171
171
  [`& > .${gridClasses.item}`]: {
172
172
  paddingTop: themeSpacing
173
173
  }
@@ -212,7 +212,7 @@ export function generateColumnGap({
212
212
  }, columnSpacingValues, (propValue, breakpoint) => {
213
213
  const themeSpacing = theme.spacing(propValue);
214
214
  if (themeSpacing !== '0px') {
215
- const negativeValue = `-${themeSpacing}`;
215
+ const negativeValue = `calc(-1 * ${themeSpacing})`;
216
216
  return {
217
217
  width: `calc(100% + ${themeSpacing})`,
218
218
  marginLeft: negativeValue,
@@ -3,11 +3,44 @@ import { SxProps } from '@mui/system';
3
3
  import { InternalStandardProps as StandardProps, Theme } from '..';
4
4
  import { TypographyProps } from '../Typography';
5
5
  import { ListItemTextClasses } from './listItemTextClasses';
6
+ import { CreateSlotsAndSlotProps, SlotProps } from '../utils/types';
7
+
8
+ export interface ListItemTextSlots {
9
+ /**
10
+ * The component that renders the primary slot.
11
+ * @default Typography
12
+ */
13
+ primary?: React.ElementType;
14
+ /**
15
+ * The component that renders the secondary slot.
16
+ * @default Typography
17
+ */
18
+ secondary?: React.ElementType;
19
+ }
20
+
21
+ export type ListItemTextSlotsAndSlotProps = CreateSlotsAndSlotProps<
22
+ ListItemTextSlots,
23
+ {
24
+ /**
25
+ * Props forwared to the primary slot (as long as disableTypography is not `true`)
26
+ * By default, the available props are based on the [Typography](https://mui.com/material-ui/api/typography/#props) component
27
+ */
28
+ primary: SlotProps<React.ElementType<TypographyProps>, {}, ListItemTextOwnerState>;
29
+ /**
30
+ * Props forwarded to the secondary slot (as long as disableTypography is not `true`)
31
+ * By default, the available props are based on the [Typography](https://mui.com/material-ui/api/typography/#props) component
32
+ */
33
+ secondary: SlotProps<React.ElementType<TypographyProps>, {}, ListItemTextOwnerState>;
34
+ }
35
+ >;
36
+
37
+ export interface ListItemTextOwnerState extends ListItemTextProps {}
6
38
 
7
39
  export interface ListItemTextProps<
8
40
  PrimaryTypographyComponent extends React.ElementType = 'span',
9
41
  SecondaryTypographyComponent extends React.ElementType = 'p',
10
- > extends StandardProps<React.HTMLAttributes<HTMLDivElement>> {
42
+ > extends StandardProps<React.HTMLAttributes<HTMLDivElement>>,
43
+ ListItemTextSlotsAndSlotProps {
11
44
  /**
12
45
  * Alias for the `primary` prop.
13
46
  */
@@ -37,6 +70,7 @@ export interface ListItemTextProps<
37
70
  /**
38
71
  * These props will be forwarded to the primary typography component
39
72
  * (as long as disableTypography is not `true`).
73
+ * @deprecated Use `slotProps.primary` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
40
74
  */
41
75
  primaryTypographyProps?: TypographyProps<
42
76
  PrimaryTypographyComponent,
@@ -49,6 +83,7 @@ export interface ListItemTextProps<
49
83
  /**
50
84
  * These props will be forwarded to the secondary typography component
51
85
  * (as long as disableTypography is not `true`).
86
+ * @deprecated Use `slotProps.secondary` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
52
87
  */
53
88
  secondaryTypographyProps?: TypographyProps<
54
89
  SecondaryTypographyComponent,
@@ -9,6 +9,7 @@ import ListContext from "../List/ListContext.js";
9
9
  import { styled } from "../zero-styled/index.js";
10
10
  import { useDefaultProps } from "../DefaultPropsProvider/index.js";
11
11
  import listItemTextClasses, { getListItemTextUtilityClass } from "./listItemTextClasses.js";
12
+ import useSlot from "../utils/useSlot.js";
12
13
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
14
  const useUtilityClasses = ownerState => {
14
15
  const {
@@ -80,6 +81,8 @@ const ListItemText = /*#__PURE__*/React.forwardRef(function ListItemText(inProps
80
81
  primaryTypographyProps,
81
82
  secondary: secondaryProp,
82
83
  secondaryTypographyProps,
84
+ slots = {},
85
+ slotProps = {},
83
86
  ...other
84
87
  } = props;
85
88
  const {
@@ -96,21 +99,39 @@ const ListItemText = /*#__PURE__*/React.forwardRef(function ListItemText(inProps
96
99
  dense
97
100
  };
98
101
  const classes = useUtilityClasses(ownerState);
102
+ const externalForwardedProps = {
103
+ slots,
104
+ slotProps: {
105
+ primary: primaryTypographyProps,
106
+ secondary: secondaryTypographyProps,
107
+ ...slotProps
108
+ }
109
+ };
110
+ const [PrimarySlot, primarySlotProps] = useSlot('primary', {
111
+ className: classes.primary,
112
+ elementType: Typography,
113
+ externalForwardedProps,
114
+ ownerState
115
+ });
116
+ const [SecondarySlot, secondarySlotProps] = useSlot('secondary', {
117
+ className: classes.secondary,
118
+ elementType: Typography,
119
+ externalForwardedProps,
120
+ ownerState
121
+ });
99
122
  if (primary != null && primary.type !== Typography && !disableTypography) {
100
- primary = /*#__PURE__*/_jsx(Typography, {
123
+ primary = /*#__PURE__*/_jsx(PrimarySlot, {
101
124
  variant: dense ? 'body2' : 'body1',
102
- className: classes.primary,
103
- component: primaryTypographyProps?.variant ? undefined : 'span',
104
- ...primaryTypographyProps,
125
+ component: primarySlotProps?.variant ? undefined : 'span',
126
+ ...primarySlotProps,
105
127
  children: primary
106
128
  });
107
129
  }
108
130
  if (secondary != null && secondary.type !== Typography && !disableTypography) {
109
- secondary = /*#__PURE__*/_jsx(Typography, {
131
+ secondary = /*#__PURE__*/_jsx(SecondarySlot, {
110
132
  variant: "body2",
111
- className: classes.secondary,
112
133
  color: "textSecondary",
113
- ...secondaryTypographyProps,
134
+ ...secondarySlotProps,
114
135
  children: secondary
115
136
  });
116
137
  }
@@ -160,6 +181,7 @@ process.env.NODE_ENV !== "production" ? ListItemText.propTypes /* remove-proptyp
160
181
  /**
161
182
  * These props will be forwarded to the primary typography component
162
183
  * (as long as disableTypography is not `true`).
184
+ * @deprecated Use `slotProps.primary` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
163
185
  */
164
186
  primaryTypographyProps: PropTypes.object,
165
187
  /**
@@ -169,8 +191,25 @@ process.env.NODE_ENV !== "production" ? ListItemText.propTypes /* remove-proptyp
169
191
  /**
170
192
  * These props will be forwarded to the secondary typography component
171
193
  * (as long as disableTypography is not `true`).
194
+ * @deprecated Use `slotProps.secondary` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
172
195
  */
173
196
  secondaryTypographyProps: PropTypes.object,
197
+ /**
198
+ * The props used for each slot inside.
199
+ * @default {}
200
+ */
201
+ slotProps: PropTypes.shape({
202
+ primary: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),
203
+ secondary: PropTypes.oneOfType([PropTypes.func, PropTypes.object])
204
+ }),
205
+ /**
206
+ * The components used for each slot inside.
207
+ * @default {}
208
+ */
209
+ slots: PropTypes.shape({
210
+ primary: PropTypes.elementType,
211
+ secondary: PropTypes.elementType
212
+ }),
174
213
  /**
175
214
  * The system prop that allows defining system overrides as well as additional CSS styles.
176
215
  */
@@ -5,7 +5,7 @@ import PropTypes from 'prop-types';
5
5
  import Grid from '@mui/material-pigment-css/Grid';
6
6
  import composeClasses from '@mui/utils/composeClasses';
7
7
  import generateUtilityClass from '@mui/utils/generateUtilityClass';
8
- import { generateDirectionClasses, generateSizeClassNames, generateSpacingClassNames } from '@mui/system/Grid/gridGenerator';
8
+ import { unstable_generateDirectionClasses as generateDirectionClasses, unstable_generateSizeClassNames as generateSizeClassNames, unstable_generateSpacingClassNames as generateSpacingClassNames } from '@mui/system/Grid';
9
9
  import { jsx as _jsx } from "react/jsx-runtime";
10
10
  const useUtilityClasses = ownerState => {
11
11
  const {
@@ -5,6 +5,9 @@ import { unstable_ownerDocument as ownerDocument, unstable_useControlled as useC
5
5
  import extractEventHandlers from '@mui/utils/extractEventHandlers';
6
6
  import areArraysEqual from "../utils/areArraysEqual.js";
7
7
  const INTENTIONAL_DRAG_COUNT_THRESHOLD = 2;
8
+ function getNewValue(currentValue, step, direction, min, max) {
9
+ return direction === 1 ? Math.min(currentValue + step, max) : Math.max(currentValue - step, min);
10
+ }
8
11
  function asc(a, b) {
9
12
  return a - b;
10
13
  }
@@ -280,20 +283,65 @@ export function useSlider(parameters) {
280
283
  }
281
284
  };
282
285
  const createHandleHiddenInputKeyDown = otherHandlers => event => {
283
- // The Shift + Up/Down keyboard shortcuts for moving the slider makes sense to be supported
284
- // only if the step is defined. If the step is null, this means tha the marks are used for specifying the valid values.
285
- if (step !== null) {
286
+ if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'PageUp', 'PageDown', 'Home', 'End'].includes(event.key)) {
287
+ event.preventDefault();
286
288
  const index = Number(event.currentTarget.getAttribute('data-index'));
287
289
  const value = values[index];
288
290
  let newValue = null;
289
- if ((event.key === 'ArrowLeft' || event.key === 'ArrowDown') && event.shiftKey || event.key === 'PageDown') {
290
- newValue = Math.max(value - shiftStep, min);
291
- } else if ((event.key === 'ArrowRight' || event.key === 'ArrowUp') && event.shiftKey || event.key === 'PageUp') {
292
- newValue = Math.min(value + shiftStep, max);
291
+ // Keys actions that change the value by more than the most granular `step`
292
+ // value are only applied if the step not `null`.
293
+ // When step is `null`, the `marks` prop is used instead to define valid values.
294
+ if (step != null) {
295
+ const stepSize = event.shiftKey ? shiftStep : step;
296
+ switch (event.key) {
297
+ case 'ArrowUp':
298
+ newValue = getNewValue(value, stepSize, 1, min, max);
299
+ break;
300
+ case 'ArrowRight':
301
+ newValue = getNewValue(value, stepSize, isRtl ? -1 : 1, min, max);
302
+ break;
303
+ case 'ArrowDown':
304
+ newValue = getNewValue(value, stepSize, -1, min, max);
305
+ break;
306
+ case 'ArrowLeft':
307
+ newValue = getNewValue(value, stepSize, isRtl ? 1 : -1, min, max);
308
+ break;
309
+ case 'PageUp':
310
+ newValue = getNewValue(value, shiftStep, 1, min, max);
311
+ break;
312
+ case 'PageDown':
313
+ newValue = getNewValue(value, shiftStep, -1, min, max);
314
+ break;
315
+ case 'Home':
316
+ newValue = min;
317
+ break;
318
+ case 'End':
319
+ newValue = max;
320
+ break;
321
+ default:
322
+ break;
323
+ }
324
+ } else if (marks) {
325
+ const maxMarksValue = marksValues[marksValues.length - 1];
326
+ const currentMarkIndex = marksValues.indexOf(value);
327
+ const decrementKeys = [isRtl ? 'ArrowRight' : 'ArrowLeft', 'ArrowDown', 'PageDown', 'Home'];
328
+ const incrementKeys = [isRtl ? 'ArrowLeft' : 'ArrowRight', 'ArrowUp', 'PageUp', 'End'];
329
+ if (decrementKeys.includes(event.key)) {
330
+ if (currentMarkIndex === 0) {
331
+ newValue = marksValues[0];
332
+ } else {
333
+ newValue = marksValues[currentMarkIndex - 1];
334
+ }
335
+ } else if (incrementKeys.includes(event.key)) {
336
+ if (currentMarkIndex === marksValues.length - 1) {
337
+ newValue = maxMarksValue;
338
+ } else {
339
+ newValue = marksValues[currentMarkIndex + 1];
340
+ }
341
+ }
293
342
  }
294
- if (newValue !== null) {
343
+ if (newValue != null) {
295
344
  changeValue(event, newValue);
296
- event.preventDefault();
297
345
  }
298
346
  }
299
347
  otherHandlers?.onKeyDown?.(event);
@@ -315,6 +363,7 @@ export function useSlider(parameters) {
315
363
  }
316
364
  const createHandleHiddenInputChange = otherHandlers => event => {
317
365
  otherHandlers.onChange?.(event);
366
+ // this handles value change by Pointer or Touch events
318
367
  // @ts-ignore
319
368
  changeValue(event, event.target.valueAsNumber);
320
369
  };
@@ -591,6 +640,10 @@ export function useSlider(parameters) {
591
640
  pointerEvents: active !== -1 && active !== index ? 'none' : undefined
592
641
  };
593
642
  };
643
+ let cssWritingMode;
644
+ if (orientation === 'vertical') {
645
+ cssWritingMode = isRtl ? 'vertical-rl' : 'vertical-lr';
646
+ }
594
647
  const getHiddenInputProps = (externalProps = {}) => {
595
648
  const externalHandlers = extractEventHandlers(externalProps);
596
649
  const ownEventHandlers = {
@@ -622,7 +675,8 @@ export function useSlider(parameters) {
622
675
  direction: isRtl ? 'rtl' : 'ltr',
623
676
  // So that VoiceOver's focus indicator matches the thumb's dimensions
624
677
  width: '100%',
625
- height: '100%'
678
+ height: '100%',
679
+ writingMode: cssWritingMode
626
680
  }
627
681
  };
628
682
  };
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/material v6.1.10
2
+ * @mui/material v6.2.0
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -167,7 +167,7 @@ export function generateRowGap({
167
167
  const themeSpacing = theme.spacing(propValue);
168
168
  if (themeSpacing !== '0px') {
169
169
  return {
170
- marginTop: `-${themeSpacing}`,
170
+ marginTop: `calc(-1 * ${themeSpacing})`,
171
171
  [`& > .${gridClasses.item}`]: {
172
172
  paddingTop: themeSpacing
173
173
  }
@@ -212,7 +212,7 @@ export function generateColumnGap({
212
212
  }, columnSpacingValues, (propValue, breakpoint) => {
213
213
  const themeSpacing = theme.spacing(propValue);
214
214
  if (themeSpacing !== '0px') {
215
- const negativeValue = `-${themeSpacing}`;
215
+ const negativeValue = `calc(-1 * ${themeSpacing})`;
216
216
  return {
217
217
  width: `calc(100% + ${themeSpacing})`,
218
218
  marginLeft: negativeValue,
@@ -9,6 +9,7 @@ import ListContext from "../List/ListContext.js";
9
9
  import { styled } from "../zero-styled/index.js";
10
10
  import { useDefaultProps } from "../DefaultPropsProvider/index.js";
11
11
  import listItemTextClasses, { getListItemTextUtilityClass } from "./listItemTextClasses.js";
12
+ import useSlot from "../utils/useSlot.js";
12
13
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
14
  const useUtilityClasses = ownerState => {
14
15
  const {
@@ -80,6 +81,8 @@ const ListItemText = /*#__PURE__*/React.forwardRef(function ListItemText(inProps
80
81
  primaryTypographyProps,
81
82
  secondary: secondaryProp,
82
83
  secondaryTypographyProps,
84
+ slots = {},
85
+ slotProps = {},
83
86
  ...other
84
87
  } = props;
85
88
  const {
@@ -96,21 +99,39 @@ const ListItemText = /*#__PURE__*/React.forwardRef(function ListItemText(inProps
96
99
  dense
97
100
  };
98
101
  const classes = useUtilityClasses(ownerState);
102
+ const externalForwardedProps = {
103
+ slots,
104
+ slotProps: {
105
+ primary: primaryTypographyProps,
106
+ secondary: secondaryTypographyProps,
107
+ ...slotProps
108
+ }
109
+ };
110
+ const [PrimarySlot, primarySlotProps] = useSlot('primary', {
111
+ className: classes.primary,
112
+ elementType: Typography,
113
+ externalForwardedProps,
114
+ ownerState
115
+ });
116
+ const [SecondarySlot, secondarySlotProps] = useSlot('secondary', {
117
+ className: classes.secondary,
118
+ elementType: Typography,
119
+ externalForwardedProps,
120
+ ownerState
121
+ });
99
122
  if (primary != null && primary.type !== Typography && !disableTypography) {
100
- primary = /*#__PURE__*/_jsx(Typography, {
123
+ primary = /*#__PURE__*/_jsx(PrimarySlot, {
101
124
  variant: dense ? 'body2' : 'body1',
102
- className: classes.primary,
103
- component: primaryTypographyProps?.variant ? undefined : 'span',
104
- ...primaryTypographyProps,
125
+ component: primarySlotProps?.variant ? undefined : 'span',
126
+ ...primarySlotProps,
105
127
  children: primary
106
128
  });
107
129
  }
108
130
  if (secondary != null && secondary.type !== Typography && !disableTypography) {
109
- secondary = /*#__PURE__*/_jsx(Typography, {
131
+ secondary = /*#__PURE__*/_jsx(SecondarySlot, {
110
132
  variant: "body2",
111
- className: classes.secondary,
112
133
  color: "textSecondary",
113
- ...secondaryTypographyProps,
134
+ ...secondarySlotProps,
114
135
  children: secondary
115
136
  });
116
137
  }
@@ -160,6 +181,7 @@ process.env.NODE_ENV !== "production" ? ListItemText.propTypes /* remove-proptyp
160
181
  /**
161
182
  * These props will be forwarded to the primary typography component
162
183
  * (as long as disableTypography is not `true`).
184
+ * @deprecated Use `slotProps.primary` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
163
185
  */
164
186
  primaryTypographyProps: PropTypes.object,
165
187
  /**
@@ -169,8 +191,25 @@ process.env.NODE_ENV !== "production" ? ListItemText.propTypes /* remove-proptyp
169
191
  /**
170
192
  * These props will be forwarded to the secondary typography component
171
193
  * (as long as disableTypography is not `true`).
194
+ * @deprecated Use `slotProps.secondary` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
172
195
  */
173
196
  secondaryTypographyProps: PropTypes.object,
197
+ /**
198
+ * The props used for each slot inside.
199
+ * @default {}
200
+ */
201
+ slotProps: PropTypes.shape({
202
+ primary: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),
203
+ secondary: PropTypes.oneOfType([PropTypes.func, PropTypes.object])
204
+ }),
205
+ /**
206
+ * The components used for each slot inside.
207
+ * @default {}
208
+ */
209
+ slots: PropTypes.shape({
210
+ primary: PropTypes.elementType,
211
+ secondary: PropTypes.elementType
212
+ }),
174
213
  /**
175
214
  * The system prop that allows defining system overrides as well as additional CSS styles.
176
215
  */
@@ -5,7 +5,7 @@ import PropTypes from 'prop-types';
5
5
  import Grid from '@mui/material-pigment-css/Grid';
6
6
  import composeClasses from '@mui/utils/composeClasses';
7
7
  import generateUtilityClass from '@mui/utils/generateUtilityClass';
8
- import { generateDirectionClasses, generateSizeClassNames, generateSpacingClassNames } from '@mui/system/Grid/gridGenerator';
8
+ import { unstable_generateDirectionClasses as generateDirectionClasses, unstable_generateSizeClassNames as generateSizeClassNames, unstable_generateSpacingClassNames as generateSpacingClassNames } from '@mui/system/Grid';
9
9
  import { jsx as _jsx } from "react/jsx-runtime";
10
10
  const useUtilityClasses = ownerState => {
11
11
  const {
@@ -5,6 +5,9 @@ import { unstable_ownerDocument as ownerDocument, unstable_useControlled as useC
5
5
  import extractEventHandlers from '@mui/utils/extractEventHandlers';
6
6
  import areArraysEqual from "../utils/areArraysEqual.js";
7
7
  const INTENTIONAL_DRAG_COUNT_THRESHOLD = 2;
8
+ function getNewValue(currentValue, step, direction, min, max) {
9
+ return direction === 1 ? Math.min(currentValue + step, max) : Math.max(currentValue - step, min);
10
+ }
8
11
  function asc(a, b) {
9
12
  return a - b;
10
13
  }
@@ -280,20 +283,65 @@ export function useSlider(parameters) {
280
283
  }
281
284
  };
282
285
  const createHandleHiddenInputKeyDown = otherHandlers => event => {
283
- // The Shift + Up/Down keyboard shortcuts for moving the slider makes sense to be supported
284
- // only if the step is defined. If the step is null, this means tha the marks are used for specifying the valid values.
285
- if (step !== null) {
286
+ if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'PageUp', 'PageDown', 'Home', 'End'].includes(event.key)) {
287
+ event.preventDefault();
286
288
  const index = Number(event.currentTarget.getAttribute('data-index'));
287
289
  const value = values[index];
288
290
  let newValue = null;
289
- if ((event.key === 'ArrowLeft' || event.key === 'ArrowDown') && event.shiftKey || event.key === 'PageDown') {
290
- newValue = Math.max(value - shiftStep, min);
291
- } else if ((event.key === 'ArrowRight' || event.key === 'ArrowUp') && event.shiftKey || event.key === 'PageUp') {
292
- newValue = Math.min(value + shiftStep, max);
291
+ // Keys actions that change the value by more than the most granular `step`
292
+ // value are only applied if the step not `null`.
293
+ // When step is `null`, the `marks` prop is used instead to define valid values.
294
+ if (step != null) {
295
+ const stepSize = event.shiftKey ? shiftStep : step;
296
+ switch (event.key) {
297
+ case 'ArrowUp':
298
+ newValue = getNewValue(value, stepSize, 1, min, max);
299
+ break;
300
+ case 'ArrowRight':
301
+ newValue = getNewValue(value, stepSize, isRtl ? -1 : 1, min, max);
302
+ break;
303
+ case 'ArrowDown':
304
+ newValue = getNewValue(value, stepSize, -1, min, max);
305
+ break;
306
+ case 'ArrowLeft':
307
+ newValue = getNewValue(value, stepSize, isRtl ? 1 : -1, min, max);
308
+ break;
309
+ case 'PageUp':
310
+ newValue = getNewValue(value, shiftStep, 1, min, max);
311
+ break;
312
+ case 'PageDown':
313
+ newValue = getNewValue(value, shiftStep, -1, min, max);
314
+ break;
315
+ case 'Home':
316
+ newValue = min;
317
+ break;
318
+ case 'End':
319
+ newValue = max;
320
+ break;
321
+ default:
322
+ break;
323
+ }
324
+ } else if (marks) {
325
+ const maxMarksValue = marksValues[marksValues.length - 1];
326
+ const currentMarkIndex = marksValues.indexOf(value);
327
+ const decrementKeys = [isRtl ? 'ArrowRight' : 'ArrowLeft', 'ArrowDown', 'PageDown', 'Home'];
328
+ const incrementKeys = [isRtl ? 'ArrowLeft' : 'ArrowRight', 'ArrowUp', 'PageUp', 'End'];
329
+ if (decrementKeys.includes(event.key)) {
330
+ if (currentMarkIndex === 0) {
331
+ newValue = marksValues[0];
332
+ } else {
333
+ newValue = marksValues[currentMarkIndex - 1];
334
+ }
335
+ } else if (incrementKeys.includes(event.key)) {
336
+ if (currentMarkIndex === marksValues.length - 1) {
337
+ newValue = maxMarksValue;
338
+ } else {
339
+ newValue = marksValues[currentMarkIndex + 1];
340
+ }
341
+ }
293
342
  }
294
- if (newValue !== null) {
343
+ if (newValue != null) {
295
344
  changeValue(event, newValue);
296
- event.preventDefault();
297
345
  }
298
346
  }
299
347
  otherHandlers?.onKeyDown?.(event);
@@ -315,6 +363,7 @@ export function useSlider(parameters) {
315
363
  }
316
364
  const createHandleHiddenInputChange = otherHandlers => event => {
317
365
  otherHandlers.onChange?.(event);
366
+ // this handles value change by Pointer or Touch events
318
367
  // @ts-ignore
319
368
  changeValue(event, event.target.valueAsNumber);
320
369
  };
@@ -591,6 +640,10 @@ export function useSlider(parameters) {
591
640
  pointerEvents: active !== -1 && active !== index ? 'none' : undefined
592
641
  };
593
642
  };
643
+ let cssWritingMode;
644
+ if (orientation === 'vertical') {
645
+ cssWritingMode = isRtl ? 'vertical-rl' : 'vertical-lr';
646
+ }
594
647
  const getHiddenInputProps = (externalProps = {}) => {
595
648
  const externalHandlers = extractEventHandlers(externalProps);
596
649
  const ownEventHandlers = {
@@ -622,7 +675,8 @@ export function useSlider(parameters) {
622
675
  direction: isRtl ? 'rtl' : 'ltr',
623
676
  // So that VoiceOver's focus indicator matches the thumb's dimensions
624
677
  width: '100%',
625
- height: '100%'
678
+ height: '100%',
679
+ writingMode: cssWritingMode
626
680
  }
627
681
  };
628
682
  };
package/modern/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/material v6.1.10
2
+ * @mui/material v6.2.0
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -1,6 +1,6 @@
1
- export const version = "6.1.10";
1
+ export const version = "6.2.0";
2
2
  export const major = Number("6");
3
- export const minor = Number("1");
4
- export const patch = Number("10");
3
+ export const minor = Number("2");
4
+ export const patch = Number("0");
5
5
  export const prerelease = undefined;
6
6
  export default version;
package/node/Grid/Grid.js CHANGED
@@ -180,7 +180,7 @@ function generateRowGap({
180
180
  const themeSpacing = theme.spacing(propValue);
181
181
  if (themeSpacing !== '0px') {
182
182
  return {
183
- marginTop: `-${themeSpacing}`,
183
+ marginTop: `calc(-1 * ${themeSpacing})`,
184
184
  [`& > .${_gridClasses.default.item}`]: {
185
185
  paddingTop: themeSpacing
186
186
  }
@@ -225,7 +225,7 @@ function generateColumnGap({
225
225
  }, columnSpacingValues, (propValue, breakpoint) => {
226
226
  const themeSpacing = theme.spacing(propValue);
227
227
  if (themeSpacing !== '0px') {
228
- const negativeValue = `-${themeSpacing}`;
228
+ const negativeValue = `calc(-1 * ${themeSpacing})`;
229
229
  return {
230
230
  width: `calc(100% + ${themeSpacing})`,
231
231
  marginLeft: negativeValue,
@@ -16,6 +16,7 @@ var _ListContext = _interopRequireDefault(require("../List/ListContext"));
16
16
  var _zeroStyled = require("../zero-styled");
17
17
  var _DefaultPropsProvider = require("../DefaultPropsProvider");
18
18
  var _listItemTextClasses = _interopRequireWildcard(require("./listItemTextClasses"));
19
+ var _useSlot = _interopRequireDefault(require("../utils/useSlot"));
19
20
  var _jsxRuntime = require("react/jsx-runtime");
20
21
  const useUtilityClasses = ownerState => {
21
22
  const {
@@ -87,6 +88,8 @@ const ListItemText = /*#__PURE__*/React.forwardRef(function ListItemText(inProps
87
88
  primaryTypographyProps,
88
89
  secondary: secondaryProp,
89
90
  secondaryTypographyProps,
91
+ slots = {},
92
+ slotProps = {},
90
93
  ...other
91
94
  } = props;
92
95
  const {
@@ -103,21 +106,39 @@ const ListItemText = /*#__PURE__*/React.forwardRef(function ListItemText(inProps
103
106
  dense
104
107
  };
105
108
  const classes = useUtilityClasses(ownerState);
109
+ const externalForwardedProps = {
110
+ slots,
111
+ slotProps: {
112
+ primary: primaryTypographyProps,
113
+ secondary: secondaryTypographyProps,
114
+ ...slotProps
115
+ }
116
+ };
117
+ const [PrimarySlot, primarySlotProps] = (0, _useSlot.default)('primary', {
118
+ className: classes.primary,
119
+ elementType: _Typography.default,
120
+ externalForwardedProps,
121
+ ownerState
122
+ });
123
+ const [SecondarySlot, secondarySlotProps] = (0, _useSlot.default)('secondary', {
124
+ className: classes.secondary,
125
+ elementType: _Typography.default,
126
+ externalForwardedProps,
127
+ ownerState
128
+ });
106
129
  if (primary != null && primary.type !== _Typography.default && !disableTypography) {
107
- primary = /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
130
+ primary = /*#__PURE__*/(0, _jsxRuntime.jsx)(PrimarySlot, {
108
131
  variant: dense ? 'body2' : 'body1',
109
- className: classes.primary,
110
- component: primaryTypographyProps?.variant ? undefined : 'span',
111
- ...primaryTypographyProps,
132
+ component: primarySlotProps?.variant ? undefined : 'span',
133
+ ...primarySlotProps,
112
134
  children: primary
113
135
  });
114
136
  }
115
137
  if (secondary != null && secondary.type !== _Typography.default && !disableTypography) {
116
- secondary = /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
138
+ secondary = /*#__PURE__*/(0, _jsxRuntime.jsx)(SecondarySlot, {
117
139
  variant: "body2",
118
- className: classes.secondary,
119
140
  color: "textSecondary",
120
- ...secondaryTypographyProps,
141
+ ...secondarySlotProps,
121
142
  children: secondary
122
143
  });
123
144
  }
@@ -167,6 +188,7 @@ process.env.NODE_ENV !== "production" ? ListItemText.propTypes /* remove-proptyp
167
188
  /**
168
189
  * These props will be forwarded to the primary typography component
169
190
  * (as long as disableTypography is not `true`).
191
+ * @deprecated Use `slotProps.primary` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
170
192
  */
171
193
  primaryTypographyProps: _propTypes.default.object,
172
194
  /**
@@ -176,8 +198,25 @@ process.env.NODE_ENV !== "production" ? ListItemText.propTypes /* remove-proptyp
176
198
  /**
177
199
  * These props will be forwarded to the secondary typography component
178
200
  * (as long as disableTypography is not `true`).
201
+ * @deprecated Use `slotProps.secondary` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
179
202
  */
180
203
  secondaryTypographyProps: _propTypes.default.object,
204
+ /**
205
+ * The props used for each slot inside.
206
+ * @default {}
207
+ */
208
+ slotProps: _propTypes.default.shape({
209
+ primary: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]),
210
+ secondary: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object])
211
+ }),
212
+ /**
213
+ * The components used for each slot inside.
214
+ * @default {}
215
+ */
216
+ slots: _propTypes.default.shape({
217
+ primary: _propTypes.default.elementType,
218
+ secondary: _propTypes.default.elementType
219
+ }),
181
220
  /**
182
221
  * The system prop that allows defining system overrides as well as additional CSS styles.
183
222
  */
@@ -12,7 +12,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
12
12
  var _Grid = _interopRequireDefault(require("@mui/material-pigment-css/Grid"));
13
13
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
14
14
  var _generateUtilityClass = _interopRequireDefault(require("@mui/utils/generateUtilityClass"));
15
- var _gridGenerator = require("@mui/system/Grid/gridGenerator");
15
+ var _Grid2 = require("@mui/system/Grid");
16
16
  var _jsxRuntime = require("react/jsx-runtime");
17
17
  // @ts-ignore
18
18
 
@@ -38,7 +38,7 @@ const useUtilityClasses = ownerState => {
38
38
  }
39
39
  }
40
40
  const slots = {
41
- root: ['root', container && 'container', ...(0, _gridGenerator.generateDirectionClasses)(direction), ...(0, _gridGenerator.generateSizeClassNames)(gridSize), ...(container ? (0, _gridGenerator.generateSpacingClassNames)(spacing) : [])]
41
+ root: ['root', container && 'container', ...(0, _Grid2.unstable_generateDirectionClasses)(direction), ...(0, _Grid2.unstable_generateSizeClassNames)(gridSize), ...(container ? (0, _Grid2.unstable_generateSpacingClassNames)(spacing) : [])]
42
42
  };
43
43
  return (0, _composeClasses.default)(slots, slot => (0, _generateUtilityClass.default)('MuiGrid2', slot), {});
44
44
  };
@@ -14,6 +14,9 @@ var _utils = require("@mui/utils");
14
14
  var _extractEventHandlers = _interopRequireDefault(require("@mui/utils/extractEventHandlers"));
15
15
  var _areArraysEqual = _interopRequireDefault(require("../utils/areArraysEqual"));
16
16
  const INTENTIONAL_DRAG_COUNT_THRESHOLD = 2;
17
+ function getNewValue(currentValue, step, direction, min, max) {
18
+ return direction === 1 ? Math.min(currentValue + step, max) : Math.max(currentValue - step, min);
19
+ }
17
20
  function asc(a, b) {
18
21
  return a - b;
19
22
  }
@@ -290,20 +293,65 @@ function useSlider(parameters) {
290
293
  }
291
294
  };
292
295
  const createHandleHiddenInputKeyDown = otherHandlers => event => {
293
- // The Shift + Up/Down keyboard shortcuts for moving the slider makes sense to be supported
294
- // only if the step is defined. If the step is null, this means tha the marks are used for specifying the valid values.
295
- if (step !== null) {
296
+ if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'PageUp', 'PageDown', 'Home', 'End'].includes(event.key)) {
297
+ event.preventDefault();
296
298
  const index = Number(event.currentTarget.getAttribute('data-index'));
297
299
  const value = values[index];
298
300
  let newValue = null;
299
- if ((event.key === 'ArrowLeft' || event.key === 'ArrowDown') && event.shiftKey || event.key === 'PageDown') {
300
- newValue = Math.max(value - shiftStep, min);
301
- } else if ((event.key === 'ArrowRight' || event.key === 'ArrowUp') && event.shiftKey || event.key === 'PageUp') {
302
- newValue = Math.min(value + shiftStep, max);
301
+ // Keys actions that change the value by more than the most granular `step`
302
+ // value are only applied if the step not `null`.
303
+ // When step is `null`, the `marks` prop is used instead to define valid values.
304
+ if (step != null) {
305
+ const stepSize = event.shiftKey ? shiftStep : step;
306
+ switch (event.key) {
307
+ case 'ArrowUp':
308
+ newValue = getNewValue(value, stepSize, 1, min, max);
309
+ break;
310
+ case 'ArrowRight':
311
+ newValue = getNewValue(value, stepSize, isRtl ? -1 : 1, min, max);
312
+ break;
313
+ case 'ArrowDown':
314
+ newValue = getNewValue(value, stepSize, -1, min, max);
315
+ break;
316
+ case 'ArrowLeft':
317
+ newValue = getNewValue(value, stepSize, isRtl ? 1 : -1, min, max);
318
+ break;
319
+ case 'PageUp':
320
+ newValue = getNewValue(value, shiftStep, 1, min, max);
321
+ break;
322
+ case 'PageDown':
323
+ newValue = getNewValue(value, shiftStep, -1, min, max);
324
+ break;
325
+ case 'Home':
326
+ newValue = min;
327
+ break;
328
+ case 'End':
329
+ newValue = max;
330
+ break;
331
+ default:
332
+ break;
333
+ }
334
+ } else if (marks) {
335
+ const maxMarksValue = marksValues[marksValues.length - 1];
336
+ const currentMarkIndex = marksValues.indexOf(value);
337
+ const decrementKeys = [isRtl ? 'ArrowRight' : 'ArrowLeft', 'ArrowDown', 'PageDown', 'Home'];
338
+ const incrementKeys = [isRtl ? 'ArrowLeft' : 'ArrowRight', 'ArrowUp', 'PageUp', 'End'];
339
+ if (decrementKeys.includes(event.key)) {
340
+ if (currentMarkIndex === 0) {
341
+ newValue = marksValues[0];
342
+ } else {
343
+ newValue = marksValues[currentMarkIndex - 1];
344
+ }
345
+ } else if (incrementKeys.includes(event.key)) {
346
+ if (currentMarkIndex === marksValues.length - 1) {
347
+ newValue = maxMarksValue;
348
+ } else {
349
+ newValue = marksValues[currentMarkIndex + 1];
350
+ }
351
+ }
303
352
  }
304
- if (newValue !== null) {
353
+ if (newValue != null) {
305
354
  changeValue(event, newValue);
306
- event.preventDefault();
307
355
  }
308
356
  }
309
357
  otherHandlers?.onKeyDown?.(event);
@@ -325,6 +373,7 @@ function useSlider(parameters) {
325
373
  }
326
374
  const createHandleHiddenInputChange = otherHandlers => event => {
327
375
  otherHandlers.onChange?.(event);
376
+ // this handles value change by Pointer or Touch events
328
377
  // @ts-ignore
329
378
  changeValue(event, event.target.valueAsNumber);
330
379
  };
@@ -601,6 +650,10 @@ function useSlider(parameters) {
601
650
  pointerEvents: active !== -1 && active !== index ? 'none' : undefined
602
651
  };
603
652
  };
653
+ let cssWritingMode;
654
+ if (orientation === 'vertical') {
655
+ cssWritingMode = isRtl ? 'vertical-rl' : 'vertical-lr';
656
+ }
604
657
  const getHiddenInputProps = (externalProps = {}) => {
605
658
  const externalHandlers = (0, _extractEventHandlers.default)(externalProps);
606
659
  const ownEventHandlers = {
@@ -632,7 +685,8 @@ function useSlider(parameters) {
632
685
  direction: isRtl ? 'rtl' : 'ltr',
633
686
  // So that VoiceOver's focus indicator matches the thumb's dimensions
634
687
  width: '100%',
635
- height: '100%'
688
+ height: '100%',
689
+ writingMode: cssWritingMode
636
690
  }
637
691
  };
638
692
  };
package/node/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/material v6.1.10
2
+ * @mui/material v6.2.0
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -4,9 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.version = exports.prerelease = exports.patch = exports.minor = exports.major = exports.default = void 0;
7
- const version = exports.version = "6.1.10";
7
+ const version = exports.version = "6.2.0";
8
8
  const major = exports.major = Number("6");
9
- const minor = exports.minor = Number("1");
10
- const patch = exports.patch = Number("10");
9
+ const minor = exports.minor = Number("2");
10
+ const patch = exports.patch = Number("0");
11
11
  const prerelease = exports.prerelease = undefined;
12
12
  var _default = exports.default = version;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/material",
3
- "version": "6.1.10",
3
+ "version": "6.2.0",
4
4
  "private": false,
5
5
  "author": "MUI Team",
6
6
  "description": "Material UI is an open-source React component library that implements Google's Material Design. It's comprehensive and can be used in production out of the box.",
@@ -33,12 +33,12 @@
33
33
  "clsx": "^2.1.1",
34
34
  "csstype": "^3.1.3",
35
35
  "prop-types": "^15.8.1",
36
- "react-is": "^18.3.1",
36
+ "react-is": "^19.0.0",
37
37
  "react-transition-group": "^4.4.5",
38
- "@mui/system": "^6.1.10",
39
- "@mui/types": "^7.2.19",
40
- "@mui/core-downloads-tracker": "^6.1.10",
41
- "@mui/utils": "^6.1.10"
38
+ "@mui/system": "^6.2.0",
39
+ "@mui/utils": "^6.2.0",
40
+ "@mui/core-downloads-tracker": "^6.2.0",
41
+ "@mui/types": "^7.2.19"
42
42
  },
43
43
  "peerDependencies": {
44
44
  "@emotion/react": "^11.5.0",
@@ -46,7 +46,7 @@
46
46
  "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
47
47
  "react": "^17.0.0 || ^18.0.0 || ^19.0.0",
48
48
  "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0",
49
- "@mui/material-pigment-css": "^6.1.10"
49
+ "@mui/material-pigment-css": "^6.2.0"
50
50
  },
51
51
  "peerDependenciesMeta": {
52
52
  "@types/react": {
@@ -10,7 +10,7 @@ type ControlledPromise<T = unknown> = Promise<T> & {
10
10
  */
11
11
  export declare class LazyRipple {
12
12
  /** React ref to the ripple instance */
13
- ref: React.MutableRefObject<TouchRippleActions | null>;
13
+ ref: React.RefObject<TouchRippleActions | null>;
14
14
  /** If the ripple component should be mounted */
15
15
  shouldMount: boolean;
16
16
  /** Promise that resolves when the ripple component is mounted */
@@ -3,5 +3,5 @@ declare const memoTheme: (styleFn: (props: {
3
3
  theme: Theme;
4
4
  }) => import("@mui/styled-engine").CSSInterpolation) => (props: {
5
5
  theme: Theme;
6
- }) => string | number | boolean | import("@mui/styled-engine").ComponentSelector | import("@mui/styled-engine").Keyframes | import("@mui/styled-engine").SerializedStyles | import("@mui/styled-engine").CSSObject | import("@mui/styled-engine").ArrayCSSInterpolation | null;
6
+ }) => string | number | boolean | import("@mui/styled-engine").CSSObject | import("@mui/styled-engine").ComponentSelector | import("@mui/styled-engine").Keyframes | import("@mui/styled-engine").SerializedStyles | import("@mui/styled-engine").ArrayCSSInterpolation | null;
7
7
  export default memoTheme;
package/version/index.js CHANGED
@@ -1,6 +1,6 @@
1
- export const version = "6.1.10";
1
+ export const version = "6.2.0";
2
2
  export const major = Number("6");
3
- export const minor = Number("1");
4
- export const patch = Number("10");
3
+ export const minor = Number("2");
4
+ export const patch = Number("0");
5
5
  export const prerelease = undefined;
6
6
  export default version;