@mui/material 9.0.0-alpha.2 → 9.0.0-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (352) hide show
  1. package/Accordion/Accordion.d.mts +0 -14
  2. package/Accordion/Accordion.d.ts +0 -14
  3. package/Accordion/Accordion.js +3 -25
  4. package/Accordion/Accordion.mjs +3 -25
  5. package/AccordionSummary/AccordionSummary.js +1 -1
  6. package/AccordionSummary/AccordionSummary.mjs +1 -1
  7. package/AccordionSummary/accordionSummaryClasses.d.mts +0 -5
  8. package/AccordionSummary/accordionSummaryClasses.d.ts +0 -5
  9. package/AccordionSummary/accordionSummaryClasses.js +1 -1
  10. package/AccordionSummary/accordionSummaryClasses.mjs +1 -1
  11. package/Alert/Alert.d.mts +0 -23
  12. package/Alert/Alert.d.ts +0 -23
  13. package/Alert/Alert.js +4 -36
  14. package/Alert/Alert.mjs +4 -36
  15. package/Alert/alertClasses.d.mts +0 -72
  16. package/Alert/alertClasses.d.ts +0 -72
  17. package/Alert/alertClasses.js +1 -1
  18. package/Alert/alertClasses.mjs +1 -1
  19. package/Autocomplete/Autocomplete.d.mts +26 -60
  20. package/Autocomplete/Autocomplete.d.ts +26 -60
  21. package/Autocomplete/Autocomplete.js +76 -119
  22. package/Autocomplete/Autocomplete.mjs +76 -119
  23. package/Avatar/Avatar.d.mts +0 -8
  24. package/Avatar/Avatar.d.ts +0 -8
  25. package/Avatar/Avatar.js +13 -35
  26. package/Avatar/Avatar.mjs +13 -35
  27. package/AvatarGroup/AvatarGroup.d.mts +0 -15
  28. package/AvatarGroup/AvatarGroup.d.ts +0 -15
  29. package/AvatarGroup/AvatarGroup.js +1 -18
  30. package/AvatarGroup/AvatarGroup.mjs +1 -18
  31. package/Backdrop/Backdrop.d.mts +1 -31
  32. package/Backdrop/Backdrop.d.ts +1 -31
  33. package/Backdrop/Backdrop.js +2 -42
  34. package/Backdrop/Backdrop.mjs +2 -42
  35. package/Badge/Badge.d.mts +0 -20
  36. package/Badge/Badge.d.ts +0 -20
  37. package/Badge/Badge.js +2 -35
  38. package/Badge/Badge.mjs +2 -35
  39. package/Box/Box.d.mts +1 -0
  40. package/Box/Box.d.ts +1 -0
  41. package/Button/Button.d.mts +1 -0
  42. package/Button/Button.d.ts +1 -0
  43. package/Button/Button.js +6 -6
  44. package/Button/Button.mjs +6 -6
  45. package/Button/buttonClasses.d.mts +0 -132
  46. package/Button/buttonClasses.d.ts +0 -132
  47. package/Button/buttonClasses.js +1 -1
  48. package/Button/buttonClasses.mjs +1 -1
  49. package/ButtonBase/ButtonBase.js +16 -2
  50. package/ButtonBase/ButtonBase.mjs +16 -2
  51. package/CHANGELOG.md +191 -0
  52. package/CardHeader/CardHeader.js +5 -1
  53. package/CardHeader/CardHeader.mjs +5 -1
  54. package/CircularProgress/CircularProgress.js +2 -2
  55. package/CircularProgress/CircularProgress.mjs +2 -2
  56. package/CircularProgress/circularProgressClasses.d.mts +0 -8
  57. package/CircularProgress/circularProgressClasses.d.ts +0 -8
  58. package/CircularProgress/circularProgressClasses.js +1 -1
  59. package/CircularProgress/circularProgressClasses.mjs +1 -1
  60. package/Divider/Divider.d.mts +1 -6
  61. package/Divider/Divider.d.ts +1 -6
  62. package/Divider/Divider.js +2 -18
  63. package/Divider/Divider.mjs +2 -18
  64. package/Divider/dividerClasses.d.mts +0 -4
  65. package/Divider/dividerClasses.d.ts +0 -4
  66. package/Divider/dividerClasses.js +1 -1
  67. package/Divider/dividerClasses.mjs +1 -1
  68. package/FormControlLabel/FormControlLabel.d.mts +1 -14
  69. package/FormControlLabel/FormControlLabel.d.ts +1 -14
  70. package/FormControlLabel/FormControlLabel.js +1 -13
  71. package/FormControlLabel/FormControlLabel.mjs +1 -13
  72. package/Input/Input.js +2 -1
  73. package/Input/Input.mjs +2 -1
  74. package/List/List.d.mts +1 -0
  75. package/List/List.d.ts +1 -0
  76. package/ListItemButton/ListItemButton.d.mts +1 -0
  77. package/ListItemButton/ListItemButton.d.ts +1 -0
  78. package/ListItemIcon/ListItemIcon.d.mts +1 -0
  79. package/ListItemIcon/ListItemIcon.d.ts +1 -0
  80. package/ListItemText/ListItemText.d.mts +1 -0
  81. package/ListItemText/ListItemText.d.ts +1 -0
  82. package/ListItemText/ListItemText.js +5 -1
  83. package/ListItemText/ListItemText.mjs +5 -1
  84. package/ListSubheader/ListSubheader.d.mts +1 -0
  85. package/ListSubheader/ListSubheader.d.ts +1 -0
  86. package/Menu/Menu.d.mts +0 -13
  87. package/Menu/Menu.d.ts +0 -13
  88. package/Menu/Menu.js +5 -44
  89. package/Menu/Menu.mjs +5 -44
  90. package/MenuItem/MenuItem.js +21 -1
  91. package/MenuItem/MenuItem.mjs +23 -1
  92. package/MenuList/MenuList.js +77 -109
  93. package/MenuList/MenuList.mjs +77 -109
  94. package/MobileStepper/MobileStepper.d.mts +0 -5
  95. package/MobileStepper/MobileStepper.d.ts +0 -5
  96. package/MobileStepper/MobileStepper.js +1 -10
  97. package/MobileStepper/MobileStepper.mjs +1 -10
  98. package/Paper/Paper.d.mts +1 -0
  99. package/Paper/Paper.d.ts +1 -0
  100. package/Popover/Popover.d.mts +4 -48
  101. package/Popover/Popover.d.ts +4 -48
  102. package/Popover/Popover.js +4 -64
  103. package/Popover/Popover.mjs +4 -64
  104. package/Popper/Popper.d.mts +0 -17
  105. package/Popper/Popper.d.ts +0 -17
  106. package/Popper/Popper.js +2 -26
  107. package/Popper/Popper.mjs +2 -26
  108. package/Popper/index.d.mts +1 -0
  109. package/Popper/index.d.ts +1 -0
  110. package/Popper/index.js +11 -2
  111. package/Popper/index.mjs +1 -0
  112. package/Select/SelectInput.js +50 -55
  113. package/Select/SelectInput.mjs +47 -52
  114. package/Select/index.d.mts +1 -0
  115. package/Select/index.d.ts +1 -0
  116. package/Select/index.js +12 -0
  117. package/Select/index.mjs +1 -0
  118. package/Select/utils/SelectFocusSourceContext.d.mts +4 -0
  119. package/Select/utils/SelectFocusSourceContext.d.ts +4 -0
  120. package/Select/utils/SelectFocusSourceContext.js +19 -0
  121. package/Select/utils/SelectFocusSourceContext.mjs +13 -0
  122. package/Select/utils/areEqualValues.d.mts +1 -0
  123. package/Select/utils/areEqualValues.d.ts +1 -0
  124. package/Select/utils/areEqualValues.js +14 -0
  125. package/Select/utils/areEqualValues.mjs +8 -0
  126. package/Select/utils/getOpenInteractionType.d.mts +1 -0
  127. package/Select/utils/getOpenInteractionType.d.ts +1 -0
  128. package/Select/utils/getOpenInteractionType.js +18 -0
  129. package/Select/utils/getOpenInteractionType.mjs +12 -0
  130. package/Select/utils/index.d.mts +4 -0
  131. package/Select/utils/index.d.ts +4 -0
  132. package/Select/utils/index.js +40 -0
  133. package/Select/utils/index.mjs +4 -0
  134. package/Select/utils/isEmpty.d.mts +1 -0
  135. package/Select/utils/isEmpty.d.ts +1 -0
  136. package/Select/utils/isEmpty.js +9 -0
  137. package/Select/utils/isEmpty.mjs +3 -0
  138. package/Slider/Slider.d.mts +109 -77
  139. package/Slider/Slider.d.ts +109 -77
  140. package/Slider/Slider.js +42 -119
  141. package/Slider/Slider.mjs +42 -119
  142. package/Slider/sliderClasses.d.mts +7 -7
  143. package/Slider/sliderClasses.d.ts +7 -7
  144. package/Slider/useSlider.js +50 -14
  145. package/Slider/useSlider.mjs +50 -14
  146. package/Snackbar/Snackbar.d.mts +1 -27
  147. package/Snackbar/Snackbar.d.ts +1 -27
  148. package/Snackbar/Snackbar.js +5 -58
  149. package/Snackbar/Snackbar.mjs +5 -58
  150. package/SpeedDial/SpeedDial.d.mts +0 -13
  151. package/SpeedDial/SpeedDial.d.ts +0 -13
  152. package/SpeedDial/SpeedDial.js +15 -40
  153. package/SpeedDial/SpeedDial.mjs +15 -40
  154. package/SpeedDialAction/SpeedDialAction.d.mts +0 -28
  155. package/SpeedDialAction/SpeedDialAction.d.ts +0 -28
  156. package/SpeedDialAction/SpeedDialAction.js +5 -46
  157. package/SpeedDialAction/SpeedDialAction.mjs +5 -46
  158. package/Step/Step.js +7 -5
  159. package/Step/Step.mjs +7 -5
  160. package/StepButton/StepButton.js +16 -6
  161. package/StepButton/StepButton.mjs +16 -6
  162. package/StepConnector/StepConnector.js +2 -2
  163. package/StepConnector/StepConnector.mjs +2 -2
  164. package/StepContent/StepContent.js +2 -2
  165. package/StepContent/StepContent.mjs +2 -2
  166. package/StepLabel/StepLabel.js +2 -2
  167. package/StepLabel/StepLabel.mjs +2 -2
  168. package/Stepper/Stepper.js +44 -7
  169. package/Stepper/Stepper.mjs +44 -7
  170. package/Stepper/StepperContext.d.mts +7 -0
  171. package/Stepper/StepperContext.d.ts +7 -0
  172. package/Stepper/StepperContext.js +2 -1
  173. package/Stepper/StepperContext.mjs +1 -0
  174. package/Stepper/index.d.mts +0 -1
  175. package/Stepper/index.d.ts +0 -1
  176. package/Tab/Tab.js +0 -1
  177. package/Tab/Tab.mjs +0 -1
  178. package/TablePagination/TablePagination.d.mts +1 -1
  179. package/TablePagination/TablePagination.d.ts +1 -1
  180. package/TablePagination/TablePagination.js +4 -2
  181. package/TablePagination/TablePagination.mjs +4 -2
  182. package/Tabs/Tabs.d.mts +2 -33
  183. package/Tabs/Tabs.d.ts +2 -33
  184. package/Tabs/Tabs.js +54 -135
  185. package/Tabs/Tabs.mjs +54 -135
  186. package/TextField/TextField.d.mts +6 -49
  187. package/TextField/TextField.d.ts +6 -49
  188. package/TextField/TextField.js +18 -53
  189. package/TextField/TextField.mjs +18 -53
  190. package/Tooltip/Tooltip.d.mts +1 -55
  191. package/Tooltip/Tooltip.d.ts +1 -55
  192. package/Tooltip/Tooltip.js +9 -87
  193. package/Tooltip/Tooltip.mjs +9 -87
  194. package/Typography/Typography.d.mts +1 -6
  195. package/Typography/Typography.d.ts +1 -6
  196. package/Typography/Typography.js +3 -19
  197. package/Typography/Typography.mjs +3 -19
  198. package/Typography/typographyClasses.d.mts +0 -5
  199. package/Typography/typographyClasses.d.ts +0 -5
  200. package/Typography/typographyClasses.js +1 -1
  201. package/Typography/typographyClasses.mjs +1 -1
  202. package/index.d.mts +0 -2
  203. package/index.d.ts +0 -2
  204. package/index.js +1 -9
  205. package/index.mjs +1 -2
  206. package/locale/amET.js +4 -1
  207. package/locale/amET.mjs +3 -1
  208. package/locale/arEG.js +4 -1
  209. package/locale/arEG.mjs +3 -1
  210. package/locale/arSA.js +4 -1
  211. package/locale/arSA.mjs +3 -1
  212. package/locale/arSD.js +4 -1
  213. package/locale/arSD.mjs +3 -1
  214. package/locale/beBY.js +4 -1
  215. package/locale/beBY.mjs +3 -1
  216. package/locale/bnBD.js +4 -1
  217. package/locale/bnBD.mjs +3 -1
  218. package/locale/caES.js +4 -1
  219. package/locale/caES.mjs +3 -1
  220. package/locale/csCZ.js +4 -1
  221. package/locale/csCZ.mjs +3 -1
  222. package/locale/daDK.js +4 -1
  223. package/locale/daDK.mjs +3 -1
  224. package/locale/deDE.js +4 -1
  225. package/locale/deDE.mjs +3 -1
  226. package/locale/elGR.js +4 -1
  227. package/locale/elGR.mjs +3 -1
  228. package/locale/esES.js +4 -1
  229. package/locale/esES.mjs +3 -1
  230. package/locale/etEE.js +4 -1
  231. package/locale/etEE.mjs +3 -1
  232. package/locale/faIR.js +4 -1
  233. package/locale/faIR.mjs +3 -1
  234. package/locale/fiFI.js +4 -1
  235. package/locale/fiFI.mjs +3 -1
  236. package/locale/frFR.js +4 -1
  237. package/locale/frFR.mjs +3 -1
  238. package/locale/heIL.js +4 -1
  239. package/locale/heIL.mjs +3 -1
  240. package/locale/hiIN.js +4 -1
  241. package/locale/hiIN.mjs +3 -1
  242. package/locale/hrHR.js +5 -1
  243. package/locale/hrHR.mjs +4 -1
  244. package/locale/isIS.js +4 -1
  245. package/locale/isIS.mjs +3 -1
  246. package/locale/itIT.js +4 -1
  247. package/locale/itIT.mjs +3 -1
  248. package/locale/jaJP.js +4 -1
  249. package/locale/jaJP.mjs +3 -1
  250. package/locale/khKH.js +4 -1
  251. package/locale/khKH.mjs +3 -1
  252. package/locale/kkKZ.js +4 -1
  253. package/locale/kkKZ.mjs +3 -1
  254. package/locale/koKR.js +4 -1
  255. package/locale/koKR.mjs +3 -1
  256. package/locale/kuCKB.js +4 -1
  257. package/locale/kuCKB.mjs +3 -1
  258. package/locale/kuLatn.js +4 -1
  259. package/locale/kuLatn.mjs +3 -1
  260. package/locale/mkMK.js +5 -1
  261. package/locale/mkMK.mjs +4 -1
  262. package/locale/msMS.js +5 -1
  263. package/locale/msMS.mjs +4 -1
  264. package/locale/myMY.js +5 -1
  265. package/locale/myMY.mjs +4 -1
  266. package/locale/nbNO.js +4 -1
  267. package/locale/nbNO.mjs +3 -1
  268. package/locale/neNP.js +5 -1
  269. package/locale/neNP.mjs +4 -1
  270. package/locale/nlNL.js +4 -1
  271. package/locale/nlNL.mjs +3 -1
  272. package/locale/nnNO.js +4 -1
  273. package/locale/nnNO.mjs +3 -1
  274. package/locale/plPL.js +4 -1
  275. package/locale/plPL.mjs +3 -1
  276. package/locale/psAF.js +4 -1
  277. package/locale/psAF.mjs +3 -1
  278. package/locale/ptBR.js +4 -1
  279. package/locale/ptBR.mjs +3 -1
  280. package/locale/ptPT.js +4 -1
  281. package/locale/ptPT.mjs +3 -1
  282. package/locale/roRO.js +4 -1
  283. package/locale/roRO.mjs +3 -1
  284. package/locale/ruRU.js +4 -1
  285. package/locale/ruRU.mjs +3 -1
  286. package/locale/siLK.js +4 -1
  287. package/locale/siLK.mjs +3 -1
  288. package/locale/skSK.js +4 -1
  289. package/locale/skSK.mjs +3 -1
  290. package/locale/srRS.js +5 -1
  291. package/locale/srRS.mjs +4 -1
  292. package/locale/svSE.js +4 -1
  293. package/locale/svSE.mjs +3 -1
  294. package/locale/thTH.js +4 -1
  295. package/locale/thTH.mjs +3 -1
  296. package/locale/tlTL.js +5 -1
  297. package/locale/tlTL.mjs +4 -1
  298. package/locale/trTR.js +4 -1
  299. package/locale/trTR.mjs +3 -1
  300. package/locale/ukUA.js +4 -1
  301. package/locale/ukUA.mjs +3 -1
  302. package/locale/urPK.js +4 -1
  303. package/locale/urPK.mjs +3 -1
  304. package/locale/utils/buildFormatNumber.d.mts +2 -0
  305. package/locale/utils/buildFormatNumber.d.ts +2 -0
  306. package/locale/utils/buildFormatNumber.js +23 -0
  307. package/locale/utils/buildFormatNumber.mjs +17 -0
  308. package/locale/viVN.js +4 -1
  309. package/locale/viVN.mjs +3 -1
  310. package/locale/zhCN.js +4 -1
  311. package/locale/zhCN.mjs +3 -1
  312. package/locale/zhHK.js +4 -1
  313. package/locale/zhHK.mjs +3 -1
  314. package/locale/zhTW.js +4 -1
  315. package/locale/zhTW.mjs +3 -1
  316. package/package.json +236 -236
  317. package/styles/components.d.mts +0 -5
  318. package/styles/components.d.ts +0 -5
  319. package/styles/overrides.d.mts +0 -2
  320. package/styles/overrides.d.ts +0 -2
  321. package/styles/props.d.mts +0 -2
  322. package/styles/props.d.ts +0 -2
  323. package/themeCssVarsAugmentation/index.js +5 -0
  324. package/themeCssVarsAugmentation/index.mjs +5 -0
  325. package/useAutocomplete/useAutocomplete.d.mts +0 -12
  326. package/useAutocomplete/useAutocomplete.d.ts +0 -12
  327. package/useAutocomplete/useAutocomplete.js +53 -28
  328. package/useAutocomplete/useAutocomplete.mjs +53 -28
  329. package/utils/index.d.mts +2 -0
  330. package/utils/index.d.ts +2 -0
  331. package/utils/index.js +14 -0
  332. package/utils/index.mjs +2 -0
  333. package/utils/useRovingTabIndex.d.mts +2 -0
  334. package/utils/useRovingTabIndex.d.ts +2 -0
  335. package/utils/useRovingTabIndex.js +9 -0
  336. package/utils/useRovingTabIndex.mjs +2 -0
  337. package/version/index.js +2 -2
  338. package/version/index.mjs +2 -2
  339. package/GridLegacy/GridLegacy.d.mts +0 -160
  340. package/GridLegacy/GridLegacy.d.ts +0 -160
  341. package/GridLegacy/GridLegacy.js +0 -601
  342. package/GridLegacy/GridLegacy.mjs +0 -588
  343. package/GridLegacy/GridLegacyContext.js +0 -17
  344. package/GridLegacy/GridLegacyContext.mjs +0 -12
  345. package/GridLegacy/gridLegacyClasses.d.mts +0 -48
  346. package/GridLegacy/gridLegacyClasses.d.ts +0 -48
  347. package/GridLegacy/gridLegacyClasses.js +0 -27
  348. package/GridLegacy/gridLegacyClasses.mjs +0 -19
  349. package/GridLegacy/index.d.mts +0 -4
  350. package/GridLegacy/index.d.ts +0 -4
  351. package/GridLegacy/index.js +0 -35
  352. package/GridLegacy/index.mjs +0 -3
package/Tabs/Tabs.js CHANGED
@@ -24,53 +24,11 @@ var _ScrollbarSize = _interopRequireDefault(require("./ScrollbarSize"));
24
24
  var _TabScrollButton = _interopRequireDefault(require("../TabScrollButton"));
25
25
  var _useEventCallback = _interopRequireDefault(require("../utils/useEventCallback"));
26
26
  var _tabsClasses = _interopRequireWildcard(require("./tabsClasses"));
27
- var _ownerDocument = _interopRequireDefault(require("../utils/ownerDocument"));
28
27
  var _ownerWindow = _interopRequireDefault(require("../utils/ownerWindow"));
29
- var _getActiveElement = _interopRequireDefault(require("../utils/getActiveElement"));
30
28
  var _isLayoutSupported = _interopRequireDefault(require("../utils/isLayoutSupported"));
31
29
  var _useSlot = _interopRequireDefault(require("../utils/useSlot"));
30
+ var _utils = require("../utils");
32
31
  var _jsxRuntime = require("react/jsx-runtime");
33
- const nextItem = (list, item) => {
34
- if (list === item) {
35
- return list.firstChild;
36
- }
37
- if (item && item.nextElementSibling) {
38
- return item.nextElementSibling;
39
- }
40
- return list.firstChild;
41
- };
42
- const previousItem = (list, item) => {
43
- if (list === item) {
44
- return list.lastChild;
45
- }
46
- if (item && item.previousElementSibling) {
47
- return item.previousElementSibling;
48
- }
49
- return list.lastChild;
50
- };
51
- const moveFocus = (list, currentFocus, traversalFunction) => {
52
- let wrappedOnce = false;
53
- let nextFocus = traversalFunction(list, currentFocus);
54
- while (nextFocus) {
55
- // Prevent infinite loop.
56
- if (nextFocus === list.firstChild) {
57
- if (wrappedOnce) {
58
- return;
59
- }
60
- wrappedOnce = true;
61
- }
62
-
63
- // Same logic as useAutocomplete.js
64
- const nextFocusDisabled = nextFocus.disabled || nextFocus.getAttribute('aria-disabled') === 'true';
65
- if (!nextFocus.hasAttribute('tabindex') || nextFocusDisabled) {
66
- // Move to the next element.
67
- nextFocus = traversalFunction(list, nextFocus);
68
- } else {
69
- nextFocus.focus();
70
- return;
71
- }
72
- }
73
- };
74
32
  const useUtilityClasses = ownerState => {
75
33
  const {
76
34
  vertical,
@@ -280,16 +238,10 @@ const Tabs = /*#__PURE__*/React.forwardRef(function Tabs(inProps, ref) {
280
238
  indicatorColor = 'primary',
281
239
  onChange,
282
240
  orientation = 'horizontal',
283
- ScrollButtonComponent,
284
- // TODO: remove in v7 (deprecated in v6)
285
241
  scrollButtons = 'auto',
286
242
  selectionFollowsFocus,
287
243
  slots = {},
288
244
  slotProps = {},
289
- TabIndicatorProps = {},
290
- // TODO: remove in v7 (deprecated in v6)
291
- TabScrollButtonProps = {},
292
- // TODO: remove in v7 (deprecated in v6)
293
245
  textColor = 'primary',
294
246
  value,
295
247
  variant = 'standard',
@@ -323,12 +275,12 @@ const Tabs = /*#__PURE__*/React.forwardRef(function Tabs(inProps, ref) {
323
275
  };
324
276
  const classes = useUtilityClasses(ownerState);
325
277
  const startScrollButtonIconProps = (0, _useSlotProps.default)({
326
- elementType: slots.StartScrollButtonIcon,
278
+ elementType: slots.startScrollButtonIcon,
327
279
  externalSlotProps: slotProps.startScrollButtonIcon,
328
280
  ownerState
329
281
  });
330
282
  const endScrollButtonIconProps = (0, _useSlotProps.default)({
331
- elementType: slots.EndScrollButtonIcon,
283
+ elementType: slots.endScrollButtonIcon,
332
284
  externalSlotProps: slotProps.endScrollButtonIcon,
333
285
  ownerState
334
286
  });
@@ -351,11 +303,7 @@ const Tabs = /*#__PURE__*/React.forwardRef(function Tabs(inProps, ref) {
351
303
  const tabListRef = React.useRef(null);
352
304
  const externalForwardedProps = {
353
305
  slots,
354
- slotProps: {
355
- indicator: TabIndicatorProps,
356
- scrollButtons: TabScrollButtonProps,
357
- ...slotProps
358
- }
306
+ slotProps
359
307
  };
360
308
  const getTabsMeta = () => {
361
309
  const tabsNode = tabsRef.current;
@@ -499,15 +447,15 @@ const Tabs = /*#__PURE__*/React.forwardRef(function Tabs(inProps, ref) {
499
447
  });
500
448
  }, [scrollbarOnChange]);
501
449
  const [ScrollButtonsSlot, scrollButtonSlotProps] = (0, _useSlot.default)('scrollButtons', {
502
- className: (0, _clsx.default)(classes.scrollButtons, TabScrollButtonProps.className),
450
+ className: classes.scrollButtons,
503
451
  elementType: _TabScrollButton.default,
504
452
  externalForwardedProps,
505
453
  ownerState,
506
454
  additionalProps: {
507
455
  orientation,
508
456
  slots: {
509
- StartScrollButtonIcon: slots.startScrollButtonIcon || slots.StartScrollButtonIcon,
510
- EndScrollButtonIcon: slots.endScrollButtonIcon || slots.EndScrollButtonIcon
457
+ StartScrollButtonIcon: slots.startScrollButtonIcon,
458
+ EndScrollButtonIcon: slots.endScrollButtonIcon
511
459
  },
512
460
  slotProps: {
513
461
  startScrollButtonIcon: startScrollButtonIconProps,
@@ -662,7 +610,7 @@ const Tabs = /*#__PURE__*/React.forwardRef(function Tabs(inProps, ref) {
662
610
  updateScrollButtons: updateScrollButtonState
663
611
  }), [updateIndicatorState, updateScrollButtonState]);
664
612
  const [IndicatorSlot, indicatorSlotProps] = (0, _useSlot.default)('indicator', {
665
- className: (0, _clsx.default)(classes.indicator, TabIndicatorProps.className),
613
+ className: classes.indicator,
666
614
  elementType: TabsIndicator,
667
615
  externalForwardedProps,
668
616
  ownerState,
@@ -673,20 +621,37 @@ const Tabs = /*#__PURE__*/React.forwardRef(function Tabs(inProps, ref) {
673
621
  const indicator = /*#__PURE__*/(0, _jsxRuntime.jsx)(IndicatorSlot, {
674
622
  ...indicatorSlotProps
675
623
  });
676
- let childIndex = 0;
677
- const children = React.Children.map(childrenProp, child => {
678
- if (! /*#__PURE__*/React.isValidElement(child)) {
679
- return null;
680
- }
624
+ const validChildren = React.Children.toArray(childrenProp).filter(React.isValidElement).map((child, index) => {
625
+ const childValue = child.props.value === undefined ? index : child.props.value;
681
626
  if (process.env.NODE_ENV !== 'production') {
682
627
  if ((0, _reactIs.isFragment)(child)) {
683
628
  console.error(["MUI: The Tabs component doesn't accept a Fragment as a child.", 'Consider providing an array instead.'].join('\n'));
684
629
  }
685
630
  }
686
- const childValue = child.props.value === undefined ? childIndex : child.props.value;
687
- valueToIndex.set(childValue, childIndex);
631
+ valueToIndex.set(childValue, index);
632
+ return {
633
+ child,
634
+ index,
635
+ childValue
636
+ };
637
+ });
638
+ const focusableIndex = valueToIndex.get(value);
639
+ const {
640
+ getContainerProps,
641
+ getItemProps
642
+ } = (0, _utils.useRovingTabIndex)({
643
+ focusableIndex,
644
+ orientation,
645
+ isRtl
646
+ });
647
+ const rovingTabIndexContainerProps = getContainerProps();
648
+ const children = validChildren.map(({
649
+ child,
650
+ index,
651
+ childValue
652
+ }) => {
688
653
  const selected = childValue === value;
689
- childIndex += 1;
654
+ const rovingTabIndexItemProps = getItemProps(index, child.ref);
690
655
  return /*#__PURE__*/React.cloneElement(child, {
691
656
  fullWidth: variant === 'fullWidth',
692
657
  indicator: selected && !mounted && indicator,
@@ -695,53 +660,10 @@ const Tabs = /*#__PURE__*/React.forwardRef(function Tabs(inProps, ref) {
695
660
  onChange,
696
661
  textColor,
697
662
  value: childValue,
698
- ...(childIndex === 1 && value === false && !child.props.tabIndex ? {
699
- tabIndex: 0
700
- } : {})
663
+ ref: rovingTabIndexItemProps.ref,
664
+ tabIndex: child.props.tabIndex ?? rovingTabIndexItemProps.tabIndex
701
665
  });
702
666
  });
703
- const handleKeyDown = event => {
704
- // Check if a modifier key (Alt, Shift, Ctrl, Meta) is pressed
705
- if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {
706
- return;
707
- }
708
- const list = tabListRef.current;
709
- const currentFocus = (0, _getActiveElement.default)((0, _ownerDocument.default)(list));
710
- // Keyboard navigation assumes that [role="tab"] are siblings
711
- // though we might warn in the future about nested, interactive elements
712
- // as a a11y violation
713
- const role = currentFocus?.getAttribute('role');
714
- if (role !== 'tab') {
715
- return;
716
- }
717
- let previousItemKey = orientation === 'horizontal' ? 'ArrowLeft' : 'ArrowUp';
718
- let nextItemKey = orientation === 'horizontal' ? 'ArrowRight' : 'ArrowDown';
719
- if (orientation === 'horizontal' && isRtl) {
720
- // swap previousItemKey with nextItemKey
721
- previousItemKey = 'ArrowRight';
722
- nextItemKey = 'ArrowLeft';
723
- }
724
- switch (event.key) {
725
- case previousItemKey:
726
- event.preventDefault();
727
- moveFocus(list, currentFocus, previousItem);
728
- break;
729
- case nextItemKey:
730
- event.preventDefault();
731
- moveFocus(list, currentFocus, nextItem);
732
- break;
733
- case 'Home':
734
- event.preventDefault();
735
- moveFocus(list, null, nextItem);
736
- break;
737
- case 'End':
738
- event.preventDefault();
739
- moveFocus(list, null, previousItem);
740
- break;
741
- default:
742
- break;
743
- }
744
- };
745
667
  const conditionalElements = getConditionalElements();
746
668
  const [RootSlot, rootSlotProps] = (0, _useSlot.default)('root', {
747
669
  ref,
@@ -767,8 +689,21 @@ const Tabs = /*#__PURE__*/React.forwardRef(function Tabs(inProps, ref) {
767
689
  }
768
690
  }
769
691
  });
692
+ const mergedRef = (0, _utils.useForkRef)(rovingTabIndexContainerProps.ref, tabListRef);
693
+ const handleKeyDown = event => {
694
+ const list = tabListRef.current;
695
+ const currentFocus = (0, _utils.getActiveElement)((0, _utils.ownerDocument)(list));
696
+ // Keyboard navigation assumes that [role="tab"] are siblings
697
+ // though we might warn in the future about nested, interactive elements
698
+ // as a a11y violation
699
+ const role = currentFocus?.getAttribute('role');
700
+ if (role !== 'tab') {
701
+ return;
702
+ }
703
+ rovingTabIndexContainerProps.onKeyDown(event);
704
+ };
770
705
  const [ListSlot, listSlotProps] = (0, _useSlot.default)('list', {
771
- ref: tabListRef,
706
+ ref: mergedRef,
772
707
  className: (0, _clsx.default)(classes.list, classes.flexContainer),
773
708
  elementType: List,
774
709
  externalForwardedProps,
@@ -778,6 +713,10 @@ const Tabs = /*#__PURE__*/React.forwardRef(function Tabs(inProps, ref) {
778
713
  onKeyDown: event => {
779
714
  handleKeyDown(event);
780
715
  handlers.onKeyDown?.(event);
716
+ },
717
+ onFocus: event => {
718
+ rovingTabIndexContainerProps.onFocus(event);
719
+ handlers.onFocus?.(event);
781
720
  }
782
721
  })
783
722
  });
@@ -864,12 +803,6 @@ process.env.NODE_ENV !== "production" ? Tabs.propTypes /* remove-proptypes */ =
864
803
  * @default 'horizontal'
865
804
  */
866
805
  orientation: _propTypes.default.oneOf(['horizontal', 'vertical']),
867
- /**
868
- * The component used to render the scroll buttons.
869
- * @deprecated use the `slots.scrollButtons` prop instead. This prop will be removed in a future major release. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.
870
- * @default TabScrollButton
871
- */
872
- ScrollButtonComponent: _propTypes.default.elementType,
873
806
  /**
874
807
  * Determine behavior of scroll buttons when tabs are set to scroll:
875
808
  *
@@ -907,32 +840,18 @@ process.env.NODE_ENV !== "production" ? Tabs.propTypes /* remove-proptypes */ =
907
840
  */
908
841
  slots: _propTypes.default.shape({
909
842
  endScrollButtonIcon: _propTypes.default.elementType,
910
- EndScrollButtonIcon: _propTypes.default.elementType,
911
843
  indicator: _propTypes.default.elementType,
912
844
  list: _propTypes.default.elementType,
913
845
  root: _propTypes.default.elementType,
914
846
  scrollbar: _propTypes.default.elementType,
915
847
  scrollButtons: _propTypes.default.elementType,
916
848
  scroller: _propTypes.default.elementType,
917
- startScrollButtonIcon: _propTypes.default.elementType,
918
- StartScrollButtonIcon: _propTypes.default.elementType
849
+ startScrollButtonIcon: _propTypes.default.elementType
919
850
  }),
920
851
  /**
921
852
  * The system prop that allows defining system overrides as well as additional CSS styles.
922
853
  */
923
854
  sx: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object, _propTypes.default.bool])), _propTypes.default.func, _propTypes.default.object]),
924
- /**
925
- * Props applied to the tab indicator element.
926
- * @deprecated use the `slotProps.indicator` prop instead. This prop will be removed in a future major release. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.
927
- * @default {}
928
- */
929
- TabIndicatorProps: _propTypes.default.object,
930
- /**
931
- * Props applied to the [`TabScrollButton`](https://mui.com/material-ui/api/tab-scroll-button/) element.
932
- * @deprecated use the `slotProps.scrollButtons` prop instead. This prop will be removed in a future major release. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.
933
- * @default {}
934
- */
935
- TabScrollButtonProps: _propTypes.default.object,
936
855
  /**
937
856
  * Determines the color of the `Tab`.
938
857
  * @default 'primary'
package/Tabs/Tabs.mjs CHANGED
@@ -17,53 +17,11 @@ import ScrollbarSize from "./ScrollbarSize.mjs";
17
17
  import TabScrollButton from "../TabScrollButton/index.mjs";
18
18
  import useEventCallback from "../utils/useEventCallback.mjs";
19
19
  import tabsClasses, { getTabsUtilityClass } from "./tabsClasses.mjs";
20
- import ownerDocument from "../utils/ownerDocument.mjs";
21
20
  import ownerWindow from "../utils/ownerWindow.mjs";
22
- import getActiveElement from "../utils/getActiveElement.mjs";
23
21
  import isLayoutSupported from "../utils/isLayoutSupported.mjs";
24
22
  import useSlot from "../utils/useSlot.mjs";
23
+ import { ownerDocument, useForkRef, getActiveElement, useRovingTabIndex } from "../utils/index.mjs";
25
24
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
26
- const nextItem = (list, item) => {
27
- if (list === item) {
28
- return list.firstChild;
29
- }
30
- if (item && item.nextElementSibling) {
31
- return item.nextElementSibling;
32
- }
33
- return list.firstChild;
34
- };
35
- const previousItem = (list, item) => {
36
- if (list === item) {
37
- return list.lastChild;
38
- }
39
- if (item && item.previousElementSibling) {
40
- return item.previousElementSibling;
41
- }
42
- return list.lastChild;
43
- };
44
- const moveFocus = (list, currentFocus, traversalFunction) => {
45
- let wrappedOnce = false;
46
- let nextFocus = traversalFunction(list, currentFocus);
47
- while (nextFocus) {
48
- // Prevent infinite loop.
49
- if (nextFocus === list.firstChild) {
50
- if (wrappedOnce) {
51
- return;
52
- }
53
- wrappedOnce = true;
54
- }
55
-
56
- // Same logic as useAutocomplete.js
57
- const nextFocusDisabled = nextFocus.disabled || nextFocus.getAttribute('aria-disabled') === 'true';
58
- if (!nextFocus.hasAttribute('tabindex') || nextFocusDisabled) {
59
- // Move to the next element.
60
- nextFocus = traversalFunction(list, nextFocus);
61
- } else {
62
- nextFocus.focus();
63
- return;
64
- }
65
- }
66
- };
67
25
  const useUtilityClasses = ownerState => {
68
26
  const {
69
27
  vertical,
@@ -273,16 +231,10 @@ const Tabs = /*#__PURE__*/React.forwardRef(function Tabs(inProps, ref) {
273
231
  indicatorColor = 'primary',
274
232
  onChange,
275
233
  orientation = 'horizontal',
276
- ScrollButtonComponent,
277
- // TODO: remove in v7 (deprecated in v6)
278
234
  scrollButtons = 'auto',
279
235
  selectionFollowsFocus,
280
236
  slots = {},
281
237
  slotProps = {},
282
- TabIndicatorProps = {},
283
- // TODO: remove in v7 (deprecated in v6)
284
- TabScrollButtonProps = {},
285
- // TODO: remove in v7 (deprecated in v6)
286
238
  textColor = 'primary',
287
239
  value,
288
240
  variant = 'standard',
@@ -316,12 +268,12 @@ const Tabs = /*#__PURE__*/React.forwardRef(function Tabs(inProps, ref) {
316
268
  };
317
269
  const classes = useUtilityClasses(ownerState);
318
270
  const startScrollButtonIconProps = useSlotProps({
319
- elementType: slots.StartScrollButtonIcon,
271
+ elementType: slots.startScrollButtonIcon,
320
272
  externalSlotProps: slotProps.startScrollButtonIcon,
321
273
  ownerState
322
274
  });
323
275
  const endScrollButtonIconProps = useSlotProps({
324
- elementType: slots.EndScrollButtonIcon,
276
+ elementType: slots.endScrollButtonIcon,
325
277
  externalSlotProps: slotProps.endScrollButtonIcon,
326
278
  ownerState
327
279
  });
@@ -344,11 +296,7 @@ const Tabs = /*#__PURE__*/React.forwardRef(function Tabs(inProps, ref) {
344
296
  const tabListRef = React.useRef(null);
345
297
  const externalForwardedProps = {
346
298
  slots,
347
- slotProps: {
348
- indicator: TabIndicatorProps,
349
- scrollButtons: TabScrollButtonProps,
350
- ...slotProps
351
- }
299
+ slotProps
352
300
  };
353
301
  const getTabsMeta = () => {
354
302
  const tabsNode = tabsRef.current;
@@ -492,15 +440,15 @@ const Tabs = /*#__PURE__*/React.forwardRef(function Tabs(inProps, ref) {
492
440
  });
493
441
  }, [scrollbarOnChange]);
494
442
  const [ScrollButtonsSlot, scrollButtonSlotProps] = useSlot('scrollButtons', {
495
- className: clsx(classes.scrollButtons, TabScrollButtonProps.className),
443
+ className: classes.scrollButtons,
496
444
  elementType: TabScrollButton,
497
445
  externalForwardedProps,
498
446
  ownerState,
499
447
  additionalProps: {
500
448
  orientation,
501
449
  slots: {
502
- StartScrollButtonIcon: slots.startScrollButtonIcon || slots.StartScrollButtonIcon,
503
- EndScrollButtonIcon: slots.endScrollButtonIcon || slots.EndScrollButtonIcon
450
+ StartScrollButtonIcon: slots.startScrollButtonIcon,
451
+ EndScrollButtonIcon: slots.endScrollButtonIcon
504
452
  },
505
453
  slotProps: {
506
454
  startScrollButtonIcon: startScrollButtonIconProps,
@@ -655,7 +603,7 @@ const Tabs = /*#__PURE__*/React.forwardRef(function Tabs(inProps, ref) {
655
603
  updateScrollButtons: updateScrollButtonState
656
604
  }), [updateIndicatorState, updateScrollButtonState]);
657
605
  const [IndicatorSlot, indicatorSlotProps] = useSlot('indicator', {
658
- className: clsx(classes.indicator, TabIndicatorProps.className),
606
+ className: classes.indicator,
659
607
  elementType: TabsIndicator,
660
608
  externalForwardedProps,
661
609
  ownerState,
@@ -666,20 +614,37 @@ const Tabs = /*#__PURE__*/React.forwardRef(function Tabs(inProps, ref) {
666
614
  const indicator = /*#__PURE__*/_jsx(IndicatorSlot, {
667
615
  ...indicatorSlotProps
668
616
  });
669
- let childIndex = 0;
670
- const children = React.Children.map(childrenProp, child => {
671
- if (! /*#__PURE__*/React.isValidElement(child)) {
672
- return null;
673
- }
617
+ const validChildren = React.Children.toArray(childrenProp).filter(React.isValidElement).map((child, index) => {
618
+ const childValue = child.props.value === undefined ? index : child.props.value;
674
619
  if (process.env.NODE_ENV !== 'production') {
675
620
  if (isFragment(child)) {
676
621
  console.error(["MUI: The Tabs component doesn't accept a Fragment as a child.", 'Consider providing an array instead.'].join('\n'));
677
622
  }
678
623
  }
679
- const childValue = child.props.value === undefined ? childIndex : child.props.value;
680
- valueToIndex.set(childValue, childIndex);
624
+ valueToIndex.set(childValue, index);
625
+ return {
626
+ child,
627
+ index,
628
+ childValue
629
+ };
630
+ });
631
+ const focusableIndex = valueToIndex.get(value);
632
+ const {
633
+ getContainerProps,
634
+ getItemProps
635
+ } = useRovingTabIndex({
636
+ focusableIndex,
637
+ orientation,
638
+ isRtl
639
+ });
640
+ const rovingTabIndexContainerProps = getContainerProps();
641
+ const children = validChildren.map(({
642
+ child,
643
+ index,
644
+ childValue
645
+ }) => {
681
646
  const selected = childValue === value;
682
- childIndex += 1;
647
+ const rovingTabIndexItemProps = getItemProps(index, child.ref);
683
648
  return /*#__PURE__*/React.cloneElement(child, {
684
649
  fullWidth: variant === 'fullWidth',
685
650
  indicator: selected && !mounted && indicator,
@@ -688,53 +653,10 @@ const Tabs = /*#__PURE__*/React.forwardRef(function Tabs(inProps, ref) {
688
653
  onChange,
689
654
  textColor,
690
655
  value: childValue,
691
- ...(childIndex === 1 && value === false && !child.props.tabIndex ? {
692
- tabIndex: 0
693
- } : {})
656
+ ref: rovingTabIndexItemProps.ref,
657
+ tabIndex: child.props.tabIndex ?? rovingTabIndexItemProps.tabIndex
694
658
  });
695
659
  });
696
- const handleKeyDown = event => {
697
- // Check if a modifier key (Alt, Shift, Ctrl, Meta) is pressed
698
- if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {
699
- return;
700
- }
701
- const list = tabListRef.current;
702
- const currentFocus = getActiveElement(ownerDocument(list));
703
- // Keyboard navigation assumes that [role="tab"] are siblings
704
- // though we might warn in the future about nested, interactive elements
705
- // as a a11y violation
706
- const role = currentFocus?.getAttribute('role');
707
- if (role !== 'tab') {
708
- return;
709
- }
710
- let previousItemKey = orientation === 'horizontal' ? 'ArrowLeft' : 'ArrowUp';
711
- let nextItemKey = orientation === 'horizontal' ? 'ArrowRight' : 'ArrowDown';
712
- if (orientation === 'horizontal' && isRtl) {
713
- // swap previousItemKey with nextItemKey
714
- previousItemKey = 'ArrowRight';
715
- nextItemKey = 'ArrowLeft';
716
- }
717
- switch (event.key) {
718
- case previousItemKey:
719
- event.preventDefault();
720
- moveFocus(list, currentFocus, previousItem);
721
- break;
722
- case nextItemKey:
723
- event.preventDefault();
724
- moveFocus(list, currentFocus, nextItem);
725
- break;
726
- case 'Home':
727
- event.preventDefault();
728
- moveFocus(list, null, nextItem);
729
- break;
730
- case 'End':
731
- event.preventDefault();
732
- moveFocus(list, null, previousItem);
733
- break;
734
- default:
735
- break;
736
- }
737
- };
738
660
  const conditionalElements = getConditionalElements();
739
661
  const [RootSlot, rootSlotProps] = useSlot('root', {
740
662
  ref,
@@ -760,8 +682,21 @@ const Tabs = /*#__PURE__*/React.forwardRef(function Tabs(inProps, ref) {
760
682
  }
761
683
  }
762
684
  });
685
+ const mergedRef = useForkRef(rovingTabIndexContainerProps.ref, tabListRef);
686
+ const handleKeyDown = event => {
687
+ const list = tabListRef.current;
688
+ const currentFocus = getActiveElement(ownerDocument(list));
689
+ // Keyboard navigation assumes that [role="tab"] are siblings
690
+ // though we might warn in the future about nested, interactive elements
691
+ // as a a11y violation
692
+ const role = currentFocus?.getAttribute('role');
693
+ if (role !== 'tab') {
694
+ return;
695
+ }
696
+ rovingTabIndexContainerProps.onKeyDown(event);
697
+ };
763
698
  const [ListSlot, listSlotProps] = useSlot('list', {
764
- ref: tabListRef,
699
+ ref: mergedRef,
765
700
  className: clsx(classes.list, classes.flexContainer),
766
701
  elementType: List,
767
702
  externalForwardedProps,
@@ -771,6 +706,10 @@ const Tabs = /*#__PURE__*/React.forwardRef(function Tabs(inProps, ref) {
771
706
  onKeyDown: event => {
772
707
  handleKeyDown(event);
773
708
  handlers.onKeyDown?.(event);
709
+ },
710
+ onFocus: event => {
711
+ rovingTabIndexContainerProps.onFocus(event);
712
+ handlers.onFocus?.(event);
774
713
  }
775
714
  })
776
715
  });
@@ -857,12 +796,6 @@ process.env.NODE_ENV !== "production" ? Tabs.propTypes /* remove-proptypes */ =
857
796
  * @default 'horizontal'
858
797
  */
859
798
  orientation: PropTypes.oneOf(['horizontal', 'vertical']),
860
- /**
861
- * The component used to render the scroll buttons.
862
- * @deprecated use the `slots.scrollButtons` prop instead. This prop will be removed in a future major release. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.
863
- * @default TabScrollButton
864
- */
865
- ScrollButtonComponent: PropTypes.elementType,
866
799
  /**
867
800
  * Determine behavior of scroll buttons when tabs are set to scroll:
868
801
  *
@@ -900,32 +833,18 @@ process.env.NODE_ENV !== "production" ? Tabs.propTypes /* remove-proptypes */ =
900
833
  */
901
834
  slots: PropTypes.shape({
902
835
  endScrollButtonIcon: PropTypes.elementType,
903
- EndScrollButtonIcon: PropTypes.elementType,
904
836
  indicator: PropTypes.elementType,
905
837
  list: PropTypes.elementType,
906
838
  root: PropTypes.elementType,
907
839
  scrollbar: PropTypes.elementType,
908
840
  scrollButtons: PropTypes.elementType,
909
841
  scroller: PropTypes.elementType,
910
- startScrollButtonIcon: PropTypes.elementType,
911
- StartScrollButtonIcon: PropTypes.elementType
842
+ startScrollButtonIcon: PropTypes.elementType
912
843
  }),
913
844
  /**
914
845
  * The system prop that allows defining system overrides as well as additional CSS styles.
915
846
  */
916
847
  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
917
- /**
918
- * Props applied to the tab indicator element.
919
- * @deprecated use the `slotProps.indicator` prop instead. This prop will be removed in a future major release. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.
920
- * @default {}
921
- */
922
- TabIndicatorProps: PropTypes.object,
923
- /**
924
- * Props applied to the [`TabScrollButton`](https://mui.com/material-ui/api/tab-scroll-button/) element.
925
- * @deprecated use the `slotProps.scrollButtons` prop instead. This prop will be removed in a future major release. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.
926
- * @default {}
927
- */
928
- TabScrollButtonProps: PropTypes.object,
929
848
  /**
930
849
  * Determines the color of the `Tab`.
931
850
  * @default 'primary'