@react-md/core 1.0.0-next.1 → 1.0.0-next.3

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 (840) hide show
  1. package/.turbo/turbo-build.log +5 -5
  2. package/.turbo/turbo-lint.log +3 -3
  3. package/.turbo/turbo-test.log +142 -129
  4. package/.turbo/turbo-typecheck.log +1 -1
  5. package/CHANGELOG.md +111 -0
  6. package/coverage/clover.xml +437 -3
  7. package/coverage/coverage-final.json +4 -1
  8. package/coverage/lcov-report/Avatar.tsx.html +472 -0
  9. package/coverage/lcov-report/DefaultToastRenderer.tsx.html +166 -112
  10. package/coverage/lcov-report/IconRotator.tsx.html +322 -0
  11. package/coverage/lcov-report/ListItem.tsx.html +892 -0
  12. package/coverage/lcov-report/Portal.tsx.html +223 -0
  13. package/coverage/lcov-report/PortalContainerProvider.tsx.html +367 -0
  14. package/coverage/lcov-report/SkeletonPlaceholder.tsx.html +613 -0
  15. package/coverage/lcov-report/Snackbar.tsx.html +360 -402
  16. package/coverage/lcov-report/Tab.tsx.html +261 -147
  17. package/coverage/lcov-report/Toast.tsx.html +868 -0
  18. package/coverage/lcov-report/ToastManager.tsx.html +1783 -0
  19. package/coverage/lcov-report/ToastManagerProvider.tsx.html +216 -216
  20. package/coverage/lcov-report/TreeGroup.tsx.html +313 -0
  21. package/coverage/lcov-report/app-bar/AppBar.tsx.html +178 -28
  22. package/coverage/lcov-report/app-bar/index.html +7 -7
  23. package/coverage/lcov-report/button/TooltippedButton.tsx.html +445 -0
  24. package/coverage/lcov-report/button/index.html +10 -10
  25. package/coverage/lcov-report/card/Card.tsx.html +349 -0
  26. package/coverage/lcov-report/card/CardContent.tsx.html +223 -0
  27. package/coverage/lcov-report/card/ClickableCard.tsx.html +400 -0
  28. package/coverage/lcov-report/card/index.html +21 -21
  29. package/coverage/lcov-report/card/styles.ts.html +428 -392
  30. package/coverage/lcov-report/cssUtils.ts.html +86 -59
  31. package/coverage/lcov-report/draggable/index.html +21 -36
  32. package/coverage/lcov-report/draggable/useDraggable.ts.html +377 -368
  33. package/coverage/lcov-report/draggable/utils.ts.html +96 -195
  34. package/coverage/lcov-report/expansion-panel/ExpansionList.tsx.html +211 -0
  35. package/coverage/lcov-report/expansion-panel/ExpansionPanel.tsx.html +12 -15
  36. package/coverage/lcov-report/expansion-panel/index.html +34 -19
  37. package/coverage/lcov-report/expansion-panel/useExpansionPanels.ts.html +928 -0
  38. package/coverage/lcov-report/form/MenuItemInputToggle.tsx.html +2 -2
  39. package/coverage/lcov-report/form/Select.tsx.html +1663 -0
  40. package/coverage/lcov-report/form/Slider.tsx.html +163 -40
  41. package/coverage/lcov-report/form/index.html +21 -21
  42. package/coverage/lcov-report/icon/FontIcon.tsx.html +28 -28
  43. package/coverage/lcov-report/icon/index.html +1 -1
  44. package/coverage/lcov-report/index.html +41 -11
  45. package/coverage/lcov-report/interaction/UserInteractionModeProvider.tsx.html +679 -0
  46. package/coverage/lcov-report/interaction/config.ts.html +181 -0
  47. package/coverage/lcov-report/interaction/index.html +33 -18
  48. package/coverage/lcov-report/list/List.tsx.html +490 -0
  49. package/coverage/lcov-report/list/ListItem.tsx.html +886 -0
  50. package/coverage/lcov-report/list/ListItemAddon.tsx.html +286 -0
  51. package/coverage/lcov-report/list/ListItemChildren.tsx.html +445 -0
  52. package/coverage/lcov-report/list/ListItemLink.tsx.html +5 -5
  53. package/coverage/lcov-report/list/index.html +81 -6
  54. package/coverage/lcov-report/list/listItemStyles.ts.html +703 -0
  55. package/coverage/lcov-report/media-queries/appSize.ts.html +1 -1
  56. package/coverage/lcov-report/media-queries/index.html +1 -1
  57. package/coverage/lcov-report/menu/Menu.tsx.html +37 -19
  58. package/coverage/lcov-report/menu/index.html +14 -44
  59. package/coverage/lcov-report/sheet/index.html +8 -8
  60. package/coverage/lcov-report/sheet/styles.ts.html +376 -0
  61. package/coverage/lcov-report/skeletonPlaceholderUtils.ts.html +400 -0
  62. package/coverage/lcov-report/snackbar/Snackbar.tsx.html +55 -97
  63. package/coverage/lcov-report/snackbar/Toast.tsx.html +546 -501
  64. package/coverage/lcov-report/snackbar/ToastManager.tsx.html +269 -269
  65. package/coverage/lcov-report/snackbar/ToastManagerProvider.tsx.html +23 -23
  66. package/coverage/lcov-report/snackbar/index.html +59 -14
  67. package/coverage/lcov-report/snackbar/snackbarStyles.ts.html +12 -87
  68. package/coverage/lcov-report/snackbar/toastStyles.ts.html +206 -146
  69. package/coverage/lcov-report/snackbar/useCurrentToastActions.ts.html +226 -0
  70. package/coverage/lcov-report/snackbarStyles.ts.html +46 -121
  71. package/coverage/lcov-report/src/CoreProviders.tsx.html +20 -20
  72. package/coverage/lcov-report/src/NoSsr.tsx.html +1 -1
  73. package/coverage/lcov-report/src/SsrProvider.tsx.html +10 -10
  74. package/coverage/lcov-report/src/app-bar/AppBar.tsx.html +143 -23
  75. package/coverage/lcov-report/src/app-bar/AppBarTitle.tsx.html +1 -1
  76. package/coverage/lcov-report/src/app-bar/index.html +5 -5
  77. package/coverage/lcov-report/src/avatar/Avatar.tsx.html +2 -2
  78. package/coverage/lcov-report/src/avatar/index.html +1 -1
  79. package/coverage/lcov-report/src/avatar/styles.ts.html +1 -1
  80. package/coverage/lcov-report/src/badge/Badge.tsx.html +1 -1
  81. package/coverage/lcov-report/src/badge/index.html +1 -1
  82. package/coverage/lcov-report/src/box/Box.tsx.html +1 -1
  83. package/coverage/lcov-report/src/box/index.html +23 -8
  84. package/coverage/lcov-report/src/box/styles.ts.html +46 -46
  85. package/coverage/lcov-report/src/button/AsyncButton.tsx.html +1 -1
  86. package/coverage/lcov-report/src/button/Button.tsx.html +84 -84
  87. package/coverage/lcov-report/src/button/ButtonUnstyled.tsx.html +1 -1
  88. package/coverage/lcov-report/src/button/FloatingActionButton.tsx.html +11 -11
  89. package/coverage/lcov-report/src/button/TooltippedButton.tsx.html +445 -0
  90. package/coverage/lcov-report/src/button/buttonStyles.ts.html +52 -52
  91. package/coverage/lcov-report/src/button/buttonUnstyledStyles.ts.html +1 -1
  92. package/coverage/lcov-report/src/button/index.html +83 -8
  93. package/coverage/lcov-report/src/card/Card.tsx.html +37 -31
  94. package/coverage/lcov-report/src/card/CardContent.tsx.html +4 -4
  95. package/coverage/lcov-report/src/card/CardFooter.tsx.html +1 -1
  96. package/coverage/lcov-report/src/card/CardHeader.tsx.html +1 -1
  97. package/coverage/lcov-report/src/card/CardSubtitle.tsx.html +1 -1
  98. package/coverage/lcov-report/src/card/CardTitle.tsx.html +1 -1
  99. package/coverage/lcov-report/src/card/ClickableCard.tsx.html +400 -0
  100. package/coverage/lcov-report/src/card/index.html +24 -9
  101. package/coverage/lcov-report/src/card/styles.ts.html +58 -31
  102. package/coverage/lcov-report/src/chip/Chip.tsx.html +1 -1
  103. package/coverage/lcov-report/src/chip/index.html +7 -7
  104. package/coverage/lcov-report/src/chip/styles.ts.html +9 -12
  105. package/coverage/lcov-report/src/cssUtils.ts.html +53 -53
  106. package/coverage/lcov-report/src/delegateEvent.ts.html +109 -109
  107. package/coverage/lcov-report/src/dialog/Dialog.tsx.html +1 -1
  108. package/coverage/lcov-report/src/dialog/DialogContainer.tsx.html +1 -1
  109. package/coverage/lcov-report/src/dialog/DialogContent.tsx.html +1 -1
  110. package/coverage/lcov-report/src/dialog/DialogFooter.tsx.html +1 -1
  111. package/coverage/lcov-report/src/dialog/DialogHeader.tsx.html +1 -1
  112. package/coverage/lcov-report/src/dialog/DialogTitle.tsx.html +1 -1
  113. package/coverage/lcov-report/src/dialog/FixedDialog.tsx.html +1 -1
  114. package/coverage/lcov-report/src/dialog/NestedDialogProvider.ts.html +1 -1
  115. package/coverage/lcov-report/src/dialog/index.html +129 -9
  116. package/coverage/lcov-report/src/dialog/styles.ts.html +1 -1
  117. package/coverage/lcov-report/src/divider/Divider.tsx.html +4 -7
  118. package/coverage/lcov-report/src/divider/index.html +5 -5
  119. package/coverage/lcov-report/src/divider/styles.ts.html +1 -1
  120. package/coverage/lcov-report/src/draggable/index.html +27 -27
  121. package/coverage/lcov-report/src/draggable/useDraggable.ts.html +47 -44
  122. package/coverage/lcov-report/src/draggable/utils.ts.html +29 -131
  123. package/coverage/lcov-report/src/expansion-panel/ExpansionList.tsx.html +1 -1
  124. package/coverage/lcov-report/src/expansion-panel/ExpansionPanel.tsx.html +1 -1
  125. package/coverage/lcov-report/src/expansion-panel/ExpansionPanelHeader.tsx.html +1 -1
  126. package/coverage/lcov-report/src/expansion-panel/index.html +8 -8
  127. package/coverage/lcov-report/src/expansion-panel/useExpansionList.ts.html +1 -1
  128. package/coverage/lcov-report/src/expansion-panel/useExpansionPanels.ts.html +36 -24
  129. package/coverage/lcov-report/src/focus/index.html +1 -1
  130. package/coverage/lcov-report/src/focus/useFocusContainer.ts.html +1 -1
  131. package/coverage/lcov-report/src/focus/utils.ts.html +1 -1
  132. package/coverage/lcov-report/src/form/Checkbox.tsx.html +1 -1
  133. package/coverage/lcov-report/src/form/Fieldset.tsx.html +1 -1
  134. package/coverage/lcov-report/src/form/FileInput.tsx.html +1 -1
  135. package/coverage/lcov-report/src/form/Form.tsx.html +1 -1
  136. package/coverage/lcov-report/src/form/FormMessage.tsx.html +1 -1
  137. package/coverage/lcov-report/src/form/FormMessageContainer.tsx.html +5 -5
  138. package/coverage/lcov-report/src/form/FormMessageCounter.tsx.html +1 -1
  139. package/coverage/lcov-report/src/form/InputToggle.tsx.html +110 -110
  140. package/coverage/lcov-report/src/form/InputToggleIcon.tsx.html +63 -63
  141. package/coverage/lcov-report/src/form/Label.tsx.html +98 -98
  142. package/coverage/lcov-report/src/form/Legend.tsx.html +1 -1
  143. package/coverage/lcov-report/src/form/MenuItemCheckbox.tsx.html +1 -1
  144. package/coverage/lcov-report/src/form/MenuItemFileInput.tsx.html +1 -1
  145. package/coverage/lcov-report/src/form/MenuItemInputToggle.tsx.html +2 -2
  146. package/coverage/lcov-report/src/form/MenuItemRadio.tsx.html +1 -1
  147. package/coverage/lcov-report/src/form/MenuItemSwitch.tsx.html +1 -1
  148. package/coverage/lcov-report/src/form/MenuItemTextField.tsx.html +1 -1
  149. package/coverage/lcov-report/src/form/NativeSelect.tsx.html +1 -1
  150. package/coverage/lcov-report/src/form/OptGroup.tsx.html +1 -1
  151. package/coverage/lcov-report/src/form/Option.tsx.html +1 -1
  152. package/coverage/lcov-report/src/form/Password.tsx.html +1 -1
  153. package/coverage/lcov-report/src/form/Radio.tsx.html +3 -3
  154. package/coverage/lcov-report/src/form/Select.tsx.html +29 -5
  155. package/coverage/lcov-report/src/form/SelectValue.tsx.html +1 -1
  156. package/coverage/lcov-report/src/form/Slider.tsx.html +1 -1
  157. package/coverage/lcov-report/src/form/SliderContainer.tsx.html +1 -1
  158. package/coverage/lcov-report/src/form/SliderMark.tsx.html +1 -1
  159. package/coverage/lcov-report/src/form/SliderMarkLabel.tsx.html +1 -1
  160. package/coverage/lcov-report/src/form/SliderThumb.tsx.html +1 -1
  161. package/coverage/lcov-report/src/form/SliderTrack.tsx.html +1 -1
  162. package/coverage/lcov-report/src/form/SliderValueMarks.tsx.html +1 -1
  163. package/coverage/lcov-report/src/form/SliderValueTooltip.tsx.html +1 -1
  164. package/coverage/lcov-report/src/form/Switch.tsx.html +1 -1
  165. package/coverage/lcov-report/src/form/SwitchTrack.tsx.html +1 -1
  166. package/coverage/lcov-report/src/form/TextArea.tsx.html +2 -2
  167. package/coverage/lcov-report/src/form/TextField.tsx.html +1 -1
  168. package/coverage/lcov-report/src/form/TextFieldAddon.tsx.html +1 -1
  169. package/coverage/lcov-report/src/form/TextFieldContainer.tsx.html +1 -1
  170. package/coverage/lcov-report/src/form/TextFieldContainerStyles.ts.html +8 -8
  171. package/coverage/lcov-report/src/form/fileUtils.ts.html +1 -1
  172. package/coverage/lcov-report/src/form/formConfig.ts.html +1 -1
  173. package/coverage/lcov-report/src/form/formMessageStyles.ts.html +1 -1
  174. package/coverage/lcov-report/src/form/index.html +940 -10
  175. package/coverage/lcov-report/src/form/inputToggleStyles.ts.html +30 -30
  176. package/coverage/lcov-report/src/form/nativeSelectStyles.ts.html +1 -1
  177. package/coverage/lcov-report/src/form/optionStyles.ts.html +1 -1
  178. package/coverage/lcov-report/src/form/passwordStyles.ts.html +1 -1
  179. package/coverage/lcov-report/src/form/selectStyles.ts.html +1 -1
  180. package/coverage/lcov-report/src/form/selectUtils.ts.html +1 -1
  181. package/coverage/lcov-report/src/form/sliderUtils.ts.html +1 -1
  182. package/coverage/lcov-report/src/form/switchStyles.ts.html +1 -1
  183. package/coverage/lcov-report/src/form/textAreaStyles.ts.html +3 -3
  184. package/coverage/lcov-report/src/form/textFieldStyles.ts.html +1 -1
  185. package/coverage/lcov-report/src/form/useCheckboxGroup.ts.html +1 -1
  186. package/coverage/lcov-report/src/form/useFileUpload.ts.html +1 -1
  187. package/coverage/lcov-report/src/form/useListboxProvider.ts.html +1 -1
  188. package/coverage/lcov-report/src/form/useNumberField.ts.html +1 -1
  189. package/coverage/lcov-report/src/form/useRadioGroup.ts.html +47 -47
  190. package/coverage/lcov-report/src/form/useRangeSlider.ts.html +1 -1
  191. package/coverage/lcov-report/src/form/useResizingTextArea.ts.html +1 -1
  192. package/coverage/lcov-report/src/form/useSlider.ts.html +1 -1
  193. package/coverage/lcov-report/src/form/useTextField.ts.html +1 -1
  194. package/coverage/lcov-report/src/form/utils.ts.html +1 -1
  195. package/coverage/lcov-report/src/form/validation.ts.html +1 -1
  196. package/coverage/lcov-report/src/hoverMode/index.html +1 -1
  197. package/coverage/lcov-report/src/hoverMode/useHoverMode.ts.html +98 -98
  198. package/coverage/lcov-report/src/hoverMode/useHoverModeProvider.ts.html +19 -19
  199. package/coverage/lcov-report/src/icon/FontIcon.tsx.html +28 -28
  200. package/coverage/lcov-report/src/icon/IconRotator.tsx.html +5 -8
  201. package/coverage/lcov-report/src/icon/MaterialIcon.tsx.html +1 -1
  202. package/coverage/lcov-report/src/icon/MaterialSymbol.tsx.html +1 -1
  203. package/coverage/lcov-report/src/icon/SVGIcon.tsx.html +1 -1
  204. package/coverage/lcov-report/src/icon/TextIconSpacing.tsx.html +1 -1
  205. package/coverage/lcov-report/src/icon/iconConfig.tsx.html +8 -8
  206. package/coverage/lcov-report/src/icon/index.html +7 -7
  207. package/coverage/lcov-report/src/icon/material.ts.html +1 -1
  208. package/coverage/lcov-report/src/icon/materialConfig.ts.html +1 -1
  209. package/coverage/lcov-report/src/icon/styles.ts.html +38 -38
  210. package/coverage/lcov-report/src/index.html +354 -9
  211. package/coverage/lcov-report/src/interaction/Ripple.tsx.html +1 -1
  212. package/coverage/lcov-report/src/interaction/RippleContainer.tsx.html +1 -1
  213. package/coverage/lcov-report/src/interaction/UserInteractionModeProvider.tsx.html +87 -87
  214. package/coverage/lcov-report/src/interaction/config.ts.html +7 -7
  215. package/coverage/lcov-report/src/interaction/index.html +1 -1
  216. package/coverage/lcov-report/src/interaction/useElementInteraction.tsx.html +123 -123
  217. package/coverage/lcov-report/src/interaction/useHigherContrastChildren.tsx.html +17 -17
  218. package/coverage/lcov-report/src/interaction/utils.ts.html +1 -1
  219. package/coverage/lcov-report/src/layout/LayoutAppBar.tsx.html +1 -1
  220. package/coverage/lcov-report/src/layout/LayoutNav.tsx.html +60 -60
  221. package/coverage/lcov-report/src/layout/LayoutWindowSplitter.tsx.html +1 -1
  222. package/coverage/lcov-report/src/layout/Main.tsx.html +1 -1
  223. package/coverage/lcov-report/src/layout/index.html +15 -15
  224. package/coverage/lcov-report/src/layout/layoutNavStyles.ts.html +5 -5
  225. package/coverage/lcov-report/src/layout/layoutWindowSplitterStyles.ts.html +1 -1
  226. package/coverage/lcov-report/src/layout/mainStyles.ts.html +1 -1
  227. package/coverage/lcov-report/src/layout/useExpandableLayout.ts.html +1 -1
  228. package/coverage/lcov-report/src/layout/useHorizontalLayoutTransition.ts.html +1 -1
  229. package/coverage/lcov-report/src/layout/useLayoutAppBarHeight.ts.html +20 -32
  230. package/coverage/lcov-report/src/layout/useLayoutTree.ts.html +1 -1
  231. package/coverage/lcov-report/src/layout/useLayoutWindowSplitter.ts.html +1 -1
  232. package/coverage/lcov-report/src/layout/useMainTabIndex.ts.html +1 -1
  233. package/coverage/lcov-report/src/layout/useResizableLayout.ts.html +1 -1
  234. package/coverage/lcov-report/src/layout/useTemporaryLayout.ts.html +1 -1
  235. package/coverage/lcov-report/src/link/Link.tsx.html +1 -1
  236. package/coverage/lcov-report/src/link/SkipToMainContent.tsx.html +1 -1
  237. package/coverage/lcov-report/src/link/index.html +1 -1
  238. package/coverage/lcov-report/src/link/styles.ts.html +1 -1
  239. package/coverage/lcov-report/src/list/List.tsx.html +30 -30
  240. package/coverage/lcov-report/src/list/ListItem.tsx.html +37 -16
  241. package/coverage/lcov-report/src/list/ListItemAddon.tsx.html +13 -7
  242. package/coverage/lcov-report/src/list/ListItemChildren.tsx.html +12 -6
  243. package/coverage/lcov-report/src/list/ListItemLink.tsx.html +4 -4
  244. package/coverage/lcov-report/src/list/ListItemText.tsx.html +1 -1
  245. package/coverage/lcov-report/src/list/ListSubheader.tsx.html +1 -1
  246. package/coverage/lcov-report/src/list/getListItemHeight.ts.html +1 -1
  247. package/coverage/lcov-report/src/list/index.html +11 -11
  248. package/coverage/lcov-report/src/list/listItemStyles.ts.html +39 -9
  249. package/coverage/lcov-report/src/media-queries/AppSizeProvider.tsx.html +54 -54
  250. package/coverage/lcov-report/src/media-queries/appSize.ts.html +1 -1
  251. package/coverage/lcov-report/src/media-queries/index.html +1 -1
  252. package/coverage/lcov-report/src/media-queries/useMediaQuery.ts.html +25 -25
  253. package/coverage/lcov-report/src/menu/DropdownMenu.tsx.html +1 -1
  254. package/coverage/lcov-report/src/menu/Menu.tsx.html +2 -2
  255. package/coverage/lcov-report/src/menu/MenuBar.tsx.html +1 -1
  256. package/coverage/lcov-report/src/menu/MenuButton.tsx.html +1 -1
  257. package/coverage/lcov-report/src/menu/MenuConfigurationProvider.tsx.html +1 -1
  258. package/coverage/lcov-report/src/menu/MenuItem.tsx.html +1 -1
  259. package/coverage/lcov-report/src/menu/MenuItemButton.tsx.html +1 -1
  260. package/coverage/lcov-report/src/menu/MenuItemGroup.tsx.html +1 -1
  261. package/coverage/lcov-report/src/menu/MenuItemSeparator.tsx.html +1 -1
  262. package/coverage/lcov-report/src/menu/MenuSheet.tsx.html +1 -1
  263. package/coverage/lcov-report/src/menu/MenuVisibilityProvider.tsx.html +1 -1
  264. package/coverage/lcov-report/src/menu/MenuWidget.tsx.html +1 -1
  265. package/coverage/lcov-report/src/menu/MenuWidgetKeyboardProvider.tsx.html +1 -1
  266. package/coverage/lcov-report/src/menu/index.html +1 -1
  267. package/coverage/lcov-report/src/menu/useContextMenu.ts.html +1 -1
  268. package/coverage/lcov-report/src/menu/useMenuBarProvider.ts.html +1 -1
  269. package/coverage/lcov-report/src/menu/utils.ts.html +1 -1
  270. package/coverage/lcov-report/src/movement/constants.ts.html +1 -1
  271. package/coverage/lcov-report/src/movement/findMatchIndex.ts.html +1 -1
  272. package/coverage/lcov-report/src/movement/index.html +1 -1
  273. package/coverage/lcov-report/src/movement/useKeyboardMovementProvider.ts.html +3 -3
  274. package/coverage/lcov-report/src/movement/utils.ts.html +1 -1
  275. package/coverage/lcov-report/src/overlay/Overlay.tsx.html +1 -1
  276. package/coverage/lcov-report/src/overlay/index.html +1 -1
  277. package/coverage/lcov-report/src/overlay/overlayStyles.ts.html +1 -1
  278. package/coverage/lcov-report/src/portal/Portal.tsx.html +7 -7
  279. package/coverage/lcov-report/src/portal/PortalContainerProvider.tsx.html +59 -35
  280. package/coverage/lcov-report/src/portal/index.html +7 -7
  281. package/coverage/lcov-report/src/positioning/constants.ts.html +1 -1
  282. package/coverage/lcov-report/src/positioning/createHorizontalPosition.ts.html +47 -47
  283. package/coverage/lcov-report/src/positioning/createVerticalPosition.ts.html +55 -55
  284. package/coverage/lcov-report/src/positioning/getFixedPosition.ts.html +89 -89
  285. package/coverage/lcov-report/src/positioning/index.html +1 -1
  286. package/coverage/lcov-report/src/positioning/useFixedPositioning.ts.html +193 -193
  287. package/coverage/lcov-report/src/positioning/utils.ts.html +59 -59
  288. package/coverage/lcov-report/src/progress/CircularProgress.tsx.html +3 -3
  289. package/coverage/lcov-report/src/progress/LinearProgress.tsx.html +3 -3
  290. package/coverage/lcov-report/src/progress/getProgressA11y.ts.html +1 -1
  291. package/coverage/lcov-report/src/progress/index.html +20 -5
  292. package/coverage/lcov-report/src/responsive-item/ResponsiveItemContainer.tsx.html +1 -1
  293. package/coverage/lcov-report/src/responsive-item/ResponsiveItemOverlay.tsx.html +1 -1
  294. package/coverage/lcov-report/src/responsive-item/index.html +1 -1
  295. package/coverage/lcov-report/src/responsive-item/styles.ts.html +1 -1
  296. package/coverage/lcov-report/src/scroll/ScrollLock.tsx.html +1 -1
  297. package/coverage/lcov-report/src/scroll/getScrollbarWidth.ts.html +1 -1
  298. package/coverage/lcov-report/src/scroll/index.html +1 -1
  299. package/coverage/lcov-report/src/scroll/useScrollLock.ts.html +1 -1
  300. package/coverage/lcov-report/src/segmented-button/SegmentedButton.tsx.html +1 -1
  301. package/coverage/lcov-report/src/segmented-button/SegmentedButtonContainer.tsx.html +1 -1
  302. package/coverage/lcov-report/src/segmented-button/index.html +1 -1
  303. package/coverage/lcov-report/src/segmented-button/segmentedButtonContainerStyles.ts.html +1 -1
  304. package/coverage/lcov-report/src/segmented-button/segmentedButtonStyles.ts.html +1 -1
  305. package/coverage/lcov-report/src/sheet/Sheet.tsx.html +1 -1
  306. package/coverage/lcov-report/src/sheet/index.html +5 -5
  307. package/coverage/lcov-report/src/sheet/styles.ts.html +45 -48
  308. package/coverage/lcov-report/src/snackbar/DefaultToastRenderer.tsx.html +80 -80
  309. package/coverage/lcov-report/src/snackbar/Snackbar.tsx.html +21 -45
  310. package/coverage/lcov-report/src/snackbar/Toast.tsx.html +108 -93
  311. package/coverage/lcov-report/src/snackbar/ToastActionButton.tsx.html +1 -1
  312. package/coverage/lcov-report/src/snackbar/ToastCloseButton.tsx.html +1 -1
  313. package/coverage/lcov-report/src/snackbar/ToastContent.tsx.html +48 -48
  314. package/coverage/lcov-report/src/snackbar/ToastManager.tsx.html +278 -275
  315. package/coverage/lcov-report/src/snackbar/ToastManagerProvider.tsx.html +6 -6
  316. package/coverage/lcov-report/src/snackbar/index.html +19 -19
  317. package/coverage/lcov-report/src/snackbar/snackbarStyles.ts.html +15 -15
  318. package/coverage/lcov-report/src/snackbar/toastContentStyles.ts.html +14 -14
  319. package/coverage/lcov-report/src/snackbar/toastStyles.ts.html +27 -27
  320. package/coverage/lcov-report/src/snackbar/useCurrentToastActions.ts.html +1 -1
  321. package/coverage/lcov-report/src/suspense/CircularProgressSuspense.tsx.html +1 -1
  322. package/coverage/lcov-report/src/suspense/NullSuspense.tsx.html +1 -1
  323. package/coverage/lcov-report/src/suspense/index.html +20 -5
  324. package/coverage/lcov-report/src/table/Table.tsx.html +45 -114
  325. package/coverage/lcov-report/src/table/TableBody.tsx.html +43 -43
  326. package/coverage/lcov-report/src/table/TableCell.tsx.html +109 -298
  327. package/coverage/lcov-report/src/table/TableCellContent.tsx.html +81 -27
  328. package/coverage/lcov-report/src/table/TableCheckbox.tsx.html +16 -10
  329. package/coverage/lcov-report/src/table/TableConfigurationProvider.tsx.html +20 -20
  330. package/coverage/lcov-report/src/table/TableContainer.tsx.html +7 -28
  331. package/coverage/lcov-report/src/table/TableContainerProvider.tsx.html +1 -1
  332. package/coverage/lcov-report/src/table/TableFooter.tsx.html +64 -43
  333. package/coverage/lcov-report/src/table/TableHeader.tsx.html +41 -92
  334. package/coverage/lcov-report/src/table/TableRadio.tsx.html +676 -0
  335. package/coverage/lcov-report/src/table/TableRow.tsx.html +38 -119
  336. package/coverage/lcov-report/src/table/index.html +151 -46
  337. package/coverage/lcov-report/src/table/tableCellStyles.ts.html +334 -0
  338. package/coverage/lcov-report/src/table/tableContainerStyles.ts.html +142 -0
  339. package/coverage/lcov-report/src/table/tableFooterStyles.ts.html +166 -0
  340. package/coverage/lcov-report/src/table/tableHeaderStyles.ts.html +172 -0
  341. package/coverage/lcov-report/src/table/tableRowStyles.ts.html +169 -0
  342. package/coverage/lcov-report/src/table/tableStyles.ts.html +157 -0
  343. package/coverage/lcov-report/src/tabs/Tab.tsx.html +263 -143
  344. package/coverage/lcov-report/src/tabs/TabList.tsx.html +1 -1
  345. package/coverage/lcov-report/src/tabs/TabListScrollButton.tsx.html +1 -1
  346. package/coverage/lcov-report/src/tabs/index.html +25 -25
  347. package/coverage/lcov-report/src/tabs/tabIndicatorStyles.ts.html +37 -7
  348. package/coverage/lcov-report/src/tabs/tabListScrollButtonStyles.ts.html +1 -1
  349. package/coverage/lcov-report/src/tabs/tabListStyles.ts.html +2 -2
  350. package/coverage/lcov-report/src/tabs/tabStyles.ts.html +64 -28
  351. package/coverage/lcov-report/src/tabs/useTabList.ts.html +44 -38
  352. package/coverage/lcov-report/src/tabs/useTabs.ts.html +1 -1
  353. package/coverage/lcov-report/src/tabs/utils.ts.html +3 -3
  354. package/coverage/lcov-report/src/test-utils/IntersectionObserver.ts.html +1 -1
  355. package/coverage/lcov-report/src/test-utils/ResizeObserver.ts.html +205 -205
  356. package/coverage/lcov-report/src/test-utils/data-testid.ts.html +1 -1
  357. package/coverage/lcov-report/src/test-utils/drag.ts.html +1 -1
  358. package/coverage/lcov-report/src/test-utils/index.html +4 -4
  359. package/coverage/lcov-report/src/test-utils/jest-setup.ts.html +9 -9
  360. package/coverage/lcov-report/src/test-utils/matchMedia.ts.html +4 -4
  361. package/coverage/lcov-report/src/test-utils/polyfills/IntersectionObserver.ts.html +4 -4
  362. package/coverage/lcov-report/src/test-utils/polyfills/ResizeObserver.ts.html +3 -3
  363. package/coverage/lcov-report/src/test-utils/polyfills/index.html +1 -1
  364. package/coverage/lcov-report/src/test-utils/polyfills/matchMedia.ts.html +6 -6
  365. package/coverage/lcov-report/src/test-utils/polyfills/offsetParent.ts.html +14 -14
  366. package/coverage/lcov-report/src/test-utils/polyfills/scrollIntoView.ts.html +5 -5
  367. package/coverage/lcov-report/src/test-utils/render.tsx.html +21 -21
  368. package/coverage/lcov-report/src/test-utils/timers.ts.html +1 -1
  369. package/coverage/lcov-report/src/theme/LocalStorageColorSchemeProvider.tsx.html +1 -1
  370. package/coverage/lcov-report/src/theme/ThemeProvider.tsx.html +1 -1
  371. package/coverage/lcov-report/src/theme/colors.ts.html +1 -1
  372. package/coverage/lcov-report/src/theme/cssVars.ts.html +1 -1
  373. package/coverage/lcov-report/src/theme/index.html +1 -1
  374. package/coverage/lcov-report/src/theme/useCSSVariables.ts.html +25 -25
  375. package/coverage/lcov-report/src/theme/useColorScheme.ts.html +1 -1
  376. package/coverage/lcov-report/src/theme/useColorSchemeMetaTag.ts.html +1 -1
  377. package/coverage/lcov-report/src/theme/useColorSchemeProvider.ts.html +1 -1
  378. package/coverage/lcov-report/src/theme/usePrefersColorScheme.ts.html +1 -1
  379. package/coverage/lcov-report/src/theme/utils.ts.html +1 -1
  380. package/coverage/lcov-report/src/tooltip/Tooltip.tsx.html +62 -62
  381. package/coverage/lcov-report/src/tooltip/TooltipHoverModeProvider.tsx.html +3 -3
  382. package/coverage/lcov-report/src/tooltip/constants.ts.html +1 -1
  383. package/coverage/lcov-report/src/tooltip/index.html +9 -9
  384. package/coverage/lcov-report/src/tooltip/tooltipStyles.ts.html +12 -12
  385. package/coverage/lcov-report/src/tooltip/useTooltip.ts.html +243 -222
  386. package/coverage/lcov-report/src/tooltip/useTooltipPosition.ts.html +27 -27
  387. package/coverage/lcov-report/src/tooltip/utils.ts.html +22 -22
  388. package/coverage/lcov-report/src/transition/CSSTransition.tsx.html +1 -1
  389. package/coverage/lcov-report/src/transition/Collapse.tsx.html +1 -1
  390. package/coverage/lcov-report/src/transition/CrossFade.tsx.html +1 -1
  391. package/coverage/lcov-report/src/transition/ScaleTransition.tsx.html +1 -1
  392. package/coverage/lcov-report/src/transition/SkeletonPlaceholder.tsx.html +374 -338
  393. package/coverage/lcov-report/src/transition/Slide.tsx.html +1 -1
  394. package/coverage/lcov-report/src/transition/SlideContainer.tsx.html +1 -1
  395. package/coverage/lcov-report/src/transition/collapseStyles.ts.html +13 -13
  396. package/coverage/lcov-report/src/transition/config.ts.html +5 -5
  397. package/coverage/lcov-report/src/transition/index.html +47 -32
  398. package/coverage/lcov-report/src/transition/maxWidthTransition.ts.html +1 -1
  399. package/coverage/lcov-report/src/transition/skeletonPlaceholderUtils.ts.html +400 -0
  400. package/coverage/lcov-report/src/transition/useCSSTransition.ts.html +68 -68
  401. package/coverage/lcov-report/src/transition/useCarousel.ts.html +1 -1
  402. package/coverage/lcov-report/src/transition/useCollapseTransition.ts.html +87 -87
  403. package/coverage/lcov-report/src/transition/useCrossFadeTransition.ts.html +1 -1
  404. package/coverage/lcov-report/src/transition/useMaxWidthTransition.ts.html +1 -1
  405. package/coverage/lcov-report/src/transition/useScaleTransition.ts.html +18 -18
  406. package/coverage/lcov-report/src/transition/useSkeletonPlaceholder.ts.html +607 -562
  407. package/coverage/lcov-report/src/transition/useSlideTransition.ts.html +1 -1
  408. package/coverage/lcov-report/src/transition/useTransition.ts.html +237 -237
  409. package/coverage/lcov-report/src/transition/utils.ts.html +43 -43
  410. package/coverage/lcov-report/src/tree/DefaultTreeItemRenderer.tsx.html +18 -6
  411. package/coverage/lcov-report/src/tree/Tree.tsx.html +20 -8
  412. package/coverage/lcov-report/src/tree/TreeGroup.tsx.html +45 -45
  413. package/coverage/lcov-report/src/tree/TreeItem.tsx.html +7 -10
  414. package/coverage/lcov-report/src/tree/TreeItemExpander.tsx.html +1 -1
  415. package/coverage/lcov-report/src/tree/TreeProvider.tsx.html +8 -8
  416. package/coverage/lcov-report/src/tree/index.html +11 -11
  417. package/coverage/lcov-report/src/tree/styles.ts.html +8 -35
  418. package/coverage/lcov-report/src/tree/useTree.ts.html +1 -1
  419. package/coverage/lcov-report/src/tree/useTreeExpansion.ts.html +1 -1
  420. package/coverage/lcov-report/src/tree/useTreeItems.ts.html +1 -1
  421. package/coverage/lcov-report/src/tree/useTreeMovement.ts.html +1 -1
  422. package/coverage/lcov-report/src/tree/useTreeSelection.ts.html +1 -1
  423. package/coverage/lcov-report/src/tree/utils.ts.html +1 -1
  424. package/coverage/lcov-report/src/typography/SrOnly.tsx.html +1 -1
  425. package/coverage/lcov-report/src/typography/TextContainer.tsx.html +1 -1
  426. package/coverage/lcov-report/src/typography/Typography.tsx.html +1 -1
  427. package/coverage/lcov-report/src/typography/WritingDirectionProvider.tsx.html +1 -1
  428. package/coverage/lcov-report/src/typography/index.html +1 -1
  429. package/coverage/lcov-report/src/useAsyncAction.ts.html +1 -1
  430. package/coverage/lcov-report/src/useDebouncedFunction.ts.html +1 -1
  431. package/coverage/lcov-report/src/useDropzone.ts.html +1 -1
  432. package/coverage/lcov-report/src/useElementSize.ts.html +334 -0
  433. package/coverage/lcov-report/src/useEnsuredId.ts.html +8 -8
  434. package/coverage/lcov-report/src/useEnsuredRef.ts.html +14 -14
  435. package/coverage/lcov-report/src/useEnsuredState.ts.html +1 -1
  436. package/coverage/lcov-report/src/useHtmlClassName.ts.html +1 -1
  437. package/coverage/lcov-report/src/useIntersectionObserver.ts.html +1 -1
  438. package/coverage/lcov-report/src/useIsomorphicLayoutEffect.ts.html +1 -1
  439. package/coverage/lcov-report/src/useLocalStorage.ts.html +1 -1
  440. package/coverage/lcov-report/src/useOrientation.ts.html +32 -32
  441. package/coverage/lcov-report/src/usePageInactive.ts.html +30 -30
  442. package/coverage/lcov-report/src/useResizeListener.ts.html +38 -32
  443. package/coverage/lcov-report/src/useResizeObserver.ts.html +68 -179
  444. package/coverage/lcov-report/src/useThrottledFunction.ts.html +1 -1
  445. package/coverage/lcov-report/src/useToggle.ts.html +1 -1
  446. package/coverage/lcov-report/src/useUnmounted.ts.html +1 -1
  447. package/coverage/lcov-report/src/useWindowSize.ts.html +124 -94
  448. package/coverage/lcov-report/src/utils/RenderRecursively.tsx.html +1 -1
  449. package/coverage/lcov-report/src/utils/alphaNumericSort.ts.html +1 -1
  450. package/coverage/lcov-report/src/utils/applyRef.ts.html +11 -11
  451. package/coverage/lcov-report/src/utils/bem.ts.html +45 -45
  452. package/coverage/lcov-report/src/utils/filters.ts.html +1 -1
  453. package/coverage/lcov-report/src/utils/getClientPosition.ts.html +1 -1
  454. package/coverage/lcov-report/src/utils/getMiddleOfRange.ts.html +163 -0
  455. package/coverage/lcov-report/src/utils/getPercentage.ts.html +9 -9
  456. package/coverage/lcov-report/src/utils/getRangeDefaultValue.ts.html +66 -87
  457. package/coverage/lcov-report/src/utils/getRangeSteps.ts.html +7 -7
  458. package/coverage/lcov-report/src/utils/identity.ts.html +1 -1
  459. package/coverage/lcov-report/src/utils/index.html +46 -31
  460. package/coverage/lcov-report/src/utils/isElementVisible.ts.html +1 -1
  461. package/coverage/lcov-report/src/utils/isValidNumber.ts.html +118 -0
  462. package/coverage/lcov-report/src/utils/loop.ts.html +1 -1
  463. package/coverage/lcov-report/src/utils/nearest.ts.html +21 -21
  464. package/coverage/lcov-report/src/utils/parseCssLengthUnit.ts.html +18 -18
  465. package/coverage/lcov-report/src/utils/randomInt.ts.html +52 -52
  466. package/coverage/lcov-report/src/utils/wait.ts.html +1 -1
  467. package/coverage/lcov-report/src/utils/withinRange.ts.html +1 -1
  468. package/coverage/lcov-report/src/window-splitter/WindowSplitter.tsx.html +1 -1
  469. package/coverage/lcov-report/src/window-splitter/index.html +14 -14
  470. package/coverage/lcov-report/src/window-splitter/useWindowSplitter.ts.html +19 -67
  471. package/coverage/lcov-report/src/window-splitter/useWindowSplitterMaxValue.ts.html +256 -0
  472. package/coverage/lcov-report/suspense/CircularProgressSuspense.tsx.html +283 -0
  473. package/coverage/lcov-report/suspense/NullSuspense.tsx.html +202 -0
  474. package/coverage/lcov-report/suspense/index.html +131 -0
  475. package/coverage/lcov-report/tabIndicatorStyles.ts.html +43 -13
  476. package/coverage/lcov-report/tabListStyles.ts.html +35 -26
  477. package/coverage/lcov-report/tabStyles.ts.html +68 -26
  478. package/coverage/lcov-report/tabs/Tab.tsx.html +233 -143
  479. package/coverage/lcov-report/tabs/TabList.tsx.html +85 -85
  480. package/coverage/lcov-report/tabs/index.html +56 -11
  481. package/coverage/lcov-report/tabs/tabIndicatorStyles.ts.html +187 -0
  482. package/coverage/lcov-report/tabs/tabListStyles.ts.html +241 -0
  483. package/coverage/lcov-report/tabs/tabStyles.ts.html +253 -0
  484. package/coverage/lcov-report/tabs/useTabList.ts.html +736 -0
  485. package/coverage/lcov-report/tabs/useTabs.ts.html +1 -1
  486. package/coverage/lcov-report/tabs/utils.ts.html +1 -1
  487. package/coverage/lcov-report/test-utils/index.html +21 -21
  488. package/coverage/lcov-report/test-utils/use.ts.html +187 -0
  489. package/coverage/lcov-report/tooltip/Tooltip.tsx.html +62 -62
  490. package/coverage/lcov-report/tooltip/index.html +10 -70
  491. package/coverage/lcov-report/tooltip/useTooltip.ts.html +243 -222
  492. package/coverage/lcov-report/transition/SkeletonPlaceholder.tsx.html +595 -0
  493. package/coverage/lcov-report/transition/config.ts.html +5 -5
  494. package/coverage/lcov-report/transition/index.html +1 -1
  495. package/coverage/lcov-report/transition/skeletonPlaceholderUtils.ts.html +400 -0
  496. package/coverage/lcov-report/transition/useSkeletonPlaceholder.ts.html +952 -0
  497. package/coverage/lcov-report/tree/TreeItem.tsx.html +7 -10
  498. package/coverage/lcov-report/tree/index.html +12 -27
  499. package/coverage/lcov-report/tree/styles.ts.html +538 -0
  500. package/coverage/lcov-report/typography/Typography.tsx.html +138 -432
  501. package/coverage/lcov-report/typography/WritingDirectionProvider.tsx.html +75 -75
  502. package/coverage/lcov-report/typography/index.html +18 -18
  503. package/coverage/lcov-report/useSkeletonPlaceholder.ts.html +952 -0
  504. package/coverage/lcov-report/useTabList.ts.html +142 -136
  505. package/coverage/lcov-report/useWindowSplitter.ts.html +640 -0
  506. package/coverage/lcov-report/useWindowSplitterMaxValue.ts.html +256 -0
  507. package/coverage/lcov-report/utils/index.html +16 -31
  508. package/coverage/lcov-report/utils/isElementVisible.ts.html +14 -14
  509. package/coverage/lcov-report/utils/randomInt.ts.html +148 -0
  510. package/coverage/lcov-report/utils/wait.ts.html +1 -1
  511. package/coverage/lcov-report/window-splitter/index.html +21 -36
  512. package/coverage/lcov-report/window-splitter/useWindowSplitter.ts.html +406 -328
  513. package/coverage/lcov.info +474 -0
  514. package/dist/_box-shadows.scss +12 -2
  515. package/dist/_core.scss +34 -3
  516. package/dist/_utils.scss +79 -0
  517. package/dist/app-bar/AppBar.d.ts +4 -9
  518. package/dist/app-bar/AppBar.js +29 -7
  519. package/dist/app-bar/AppBar.js.map +1 -1
  520. package/dist/app-bar/_app-bar.scss +22 -32
  521. package/dist/avatar/Avatar.d.ts +1 -1
  522. package/dist/avatar/Avatar.js.map +1 -1
  523. package/dist/avatar/_avatar.scss +25 -34
  524. package/dist/badge/_badge.scss +80 -48
  525. package/dist/box/_box.scss +18 -29
  526. package/dist/button/TooltippedButton.d.ts +62 -0
  527. package/dist/button/TooltippedButton.js +62 -0
  528. package/dist/button/TooltippedButton.js.map +1 -0
  529. package/dist/button/_button.scss +50 -62
  530. package/dist/card/Card.js +3 -2
  531. package/dist/card/Card.js.map +1 -1
  532. package/dist/card/CardContent.js +1 -1
  533. package/dist/card/CardContent.js.map +1 -1
  534. package/dist/card/ClickableCard.d.ts +42 -0
  535. package/dist/card/ClickableCard.js +73 -0
  536. package/dist/card/ClickableCard.js.map +1 -0
  537. package/dist/card/_card.scss +29 -32
  538. package/dist/card/styles.d.ts +8 -0
  539. package/dist/card/styles.js +6 -3
  540. package/dist/card/styles.js.map +1 -1
  541. package/dist/chip/_chip.scss +33 -46
  542. package/dist/dialog/_dialog.scss +118 -103
  543. package/dist/divider/Divider.d.ts +0 -1
  544. package/dist/divider/Divider.js.map +1 -1
  545. package/dist/divider/_divider.scss +40 -51
  546. package/dist/draggable/useDraggable.d.ts +12 -23
  547. package/dist/draggable/useDraggable.js +15 -6
  548. package/dist/draggable/useDraggable.js.map +1 -1
  549. package/dist/draggable/utils.d.ts +4 -17
  550. package/dist/draggable/utils.js +9 -25
  551. package/dist/draggable/utils.js.map +1 -1
  552. package/dist/expansion-panel/_expansion-panel.scss +25 -16
  553. package/dist/expansion-panel/useExpansionPanels.d.ts +5 -3
  554. package/dist/expansion-panel/useExpansionPanels.js +16 -9
  555. package/dist/expansion-panel/useExpansionPanels.js.map +1 -1
  556. package/dist/form/Label.d.ts +5 -5
  557. package/dist/form/Label.js.map +1 -1
  558. package/dist/form/MenuItemInputToggle.d.ts +1 -1
  559. package/dist/form/MenuItemInputToggle.js.map +1 -1
  560. package/dist/form/Select.js +6 -1
  561. package/dist/form/Select.js.map +1 -1
  562. package/dist/form/TextArea.js +1 -1
  563. package/dist/form/TextArea.js.map +1 -1
  564. package/dist/form/TextFieldContainerStyles.d.ts +7 -7
  565. package/dist/form/TextFieldContainerStyles.js.map +1 -1
  566. package/dist/form/_form.scss +240 -225
  567. package/dist/form/textAreaStyles.d.ts +2 -2
  568. package/dist/form/textAreaStyles.js.map +1 -1
  569. package/dist/form/types.d.ts +0 -2
  570. package/dist/form/types.js.map +1 -1
  571. package/dist/icon/IconRotator.js +2 -3
  572. package/dist/icon/IconRotator.js.map +1 -1
  573. package/dist/icon/_icon.scss +38 -49
  574. package/dist/index.d.ts +5 -0
  575. package/dist/index.js +5 -0
  576. package/dist/index.js.map +1 -1
  577. package/dist/interaction/_interaction.scss +59 -66
  578. package/dist/layout/_layout.scss +14 -19
  579. package/dist/layout/useLayoutAppBarHeight.js +5 -9
  580. package/dist/layout/useLayoutAppBarHeight.js.map +1 -1
  581. package/dist/link/_link.scss +41 -35
  582. package/dist/list/ListItem.d.ts +8 -3
  583. package/dist/list/ListItem.js +4 -3
  584. package/dist/list/ListItem.js.map +1 -1
  585. package/dist/list/ListItemAddon.js +2 -1
  586. package/dist/list/ListItemAddon.js.map +1 -1
  587. package/dist/list/ListItemChildren.js +3 -2
  588. package/dist/list/ListItemChildren.js.map +1 -1
  589. package/dist/list/ListItemLink.js +3 -3
  590. package/dist/list/ListItemLink.js.map +1 -1
  591. package/dist/list/_list.scss +75 -74
  592. package/dist/list/listItemStyles.d.ts +9 -1
  593. package/dist/list/listItemStyles.js +5 -5
  594. package/dist/list/listItemStyles.js.map +1 -1
  595. package/dist/list/types.d.ts +14 -4
  596. package/dist/list/types.js.map +1 -1
  597. package/dist/menu/Menu.d.ts +1 -1
  598. package/dist/menu/Menu.js.map +1 -1
  599. package/dist/menu/_menu.scss +19 -41
  600. package/dist/overlay/_overlay.scss +14 -19
  601. package/dist/portal/PortalContainerProvider.d.ts +2 -2
  602. package/dist/portal/PortalContainerProvider.js +6 -1
  603. package/dist/portal/PortalContainerProvider.js.map +1 -1
  604. package/dist/progress/_progress.scss +25 -30
  605. package/dist/segmented-button/_segmented-button.scss +32 -43
  606. package/dist/sheet/_sheet.scss +24 -42
  607. package/dist/sheet/styles.d.ts +14 -15
  608. package/dist/sheet/styles.js.map +1 -1
  609. package/dist/snackbar/DefaultToastRenderer.js +1 -1
  610. package/dist/snackbar/DefaultToastRenderer.js.map +1 -1
  611. package/dist/snackbar/Snackbar.d.ts +1 -3
  612. package/dist/snackbar/Snackbar.js +2 -3
  613. package/dist/snackbar/Snackbar.js.map +1 -1
  614. package/dist/snackbar/Toast.d.ts +1 -1
  615. package/dist/snackbar/Toast.js +5 -1
  616. package/dist/snackbar/Toast.js.map +1 -1
  617. package/dist/snackbar/ToastManager.d.ts +2 -1
  618. package/dist/snackbar/ToastManager.js +1 -1
  619. package/dist/snackbar/ToastManager.js.map +1 -1
  620. package/dist/snackbar/_snackbar.scss +15 -23
  621. package/dist/table/TableCheckbox.d.ts +3 -2
  622. package/dist/table/TableCheckbox.js +4 -2
  623. package/dist/table/TableCheckbox.js.map +1 -1
  624. package/dist/table/TableRadio.d.ts +3 -2
  625. package/dist/table/TableRadio.js +4 -2
  626. package/dist/table/TableRadio.js.map +1 -1
  627. package/dist/table/_table.scss +55 -70
  628. package/dist/table/tableCellStyles.d.ts +1 -1
  629. package/dist/table/tableCellStyles.js.map +1 -1
  630. package/dist/tabs/Tab.d.ts +24 -3
  631. package/dist/tabs/Tab.js +15 -8
  632. package/dist/tabs/Tab.js.map +1 -1
  633. package/dist/tabs/_tabs.scss +54 -47
  634. package/dist/tabs/tabIndicatorStyles.d.ts +2 -1
  635. package/dist/tabs/tabIndicatorStyles.js +6 -3
  636. package/dist/tabs/tabIndicatorStyles.js.map +1 -1
  637. package/dist/tabs/tabListStyles.js +2 -1
  638. package/dist/tabs/tabListStyles.js.map +1 -1
  639. package/dist/tabs/tabStyles.d.ts +2 -0
  640. package/dist/tabs/tabStyles.js +6 -3
  641. package/dist/tabs/tabStyles.js.map +1 -1
  642. package/dist/tabs/useTabList.d.ts +3 -3
  643. package/dist/tabs/useTabList.js +9 -6
  644. package/dist/tabs/useTabList.js.map +1 -1
  645. package/dist/theme/_theme.scss +31 -89
  646. package/dist/tooltip/_tooltip.scss +16 -25
  647. package/dist/tooltip/useTooltip.d.ts +14 -14
  648. package/dist/tooltip/useTooltip.js.map +1 -1
  649. package/dist/transition/SkeletonPlaceholder.d.ts +2 -2
  650. package/dist/transition/SkeletonPlaceholder.js +8 -3
  651. package/dist/transition/SkeletonPlaceholder.js.map +1 -1
  652. package/dist/transition/_transition.scss +50 -44
  653. package/dist/transition/skeletonPlaceholderUtils.d.ts +77 -0
  654. package/dist/transition/skeletonPlaceholderUtils.js +38 -0
  655. package/dist/transition/skeletonPlaceholderUtils.js.map +1 -0
  656. package/dist/transition/useSkeletonPlaceholder.d.ts +12 -7
  657. package/dist/transition/useSkeletonPlaceholder.js +38 -37
  658. package/dist/transition/useSkeletonPlaceholder.js.map +1 -1
  659. package/dist/tree/DefaultTreeItemRenderer.d.ts +2 -2
  660. package/dist/tree/DefaultTreeItemRenderer.js.map +1 -1
  661. package/dist/tree/Tree.d.ts +8 -4
  662. package/dist/tree/Tree.js.map +1 -1
  663. package/dist/tree/TreeItem.js +3 -4
  664. package/dist/tree/TreeItem.js.map +1 -1
  665. package/dist/tree/_tree.scss +106 -106
  666. package/dist/tree/styles.d.ts +0 -6
  667. package/dist/tree/styles.js +1 -2
  668. package/dist/tree/styles.js.map +1 -1
  669. package/dist/types.d.ts +7 -0
  670. package/dist/types.js +1 -2
  671. package/dist/types.js.map +1 -1
  672. package/dist/typography/_typography.scss +30 -25
  673. package/dist/useElementSize.d.ts +40 -0
  674. package/dist/useElementSize.js +53 -0
  675. package/dist/useElementSize.js.map +1 -0
  676. package/dist/useResizeListener.d.ts +1 -1
  677. package/dist/useResizeListener.js +1 -0
  678. package/dist/useResizeListener.js.map +1 -1
  679. package/dist/useResizeObserver.d.ts +4 -43
  680. package/dist/useResizeObserver.js +3 -42
  681. package/dist/useResizeObserver.js.map +1 -1
  682. package/dist/useWindowSize.d.ts +14 -11
  683. package/dist/useWindowSize.js +12 -7
  684. package/dist/useWindowSize.js.map +1 -1
  685. package/dist/utils/getMiddleOfRange.d.ts +13 -0
  686. package/dist/utils/getMiddleOfRange.js +20 -0
  687. package/dist/utils/getMiddleOfRange.js.map +1 -0
  688. package/dist/utils/getRangeDefaultValue.d.ts +3 -5
  689. package/dist/utils/getRangeDefaultValue.js +3 -13
  690. package/dist/utils/getRangeDefaultValue.js.map +1 -1
  691. package/dist/utils/getRangeSteps.d.ts +1 -1
  692. package/dist/utils/getRangeSteps.js +2 -2
  693. package/dist/utils/getRangeSteps.js.map +1 -1
  694. package/dist/utils/nearest.js +1 -1
  695. package/dist/utils/nearest.js.map +1 -1
  696. package/dist/window-splitter/_window-splitter.scss +30 -61
  697. package/dist/window-splitter/useWindowSplitter.d.ts +3 -5
  698. package/dist/window-splitter/useWindowSplitter.js +3 -11
  699. package/dist/window-splitter/useWindowSplitter.js.map +1 -1
  700. package/package.json +18 -18
  701. package/src/__tests__/useElementSize.tsx +181 -0
  702. package/src/__tests__/useWindowSize.node.tsx +56 -0
  703. package/src/__tests__/useWindowSize.tsx +156 -0
  704. package/src/_box-shadows.scss +12 -2
  705. package/src/_core.scss +34 -3
  706. package/src/_utils.scss +79 -0
  707. package/src/app-bar/AppBar.tsx +59 -19
  708. package/src/app-bar/__tests__/__snapshots__/AppBar.tsx.snap +21 -21
  709. package/src/app-bar/_app-bar.scss +22 -32
  710. package/src/avatar/Avatar.tsx +1 -1
  711. package/src/avatar/_avatar.scss +25 -34
  712. package/src/badge/_badge.scss +80 -48
  713. package/src/box/_box.scss +18 -29
  714. package/src/button/TooltippedButton.tsx +120 -0
  715. package/src/button/__tests__/TooltippedButton.tsx +60 -0
  716. package/src/button/__tests__/__snapshots__/TooltippedButton.tsx.snap +26 -0
  717. package/src/button/_button.scss +50 -62
  718. package/src/card/Card.tsx +5 -3
  719. package/src/card/CardContent.tsx +3 -3
  720. package/src/card/ClickableCard.tsx +105 -0
  721. package/src/card/__tests__/ClickableCard.tsx +66 -0
  722. package/src/card/__tests__/__snapshots__/CardHeader.tsx.snap +1 -1
  723. package/src/card/__tests__/__snapshots__/CardSubtitle.tsx.snap +2 -2
  724. package/src/card/__tests__/__snapshots__/ClickableCard.tsx.snap +20 -0
  725. package/src/card/__tests__/__snapshots__/styles.ts.snap +1 -1
  726. package/src/card/_card.scss +29 -32
  727. package/src/card/styles.ts +19 -10
  728. package/src/chip/_chip.scss +33 -46
  729. package/src/dialog/_dialog.scss +118 -103
  730. package/src/divider/Divider.tsx +0 -1
  731. package/src/divider/_divider.scss +40 -51
  732. package/src/draggable/useDraggable.ts +26 -25
  733. package/src/draggable/utils.ts +16 -50
  734. package/src/expansion-panel/__tests__/ExpansionPanel.tsx +2 -2
  735. package/src/expansion-panel/_expansion-panel.scss +25 -16
  736. package/src/expansion-panel/useExpansionPanels.ts +20 -16
  737. package/src/form/Label.tsx +5 -5
  738. package/src/form/MenuItemInputToggle.tsx +1 -1
  739. package/src/form/Select.tsx +9 -1
  740. package/src/form/TextArea.tsx +1 -1
  741. package/src/form/TextFieldContainerStyles.ts +7 -7
  742. package/src/form/_form.scss +240 -225
  743. package/src/form/textAreaStyles.ts +2 -2
  744. package/src/form/types.ts +0 -2
  745. package/src/icon/IconRotator.tsx +1 -2
  746. package/src/icon/_icon.scss +38 -49
  747. package/src/index.ts +5 -0
  748. package/src/interaction/_interaction.scss +59 -66
  749. package/src/layout/__tests__/__snapshots__/LayoutAppBar.tsx.snap +4 -4
  750. package/src/layout/__tests__/__snapshots__/useExpandableLayout.tsx.snap +1 -1
  751. package/src/layout/__tests__/__snapshots__/useLayoutTree.tsx.snap +18 -18
  752. package/src/layout/__tests__/__snapshots__/useResizableLayout.tsx.snap +1 -1
  753. package/src/layout/__tests__/__snapshots__/useTemporaryLayout.tsx.snap +1 -1
  754. package/src/layout/_layout.scss +14 -19
  755. package/src/layout/useLayoutAppBarHeight.ts +5 -9
  756. package/src/link/_link.scss +41 -35
  757. package/src/list/ListItem.tsx +19 -12
  758. package/src/list/ListItemAddon.tsx +5 -3
  759. package/src/list/ListItemChildren.tsx +4 -2
  760. package/src/list/ListItemLink.tsx +3 -3
  761. package/src/list/__tests__/ListItem.tsx +1 -1
  762. package/src/list/__tests__/__snapshots__/ListItem.tsx.snap +1 -1
  763. package/src/list/_list.scss +75 -74
  764. package/src/list/listItemStyles.ts +15 -5
  765. package/src/list/types.ts +15 -4
  766. package/src/menu/Menu.tsx +1 -1
  767. package/src/menu/_menu.scss +19 -41
  768. package/src/overlay/_overlay.scss +14 -19
  769. package/src/portal/PortalContainerProvider.tsx +10 -2
  770. package/src/portal/__tests__/PortalContainerProvider.tsx +23 -0
  771. package/src/progress/_progress.scss +25 -30
  772. package/src/segmented-button/_segmented-button.scss +32 -43
  773. package/src/sheet/_sheet.scss +24 -42
  774. package/src/sheet/styles.ts +14 -15
  775. package/src/snackbar/DefaultToastRenderer.tsx +1 -1
  776. package/src/snackbar/Snackbar.tsx +17 -25
  777. package/src/snackbar/Toast.tsx +7 -2
  778. package/src/snackbar/ToastManager.tsx +3 -2
  779. package/src/snackbar/__tests__/Snackbar.tsx +12 -11
  780. package/src/snackbar/__tests__/ToastManagerProvider.tsx +20 -42
  781. package/src/snackbar/__tests__/__snapshots__/Snackbar.tsx.snap +127 -27
  782. package/src/snackbar/__tests__/__snapshots__/ToastManagerProvider.tsx.snap +23 -8
  783. package/src/snackbar/_snackbar.scss +15 -23
  784. package/src/suspense/__tests__/CircularProgressSuspense.tsx +90 -0
  785. package/src/suspense/__tests__/NullSuspense.tsx +46 -0
  786. package/src/suspense/__tests__/__snapshots__/CircularProgressSuspense.tsx.snap +24 -0
  787. package/src/table/TableCheckbox.tsx +4 -2
  788. package/src/table/TableRadio.tsx +4 -2
  789. package/src/table/_table.scss +55 -70
  790. package/src/table/tableCellStyles.ts +1 -1
  791. package/src/tabs/Tab.tsx +110 -70
  792. package/src/tabs/__tests__/Tab.tsx +25 -2
  793. package/src/tabs/__tests__/TabList.tsx +4 -4
  794. package/src/tabs/__tests__/__snapshots__/TabList.tsx.snap +2 -2
  795. package/src/tabs/_tabs.scss +54 -47
  796. package/src/tabs/tabIndicatorStyles.ts +13 -3
  797. package/src/tabs/tabListStyles.ts +1 -1
  798. package/src/tabs/tabStyles.ts +16 -4
  799. package/src/tabs/useTabList.ts +10 -8
  800. package/src/theme/_theme.scss +31 -89
  801. package/src/tooltip/_tooltip.scss +16 -25
  802. package/src/tooltip/useTooltip.ts +23 -16
  803. package/src/transition/SkeletonPlaceholder.tsx +18 -6
  804. package/src/transition/__tests__/SkeletonPlaceholder.tsx +72 -0
  805. package/src/transition/__tests__/__snapshots__/SkeletonPlaceholder.tsx.snap +24 -0
  806. package/src/transition/_transition.scss +50 -44
  807. package/src/transition/skeletonPlaceholderUtils.ts +105 -0
  808. package/src/transition/useSkeletonPlaceholder.ts +62 -47
  809. package/src/tree/DefaultTreeItemRenderer.tsx +6 -2
  810. package/src/tree/Tree.tsx +8 -4
  811. package/src/tree/TreeItem.tsx +3 -4
  812. package/src/tree/__tests__/Tree.tsx +1 -1
  813. package/src/tree/__tests__/__snapshots__/Tree.tsx.snap +124 -124
  814. package/src/tree/_tree.scss +106 -106
  815. package/src/tree/styles.ts +0 -9
  816. package/src/types.ts +8 -0
  817. package/src/typography/_typography.scss +30 -25
  818. package/src/useElementSize.ts +83 -0
  819. package/src/useResizeListener.ts +3 -1
  820. package/src/useResizeObserver.ts +7 -44
  821. package/src/useWindowSize.ts +29 -19
  822. package/src/utils/__tests__/getMiddleOfRange.ts +12 -0
  823. package/src/utils/__tests__/getRangeDefaultValue.ts +47 -0
  824. package/src/utils/getMiddleOfRange.ts +26 -0
  825. package/src/utils/getRangeDefaultValue.ts +8 -15
  826. package/src/utils/getRangeSteps.ts +2 -2
  827. package/src/utils/nearest.ts +1 -1
  828. package/src/window-splitter/_window-splitter.scss +30 -61
  829. package/src/window-splitter/useWindowSplitter.ts +12 -28
  830. package/dist/divider/VerticalDivider.d.ts +0 -32
  831. package/dist/divider/useVerticalDividerHeight.d.ts +0 -37
  832. package/dist/icon/MaterialIconsProvider.d.ts +0 -12
  833. package/dist/icon/MaterialIconsProvider.js +0 -17
  834. package/dist/icon/MaterialIconsProvider.js.map +0 -1
  835. package/dist/icon/MaterialSymbolsProvider.d.ts +0 -145
  836. package/dist/icon/MaterialSymbolsProvider.js +0 -60
  837. package/dist/icon/MaterialSymbolsProvider.js.map +0 -1
  838. package/dist/link/LinkProvider.d.ts +0 -29
  839. package/dist/menu/menuConfig.d.ts +0 -60
  840. package/dist/tooltip/useOverflowTooltip.d.ts +0 -61
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/table/tableCellStyles.ts"],"sourcesContent":["import { cnb } from \"cnbuilder\";\nimport { cssUtils } from \"../cssUtils.js\";\nimport {\n type TableCellHorizontalAlignment,\n type TableCellVerticalAlignment,\n} from \"./TableConfigurationProvider.jsx\";\n\n/** @remarks \\@since 6.0.0 */\nexport interface TableCellClassNameOptions {\n className?: string;\n\n /**\n * Set this to `true` if the cell is rendered as a `<th>` so that the correct\n * sticky styles can be applied.\n */\n header: boolean;\n\n /**\n * Set this to true if the cell is rendered in a `<thead>` so that the correct\n * sticky styles can be applied.\n */\n isInTableHeader: boolean;\n\n /** @defaultValue `false` */\n grow?: boolean;\n\n /** @defaultValue `false` */\n sticky?: boolean;\n\n /** @defaultValue `false` */\n inputToggle?: boolean;\n\n hAlign?: TableCellHorizontalAlignment;\n vAlign?: TableCellVerticalAlignment;\n\n /** @defaultValue `true` */\n lineWrap?: boolean;\n\n /**\n * @defaultValue `\"horizontal\"`\n */\n padding?: \"horizontal\" | \"vertical\" | \"none\";\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport function tableCell(options: TableCellClassNameOptions): string {\n const {\n grow,\n sticky,\n header,\n inputToggle,\n hAlign,\n vAlign,\n lineWrap = true,\n padding = \"horizontal\",\n isInTableHeader,\n className,\n } = options;\n\n // using `&&` instead of `bem` since the latest version of typescript does not\n // support setting the same object key (empty string)\n const p = \"rmd-table-cell--\";\n return cnb(\n \"rmd-table-cell\",\n grow && `${p}grow`,\n header && `${p}header`,\n sticky && `${p}sticky`,\n inputToggle && `${p}input-toggle`,\n sticky && (!isInTableHeader || inputToggle) && `${p}sticky-cell`,\n sticky && isInTableHeader && `${p}sticky-header`,\n sticky && isInTableHeader && inputToggle && `${p}header-cell`,\n vAlign && vAlign !== \"middle\" && `${p}${vAlign}`,\n !lineWrap && `${p}no-wrap`,\n padding === \"vertical\" && `${p}v-padding`,\n padding === \"none\" && `${p}no-padding`,\n cssUtils({\n textAlign: hAlign,\n }),\n className\n );\n}\n"],"names":["cnb","cssUtils","tableCell","options","grow","sticky","header","inputToggle","hAlign","vAlign","lineWrap","padding","isInTableHeader","className","p","textAlign"],"mappings":"AAAA,SAASA,GAAG,QAAQ,YAAY;AAChC,SAASC,QAAQ,QAAQ,iBAAiB;AA2C1C;;CAEC,GACD,OAAO,SAASC,UAAUC,OAAkC;IAC1D,MAAM,EACJC,IAAI,EACJC,MAAM,EACNC,MAAM,EACNC,WAAW,EACXC,MAAM,EACNC,MAAM,EACNC,WAAW,IAAI,EACfC,UAAU,YAAY,EACtBC,eAAe,EACfC,SAAS,EACV,GAAGV;IAEJ,8EAA8E;IAC9E,qDAAqD;IACrD,MAAMW,IAAI;IACV,OAAOd,IACL,kBACAI,QAAQ,CAAC,EAAEU,EAAE,IAAI,CAAC,EAClBR,UAAU,CAAC,EAAEQ,EAAE,MAAM,CAAC,EACtBT,UAAU,CAAC,EAAES,EAAE,MAAM,CAAC,EACtBP,eAAe,CAAC,EAAEO,EAAE,YAAY,CAAC,EACjCT,UAAW,CAAA,CAACO,mBAAmBL,WAAU,KAAM,CAAC,EAAEO,EAAE,WAAW,CAAC,EAChET,UAAUO,mBAAmB,CAAC,EAAEE,EAAE,aAAa,CAAC,EAChDT,UAAUO,mBAAmBL,eAAe,CAAC,EAAEO,EAAE,WAAW,CAAC,EAC7DL,UAAUA,WAAW,YAAY,CAAC,EAAEK,EAAE,EAAEL,OAAO,CAAC,EAChD,CAACC,YAAY,CAAC,EAAEI,EAAE,OAAO,CAAC,EAC1BH,YAAY,cAAc,CAAC,EAAEG,EAAE,SAAS,CAAC,EACzCH,YAAY,UAAU,CAAC,EAAEG,EAAE,UAAU,CAAC,EACtCb,SAAS;QACPc,WAAWP;IACb,IACAK;AAEJ"}
1
+ {"version":3,"sources":["../../src/table/tableCellStyles.ts"],"sourcesContent":["import { cnb } from \"cnbuilder\";\nimport { cssUtils } from \"../cssUtils.js\";\nimport {\n type TableCellHorizontalAlignment,\n type TableCellVerticalAlignment,\n} from \"./TableConfigurationProvider.js\";\n\n/** @remarks \\@since 6.0.0 */\nexport interface TableCellClassNameOptions {\n className?: string;\n\n /**\n * Set this to `true` if the cell is rendered as a `<th>` so that the correct\n * sticky styles can be applied.\n */\n header: boolean;\n\n /**\n * Set this to true if the cell is rendered in a `<thead>` so that the correct\n * sticky styles can be applied.\n */\n isInTableHeader: boolean;\n\n /** @defaultValue `false` */\n grow?: boolean;\n\n /** @defaultValue `false` */\n sticky?: boolean;\n\n /** @defaultValue `false` */\n inputToggle?: boolean;\n\n hAlign?: TableCellHorizontalAlignment;\n vAlign?: TableCellVerticalAlignment;\n\n /** @defaultValue `true` */\n lineWrap?: boolean;\n\n /**\n * @defaultValue `\"horizontal\"`\n */\n padding?: \"horizontal\" | \"vertical\" | \"none\";\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport function tableCell(options: TableCellClassNameOptions): string {\n const {\n grow,\n sticky,\n header,\n inputToggle,\n hAlign,\n vAlign,\n lineWrap = true,\n padding = \"horizontal\",\n isInTableHeader,\n className,\n } = options;\n\n // using `&&` instead of `bem` since the latest version of typescript does not\n // support setting the same object key (empty string)\n const p = \"rmd-table-cell--\";\n return cnb(\n \"rmd-table-cell\",\n grow && `${p}grow`,\n header && `${p}header`,\n sticky && `${p}sticky`,\n inputToggle && `${p}input-toggle`,\n sticky && (!isInTableHeader || inputToggle) && `${p}sticky-cell`,\n sticky && isInTableHeader && `${p}sticky-header`,\n sticky && isInTableHeader && inputToggle && `${p}header-cell`,\n vAlign && vAlign !== \"middle\" && `${p}${vAlign}`,\n !lineWrap && `${p}no-wrap`,\n padding === \"vertical\" && `${p}v-padding`,\n padding === \"none\" && `${p}no-padding`,\n cssUtils({\n textAlign: hAlign,\n }),\n className\n );\n}\n"],"names":["cnb","cssUtils","tableCell","options","grow","sticky","header","inputToggle","hAlign","vAlign","lineWrap","padding","isInTableHeader","className","p","textAlign"],"mappings":"AAAA,SAASA,GAAG,QAAQ,YAAY;AAChC,SAASC,QAAQ,QAAQ,iBAAiB;AA2C1C;;CAEC,GACD,OAAO,SAASC,UAAUC,OAAkC;IAC1D,MAAM,EACJC,IAAI,EACJC,MAAM,EACNC,MAAM,EACNC,WAAW,EACXC,MAAM,EACNC,MAAM,EACNC,WAAW,IAAI,EACfC,UAAU,YAAY,EACtBC,eAAe,EACfC,SAAS,EACV,GAAGV;IAEJ,8EAA8E;IAC9E,qDAAqD;IACrD,MAAMW,IAAI;IACV,OAAOd,IACL,kBACAI,QAAQ,CAAC,EAAEU,EAAE,IAAI,CAAC,EAClBR,UAAU,CAAC,EAAEQ,EAAE,MAAM,CAAC,EACtBT,UAAU,CAAC,EAAES,EAAE,MAAM,CAAC,EACtBP,eAAe,CAAC,EAAEO,EAAE,YAAY,CAAC,EACjCT,UAAW,CAAA,CAACO,mBAAmBL,WAAU,KAAM,CAAC,EAAEO,EAAE,WAAW,CAAC,EAChET,UAAUO,mBAAmB,CAAC,EAAEE,EAAE,aAAa,CAAC,EAChDT,UAAUO,mBAAmBL,eAAe,CAAC,EAAEO,EAAE,WAAW,CAAC,EAC7DL,UAAUA,WAAW,YAAY,CAAC,EAAEK,EAAE,EAAEL,OAAO,CAAC,EAChD,CAACC,YAAY,CAAC,EAAEI,EAAE,OAAO,CAAC,EAC1BH,YAAY,cAAc,CAAC,EAAEG,EAAE,SAAS,CAAC,EACzCH,YAAY,UAAU,CAAC,EAAEG,EAAE,UAAU,CAAC,EACtCb,SAAS;QACPc,WAAWP;IACb,IACAK;AAEJ"}
@@ -1,8 +1,9 @@
1
- import { type ButtonHTMLAttributes, type ReactNode } from "react";
1
+ import { type AnchorHTMLAttributes, type ButtonHTMLAttributes, type ReactElement, type ReactNode } from "react";
2
+ import { type CustomLinkComponent } from "../link/Link.js";
2
3
  /**
3
4
  * @remarks \@since 6.0.0
4
5
  */
5
- export interface TabProps extends ButtonHTMLAttributes<HTMLButtonElement> {
6
+ export interface BaseTabProps {
6
7
  /**
7
8
  * Set this to `true` if the tab is currently active.
8
9
  *
@@ -17,6 +18,13 @@ export interface TabProps extends ButtonHTMLAttributes<HTMLButtonElement> {
17
18
  * @defaultValue `false`
18
19
  */
19
20
  activeIndicator?: boolean;
21
+ /**
22
+ * Set this to `true` when rendering the tabs vertically and
23
+ * {@link activeIndicator} has been enabled.
24
+ *
25
+ * @defaultValue !false
26
+ */
27
+ verticalActiveIndicator?: boolean;
20
28
  /**
21
29
  * An optional icon to render with the with the {@link children}. The default
22
30
  * behavior will render this icon before the children.
@@ -39,6 +47,19 @@ export interface TabProps extends ButtonHTMLAttributes<HTMLButtonElement> {
39
47
  */
40
48
  stacked?: boolean;
41
49
  }
50
+ /**
51
+ * @remarks \@since 6.0.0
52
+ */
53
+ export interface TabButtonProps extends BaseTabProps, ButtonHTMLAttributes<HTMLButtonElement> {
54
+ as?: "button";
55
+ }
56
+ export interface TabLinkProps extends BaseTabProps, AnchorHTMLAttributes<HTMLAnchorElement> {
57
+ as: CustomLinkComponent;
58
+ }
59
+ /**
60
+ * @remarks \@since 6.0.0
61
+ */
62
+ export type TabProps = TabButtonProps | TabLinkProps;
42
63
  /**
43
64
  * **Client Component**
44
65
  *
@@ -49,4 +70,4 @@ export interface TabProps extends ButtonHTMLAttributes<HTMLButtonElement> {
49
70
  *
50
71
  * @remarks \@since 6.0.0
51
72
  */
52
- export declare const Tab: import("react").ForwardRefExoticComponent<TabProps & import("react").RefAttributes<HTMLButtonElement>>;
73
+ export declare function Tab(props: TabProps): ReactElement;
package/dist/tabs/Tab.js CHANGED
@@ -1,6 +1,5 @@
1
1
  "use client";
2
2
  import { jsxs as _jsxs } from "react/jsx-runtime";
3
- import { forwardRef } from "react";
4
3
  import { useElementInteraction } from "../interaction/useElementInteraction.js";
5
4
  import { useHigherContrastChildren } from "../interaction/useHigherContrastChildren.js";
6
5
  import { useKeyboardMovementContext } from "../movement/useKeyboardMovementProvider.js";
@@ -15,8 +14,8 @@ import { tab } from "./tabStyles.js";
15
14
  * @see {@link useTabs}
16
15
  *
17
16
  * @remarks \@since 6.0.0
18
- */ export const Tab = /*#__PURE__*/ forwardRef(function Tab(props, ref) {
19
- const { id: propId, active, activeIndicator, icon, iconAfter, stacked, className, children: propChildren, onBlur, onClick, onKeyDown, onKeyUp, onMouseDown, onMouseUp, onMouseLeave, onDragStart, onTouchStart, onTouchEnd, onTouchMove, ...remaining } = props;
17
+ */ export function Tab(props) {
18
+ const { id: propId, as: Component = "button", active, activeIndicator, verticalActiveIndicator, icon, iconAfter, stacked, className, children: propChildren, onBlur, onClick, onKeyDown, onKeyUp, onMouseDown, onMouseUp, onMouseLeave, onDragStart, onTouchStart, onTouchEnd, onTouchMove, ...remaining } = props;
20
19
  const { disabled } = props;
21
20
  const id = useEnsuredId(propId, "tab");
22
21
  const { activeDescendantId } = useKeyboardMovementContext();
@@ -34,23 +33,31 @@ import { tab } from "./tabStyles.js";
34
33
  onTouchMove,
35
34
  disabled
36
35
  });
36
+ const isLink = Component !== "button";
37
37
  const children = useHigherContrastChildren(propChildren);
38
- return /*#__PURE__*/ _jsxs("button", {
38
+ let buttonOnlyProps;
39
+ if (!isLink) {
40
+ buttonOnlyProps = {
41
+ type: "button"
42
+ };
43
+ }
44
+ return /*#__PURE__*/ _jsxs(Component, {
39
45
  ...remaining,
46
+ ...buttonOnlyProps,
40
47
  ...handlers,
41
48
  "aria-selected": active,
42
49
  id: id,
43
- ref: ref,
44
50
  role: "tab",
45
- type: "button",
46
51
  tabIndex: id === activeDescendantId ? 0 : -1,
47
52
  className: tab({
48
53
  className,
49
54
  active,
55
+ isLink,
50
56
  stacked: !!icon && stacked,
51
57
  disabled,
52
58
  reversed: !!icon && iconAfter,
53
- activeIndicator
59
+ activeIndicator,
60
+ verticalActiveIndicator
54
61
  }),
55
62
  children: [
56
63
  icon,
@@ -58,6 +65,6 @@ import { tab } from "./tabStyles.js";
58
65
  ripples
59
66
  ]
60
67
  });
61
- });
68
+ }
62
69
 
63
70
  //# sourceMappingURL=Tab.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/tabs/Tab.tsx"],"sourcesContent":["\"use client\";\nimport { forwardRef, type ButtonHTMLAttributes, type ReactNode } from \"react\";\nimport { useElementInteraction } from \"../interaction/useElementInteraction.js\";\nimport { useHigherContrastChildren } from \"../interaction/useHigherContrastChildren.js\";\nimport { useKeyboardMovementContext } from \"../movement/useKeyboardMovementProvider.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport { tab } from \"./tabStyles.js\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { type useTabs } from \"./useTabs.js\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { type TabListProps } from \"./TabList.js\";\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface TabProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /**\n * Set this to `true` if the tab is currently active.\n *\n * This is normally provided by the {@link useTabs} hook.\n */\n active: boolean;\n\n /**\n * Set this to `true` if the {@link TabListProps.disableTransition} prop has\n * also been set to `true` to disable an active indicator below the tab when\n * {@link active} is `true`.\n *\n * @defaultValue `false`\n */\n activeIndicator?: boolean;\n\n /**\n * An optional icon to render with the with the {@link children}. The default\n * behavior will render this icon before the children.\n *\n * @see {@link iconAfter}\n * @see {@link stacked}\n */\n icon?: ReactNode;\n\n /**\n * Set this to `true` to render the {@link icon} after the {@link children}.\n *\n * @defaultValue `false`\n */\n iconAfter?: boolean;\n\n /**\n * Set this to `true` to render the {@link icon} and {@link children} stacked\n * instead of horizontally.\n *\n * @defaultValue `false`\n */\n stacked?: boolean;\n}\n\n/**\n * **Client Component**\n *\n * This component should usually be used with the `TabsList` component and\n * `useTabs` hook.\n *\n * @see {@link useTabs}\n *\n * @remarks \\@since 6.0.0\n */\nexport const Tab = forwardRef<HTMLButtonElement, TabProps>(\n function Tab(props, ref) {\n const {\n id: propId,\n active,\n activeIndicator,\n icon,\n iconAfter,\n stacked,\n className,\n children: propChildren,\n onBlur,\n onClick,\n onKeyDown,\n onKeyUp,\n onMouseDown,\n onMouseUp,\n onMouseLeave,\n onDragStart,\n onTouchStart,\n onTouchEnd,\n onTouchMove,\n ...remaining\n } = props;\n const { disabled } = props;\n\n const id = useEnsuredId(propId, \"tab\");\n const { activeDescendantId } = useKeyboardMovementContext();\n const { ripples, handlers } = useElementInteraction({\n onBlur,\n onClick,\n onKeyDown,\n onKeyUp,\n onMouseDown,\n onMouseUp,\n onMouseLeave,\n onDragStart,\n onTouchStart,\n onTouchEnd,\n onTouchMove,\n disabled,\n });\n\n const children = useHigherContrastChildren(propChildren);\n\n return (\n <button\n {...remaining}\n {...handlers}\n aria-selected={active}\n id={id}\n ref={ref}\n role=\"tab\"\n type=\"button\"\n tabIndex={id === activeDescendantId ? 0 : -1}\n className={tab({\n className,\n active,\n stacked: !!icon && stacked,\n disabled,\n reversed: !!icon && iconAfter,\n activeIndicator,\n })}\n >\n {icon}\n {children}\n {ripples}\n </button>\n );\n }\n);\n"],"names":["forwardRef","useElementInteraction","useHigherContrastChildren","useKeyboardMovementContext","useEnsuredId","tab","Tab","props","ref","id","propId","active","activeIndicator","icon","iconAfter","stacked","className","children","propChildren","onBlur","onClick","onKeyDown","onKeyUp","onMouseDown","onMouseUp","onMouseLeave","onDragStart","onTouchStart","onTouchEnd","onTouchMove","remaining","disabled","activeDescendantId","ripples","handlers","button","aria-selected","role","type","tabIndex","reversed"],"mappings":"AAAA;;AACA,SAASA,UAAU,QAAmD,QAAQ;AAC9E,SAASC,qBAAqB,QAAQ,0CAA0C;AAChF,SAASC,yBAAyB,QAAQ,8CAA8C;AACxF,SAASC,0BAA0B,QAAQ,6CAA6C;AACxF,SAASC,YAAY,QAAQ,qBAAqB;AAClD,SAASC,GAAG,QAAQ,iBAAiB;AAoDrC;;;;;;;;;CASC,GACD,OAAO,MAAMC,oBAAMN,WACjB,SAASM,IAAIC,KAAK,EAAEC,GAAG;IACrB,MAAM,EACJC,IAAIC,MAAM,EACVC,MAAM,EACNC,eAAe,EACfC,IAAI,EACJC,SAAS,EACTC,OAAO,EACPC,SAAS,EACTC,UAAUC,YAAY,EACtBC,MAAM,EACNC,OAAO,EACPC,SAAS,EACTC,OAAO,EACPC,WAAW,EACXC,SAAS,EACTC,YAAY,EACZC,WAAW,EACXC,YAAY,EACZC,UAAU,EACVC,WAAW,EACX,GAAGC,WACJ,GAAGvB;IACJ,MAAM,EAAEwB,QAAQ,EAAE,GAAGxB;IAErB,MAAME,KAAKL,aAAaM,QAAQ;IAChC,MAAM,EAAEsB,kBAAkB,EAAE,GAAG7B;IAC/B,MAAM,EAAE8B,OAAO,EAAEC,QAAQ,EAAE,GAAGjC,sBAAsB;QAClDkB;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAE;IACF;IAEA,MAAMd,WAAWf,0BAA0BgB;IAE3C,qBACE,MAACiB;QACE,GAAGL,SAAS;QACZ,GAAGI,QAAQ;QACZE,iBAAezB;QACfF,IAAIA;QACJD,KAAKA;QACL6B,MAAK;QACLC,MAAK;QACLC,UAAU9B,OAAOuB,qBAAqB,IAAI,CAAC;QAC3ChB,WAAWX,IAAI;YACbW;YACAL;YACAI,SAAS,CAAC,CAACF,QAAQE;YACnBgB;YACAS,UAAU,CAAC,CAAC3B,QAAQC;YACpBF;QACF;;YAECC;YACAI;YACAgB;;;AAGP,GACA"}
1
+ {"version":3,"sources":["../../src/tabs/Tab.tsx"],"sourcesContent":["\"use client\";\nimport {\n type AnchorHTMLAttributes,\n type ButtonHTMLAttributes,\n type ReactElement,\n type ReactNode,\n} from \"react\";\nimport { useElementInteraction } from \"../interaction/useElementInteraction.js\";\nimport { useHigherContrastChildren } from \"../interaction/useHigherContrastChildren.js\";\nimport { type CustomLinkComponent } from \"../link/Link.js\";\nimport { useKeyboardMovementContext } from \"../movement/useKeyboardMovementProvider.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport { tab } from \"./tabStyles.js\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { type useTabs } from \"./useTabs.js\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { type TabListProps } from \"./TabList.js\";\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface BaseTabProps {\n /**\n * Set this to `true` if the tab is currently active.\n *\n * This is normally provided by the {@link useTabs} hook.\n */\n active: boolean;\n\n /**\n * Set this to `true` if the {@link TabListProps.disableTransition} prop has\n * also been set to `true` to disable an active indicator below the tab when\n * {@link active} is `true`.\n *\n * @defaultValue `false`\n */\n activeIndicator?: boolean;\n\n /**\n * Set this to `true` when rendering the tabs vertically and\n * {@link activeIndicator} has been enabled.\n *\n * @defaultValue !false\n */\n verticalActiveIndicator?: boolean;\n\n /**\n * An optional icon to render with the with the {@link children}. The default\n * behavior will render this icon before the children.\n *\n * @see {@link iconAfter}\n * @see {@link stacked}\n */\n icon?: ReactNode;\n\n /**\n * Set this to `true` to render the {@link icon} after the {@link children}.\n *\n * @defaultValue `false`\n */\n iconAfter?: boolean;\n\n /**\n * Set this to `true` to render the {@link icon} and {@link children} stacked\n * instead of horizontally.\n *\n * @defaultValue `false`\n */\n stacked?: boolean;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface TabButtonProps\n extends BaseTabProps,\n ButtonHTMLAttributes<HTMLButtonElement> {\n as?: \"button\";\n}\n\nexport interface TabLinkProps\n extends BaseTabProps,\n AnchorHTMLAttributes<HTMLAnchorElement> {\n as: CustomLinkComponent;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport type TabProps = TabButtonProps | TabLinkProps;\n\n/**\n * **Client Component**\n *\n * This component should usually be used with the `TabsList` component and\n * `useTabs` hook.\n *\n * @see {@link useTabs}\n *\n * @remarks \\@since 6.0.0\n */\nexport function Tab(props: TabProps): ReactElement {\n const {\n id: propId,\n as: Component = \"button\",\n active,\n activeIndicator,\n verticalActiveIndicator,\n icon,\n iconAfter,\n stacked,\n className,\n children: propChildren,\n onBlur,\n onClick,\n onKeyDown,\n onKeyUp,\n onMouseDown,\n onMouseUp,\n onMouseLeave,\n onDragStart,\n onTouchStart,\n onTouchEnd,\n onTouchMove,\n ...remaining\n } = props as TabButtonProps;\n const { disabled } = props as TabButtonProps;\n\n const id = useEnsuredId(propId, \"tab\");\n const { activeDescendantId } = useKeyboardMovementContext();\n const { ripples, handlers } = useElementInteraction({\n onBlur,\n onClick,\n onKeyDown,\n onKeyUp,\n onMouseDown,\n onMouseUp,\n onMouseLeave,\n onDragStart,\n onTouchStart,\n onTouchEnd,\n onTouchMove,\n disabled,\n });\n\n const isLink = Component !== \"button\";\n const children = useHigherContrastChildren(propChildren);\n let buttonOnlyProps: Record<string, unknown> | undefined;\n if (!isLink) {\n buttonOnlyProps = { type: \"button\" };\n }\n\n return (\n <Component\n {...remaining}\n {...buttonOnlyProps}\n {...handlers}\n aria-selected={active}\n id={id}\n role=\"tab\"\n tabIndex={id === activeDescendantId ? 0 : -1}\n className={tab({\n className,\n active,\n isLink,\n stacked: !!icon && stacked,\n disabled,\n reversed: !!icon && iconAfter,\n activeIndicator,\n verticalActiveIndicator,\n })}\n >\n {icon}\n {children}\n {ripples}\n </Component>\n );\n}\n"],"names":["useElementInteraction","useHigherContrastChildren","useKeyboardMovementContext","useEnsuredId","tab","Tab","props","id","propId","as","Component","active","activeIndicator","verticalActiveIndicator","icon","iconAfter","stacked","className","children","propChildren","onBlur","onClick","onKeyDown","onKeyUp","onMouseDown","onMouseUp","onMouseLeave","onDragStart","onTouchStart","onTouchEnd","onTouchMove","remaining","disabled","activeDescendantId","ripples","handlers","isLink","buttonOnlyProps","type","aria-selected","role","tabIndex","reversed"],"mappings":"AAAA;;AAOA,SAASA,qBAAqB,QAAQ,0CAA0C;AAChF,SAASC,yBAAyB,QAAQ,8CAA8C;AAExF,SAASC,0BAA0B,QAAQ,6CAA6C;AACxF,SAASC,YAAY,QAAQ,qBAAqB;AAClD,SAASC,GAAG,QAAQ,iBAAiB;AAgFrC;;;;;;;;;CASC,GACD,OAAO,SAASC,IAAIC,KAAe;IACjC,MAAM,EACJC,IAAIC,MAAM,EACVC,IAAIC,YAAY,QAAQ,EACxBC,MAAM,EACNC,eAAe,EACfC,uBAAuB,EACvBC,IAAI,EACJC,SAAS,EACTC,OAAO,EACPC,SAAS,EACTC,UAAUC,YAAY,EACtBC,MAAM,EACNC,OAAO,EACPC,SAAS,EACTC,OAAO,EACPC,WAAW,EACXC,SAAS,EACTC,YAAY,EACZC,WAAW,EACXC,YAAY,EACZC,UAAU,EACVC,WAAW,EACX,GAAGC,WACJ,GAAGzB;IACJ,MAAM,EAAE0B,QAAQ,EAAE,GAAG1B;IAErB,MAAMC,KAAKJ,aAAaK,QAAQ;IAChC,MAAM,EAAEyB,kBAAkB,EAAE,GAAG/B;IAC/B,MAAM,EAAEgC,OAAO,EAAEC,QAAQ,EAAE,GAAGnC,sBAAsB;QAClDoB;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAE;IACF;IAEA,MAAMI,SAAS1B,cAAc;IAC7B,MAAMQ,WAAWjB,0BAA0BkB;IAC3C,IAAIkB;IACJ,IAAI,CAACD,QAAQ;QACXC,kBAAkB;YAAEC,MAAM;QAAS;IACrC;IAEA,qBACE,MAAC5B;QACE,GAAGqB,SAAS;QACZ,GAAGM,eAAe;QAClB,GAAGF,QAAQ;QACZI,iBAAe5B;QACfJ,IAAIA;QACJiC,MAAK;QACLC,UAAUlC,OAAO0B,qBAAqB,IAAI,CAAC;QAC3ChB,WAAWb,IAAI;YACba;YACAN;YACAyB;YACApB,SAAS,CAAC,CAACF,QAAQE;YACnBgB;YACAU,UAAU,CAAC,CAAC5B,QAAQC;YACpBH;YACAC;QACF;;YAECC;YACAI;YACAgB;;;AAGP"}
@@ -13,11 +13,12 @@ $disable-stacked: false !default;
13
13
  $disable-reversed: false !default;
14
14
  $disable-tablist-padded: false !default;
15
15
  $disable-tablist-vertical: false !default;
16
- $disable-indicator: false !default;
17
16
  $disable-tablist-indicator: false !default;
18
17
  $disable-tablist-hidden-scrollbar: false !default;
19
18
  $disable-tablist-scroll-button: false !default;
20
19
  $disable-tablist-active-indicator-transition: false !default;
20
+ $disable-indicator: false !default;
21
+ $disable-indicator-vertical: false !default;
21
22
 
22
23
  $typography: map.remove(typography.$button-styles, line-height) !default;
23
24
  $gap: icon.$spacing !default;
@@ -41,46 +42,29 @@ $tablist-scroller-background-color: theme.theme-get-var(
41
42
  background-color,
42
43
  inherit
43
44
  ) !default;
44
-
45
- $var-lookup: (
46
- color: (
47
- var: --rmd-tab-color,
48
- value: $inactive-color,
49
- ),
50
- active-color: (
51
- var: --rmd-tab-active-color,
52
- value: $active-color,
53
- ),
54
- inactive-color: (
55
- var: --rmd-tab-inactive-color,
56
- value: $inactive-color,
57
- ),
58
- disabled-color: (
59
- var: --rmd-tab-disabled-color,
60
- value: $disabled-color,
61
- ),
62
- indicator-background: (
63
- var: --rmd-tab-indicator-background,
64
- value: $indicator-background,
65
- ),
45
+ $tablist-vertical-indicator-left: 0 !default;
46
+
47
+ $variables: (
48
+ color,
49
+ active-color,
50
+ inactive-color,
51
+ disabled-color,
52
+ indicator-background
66
53
  );
67
54
 
68
55
  @function get-var($name, $fallback: null) {
69
- $found: utils.validate($var-lookup, $name, "tabs var");
70
- $var: map.get($found, var);
71
- $value: if($fallback, $fallback, map.get($found, value));
72
-
73
- @if $value {
74
- @return var(#{$var}, #{$value});
56
+ $var: utils.get-var-name($variables, $name, "tab");
57
+ @if $fallback {
58
+ @return var(#{$var}, #{$fallback});
75
59
  }
76
60
 
77
61
  @return var(#{$var});
78
62
  }
79
63
 
80
64
  @mixin set-var($name, $value) {
81
- $var: map.get(utils.validate($var-lookup, $name, "tabs var"), var);
82
-
83
- #{$var}: #{$value};
65
+ @if $value {
66
+ #{utils.get-var-name($variables, $name, "tab")}: #{$value};
67
+ }
84
68
  }
85
69
 
86
70
  @mixin use-var($property, $name: $property, $fallback: null) {
@@ -92,21 +76,41 @@ $var-lookup: (
92
76
  &::after {
93
77
  @include use-var(background, indicator-background);
94
78
 
95
- bottom: 0;
96
79
  content: "";
97
- height: $indicator-height;
98
80
  pointer-events: none;
99
81
  position: absolute;
100
- width: 100%;
101
82
  z-index: 1;
102
83
  }
103
84
 
85
+ &--h::after {
86
+ bottom: 0;
87
+ height: $indicator-height;
88
+ width: 100%;
89
+ }
90
+
91
+ @if not $disable-indicator-vertical {
92
+ &--v::after {
93
+ @include utils.auto-rtl(left, $tablist-vertical-indicator-left);
94
+
95
+ height: 100%;
96
+ top: 0;
97
+ width: $indicator-height;
98
+ }
99
+ }
100
+
104
101
  @if not $disable-tablist-indicator {
105
- &--tablist::after {
102
+ &--tablist-h::after {
106
103
  left: 0;
107
- max-width: var(--rmd-tab-width, $min-width);
104
+ max-width: var(--rmd-tab-size, $min-width);
108
105
  transform: translateX(var(--rmd-tab-offset, 0));
109
106
  }
107
+
108
+ @if not $disable-tablist-vertical {
109
+ &--tablist-v::after {
110
+ max-height: var(--rmd-tab-size, $min-width);
111
+ transform: translateY(var(--rmd-tab-offset, 0));
112
+ }
113
+ }
110
114
  }
111
115
 
112
116
  @if not $disable-tablist-active-indicator-transition {
@@ -146,16 +150,6 @@ $var-lookup: (
146
150
  @if not $disable-tablist-vertical {
147
151
  &--vertical {
148
152
  flex-direction: column;
149
-
150
- @if not $disable-tablist-indicator {
151
- &::after {
152
- bottom: auto;
153
- left: auto;
154
- right: 0;
155
- top: 0;
156
- transform: translateY(var(--rmd-tab-offset, 0));
157
- }
158
- }
159
153
  }
160
154
  }
161
155
 
@@ -248,6 +242,19 @@ $var-lookup: (
248
242
  }
249
243
  }
250
244
 
245
+ @mixin variables {
246
+ @if not $disable-everything {
247
+ @include set-var(color, $inactive-color);
248
+ @include set-var(active-color, $active-color);
249
+ @include set-var(inactive-color, $inactive-color);
250
+ @include set-var(disabled-color, $disabled-color);
251
+
252
+ @if not $disable-indicator {
253
+ @include set-var(indicator-background, $indicator-background);
254
+ }
255
+ }
256
+ }
257
+
251
258
  @mixin styles {
252
259
  @if not $disable-everything {
253
260
  @include tablist-styles;
@@ -3,8 +3,9 @@
3
3
  */
4
4
  export interface TabIndicatorClassNameOptions {
5
5
  className?: string;
6
- tablist?: boolean;
7
6
  animate?: boolean;
7
+ tablist?: boolean;
8
+ vertical?: boolean;
8
9
  }
9
10
  /**
10
11
  * @remarks \@since 6.0.0
@@ -4,10 +4,13 @@ const styles = bem("rmd-tab-indicator");
4
4
  /**
5
5
  * @remarks \@since 6.0.0
6
6
  */ export function tabIndicator(options = {}) {
7
- const { className, tablist, animate } = options;
7
+ const { className, vertical, tablist, animate } = options;
8
8
  return cnb(styles({
9
- tablist,
10
- animate
9
+ animate,
10
+ h: !vertical,
11
+ v: vertical,
12
+ "tablist-h": tablist && !vertical,
13
+ "tablist-v": tablist && vertical
11
14
  }), className);
12
15
  }
13
16
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/tabs/tabIndicatorStyles.ts"],"sourcesContent":["import { cnb } from \"cnbuilder\";\nimport { bem } from \"../utils/bem.js\";\n\nconst styles = bem(\"rmd-tab-indicator\");\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface TabIndicatorClassNameOptions {\n className?: string;\n tablist?: boolean;\n animate?: boolean;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport function tabIndicator(\n options: TabIndicatorClassNameOptions = {}\n): string {\n const { className, tablist, animate } = options;\n\n return cnb(styles({ tablist, animate }), className);\n}\n"],"names":["cnb","bem","styles","tabIndicator","options","className","tablist","animate"],"mappings":"AAAA,SAASA,GAAG,QAAQ,YAAY;AAChC,SAASC,GAAG,QAAQ,kBAAkB;AAEtC,MAAMC,SAASD,IAAI;AAWnB;;CAEC,GACD,OAAO,SAASE,aACdC,UAAwC,CAAC,CAAC;IAE1C,MAAM,EAAEC,SAAS,EAAEC,OAAO,EAAEC,OAAO,EAAE,GAAGH;IAExC,OAAOJ,IAAIE,OAAO;QAAEI;QAASC;IAAQ,IAAIF;AAC3C"}
1
+ {"version":3,"sources":["../../src/tabs/tabIndicatorStyles.ts"],"sourcesContent":["import { cnb } from \"cnbuilder\";\nimport { bem } from \"../utils/bem.js\";\n\nconst styles = bem(\"rmd-tab-indicator\");\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface TabIndicatorClassNameOptions {\n className?: string;\n animate?: boolean;\n tablist?: boolean;\n vertical?: boolean;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport function tabIndicator(\n options: TabIndicatorClassNameOptions = {}\n): string {\n const { className, vertical, tablist, animate } = options;\n\n return cnb(\n styles({\n animate,\n h: !vertical,\n v: vertical,\n \"tablist-h\": tablist && !vertical,\n \"tablist-v\": tablist && vertical,\n }),\n className\n );\n}\n"],"names":["cnb","bem","styles","tabIndicator","options","className","vertical","tablist","animate","h","v"],"mappings":"AAAA,SAASA,GAAG,QAAQ,YAAY;AAChC,SAASC,GAAG,QAAQ,kBAAkB;AAEtC,MAAMC,SAASD,IAAI;AAYnB;;CAEC,GACD,OAAO,SAASE,aACdC,UAAwC,CAAC,CAAC;IAE1C,MAAM,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,EAAE,GAAGJ;IAElD,OAAOJ,IACLE,OAAO;QACLM;QACAC,GAAG,CAACH;QACJI,GAAGJ;QACH,aAAaC,WAAW,CAACD;QACzB,aAAaC,WAAWD;IAC1B,IACAD;AAEJ"}
@@ -14,7 +14,8 @@ const styles = bem("rmd-tablist");
14
14
  "no-scrollbar": !scrollbar
15
15
  }), indicator && tabIndicator({
16
16
  tablist: true,
17
- animate
17
+ animate,
18
+ vertical
18
19
  }), className);
19
20
  }
20
21
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/tabs/tabListStyles.ts"],"sourcesContent":["import { cnb } from \"cnbuilder\";\nimport { bem } from \"../utils/bem.js\";\nimport { tabIndicator } from \"./tabIndicatorStyles.js\";\n\nconst styles = bem(\"rmd-tablist\");\n\n/**\n * The supported types of alignments for the tabs.\n */\nexport type TabsAlignment = \"left\" | \"center\" | \"right\";\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface TabListClassNameOptions {\n className?: string;\n align?: TabsAlignment;\n animate?: boolean;\n inline?: boolean;\n padded?: boolean;\n vertical?: boolean;\n scrollbar?: boolean;\n indicator?: boolean;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport function tabList(options: TabListClassNameOptions = {}): string {\n const {\n className,\n align = \"left\",\n padded,\n inline,\n vertical,\n scrollbar,\n animate = false,\n indicator = false,\n } = options;\n\n return cnb(\n styles({\n [align]: true,\n padded,\n vertical,\n \"full-width\": !inline,\n \"no-scrollbar\": !scrollbar,\n }),\n indicator && tabIndicator({ tablist: true, animate }),\n className\n );\n}\n"],"names":["cnb","bem","tabIndicator","styles","tabList","options","className","align","padded","inline","vertical","scrollbar","animate","indicator","tablist"],"mappings":"AAAA,SAASA,GAAG,QAAQ,YAAY;AAChC,SAASC,GAAG,QAAQ,kBAAkB;AACtC,SAASC,YAAY,QAAQ,0BAA0B;AAEvD,MAAMC,SAASF,IAAI;AAqBnB;;CAEC,GACD,OAAO,SAASG,QAAQC,UAAmC,CAAC,CAAC;IAC3D,MAAM,EACJC,SAAS,EACTC,QAAQ,MAAM,EACdC,MAAM,EACNC,MAAM,EACNC,QAAQ,EACRC,SAAS,EACTC,UAAU,KAAK,EACfC,YAAY,KAAK,EAClB,GAAGR;IAEJ,OAAOL,IACLG,OAAO;QACL,CAACI,MAAM,EAAE;QACTC;QACAE;QACA,cAAc,CAACD;QACf,gBAAgB,CAACE;IACnB,IACAE,aAAaX,aAAa;QAAEY,SAAS;QAAMF;IAAQ,IACnDN;AAEJ"}
1
+ {"version":3,"sources":["../../src/tabs/tabListStyles.ts"],"sourcesContent":["import { cnb } from \"cnbuilder\";\nimport { bem } from \"../utils/bem.js\";\nimport { tabIndicator } from \"./tabIndicatorStyles.js\";\n\nconst styles = bem(\"rmd-tablist\");\n\n/**\n * The supported types of alignments for the tabs.\n */\nexport type TabsAlignment = \"left\" | \"center\" | \"right\";\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface TabListClassNameOptions {\n className?: string;\n align?: TabsAlignment;\n animate?: boolean;\n inline?: boolean;\n padded?: boolean;\n vertical?: boolean;\n scrollbar?: boolean;\n indicator?: boolean;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport function tabList(options: TabListClassNameOptions = {}): string {\n const {\n className,\n align = \"left\",\n padded,\n inline,\n vertical,\n scrollbar,\n animate = false,\n indicator = false,\n } = options;\n\n return cnb(\n styles({\n [align]: true,\n padded,\n vertical,\n \"full-width\": !inline,\n \"no-scrollbar\": !scrollbar,\n }),\n indicator && tabIndicator({ tablist: true, animate, vertical }),\n className\n );\n}\n"],"names":["cnb","bem","tabIndicator","styles","tabList","options","className","align","padded","inline","vertical","scrollbar","animate","indicator","tablist"],"mappings":"AAAA,SAASA,GAAG,QAAQ,YAAY;AAChC,SAASC,GAAG,QAAQ,kBAAkB;AACtC,SAASC,YAAY,QAAQ,0BAA0B;AAEvD,MAAMC,SAASF,IAAI;AAqBnB;;CAEC,GACD,OAAO,SAASG,QAAQC,UAAmC,CAAC,CAAC;IAC3D,MAAM,EACJC,SAAS,EACTC,QAAQ,MAAM,EACdC,MAAM,EACNC,MAAM,EACNC,QAAQ,EACRC,SAAS,EACTC,UAAU,KAAK,EACfC,YAAY,KAAK,EAClB,GAAGR;IAEJ,OAAOL,IACLG,OAAO;QACL,CAACI,MAAM,EAAE;QACTC;QACAE;QACA,cAAc,CAACD;QACf,gBAAgB,CAACE;IACnB,IACAE,aAAaX,aAAa;QAAEY,SAAS;QAAMF;QAASF;IAAS,IAC7DJ;AAEJ"}
@@ -12,7 +12,9 @@ declare module "react" {
12
12
  export interface TabClassNameOptions {
13
13
  className?: string;
14
14
  active?: boolean;
15
+ isLink?: boolean;
15
16
  activeIndicator?: boolean;
17
+ verticalActiveIndicator?: boolean;
16
18
  stacked?: boolean;
17
19
  reversed?: boolean;
18
20
  disabled?: boolean;
@@ -6,15 +6,18 @@ const styles = bem("rmd-tab");
6
6
  /**
7
7
  * @remarks \@since 6.0.0
8
8
  */ export function tab(options = {}) {
9
- const { className, active, activeIndicator, stacked, reversed, disabled } = options;
9
+ const { className, active, isLink, stacked, reversed, disabled, activeIndicator, verticalActiveIndicator } = options;
10
10
  return cnb(styles({
11
11
  active,
12
12
  reversed: reversed && !stacked,
13
13
  stacked,
14
14
  "stacked-reversed": stacked && reversed,
15
15
  disabled
16
- }), active && activeIndicator && tabIndicator(), cssUtils({
17
- surface: true
16
+ }), active && activeIndicator && tabIndicator({
17
+ vertical: verticalActiveIndicator
18
+ }), cssUtils({
19
+ surface: true,
20
+ textDecoration: isLink ? "none" : undefined
18
21
  }), className);
19
22
  }
20
23
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/tabs/tabStyles.ts"],"sourcesContent":["import { cnb } from \"cnbuilder\";\nimport { cssUtils } from \"../cssUtils.js\";\nimport { bem } from \"../utils/bem.js\";\nimport { tabIndicator } from \"./tabIndicatorStyles.js\";\n\ndeclare module \"react\" {\n interface CSSProperties {\n \"--rmd-tab-color\"?: string;\n \"--rmd-tab-active-color\"?: string;\n \"--rmd-tab-inactive-color\"?: string;\n \"--rmd-tab-disabled-color\"?: string;\n }\n}\n\nconst styles = bem(\"rmd-tab\");\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface TabClassNameOptions {\n className?: string;\n active?: boolean;\n activeIndicator?: boolean;\n stacked?: boolean;\n reversed?: boolean;\n disabled?: boolean;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport function tab(options: TabClassNameOptions = {}): string {\n const { className, active, activeIndicator, stacked, reversed, disabled } =\n options;\n\n return cnb(\n styles({\n active,\n reversed: reversed && !stacked,\n stacked,\n \"stacked-reversed\": stacked && reversed,\n disabled,\n }),\n active && activeIndicator && tabIndicator(),\n cssUtils({ surface: true }),\n className\n );\n}\n"],"names":["cnb","cssUtils","bem","tabIndicator","styles","tab","options","className","active","activeIndicator","stacked","reversed","disabled","surface"],"mappings":"AAAA,SAASA,GAAG,QAAQ,YAAY;AAChC,SAASC,QAAQ,QAAQ,iBAAiB;AAC1C,SAASC,GAAG,QAAQ,kBAAkB;AACtC,SAASC,YAAY,QAAQ,0BAA0B;AAWvD,MAAMC,SAASF,IAAI;AAcnB;;CAEC,GACD,OAAO,SAASG,IAAIC,UAA+B,CAAC,CAAC;IACnD,MAAM,EAAEC,SAAS,EAAEC,MAAM,EAAEC,eAAe,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,QAAQ,EAAE,GACvEN;IAEF,OAAON,IACLI,OAAO;QACLI;QACAG,UAAUA,YAAY,CAACD;QACvBA;QACA,oBAAoBA,WAAWC;QAC/BC;IACF,IACAJ,UAAUC,mBAAmBN,gBAC7BF,SAAS;QAAEY,SAAS;IAAK,IACzBN;AAEJ"}
1
+ {"version":3,"sources":["../../src/tabs/tabStyles.ts"],"sourcesContent":["import { cnb } from \"cnbuilder\";\nimport { cssUtils } from \"../cssUtils.js\";\nimport { bem } from \"../utils/bem.js\";\nimport { tabIndicator } from \"./tabIndicatorStyles.js\";\n\ndeclare module \"react\" {\n interface CSSProperties {\n \"--rmd-tab-color\"?: string;\n \"--rmd-tab-active-color\"?: string;\n \"--rmd-tab-inactive-color\"?: string;\n \"--rmd-tab-disabled-color\"?: string;\n }\n}\n\nconst styles = bem(\"rmd-tab\");\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface TabClassNameOptions {\n className?: string;\n active?: boolean;\n isLink?: boolean;\n activeIndicator?: boolean;\n verticalActiveIndicator?: boolean;\n stacked?: boolean;\n reversed?: boolean;\n disabled?: boolean;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport function tab(options: TabClassNameOptions = {}): string {\n const {\n className,\n active,\n isLink,\n stacked,\n reversed,\n disabled,\n activeIndicator,\n verticalActiveIndicator,\n } = options;\n\n return cnb(\n styles({\n active,\n reversed: reversed && !stacked,\n stacked,\n \"stacked-reversed\": stacked && reversed,\n disabled,\n }),\n active &&\n activeIndicator &&\n tabIndicator({ vertical: verticalActiveIndicator }),\n cssUtils({ surface: true, textDecoration: isLink ? \"none\" : undefined }),\n className\n );\n}\n"],"names":["cnb","cssUtils","bem","tabIndicator","styles","tab","options","className","active","isLink","stacked","reversed","disabled","activeIndicator","verticalActiveIndicator","vertical","surface","textDecoration","undefined"],"mappings":"AAAA,SAASA,GAAG,QAAQ,YAAY;AAChC,SAASC,QAAQ,QAAQ,iBAAiB;AAC1C,SAASC,GAAG,QAAQ,kBAAkB;AACtC,SAASC,YAAY,QAAQ,0BAA0B;AAWvD,MAAMC,SAASF,IAAI;AAgBnB;;CAEC,GACD,OAAO,SAASG,IAAIC,UAA+B,CAAC,CAAC;IACnD,MAAM,EACJC,SAAS,EACTC,MAAM,EACNC,MAAM,EACNC,OAAO,EACPC,QAAQ,EACRC,QAAQ,EACRC,eAAe,EACfC,uBAAuB,EACxB,GAAGR;IAEJ,OAAON,IACLI,OAAO;QACLI;QACAG,UAAUA,YAAY,CAACD;QACvBA;QACA,oBAAoBA,WAAWC;QAC/BC;IACF,IACAJ,UACEK,mBACAV,aAAa;QAAEY,UAAUD;IAAwB,IACnDb,SAAS;QAAEe,SAAS;QAAMC,gBAAgBR,SAAS,SAASS;IAAU,IACtEX;AAEJ"}
@@ -2,14 +2,14 @@ import type { CSSProperties, FocusEventHandler, KeyboardEventHandler, MouseEvent
2
2
  import type { KeyboardMovementContext, KeyboardMovementProps } from "../movement/types.js";
3
3
  declare module "react" {
4
4
  interface CSSProperties {
5
- "--rmd-tab-width"?: string;
5
+ "--rmd-tab-size"?: string;
6
6
  "--rmd-tab-offset"?: string | number;
7
7
  "--rmd-tab-indicator-background"?: string;
8
8
  }
9
9
  }
10
- declare const TAB_WIDTH_VAR = "--rmd-tab-width";
10
+ declare const TAB_SIZE_VAR = "--rmd-tab-size";
11
11
  declare const TAB_OFFSET_VAR = "--rmd-tab-offset";
12
- export type TabWidthVar = typeof TAB_WIDTH_VAR;
12
+ export type TabWidthVar = typeof TAB_SIZE_VAR;
13
13
  export type TabOffsetVar = typeof TAB_OFFSET_VAR;
14
14
  export type IndicatorCSSProperties = CSSProperties & Record<TabWidthVar | TabOffsetVar, string>;
15
15
  export interface TabListHookOptions {
@@ -5,7 +5,7 @@ import { useDir } from "../typography/WritingDirectionProvider.js";
5
5
  import { useEnsuredRef } from "../useEnsuredRef.js";
6
6
  import { useResizeObserver } from "../useResizeObserver.js";
7
7
  import { getTabRoleOnly, scrollTabIntoView } from "./utils.js";
8
- const TAB_WIDTH_VAR = "--rmd-tab-width";
8
+ const TAB_SIZE_VAR = "--rmd-tab-size";
9
9
  const TAB_OFFSET_VAR = "--rmd-tab-offset";
10
10
  const noop = ()=>{
11
11
  // do nothing
@@ -18,7 +18,7 @@ const noop = ()=>{
18
18
  const [indicatorStyles, setIndicatorStyles] = useState(()=>{
19
19
  const tabWidth = `${100 / 3}%`;
20
20
  return {
21
- [TAB_WIDTH_VAR]: tabWidth,
21
+ [TAB_SIZE_VAR]: tabWidth,
22
22
  [TAB_OFFSET_VAR]: "0px"
23
23
  };
24
24
  });
@@ -35,19 +35,22 @@ const noop = ()=>{
35
35
  if (!activeTab) {
36
36
  return;
37
37
  }
38
+ const size = vertical ? activeTab.offsetHeight : activeTab.offsetWidth;
39
+ const offset = vertical ? activeTab.offsetTop : activeTab.offsetLeft;
38
40
  const cssVars = {
39
- [TAB_WIDTH_VAR]: `${activeTab.offsetWidth}px`,
40
- [TAB_OFFSET_VAR]: `${activeTab.offsetLeft}px`
41
+ [TAB_SIZE_VAR]: `${size}px`,
42
+ [TAB_OFFSET_VAR]: `${offset}px`
41
43
  };
42
44
  setIndicatorStyles((prevStyles)=>{
43
- if (prevStyles && prevStyles[TAB_WIDTH_VAR] === cssVars[TAB_WIDTH_VAR] && prevStyles[TAB_OFFSET_VAR] === cssVars[TAB_OFFSET_VAR]) {
45
+ if (prevStyles && prevStyles[TAB_SIZE_VAR] === cssVars[TAB_SIZE_VAR] && prevStyles[TAB_OFFSET_VAR] === cssVars[TAB_OFFSET_VAR]) {
44
46
  return prevStyles;
45
47
  }
46
48
  return cssVars;
47
49
  });
48
50
  }, [
49
51
  activeIndex,
50
- isRTL
52
+ isRTL,
53
+ vertical
51
54
  ])
52
55
  });
53
56
  const forwardRef = useRef(null);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/tabs/useTabList.ts"],"sourcesContent":["\"use client\";\nimport type {\n CSSProperties,\n FocusEventHandler,\n KeyboardEventHandler,\n MouseEventHandler,\n Ref,\n RefObject,\n} from \"react\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport type {\n KeyboardMovementContext,\n KeyboardMovementProps,\n} from \"../movement/types.js\";\nimport { useKeyboardMovementProvider } from \"../movement/useKeyboardMovementProvider.js\";\nimport { useDir } from \"../typography/WritingDirectionProvider.js\";\nimport { useEnsuredRef } from \"../useEnsuredRef.js\";\nimport { useResizeObserver } from \"../useResizeObserver.js\";\nimport { getTabRoleOnly, scrollTabIntoView } from \"./utils.js\";\n\ndeclare module \"react\" {\n interface CSSProperties {\n \"--rmd-tab-width\"?: string;\n \"--rmd-tab-offset\"?: string | number;\n \"--rmd-tab-indicator-background\"?: string;\n }\n}\n\nconst TAB_WIDTH_VAR = \"--rmd-tab-width\";\nconst TAB_OFFSET_VAR = \"--rmd-tab-offset\";\n\nconst noop = (): void => {\n // do nothing\n};\n\nexport type TabWidthVar = typeof TAB_WIDTH_VAR;\nexport type TabOffsetVar = typeof TAB_OFFSET_VAR;\n\nexport type IndicatorCSSProperties = CSSProperties &\n Record<TabWidthVar | TabOffsetVar, string>;\n\nexport interface TabListHookOptions {\n ref: Ref<HTMLDivElement> | undefined;\n style: CSSProperties | undefined;\n activeIndex: number;\n setActiveIndex(nextActiveIndex: number): void;\n scrollButtons: boolean;\n activationMode: \"manual\" | \"automatic\";\n vertical: boolean;\n onClick: MouseEventHandler<HTMLDivElement> | undefined;\n onFocus: FocusEventHandler<HTMLDivElement> | undefined;\n onKeyDown: KeyboardEventHandler<HTMLDivElement> | undefined;\n disableTransition: boolean;\n}\n\nexport interface TabListHookReturnValue {\n elementProps: KeyboardMovementProps<HTMLDivElement> & {\n \"aria-orientation\": \"horizontal\" | \"vertical\";\n style: CSSProperties;\n ref: Ref<HTMLDivElement>;\n onClick: MouseEventHandler<HTMLDivElement>;\n };\n movementContext: KeyboardMovementContext;\n backwardProps: {\n ref: RefObject<HTMLDivElement>;\n type: \"back\";\n vertical: boolean;\n };\n forwardProps: {\n ref: RefObject<HTMLDivElement>;\n type: \"forward\";\n vertical: boolean;\n };\n}\n\n/**\n * @internal\n */\nexport function useTabList(\n options: TabListHookOptions\n): TabListHookReturnValue {\n const {\n ref: propRef,\n style,\n activeIndex,\n scrollButtons,\n onClick = noop,\n onFocus,\n onKeyDown,\n activationMode,\n vertical,\n setActiveIndex,\n disableTransition,\n } = options;\n\n const isRTL = useDir().dir === \"rtl\";\n\n const [indicatorStyles, setIndicatorStyles] =\n useState<IndicatorCSSProperties>(() => {\n const tabWidth = `${100 / 3}%`;\n return {\n [TAB_WIDTH_VAR]: tabWidth,\n [TAB_OFFSET_VAR]: \"0px\",\n };\n });\n\n const [nodeRef, ref] = useEnsuredRef(propRef);\n const tabListRef = useResizeObserver({\n ref,\n disabled: disableTransition,\n onUpdate: useCallback(\n (entry) => {\n // this is kind of hacky -- the styles should update when switching between\n // RTL, but the RTL state isn't required for any styles. Just reference it\n // so that the hooks eslint rule doesn't show a warning...\n isRTL;\n\n const activeTab = getTabRoleOnly(entry.target)[activeIndex];\n if (!activeTab) {\n return;\n }\n\n const cssVars: IndicatorCSSProperties = {\n [TAB_WIDTH_VAR]: `${activeTab.offsetWidth}px`,\n [TAB_OFFSET_VAR]: `${activeTab.offsetLeft}px`,\n };\n\n setIndicatorStyles((prevStyles) => {\n if (\n prevStyles &&\n prevStyles[TAB_WIDTH_VAR] === cssVars[TAB_WIDTH_VAR] &&\n prevStyles[TAB_OFFSET_VAR] === cssVars[TAB_OFFSET_VAR]\n ) {\n return prevStyles;\n }\n\n return cssVars;\n });\n },\n [activeIndex, isRTL]\n ),\n });\n const forwardRef = useRef<HTMLDivElement>(null);\n const backwardRef = useRef<HTMLDivElement>(null);\n const { movementProps, movementContext } = useKeyboardMovementProvider({\n onClick(event) {\n onClick(event);\n if (event.isPropagationStopped() || !(event.target instanceof Element)) {\n return;\n }\n\n const clickedTab = event.target.closest(\"[role='tab']\");\n const tabs = getTabRoleOnly(event.currentTarget);\n const i = tabs.findIndex((tab) => tab === clickedTab);\n if (i !== -1) {\n setActiveIndex(i);\n }\n },\n onFocus,\n onKeyDown,\n onFocusChange(event) {\n const { index } = event;\n if (activationMode === \"automatic\") {\n setActiveIndex(index);\n } else if (scrollButtons) {\n scrollTabIntoView({\n activeIndex: index,\n backward: backwardRef.current,\n container: nodeRef.current,\n forward: forwardRef.current,\n vertical,\n });\n }\n },\n loopable: true,\n searchable: true,\n horizontal: !vertical,\n includeDisabled: true,\n tabIndexBehavior: \"roving\",\n getFocusableElements: getTabRoleOnly,\n });\n\n useEffect(() => {\n scrollTabIntoView({\n activeIndex,\n backward: backwardRef.current,\n container: nodeRef.current,\n forward: forwardRef.current,\n vertical,\n });\n }, [activeIndex, nodeRef, vertical]);\n\n return {\n elementProps: {\n \"aria-orientation\": vertical ? \"vertical\" : \"horizontal\",\n ref: tabListRef,\n style: {\n ...style,\n ...(disableTransition ? undefined : indicatorStyles),\n },\n ...movementProps,\n },\n backwardProps: {\n ref: backwardRef,\n type: \"back\",\n vertical,\n },\n forwardProps: {\n ref: forwardRef,\n type: \"forward\",\n vertical,\n },\n movementContext,\n };\n}\n"],"names":["useCallback","useEffect","useRef","useState","useKeyboardMovementProvider","useDir","useEnsuredRef","useResizeObserver","getTabRoleOnly","scrollTabIntoView","TAB_WIDTH_VAR","TAB_OFFSET_VAR","noop","useTabList","options","ref","propRef","style","activeIndex","scrollButtons","onClick","onFocus","onKeyDown","activationMode","vertical","setActiveIndex","disableTransition","isRTL","dir","indicatorStyles","setIndicatorStyles","tabWidth","nodeRef","tabListRef","disabled","onUpdate","entry","activeTab","target","cssVars","offsetWidth","offsetLeft","prevStyles","forwardRef","backwardRef","movementProps","movementContext","event","isPropagationStopped","Element","clickedTab","closest","tabs","currentTarget","i","findIndex","tab","onFocusChange","index","backward","current","container","forward","loopable","searchable","horizontal","includeDisabled","tabIndexBehavior","getFocusableElements","elementProps","undefined","backwardProps","type","forwardProps"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/tabs/useTabList.ts"],"sourcesContent":["\"use client\";\nimport type {\n CSSProperties,\n FocusEventHandler,\n KeyboardEventHandler,\n MouseEventHandler,\n Ref,\n RefObject,\n} from \"react\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport type {\n KeyboardMovementContext,\n KeyboardMovementProps,\n} from \"../movement/types.js\";\nimport { useKeyboardMovementProvider } from \"../movement/useKeyboardMovementProvider.js\";\nimport { useDir } from \"../typography/WritingDirectionProvider.js\";\nimport { useEnsuredRef } from \"../useEnsuredRef.js\";\nimport { useResizeObserver } from \"../useResizeObserver.js\";\nimport { getTabRoleOnly, scrollTabIntoView } from \"./utils.js\";\n\ndeclare module \"react\" {\n interface CSSProperties {\n \"--rmd-tab-size\"?: string;\n \"--rmd-tab-offset\"?: string | number;\n \"--rmd-tab-indicator-background\"?: string;\n }\n}\n\nconst TAB_SIZE_VAR = \"--rmd-tab-size\";\nconst TAB_OFFSET_VAR = \"--rmd-tab-offset\";\n\nconst noop = (): void => {\n // do nothing\n};\n\nexport type TabWidthVar = typeof TAB_SIZE_VAR;\nexport type TabOffsetVar = typeof TAB_OFFSET_VAR;\n\nexport type IndicatorCSSProperties = CSSProperties &\n Record<TabWidthVar | TabOffsetVar, string>;\n\nexport interface TabListHookOptions {\n ref: Ref<HTMLDivElement> | undefined;\n style: CSSProperties | undefined;\n activeIndex: number;\n setActiveIndex(nextActiveIndex: number): void;\n scrollButtons: boolean;\n activationMode: \"manual\" | \"automatic\";\n vertical: boolean;\n onClick: MouseEventHandler<HTMLDivElement> | undefined;\n onFocus: FocusEventHandler<HTMLDivElement> | undefined;\n onKeyDown: KeyboardEventHandler<HTMLDivElement> | undefined;\n disableTransition: boolean;\n}\n\nexport interface TabListHookReturnValue {\n elementProps: KeyboardMovementProps<HTMLDivElement> & {\n \"aria-orientation\": \"horizontal\" | \"vertical\";\n style: CSSProperties;\n ref: Ref<HTMLDivElement>;\n onClick: MouseEventHandler<HTMLDivElement>;\n };\n movementContext: KeyboardMovementContext;\n backwardProps: {\n ref: RefObject<HTMLDivElement>;\n type: \"back\";\n vertical: boolean;\n };\n forwardProps: {\n ref: RefObject<HTMLDivElement>;\n type: \"forward\";\n vertical: boolean;\n };\n}\n\n/**\n * @internal\n */\nexport function useTabList(\n options: TabListHookOptions\n): TabListHookReturnValue {\n const {\n ref: propRef,\n style,\n activeIndex,\n scrollButtons,\n onClick = noop,\n onFocus,\n onKeyDown,\n activationMode,\n vertical,\n setActiveIndex,\n disableTransition,\n } = options;\n\n const isRTL = useDir().dir === \"rtl\";\n\n const [indicatorStyles, setIndicatorStyles] =\n useState<IndicatorCSSProperties>(() => {\n const tabWidth = `${100 / 3}%`;\n return {\n [TAB_SIZE_VAR]: tabWidth,\n [TAB_OFFSET_VAR]: \"0px\",\n };\n });\n\n const [nodeRef, ref] = useEnsuredRef(propRef);\n const tabListRef = useResizeObserver({\n ref,\n disabled: disableTransition,\n onUpdate: useCallback(\n (entry) => {\n // this is kind of hacky -- the styles should update when switching between\n // RTL, but the RTL state isn't required for any styles. Just reference it\n // so that the hooks eslint rule doesn't show a warning...\n isRTL;\n\n const activeTab = getTabRoleOnly(entry.target)[activeIndex];\n if (!activeTab) {\n return;\n }\n\n const size = vertical ? activeTab.offsetHeight : activeTab.offsetWidth;\n const offset = vertical ? activeTab.offsetTop : activeTab.offsetLeft;\n const cssVars: IndicatorCSSProperties = {\n [TAB_SIZE_VAR]: `${size}px`,\n [TAB_OFFSET_VAR]: `${offset}px`,\n };\n\n setIndicatorStyles((prevStyles) => {\n if (\n prevStyles &&\n prevStyles[TAB_SIZE_VAR] === cssVars[TAB_SIZE_VAR] &&\n prevStyles[TAB_OFFSET_VAR] === cssVars[TAB_OFFSET_VAR]\n ) {\n return prevStyles;\n }\n\n return cssVars;\n });\n },\n [activeIndex, isRTL, vertical]\n ),\n });\n const forwardRef = useRef<HTMLDivElement>(null);\n const backwardRef = useRef<HTMLDivElement>(null);\n const { movementProps, movementContext } = useKeyboardMovementProvider({\n onClick(event) {\n onClick(event);\n if (event.isPropagationStopped() || !(event.target instanceof Element)) {\n return;\n }\n\n const clickedTab = event.target.closest(\"[role='tab']\");\n const tabs = getTabRoleOnly(event.currentTarget);\n const i = tabs.findIndex((tab) => tab === clickedTab);\n if (i !== -1) {\n setActiveIndex(i);\n }\n },\n onFocus,\n onKeyDown,\n onFocusChange(event) {\n const { index } = event;\n if (activationMode === \"automatic\") {\n setActiveIndex(index);\n } else if (scrollButtons) {\n scrollTabIntoView({\n activeIndex: index,\n backward: backwardRef.current,\n container: nodeRef.current,\n forward: forwardRef.current,\n vertical,\n });\n }\n },\n loopable: true,\n searchable: true,\n horizontal: !vertical,\n includeDisabled: true,\n tabIndexBehavior: \"roving\",\n getFocusableElements: getTabRoleOnly,\n });\n\n useEffect(() => {\n scrollTabIntoView({\n activeIndex,\n backward: backwardRef.current,\n container: nodeRef.current,\n forward: forwardRef.current,\n vertical,\n });\n }, [activeIndex, nodeRef, vertical]);\n\n return {\n elementProps: {\n \"aria-orientation\": vertical ? \"vertical\" : \"horizontal\",\n ref: tabListRef,\n style: {\n ...style,\n ...(disableTransition ? undefined : indicatorStyles),\n },\n ...movementProps,\n },\n backwardProps: {\n ref: backwardRef,\n type: \"back\",\n vertical,\n },\n forwardProps: {\n ref: forwardRef,\n type: \"forward\",\n vertical,\n },\n movementContext,\n };\n}\n"],"names":["useCallback","useEffect","useRef","useState","useKeyboardMovementProvider","useDir","useEnsuredRef","useResizeObserver","getTabRoleOnly","scrollTabIntoView","TAB_SIZE_VAR","TAB_OFFSET_VAR","noop","useTabList","options","ref","propRef","style","activeIndex","scrollButtons","onClick","onFocus","onKeyDown","activationMode","vertical","setActiveIndex","disableTransition","isRTL","dir","indicatorStyles","setIndicatorStyles","tabWidth","nodeRef","tabListRef","disabled","onUpdate","entry","activeTab","target","size","offsetHeight","offsetWidth","offset","offsetTop","offsetLeft","cssVars","prevStyles","forwardRef","backwardRef","movementProps","movementContext","event","isPropagationStopped","Element","clickedTab","closest","tabs","currentTarget","i","findIndex","tab","onFocusChange","index","backward","current","container","forward","loopable","searchable","horizontal","includeDisabled","tabIndexBehavior","getFocusableElements","elementProps","undefined","backwardProps","type","forwardProps"],"mappings":"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"}