@react-md/core 6.3.3 → 6.4.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.
Files changed (456) hide show
  1. package/dist/CoreProviders.d.ts +1 -0
  2. package/dist/CoreProviders.js.map +1 -1
  3. package/dist/_base.scss +3 -0
  4. package/dist/_core.scss +1 -0
  5. package/dist/_utils.scss +15 -7
  6. package/dist/app-bar/AppBar.js.map +1 -1
  7. package/dist/app-bar/AppBarTitle.js.map +1 -1
  8. package/dist/autocomplete/AutocompleteListboxChildren.js.map +1 -1
  9. package/dist/autocomplete/types.js.map +1 -1
  10. package/dist/autocomplete/utils.js.map +1 -1
  11. package/dist/avatar/Avatar.js.map +1 -1
  12. package/dist/box/_box.scss +20 -1
  13. package/dist/box/styles.d.ts +39 -0
  14. package/dist/box/styles.js +39 -0
  15. package/dist/box/styles.js.map +1 -1
  16. package/dist/button/Button.js.map +1 -1
  17. package/dist/button/FloatingActionButton.js.map +1 -1
  18. package/dist/card/Card.js.map +1 -1
  19. package/dist/card/CardContent.js.map +1 -1
  20. package/dist/card/ClickableCard.js.map +1 -1
  21. package/dist/chip/Chip.js.map +1 -1
  22. package/dist/datetime/NativeDateField.js.map +1 -1
  23. package/dist/datetime/NativeTimeField.js.map +1 -1
  24. package/dist/datetime/useDateField.js.map +1 -1
  25. package/dist/datetime/useTimeField.js.map +1 -1
  26. package/dist/dialog/Dialog.js.map +1 -1
  27. package/dist/dialog/DialogContainer.js.map +1 -1
  28. package/dist/dialog/DialogContent.js.map +1 -1
  29. package/dist/dialog/DialogFooter.js.map +1 -1
  30. package/dist/divider/Divider.js.map +1 -1
  31. package/dist/draggable/useDraggable.js.map +1 -1
  32. package/dist/draggable/utils.js.map +1 -1
  33. package/dist/expansion-panel/ExpansionPanelHeader.js.map +1 -1
  34. package/dist/files/FileInput.js.map +1 -1
  35. package/dist/files/useFileUpload.js.map +1 -1
  36. package/dist/files/validation.js.map +1 -1
  37. package/dist/focus/useFocusContainer.js.map +1 -1
  38. package/dist/form/Fieldset.d.ts +19 -0
  39. package/dist/form/Fieldset.js +22 -2
  40. package/dist/form/Fieldset.js.map +1 -1
  41. package/dist/form/FormMessageContainer.js.map +1 -1
  42. package/dist/form/FormMessageCounter.js.map +1 -1
  43. package/dist/form/InputToggle.js.map +1 -1
  44. package/dist/form/Legend.d.ts +27 -5
  45. package/dist/form/Legend.js +39 -6
  46. package/dist/form/Legend.js.map +1 -1
  47. package/dist/form/Listbox.js.map +1 -1
  48. package/dist/form/ListboxProvider.js.map +1 -1
  49. package/dist/form/NativeSelect.js.map +1 -1
  50. package/dist/form/Password.js.map +1 -1
  51. package/dist/form/ResizingTextAreaWrapper.js.map +1 -1
  52. package/dist/form/Select.js.map +1 -1
  53. package/dist/form/Slider.js.map +1 -1
  54. package/dist/form/SliderContainer.js.map +1 -1
  55. package/dist/form/SliderThumb.js.map +1 -1
  56. package/dist/form/SliderTrack.js.map +1 -1
  57. package/dist/form/SliderValueMarks.js.map +1 -1
  58. package/dist/form/Switch.js.map +1 -1
  59. package/dist/form/TextArea.js.map +1 -1
  60. package/dist/form/TextField.js.map +1 -1
  61. package/dist/form/TextFieldContainer.js.map +1 -1
  62. package/dist/form/_fieldset.scss +7 -0
  63. package/dist/form/_legend.scss +68 -0
  64. package/dist/form/_text-field.scss +39 -4
  65. package/dist/form/fieldsetStyles.d.ts +6 -1
  66. package/dist/form/fieldsetStyles.js +3 -2
  67. package/dist/form/fieldsetStyles.js.map +1 -1
  68. package/dist/form/inputToggleStyles.js.map +1 -1
  69. package/dist/form/labelStyles.d.ts +1 -1
  70. package/dist/form/labelStyles.js +1 -1
  71. package/dist/form/labelStyles.js.map +1 -1
  72. package/dist/form/legendStyles.d.ts +83 -0
  73. package/dist/form/legendStyles.js +25 -0
  74. package/dist/form/legendStyles.js.map +1 -0
  75. package/dist/form/selectUtils.js.map +1 -1
  76. package/dist/form/textFieldContainerStyles.js.map +1 -1
  77. package/dist/form/types.d.ts +28 -6
  78. package/dist/form/types.js.map +1 -1
  79. package/dist/form/useCheckboxGroup.js.map +1 -1
  80. package/dist/form/useCombobox.js.map +1 -1
  81. package/dist/form/useNumberField.js +16 -19
  82. package/dist/form/useNumberField.js.map +1 -1
  83. package/dist/form/useRangeSlider.js.map +1 -1
  84. package/dist/form/useSlider.js.map +1 -1
  85. package/dist/form/useTextField.d.ts +1 -1
  86. package/dist/form/useTextField.js.map +1 -1
  87. package/dist/hoverMode/useHoverMode.js.map +1 -1
  88. package/dist/icon/FontIcon.js.map +1 -1
  89. package/dist/icon/IconRotator.js.map +1 -1
  90. package/dist/icon/MaterialIcon.js.map +1 -1
  91. package/dist/icon/MaterialSymbol.js.map +1 -1
  92. package/dist/icon/SVGIcon.js.map +1 -1
  93. package/dist/icon/config.d.ts +0 -1
  94. package/dist/icon/config.js +10 -7
  95. package/dist/icon/config.js.map +1 -1
  96. package/dist/icon/materialConfig.js.map +1 -1
  97. package/dist/icon/styles.js.map +1 -1
  98. package/dist/interaction/UserInteractionModeProvider.js +6 -4
  99. package/dist/interaction/UserInteractionModeProvider.js.map +1 -1
  100. package/dist/interaction/types.js.map +1 -1
  101. package/dist/interaction/useElementInteraction.js.map +1 -1
  102. package/dist/layout/LayoutAppBar.d.ts +6 -6
  103. package/dist/layout/LayoutAppBar.js +6 -6
  104. package/dist/layout/LayoutAppBar.js.map +1 -1
  105. package/dist/layout/LayoutNav.js.map +1 -1
  106. package/dist/layout/LayoutWindowSplitter.js.map +1 -1
  107. package/dist/layout/Main.js.map +1 -1
  108. package/dist/layout/useExpandableLayout.js +43 -0
  109. package/dist/layout/useExpandableLayout.js.map +1 -1
  110. package/dist/layout/useHorizontalLayoutTransition.js.map +1 -1
  111. package/dist/layout/useLayoutTree.js.map +1 -1
  112. package/dist/layout/useLayoutWindowSplitter.js.map +1 -1
  113. package/dist/layout/useResizableLayout.js.map +1 -1
  114. package/dist/link/Link.js.map +1 -1
  115. package/dist/link/SkipToMainContent.js +19 -21
  116. package/dist/link/SkipToMainContent.js.map +1 -1
  117. package/dist/list/List.js.map +1 -1
  118. package/dist/list/ListItem.js.map +1 -1
  119. package/dist/list/ListItemAddon.js.map +1 -1
  120. package/dist/list/ListItemLink.js.map +1 -1
  121. package/dist/list/ListSubheader.js.map +1 -1
  122. package/dist/list/getListItemHeight.js.map +1 -1
  123. package/dist/list/listItemStyles.js.map +1 -1
  124. package/dist/list/types.js.map +1 -1
  125. package/dist/media-queries/AppSizeProvider.d.ts +2 -0
  126. package/dist/media-queries/AppSizeProvider.js +3 -2
  127. package/dist/media-queries/AppSizeProvider.js.map +1 -1
  128. package/dist/media-queries/appSize.d.ts +3 -0
  129. package/dist/media-queries/appSize.js +3 -1
  130. package/dist/media-queries/appSize.js.map +1 -1
  131. package/dist/media-queries/config.d.ts +11 -0
  132. package/dist/media-queries/config.js +26 -0
  133. package/dist/media-queries/config.js.map +1 -0
  134. package/dist/menu/DropdownMenu.js.map +1 -1
  135. package/dist/menu/Menu.js.map +1 -1
  136. package/dist/menu/MenuItemButton.js.map +1 -1
  137. package/dist/menu/MenuItemFileInput.js.map +1 -1
  138. package/dist/menu/MenuItemInputToggle.js.map +1 -1
  139. package/dist/menu/MenuItemSeparator.js.map +1 -1
  140. package/dist/menu/MenuVisibilityProvider.js.map +1 -1
  141. package/dist/menu/MenuWidget.js.map +1 -1
  142. package/dist/menu/useContextMenu.js.map +1 -1
  143. package/dist/movement/types.d.ts +28 -3
  144. package/dist/movement/types.js.map +1 -1
  145. package/dist/movement/useKeyboardMovementProvider.js +96 -47
  146. package/dist/movement/useKeyboardMovementProvider.js.map +1 -1
  147. package/dist/navigation/CollapsibleNavGroup.js.map +1 -1
  148. package/dist/navigation/NavItem.js.map +1 -1
  149. package/dist/navigation/NavItemButton.js.map +1 -1
  150. package/dist/navigation/NavItemLink.js.map +1 -1
  151. package/dist/navigation/getTableOfContentsHeadings.js.map +1 -1
  152. package/dist/navigation/types.js.map +1 -1
  153. package/dist/overlay/Overlay.js.map +1 -1
  154. package/dist/positioning/createHorizontalPosition.js.map +1 -1
  155. package/dist/positioning/createVerticalPosition.js.map +1 -1
  156. package/dist/positioning/useFixedPositioning.js.map +1 -1
  157. package/dist/progress/CircularProgress.js.map +1 -1
  158. package/dist/progress/LinearProgress.js.map +1 -1
  159. package/dist/progress/linearProgressStyles.js.map +1 -1
  160. package/dist/responsive-item/ResponsiveItem.js.map +1 -1
  161. package/dist/responsive-item/ResponsiveItemOverlay.js.map +1 -1
  162. package/dist/searching/caseInsensitive.js.map +1 -1
  163. package/dist/segmented-button/SegmentedButton.js.map +1 -1
  164. package/dist/segmented-button/SegmentedButtonContainer.js.map +1 -1
  165. package/dist/segmented-button/segmentedButtonStyles.js.map +1 -1
  166. package/dist/sheet/Sheet.js.map +1 -1
  167. package/dist/snackbar/Toast.js.map +1 -1
  168. package/dist/spinbutton/SpinButton.d.ts +16 -0
  169. package/dist/spinbutton/SpinButton.js +55 -0
  170. package/dist/spinbutton/SpinButton.js.map +1 -0
  171. package/dist/spinbutton/SpinButtonGroupProvider.d.ts +17 -0
  172. package/dist/spinbutton/SpinButtonGroupProvider.js +19 -0
  173. package/dist/spinbutton/SpinButtonGroupProvider.js.map +1 -0
  174. package/dist/spinbutton/defaults.d.ts +9 -0
  175. package/dist/spinbutton/defaults.js +25 -0
  176. package/dist/spinbutton/defaults.js.map +1 -0
  177. package/dist/spinbutton/types.d.ts +324 -0
  178. package/dist/spinbutton/types.js +5 -0
  179. package/dist/spinbutton/types.js.map +1 -0
  180. package/dist/spinbutton/useSpinButton.d.ts +5 -0
  181. package/dist/spinbutton/useSpinButton.js +260 -0
  182. package/dist/spinbutton/useSpinButton.js.map +1 -0
  183. package/dist/spinbutton/useSpinButtonGroupProvider.d.ts +27 -0
  184. package/dist/spinbutton/useSpinButtonGroupProvider.js +49 -0
  185. package/dist/spinbutton/useSpinButtonGroupProvider.js.map +1 -0
  186. package/dist/spinbutton/utils/deselectNode.d.ts +5 -0
  187. package/dist/spinbutton/utils/deselectNode.js +17 -0
  188. package/dist/spinbutton/utils/deselectNode.js.map +1 -0
  189. package/dist/spinbutton/utils/resolveInputEvent.d.ts +30 -0
  190. package/dist/spinbutton/utils/resolveInputEvent.js +53 -0
  191. package/dist/spinbutton/utils/resolveInputEvent.js.map +1 -0
  192. package/dist/spinbutton/utils/selectNode.d.ts +5 -0
  193. package/dist/spinbutton/utils/selectNode.js +15 -0
  194. package/dist/spinbutton/utils/selectNode.js.map +1 -0
  195. package/dist/table/StickyTableSection.js.map +1 -1
  196. package/dist/table/Table.js.map +1 -1
  197. package/dist/table/TableBody.js.map +1 -1
  198. package/dist/table/TableCellContent.js.map +1 -1
  199. package/dist/table/TableCheckbox.js.map +1 -1
  200. package/dist/table/TableFooter.js.map +1 -1
  201. package/dist/table/TableHeader.js.map +1 -1
  202. package/dist/table/TableRadio.js.map +1 -1
  203. package/dist/table/TableRow.js.map +1 -1
  204. package/dist/table/useStickyTableSection.js.map +1 -1
  205. package/dist/tabs/SimpleTabPanel.js.map +1 -1
  206. package/dist/tabs/SimpleTabPanels.js.map +1 -1
  207. package/dist/tabs/Tab.js.map +1 -1
  208. package/dist/tabs/TabList.js.map +1 -1
  209. package/dist/tabs/TabListScrollButton.js.map +1 -1
  210. package/dist/tabs/useMaxTabPanelHeight.js.map +1 -1
  211. package/dist/test-utils/data-testid.js.map +1 -1
  212. package/dist/test-utils/mocks/match-media.js +5 -5
  213. package/dist/test-utils/mocks/match-media.js.map +1 -1
  214. package/dist/test-utils/vitest/timers.d.ts +1 -1
  215. package/dist/test-utils/vitest/timers.js +1 -1
  216. package/dist/test-utils/vitest/timers.js.map +1 -1
  217. package/dist/tooltip/Tooltip.js.map +1 -1
  218. package/dist/tooltip/TooltipHoverModeProvider.js.map +1 -1
  219. package/dist/tooltip/useTooltip.js.map +1 -1
  220. package/dist/transition/CSSTransition.js.map +1 -1
  221. package/dist/transition/Collapse.js.map +1 -1
  222. package/dist/transition/CrossFade.js.map +1 -1
  223. package/dist/transition/ScaleTransition.js.map +1 -1
  224. package/dist/transition/SkeletonPlaceholder.js.map +1 -1
  225. package/dist/transition/Slide.js.map +1 -1
  226. package/dist/transition/SlideContainer.js.map +1 -1
  227. package/dist/transition/types.js.map +1 -1
  228. package/dist/transition/useCollapseTransition.js.map +1 -1
  229. package/dist/transition/useCrossFadeTransition.js.map +1 -1
  230. package/dist/transition/useMaxWidthTransition.js.map +1 -1
  231. package/dist/transition/useScaleTransition.js.map +1 -1
  232. package/dist/transition/useSkeletonPlaceholder.js.map +1 -1
  233. package/dist/tree/Tree.js.map +1 -1
  234. package/dist/tree/TreeItem.js.map +1 -1
  235. package/dist/tree/TreeProvider.js.map +1 -1
  236. package/dist/tree/styles.js.map +1 -1
  237. package/dist/tree/types.js.map +1 -1
  238. package/dist/tree/useTreeMovement.js.map +1 -1
  239. package/dist/typography/HighlightTextMark.js.map +1 -1
  240. package/dist/typography/Mark.js.map +1 -1
  241. package/dist/typography/TextContainer.js.map +1 -1
  242. package/dist/typography/Typography.js.map +1 -1
  243. package/dist/typography/_typography.scss +0 -1
  244. package/dist/useElementSize.js.map +1 -1
  245. package/dist/useIntersectionObserver.js.map +1 -1
  246. package/dist/useMutationObserver.js.map +1 -1
  247. package/dist/useWindowSize.js.map +1 -1
  248. package/dist/utils/getNumberOfDigits.d.ts +7 -0
  249. package/dist/utils/getNumberOfDigits.js +11 -0
  250. package/dist/utils/getNumberOfDigits.js.map +1 -0
  251. package/dist/utils/nearest.js +2 -1
  252. package/dist/utils/nearest.js.map +1 -1
  253. package/dist/utils/useDevEffect.d.ts +7 -0
  254. package/dist/utils/useDevEffect.js +8 -0
  255. package/dist/utils/useDevEffect.js.map +1 -0
  256. package/dist/window-splitter/WindowSplitter.js +3 -2
  257. package/dist/window-splitter/WindowSplitter.js.map +1 -1
  258. package/dist/window-splitter/_window-splitter.scss +60 -12
  259. package/dist/window-splitter/styles.d.ts +9 -0
  260. package/dist/window-splitter/styles.js +3 -2
  261. package/dist/window-splitter/styles.js.map +1 -1
  262. package/dist/window-splitter/useWindowSplitter.js.map +1 -1
  263. package/package.json +38 -30
  264. package/src/CoreProviders.tsx +1 -0
  265. package/src/app-bar/AppBar.tsx +1 -2
  266. package/src/app-bar/AppBarTitle.tsx +1 -2
  267. package/src/autocomplete/AutocompleteListboxChildren.tsx +3 -1
  268. package/src/autocomplete/types.ts +24 -19
  269. package/src/autocomplete/utils.ts +9 -6
  270. package/src/avatar/Avatar.tsx +2 -1
  271. package/src/box/styles.ts +39 -0
  272. package/src/button/Button.tsx +2 -1
  273. package/src/button/FloatingActionButton.tsx +2 -1
  274. package/src/card/Card.tsx +2 -1
  275. package/src/card/CardContent.tsx +1 -2
  276. package/src/card/ClickableCard.tsx +1 -2
  277. package/src/chip/Chip.tsx +2 -1
  278. package/src/datetime/NativeDateField.tsx +2 -1
  279. package/src/datetime/NativeTimeField.tsx +2 -1
  280. package/src/datetime/useDateField.ts +13 -8
  281. package/src/datetime/useTimeField.ts +13 -8
  282. package/src/dialog/Dialog.tsx +2 -1
  283. package/src/dialog/DialogContainer.tsx +1 -2
  284. package/src/dialog/DialogContent.tsx +1 -2
  285. package/src/dialog/DialogFooter.tsx +1 -2
  286. package/src/divider/Divider.tsx +1 -2
  287. package/src/draggable/useDraggable.ts +4 -4
  288. package/src/draggable/utils.ts +4 -2
  289. package/src/expansion-panel/ExpansionPanelHeader.tsx +1 -2
  290. package/src/files/FileInput.tsx +2 -1
  291. package/src/files/useFileUpload.ts +6 -6
  292. package/src/files/validation.ts +1 -2
  293. package/src/focus/useFocusContainer.ts +4 -4
  294. package/src/form/Fieldset.tsx +25 -3
  295. package/src/form/FormMessageContainer.tsx +1 -2
  296. package/src/form/FormMessageCounter.tsx +1 -2
  297. package/src/form/InputToggle.tsx +3 -3
  298. package/src/form/Legend.tsx +55 -10
  299. package/src/form/Listbox.tsx +1 -2
  300. package/src/form/ListboxProvider.ts +3 -2
  301. package/src/form/NativeSelect.tsx +2 -1
  302. package/src/form/Password.tsx +4 -2
  303. package/src/form/ResizingTextAreaWrapper.tsx +1 -2
  304. package/src/form/Select.tsx +2 -1
  305. package/src/form/Slider.tsx +2 -1
  306. package/src/form/SliderContainer.tsx +1 -2
  307. package/src/form/SliderThumb.tsx +6 -3
  308. package/src/form/SliderTrack.tsx +2 -1
  309. package/src/form/SliderValueMarks.tsx +1 -2
  310. package/src/form/Switch.tsx +2 -1
  311. package/src/form/TextArea.tsx +1 -2
  312. package/src/form/TextField.tsx +2 -1
  313. package/src/form/TextFieldContainer.tsx +1 -2
  314. package/src/form/fieldsetStyles.ts +18 -3
  315. package/src/form/inputToggleStyles.ts +4 -2
  316. package/src/form/labelStyles.ts +1 -1
  317. package/src/form/legendStyles.ts +132 -0
  318. package/src/form/selectUtils.ts +3 -2
  319. package/src/form/textFieldContainerStyles.ts +1 -2
  320. package/src/form/types.ts +35 -17
  321. package/src/form/useCheckboxGroup.ts +3 -2
  322. package/src/form/useCombobox.ts +8 -3
  323. package/src/form/useNumberField.ts +36 -35
  324. package/src/form/useRangeSlider.ts +1 -2
  325. package/src/form/useSlider.ts +1 -2
  326. package/src/form/useTextField.ts +9 -4
  327. package/src/hoverMode/useHoverMode.ts +4 -8
  328. package/src/icon/FontIcon.tsx +1 -2
  329. package/src/icon/IconRotator.tsx +1 -2
  330. package/src/icon/MaterialIcon.tsx +2 -1
  331. package/src/icon/MaterialSymbol.tsx +2 -1
  332. package/src/icon/SVGIcon.tsx +1 -2
  333. package/src/icon/config.tsx +10 -7
  334. package/src/icon/materialConfig.ts +1 -2
  335. package/src/icon/styles.ts +1 -2
  336. package/src/interaction/UserInteractionModeProvider.tsx +9 -4
  337. package/src/interaction/types.ts +1 -2
  338. package/src/interaction/useElementInteraction.tsx +3 -2
  339. package/src/layout/LayoutAppBar.tsx +6 -6
  340. package/src/layout/LayoutNav.tsx +2 -1
  341. package/src/layout/LayoutWindowSplitter.tsx +2 -1
  342. package/src/layout/Main.tsx +1 -2
  343. package/src/layout/useExpandableLayout.ts +63 -5
  344. package/src/layout/useHorizontalLayoutTransition.ts +1 -2
  345. package/src/layout/useLayoutTree.ts +2 -2
  346. package/src/layout/useLayoutWindowSplitter.ts +6 -6
  347. package/src/layout/useResizableLayout.ts +3 -6
  348. package/src/link/Link.tsx +1 -2
  349. package/src/link/SkipToMainContent.tsx +20 -23
  350. package/src/list/List.tsx +1 -2
  351. package/src/list/ListItem.tsx +2 -1
  352. package/src/list/ListItemAddon.tsx +2 -1
  353. package/src/list/ListItemLink.tsx +2 -1
  354. package/src/list/ListSubheader.tsx +1 -2
  355. package/src/list/getListItemHeight.ts +8 -9
  356. package/src/list/listItemStyles.ts +1 -2
  357. package/src/list/types.ts +1 -2
  358. package/src/media-queries/AppSizeProvider.tsx +8 -10
  359. package/src/media-queries/appSize.ts +3 -0
  360. package/src/media-queries/config.ts +41 -0
  361. package/src/menu/DropdownMenu.tsx +4 -5
  362. package/src/menu/Menu.tsx +2 -1
  363. package/src/menu/MenuItemButton.tsx +1 -2
  364. package/src/menu/MenuItemFileInput.tsx +2 -1
  365. package/src/menu/MenuItemInputToggle.tsx +3 -3
  366. package/src/menu/MenuItemSeparator.tsx +2 -1
  367. package/src/menu/MenuVisibilityProvider.tsx +4 -2
  368. package/src/menu/MenuWidget.tsx +1 -2
  369. package/src/menu/useContextMenu.ts +4 -2
  370. package/src/movement/types.ts +52 -13
  371. package/src/movement/useKeyboardMovementProvider.ts +77 -38
  372. package/src/navigation/CollapsibleNavGroup.tsx +1 -2
  373. package/src/navigation/NavItem.tsx +1 -2
  374. package/src/navigation/NavItemButton.tsx +2 -1
  375. package/src/navigation/NavItemLink.tsx +2 -1
  376. package/src/navigation/getTableOfContentsHeadings.ts +1 -2
  377. package/src/navigation/types.ts +1 -2
  378. package/src/overlay/Overlay.tsx +2 -1
  379. package/src/positioning/createHorizontalPosition.ts +10 -12
  380. package/src/positioning/createVerticalPosition.ts +10 -11
  381. package/src/positioning/useFixedPositioning.ts +6 -3
  382. package/src/progress/CircularProgress.tsx +2 -1
  383. package/src/progress/LinearProgress.tsx +2 -1
  384. package/src/progress/linearProgressStyles.ts +1 -2
  385. package/src/responsive-item/ResponsiveItem.tsx +1 -2
  386. package/src/responsive-item/ResponsiveItemOverlay.tsx +2 -1
  387. package/src/searching/caseInsensitive.ts +2 -4
  388. package/src/segmented-button/SegmentedButton.tsx +2 -1
  389. package/src/segmented-button/SegmentedButtonContainer.tsx +2 -1
  390. package/src/segmented-button/segmentedButtonStyles.ts +1 -2
  391. package/src/sheet/Sheet.tsx +1 -2
  392. package/src/snackbar/Toast.tsx +2 -1
  393. package/src/spinbutton/SpinButton.tsx +98 -0
  394. package/src/spinbutton/SpinButtonGroupProvider.tsx +32 -0
  395. package/src/spinbutton/defaults.ts +45 -0
  396. package/src/spinbutton/types.ts +413 -0
  397. package/src/spinbutton/useSpinButton.ts +311 -0
  398. package/src/spinbutton/useSpinButtonGroupProvider.ts +104 -0
  399. package/src/spinbutton/utils/deselectNode.ts +17 -0
  400. package/src/spinbutton/utils/resolveInputEvent.ts +112 -0
  401. package/src/spinbutton/utils/selectNode.ts +15 -0
  402. package/src/table/StickyTableSection.tsx +2 -1
  403. package/src/table/Table.tsx +1 -2
  404. package/src/table/TableBody.tsx +2 -1
  405. package/src/table/TableCellContent.tsx +1 -2
  406. package/src/table/TableCheckbox.tsx +1 -2
  407. package/src/table/TableFooter.tsx +1 -2
  408. package/src/table/TableHeader.tsx +1 -2
  409. package/src/table/TableRadio.tsx +1 -2
  410. package/src/table/TableRow.tsx +1 -2
  411. package/src/table/useStickyTableSection.tsx +1 -2
  412. package/src/tabs/SimpleTabPanel.tsx +2 -1
  413. package/src/tabs/SimpleTabPanels.tsx +2 -1
  414. package/src/tabs/Tab.tsx +3 -6
  415. package/src/tabs/TabList.tsx +2 -1
  416. package/src/tabs/TabListScrollButton.tsx +1 -2
  417. package/src/tabs/useMaxTabPanelHeight.ts +7 -4
  418. package/src/test-utils/data-testid.ts +1 -2
  419. package/src/test-utils/mocks/match-media.ts +5 -10
  420. package/src/test-utils/vitest/timers.ts +1 -1
  421. package/src/tooltip/Tooltip.tsx +2 -1
  422. package/src/tooltip/TooltipHoverModeProvider.tsx +1 -2
  423. package/src/tooltip/useTooltip.ts +9 -5
  424. package/src/transition/CSSTransition.tsx +2 -1
  425. package/src/transition/Collapse.tsx +4 -2
  426. package/src/transition/CrossFade.tsx +2 -1
  427. package/src/transition/ScaleTransition.tsx +2 -1
  428. package/src/transition/SkeletonPlaceholder.tsx +1 -2
  429. package/src/transition/Slide.tsx +2 -1
  430. package/src/transition/SlideContainer.tsx +1 -2
  431. package/src/transition/types.ts +15 -16
  432. package/src/transition/useCollapseTransition.ts +6 -5
  433. package/src/transition/useCrossFadeTransition.ts +3 -2
  434. package/src/transition/useMaxWidthTransition.ts +1 -2
  435. package/src/transition/useScaleTransition.ts +3 -2
  436. package/src/transition/useSkeletonPlaceholder.ts +1 -2
  437. package/src/tree/Tree.tsx +2 -1
  438. package/src/tree/TreeItem.tsx +2 -1
  439. package/src/tree/TreeProvider.tsx +4 -4
  440. package/src/tree/styles.ts +1 -2
  441. package/src/tree/types.ts +1 -2
  442. package/src/tree/useTreeMovement.ts +1 -2
  443. package/src/typography/HighlightTextMark.tsx +1 -2
  444. package/src/typography/Mark.tsx +1 -2
  445. package/src/typography/TextContainer.tsx +1 -2
  446. package/src/typography/Typography.tsx +1 -2
  447. package/src/useElementSize.ts +7 -4
  448. package/src/useIntersectionObserver.ts +3 -2
  449. package/src/useMutationObserver.ts +3 -2
  450. package/src/useWindowSize.ts +4 -2
  451. package/src/utils/getNumberOfDigits.ts +18 -0
  452. package/src/utils/nearest.ts +2 -1
  453. package/src/utils/useDevEffect.ts +9 -0
  454. package/src/window-splitter/WindowSplitter.tsx +5 -2
  455. package/src/window-splitter/styles.ts +13 -2
  456. package/src/window-splitter/useWindowSplitter.ts +3 -1
@@ -0,0 +1,132 @@
1
+ import { cnb } from "cnbuilder";
2
+
3
+ import { cssUtils } from "../cssUtils.js";
4
+ import { bem } from "../utils/bem.js";
5
+ import { getFormConfig } from "./formConfig.js";
6
+ import { label } from "./labelStyles.js";
7
+ import { type FormTheme, type LabelClassNameOptions } from "./types.js";
8
+
9
+ const styles = bem("rmd-legend");
10
+
11
+ /**
12
+ * @since 6.4.0
13
+ */
14
+ export type LegendLabelClassNameOptions = Pick<
15
+ LabelClassNameOptions,
16
+ "active" | "gap" | "dense" | "error" | "stacked" | "disabled" | "reversed"
17
+ >;
18
+
19
+ /**
20
+ * @since 6.4.0
21
+ */
22
+ export interface LegendClassNameOptions extends LegendLabelClassNameOptions {
23
+ className?: string;
24
+
25
+ /**
26
+ * @defaultValue `false`
27
+ */
28
+ srOnly?: boolean;
29
+
30
+ /**
31
+ * Set this to `true` to make the `<legend>` have the styles of a floating label.
32
+ * This requires the parent `<fieldset>` to have the `floatingLegend` flag
33
+ * enabled.
34
+ *
35
+ * @defaultValue `false`
36
+ */
37
+ floating?: boolean;
38
+
39
+ /**
40
+ * This will only apply if {@link floating} is `true`.
41
+ *
42
+ * @see {@link FormTheme}
43
+ * @defaultValue `getFormConfig("theme")`
44
+ */
45
+ theme?: FormTheme;
46
+
47
+ /**
48
+ * This will only apply if {@link floating} is `true`.
49
+ *
50
+ * @see {@link LabelClassNameOptions.active}
51
+ * @defaultValue `false`
52
+ */
53
+ active?: boolean;
54
+
55
+ /**
56
+ * This will only apply if {@link floating} is `true`.
57
+ *
58
+ * @see {@link LabelClassNameOptions.gap}
59
+ * @defaultValue `false`
60
+ */
61
+ gap?: boolean;
62
+
63
+ /**
64
+ * This will only apply if {@link floating} is `true`.
65
+ *
66
+ * @see {@link LabelClassNameOptions.disabled}
67
+ * @defaultValue `false`
68
+ */
69
+ disabled?: boolean;
70
+
71
+ /**
72
+ * This will only apply if {@link floating} is `true`.
73
+ *
74
+ * @see {@link LabelClassNameOptions.dense}
75
+ * @defaultValue `false`
76
+ */
77
+ dense?: boolean;
78
+
79
+ /**
80
+ * This will only apply if {@link floating} is `true`.
81
+ *
82
+ * @see {@link LabelClassNameOptions.error}
83
+ * @defaultValue `false`
84
+ */
85
+ error?: boolean;
86
+
87
+ /**
88
+ * This will only apply if {@link floating} is `true`.
89
+ *
90
+ * @see {@link LabelClassNameOptions.stacked}
91
+ * @defaultValue `false`
92
+ */
93
+ stacked?: boolean;
94
+
95
+ /**
96
+ * This will only apply if {@link floating} is `true`.
97
+ *
98
+ * @see {@link LabelClassNameOptions.reversed}
99
+ * @defaultValue `false`
100
+ */
101
+ reversed?: boolean;
102
+ }
103
+
104
+ /**
105
+ * @since 6.4.0
106
+ */
107
+ export function legend(options: LegendClassNameOptions = {}): string {
108
+ const {
109
+ className,
110
+ srOnly,
111
+ floating,
112
+ theme = getFormConfig("theme"),
113
+ ...labelOptions
114
+ } = options;
115
+
116
+ return cnb(
117
+ styles({
118
+ floating,
119
+ "floating-filled": floating && theme === "filled",
120
+ "floating-underline": floating && theme === "underline",
121
+ "floating-outline": floating && theme === "outline",
122
+ }),
123
+ floating &&
124
+ label({
125
+ ...labelOptions,
126
+ floating: true,
127
+ floatingActive: true,
128
+ }),
129
+ cssUtils({ srOnly }),
130
+ className
131
+ );
132
+ }
@@ -6,8 +6,9 @@ import { type MenuItemProps } from "../menu/MenuItem.js";
6
6
  * @internal
7
7
  * @since 6.0.0
8
8
  */
9
- export interface SelectOption<Value extends string | number = string>
10
- extends MenuItemProps {
9
+ export interface SelectOption<
10
+ Value extends string | number = string,
11
+ > extends MenuItemProps {
11
12
  value: Value;
12
13
  }
13
14
 
@@ -8,8 +8,7 @@ const styles = bem("rmd-text-field-container");
8
8
 
9
9
  /** @since 6.0.0 */
10
10
  export interface TextFieldContainerClassNameOptions
11
- extends FormThemeOptions,
12
- FormComponentStates {
11
+ extends FormThemeOptions, FormComponentStates {
13
12
  className?: string;
14
13
 
15
14
  /** @defaultValue `false` */
package/src/form/types.ts CHANGED
@@ -31,15 +31,27 @@ declare module "react" {
31
31
  "--rmd-text-field-addon-spacing"?: string | number;
32
32
  "--rmd-text-field-addon-margin-top"?: string | number;
33
33
  "--rmd-text-field-addon-left-offset"?: string | number;
34
+ /** @since 6.4.0 */
35
+ "--rmd-text-field-base-height"?: string | number;
34
36
  "--rmd-text-field-height"?: string | number;
37
+ /** @since 6.4.0 */
38
+ "--rmd-text-field-dense-height"?: string | number;
39
+ /** @since 6.4.0 */
40
+ "--rmd-text-field-label-height"?: string | number;
41
+ /** @since 6.4.0 */
42
+ "--rmd-text-field-dense-label-height"?: string | number;
35
43
  "--rmd-text-field-padding-left"?: string | number;
36
44
  "--rmd-text-field-padding-right"?: string | number;
37
45
  "--rmd-text-field-padding-top"?: string | number;
38
46
  "--rmd-text-field-border-color"?: string;
47
+ /** @since 6.4.0 */
48
+ "--rmd-text-field-border-radius"?: string | number;
39
49
  "--rmd-text-field-hover-border-color"?: string;
40
50
  "--rmd-text-field-filled-color"?: string;
41
51
  "--rmd-text-field-filled-padding"?: string | number;
42
52
  "--rmd-text-field-outlined-padding"?: string | number;
53
+ /** @since 6.4.0 */
54
+ "--rmd-text-field-outlined-border-radius"?: string | number;
43
55
  "--rmd-text-field-underlined-padding"?: string | number;
44
56
  }
45
57
  }
@@ -102,20 +114,30 @@ export interface FormConfiguration extends Required<FormThemeOptions> {
102
114
  }
103
115
 
104
116
  /**
105
- * @since 6.0.0
117
+ * @since 6.4.0
106
118
  */
107
- export interface FormComponentStates {
119
+ export interface InteractableFormComponentStates {
108
120
  /** @defaultValue `false` */
109
- error?: boolean;
121
+ disabled?: boolean;
110
122
 
111
123
  /** @defaultValue `false` */
112
- active?: boolean;
124
+ readOnly?: boolean;
125
+ }
113
126
 
127
+ /**
128
+ * @since 6.4.0
129
+ */
130
+ export interface EditableFormComponentStates extends InteractableFormComponentStates {
114
131
  /** @defaultValue `false` */
115
- disabled?: boolean;
132
+ error?: boolean;
133
+ }
116
134
 
135
+ /**
136
+ * @since 6.0.0
137
+ */
138
+ export interface FormComponentStates extends EditableFormComponentStates {
117
139
  /** @defaultValue `false` */
118
- readOnly?: boolean;
140
+ active?: boolean;
119
141
  }
120
142
 
121
143
  /**
@@ -255,7 +277,8 @@ export interface FormMessageClassNameOptions {
255
277
  }
256
278
 
257
279
  export interface FormMessageProps
258
- extends Omit<HTMLAttributes<HTMLDivElement>, "minLength" | "maxLength">,
280
+ extends
281
+ Omit<HTMLAttributes<HTMLDivElement>, "minLength" | "maxLength">,
259
282
  FormMessageClassNameOptions {
260
283
  /**
261
284
  * If this component is acting as a form-level error message handler, the role
@@ -359,8 +382,7 @@ export interface FormMessageInputLengthCounterProps {
359
382
  }
360
383
 
361
384
  export interface FormMessageWithCounterProps
362
- extends FormMessageProps,
363
- FormMessageInputLengthCounterProps {}
385
+ extends FormMessageProps, FormMessageInputLengthCounterProps {}
364
386
 
365
387
  /**
366
388
  * @since 6.0.0
@@ -477,14 +499,12 @@ export interface LabelClassNameOptions {
477
499
  }
478
500
 
479
501
  export interface LabelProps
480
- extends LabelHTMLAttributes<HTMLLabelElement>,
481
- LabelClassNameOptions {}
502
+ extends LabelHTMLAttributes<HTMLLabelElement>, LabelClassNameOptions {}
482
503
 
483
504
  /**
484
505
  * @since 6.0.0
485
506
  */
486
- export interface ConfigurableTextFieldAddonProps
487
- extends HTMLAttributes<HTMLSpanElement> {
507
+ export interface ConfigurableTextFieldAddonProps extends HTMLAttributes<HTMLSpanElement> {
488
508
  /**
489
509
  * Boolean if the addon should be presentational only and prevent pointer
490
510
  * events.
@@ -519,8 +539,7 @@ export interface TextFieldAddonProps extends ConfigurableTextFieldAddonProps {
519
539
  * `leftAddonProps` / `rightAddonProps`. Removed `stretch`
520
540
  */
521
541
  export interface TextFieldContainerOptions
522
- extends FormThemeOptions,
523
- FormComponentStates {
542
+ extends FormThemeOptions, FormComponentStates {
524
543
  /**
525
544
  * Set this to `true` to enable the dense spec which reduces the height.
526
545
  *
@@ -578,8 +597,7 @@ export interface TextFieldContainerOptions
578
597
  }
579
598
 
580
599
  export interface FormFieldOptions
581
- extends TextFieldContainerOptions,
582
- FormMessageContainerExtension {
600
+ extends TextFieldContainerOptions, FormMessageContainerExtension {
583
601
  /**
584
602
  * An optional floating label to use with the text field. A label is generally
585
603
  * recommended for accessibility, but can be omitted if an `aria-label` or
@@ -70,8 +70,9 @@ export interface CheckboxGroupImplementation<V extends string> {
70
70
  }
71
71
 
72
72
  /** @since 6.0.0 */
73
- export interface IndeterminateCheckboxGroupImplementation<V extends string>
74
- extends CheckboxGroupImplementation<V> {
73
+ export interface IndeterminateCheckboxGroupImplementation<
74
+ V extends string,
75
+ > extends CheckboxGroupImplementation<V> {
75
76
  getIndeterminateProps: () => {
76
77
  "aria-checked": "mixed" | undefined;
77
78
  name: string;
@@ -141,7 +141,9 @@ export interface ComboboxVisibilityOptions {
141
141
  export interface ConfigurableComboboxOptions<
142
142
  ComboboxEl extends HTMLElement = HTMLInputElement,
143
143
  PopupEl extends HTMLElement = HTMLElement,
144
- > extends ComboboxKeyboardMovementOptions<ComboboxEl>,
144
+ >
145
+ extends
146
+ ComboboxKeyboardMovementOptions<ComboboxEl>,
145
147
  ComboboxVisibilityOptions {
146
148
  /**
147
149
  * This is the {@link InputHTMLAttributes.form} attribute and is used to
@@ -259,7 +261,9 @@ export type ConfigurableComboboxMenuProps = Partial<
259
261
  */
260
262
  export interface ProvidedComboboxMenuProps<
261
263
  PopupEl extends HTMLElement = HTMLDivElement,
262
- > extends Required<ComboboxTransitionCallbacks>,
264
+ >
265
+ extends
266
+ Required<ComboboxTransitionCallbacks>,
263
267
  ComboboxWidgetPopupProps<PopupEl> {
264
268
  visible: boolean;
265
269
  onRequestClose: () => void;
@@ -276,7 +280,8 @@ export interface ProvidedComboboxMenuProps<
276
280
  * @since 6.0.0
277
281
  */
278
282
  export interface ComboboxMenuProps<PopupEl extends HTMLElement = HTMLDivElement>
279
- extends Omit<ConfigurableComboboxMenuProps, keyof ProvidedComboboxMenuProps>,
283
+ extends
284
+ Omit<ConfigurableComboboxMenuProps, keyof ProvidedComboboxMenuProps>,
280
285
  ProvidedComboboxMenuProps<PopupEl> {}
281
286
 
282
287
  /**
@@ -3,6 +3,7 @@
3
3
  import { useCallback, useRef, useState } from "react";
4
4
 
5
5
  import { type UseStateInitializer, type UseStateSetter } from "../types.js";
6
+ import { useIsomorphicLayoutEffect } from "../useIsomorphicLayoutEffect.js";
6
7
  import { withinRange } from "../utils/withinRange.js";
7
8
  import { useFormReset } from "./useFormReset.js";
8
9
  import {
@@ -47,7 +48,8 @@ export interface NumberFieldConstraints {
47
48
  * - Renamed `fixOnBlur` to `updateValueOnBlur`
48
49
  */
49
50
  export interface NumberFieldHookOptions
50
- extends Omit<TextFieldHookOptions, "defaultValue" | "isNumber">,
51
+ extends
52
+ Omit<TextFieldHookOptions, "defaultValue" | "isNumber">,
51
53
  NumberFieldConstraints {
52
54
  /**
53
55
  * @defaultValue `undefined`
@@ -112,42 +114,45 @@ export interface NumberFieldHookOptions
112
114
  }
113
115
 
114
116
  /** @since 6.0.0 */
115
- export interface NumberFieldHookState
116
- extends Omit<TextFieldHookState, "value"> {
117
+ export interface NumberFieldHookState extends Omit<
118
+ TextFieldHookState,
119
+ "value"
120
+ > {
117
121
  value: number | undefined;
118
122
  }
119
123
 
120
124
  /** @since 2.5.6 */
121
125
  export interface ProvidedNumberFieldProps
122
- extends ProvidedTextFieldProps,
123
- NumberFieldConstraints {
126
+ extends ProvidedTextFieldProps, NumberFieldConstraints {
124
127
  type: "number";
125
128
  }
126
129
 
127
130
  /** @since 2.5.6 */
128
131
  export interface ProvidedNumberFieldMessageProps
129
- extends ProvidedTextFieldMessageProps,
130
- NumberFieldConstraints {
132
+ extends ProvidedTextFieldMessageProps, NumberFieldConstraints {
131
133
  type: "number";
132
134
  }
133
135
 
134
136
  /** @since 6.0.0 */
135
- export interface NumberFieldImplementation
136
- extends Omit<TextFieldImplementation, "value" | "setState"> {
137
+ export interface NumberFieldImplementation extends Omit<
138
+ TextFieldImplementation,
139
+ "value" | "setState"
140
+ > {
137
141
  value: number | undefined;
138
142
  setState: UseStateSetter<NumberFieldHookState>;
139
143
  fieldProps: ProvidedNumberFieldProps;
140
144
  }
141
145
 
142
146
  /** @since 6.0.0 */
143
- export interface NumberFieldWithMessageImplementation
144
- extends NumberFieldImplementation {
147
+ export interface NumberFieldWithMessageImplementation extends NumberFieldImplementation {
145
148
  fieldProps: ProvidedNumberFieldMessageProps;
146
149
  }
147
150
 
148
151
  /** @since 6.0.0 */
149
- export interface ValidatedNumberFieldImplementation
150
- extends Omit<ValidatedTextFieldImplementation, "value" | "setState"> {
152
+ export interface ValidatedNumberFieldImplementation extends Omit<
153
+ ValidatedTextFieldImplementation,
154
+ "value" | "setState"
155
+ > {
151
156
  value: number | undefined;
152
157
  setState: UseStateSetter<NumberFieldHookState>;
153
158
  fieldProps: ProvidedNumberFieldProps | ProvidedNumberFieldMessageProps;
@@ -439,35 +444,31 @@ export function useNumberField(
439
444
  },
440
445
  });
441
446
 
447
+ const { error, errorMessage } = remaining;
448
+ const prevState = useRef({
449
+ error,
450
+ errorMessage,
451
+ value: number,
452
+ } satisfies NumberFieldHookState);
453
+ useIsomorphicLayoutEffect(() => {
454
+ prevState.current = {
455
+ error,
456
+ errorMessage,
457
+ value: number,
458
+ };
459
+ });
442
460
  const reset = useCallback(() => {
443
461
  resetTextField();
444
462
  setNumber(initial.current);
445
463
  }, [resetTextField]);
446
464
  const setState = useCallback<UseStateSetter<NumberFieldHookState>>(
447
465
  (nextState) => {
448
- if (typeof nextState === "function") {
449
- setNumber((prevNumber) => {
450
- let nextNumber: number | undefined = prevNumber;
451
- setTextFieldState((prevState) => {
452
- const updated = nextState({
453
- ...prevState,
454
- value: prevNumber,
455
- });
456
-
457
- nextNumber = updated.value;
458
-
459
- return {
460
- ...updated,
461
- value: `${nextNumber ?? ""}`,
462
- };
463
- });
464
-
465
- return nextNumber;
466
- });
467
- return;
468
- }
466
+ const resolvedNextState =
467
+ typeof nextState === "function"
468
+ ? nextState(prevState.current)
469
+ : nextState;
469
470
 
470
- const { value, error, errorMessage } = nextState;
471
+ const { value, error, errorMessage } = resolvedNextState;
471
472
  setNumber(value);
472
473
  setTextFieldState({
473
474
  value: `${value ?? ""}`,
@@ -31,8 +31,7 @@ export interface RangeSliderOptions extends SliderValueOptions {
31
31
  * @since 6.0.0
32
32
  */
33
33
  export interface RangeSliderImplementation
34
- extends Required<SliderValueOptions>,
35
- RangeSliderState {}
34
+ extends Required<SliderValueOptions>, RangeSliderState {}
36
35
 
37
36
  /**
38
37
  * @example Range Slider Example
@@ -45,8 +45,7 @@ export interface SliderState {
45
45
  * @since 6.0.0
46
46
  */
47
47
  export interface SliderImplementation
48
- extends Required<SliderValueOptions>,
49
- SliderState {}
48
+ extends Required<SliderValueOptions>, SliderState {}
50
49
 
51
50
  /**
52
51
  * @since 6.0.0
@@ -125,7 +125,8 @@ export interface TextFieldHookState {
125
125
  * @since 2.5.0
126
126
  */
127
127
  export interface ProvidedFormMessageProps
128
- extends Pick<FormMessageProps, "id" | "theme" | "children">,
128
+ extends
129
+ Pick<FormMessageProps, "id" | "theme" | "children">,
129
130
  Required<Pick<TextFieldProps, "error">>,
130
131
  Partial<Pick<FormMessageInputLengthCounterProps, "length" | "maxLength">> {}
131
132
 
@@ -137,8 +138,10 @@ export interface ProvidedFormMessageProps
137
138
  */
138
139
  export interface ProvidedTextFieldProps<
139
140
  E extends HTMLInputElement | HTMLTextAreaElement = HTMLInputElement,
140
- > extends TextFieldValidationOptions,
141
- TextFieldChangeHandlers<E>,
141
+ >
142
+ extends
143
+ TextFieldValidationOptions,
144
+ Required<TextFieldChangeHandlers<E>>,
142
145
  Required<Pick<TextFieldProps, "id" | "name" | "value" | "error">>,
143
146
  Pick<TextFieldProps, "aria-describedby" | "rightAddon"> {
144
147
  /**
@@ -288,7 +291,9 @@ export interface TextFieldHookComponentOptions<
288
291
  /** @since 2.5.6 */
289
292
  export interface TextFieldHookOptions<
290
293
  E extends HTMLInputElement | HTMLTextAreaElement = HTMLInputElement,
291
- > extends TextFieldValidationOptions,
294
+ >
295
+ extends
296
+ TextFieldValidationOptions,
292
297
  TextFieldHookComponentOptions<E>,
293
298
  TextFieldChangeHandlers<E> {
294
299
  /**
@@ -36,8 +36,7 @@ export interface HoverModeConfigurationOptions extends SimpleHoverModeContext {
36
36
  /**
37
37
  * @since 6.0.0
38
38
  */
39
- export interface ControlledHoverModeOptions
40
- extends HoverModeConfigurationOptions {
39
+ export interface ControlledHoverModeOptions extends HoverModeConfigurationOptions {
41
40
  setVisible: UseStateSetter<boolean>;
42
41
  }
43
42
 
@@ -53,16 +52,14 @@ export interface ControlledHoverModeImplementation {
53
52
  /**
54
53
  * @since 6.0.0
55
54
  */
56
- export interface UncontrolledHoverModeOptions
57
- extends HoverModeConfigurationOptions {
55
+ export interface UncontrolledHoverModeOptions extends HoverModeConfigurationOptions {
58
56
  defaultVisible?: UseStateInitializer<boolean>;
59
57
  }
60
58
 
61
59
  /**
62
60
  * @since 6.0.0
63
61
  */
64
- export interface UncontrolledHoverModeImplementation
65
- extends ControlledHoverModeImplementation {
62
+ export interface UncontrolledHoverModeImplementation extends ControlledHoverModeImplementation {
66
63
  visible: boolean;
67
64
  setVisible: UseStateSetter<boolean>;
68
65
  }
@@ -70,8 +67,7 @@ export interface UncontrolledHoverModeImplementation
70
67
  /**
71
68
  * @since 6.0.0
72
69
  */
73
- export interface HoverModeImplementation
74
- extends ControlledHoverModeImplementation {
70
+ export interface HoverModeImplementation extends ControlledHoverModeImplementation {
75
71
  visible?: boolean;
76
72
  setVisible?: UseStateSetter<boolean>;
77
73
  }
@@ -12,8 +12,7 @@ import { type FontIconClassNameOptions, icon } from "./styles.js";
12
12
  * `inline` and `theme` props.
13
13
  */
14
14
  export interface FontIconProps
15
- extends HTMLAttributes<HTMLSpanElement>,
16
- FontIconClassNameOptions {
15
+ extends HTMLAttributes<HTMLSpanElement>, FontIconClassNameOptions {
17
16
  /** @defaultValue `true` */
18
17
  "aria-hidden"?: AriaAttributes["aria-hidden"];
19
18
 
@@ -15,8 +15,7 @@ import { type IconRotatorClassNameOptions, iconRotator } from "./styles.js";
15
15
  * @since 6.0.0 Removed `animate` prop and added `disableTransition`
16
16
  */
17
17
  export interface IconRotatorBaseProps
18
- extends HTMLAttributes<HTMLSpanElement>,
19
- IconRotatorClassNameOptions {
18
+ extends HTMLAttributes<HTMLSpanElement>, IconRotatorClassNameOptions {
20
19
  /**
21
20
  * An optional style to apply to the surrounding span when the `forceIconWrap`
22
21
  * prop is enabled or the children is not a single react element.
@@ -6,7 +6,8 @@ import { type MaterialIconClassNameOptions, icon } from "./styles.js";
6
6
 
7
7
  /** @since 6.0.0 */
8
8
  export interface MaterialIconProps
9
- extends HTMLAttributes<HTMLSpanElement>,
9
+ extends
10
+ HTMLAttributes<HTMLSpanElement>,
10
11
  Partial<MaterialIconClassNameOptions> {
11
12
  /**
12
13
  * The icon name to use
@@ -24,7 +24,8 @@ declare module "react" {
24
24
  * @since 6.0.0
25
25
  */
26
26
  export interface MaterialSymbolProps
27
- extends HTMLAttributes<HTMLSpanElement>,
27
+ extends
28
+ HTMLAttributes<HTMLSpanElement>,
28
29
  MaterialSymbolCustomization,
29
30
  Partial<MaterialSymbolClassNameOptions> {
30
31
  /** @defaultValue `true` */
@@ -6,8 +6,7 @@ import { type SVGIconClassNameOptions, icon } from "./styles.js";
6
6
  * @since 6.0.0 Added the `inline` and `theme` props.
7
7
  */
8
8
  export interface SVGIconProps
9
- extends HTMLAttributes<SVGSVGElement>,
10
- SVGIconClassNameOptions {
9
+ extends HTMLAttributes<SVGSVGElement>, SVGIconClassNameOptions {
11
10
  /**
12
11
  * Boolean if the SVG should gain the `focusable` attribute. This is disabled
13
12
  * by default since IE11 and Edge actually default this to true and keyboard's
@@ -213,7 +213,6 @@ export type ConfigurableIconName = keyof ConfigurableIcons;
213
213
  * ICON_CONFIG.upload = <FileUploadIcon />;
214
214
  * ```
215
215
  *
216
- *
217
216
  * @since 6.0.0
218
217
  */
219
218
  export const ICON_CONFIG: ConfiguredIcons = {
@@ -289,13 +288,17 @@ export const ICON_CONFIG: ConfiguredIcons = {
289
288
  * @since 6.0.0
290
289
  */
291
290
  export function configureIcons(overrides: ConfiguredIcons): void {
292
- Object.entries(overrides).forEach(([name, value]) => {
293
- if (process.env.NODE_ENV !== "production" && !(name in ICON_CONFIG)) {
294
- throw new Error(`${name} is an invalid react-md icon name.`);
295
- }
291
+ if (process.env.NODE_ENV !== "production") {
292
+ Object.entries(overrides).forEach(([name, value]) => {
293
+ if (!(name in ICON_CONFIG)) {
294
+ throw new Error(`${name} is an invalid react-md icon name.`);
295
+ }
296
296
 
297
- ICON_CONFIG[name as keyof ConfiguredIcons] = value;
298
- });
297
+ ICON_CONFIG[name as keyof ConfiguredIcons] = value;
298
+ });
299
+ } else {
300
+ Object.assign(ICON_CONFIG, overrides);
301
+ }
299
302
  }
300
303
 
301
304
  /**
@@ -152,8 +152,7 @@ export type MaterialSymbolConfiguration = Required<MaterialSymbolCustomization>;
152
152
  * @since 6.0.0
153
153
  */
154
154
  export interface MaterialConfiguration
155
- extends MaterialIconConfiguration,
156
- MaterialSymbolConfiguration {}
155
+ extends MaterialIconConfiguration, MaterialSymbolConfiguration {}
157
156
 
158
157
  /**
159
158
  * @since 6.0.0
@@ -87,8 +87,7 @@ export interface MaterialIconClassNameOptions extends SVGIconClassNameOptions {
87
87
  }
88
88
 
89
89
  /** @since 6.0.0 */
90
- export interface MaterialSymbolClassNameOptions
91
- extends SVGIconClassNameOptions {
90
+ export interface MaterialSymbolClassNameOptions extends SVGIconClassNameOptions {
92
91
  family: MaterialSymbolFamily;
93
92
  }
94
93