@react-md/core 6.3.4 → 6.5.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 (477) hide show
  1. package/dist/CoreProviders.d.ts +1 -0
  2. package/dist/CoreProviders.js.map +1 -1
  3. package/dist/_a11y.scss +3 -1
  4. package/dist/_base.scss +3 -0
  5. package/dist/_box-shadows.scss +20 -12
  6. package/dist/_core.scss +2 -1
  7. package/dist/_utils.scss +32 -10
  8. package/dist/app-bar/AppBar.js.map +1 -1
  9. package/dist/app-bar/AppBarTitle.js.map +1 -1
  10. package/dist/app-bar/_app-bar.scss +3 -3
  11. package/dist/autocomplete/AutocompleteListboxChildren.js.map +1 -1
  12. package/dist/autocomplete/_autocomplete.scss +20 -16
  13. package/dist/autocomplete/types.js.map +1 -1
  14. package/dist/autocomplete/utils.js.map +1 -1
  15. package/dist/avatar/Avatar.js.map +1 -1
  16. package/dist/avatar/_avatar.scss +2 -1
  17. package/dist/button/Button.js.map +1 -1
  18. package/dist/button/FloatingActionButton.js.map +1 -1
  19. package/dist/button/_button.scss +9 -5
  20. package/dist/card/Card.js.map +1 -1
  21. package/dist/card/CardContent.js.map +1 -1
  22. package/dist/card/ClickableCard.js.map +1 -1
  23. package/dist/card/_card.scss +6 -6
  24. package/dist/chip/Chip.js.map +1 -1
  25. package/dist/chip/_chip.scss +6 -6
  26. package/dist/datetime/NativeDateField.js.map +1 -1
  27. package/dist/datetime/NativeTimeField.js.map +1 -1
  28. package/dist/datetime/useDateField.js.map +1 -1
  29. package/dist/datetime/useTimeField.js.map +1 -1
  30. package/dist/dialog/Dialog.js.map +1 -1
  31. package/dist/dialog/DialogContainer.js.map +1 -1
  32. package/dist/dialog/DialogContent.js.map +1 -1
  33. package/dist/dialog/DialogFooter.js.map +1 -1
  34. package/dist/dialog/_dialog.scss +6 -6
  35. package/dist/divider/Divider.js.map +1 -1
  36. package/dist/divider/_divider.scss +6 -2
  37. package/dist/draggable/useDraggable.js.map +1 -1
  38. package/dist/draggable/utils.js.map +1 -1
  39. package/dist/expansion-panel/ExpansionPanelHeader.js.map +1 -1
  40. package/dist/files/FileInput.js.map +1 -1
  41. package/dist/files/useFileUpload.js.map +1 -1
  42. package/dist/files/validation.js.map +1 -1
  43. package/dist/focus/useFocusContainer.js.map +1 -1
  44. package/dist/form/Fieldset.d.ts +19 -0
  45. package/dist/form/Fieldset.js +22 -2
  46. package/dist/form/Fieldset.js.map +1 -1
  47. package/dist/form/FormMessageContainer.js.map +1 -1
  48. package/dist/form/FormMessageCounter.js.map +1 -1
  49. package/dist/form/InputToggle.js.map +1 -1
  50. package/dist/form/Legend.d.ts +27 -5
  51. package/dist/form/Legend.js +39 -6
  52. package/dist/form/Legend.js.map +1 -1
  53. package/dist/form/Listbox.js.map +1 -1
  54. package/dist/form/ListboxProvider.js.map +1 -1
  55. package/dist/form/NativeSelect.js.map +1 -1
  56. package/dist/form/Password.js.map +1 -1
  57. package/dist/form/ResizingTextAreaWrapper.js.map +1 -1
  58. package/dist/form/Select.d.ts +24 -0
  59. package/dist/form/Select.js +14 -3
  60. package/dist/form/Select.js.map +1 -1
  61. package/dist/form/SelectedOption.d.ts +1 -2
  62. package/dist/form/SelectedOption.js +2 -2
  63. package/dist/form/SelectedOption.js.map +1 -1
  64. package/dist/form/Slider.js.map +1 -1
  65. package/dist/form/SliderContainer.js.map +1 -1
  66. package/dist/form/SliderThumb.js.map +1 -1
  67. package/dist/form/SliderTrack.js.map +1 -1
  68. package/dist/form/SliderValueMarks.js.map +1 -1
  69. package/dist/form/Switch.js.map +1 -1
  70. package/dist/form/TextArea.js.map +1 -1
  71. package/dist/form/TextField.js.map +1 -1
  72. package/dist/form/TextFieldContainer.js.map +1 -1
  73. package/dist/form/_fieldset.scss +7 -0
  74. package/dist/form/_input-toggle.scss +6 -5
  75. package/dist/form/_label.scss +2 -2
  76. package/dist/form/_legend.scss +77 -0
  77. package/dist/form/_slider.scss +7 -5
  78. package/dist/form/_switch.scss +7 -5
  79. package/dist/form/_text-field.scss +52 -15
  80. package/dist/form/defaultGetSelectedOptionChildren.d.ts +1 -0
  81. package/dist/form/fieldsetStyles.d.ts +6 -1
  82. package/dist/form/fieldsetStyles.js +3 -2
  83. package/dist/form/fieldsetStyles.js.map +1 -1
  84. package/dist/form/getSelectedOptionChildren.d.ts +1 -0
  85. package/dist/form/inputToggleStyles.js.map +1 -1
  86. package/dist/form/labelStyles.d.ts +1 -1
  87. package/dist/form/labelStyles.js +1 -1
  88. package/dist/form/labelStyles.js.map +1 -1
  89. package/dist/form/legendStyles.d.ts +83 -0
  90. package/dist/form/legendStyles.js +25 -0
  91. package/dist/form/legendStyles.js.map +1 -0
  92. package/dist/form/selectUtils.js.map +1 -1
  93. package/dist/form/textFieldContainerStyles.js.map +1 -1
  94. package/dist/form/types.d.ts +28 -6
  95. package/dist/form/types.js.map +1 -1
  96. package/dist/form/useCheckboxGroup.js.map +1 -1
  97. package/dist/form/useCombobox.js.map +1 -1
  98. package/dist/form/useNumberField.js +16 -19
  99. package/dist/form/useNumberField.js.map +1 -1
  100. package/dist/form/useRangeSlider.js.map +1 -1
  101. package/dist/form/useSlider.js.map +1 -1
  102. package/dist/form/useTextField.js.map +1 -1
  103. package/dist/hoverMode/useHoverMode.js.map +1 -1
  104. package/dist/icon/FontIcon.js.map +1 -1
  105. package/dist/icon/IconRotator.js.map +1 -1
  106. package/dist/icon/MaterialIcon.js.map +1 -1
  107. package/dist/icon/MaterialSymbol.js.map +1 -1
  108. package/dist/icon/SVGIcon.js.map +1 -1
  109. package/dist/icon/config.d.ts +0 -1
  110. package/dist/icon/config.js +10 -7
  111. package/dist/icon/config.js.map +1 -1
  112. package/dist/icon/materialConfig.js.map +1 -1
  113. package/dist/icon/styles.js.map +1 -1
  114. package/dist/interaction/UserInteractionModeProvider.js +6 -4
  115. package/dist/interaction/UserInteractionModeProvider.js.map +1 -1
  116. package/dist/interaction/_interaction.scss +5 -3
  117. package/dist/interaction/types.js.map +1 -1
  118. package/dist/interaction/useElementInteraction.js.map +1 -1
  119. package/dist/layout/LayoutAppBar.d.ts +6 -6
  120. package/dist/layout/LayoutAppBar.js +6 -6
  121. package/dist/layout/LayoutAppBar.js.map +1 -1
  122. package/dist/layout/LayoutNav.js.map +1 -1
  123. package/dist/layout/LayoutWindowSplitter.js.map +1 -1
  124. package/dist/layout/Main.js.map +1 -1
  125. package/dist/layout/useExpandableLayout.js +43 -0
  126. package/dist/layout/useExpandableLayout.js.map +1 -1
  127. package/dist/layout/useHorizontalLayoutTransition.js.map +1 -1
  128. package/dist/layout/useLayoutTree.js.map +1 -1
  129. package/dist/layout/useLayoutWindowSplitter.js.map +1 -1
  130. package/dist/layout/useResizableLayout.js.map +1 -1
  131. package/dist/link/Link.js.map +1 -1
  132. package/dist/link/SkipToMainContent.js +19 -21
  133. package/dist/link/SkipToMainContent.js.map +1 -1
  134. package/dist/list/List.js.map +1 -1
  135. package/dist/list/ListItem.js.map +1 -1
  136. package/dist/list/ListItemAddon.js.map +1 -1
  137. package/dist/list/ListItemLink.js.map +1 -1
  138. package/dist/list/ListSubheader.js.map +1 -1
  139. package/dist/list/getListItemHeight.js.map +1 -1
  140. package/dist/list/listItemStyles.js.map +1 -1
  141. package/dist/list/types.js.map +1 -1
  142. package/dist/media-queries/AppSizeProvider.d.ts +2 -0
  143. package/dist/media-queries/AppSizeProvider.js +3 -2
  144. package/dist/media-queries/AppSizeProvider.js.map +1 -1
  145. package/dist/media-queries/appSize.d.ts +3 -0
  146. package/dist/media-queries/appSize.js +3 -1
  147. package/dist/media-queries/appSize.js.map +1 -1
  148. package/dist/media-queries/config.d.ts +11 -0
  149. package/dist/media-queries/config.js +26 -0
  150. package/dist/media-queries/config.js.map +1 -0
  151. package/dist/menu/DropdownMenu.js.map +1 -1
  152. package/dist/menu/Menu.js.map +1 -1
  153. package/dist/menu/MenuItemButton.js.map +1 -1
  154. package/dist/menu/MenuItemFileInput.js.map +1 -1
  155. package/dist/menu/MenuItemInputToggle.js.map +1 -1
  156. package/dist/menu/MenuItemSeparator.js.map +1 -1
  157. package/dist/menu/MenuVisibilityProvider.js.map +1 -1
  158. package/dist/menu/MenuWidget.js.map +1 -1
  159. package/dist/menu/useContextMenu.js.map +1 -1
  160. package/dist/movement/types.d.ts +28 -3
  161. package/dist/movement/types.js.map +1 -1
  162. package/dist/movement/useKeyboardMovementProvider.js +96 -47
  163. package/dist/movement/useKeyboardMovementProvider.js.map +1 -1
  164. package/dist/navigation/CollapsibleNavGroup.js.map +1 -1
  165. package/dist/navigation/NavItem.js.map +1 -1
  166. package/dist/navigation/NavItemButton.js.map +1 -1
  167. package/dist/navigation/NavItemLink.js.map +1 -1
  168. package/dist/navigation/getTableOfContentsHeadings.js.map +1 -1
  169. package/dist/navigation/types.js.map +1 -1
  170. package/dist/overlay/Overlay.js.map +1 -1
  171. package/dist/positioning/createHorizontalPosition.js.map +1 -1
  172. package/dist/positioning/createVerticalPosition.js.map +1 -1
  173. package/dist/positioning/useFixedPositioning.js.map +1 -1
  174. package/dist/progress/CircularProgress.js.map +1 -1
  175. package/dist/progress/LinearProgress.js.map +1 -1
  176. package/dist/progress/linearProgressStyles.js.map +1 -1
  177. package/dist/responsive-item/ResponsiveItem.js.map +1 -1
  178. package/dist/responsive-item/ResponsiveItemOverlay.js.map +1 -1
  179. package/dist/searching/caseInsensitive.js.map +1 -1
  180. package/dist/segmented-button/SegmentedButton.js.map +1 -1
  181. package/dist/segmented-button/SegmentedButtonContainer.js.map +1 -1
  182. package/dist/segmented-button/segmentedButtonStyles.js.map +1 -1
  183. package/dist/sheet/Sheet.js.map +1 -1
  184. package/dist/snackbar/Toast.js.map +1 -1
  185. package/dist/snackbar/_snackbar.scss +3 -3
  186. package/dist/spinbutton/SpinButton.d.ts +16 -0
  187. package/dist/spinbutton/SpinButton.js +55 -0
  188. package/dist/spinbutton/SpinButton.js.map +1 -0
  189. package/dist/spinbutton/SpinButtonGroupProvider.d.ts +17 -0
  190. package/dist/spinbutton/SpinButtonGroupProvider.js +19 -0
  191. package/dist/spinbutton/SpinButtonGroupProvider.js.map +1 -0
  192. package/dist/spinbutton/defaults.d.ts +9 -0
  193. package/dist/spinbutton/defaults.js +25 -0
  194. package/dist/spinbutton/defaults.js.map +1 -0
  195. package/dist/spinbutton/types.d.ts +324 -0
  196. package/dist/spinbutton/types.js +5 -0
  197. package/dist/spinbutton/types.js.map +1 -0
  198. package/dist/spinbutton/useSpinButton.d.ts +5 -0
  199. package/dist/spinbutton/useSpinButton.js +260 -0
  200. package/dist/spinbutton/useSpinButton.js.map +1 -0
  201. package/dist/spinbutton/useSpinButtonGroupProvider.d.ts +27 -0
  202. package/dist/spinbutton/useSpinButtonGroupProvider.js +49 -0
  203. package/dist/spinbutton/useSpinButtonGroupProvider.js.map +1 -0
  204. package/dist/spinbutton/utils/deselectNode.d.ts +5 -0
  205. package/dist/spinbutton/utils/deselectNode.js +17 -0
  206. package/dist/spinbutton/utils/deselectNode.js.map +1 -0
  207. package/dist/spinbutton/utils/resolveInputEvent.d.ts +30 -0
  208. package/dist/spinbutton/utils/resolveInputEvent.js +53 -0
  209. package/dist/spinbutton/utils/resolveInputEvent.js.map +1 -0
  210. package/dist/spinbutton/utils/selectNode.d.ts +5 -0
  211. package/dist/spinbutton/utils/selectNode.js +15 -0
  212. package/dist/spinbutton/utils/selectNode.js.map +1 -0
  213. package/dist/table/StickyTableSection.js.map +1 -1
  214. package/dist/table/Table.js.map +1 -1
  215. package/dist/table/TableBody.js.map +1 -1
  216. package/dist/table/TableCellContent.js.map +1 -1
  217. package/dist/table/TableCheckbox.js.map +1 -1
  218. package/dist/table/TableFooter.js.map +1 -1
  219. package/dist/table/TableHeader.js.map +1 -1
  220. package/dist/table/TableRadio.js.map +1 -1
  221. package/dist/table/TableRow.js.map +1 -1
  222. package/dist/table/useStickyTableSection.js.map +1 -1
  223. package/dist/tabs/SimpleTabPanel.js.map +1 -1
  224. package/dist/tabs/SimpleTabPanels.js.map +1 -1
  225. package/dist/tabs/Tab.js.map +1 -1
  226. package/dist/tabs/TabList.js.map +1 -1
  227. package/dist/tabs/TabListScrollButton.js.map +1 -1
  228. package/dist/tabs/_tabs.scss +5 -6
  229. package/dist/tabs/useMaxTabPanelHeight.js.map +1 -1
  230. package/dist/test-utils/data-testid.js.map +1 -1
  231. package/dist/test-utils/mocks/match-media.js +5 -5
  232. package/dist/test-utils/mocks/match-media.js.map +1 -1
  233. package/dist/test-utils/vitest/timers.d.ts +1 -1
  234. package/dist/test-utils/vitest/timers.js +1 -1
  235. package/dist/test-utils/vitest/timers.js.map +1 -1
  236. package/dist/theme/_a11y.scss +3 -1
  237. package/dist/theme/_theme.scss +16 -12
  238. package/dist/tooltip/Tooltip.js.map +1 -1
  239. package/dist/tooltip/TooltipHoverModeProvider.js.map +1 -1
  240. package/dist/tooltip/useTooltip.js.map +1 -1
  241. package/dist/transition/CSSTransition.js.map +1 -1
  242. package/dist/transition/Collapse.js.map +1 -1
  243. package/dist/transition/CrossFade.js.map +1 -1
  244. package/dist/transition/ScaleTransition.js.map +1 -1
  245. package/dist/transition/SkeletonPlaceholder.js.map +1 -1
  246. package/dist/transition/Slide.js.map +1 -1
  247. package/dist/transition/SlideContainer.js.map +1 -1
  248. package/dist/transition/types.js.map +1 -1
  249. package/dist/transition/useCollapseTransition.js.map +1 -1
  250. package/dist/transition/useCrossFadeTransition.js.map +1 -1
  251. package/dist/transition/useMaxWidthTransition.js.map +1 -1
  252. package/dist/transition/useScaleTransition.js.map +1 -1
  253. package/dist/transition/useSkeletonPlaceholder.js.map +1 -1
  254. package/dist/tree/Tree.js.map +1 -1
  255. package/dist/tree/TreeItem.js.map +1 -1
  256. package/dist/tree/TreeProvider.js.map +1 -1
  257. package/dist/tree/styles.js.map +1 -1
  258. package/dist/tree/types.js.map +1 -1
  259. package/dist/tree/useTreeMovement.js.map +1 -1
  260. package/dist/typography/HighlightTextMark.js.map +1 -1
  261. package/dist/typography/Mark.js.map +1 -1
  262. package/dist/typography/TextContainer.js.map +1 -1
  263. package/dist/typography/Typography.js.map +1 -1
  264. package/dist/typography/_typography.scss +0 -1
  265. package/dist/useElementSize.js.map +1 -1
  266. package/dist/useIntersectionObserver.js.map +1 -1
  267. package/dist/useMutationObserver.js.map +1 -1
  268. package/dist/useWindowSize.js.map +1 -1
  269. package/dist/utils/getNumberOfDigits.d.ts +7 -0
  270. package/dist/utils/getNumberOfDigits.js +11 -0
  271. package/dist/utils/getNumberOfDigits.js.map +1 -0
  272. package/dist/utils/nearest.js +2 -1
  273. package/dist/utils/nearest.js.map +1 -1
  274. package/dist/utils/useDevEffect.d.ts +7 -0
  275. package/dist/utils/useDevEffect.js +8 -0
  276. package/dist/utils/useDevEffect.js.map +1 -0
  277. package/dist/window-splitter/WindowSplitter.js +3 -2
  278. package/dist/window-splitter/WindowSplitter.js.map +1 -1
  279. package/dist/window-splitter/_window-splitter.scss +65 -19
  280. package/dist/window-splitter/styles.d.ts +9 -0
  281. package/dist/window-splitter/styles.js +3 -2
  282. package/dist/window-splitter/styles.js.map +1 -1
  283. package/dist/window-splitter/useWindowSplitter.js.map +1 -1
  284. package/package.json +38 -30
  285. package/src/CoreProviders.tsx +1 -0
  286. package/src/app-bar/AppBar.tsx +1 -2
  287. package/src/app-bar/AppBarTitle.tsx +1 -2
  288. package/src/autocomplete/AutocompleteListboxChildren.tsx +3 -1
  289. package/src/autocomplete/types.ts +24 -19
  290. package/src/autocomplete/utils.ts +9 -6
  291. package/src/avatar/Avatar.tsx +2 -1
  292. package/src/button/Button.tsx +2 -1
  293. package/src/button/FloatingActionButton.tsx +2 -1
  294. package/src/card/Card.tsx +2 -1
  295. package/src/card/CardContent.tsx +1 -2
  296. package/src/card/ClickableCard.tsx +1 -2
  297. package/src/chip/Chip.tsx +2 -1
  298. package/src/datetime/NativeDateField.tsx +2 -1
  299. package/src/datetime/NativeTimeField.tsx +2 -1
  300. package/src/datetime/useDateField.ts +13 -8
  301. package/src/datetime/useTimeField.ts +13 -8
  302. package/src/dialog/Dialog.tsx +2 -1
  303. package/src/dialog/DialogContainer.tsx +1 -2
  304. package/src/dialog/DialogContent.tsx +1 -2
  305. package/src/dialog/DialogFooter.tsx +1 -2
  306. package/src/divider/Divider.tsx +1 -2
  307. package/src/draggable/useDraggable.ts +4 -4
  308. package/src/draggable/utils.ts +4 -2
  309. package/src/expansion-panel/ExpansionPanelHeader.tsx +1 -2
  310. package/src/files/FileInput.tsx +2 -1
  311. package/src/files/useFileUpload.ts +6 -6
  312. package/src/files/validation.ts +1 -2
  313. package/src/focus/useFocusContainer.ts +4 -4
  314. package/src/form/Fieldset.tsx +25 -3
  315. package/src/form/FormMessageContainer.tsx +1 -2
  316. package/src/form/FormMessageCounter.tsx +1 -2
  317. package/src/form/InputToggle.tsx +3 -3
  318. package/src/form/Legend.tsx +55 -10
  319. package/src/form/Listbox.tsx +1 -2
  320. package/src/form/ListboxProvider.ts +3 -2
  321. package/src/form/NativeSelect.tsx +2 -1
  322. package/src/form/Password.tsx +4 -2
  323. package/src/form/ResizingTextAreaWrapper.tsx +1 -2
  324. package/src/form/Select.tsx +55 -3
  325. package/src/form/SelectedOption.tsx +2 -4
  326. package/src/form/Slider.tsx +2 -1
  327. package/src/form/SliderContainer.tsx +1 -2
  328. package/src/form/SliderThumb.tsx +6 -3
  329. package/src/form/SliderTrack.tsx +2 -1
  330. package/src/form/SliderValueMarks.tsx +1 -2
  331. package/src/form/Switch.tsx +2 -1
  332. package/src/form/TextArea.tsx +1 -2
  333. package/src/form/TextField.tsx +2 -1
  334. package/src/form/TextFieldContainer.tsx +1 -2
  335. package/src/form/fieldsetStyles.ts +18 -3
  336. package/src/form/inputToggleStyles.ts +4 -2
  337. package/src/form/labelStyles.ts +1 -1
  338. package/src/form/legendStyles.ts +132 -0
  339. package/src/form/selectUtils.ts +3 -2
  340. package/src/form/textFieldContainerStyles.ts +1 -2
  341. package/src/form/types.ts +35 -17
  342. package/src/form/useCheckboxGroup.ts +3 -2
  343. package/src/form/useCombobox.ts +8 -3
  344. package/src/form/useNumberField.ts +36 -35
  345. package/src/form/useRangeSlider.ts +1 -2
  346. package/src/form/useSlider.ts +1 -2
  347. package/src/form/useTextField.ts +8 -3
  348. package/src/hoverMode/useHoverMode.ts +4 -8
  349. package/src/icon/FontIcon.tsx +1 -2
  350. package/src/icon/IconRotator.tsx +1 -2
  351. package/src/icon/MaterialIcon.tsx +2 -1
  352. package/src/icon/MaterialSymbol.tsx +2 -1
  353. package/src/icon/SVGIcon.tsx +1 -2
  354. package/src/icon/config.tsx +10 -7
  355. package/src/icon/materialConfig.ts +1 -2
  356. package/src/icon/styles.ts +1 -2
  357. package/src/interaction/UserInteractionModeProvider.tsx +9 -4
  358. package/src/interaction/types.ts +1 -2
  359. package/src/interaction/useElementInteraction.tsx +3 -2
  360. package/src/layout/LayoutAppBar.tsx +6 -6
  361. package/src/layout/LayoutNav.tsx +2 -1
  362. package/src/layout/LayoutWindowSplitter.tsx +2 -1
  363. package/src/layout/Main.tsx +1 -2
  364. package/src/layout/useExpandableLayout.ts +63 -5
  365. package/src/layout/useHorizontalLayoutTransition.ts +1 -2
  366. package/src/layout/useLayoutTree.ts +2 -2
  367. package/src/layout/useLayoutWindowSplitter.ts +6 -6
  368. package/src/layout/useResizableLayout.ts +3 -6
  369. package/src/link/Link.tsx +1 -2
  370. package/src/link/SkipToMainContent.tsx +20 -23
  371. package/src/list/List.tsx +1 -2
  372. package/src/list/ListItem.tsx +2 -1
  373. package/src/list/ListItemAddon.tsx +2 -1
  374. package/src/list/ListItemLink.tsx +2 -1
  375. package/src/list/ListSubheader.tsx +1 -2
  376. package/src/list/getListItemHeight.ts +8 -9
  377. package/src/list/listItemStyles.ts +1 -2
  378. package/src/list/types.ts +1 -2
  379. package/src/media-queries/AppSizeProvider.tsx +8 -10
  380. package/src/media-queries/appSize.ts +3 -0
  381. package/src/media-queries/config.ts +41 -0
  382. package/src/menu/DropdownMenu.tsx +4 -5
  383. package/src/menu/Menu.tsx +2 -1
  384. package/src/menu/MenuItemButton.tsx +1 -2
  385. package/src/menu/MenuItemFileInput.tsx +2 -1
  386. package/src/menu/MenuItemInputToggle.tsx +3 -3
  387. package/src/menu/MenuItemSeparator.tsx +2 -1
  388. package/src/menu/MenuVisibilityProvider.tsx +4 -2
  389. package/src/menu/MenuWidget.tsx +1 -2
  390. package/src/menu/useContextMenu.ts +4 -2
  391. package/src/movement/types.ts +52 -13
  392. package/src/movement/useKeyboardMovementProvider.ts +77 -38
  393. package/src/navigation/CollapsibleNavGroup.tsx +1 -2
  394. package/src/navigation/NavItem.tsx +1 -2
  395. package/src/navigation/NavItemButton.tsx +2 -1
  396. package/src/navigation/NavItemLink.tsx +2 -1
  397. package/src/navigation/getTableOfContentsHeadings.ts +1 -2
  398. package/src/navigation/types.ts +1 -2
  399. package/src/overlay/Overlay.tsx +2 -1
  400. package/src/positioning/createHorizontalPosition.ts +10 -12
  401. package/src/positioning/createVerticalPosition.ts +10 -11
  402. package/src/positioning/useFixedPositioning.ts +6 -3
  403. package/src/progress/CircularProgress.tsx +2 -1
  404. package/src/progress/LinearProgress.tsx +2 -1
  405. package/src/progress/linearProgressStyles.ts +1 -2
  406. package/src/responsive-item/ResponsiveItem.tsx +1 -2
  407. package/src/responsive-item/ResponsiveItemOverlay.tsx +2 -1
  408. package/src/searching/caseInsensitive.ts +2 -4
  409. package/src/segmented-button/SegmentedButton.tsx +2 -1
  410. package/src/segmented-button/SegmentedButtonContainer.tsx +2 -1
  411. package/src/segmented-button/segmentedButtonStyles.ts +1 -2
  412. package/src/sheet/Sheet.tsx +1 -2
  413. package/src/snackbar/Toast.tsx +2 -1
  414. package/src/spinbutton/SpinButton.tsx +98 -0
  415. package/src/spinbutton/SpinButtonGroupProvider.tsx +32 -0
  416. package/src/spinbutton/defaults.ts +45 -0
  417. package/src/spinbutton/types.ts +413 -0
  418. package/src/spinbutton/useSpinButton.ts +311 -0
  419. package/src/spinbutton/useSpinButtonGroupProvider.ts +104 -0
  420. package/src/spinbutton/utils/deselectNode.ts +17 -0
  421. package/src/spinbutton/utils/resolveInputEvent.ts +112 -0
  422. package/src/spinbutton/utils/selectNode.ts +15 -0
  423. package/src/table/StickyTableSection.tsx +2 -1
  424. package/src/table/Table.tsx +1 -2
  425. package/src/table/TableBody.tsx +2 -1
  426. package/src/table/TableCellContent.tsx +1 -2
  427. package/src/table/TableCheckbox.tsx +1 -2
  428. package/src/table/TableFooter.tsx +1 -2
  429. package/src/table/TableHeader.tsx +1 -2
  430. package/src/table/TableRadio.tsx +1 -2
  431. package/src/table/TableRow.tsx +1 -2
  432. package/src/table/useStickyTableSection.tsx +1 -2
  433. package/src/tabs/SimpleTabPanel.tsx +2 -1
  434. package/src/tabs/SimpleTabPanels.tsx +2 -1
  435. package/src/tabs/Tab.tsx +3 -6
  436. package/src/tabs/TabList.tsx +2 -1
  437. package/src/tabs/TabListScrollButton.tsx +1 -2
  438. package/src/tabs/useMaxTabPanelHeight.ts +7 -4
  439. package/src/test-utils/data-testid.ts +1 -2
  440. package/src/test-utils/mocks/match-media.ts +5 -10
  441. package/src/test-utils/vitest/timers.ts +1 -1
  442. package/src/tooltip/Tooltip.tsx +2 -1
  443. package/src/tooltip/TooltipHoverModeProvider.tsx +1 -2
  444. package/src/tooltip/useTooltip.ts +9 -5
  445. package/src/transition/CSSTransition.tsx +2 -1
  446. package/src/transition/Collapse.tsx +4 -2
  447. package/src/transition/CrossFade.tsx +2 -1
  448. package/src/transition/ScaleTransition.tsx +2 -1
  449. package/src/transition/SkeletonPlaceholder.tsx +1 -2
  450. package/src/transition/Slide.tsx +2 -1
  451. package/src/transition/SlideContainer.tsx +1 -2
  452. package/src/transition/types.ts +15 -16
  453. package/src/transition/useCollapseTransition.ts +6 -5
  454. package/src/transition/useCrossFadeTransition.ts +3 -2
  455. package/src/transition/useMaxWidthTransition.ts +1 -2
  456. package/src/transition/useScaleTransition.ts +3 -2
  457. package/src/transition/useSkeletonPlaceholder.ts +1 -2
  458. package/src/tree/Tree.tsx +2 -1
  459. package/src/tree/TreeItem.tsx +2 -1
  460. package/src/tree/TreeProvider.tsx +4 -4
  461. package/src/tree/styles.ts +1 -2
  462. package/src/tree/types.ts +1 -2
  463. package/src/tree/useTreeMovement.ts +1 -2
  464. package/src/typography/HighlightTextMark.tsx +1 -2
  465. package/src/typography/Mark.tsx +1 -2
  466. package/src/typography/TextContainer.tsx +1 -2
  467. package/src/typography/Typography.tsx +1 -2
  468. package/src/useElementSize.ts +7 -4
  469. package/src/useIntersectionObserver.ts +3 -2
  470. package/src/useMutationObserver.ts +3 -2
  471. package/src/useWindowSize.ts +4 -2
  472. package/src/utils/getNumberOfDigits.ts +18 -0
  473. package/src/utils/nearest.ts +2 -1
  474. package/src/utils/useDevEffect.ts +9 -0
  475. package/src/window-splitter/WindowSplitter.tsx +5 -2
  476. package/src/window-splitter/styles.ts +13 -2
  477. package/src/window-splitter/useWindowSplitter.ts +3 -1
@@ -0,0 +1,311 @@
1
+ "use client";
2
+
3
+ import { type Dispatch, useCallback, useRef, useState } from "react";
4
+
5
+ import { tryToSubmitRelatedForm } from "../form/utils.js";
6
+ import { useEnsuredId } from "../useEnsuredId.js";
7
+ import { useEnsuredRef } from "../useEnsuredRef.js";
8
+ import { useEnsuredState } from "../useEnsuredState.js";
9
+ import { useIsomorphicLayoutEffect } from "../useIsomorphicLayoutEffect.js";
10
+ import { withinRange } from "../utils/withinRange.js";
11
+ import { useSpinButtonGroup } from "./SpinButtonGroupProvider.js";
12
+ import {
13
+ defaultGetSpinButtonTextContent,
14
+ defaultSpinButtonGetValueText,
15
+ } from "./defaults.js";
16
+ import {
17
+ type SpinButtonChangeEvent,
18
+ type SpinButtonChangeEventOptions,
19
+ type SpinButtonImplementation,
20
+ type SpinButtonOptions,
21
+ type SpinButtonValue,
22
+ } from "./types.js";
23
+ import { deselectNode } from "./utils/deselectNode.js";
24
+ import { resolveInputEvent } from "./utils/resolveInputEvent.js";
25
+ import { selectNode } from "./utils/selectNode.js";
26
+
27
+ /**
28
+ * @since 6.4.0
29
+ */
30
+ const noop = (): void => {
31
+ // do nothing
32
+ };
33
+
34
+ /**
35
+ * @since 6.4.0
36
+ */
37
+ export function useSpinButton<E extends HTMLElement = HTMLDivElement>(
38
+ options: SpinButtonOptions<E>
39
+ ): SpinButtonImplementation<E> {
40
+ const {
41
+ id: propId,
42
+ ref: propRef,
43
+ min,
44
+ max,
45
+ step = 1,
46
+ minDigits,
47
+ maxDigits,
48
+ form,
49
+ readOnly,
50
+ disabled,
51
+ required,
52
+ error,
53
+ onBlur = noop,
54
+ onFocus = noop,
55
+ onInput = noop,
56
+ onClick = noop,
57
+ onKeyDown = noop,
58
+ fallback,
59
+ mappings,
60
+ value: propValue,
61
+ onValueChange = noop,
62
+ defaultValue = null,
63
+ getValueText = defaultSpinButtonGetValueText,
64
+ getTextContent = defaultGetSpinButtonTextContent,
65
+ placeholderChar,
66
+ defaultKeyboardValue,
67
+ } = options;
68
+ const id = useEnsuredId(propId, "spinbutton");
69
+
70
+ // trigger a noop setValue when `value` and `onValueChange` are provided
71
+ // since `onValueChange is always called with `setValue
72
+ let propSetValue: Dispatch<SpinButtonValue> | undefined;
73
+ if (typeof propValue !== "undefined" && options.onValueChange) {
74
+ propSetValue = noop;
75
+ }
76
+
77
+ const [value, setValue] = useEnsuredState({
78
+ value: propValue,
79
+ setValue: propSetValue,
80
+ defaultValue,
81
+ });
82
+
83
+ const focused = useRef(false);
84
+ const typedCount = useRef(0);
85
+ const prevText = useRef("");
86
+ const [nodeRef, nodeRefCallback] = useEnsuredRef(propRef);
87
+ const { focusNext } = useSpinButtonGroup();
88
+ const [keyboardValue] = useState(defaultKeyboardValue);
89
+
90
+ // NOTE: I might be able to get rid of this since I don't remember why it was
91
+ // added maybe for controlled fields? I'll have to see when I get to the
92
+ // date/time components again
93
+ useIsomorphicLayoutEffect(() => {
94
+ const node = nodeRef.current;
95
+ if (!focused.current || !node) {
96
+ return;
97
+ }
98
+
99
+ prevText.current = node.textContent || "";
100
+ selectNode(node);
101
+ }, [nodeRef, value]);
102
+
103
+ const updateValue = useCallback(
104
+ (options: SpinButtonChangeEventOptions<E>) => {
105
+ setValue(options.value);
106
+ onValueChange(options);
107
+ if (options.reason === "typed-to-completion") {
108
+ focusNext();
109
+ }
110
+ },
111
+ [focusNext, onValueChange, setValue]
112
+ );
113
+ const increment = useCallback(
114
+ (event: SpinButtonChangeEvent<E>) => {
115
+ let nextValue: SpinButtonValue =
116
+ value ?? keyboardValue ?? min ?? max ?? 0;
117
+ nextValue = withinRange({ min, max, value: nextValue + step });
118
+
119
+ // this actually means both min and max are a number
120
+ if (nextValue === value && typeof min === "number") {
121
+ nextValue = min;
122
+ }
123
+
124
+ updateValue({
125
+ event,
126
+ reason: "change",
127
+ value: nextValue,
128
+ });
129
+ },
130
+ [keyboardValue, max, min, step, updateValue, value]
131
+ );
132
+ const decrement = useCallback(
133
+ (event: SpinButtonChangeEvent<E>) => {
134
+ let nextValue: SpinButtonValue =
135
+ value ?? keyboardValue ?? max ?? min ?? 0;
136
+ nextValue = withinRange({ min, max, value: nextValue - step });
137
+
138
+ // this actually means both min and max are a number
139
+ if (nextValue === value && typeof max === "number") {
140
+ nextValue = max;
141
+ }
142
+
143
+ updateValue({
144
+ event,
145
+ reason: "change",
146
+ value: nextValue,
147
+ });
148
+ },
149
+ [keyboardValue, max, min, step, updateValue, value]
150
+ );
151
+
152
+ return {
153
+ value,
154
+ setValue,
155
+ spinButtonRef: nodeRef,
156
+ spinButtonProps: {
157
+ "aria-readonly": readOnly || undefined,
158
+ "aria-disabled": disabled || undefined,
159
+ "aria-invalid": error || undefined,
160
+ "aria-required": required || undefined,
161
+ "aria-valuemin": min,
162
+ "aria-valuemax": max,
163
+ "aria-valuenow": value === null ? undefined : value,
164
+ "aria-valuetext": getValueText(value),
165
+ id,
166
+ ref: nodeRefCallback,
167
+ role: "spinbutton",
168
+ autoCapitalize: "none",
169
+ autoCorrect: "off",
170
+ spellCheck: false,
171
+ inputMode: "numeric",
172
+ contentEditable: !disabled || undefined,
173
+ suppressContentEditableWarning: true,
174
+ tabIndex: disabled ? undefined : 0,
175
+ onBlur: (event) => {
176
+ onBlur(event);
177
+
178
+ focused.current = false;
179
+ deselectNode(event.currentTarget);
180
+ },
181
+ onFocus: (event) => {
182
+ onFocus(event);
183
+
184
+ if (disabled) {
185
+ return;
186
+ }
187
+
188
+ focused.current = true;
189
+ typedCount.current = 0;
190
+ selectNode(event.currentTarget);
191
+ },
192
+ onKeyDown: (event) => {
193
+ onKeyDown(event);
194
+
195
+ if (disabled || (readOnly && event.key !== "Enter")) {
196
+ return;
197
+ }
198
+
199
+ const setValue = (nextValue: number): void =>
200
+ updateValue({ value: nextValue, event, reason: "change" });
201
+
202
+ let stop = false;
203
+ switch (event.key) {
204
+ case "ArrowRight":
205
+ case "ArrowLeft":
206
+ // `event.stopPropagation()` should not be called here since the
207
+ // parent `useSpinButtonGroup` keyboard event handler should
208
+ // still be called to handle advancing to the next spinbutton in
209
+ // the group. Only the default cursor movement needs to be disabled
210
+ // instead.
211
+ event.preventDefault();
212
+ break;
213
+ case "ArrowUp":
214
+ stop = true;
215
+ increment(event);
216
+ break;
217
+ case "ArrowDown":
218
+ stop = true;
219
+ decrement(event);
220
+ break;
221
+ case "Home":
222
+ stop = true;
223
+ if (typeof min === "number") {
224
+ setValue(min);
225
+ }
226
+ break;
227
+ case "End":
228
+ stop = true;
229
+ if (typeof max === "number") {
230
+ setValue(max);
231
+ }
232
+ break;
233
+ case "Enter":
234
+ stop = true;
235
+ tryToSubmitRelatedForm(event, form);
236
+ }
237
+
238
+ if (stop) {
239
+ event.preventDefault();
240
+ event.stopPropagation();
241
+ typedCount.current = 0;
242
+ }
243
+ },
244
+ onClick: (event) => {
245
+ onClick(event);
246
+
247
+ event.preventDefault();
248
+ if (disabled) {
249
+ return;
250
+ }
251
+
252
+ focused.current = true;
253
+ typedCount.current = 0;
254
+ selectNode(event.currentTarget);
255
+ },
256
+ onInput: (event) => {
257
+ onInput(event);
258
+
259
+ const node = event.currentTarget;
260
+ // if the input event is fired while readOnly or disabled, ignore it
261
+ // and set it back to the previous state
262
+ if (readOnly || disabled) {
263
+ node.textContent = prevText.current;
264
+ selectNode(node);
265
+ return;
266
+ }
267
+
268
+ const { reason, nextValue } = resolveInputEvent({
269
+ min,
270
+ max,
271
+ text: node.textContent || "",
272
+ mappings,
273
+ maxDigits,
274
+ prevText: prevText.current,
275
+ prevValue: value,
276
+ typedCount: typedCount.current,
277
+ });
278
+
279
+ if (
280
+ reason === "change" ||
281
+ reason === "cleared" ||
282
+ reason === "typed-to-completion"
283
+ ) {
284
+ typedCount.current = 0;
285
+ } else if (reason !== "ignored") {
286
+ typedCount.current++;
287
+ }
288
+
289
+ node.textContent = getTextContent({
290
+ min,
291
+ max,
292
+ minDigits,
293
+ maxDigits,
294
+ value: nextValue,
295
+ fallback,
296
+ placeholderChar,
297
+ });
298
+ prevText.current = node.textContent;
299
+ selectNode(node);
300
+
301
+ if (reason !== "ignored" && reason !== "placeholder-digit") {
302
+ updateValue({
303
+ event,
304
+ value: nextValue,
305
+ reason,
306
+ });
307
+ }
308
+ },
309
+ },
310
+ };
311
+ }
@@ -0,0 +1,104 @@
1
+ "use client";
2
+
3
+ import {
4
+ DEFAULT_LTR_KEYBOARD_MOVEMENT_WITHOUT_JUMP,
5
+ DEFAULT_RTL_KEYBOARD_MOVEMENT_WITHOUT_JUMP,
6
+ } from "../movement/constants.js";
7
+ import {
8
+ type KeyboardMovementProps,
9
+ type KeyboardMovementProviderImplementation,
10
+ type SimpleKeyboardMovementWrapperOptions,
11
+ } from "../movement/types.js";
12
+ import { useKeyboardMovementProvider } from "../movement/useKeyboardMovementProvider.js";
13
+ import { useDir } from "../typography/WritingDirectionProvider.js";
14
+
15
+ const SPINBUTTON_ROLE = '[role="spinbutton"]';
16
+
17
+ /**
18
+ * @internal
19
+ * @since 6.4.0
20
+ */
21
+ const getSpinButtonsOnly = (container: HTMLElement): readonly HTMLElement[] => [
22
+ ...container.querySelectorAll<HTMLElement>(SPINBUTTON_ROLE),
23
+ ];
24
+
25
+ /**
26
+ * @since 6.4.0
27
+ */
28
+ export interface SpinButtonGroupProviderOptions<
29
+ E extends HTMLElement = HTMLElement,
30
+ > extends SimpleKeyboardMovementWrapperOptions<E> {
31
+ /**
32
+ * Set this to `true` to update the container's `onClick` handler to move
33
+ * focus to the first spinbutton that does not have a value or the first
34
+ * spinbutton in the group so that focus is always moved to the spin buttons.
35
+ *
36
+ * @defaultValue `false`
37
+ */
38
+ forceFocusWithin?: boolean;
39
+ }
40
+
41
+ export interface ProvidedSpinButtonGroupProps<
42
+ E extends HTMLElement = HTMLElement,
43
+ > extends KeyboardMovementProps<E> {
44
+ role: "group";
45
+ }
46
+
47
+ /**
48
+ * @since 6.4.0
49
+ */
50
+ export interface SpinButtonGroupProviderImplementation<
51
+ E extends HTMLElement = HTMLElement,
52
+ > extends KeyboardMovementProviderImplementation<E> {
53
+ movementProps: Readonly<ProvidedSpinButtonGroupProps<E>>;
54
+ }
55
+
56
+ /**
57
+ * @since 6.4.0
58
+ */
59
+ export function useSpinButtonGroupProvider<E extends HTMLElement = HTMLElement>(
60
+ options: SpinButtonGroupProviderOptions<E> = {}
61
+ ): SpinButtonGroupProviderImplementation<E> {
62
+ const { disabled, forceFocusWithin } = options;
63
+
64
+ const isRTL = useDir().dir === "rtl";
65
+ const movementKeys = isRTL
66
+ ? DEFAULT_RTL_KEYBOARD_MOVEMENT_WITHOUT_JUMP
67
+ : DEFAULT_LTR_KEYBOARD_MOVEMENT_WITHOUT_JUMP;
68
+
69
+ const { movementProps, ...remaining } = useKeyboardMovementProvider({
70
+ ...options,
71
+ ...movementKeys,
72
+ loopable: false,
73
+ trackTabKeys: true,
74
+ getFocusableElements: getSpinButtonsOnly,
75
+ });
76
+
77
+ return {
78
+ ...remaining,
79
+ movementProps: {
80
+ ...movementProps,
81
+ role: "group",
82
+ onClick: (event) => {
83
+ movementProps.onClick(event);
84
+
85
+ const { target, currentTarget } = event;
86
+ if (
87
+ disabled ||
88
+ !forceFocusWithin ||
89
+ !(target instanceof HTMLElement) ||
90
+ target.closest(SPINBUTTON_ROLE)
91
+ ) {
92
+ return;
93
+ }
94
+
95
+ const buttons = [...currentTarget.querySelectorAll(SPINBUTTON_ROLE)];
96
+ const i = buttons.findIndex((button) => !button.ariaValueNow);
97
+ remaining.movementContext.updateFocusIndex({
98
+ index: Math.max(0, i),
99
+ force: true,
100
+ });
101
+ },
102
+ },
103
+ };
104
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @since 6.4.0
3
+ * @internal
4
+ */
5
+ export function deselectNode(node: Node): void {
6
+ const selection = window.getSelection();
7
+ if (!selection) {
8
+ return;
9
+ }
10
+
11
+ for (let i = 0; i < selection.rangeCount; i++) {
12
+ const range = selection.getRangeAt(i);
13
+ if (range.startContainer.contains(node)) {
14
+ selection.removeRange(range);
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,112 @@
1
+ import { type MinMaxRange } from "../../types.js";
2
+ import { getNumberOfDigits } from "../../utils/getNumberOfDigits.js";
3
+ import {
4
+ type SpinButtonChangeReason,
5
+ type SpinButtonCharacterValueMap,
6
+ type SpinButtonValue,
7
+ } from "../types.js";
8
+
9
+ /**
10
+ * @since 6.4.0
11
+ * @internal
12
+ */
13
+ interface ResolveInputEventOptions extends Partial<MinMaxRange> {
14
+ text: string;
15
+ mappings?: SpinButtonCharacterValueMap;
16
+ minDigits?: number;
17
+ maxDigits?: number;
18
+ prevText: string;
19
+ prevValue: SpinButtonValue;
20
+ typedCount: number;
21
+ }
22
+
23
+ type SpinButtonResolvedInputReason =
24
+ | SpinButtonChangeReason
25
+ | "ignored"
26
+ | "placeholder-digit";
27
+
28
+ /**
29
+ * @since 6.4.0
30
+ * @internal
31
+ */
32
+ interface ResolveInputEvent {
33
+ reason: SpinButtonResolvedInputReason;
34
+ nextValue: SpinButtonValue;
35
+ }
36
+
37
+ /**
38
+ * @since 6.4.0
39
+ * @internal
40
+ */
41
+ export function resolveInputEvent(
42
+ options: ResolveInputEventOptions
43
+ ): ResolveInputEvent {
44
+ const {
45
+ min,
46
+ max,
47
+ minDigits = getNumberOfDigits(min),
48
+ maxDigits = getNumberOfDigits(max),
49
+ text,
50
+ mappings,
51
+ typedCount,
52
+ prevValue,
53
+ } = options;
54
+
55
+ let { prevText } = options;
56
+ if (typedCount === 0) {
57
+ prevText = "";
58
+ }
59
+
60
+ if (!text) {
61
+ return {
62
+ reason: "cleared",
63
+ nextValue: null,
64
+ };
65
+ }
66
+
67
+ if (mappings) {
68
+ const nextValue = mappings[text] ?? prevValue;
69
+
70
+ let reason: SpinButtonResolvedInputReason = "ignored";
71
+ if (typeof mappings[text] === "number") {
72
+ reason = "typed-to-completion";
73
+ }
74
+
75
+ return {
76
+ reason,
77
+ nextValue,
78
+ };
79
+ }
80
+
81
+ if (/[^0-9]/.test(text)) {
82
+ return {
83
+ reason: "ignored",
84
+ nextValue: prevValue,
85
+ };
86
+ }
87
+
88
+ let reason: SpinButtonResolvedInputReason = "type";
89
+ let nextValue: SpinButtonValue = parseInt(prevText + text, 10);
90
+ if (typeof minDigits === "number" && typedCount + 1 < minDigits) {
91
+ reason = "placeholder-digit";
92
+ }
93
+
94
+ if (typeof max === "number" && nextValue > max) {
95
+ nextValue = prevValue;
96
+ }
97
+
98
+ if (
99
+ typeof nextValue === "number" &&
100
+ // if typing a new value surpasses the number of digits allowed
101
+ ((typeof maxDigits === "number" && typedCount + 1 >= maxDigits) ||
102
+ // typing a new value would exceed the max value
103
+ (typeof max === "number" && nextValue * 10 > max))
104
+ ) {
105
+ reason = "typed-to-completion";
106
+ }
107
+
108
+ return {
109
+ reason,
110
+ nextValue,
111
+ };
112
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @since 6.4.0
3
+ * @internal
4
+ */
5
+ export function selectNode(node: Node): void {
6
+ const selection = window.getSelection();
7
+ if (!selection) {
8
+ return;
9
+ }
10
+
11
+ const range = document.createRange();
12
+ range.selectNodeContents(node);
13
+ selection.removeAllRanges();
14
+ selection.addRange(range);
15
+ }
@@ -14,7 +14,8 @@ import { useTableSectionConfig } from "./useTableSectionConfig.js";
14
14
 
15
15
  /** @since 6.0.0 */
16
16
  export interface StickyTableSectionProps
17
- extends HTMLAttributes<HTMLTableSectionElement>,
17
+ extends
18
+ HTMLAttributes<HTMLTableSectionElement>,
18
19
  TableStickySectionConfiguration,
19
20
  TableSectionConfiguration {
20
21
  type: "header" | "footer";
@@ -27,8 +27,7 @@ declare module "react" {
27
27
  }
28
28
 
29
29
  export interface TableProps
30
- extends TableHTMLAttributes<HTMLTableElement>,
31
- TableConfiguration {}
30
+ extends TableHTMLAttributes<HTMLTableElement>, TableConfiguration {}
32
31
 
33
32
  /**
34
33
  * **Client Component**
@@ -10,7 +10,8 @@ import {
10
10
  import { type TableConfig, type TableConfigContext } from "./types.js";
11
11
 
12
12
  export interface TableBodyProps
13
- extends HTMLAttributes<HTMLTableSectionElement>,
13
+ extends
14
+ HTMLAttributes<HTMLTableSectionElement>,
14
15
  Omit<TableConfig, "header"> {}
15
16
 
16
17
  /**
@@ -19,8 +19,7 @@ export type TableCellContentsIconRotatorProps = Omit<
19
19
  * can be passed to the `ButtonUnstyled`
20
20
  * @internal
21
21
  */
22
- export interface TableCellContentProps
23
- extends ButtonHTMLAttributes<HTMLButtonElement> {
22
+ export interface TableCellContentProps extends ButtonHTMLAttributes<HTMLButtonElement> {
24
23
  /**
25
24
  * The current sort order for this cell. Setting this to `null` will prevent
26
25
  * the button from being rendered.
@@ -48,8 +48,7 @@ export type TableCheckboxSupportedCheckboxProps = Pick<
48
48
  * `"Toggle Row Selection"` to `"Select Row"`.
49
49
  */
50
50
  export interface TableCheckboxProps
51
- extends TableCheckboxTdHTMLAttributes,
52
- TableCheckboxSupportedCheckboxProps {
51
+ extends TableCheckboxTdHTMLAttributes, TableCheckboxSupportedCheckboxProps {
53
52
  /**
54
53
  * @defaultValue `!props["aria-labelledby"] ? "Select Row" : undefined`
55
54
  */
@@ -8,8 +8,7 @@ import { type TableSectionConfiguration } from "./types.js";
8
8
  import { useTableSectionConfig } from "./useTableSectionConfig.js";
9
9
 
10
10
  export interface TableFooterProps
11
- extends HTMLAttributes<HTMLTableSectionElement>,
12
- TableSectionConfiguration {
11
+ extends HTMLAttributes<HTMLTableSectionElement>, TableSectionConfiguration {
13
12
  /**
14
13
  * NOTE: It is recommended to use the `StickyTableSection` component instead
15
14
  * of enabling this prop since it supports dynamically adding styles while the
@@ -8,8 +8,7 @@ import { type TableSectionConfiguration } from "./types.js";
8
8
  import { useTableSectionConfig } from "./useTableSectionConfig.js";
9
9
 
10
10
  export interface TableHeaderProps
11
- extends HTMLAttributes<HTMLTableSectionElement>,
12
- TableSectionConfiguration {
11
+ extends HTMLAttributes<HTMLTableSectionElement>, TableSectionConfiguration {
13
12
  /**
14
13
  * NOTE: It is recommended to use the `StickyTableSection` component instead
15
14
  * of enabling this prop since it supports dynamically adding styles while the
@@ -43,8 +43,7 @@ export type TableRadioSupportedRadioProps = Pick<
43
43
  * @since 6.0.0
44
44
  */
45
45
  export interface TableRadioProps
46
- extends TableRadioTdHTMLAttributes,
47
- TableRadioSupportedRadioProps {
46
+ extends TableRadioTdHTMLAttributes, TableRadioSupportedRadioProps {
48
47
  /**
49
48
  * @defaultValue `!props["aria-labelledby"] ? "Select Row" : undefined`
50
49
  */
@@ -7,8 +7,7 @@ import { tableRow } from "./tableRowStyles.js";
7
7
  import { type TableRowConfiguration } from "./types.js";
8
8
 
9
9
  export interface TableRowProps
10
- extends HTMLAttributes<HTMLTableRowElement>,
11
- TableRowConfiguration {
10
+ extends HTMLAttributes<HTMLTableRowElement>, TableRowConfiguration {
12
11
  /**
13
12
  * Boolean if the current row has been selected and should apply the selected
14
13
  * background-color.
@@ -44,8 +44,7 @@ export const isTableFooterStickyActive: IsStickyTableSectionActive = (
44
44
  };
45
45
 
46
46
  /** @since 6.0.0 */
47
- export interface TableStickySectionOptions
48
- extends TableStickySectionConfiguration {
47
+ export interface TableStickySectionOptions extends TableStickySectionConfiguration {
49
48
  ref?: Ref<HTMLTableSectionElement>;
50
49
  type: "header" | "footer";
51
50
  }
@@ -8,7 +8,8 @@ import { type ProvidedTabPanelProps } from "./useTabs.js";
8
8
  * @since 6.0.0
9
9
  */
10
10
  export interface SimpleTabPanelProps
11
- extends Omit<HTMLAttributes<HTMLDivElement>, keyof ProvidedTabPanelProps>,
11
+ extends
12
+ Omit<HTMLAttributes<HTMLDivElement>, keyof ProvidedTabPanelProps>,
12
13
  ProvidedTabPanelProps {
13
14
  children: ReactNode;
14
15
  }
@@ -6,7 +6,8 @@ import { type ProvidedTabPanelsProps } from "./useTabs.js";
6
6
  * @since 6.0.0
7
7
  */
8
8
  export interface SimpleTabPanelsProps
9
- extends HTMLAttributes<HTMLDivElement>,
9
+ extends
10
+ HTMLAttributes<HTMLDivElement>,
10
11
  Omit<ProvidedTabPanelsProps<HTMLDivElement>, "ref"> {
11
12
  children: ReactNode;
12
13
  }