@react-md/core 6.3.4 → 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 (450) 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/button/Button.js.map +1 -1
  13. package/dist/button/FloatingActionButton.js.map +1 -1
  14. package/dist/card/Card.js.map +1 -1
  15. package/dist/card/CardContent.js.map +1 -1
  16. package/dist/card/ClickableCard.js.map +1 -1
  17. package/dist/chip/Chip.js.map +1 -1
  18. package/dist/datetime/NativeDateField.js.map +1 -1
  19. package/dist/datetime/NativeTimeField.js.map +1 -1
  20. package/dist/datetime/useDateField.js.map +1 -1
  21. package/dist/datetime/useTimeField.js.map +1 -1
  22. package/dist/dialog/Dialog.js.map +1 -1
  23. package/dist/dialog/DialogContainer.js.map +1 -1
  24. package/dist/dialog/DialogContent.js.map +1 -1
  25. package/dist/dialog/DialogFooter.js.map +1 -1
  26. package/dist/divider/Divider.js.map +1 -1
  27. package/dist/draggable/useDraggable.js.map +1 -1
  28. package/dist/draggable/utils.js.map +1 -1
  29. package/dist/expansion-panel/ExpansionPanelHeader.js.map +1 -1
  30. package/dist/files/FileInput.js.map +1 -1
  31. package/dist/files/useFileUpload.js.map +1 -1
  32. package/dist/files/validation.js.map +1 -1
  33. package/dist/focus/useFocusContainer.js.map +1 -1
  34. package/dist/form/Fieldset.d.ts +19 -0
  35. package/dist/form/Fieldset.js +22 -2
  36. package/dist/form/Fieldset.js.map +1 -1
  37. package/dist/form/FormMessageContainer.js.map +1 -1
  38. package/dist/form/FormMessageCounter.js.map +1 -1
  39. package/dist/form/InputToggle.js.map +1 -1
  40. package/dist/form/Legend.d.ts +27 -5
  41. package/dist/form/Legend.js +39 -6
  42. package/dist/form/Legend.js.map +1 -1
  43. package/dist/form/Listbox.js.map +1 -1
  44. package/dist/form/ListboxProvider.js.map +1 -1
  45. package/dist/form/NativeSelect.js.map +1 -1
  46. package/dist/form/Password.js.map +1 -1
  47. package/dist/form/ResizingTextAreaWrapper.js.map +1 -1
  48. package/dist/form/Select.js.map +1 -1
  49. package/dist/form/Slider.js.map +1 -1
  50. package/dist/form/SliderContainer.js.map +1 -1
  51. package/dist/form/SliderThumb.js.map +1 -1
  52. package/dist/form/SliderTrack.js.map +1 -1
  53. package/dist/form/SliderValueMarks.js.map +1 -1
  54. package/dist/form/Switch.js.map +1 -1
  55. package/dist/form/TextArea.js.map +1 -1
  56. package/dist/form/TextField.js.map +1 -1
  57. package/dist/form/TextFieldContainer.js.map +1 -1
  58. package/dist/form/_fieldset.scss +7 -0
  59. package/dist/form/_legend.scss +68 -0
  60. package/dist/form/_text-field.scss +39 -4
  61. package/dist/form/fieldsetStyles.d.ts +6 -1
  62. package/dist/form/fieldsetStyles.js +3 -2
  63. package/dist/form/fieldsetStyles.js.map +1 -1
  64. package/dist/form/inputToggleStyles.js.map +1 -1
  65. package/dist/form/labelStyles.d.ts +1 -1
  66. package/dist/form/labelStyles.js +1 -1
  67. package/dist/form/labelStyles.js.map +1 -1
  68. package/dist/form/legendStyles.d.ts +83 -0
  69. package/dist/form/legendStyles.js +25 -0
  70. package/dist/form/legendStyles.js.map +1 -0
  71. package/dist/form/selectUtils.js.map +1 -1
  72. package/dist/form/textFieldContainerStyles.js.map +1 -1
  73. package/dist/form/types.d.ts +28 -6
  74. package/dist/form/types.js.map +1 -1
  75. package/dist/form/useCheckboxGroup.js.map +1 -1
  76. package/dist/form/useCombobox.js.map +1 -1
  77. package/dist/form/useNumberField.js +16 -19
  78. package/dist/form/useNumberField.js.map +1 -1
  79. package/dist/form/useRangeSlider.js.map +1 -1
  80. package/dist/form/useSlider.js.map +1 -1
  81. package/dist/form/useTextField.js.map +1 -1
  82. package/dist/hoverMode/useHoverMode.js.map +1 -1
  83. package/dist/icon/FontIcon.js.map +1 -1
  84. package/dist/icon/IconRotator.js.map +1 -1
  85. package/dist/icon/MaterialIcon.js.map +1 -1
  86. package/dist/icon/MaterialSymbol.js.map +1 -1
  87. package/dist/icon/SVGIcon.js.map +1 -1
  88. package/dist/icon/config.d.ts +0 -1
  89. package/dist/icon/config.js +10 -7
  90. package/dist/icon/config.js.map +1 -1
  91. package/dist/icon/materialConfig.js.map +1 -1
  92. package/dist/icon/styles.js.map +1 -1
  93. package/dist/interaction/UserInteractionModeProvider.js +6 -4
  94. package/dist/interaction/UserInteractionModeProvider.js.map +1 -1
  95. package/dist/interaction/types.js.map +1 -1
  96. package/dist/interaction/useElementInteraction.js.map +1 -1
  97. package/dist/layout/LayoutAppBar.d.ts +6 -6
  98. package/dist/layout/LayoutAppBar.js +6 -6
  99. package/dist/layout/LayoutAppBar.js.map +1 -1
  100. package/dist/layout/LayoutNav.js.map +1 -1
  101. package/dist/layout/LayoutWindowSplitter.js.map +1 -1
  102. package/dist/layout/Main.js.map +1 -1
  103. package/dist/layout/useExpandableLayout.js +43 -0
  104. package/dist/layout/useExpandableLayout.js.map +1 -1
  105. package/dist/layout/useHorizontalLayoutTransition.js.map +1 -1
  106. package/dist/layout/useLayoutTree.js.map +1 -1
  107. package/dist/layout/useLayoutWindowSplitter.js.map +1 -1
  108. package/dist/layout/useResizableLayout.js.map +1 -1
  109. package/dist/link/Link.js.map +1 -1
  110. package/dist/link/SkipToMainContent.js +19 -21
  111. package/dist/link/SkipToMainContent.js.map +1 -1
  112. package/dist/list/List.js.map +1 -1
  113. package/dist/list/ListItem.js.map +1 -1
  114. package/dist/list/ListItemAddon.js.map +1 -1
  115. package/dist/list/ListItemLink.js.map +1 -1
  116. package/dist/list/ListSubheader.js.map +1 -1
  117. package/dist/list/getListItemHeight.js.map +1 -1
  118. package/dist/list/listItemStyles.js.map +1 -1
  119. package/dist/list/types.js.map +1 -1
  120. package/dist/media-queries/AppSizeProvider.d.ts +2 -0
  121. package/dist/media-queries/AppSizeProvider.js +3 -2
  122. package/dist/media-queries/AppSizeProvider.js.map +1 -1
  123. package/dist/media-queries/appSize.d.ts +3 -0
  124. package/dist/media-queries/appSize.js +3 -1
  125. package/dist/media-queries/appSize.js.map +1 -1
  126. package/dist/media-queries/config.d.ts +11 -0
  127. package/dist/media-queries/config.js +26 -0
  128. package/dist/media-queries/config.js.map +1 -0
  129. package/dist/menu/DropdownMenu.js.map +1 -1
  130. package/dist/menu/Menu.js.map +1 -1
  131. package/dist/menu/MenuItemButton.js.map +1 -1
  132. package/dist/menu/MenuItemFileInput.js.map +1 -1
  133. package/dist/menu/MenuItemInputToggle.js.map +1 -1
  134. package/dist/menu/MenuItemSeparator.js.map +1 -1
  135. package/dist/menu/MenuVisibilityProvider.js.map +1 -1
  136. package/dist/menu/MenuWidget.js.map +1 -1
  137. package/dist/menu/useContextMenu.js.map +1 -1
  138. package/dist/movement/types.d.ts +28 -3
  139. package/dist/movement/types.js.map +1 -1
  140. package/dist/movement/useKeyboardMovementProvider.js +96 -47
  141. package/dist/movement/useKeyboardMovementProvider.js.map +1 -1
  142. package/dist/navigation/CollapsibleNavGroup.js.map +1 -1
  143. package/dist/navigation/NavItem.js.map +1 -1
  144. package/dist/navigation/NavItemButton.js.map +1 -1
  145. package/dist/navigation/NavItemLink.js.map +1 -1
  146. package/dist/navigation/getTableOfContentsHeadings.js.map +1 -1
  147. package/dist/navigation/types.js.map +1 -1
  148. package/dist/overlay/Overlay.js.map +1 -1
  149. package/dist/positioning/createHorizontalPosition.js.map +1 -1
  150. package/dist/positioning/createVerticalPosition.js.map +1 -1
  151. package/dist/positioning/useFixedPositioning.js.map +1 -1
  152. package/dist/progress/CircularProgress.js.map +1 -1
  153. package/dist/progress/LinearProgress.js.map +1 -1
  154. package/dist/progress/linearProgressStyles.js.map +1 -1
  155. package/dist/responsive-item/ResponsiveItem.js.map +1 -1
  156. package/dist/responsive-item/ResponsiveItemOverlay.js.map +1 -1
  157. package/dist/searching/caseInsensitive.js.map +1 -1
  158. package/dist/segmented-button/SegmentedButton.js.map +1 -1
  159. package/dist/segmented-button/SegmentedButtonContainer.js.map +1 -1
  160. package/dist/segmented-button/segmentedButtonStyles.js.map +1 -1
  161. package/dist/sheet/Sheet.js.map +1 -1
  162. package/dist/snackbar/Toast.js.map +1 -1
  163. package/dist/spinbutton/SpinButton.d.ts +16 -0
  164. package/dist/spinbutton/SpinButton.js +55 -0
  165. package/dist/spinbutton/SpinButton.js.map +1 -0
  166. package/dist/spinbutton/SpinButtonGroupProvider.d.ts +17 -0
  167. package/dist/spinbutton/SpinButtonGroupProvider.js +19 -0
  168. package/dist/spinbutton/SpinButtonGroupProvider.js.map +1 -0
  169. package/dist/spinbutton/defaults.d.ts +9 -0
  170. package/dist/spinbutton/defaults.js +25 -0
  171. package/dist/spinbutton/defaults.js.map +1 -0
  172. package/dist/spinbutton/types.d.ts +324 -0
  173. package/dist/spinbutton/types.js +5 -0
  174. package/dist/spinbutton/types.js.map +1 -0
  175. package/dist/spinbutton/useSpinButton.d.ts +5 -0
  176. package/dist/spinbutton/useSpinButton.js +260 -0
  177. package/dist/spinbutton/useSpinButton.js.map +1 -0
  178. package/dist/spinbutton/useSpinButtonGroupProvider.d.ts +27 -0
  179. package/dist/spinbutton/useSpinButtonGroupProvider.js +49 -0
  180. package/dist/spinbutton/useSpinButtonGroupProvider.js.map +1 -0
  181. package/dist/spinbutton/utils/deselectNode.d.ts +5 -0
  182. package/dist/spinbutton/utils/deselectNode.js +17 -0
  183. package/dist/spinbutton/utils/deselectNode.js.map +1 -0
  184. package/dist/spinbutton/utils/resolveInputEvent.d.ts +30 -0
  185. package/dist/spinbutton/utils/resolveInputEvent.js +53 -0
  186. package/dist/spinbutton/utils/resolveInputEvent.js.map +1 -0
  187. package/dist/spinbutton/utils/selectNode.d.ts +5 -0
  188. package/dist/spinbutton/utils/selectNode.js +15 -0
  189. package/dist/spinbutton/utils/selectNode.js.map +1 -0
  190. package/dist/table/StickyTableSection.js.map +1 -1
  191. package/dist/table/Table.js.map +1 -1
  192. package/dist/table/TableBody.js.map +1 -1
  193. package/dist/table/TableCellContent.js.map +1 -1
  194. package/dist/table/TableCheckbox.js.map +1 -1
  195. package/dist/table/TableFooter.js.map +1 -1
  196. package/dist/table/TableHeader.js.map +1 -1
  197. package/dist/table/TableRadio.js.map +1 -1
  198. package/dist/table/TableRow.js.map +1 -1
  199. package/dist/table/useStickyTableSection.js.map +1 -1
  200. package/dist/tabs/SimpleTabPanel.js.map +1 -1
  201. package/dist/tabs/SimpleTabPanels.js.map +1 -1
  202. package/dist/tabs/Tab.js.map +1 -1
  203. package/dist/tabs/TabList.js.map +1 -1
  204. package/dist/tabs/TabListScrollButton.js.map +1 -1
  205. package/dist/tabs/useMaxTabPanelHeight.js.map +1 -1
  206. package/dist/test-utils/data-testid.js.map +1 -1
  207. package/dist/test-utils/mocks/match-media.js +5 -5
  208. package/dist/test-utils/mocks/match-media.js.map +1 -1
  209. package/dist/test-utils/vitest/timers.d.ts +1 -1
  210. package/dist/test-utils/vitest/timers.js +1 -1
  211. package/dist/test-utils/vitest/timers.js.map +1 -1
  212. package/dist/tooltip/Tooltip.js.map +1 -1
  213. package/dist/tooltip/TooltipHoverModeProvider.js.map +1 -1
  214. package/dist/tooltip/useTooltip.js.map +1 -1
  215. package/dist/transition/CSSTransition.js.map +1 -1
  216. package/dist/transition/Collapse.js.map +1 -1
  217. package/dist/transition/CrossFade.js.map +1 -1
  218. package/dist/transition/ScaleTransition.js.map +1 -1
  219. package/dist/transition/SkeletonPlaceholder.js.map +1 -1
  220. package/dist/transition/Slide.js.map +1 -1
  221. package/dist/transition/SlideContainer.js.map +1 -1
  222. package/dist/transition/types.js.map +1 -1
  223. package/dist/transition/useCollapseTransition.js.map +1 -1
  224. package/dist/transition/useCrossFadeTransition.js.map +1 -1
  225. package/dist/transition/useMaxWidthTransition.js.map +1 -1
  226. package/dist/transition/useScaleTransition.js.map +1 -1
  227. package/dist/transition/useSkeletonPlaceholder.js.map +1 -1
  228. package/dist/tree/Tree.js.map +1 -1
  229. package/dist/tree/TreeItem.js.map +1 -1
  230. package/dist/tree/TreeProvider.js.map +1 -1
  231. package/dist/tree/styles.js.map +1 -1
  232. package/dist/tree/types.js.map +1 -1
  233. package/dist/tree/useTreeMovement.js.map +1 -1
  234. package/dist/typography/HighlightTextMark.js.map +1 -1
  235. package/dist/typography/Mark.js.map +1 -1
  236. package/dist/typography/TextContainer.js.map +1 -1
  237. package/dist/typography/Typography.js.map +1 -1
  238. package/dist/typography/_typography.scss +0 -1
  239. package/dist/useElementSize.js.map +1 -1
  240. package/dist/useIntersectionObserver.js.map +1 -1
  241. package/dist/useMutationObserver.js.map +1 -1
  242. package/dist/useWindowSize.js.map +1 -1
  243. package/dist/utils/getNumberOfDigits.d.ts +7 -0
  244. package/dist/utils/getNumberOfDigits.js +11 -0
  245. package/dist/utils/getNumberOfDigits.js.map +1 -0
  246. package/dist/utils/nearest.js +2 -1
  247. package/dist/utils/nearest.js.map +1 -1
  248. package/dist/utils/useDevEffect.d.ts +7 -0
  249. package/dist/utils/useDevEffect.js +8 -0
  250. package/dist/utils/useDevEffect.js.map +1 -0
  251. package/dist/window-splitter/WindowSplitter.js +3 -2
  252. package/dist/window-splitter/WindowSplitter.js.map +1 -1
  253. package/dist/window-splitter/_window-splitter.scss +60 -12
  254. package/dist/window-splitter/styles.d.ts +9 -0
  255. package/dist/window-splitter/styles.js +3 -2
  256. package/dist/window-splitter/styles.js.map +1 -1
  257. package/dist/window-splitter/useWindowSplitter.js.map +1 -1
  258. package/package.json +37 -29
  259. package/src/CoreProviders.tsx +1 -0
  260. package/src/app-bar/AppBar.tsx +1 -2
  261. package/src/app-bar/AppBarTitle.tsx +1 -2
  262. package/src/autocomplete/AutocompleteListboxChildren.tsx +3 -1
  263. package/src/autocomplete/types.ts +24 -19
  264. package/src/autocomplete/utils.ts +9 -6
  265. package/src/avatar/Avatar.tsx +2 -1
  266. package/src/button/Button.tsx +2 -1
  267. package/src/button/FloatingActionButton.tsx +2 -1
  268. package/src/card/Card.tsx +2 -1
  269. package/src/card/CardContent.tsx +1 -2
  270. package/src/card/ClickableCard.tsx +1 -2
  271. package/src/chip/Chip.tsx +2 -1
  272. package/src/datetime/NativeDateField.tsx +2 -1
  273. package/src/datetime/NativeTimeField.tsx +2 -1
  274. package/src/datetime/useDateField.ts +13 -8
  275. package/src/datetime/useTimeField.ts +13 -8
  276. package/src/dialog/Dialog.tsx +2 -1
  277. package/src/dialog/DialogContainer.tsx +1 -2
  278. package/src/dialog/DialogContent.tsx +1 -2
  279. package/src/dialog/DialogFooter.tsx +1 -2
  280. package/src/divider/Divider.tsx +1 -2
  281. package/src/draggable/useDraggable.ts +4 -4
  282. package/src/draggable/utils.ts +4 -2
  283. package/src/expansion-panel/ExpansionPanelHeader.tsx +1 -2
  284. package/src/files/FileInput.tsx +2 -1
  285. package/src/files/useFileUpload.ts +6 -6
  286. package/src/files/validation.ts +1 -2
  287. package/src/focus/useFocusContainer.ts +4 -4
  288. package/src/form/Fieldset.tsx +25 -3
  289. package/src/form/FormMessageContainer.tsx +1 -2
  290. package/src/form/FormMessageCounter.tsx +1 -2
  291. package/src/form/InputToggle.tsx +3 -3
  292. package/src/form/Legend.tsx +55 -10
  293. package/src/form/Listbox.tsx +1 -2
  294. package/src/form/ListboxProvider.ts +3 -2
  295. package/src/form/NativeSelect.tsx +2 -1
  296. package/src/form/Password.tsx +4 -2
  297. package/src/form/ResizingTextAreaWrapper.tsx +1 -2
  298. package/src/form/Select.tsx +2 -1
  299. package/src/form/Slider.tsx +2 -1
  300. package/src/form/SliderContainer.tsx +1 -2
  301. package/src/form/SliderThumb.tsx +6 -3
  302. package/src/form/SliderTrack.tsx +2 -1
  303. package/src/form/SliderValueMarks.tsx +1 -2
  304. package/src/form/Switch.tsx +2 -1
  305. package/src/form/TextArea.tsx +1 -2
  306. package/src/form/TextField.tsx +2 -1
  307. package/src/form/TextFieldContainer.tsx +1 -2
  308. package/src/form/fieldsetStyles.ts +18 -3
  309. package/src/form/inputToggleStyles.ts +4 -2
  310. package/src/form/labelStyles.ts +1 -1
  311. package/src/form/legendStyles.ts +132 -0
  312. package/src/form/selectUtils.ts +3 -2
  313. package/src/form/textFieldContainerStyles.ts +1 -2
  314. package/src/form/types.ts +35 -17
  315. package/src/form/useCheckboxGroup.ts +3 -2
  316. package/src/form/useCombobox.ts +8 -3
  317. package/src/form/useNumberField.ts +36 -35
  318. package/src/form/useRangeSlider.ts +1 -2
  319. package/src/form/useSlider.ts +1 -2
  320. package/src/form/useTextField.ts +8 -3
  321. package/src/hoverMode/useHoverMode.ts +4 -8
  322. package/src/icon/FontIcon.tsx +1 -2
  323. package/src/icon/IconRotator.tsx +1 -2
  324. package/src/icon/MaterialIcon.tsx +2 -1
  325. package/src/icon/MaterialSymbol.tsx +2 -1
  326. package/src/icon/SVGIcon.tsx +1 -2
  327. package/src/icon/config.tsx +10 -7
  328. package/src/icon/materialConfig.ts +1 -2
  329. package/src/icon/styles.ts +1 -2
  330. package/src/interaction/UserInteractionModeProvider.tsx +9 -4
  331. package/src/interaction/types.ts +1 -2
  332. package/src/interaction/useElementInteraction.tsx +3 -2
  333. package/src/layout/LayoutAppBar.tsx +6 -6
  334. package/src/layout/LayoutNav.tsx +2 -1
  335. package/src/layout/LayoutWindowSplitter.tsx +2 -1
  336. package/src/layout/Main.tsx +1 -2
  337. package/src/layout/useExpandableLayout.ts +63 -5
  338. package/src/layout/useHorizontalLayoutTransition.ts +1 -2
  339. package/src/layout/useLayoutTree.ts +2 -2
  340. package/src/layout/useLayoutWindowSplitter.ts +6 -6
  341. package/src/layout/useResizableLayout.ts +3 -6
  342. package/src/link/Link.tsx +1 -2
  343. package/src/link/SkipToMainContent.tsx +20 -23
  344. package/src/list/List.tsx +1 -2
  345. package/src/list/ListItem.tsx +2 -1
  346. package/src/list/ListItemAddon.tsx +2 -1
  347. package/src/list/ListItemLink.tsx +2 -1
  348. package/src/list/ListSubheader.tsx +1 -2
  349. package/src/list/getListItemHeight.ts +8 -9
  350. package/src/list/listItemStyles.ts +1 -2
  351. package/src/list/types.ts +1 -2
  352. package/src/media-queries/AppSizeProvider.tsx +8 -10
  353. package/src/media-queries/appSize.ts +3 -0
  354. package/src/media-queries/config.ts +41 -0
  355. package/src/menu/DropdownMenu.tsx +4 -5
  356. package/src/menu/Menu.tsx +2 -1
  357. package/src/menu/MenuItemButton.tsx +1 -2
  358. package/src/menu/MenuItemFileInput.tsx +2 -1
  359. package/src/menu/MenuItemInputToggle.tsx +3 -3
  360. package/src/menu/MenuItemSeparator.tsx +2 -1
  361. package/src/menu/MenuVisibilityProvider.tsx +4 -2
  362. package/src/menu/MenuWidget.tsx +1 -2
  363. package/src/menu/useContextMenu.ts +4 -2
  364. package/src/movement/types.ts +52 -13
  365. package/src/movement/useKeyboardMovementProvider.ts +77 -38
  366. package/src/navigation/CollapsibleNavGroup.tsx +1 -2
  367. package/src/navigation/NavItem.tsx +1 -2
  368. package/src/navigation/NavItemButton.tsx +2 -1
  369. package/src/navigation/NavItemLink.tsx +2 -1
  370. package/src/navigation/getTableOfContentsHeadings.ts +1 -2
  371. package/src/navigation/types.ts +1 -2
  372. package/src/overlay/Overlay.tsx +2 -1
  373. package/src/positioning/createHorizontalPosition.ts +10 -12
  374. package/src/positioning/createVerticalPosition.ts +10 -11
  375. package/src/positioning/useFixedPositioning.ts +6 -3
  376. package/src/progress/CircularProgress.tsx +2 -1
  377. package/src/progress/LinearProgress.tsx +2 -1
  378. package/src/progress/linearProgressStyles.ts +1 -2
  379. package/src/responsive-item/ResponsiveItem.tsx +1 -2
  380. package/src/responsive-item/ResponsiveItemOverlay.tsx +2 -1
  381. package/src/searching/caseInsensitive.ts +2 -4
  382. package/src/segmented-button/SegmentedButton.tsx +2 -1
  383. package/src/segmented-button/SegmentedButtonContainer.tsx +2 -1
  384. package/src/segmented-button/segmentedButtonStyles.ts +1 -2
  385. package/src/sheet/Sheet.tsx +1 -2
  386. package/src/snackbar/Toast.tsx +2 -1
  387. package/src/spinbutton/SpinButton.tsx +98 -0
  388. package/src/spinbutton/SpinButtonGroupProvider.tsx +32 -0
  389. package/src/spinbutton/defaults.ts +45 -0
  390. package/src/spinbutton/types.ts +413 -0
  391. package/src/spinbutton/useSpinButton.ts +311 -0
  392. package/src/spinbutton/useSpinButtonGroupProvider.ts +104 -0
  393. package/src/spinbutton/utils/deselectNode.ts +17 -0
  394. package/src/spinbutton/utils/resolveInputEvent.ts +112 -0
  395. package/src/spinbutton/utils/selectNode.ts +15 -0
  396. package/src/table/StickyTableSection.tsx +2 -1
  397. package/src/table/Table.tsx +1 -2
  398. package/src/table/TableBody.tsx +2 -1
  399. package/src/table/TableCellContent.tsx +1 -2
  400. package/src/table/TableCheckbox.tsx +1 -2
  401. package/src/table/TableFooter.tsx +1 -2
  402. package/src/table/TableHeader.tsx +1 -2
  403. package/src/table/TableRadio.tsx +1 -2
  404. package/src/table/TableRow.tsx +1 -2
  405. package/src/table/useStickyTableSection.tsx +1 -2
  406. package/src/tabs/SimpleTabPanel.tsx +2 -1
  407. package/src/tabs/SimpleTabPanels.tsx +2 -1
  408. package/src/tabs/Tab.tsx +3 -6
  409. package/src/tabs/TabList.tsx +2 -1
  410. package/src/tabs/TabListScrollButton.tsx +1 -2
  411. package/src/tabs/useMaxTabPanelHeight.ts +7 -4
  412. package/src/test-utils/data-testid.ts +1 -2
  413. package/src/test-utils/mocks/match-media.ts +5 -10
  414. package/src/test-utils/vitest/timers.ts +1 -1
  415. package/src/tooltip/Tooltip.tsx +2 -1
  416. package/src/tooltip/TooltipHoverModeProvider.tsx +1 -2
  417. package/src/tooltip/useTooltip.ts +9 -5
  418. package/src/transition/CSSTransition.tsx +2 -1
  419. package/src/transition/Collapse.tsx +4 -2
  420. package/src/transition/CrossFade.tsx +2 -1
  421. package/src/transition/ScaleTransition.tsx +2 -1
  422. package/src/transition/SkeletonPlaceholder.tsx +1 -2
  423. package/src/transition/Slide.tsx +2 -1
  424. package/src/transition/SlideContainer.tsx +1 -2
  425. package/src/transition/types.ts +15 -16
  426. package/src/transition/useCollapseTransition.ts +6 -5
  427. package/src/transition/useCrossFadeTransition.ts +3 -2
  428. package/src/transition/useMaxWidthTransition.ts +1 -2
  429. package/src/transition/useScaleTransition.ts +3 -2
  430. package/src/transition/useSkeletonPlaceholder.ts +1 -2
  431. package/src/tree/Tree.tsx +2 -1
  432. package/src/tree/TreeItem.tsx +2 -1
  433. package/src/tree/TreeProvider.tsx +4 -4
  434. package/src/tree/styles.ts +1 -2
  435. package/src/tree/types.ts +1 -2
  436. package/src/tree/useTreeMovement.ts +1 -2
  437. package/src/typography/HighlightTextMark.tsx +1 -2
  438. package/src/typography/Mark.tsx +1 -2
  439. package/src/typography/TextContainer.tsx +1 -2
  440. package/src/typography/Typography.tsx +1 -2
  441. package/src/useElementSize.ts +7 -4
  442. package/src/useIntersectionObserver.ts +3 -2
  443. package/src/useMutationObserver.ts +3 -2
  444. package/src/useWindowSize.ts +4 -2
  445. package/src/utils/getNumberOfDigits.ts +18 -0
  446. package/src/utils/nearest.ts +2 -1
  447. package/src/utils/useDevEffect.ts +9 -0
  448. package/src/window-splitter/WindowSplitter.tsx +5 -2
  449. package/src/window-splitter/styles.ts +13 -2
  450. package/src/window-splitter/useWindowSplitter.ts +3 -1
@@ -8,8 +8,7 @@ import {
8
8
  * @internal
9
9
  * @since 6.0.0
10
10
  */
11
- export interface GetTableOfContentsHeadingsOptions
12
- extends Required<TableOfContentsHeadingsOptions> {
11
+ export interface GetTableOfContentsHeadingsOptions extends Required<TableOfContentsHeadingsOptions> {
13
12
  ssr: boolean;
14
13
  }
15
14
 
@@ -265,8 +265,7 @@ export interface TableOfContentsHeading extends HeadingReference {
265
265
 
266
266
  /** @since 6.0.0 */
267
267
  export interface TableOfContentsHeadingItem
268
- extends TableOfContentsHeading,
269
- HeadingReferenceWithChildren {
268
+ extends TableOfContentsHeading, HeadingReferenceWithChildren {
270
269
  items?: TableOfContentsHeadingItem[];
271
270
  }
272
271
 
@@ -23,7 +23,8 @@ import {
23
23
  * augmentation.
24
24
  */
25
25
  export interface OverlayProps
26
- extends HTMLAttributes<HTMLSpanElement>,
26
+ extends
27
+ HTMLAttributes<HTMLSpanElement>,
27
28
  BaseOverlayClassNameOptions,
28
29
  CSSTransitionComponentProps,
29
30
  TransitionActions {
@@ -31,13 +31,12 @@ export interface HorizontalFixConfig extends XCoordConfig {
31
31
  /**
32
32
  * @internal
33
33
  */
34
- export interface CreateHorizontalPositionOptions
35
- extends Required<
36
- Pick<
37
- FixedPositionOptions,
38
- "vwMargin" | "xMargin" | "width" | "disableSwapping"
39
- >
40
- > {
34
+ export interface CreateHorizontalPositionOptions extends Required<
35
+ Pick<
36
+ FixedPositionOptions,
37
+ "vwMargin" | "xMargin" | "width" | "disableSwapping"
38
+ >
39
+ > {
41
40
  x: HorizontalPosition;
42
41
  vw: number;
43
42
  elWidth: number;
@@ -205,11 +204,10 @@ export function createAnchoredRight(config: HorizontalFixConfig): XPosition {
205
204
  return { actualX, left };
206
205
  }
207
206
 
208
- export interface EqualWidthOptions
209
- extends Pick<
210
- CreateHorizontalPositionOptions,
211
- "x" | "elWidth" | "xMargin" | "vwMargin" | "containerRect" | "initialX"
212
- > {
207
+ export interface EqualWidthOptions extends Pick<
208
+ CreateHorizontalPositionOptions,
209
+ "x" | "elWidth" | "xMargin" | "vwMargin" | "containerRect" | "initialX"
210
+ > {
213
211
  screenRight: number;
214
212
  isMinWidth: boolean;
215
213
  }
@@ -27,17 +27,16 @@ export interface VerticalFixConfig extends YCoordConfig {
27
27
  }
28
28
 
29
29
  /** @internal */
30
- export interface CreateVerticalPositionOptions
31
- extends Required<
32
- Pick<
33
- FixedPositionOptions,
34
- | "yMargin"
35
- | "vhMargin"
36
- | "preventOverlap"
37
- | "disableSwapping"
38
- | "disableVHBounds"
39
- >
40
- > {
30
+ export interface CreateVerticalPositionOptions extends Required<
31
+ Pick<
32
+ FixedPositionOptions,
33
+ | "yMargin"
34
+ | "vhMargin"
35
+ | "preventOverlap"
36
+ | "disableSwapping"
37
+ | "disableVHBounds"
38
+ >
39
+ > {
41
40
  y: VerticalPosition;
42
41
  vh: number;
43
42
  initialY?: number;
@@ -42,8 +42,9 @@ export type FixedPositioningTransitionCallbacks = Pick<
42
42
  * transition.
43
43
  * @since 4.0.0
44
44
  */
45
- export interface FixedPositioningTransitionOptions<E extends HTMLElement>
46
- extends FixedPositioningTransitionCallbacks {
45
+ export interface FixedPositioningTransitionOptions<
46
+ E extends HTMLElement,
47
+ > extends FixedPositioningTransitionCallbacks {
47
48
  /** {@inheritDoc TransitionOptions.nodeRef} */
48
49
  nodeRef?: Ref<E>;
49
50
  }
@@ -94,7 +95,9 @@ export type TransitionScrollCallback<
94
95
  export interface FixedPositioningOptions<
95
96
  FixedToElement extends HTMLElement,
96
97
  FixedElement extends HTMLElement,
97
- > extends FixedPositioningTransitionOptions<FixedElement>,
98
+ >
99
+ extends
100
+ FixedPositioningTransitionOptions<FixedElement>,
98
101
  CalculateFixedPositionOptions {
99
102
  /**
100
103
  * An optional style that will be merged with the fixed positioning required
@@ -24,7 +24,8 @@ import { type ProgressProps } from "./types.js";
24
24
  * longer rotates while increasing value.
25
25
  */
26
26
  export interface CircularProgressProps
27
- extends Omit<HTMLAttributes<HTMLSpanElement>, "id">,
27
+ extends
28
+ Omit<HTMLAttributes<HTMLSpanElement>, "id">,
28
29
  ProgressProps,
29
30
  CircularProgressClassNameOptions {
30
31
  /**
@@ -21,7 +21,8 @@ import { type ProgressProps } from "./types.js";
21
21
  * module augmentation.
22
22
  */
23
23
  export interface LinearProgressProps
24
- extends Omit<HTMLAttributes<HTMLSpanElement>, "id" | "children">,
24
+ extends
25
+ Omit<HTMLAttributes<HTMLSpanElement>, "id" | "children">,
25
26
  BaseLinearProgressClassNameOptions,
26
27
  ProgressProps {
27
28
  /**
@@ -36,8 +36,7 @@ export interface BaseLinearProgressClassNameOptions {
36
36
  /**
37
37
  * @since 6.2.0
38
38
  */
39
- export interface LinearProgressClassNameOptions
40
- extends BaseLinearProgressClassNameOptions {
39
+ export interface LinearProgressClassNameOptions extends BaseLinearProgressClassNameOptions {
41
40
  /** @defaultValue `false` */
42
41
  indeterminate?: boolean;
43
42
  }
@@ -15,8 +15,7 @@ import {
15
15
  * {@link ResponsiveItemProps.responsive} prop.
16
16
  */
17
17
  export interface ResponsiveItemProps
18
- extends HTMLAttributes<HTMLSpanElement>,
19
- ResponsiveItemClassNameOptions {}
18
+ extends HTMLAttributes<HTMLSpanElement>, ResponsiveItemClassNameOptions {}
20
19
 
21
20
  /**
22
21
  * @example Image Example
@@ -12,7 +12,8 @@ import {
12
12
  * `ResponsiveItemOverlayProps`.
13
13
  */
14
14
  export interface ResponsiveItemOverlayProps
15
- extends HTMLAttributes<HTMLSpanElement>,
15
+ extends
16
+ HTMLAttributes<HTMLSpanElement>,
16
17
  ResponsiveItemOverlayClassNameOptions {}
17
18
 
18
19
  /**
@@ -62,8 +62,7 @@ export interface CaseInsensitiveStartsWithOptions {
62
62
  /**
63
63
  * @since 6.0.0
64
64
  */
65
- export interface IsCaseInsensitiveMatchOptions
66
- extends CaseInsensitiveStartsWithOptions {
65
+ export interface IsCaseInsensitiveMatchOptions extends CaseInsensitiveStartsWithOptions {
67
66
  /**
68
67
  * The current search query.
69
68
  */
@@ -94,8 +93,7 @@ export function isCaseInsensitiveMatch(
94
93
  * @since 6.0.0
95
94
  */
96
95
  export interface CaseInsensitiveOptions<T>
97
- extends BaseSearchOptions<T>,
98
- CaseInsensitiveStartsWithOptions {}
96
+ extends BaseSearchOptions<T>, CaseInsensitiveStartsWithOptions {}
99
97
 
100
98
  /**
101
99
  * @example String list
@@ -23,7 +23,8 @@ import {
23
23
  * module augmentation.
24
24
  */
25
25
  export interface SegmentedButtonProps
26
- extends ButtonHTMLAttributes<HTMLButtonElement>,
26
+ extends
27
+ ButtonHTMLAttributes<HTMLButtonElement>,
27
28
  BaseMaxWidthTransitionOptions,
28
29
  BaseSegmentedButtonClassNameOptions,
29
30
  ComponentWithRippleProps {
@@ -9,7 +9,8 @@ import {
9
9
  * @since 6.0.0
10
10
  */
11
11
  export interface SegmentedButtonContainerProps
12
- extends HTMLAttributes<HTMLDivElement>,
12
+ extends
13
+ HTMLAttributes<HTMLDivElement>,
13
14
  SegmentedButtonContainerClassNameOptions {
14
15
  children: ReactNode;
15
16
  }
@@ -42,8 +42,7 @@ export interface BaseSegmentedButtonClassNameOptions {
42
42
  * @since 6.0.0
43
43
  * @since 6.3.1 Extends BaseSegmentedButtonClassNameOptions
44
44
  */
45
- export interface SegmentedButtonClassNameOptions
46
- extends BaseSegmentedButtonClassNameOptions {
45
+ export interface SegmentedButtonClassNameOptions extends BaseSegmentedButtonClassNameOptions {
47
46
  /** @internal */
48
47
  pressedClassName?: string;
49
48
  }
@@ -21,8 +21,7 @@ export type SheetDialogProps = Omit<BaseDialogProps, "role" | "type" | "modal">;
21
21
  * and exports the `SheetDialogProps`.
22
22
  */
23
23
  export interface BaseSheetProps
24
- extends SheetDialogProps,
25
- BaseSheetClassNameOptions {
24
+ extends SheetDialogProps, BaseSheetClassNameOptions {
26
25
  /**
27
26
  * @defaultValue `"dialog"`
28
27
  */
@@ -27,7 +27,8 @@ import { type BaseToastClasNameOptions, toast } from "./toastStyles.js";
27
27
  * @since 6.0.0
28
28
  */
29
29
  export interface ConfigurableToastProps
30
- extends HTMLAttributes<HTMLDivElement>,
30
+ extends
31
+ HTMLAttributes<HTMLDivElement>,
31
32
  BaseToastClasNameOptions,
32
33
  TransitionCallbacks {
33
34
  /**
@@ -0,0 +1,98 @@
1
+ "use client";
2
+
3
+ import { type HTMLAttributes, forwardRef } from "react";
4
+
5
+ import { type LabelRequiredForA11y } from "../types.js";
6
+ import { defaultGetSpinButtonTextContent } from "./defaults.js";
7
+ import {
8
+ type SpinButtonOptions,
9
+ type SpinButtonUncontrolledValueOptions,
10
+ type SpinButtonValueOptions,
11
+ } from "./types.js";
12
+ import { useSpinButton } from "./useSpinButton.js";
13
+
14
+ /**
15
+ * @since 6.4.0
16
+ */
17
+ export interface SpinButtonProps
18
+ extends
19
+ Omit<HTMLAttributes<HTMLDivElement>, keyof SpinButtonOptions>,
20
+ Omit<SpinButtonOptions<HTMLDivElement>, "ref" | "children"> {}
21
+
22
+ /**
23
+ * The `SpinButton` component can be used as a simple wrapper around the
24
+ * {@link useSpinButton} hook if it should be rendered within a `<div>` and
25
+ * only the rendering behavior is required.
26
+ *
27
+ * @since 6.4.0
28
+ */
29
+ export const SpinButton = forwardRef<
30
+ HTMLDivElement,
31
+ LabelRequiredForA11y<SpinButtonProps> & SpinButtonValueOptions
32
+ >(function SpinButton(props, ref) {
33
+ const {
34
+ id,
35
+ min,
36
+ max,
37
+ minDigits,
38
+ maxDigits,
39
+ step,
40
+ form,
41
+ error,
42
+ disabled,
43
+ readOnly,
44
+ required,
45
+ fallback,
46
+ mappings,
47
+ value,
48
+ defaultValue,
49
+ onValueChange,
50
+ getValueText,
51
+ getTextContent = defaultGetSpinButtonTextContent,
52
+ placeholderChar,
53
+ defaultKeyboardValue,
54
+ ...remaining
55
+ } = props;
56
+
57
+ const valueProps = {
58
+ value,
59
+ defaultValue,
60
+ } as SpinButtonUncontrolledValueOptions<HTMLDivElement>;
61
+
62
+ const { value: currentValue, spinButtonProps } = useSpinButton({
63
+ id,
64
+ ref,
65
+ min,
66
+ max,
67
+ minDigits,
68
+ maxDigits,
69
+ step,
70
+ form,
71
+ fallback,
72
+ mappings,
73
+ error,
74
+ disabled,
75
+ readOnly,
76
+ required,
77
+ ...valueProps,
78
+ onValueChange,
79
+ getValueText,
80
+ getTextContent,
81
+ placeholderChar,
82
+ defaultKeyboardValue,
83
+ });
84
+
85
+ return (
86
+ <div {...remaining} {...spinButtonProps}>
87
+ {getTextContent({
88
+ min,
89
+ max,
90
+ minDigits,
91
+ maxDigits,
92
+ value: currentValue,
93
+ fallback,
94
+ placeholderChar,
95
+ })}
96
+ </div>
97
+ );
98
+ });
@@ -0,0 +1,32 @@
1
+ "use client";
2
+
3
+ import { createContext, useContext } from "react";
4
+
5
+ import { type KeyboardMovementContext } from "../movement/types.js";
6
+ import { DEFAULT_KEYBOARD_MOVEMENT_CONTEXT } from "../movement/useKeyboardMovementProvider.js";
7
+
8
+ /**
9
+ * @since 6.4.0
10
+ */
11
+ export type SpinButtonGroupContext = KeyboardMovementContext;
12
+
13
+ const context = createContext<SpinButtonGroupContext>(
14
+ DEFAULT_KEYBOARD_MOVEMENT_CONTEXT
15
+ );
16
+ context.displayName = "SpinButtonGroup";
17
+
18
+ /**
19
+ * This should be used along with the `useSpinButtonGroupProvider` to link
20
+ * `SpinButton` components together. The next `SpinButton` will be focused as
21
+ * an value is typed to completion.
22
+ *
23
+ * @since 6.4.0
24
+ */
25
+ export const { Provider: SpinButtonGroupProvider } = context;
26
+
27
+ /**
28
+ * @since 6.4.0
29
+ */
30
+ export function useSpinButtonGroup(): Readonly<SpinButtonGroupContext> {
31
+ return useContext(context);
32
+ }
@@ -0,0 +1,45 @@
1
+ import { getNumberOfDigits } from "../utils/getNumberOfDigits.js";
2
+ import {
3
+ type GetSpinButtonTextContentOptions,
4
+ type SpinButtonGetValueText,
5
+ } from "./types.js";
6
+
7
+ /**
8
+ * @since 6.4.0
9
+ */
10
+ export const defaultSpinButtonGetValueText: SpinButtonGetValueText = (value) =>
11
+ value === null ? "No value selected" : undefined;
12
+
13
+ /**
14
+ * @since 6.4.0
15
+ */
16
+ export function defaultGetSpinButtonTextContent(
17
+ options: GetSpinButtonTextContentOptions
18
+ ): string {
19
+ const {
20
+ min,
21
+ value,
22
+ fallback,
23
+ placeholderChar = "0",
24
+ minDigits = fallback?.length ?? getNumberOfDigits(min),
25
+ } = options;
26
+
27
+ if (value === null) {
28
+ if (typeof fallback === "string") {
29
+ return fallback;
30
+ }
31
+
32
+ if (!minDigits) {
33
+ return "";
34
+ }
35
+
36
+ return "-".repeat(minDigits);
37
+ }
38
+
39
+ let text = `${value}`;
40
+ if (minDigits) {
41
+ text = text.padStart(minDigits, placeholderChar);
42
+ }
43
+
44
+ return text;
45
+ }