reshaped 3.8.0-canary.2 → 3.8.0-canary.20

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 (303) hide show
  1. package/dist/bundle.css +1 -1
  2. package/dist/bundle.d.ts +2 -1
  3. package/dist/bundle.js +11 -11
  4. package/dist/components/Accordion/AccordionControlled.js +1 -0
  5. package/dist/components/Actionable/Actionable.js +17 -3
  6. package/dist/components/Actionable/Actionable.module.css +1 -1
  7. package/dist/components/Actionable/Actionable.types.d.ts +15 -3
  8. package/dist/components/Actionable/tests/Actionable.stories.d.ts +13 -1
  9. package/dist/components/Actionable/tests/Actionable.stories.js +127 -7
  10. package/dist/components/Alert/tests/Alert.stories.d.ts +6 -5
  11. package/dist/components/Alert/tests/Alert.stories.js +15 -2
  12. package/dist/components/Autocomplete/Autocomplete.js +2 -2
  13. package/dist/components/Autocomplete/Autocomplete.types.d.ts +1 -1
  14. package/dist/components/Badge/Badge.module.css +1 -1
  15. package/dist/components/Badge/tests/Badge.stories.d.ts +5 -0
  16. package/dist/components/Badge/tests/Badge.stories.js +34 -0
  17. package/dist/components/Breadcrumbs/Breadcrumbs.js +1 -0
  18. package/dist/components/Breadcrumbs/tests/Breadcrumbs.stories.d.ts +8 -4
  19. package/dist/components/Breadcrumbs/tests/Breadcrumbs.stories.js +57 -1
  20. package/dist/components/Button/Button.js +2 -2
  21. package/dist/components/Button/Button.module.css +1 -1
  22. package/dist/components/Button/Button.types.d.ts +1 -1
  23. package/dist/components/Button/tests/Button.stories.d.ts +54 -12
  24. package/dist/components/Button/tests/Button.stories.js +725 -588
  25. package/dist/components/Calendar/CalendarMonth.js +1 -0
  26. package/dist/components/Card/Card.d.ts +1 -1
  27. package/dist/components/Card/Card.module.css +1 -1
  28. package/dist/components/Card/tests/Card.stories.d.ts +29 -7
  29. package/dist/components/Card/tests/Card.stories.js +110 -65
  30. package/dist/components/Carousel/Carousel.js +1 -0
  31. package/dist/components/Carousel/Carousel.module.css +1 -1
  32. package/dist/components/Checkbox/Checkbox.module.css +1 -1
  33. package/dist/components/Checkbox/tests/Checkbox.stories.d.ts +20 -4
  34. package/dist/components/Checkbox/tests/Checkbox.stories.js +150 -79
  35. package/dist/components/CheckboxGroup/tests/CheckboxGroup.stories.d.ts +9 -2
  36. package/dist/components/CheckboxGroup/tests/CheckboxGroup.stories.js +67 -35
  37. package/dist/components/Container/tests/Container.stories.d.ts +2 -0
  38. package/dist/components/Container/tests/Container.stories.js +14 -0
  39. package/dist/components/ContextMenu/tests/ContextMenu.stories.d.ts +10 -1
  40. package/dist/components/ContextMenu/tests/ContextMenu.stories.js +57 -13
  41. package/dist/components/Dismissible/tests/Dismissible.stories.d.ts +5 -0
  42. package/dist/components/Dismissible/tests/Dismissible.stories.js +30 -1
  43. package/dist/components/Divider/tests/Divider.stories.d.ts +8 -3
  44. package/dist/components/Divider/tests/Divider.stories.js +71 -41
  45. package/dist/components/DropdownMenu/DropdownMenu.js +4 -4
  46. package/dist/components/DropdownMenu/DropdownMenu.types.d.ts +2 -2
  47. package/dist/components/DropdownMenu/tests/DropdownMenu.stories.d.ts +35 -6
  48. package/dist/components/DropdownMenu/tests/DropdownMenu.stories.js +222 -115
  49. package/dist/components/FileUpload/FileUpload.module.css +1 -1
  50. package/dist/components/Flyout/Flyout.module.css +1 -1
  51. package/dist/components/Flyout/Flyout.types.d.ts +7 -7
  52. package/dist/components/Flyout/FlyoutContent.js +4 -1
  53. package/dist/components/Flyout/FlyoutControlled.js +10 -3
  54. package/dist/components/Flyout/index.d.ts +1 -1
  55. package/dist/components/Flyout/tests/Flyout.stories.d.ts +8 -0
  56. package/dist/components/Flyout/tests/Flyout.stories.js +81 -33
  57. package/dist/components/Flyout/useFlyout.d.ts +1 -7
  58. package/dist/components/Flyout/useFlyout.js +5 -1
  59. package/dist/components/Flyout/utilities/calculatePosition.d.ts +3 -2
  60. package/dist/components/Flyout/utilities/calculatePosition.js +47 -22
  61. package/dist/components/Flyout/utilities/flyout.js +3 -2
  62. package/dist/components/Flyout/utilities/getPositionFallbacks.js +3 -3
  63. package/dist/components/Flyout/utilities/isFullyVisible.d.ts +0 -2
  64. package/dist/components/Flyout/utilities/isFullyVisible.js +5 -7
  65. package/dist/components/FormControl/FormControl.context.d.ts +1 -1
  66. package/dist/components/FormControl/tests/FormControl.stories.d.ts +2 -0
  67. package/dist/components/FormControl/tests/FormControl.stories.js +35 -0
  68. package/dist/components/Hidden/tests/Hidden.stories.d.ts +2 -0
  69. package/dist/components/Hidden/tests/Hidden.stories.js +9 -0
  70. package/dist/components/HiddenVisually/tests/HiddenVisually.stories.d.ts +2 -0
  71. package/dist/components/HiddenVisually/tests/HiddenVisually.stories.js +9 -0
  72. package/dist/components/Hotkey/tests/Hotkey.stories.d.ts +2 -0
  73. package/dist/components/Hotkey/tests/Hotkey.stories.js +15 -0
  74. package/dist/components/Icon/Icon.js +2 -2
  75. package/dist/components/Icon/Icon.types.d.ts +1 -1
  76. package/dist/components/Icon/tests/Icon.stories.d.ts +3 -0
  77. package/dist/components/Icon/tests/Icon.stories.js +29 -1
  78. package/dist/components/Link/Link.d.ts +1 -1
  79. package/dist/components/Link/Link.js +2 -2
  80. package/dist/components/Link/Link.types.d.ts +1 -1
  81. package/dist/components/Link/tests/Link.stories.d.ts +29 -6
  82. package/dist/components/Link/tests/Link.stories.js +141 -58
  83. package/dist/components/Loader/tests/Loader.stories.d.ts +11 -2
  84. package/dist/components/Loader/tests/Loader.stories.js +52 -25
  85. package/dist/components/MenuItem/MenuItem.js +2 -2
  86. package/dist/components/MenuItem/MenuItem.module.css +1 -1
  87. package/dist/components/MenuItem/MenuItem.types.d.ts +1 -1
  88. package/dist/components/MenuItem/tests/MenuItem.stories.d.ts +37 -7
  89. package/dist/components/MenuItem/tests/MenuItem.stories.js +218 -112
  90. package/dist/components/Modal/Modal.js +1 -1
  91. package/dist/components/Modal/Modal.module.css +1 -1
  92. package/dist/components/Modal/tests/Modal.stories.d.ts +49 -10
  93. package/dist/components/Modal/tests/Modal.stories.js +350 -210
  94. package/dist/components/Overlay/Overlay.js +2 -1
  95. package/dist/components/Overlay/tests/Overlay.stories.d.ts +15 -1
  96. package/dist/components/Overlay/tests/Overlay.stories.js +135 -1
  97. package/dist/components/Pagination/tests/Pagination.stories.d.ts +14 -1
  98. package/dist/components/Pagination/tests/Pagination.stories.js +93 -15
  99. package/dist/components/PinField/tests/PinField.stories.d.ts +1 -1
  100. package/dist/components/PinField/tests/PinField.stories.js +1 -1
  101. package/dist/components/Popover/Popover.js +2 -2
  102. package/dist/components/Popover/Popover.module.css +1 -1
  103. package/dist/components/Popover/Popover.types.d.ts +3 -1
  104. package/dist/components/Progress/tests/Progress.stories.d.ts +19 -4
  105. package/dist/components/Progress/tests/Progress.stories.js +85 -49
  106. package/dist/components/Radio/Radio.module.css +1 -1
  107. package/dist/components/Radio/tests/Radio.stories.d.ts +25 -4
  108. package/dist/components/Radio/tests/Radio.stories.js +147 -65
  109. package/dist/components/RadioGroup/tests/RadioGroup.stories.d.ts +9 -2
  110. package/dist/components/RadioGroup/tests/RadioGroup.stories.js +64 -38
  111. package/dist/components/Reshaped/Reshaped.css +1 -1
  112. package/dist/components/Scrim/tests/Scrim.stories.d.ts +10 -2
  113. package/dist/components/Scrim/tests/Scrim.stories.js +51 -31
  114. package/dist/components/ScrollArea/ScrollArea.module.css +1 -1
  115. package/dist/components/Select/Select.d.ts +8 -1
  116. package/dist/components/Select/Select.js +22 -48
  117. package/dist/components/Select/Select.module.css +1 -1
  118. package/dist/components/Select/Select.types.d.ts +83 -38
  119. package/dist/components/Select/SelectCustom.d.ts +3 -0
  120. package/dist/components/Select/SelectCustom.js +12 -0
  121. package/dist/components/Select/SelectCustomControlled.d.ts +4 -0
  122. package/dist/components/Select/SelectCustomControlled.js +105 -0
  123. package/dist/components/Select/SelectCustomUncontrolled.d.ts +4 -0
  124. package/dist/components/Select/SelectCustomUncontrolled.js +18 -0
  125. package/dist/components/Select/SelectEndContent.d.ts +3 -0
  126. package/dist/components/Select/SelectEndContent.js +12 -0
  127. package/dist/components/Select/SelectNative.d.ts +4 -0
  128. package/dist/components/Select/SelectNative.js +29 -0
  129. package/dist/components/Select/SelectOption.d.ts +4 -0
  130. package/dist/components/Select/SelectOption.js +13 -0
  131. package/dist/components/Select/SelectOptionGroup.d.ts +4 -0
  132. package/dist/components/Select/SelectOptionGroup.js +9 -0
  133. package/dist/components/Select/SelectRoot.d.ts +4 -0
  134. package/dist/components/Select/SelectRoot.js +21 -0
  135. package/dist/components/Select/SelectStartContent.d.ts +3 -0
  136. package/dist/components/Select/SelectStartContent.js +20 -0
  137. package/dist/components/Select/SelectTrigger.d.ts +4 -0
  138. package/dist/components/Select/SelectTrigger.js +16 -0
  139. package/dist/components/Select/tests/Select.stories.d.ts +38 -10
  140. package/dist/components/Select/tests/Select.stories.js +504 -175
  141. package/dist/components/Skeleton/tests/Skeleton.stories.d.ts +10 -2
  142. package/dist/components/Skeleton/tests/Skeleton.stories.js +46 -28
  143. package/dist/components/Slider/Slider.module.css +1 -1
  144. package/dist/components/Stepper/Stepper.js +2 -2
  145. package/dist/components/Stepper/Stepper.types.d.ts +2 -0
  146. package/dist/components/Stepper/tests/Stepper.stories.d.ts +18 -3
  147. package/dist/components/Stepper/tests/Stepper.stories.js +99 -47
  148. package/dist/components/Switch/Switch.module.css +1 -1
  149. package/dist/components/Switch/tests/Switch.stories.d.ts +10 -2
  150. package/dist/components/Switch/tests/Switch.stories.js +77 -23
  151. package/dist/components/Switch/tests/Switch.test.stories.d.ts +0 -10
  152. package/dist/components/Switch/tests/Switch.test.stories.js +0 -68
  153. package/dist/components/Table/Table.js +5 -3
  154. package/dist/components/Table/Table.module.css +1 -1
  155. package/dist/components/Table/tests/Table.stories.d.ts +25 -5
  156. package/dist/components/Table/tests/Table.stories.js +274 -177
  157. package/dist/components/Tabs/Tabs.module.css +1 -1
  158. package/dist/components/Tabs/TabsControlled.js +1 -0
  159. package/dist/components/Tabs/TabsList.js +3 -20
  160. package/dist/components/Text/Text.module.css +1 -1
  161. package/dist/components/TextArea/TextArea.module.css +1 -1
  162. package/dist/components/TextArea/tests/TextArea.stories.d.ts +41 -9
  163. package/dist/components/TextArea/tests/TextArea.stories.js +179 -93
  164. package/dist/components/TextField/TextField.js +11 -3
  165. package/dist/components/TextField/TextField.module.css +1 -1
  166. package/dist/components/TextField/TextField.types.d.ts +5 -1
  167. package/dist/components/TextField/tests/TextField.stories.d.ts +41 -11
  168. package/dist/components/TextField/tests/TextField.stories.js +209 -129
  169. package/dist/components/Theme/Theme.module.css +1 -1
  170. package/dist/components/Timeline/Timeline.js +2 -2
  171. package/dist/components/Timeline/tests/Timeline.stories.d.ts +10 -2
  172. package/dist/components/Timeline/tests/Timeline.stories.js +69 -45
  173. package/dist/components/Toast/ToastContainer.js +1 -0
  174. package/dist/components/Toast/ToastRegion.js +1 -0
  175. package/dist/components/Toast/tests/Toast.stories.d.ts +32 -8
  176. package/dist/components/Toast/tests/Toast.stories.js +111 -37
  177. package/dist/components/ToggleButton/ToggleButton.types.d.ts +5 -1
  178. package/dist/components/ToggleButton/ToggleButtonControlled.js +9 -2
  179. package/dist/components/ToggleButton/tests/ToggleButton.stories.d.ts +4 -0
  180. package/dist/components/ToggleButton/tests/ToggleButton.stories.js +10 -0
  181. package/dist/components/ToggleButtonGroup/ToggleButtonGroup.types.d.ts +10 -0
  182. package/dist/components/ToggleButtonGroup/ToggleButtonGroupControlled.js +6 -41
  183. package/dist/components/ToggleButtonGroup/tests/ToggleButtonGroup.stories.d.ts +1 -0
  184. package/dist/components/ToggleButtonGroup/tests/ToggleButtonGroup.stories.js +17 -0
  185. package/dist/components/Tooltip/Tooltip.js +1 -1
  186. package/dist/components/Tooltip/Tooltip.types.d.ts +2 -2
  187. package/dist/components/Tooltip/tests/Tooltip.stories.d.ts +18 -4
  188. package/dist/components/Tooltip/tests/Tooltip.stories.js +139 -107
  189. package/dist/components/View/View.js +11 -4
  190. package/dist/components/View/View.types.d.ts +1 -1
  191. package/dist/components/View/tests/View.stories.d.ts +4 -0
  192. package/dist/components/View/tests/View.stories.js +39 -0
  193. package/dist/components/_private/Expandable/Expandable.js +3 -1
  194. package/dist/components/_private/Portal/Portal.js +4 -1
  195. package/dist/hooks/_private/useIsDismissible.d.ts +1 -0
  196. package/dist/hooks/_private/useIsDismissible.js +6 -6
  197. package/dist/hooks/_private/usePrevious.js +1 -0
  198. package/dist/hooks/tests/useDrag.stories.js +1 -1
  199. package/dist/{components/Toast/tests/Toast.test.stories.d.ts → hooks/tests/useKeyboardArrowNavigation.stories.d.ts} +4 -5
  200. package/dist/hooks/tests/useKeyboardArrowNavigation.stories.js +128 -0
  201. package/dist/hooks/useKeyboardArrowNavigation.d.ts +9 -0
  202. package/dist/hooks/useKeyboardArrowNavigation.js +62 -0
  203. package/dist/hooks/useOnClickOutside.js +0 -2
  204. package/dist/hooks/useScrollLock.js +5 -3
  205. package/dist/index.d.ts +2 -1
  206. package/dist/index.js +1 -0
  207. package/dist/styles/resolvers/align/align.css +1 -1
  208. package/dist/styles/resolvers/aspectRatio/aspectRatio.css +1 -1
  209. package/dist/styles/resolvers/bleed/bleed.module.css +1 -1
  210. package/dist/styles/resolvers/justify/justify.css +1 -1
  211. package/dist/styles/resolvers/maxHeight/maxHeight.module.css +1 -1
  212. package/dist/styles/resolvers/maxWidth/maxWidth.module.css +1 -1
  213. package/dist/styles/resolvers/minHeight/minHeight.module.css +1 -1
  214. package/dist/styles/resolvers/minWidth/minWidth.module.css +1 -1
  215. package/dist/styles/resolvers/position/position.css +1 -1
  216. package/dist/styles/resolvers/textAlign/textAlign.css +1 -1
  217. package/dist/styles/resolvers/width/width.module.css +1 -1
  218. package/dist/utilities/a11y/focus.d.ts +21 -4
  219. package/dist/utilities/a11y/focus.js +4 -3
  220. package/dist/utilities/scroll/disable.js +2 -2
  221. package/dist/utilities/scroll/index.d.ts +1 -1
  222. package/dist/utilities/scroll/index.js +1 -1
  223. package/dist/utilities/scroll/lock.d.ts +1 -2
  224. package/dist/utilities/scroll/lock.js +16 -15
  225. package/dist/utilities/scroll/lockSafari.js +1 -0
  226. package/package.json +195 -201
  227. package/CHANGELOG-extra.md +0 -3
  228. package/CHANGELOG.md +0 -57
  229. package/dist/components/Actionable/tests/Actionable.test.stories.d.ts +0 -32
  230. package/dist/components/Actionable/tests/Actionable.test.stories.js +0 -130
  231. package/dist/components/Alert/tests/Alert.test.stories.d.ts +0 -15
  232. package/dist/components/Alert/tests/Alert.test.stories.js +0 -26
  233. package/dist/components/Badge/tests/Badge.test.stories.d.ts +0 -20
  234. package/dist/components/Badge/tests/Badge.test.stories.js +0 -46
  235. package/dist/components/Breadcrumbs/tests/Breadcrumbs.test.stories.d.ts +0 -23
  236. package/dist/components/Breadcrumbs/tests/Breadcrumbs.test.stories.js +0 -76
  237. package/dist/components/Button/tests/Button.test.stories.d.ts +0 -27
  238. package/dist/components/Button/tests/Button.test.stories.js +0 -112
  239. package/dist/components/Card/tests/Card.test.stories.d.ts +0 -35
  240. package/dist/components/Card/tests/Card.test.stories.js +0 -54
  241. package/dist/components/Checkbox/tests/Checkbox.test.stories.d.ts +0 -25
  242. package/dist/components/Checkbox/tests/Checkbox.test.stories.js +0 -104
  243. package/dist/components/CheckboxGroup/tests/CheckboxGroup.test.stories.d.ts +0 -22
  244. package/dist/components/CheckboxGroup/tests/CheckboxGroup.test.stories.js +0 -78
  245. package/dist/components/Container/tests/Container.test.stories.d.ts +0 -15
  246. package/dist/components/Container/tests/Container.test.stories.js +0 -26
  247. package/dist/components/ContextMenu/tests/ContextMenu.test.stories.d.ts +0 -25
  248. package/dist/components/ContextMenu/tests/ContextMenu.test.stories.js +0 -53
  249. package/dist/components/Dismissible/tests/Dismissible.test.stories.d.ts +0 -19
  250. package/dist/components/Dismissible/tests/Dismissible.test.stories.js +0 -42
  251. package/dist/components/Divider/tests/Divider.test.stories.d.ts +0 -18
  252. package/dist/components/Divider/tests/Divider.test.stories.js +0 -47
  253. package/dist/components/DropdownMenu/tests/DropdownMenu.test.stories.d.ts +0 -36
  254. package/dist/components/DropdownMenu/tests/DropdownMenu.test.stories.js +0 -117
  255. package/dist/components/FormControl/tests/FormControl.test.stories.d.ts +0 -20
  256. package/dist/components/FormControl/tests/FormControl.test.stories.js +0 -49
  257. package/dist/components/Hidden/tests/Hidden.test.stories.d.ts +0 -15
  258. package/dist/components/Hidden/tests/Hidden.test.stories.js +0 -20
  259. package/dist/components/HiddenVisually/tests/HiddenVisually.test.stories.d.ts +0 -15
  260. package/dist/components/HiddenVisually/tests/HiddenVisually.test.stories.js +0 -20
  261. package/dist/components/Hotkey/tests/Hotkey.test.stories.d.ts +0 -15
  262. package/dist/components/Hotkey/tests/Hotkey.test.stories.js +0 -26
  263. package/dist/components/Icon/tests/Icon.test.stories.d.ts +0 -16
  264. package/dist/components/Icon/tests/Icon.test.stories.js +0 -35
  265. package/dist/components/Link/tests/Link.test.stories.d.ts +0 -29
  266. package/dist/components/Link/tests/Link.test.stories.js +0 -87
  267. package/dist/components/Loader/tests/Loader.test.stories.d.ts +0 -16
  268. package/dist/components/Loader/tests/Loader.test.stories.js +0 -32
  269. package/dist/components/MenuItem/tests/MenuItem.test.stories.d.ts +0 -26
  270. package/dist/components/MenuItem/tests/MenuItem.test.stories.js +0 -100
  271. package/dist/components/Modal/tests/Modal.test.stories.d.ts +0 -31
  272. package/dist/components/Modal/tests/Modal.test.stories.js +0 -149
  273. package/dist/components/Overlay/tests/Overlay.test.stories.d.ts +0 -28
  274. package/dist/components/Overlay/tests/Overlay.test.stories.js +0 -148
  275. package/dist/components/Pagination/tests/Pagination.test.stories.d.ts +0 -23
  276. package/dist/components/Pagination/tests/Pagination.test.stories.js +0 -86
  277. package/dist/components/Progress/tests/Progress.test.stories.d.ts +0 -16
  278. package/dist/components/Progress/tests/Progress.test.stories.js +0 -35
  279. package/dist/components/Radio/tests/Radio.test.stories.d.ts +0 -30
  280. package/dist/components/Radio/tests/Radio.test.stories.js +0 -118
  281. package/dist/components/RadioGroup/tests/RadioGroup.test.stories.d.ts +0 -22
  282. package/dist/components/RadioGroup/tests/RadioGroup.test.stories.js +0 -78
  283. package/dist/components/Scrim/tests/Scrim.test.stories.d.ts +0 -15
  284. package/dist/components/Scrim/tests/Scrim.test.stories.js +0 -25
  285. package/dist/components/Select/tests/Select.test.stories.d.ts +0 -27
  286. package/dist/components/Select/tests/Select.test.stories.js +0 -132
  287. package/dist/components/Skeleton/tests/Skeleton.test.stories.d.ts +0 -15
  288. package/dist/components/Skeleton/tests/Skeleton.test.stories.js +0 -23
  289. package/dist/components/Stepper/tests/Stepper.test.stories.d.ts +0 -20
  290. package/dist/components/Stepper/tests/Stepper.test.stories.js +0 -28
  291. package/dist/components/Table/tests/Table.test.stories.d.ts +0 -24
  292. package/dist/components/Table/tests/Table.test.stories.js +0 -93
  293. package/dist/components/TextArea/tests/TextArea.test.stories.d.ts +0 -28
  294. package/dist/components/TextArea/tests/TextArea.test.stories.js +0 -99
  295. package/dist/components/TextField/tests/TextField.test.stories.d.ts +0 -28
  296. package/dist/components/TextField/tests/TextField.test.stories.js +0 -99
  297. package/dist/components/Timeline/tests/Timeline.test.stories.d.ts +0 -17
  298. package/dist/components/Timeline/tests/Timeline.test.stories.js +0 -32
  299. package/dist/components/Toast/tests/Toast.test.stories.js +0 -101
  300. package/dist/components/Tooltip/tests/Tooltip.test.stories.d.ts +0 -19
  301. package/dist/components/Tooltip/tests/Tooltip.test.stories.js +0 -40
  302. package/dist/components/View/tests/View.test.stories.d.ts +0 -24
  303. package/dist/components/View/tests/View.test.stories.js +0 -50
@@ -1,4 +1,5 @@
1
1
  import React from "react";
2
+ import { StoryObj } from "@storybook/react-vite";
2
3
  declare const _default: {
3
4
  title: string;
4
5
  component: React.FC<import("./..").TableProps> & {
@@ -15,8 +16,27 @@ declare const _default: {
15
16
  };
16
17
  };
17
18
  export default _default;
18
- export declare const layout: () => React.JSX.Element;
19
- export declare const border: () => React.JSX.Element;
20
- export declare const rows: () => React.JSX.Element;
21
- export declare const edgeCases: () => React.JSX.Element;
22
- export declare const examples: () => React.JSX.Element;
19
+ export declare const layout: {
20
+ name: string;
21
+ render: () => React.JSX.Element;
22
+ };
23
+ export declare const border: {
24
+ name: string;
25
+ render: () => React.JSX.Element;
26
+ };
27
+ export declare const rows: {
28
+ name: string;
29
+ render: () => React.JSX.Element;
30
+ };
31
+ export declare const render: StoryObj;
32
+ export declare const tbody: StoryObj;
33
+ export declare const tabIndex: StoryObj;
34
+ export declare const className: StoryObj;
35
+ export declare const edgeCases: {
36
+ name: string;
37
+ render: () => React.JSX.Element;
38
+ };
39
+ export declare const examples: {
40
+ name: string;
41
+ render: () => React.JSX.Element;
42
+ };
@@ -4,6 +4,7 @@ import Table from "../index.js";
4
4
  import Checkbox from "../../Checkbox/index.js";
5
5
  import Card from "../../Card/index.js";
6
6
  import View from "../../View/index.js";
7
+ import { expect } from "storybook/test";
7
8
  export default {
8
9
  title: "Components/Table",
9
10
  component: Table,
@@ -13,201 +14,294 @@ export default {
13
14
  },
14
15
  },
15
16
  };
16
- export const layout = () => (<Example>
17
- <Example.Item title="base">
18
- <Table>
19
- <Table.Head>
17
+ export const layout = {
18
+ name: "base",
19
+ render: () => (<Example>
20
+ <Example.Item title="base">
21
+ <Table>
22
+ <Table.Head>
23
+ <Table.Row>
24
+ <Table.Heading>Column 1</Table.Heading>
25
+ <Table.Heading>Column 2</Table.Heading>
26
+ </Table.Row>
27
+ </Table.Head>
28
+ <Table.Body>
29
+ <Table.Row>
30
+ <Table.Cell>Cell 1</Table.Cell>
31
+ <Table.Cell>Cell 2</Table.Cell>
32
+ </Table.Row>
33
+ </Table.Body>
34
+ </Table>
35
+ </Example.Item>
36
+ <Example.Item title="colspan: 2 for col 2, rowspan: 2 for cell 3">
37
+ <Table>
20
38
  <Table.Row>
21
39
  <Table.Heading>Column 1</Table.Heading>
22
- <Table.Heading>Column 2</Table.Heading>
40
+ <Table.Heading colSpan={2}>Column 2</Table.Heading>
23
41
  </Table.Row>
24
- </Table.Head>
25
- <Table.Body>
26
42
  <Table.Row>
27
43
  <Table.Cell>Cell 1</Table.Cell>
28
44
  <Table.Cell>Cell 2</Table.Cell>
45
+ <Table.Cell rowSpan={2}>Cell 3</Table.Cell>
29
46
  </Table.Row>
30
- </Table.Body>
31
- </Table>
32
- </Example.Item>
33
- <Example.Item title="colspan: 2 for col 2, rowspan: 2 for cell 3">
34
- <Table>
35
- <Table.Row>
36
- <Table.Heading>Column 1</Table.Heading>
37
- <Table.Heading colSpan={2}>Column 2</Table.Heading>
38
- </Table.Row>
39
- <Table.Row>
40
- <Table.Cell>Cell 1</Table.Cell>
41
- <Table.Cell>Cell 2</Table.Cell>
42
- <Table.Cell rowSpan={2}>Cell 3</Table.Cell>
43
- </Table.Row>
44
- <Table.Row>
45
- <Table.Cell>Cell 1</Table.Cell>
46
- <Table.Cell>Cell 2</Table.Cell>
47
- </Table.Row>
48
- </Table>
49
- </Example.Item>
50
- <Example.Item title="align: center for heading 1, align: end for heading 2">
51
- <Table>
52
- <Table.Row>
53
- <Table.Heading align="center">Column 1</Table.Heading>
54
- <Table.Heading align="end">Column 2</Table.Heading>
55
- </Table.Row>
56
- <Table.Row>
57
- <Table.Cell>Cell 1</Table.Cell>
58
- <Table.Cell>Cell 2</Table.Cell>
59
- </Table.Row>
60
- </Table>
61
- </Example.Item>
62
- <Example.Item title="valign: center for cell 2, valign: end for cell 3">
63
- <Table>
64
- <Table.Row>
65
- <Table.Heading>Column 1</Table.Heading>
66
- <Table.Heading>Column 2</Table.Heading>
67
- <Table.Heading>Column 2</Table.Heading>
68
- </Table.Row>
69
- <Table.Row>
70
- <Table.Cell>
71
- <View height={15} backgroundColor="neutral-faded"/>
72
- </Table.Cell>
73
- <Table.Cell verticalAlign="center">Cell 2</Table.Cell>
74
- <Table.Cell verticalAlign="end">Cell 3</Table.Cell>
75
- </Table.Row>
76
- </Table>
77
- </Example.Item>
78
- <Example.Item title="width: 40%, minWidth: 200px for col 1">
79
- <Table>
80
- <Table.Row>
81
- <Table.Heading width="40%" minWidth="200px">
82
- Column 1
83
- </Table.Heading>
84
- <Table.Heading>Column 2</Table.Heading>
85
- </Table.Row>
86
- <Table.Row>
87
- <Table.Cell>Cell 1</Table.Cell>
88
- <Table.Cell>Cell 2</Table.Cell>
89
- </Table.Row>
90
- </Table>
91
- </Example.Item>
92
- </Example>);
93
- export const border = () => (<Example>
94
- <Example.Item title="border: true">
95
- <Table border>
96
- <Table.Row>
97
- <Table.Heading>Column 1</Table.Heading>
98
- <Table.Heading>Column 2</Table.Heading>
99
- </Table.Row>
100
- <Table.Row>
101
- <Table.Cell>Cell 1</Table.Cell>
102
- <Table.Cell>Cell 2</Table.Cell>
103
- </Table.Row>
104
- </Table>
105
- </Example.Item>
106
- <Example.Item title="columnBorder: true">
107
- <Table columnBorder>
108
- <Table.Row>
109
- <Table.Heading>Column 1</Table.Heading>
110
- <Table.Heading>Column 2</Table.Heading>
111
- </Table.Row>
112
- <Table.Row>
113
- <Table.Cell>Cell 1</Table.Cell>
114
- <Table.Cell>Cell 2</Table.Cell>
115
- </Table.Row>
116
- </Table>
117
- </Example.Item>
118
- <Example.Item title="columnBorder: true, border: true">
119
- <Table columnBorder border>
120
- <Table.Row>
121
- <Table.Heading>Column 1</Table.Heading>
122
- <Table.Heading>Column 2</Table.Heading>
123
- </Table.Row>
124
- <Table.Row>
125
- <Table.Cell>Cell 1</Table.Cell>
126
- <Table.Cell>Cell 2</Table.Cell>
127
- </Table.Row>
128
- </Table>
129
- </Example.Item>
130
- </Example>);
131
- export const rows = () => (<Example>
132
- <Example.Item title="highlighted for row 2">
133
- <Table>
134
- <Table.Row>
135
- <Table.Heading>Column 1</Table.Heading>
136
- <Table.Heading>Column 2</Table.Heading>
137
- </Table.Row>
138
- <Table.Row highlighted>
139
- <Table.Cell>Cell 1</Table.Cell>
140
- <Table.Cell>Cell 2</Table.Cell>
141
- </Table.Row>
142
- </Table>
143
- </Example.Item>
144
- <Example.Item title="clickable row 2, focus ring">
145
- <Table>
146
- <Table.Row>
147
- <Table.Heading>Column 1</Table.Heading>
148
- <Table.Heading>Column 2</Table.Heading>
149
- </Table.Row>
150
- <Table.Row onClick={() => { }}>
151
- <Table.Cell>Cell 1</Table.Cell>
152
- <Table.Cell>Cell 2</Table.Cell>
153
- </Table.Row>
154
- </Table>
155
- </Example.Item>
156
- </Example>);
157
- export const edgeCases = () => (<Example>
158
- <Example.Item title="scroll fade">
159
- <Table>
160
- <Table.Row>
161
- <Table.Heading width="500px">Column 1</Table.Heading>
162
- <Table.Heading width="500px">Column 2</Table.Heading>
163
- </Table.Row>
164
- <Table.Row>
165
- <Table.Cell>Cell 1</Table.Cell>
166
- <Table.Cell>Cell 2</Table.Cell>
167
- </Table.Row>
168
- </Table>
169
- </Example.Item>
170
- <Example.Item title="card with highlighted heading">
171
- <Card elevated padding={0}>
47
+ <Table.Row>
48
+ <Table.Cell>Cell 1</Table.Cell>
49
+ <Table.Cell>Cell 2</Table.Cell>
50
+ </Table.Row>
51
+ </Table>
52
+ </Example.Item>
53
+ <Example.Item title="align: center for heading 1, align: end for heading 2">
172
54
  <Table>
173
- <Table.Row highlighted>
174
- <Table.Heading width="50%" minWidth="200px">
55
+ <Table.Row>
56
+ <Table.Heading align="center">Column 1</Table.Heading>
57
+ <Table.Heading align="end">Column 2</Table.Heading>
58
+ </Table.Row>
59
+ <Table.Row>
60
+ <Table.Cell>Cell 1</Table.Cell>
61
+ <Table.Cell>Cell 2</Table.Cell>
62
+ </Table.Row>
63
+ </Table>
64
+ </Example.Item>
65
+ <Example.Item title="valign: center for cell 2, valign: end for cell 3">
66
+ <Table>
67
+ <Table.Row>
68
+ <Table.Heading>Column 1</Table.Heading>
69
+ <Table.Heading>Column 2</Table.Heading>
70
+ <Table.Heading>Column 2</Table.Heading>
71
+ </Table.Row>
72
+ <Table.Row>
73
+ <Table.Cell>
74
+ <View height={15} backgroundColor="neutral-faded"/>
75
+ </Table.Cell>
76
+ <Table.Cell verticalAlign="center">Cell 2</Table.Cell>
77
+ <Table.Cell verticalAlign="end">Cell 3</Table.Cell>
78
+ </Table.Row>
79
+ </Table>
80
+ </Example.Item>
81
+ <Example.Item title="width: 40%, minWidth: 200px for col 1">
82
+ <Table>
83
+ <Table.Row>
84
+ <Table.Heading width="40%" minWidth="200px">
175
85
  Column 1
176
86
  </Table.Heading>
177
- <Table.Heading colSpan={2} align="end">
178
- Column 2
179
- </Table.Heading>
87
+ <Table.Heading>Column 2</Table.Heading>
180
88
  </Table.Row>
181
89
  <Table.Row>
182
90
  <Table.Cell>Cell 1</Table.Cell>
183
- <Table.Cell align="center">Cell 2</Table.Cell>
184
- <Table.Cell align="end">Cell 3</Table.Cell>
91
+ <Table.Cell>Cell 2</Table.Cell>
92
+ </Table.Row>
93
+ </Table>
94
+ </Example.Item>
95
+ </Example>),
96
+ };
97
+ export const border = {
98
+ name: "border",
99
+ render: () => (<Example>
100
+ <Example.Item title="border: true">
101
+ <Table border>
102
+ <Table.Row>
103
+ <Table.Heading>Column 1</Table.Heading>
104
+ <Table.Heading>Column 2</Table.Heading>
185
105
  </Table.Row>
186
106
  <Table.Row>
187
107
  <Table.Cell>Cell 1</Table.Cell>
188
- <Table.Cell align="center">Cell 2</Table.Cell>
189
- <Table.Cell align="end">Cell 3</Table.Cell>
108
+ <Table.Cell>Cell 2</Table.Cell>
109
+ </Table.Row>
110
+ </Table>
111
+ </Example.Item>
112
+ <Example.Item title="columnBorder: true">
113
+ <Table columnBorder>
114
+ <Table.Row>
115
+ <Table.Heading>Column 1</Table.Heading>
116
+ <Table.Heading>Column 2</Table.Heading>
117
+ </Table.Row>
118
+ <Table.Row>
119
+ <Table.Cell>Cell 1</Table.Cell>
120
+ <Table.Cell>Cell 2</Table.Cell>
121
+ </Table.Row>
122
+ </Table>
123
+ </Example.Item>
124
+ <Example.Item title="columnBorder: true, border: true">
125
+ <Table columnBorder border>
126
+ <Table.Row>
127
+ <Table.Heading>Column 1</Table.Heading>
128
+ <Table.Heading>Column 2</Table.Heading>
129
+ </Table.Row>
130
+ <Table.Row>
131
+ <Table.Cell>Cell 1</Table.Cell>
132
+ <Table.Cell>Cell 2</Table.Cell>
133
+ </Table.Row>
134
+ </Table>
135
+ </Example.Item>
136
+ </Example>),
137
+ };
138
+ export const rows = {
139
+ name: "rows",
140
+ render: () => (<Example>
141
+ <Example.Item title="highlighted for row 2">
142
+ <Table>
143
+ <Table.Row>
144
+ <Table.Heading>Column 1</Table.Heading>
145
+ <Table.Heading>Column 2</Table.Heading>
146
+ </Table.Row>
147
+ <Table.Row highlighted>
148
+ <Table.Cell>Cell 1</Table.Cell>
149
+ <Table.Cell>Cell 2</Table.Cell>
190
150
  </Table.Row>
191
151
  </Table>
192
- </Card>
193
- </Example.Item>
194
- <Example.Item title="width: auto, nowrap">
195
- <Table>
152
+ </Example.Item>
153
+ <Example.Item title="clickable row 2, focus ring">
154
+ <Table>
155
+ <Table.Row>
156
+ <Table.Heading>Column 1</Table.Heading>
157
+ <Table.Heading>Column 2</Table.Heading>
158
+ </Table.Row>
159
+ <Table.Row onClick={() => { }}>
160
+ <Table.Cell>Cell 1</Table.Cell>
161
+ <Table.Cell>Cell 2</Table.Cell>
162
+ </Table.Row>
163
+ </Table>
164
+ </Example.Item>
165
+ </Example>),
166
+ };
167
+ export const render = {
168
+ name: "rendering",
169
+ render: () => (<Table>
170
+ <Table.Head>
196
171
  <Table.Row>
197
- <Table.Heading width="50%">Column 1</Table.Heading>
198
- <Table.Heading>Column 2</Table.Heading>
199
- <Table.Heading>Column 3</Table.Heading>
200
- <Table.Heading width="auto">Long heading title</Table.Heading>
172
+ <Table.Heading>Heading</Table.Heading>
173
+ <Table.Heading>Heading</Table.Heading>
201
174
  </Table.Row>
175
+ </Table.Head>
176
+ <Table.Body>
202
177
  <Table.Row>
203
- <Table.Cell>Cell 1</Table.Cell>
204
- <Table.Cell>Cell 2</Table.Cell>
205
- <Table.Cell>Cell 3</Table.Cell>
206
- <Table.Cell>Cell 4</Table.Cell>
178
+ <Table.Cell>Content</Table.Cell>
179
+ <Table.Cell>Content</Table.Cell>
180
+ </Table.Row>
181
+ </Table.Body>
182
+ </Table>),
183
+ play: async ({ canvas }) => {
184
+ const body = canvas.getAllByRole("rowgroup");
185
+ const rows = canvas.getAllByRole("row");
186
+ const headings = canvas.getAllByRole("columnheader");
187
+ const cells = canvas.getAllByRole("cell");
188
+ expect(body).toHaveLength(2);
189
+ expect(rows).toHaveLength(2);
190
+ expect(headings).toHaveLength(2);
191
+ expect(cells).toHaveLength(2);
192
+ expect(canvas.getAllByText("Heading")).toHaveLength(2);
193
+ expect(canvas.getAllByText("Content")).toHaveLength(2);
194
+ },
195
+ };
196
+ export const tbody = {
197
+ name: "tbody rendering",
198
+ render: () => (<Table>
199
+ <Table.Row>
200
+ <Table.Heading>Heading</Table.Heading>
201
+ <Table.Heading>Heading</Table.Heading>
202
+ </Table.Row>
203
+ </Table>),
204
+ play: async ({ canvas }) => {
205
+ const body = canvas.getByRole("rowgroup");
206
+ expect(body).toBeInTheDocument();
207
+ },
208
+ };
209
+ export const tabIndex = {
210
+ name: "adds tabIndex for clickable rows",
211
+ render: () => (<Table>
212
+ <Table.Row>
213
+ <Table.Cell />
214
+ </Table.Row>
215
+ <Table.Row onClick={() => { }}>
216
+ <Table.Cell />
217
+ </Table.Row>
218
+ <Table.Row attributes={{ onClick: () => { } }}>
219
+ <Table.Cell />
220
+ </Table.Row>
221
+ </Table>),
222
+ play: async ({ canvas }) => {
223
+ const elRows = canvas.getAllByRole("row");
224
+ expect(elRows[0]).not.toHaveAttribute("tabIndex");
225
+ expect(elRows[1]).toHaveAttribute("tabIndex", "0");
226
+ expect(elRows[2]).toHaveAttribute("tabIndex", "0");
227
+ },
228
+ };
229
+ export const className = {
230
+ name: "className, attributes",
231
+ render: () => (<div data-testid="root">
232
+ <Table className="test-classname" attributes={{ id: "test-id" }}>
233
+ <Table.Row attributes={{ id: "test-row-id" }}>
234
+ <Table.Cell attributes={{ id: "test-cell-id" }}></Table.Cell>
207
235
  </Table.Row>
208
236
  </Table>
209
- </Example.Item>
210
- </Example>);
237
+ </div>),
238
+ play: async ({ canvas }) => {
239
+ const root = canvas.getByTestId("root").firstChild;
240
+ const row = canvas.getByRole("row");
241
+ const cell = canvas.getByRole("cell");
242
+ expect(root).toHaveClass("test-classname");
243
+ expect(root).toHaveAttribute("id", "test-id");
244
+ expect(row).toHaveAttribute("id", "test-row-id");
245
+ expect(cell).toHaveAttribute("id", "test-cell-id");
246
+ },
247
+ };
248
+ export const edgeCases = {
249
+ name: "test: edge cases",
250
+ render: () => (<Example>
251
+ <Example.Item title="scroll fade">
252
+ <Table>
253
+ <Table.Row>
254
+ <Table.Heading width="500px">Column 1</Table.Heading>
255
+ <Table.Heading width="500px">Column 2</Table.Heading>
256
+ </Table.Row>
257
+ <Table.Row>
258
+ <Table.Cell>Cell 1</Table.Cell>
259
+ <Table.Cell>Cell 2</Table.Cell>
260
+ </Table.Row>
261
+ </Table>
262
+ </Example.Item>
263
+ <Example.Item title="card with highlighted heading">
264
+ <Card elevated padding={0}>
265
+ <Table>
266
+ <Table.Row highlighted>
267
+ <Table.Heading width="50%" minWidth="200px">
268
+ Column 1
269
+ </Table.Heading>
270
+ <Table.Heading colSpan={2} align="end">
271
+ Column 2
272
+ </Table.Heading>
273
+ </Table.Row>
274
+ <Table.Row>
275
+ <Table.Cell>Cell 1</Table.Cell>
276
+ <Table.Cell align="center">Cell 2</Table.Cell>
277
+ <Table.Cell align="end">Cell 3</Table.Cell>
278
+ </Table.Row>
279
+ <Table.Row>
280
+ <Table.Cell>Cell 1</Table.Cell>
281
+ <Table.Cell align="center">Cell 2</Table.Cell>
282
+ <Table.Cell align="end">Cell 3</Table.Cell>
283
+ </Table.Row>
284
+ </Table>
285
+ </Card>
286
+ </Example.Item>
287
+ <Example.Item title="width: auto, nowrap">
288
+ <Table>
289
+ <Table.Row>
290
+ <Table.Heading width="50%">Column 1</Table.Heading>
291
+ <Table.Heading>Column 2</Table.Heading>
292
+ <Table.Heading>Column 3</Table.Heading>
293
+ <Table.Heading width="auto">Long heading title</Table.Heading>
294
+ </Table.Row>
295
+ <Table.Row>
296
+ <Table.Cell>Cell 1</Table.Cell>
297
+ <Table.Cell>Cell 2</Table.Cell>
298
+ <Table.Cell>Cell 3</Table.Cell>
299
+ <Table.Cell>Cell 4</Table.Cell>
300
+ </Table.Row>
301
+ </Table>
302
+ </Example.Item>
303
+ </Example>),
304
+ };
211
305
  const SelectionDemo = () => {
212
306
  const [value, setValue] = React.useState([]);
213
307
  const rows = [
@@ -244,8 +338,11 @@ const SelectionDemo = () => {
244
338
  </Table.Row>))}
245
339
  </Table>);
246
340
  };
247
- export const examples = () => (<Example>
248
- <Example.Item title="selectable">
249
- <SelectionDemo />
250
- </Example.Item>
251
- </Example>);
341
+ export const examples = {
342
+ name: "test: selectable",
343
+ render: () => (<Example>
344
+ <Example.Item title="selectable">
345
+ <SelectionDemo />
346
+ </Example.Item>
347
+ </Example>),
348
+ };
@@ -1 +1 @@
1
- @property --rs-tabs-mid-l{syntax:"<length>";initial-value:-24px;inherits:false}@property --rs-tabs-stop-l{syntax:"<length>";initial-value:0;inherits:false}@property --rs-tabs-stop-r{syntax:"<length-percentage>";initial-value:100%;inherits:false}@property --rs-tabs-mid-r{syntax:"<length-percentage>";initial-value:calc(100% + 24px);inherits:false}.root{box-sizing:initial;isolation:isolate;max-width:100%}.list,.root{position:relative}.list{--rs-tabs-gap:var(--rs-unit-x6);gap:var(--rs-tabs-gap)}.inner:after{background-color:var(--rs-color-border-neutral-faded);content:"";position:absolute;z-index:2}.listItem{flex-shrink:0;position:relative}.button{overflow:hidden;position:relative;z-index:1;-webkit-tap-highlight-color:transparent}.button,.buttonContent{border-radius:var(--rs-radius-medium);width:100%}.buttonContent{align-items:center;box-sizing:border-box;display:flex}.icon{color:inherit;transition:color var(--rs-duration-fast) var(--rs-easing-standard)}[data-rs-keyboard] .radio:focus+.buttonContent{box-shadow:var(--rs-focus-inset-shadow)}.icon:not(:last-child){margin-inline-end:var(--rs-unit-x2)}.item{color:var(--rs-color-foreground-neutral)}@media (hover:hover) and (pointer:fine){.item:not(.--item-disabled,.--item-active):hover{color:var(--rs-color-foreground-neutral-faded)}}.item.--item-disabled{color:var(--rs-color-foreground-disabled)}.--item-active:after{content:""}.--item-active:after,.selector{background:var(--rs-color-border-primary);border-radius:calc(var(--rs-radius-medium) - 1px);position:absolute;z-index:var(--rs-z-index-relative)}.selector{--rs-tab-selection-x:0;--rs-tab-selection-y:0;--rs-tab-selection-scale-x:0;--rs-tab-selection-scale-y:0;transform:translate(calc(var(--rs-tab-selection-x) * 1px),calc(var(--rs-tab-selection-y) * 1px)) translateZ(0);transform-origin:0 0}.--selector-hidden{visibility:hidden}.--selector-animated{transition:var(--rs-duration-medium) var(--rs-easing-decelerate);transition-property:transform,height,width;will-change:transform,height,width}.control{align-items:center;display:none;inset-block:0;opacity:0;pointer-events:none;position:absolute;transition:var(--rs-duration-medium) var(--rs-easing-decelerate);transition-property:opacity,transform;z-index:var(--rs-z-index-relative)}.control.control--active{opacity:1;pointer-events:all}[dir=rtl] .control{transform:scaleX(-1)}.control--next{inset-inline-end:0}.control--prev{inset-inline-start:0}.panel{outline:none}[data-rs-keyboard] .panel:focus{box-shadow:var(--rs-focus-shadow)}.--panel-hidden{display:none}.--scrollable .inner{overflow:auto;overflow:-moz-scrollbars-none;scrollbar-width:none;-ms-overflow-style:none;mask-image:linear-gradient(to right,transparent 0,transparent var(--rs-tabs-mid-l),#000 var(--rs-tabs-stop-l),#000 var(--rs-tabs-stop-r),transparent var(--rs-tabs-mid-r),transparent 100%);transition:var(--rs-duration-medium) var(--rs-easing-decelerate);transition-property:--rs-tabs-stop-l,--rs-tabs-stop-r,--rs-tabs-mid-l,--rs-tabs-mid-r}.--scrollable .inner::-webkit-scrollbar{display:none}.--direction-row .inner{white-space:nowrap}.--direction-row .inner:after{bottom:0;height:1px;inset-inline:0}.--direction-row .list{align-items:center;display:inline-flex;flex-wrap:nowrap;vertical-align:top}.--direction-row .--item-active:after{height:2px;inset-inline:0;bottom:0}.--direction-row .selector{bottom:0;height:2px;left:0;width:calc(var(--rs-tab-selection-scale-x) * 1px)}.--direction-row .button{box-sizing:initial;margin:var(--rs-unit-x1) calc(var(--rs-unit-x2) * -1);padding:0 var(--rs-unit-x2)}.--direction-row .buttonContent{justify-content:center;padding:var(--rs-tabs-item-p-v) 0}.--direction-column .inner:after{height:100%;inset-block:0;inset-inline-end:0;width:1px}.--direction-column .list{--rs-tabs-gap:var(--rs-unit-x1);display:flex;flex-direction:column}.--direction-column .item{padding-inline-end:var(--rs-unit-x1)}.--direction-column .--item-active:after{bottom:0}.--direction-column .--item-active:after,.--direction-column .selector{height:100%;inset-inline-end:0;width:2px}.--direction-column .selector{height:calc(var(--rs-tab-selection-scale-y) * 1px);top:0}.--direction-column .button{margin-inline-start:calc(var(--rs-unit-x2) * -1);padding:var(--rs-unit-x2);width:calc(100% + var(--rs-unit-x1))}.--direction-column .buttonContent{justify-content:flex-start}.--variant-borderless .inner:after,.--variant-pills .inner:after,.--variant-pills-elevated .inner:after{content:none}.--variant-pills .button,.--variant-pills-elevated .button{margin:0;padding:0}.--variant-pills .buttonContent,.--variant-pills-elevated .buttonContent{margin:0;padding:var(--rs-tabs-item-p-v) var(--rs-tabs-item-p-h)}@media (hover:hover) and (pointer:fine){.--variant-pills .buttonContent:hover,.--variant-pills-elevated .buttonContent:hover{background:none}}.--variant-pills-elevated .buttonContent{padding:calc(var(--rs-tabs-item-p-v) - var(--rs-unit-x1) / 2) var(--rs-tabs-item-p-h)}.--variant-pills .list,.--variant-pills-elevated .list{--rs-tabs-gap:var(--rs-unit-x1)}.--variant-pills .selector,.--variant-pills-elevated .selector{background-color:var(--rs-color-background-neutral);height:calc(var(--rs-tab-selection-scale-y) * 1px);opacity:.6;width:calc(var(--rs-tab-selection-scale-x) * 1px);z-index:0}.--direction-column.--variant-pills .selector,.--direction-column.--variant-pills-elevated .selector{left:0}.--direction-row.--variant-pills .selector,.--direction-row.--variant-pills-elevated .selector{top:0}.--variant-pills .--item-active:after,.--variant-pills-elevated .--item-active:after{background-color:var(--rs-color-background-neutral);opacity:.6;z-index:0}.--direction-column.--variant-pills .--item-active:after,.--direction-column.--variant-pills-elevated .--item-active:after{width:100%}.--direction-row.--variant-pills .--item-active:after,.--direction-row.--variant-pills-elevated .--item-active:after{height:100%}.--variant-pills-elevated .list{background:var(--rs-color-background-neutral-faded);border:2px solid transparent;border-radius:var(--rs-radius-medium)}.--variant-pills-elevated .--item-active:after,.--variant-pills-elevated .selector{background:var(--rs-color-background-elevation-raised);box-shadow:var(--rs-shadow-raised);box-sizing:border-box;opacity:1}.--size-medium{--rs-tabs-item-p-v:var(--rs-unit-x2);--rs-tabs-item-p-h:var(--rs-unit-x3)}.--size-large{--rs-tabs-item-p-v:var(--rs-unit-x3);--rs-tabs-item-p-h:var(--rs-unit-x4)}.--item-width-equal{max-width:none}.--item-width-equal .inner{flex-wrap:wrap}.--item-width-equal .list{display:flex;overflow:hidden}.--item-width-equal .listItem{flex-basis:0;flex-grow:1;margin:0}.--fade-end .inner,[dir=rtl] .--fade-start .inner{--rs-tabs-mid-r:100%;--rs-tabs-stop-r:calc(100% - var(--rs-unit-x1) * 10)}.--fade-start .inner,[dir=rtl] .--fade-end .inner{--rs-tabs-mid-l:0px;--rs-tabs-stop-l:calc(var(--rs-unit-x1) * 10)}@media (pointer:fine){.control{display:flex}.--fade-end .inner,[dir=rtl] .--fade-start .inner{--rs-tabs-mid-r:calc(100% - var(--rs-unit-x1) * 4);--rs-tabs-stop-r:calc(100% - var(--rs-unit-x1) * 10)}.--fade-start .inner,[dir=rtl] .--fade-end .inner{--rs-tabs-mid-l:calc(var(--rs-unit-x1) * 4);--rs-tabs-stop-l:calc(var(--rs-unit-x1) * 10)}}
1
+ @property --rs-tabs-mid-l{syntax:"<length>";initial-value:-24px;inherits:false}@property --rs-tabs-stop-l{syntax:"<length>";initial-value:0;inherits:false}@property --rs-tabs-stop-r{syntax:"<length-percentage>";initial-value:100%;inherits:false}@property --rs-tabs-mid-r{syntax:"<length-percentage>";initial-value:calc(100% + 24px);inherits:false}.root{box-sizing:initial;isolation:isolate;max-width:100%}.list,.root{position:relative}.list{--rs-tabs-gap:var(--rs-unit-x6);gap:var(--rs-tabs-gap)}.inner:after{background-color:var(--rs-color-border-neutral-faded);content:"";position:absolute;z-index:2}.listItem{flex-shrink:0;position:relative}.button{overflow:hidden;position:relative;z-index:1;-webkit-tap-highlight-color:transparent}.button,.buttonContent{border-radius:var(--rs-radius-medium);width:100%}.buttonContent{align-items:center;box-sizing:border-box;display:flex}.icon{color:inherit;transition:color var(--rs-duration-fast) var(--rs-easing-standard)}[data-rs-keyboard] .radio:focus+.buttonContent{box-shadow:var(--rs-shadow-focus-inset)}.icon:not(:last-child){margin-inline-end:var(--rs-unit-x2)}.item{color:var(--rs-color-foreground-neutral)}@media (hover:hover) and (pointer:fine){.item:not(.--item-disabled,.--item-active):hover{color:var(--rs-color-foreground-neutral-faded)}}.item.--item-disabled{color:var(--rs-color-foreground-disabled)}.--item-active:after{content:""}.--item-active:after,.selector{background:var(--rs-color-border-primary);border-radius:calc(var(--rs-radius-medium) - 1px);position:absolute;z-index:var(--rs-z-index-relative)}.selector{--rs-tab-selection-x:0;--rs-tab-selection-y:0;--rs-tab-selection-scale-x:0;--rs-tab-selection-scale-y:0;transform:translate(calc(var(--rs-tab-selection-x) * 1px),calc(var(--rs-tab-selection-y) * 1px)) translateZ(0);transform-origin:0 0}.--selector-hidden{visibility:hidden}.--selector-animated{transition:var(--rs-duration-medium) var(--rs-easing-decelerate);transition-property:transform,height,width;will-change:transform,height,width}.control{align-items:center;display:none;inset-block:0;opacity:0;pointer-events:none;position:absolute;transition:var(--rs-duration-medium) var(--rs-easing-decelerate);transition-property:opacity,transform;z-index:var(--rs-z-index-relative)}.control.control--active{opacity:1;pointer-events:all}[dir=rtl] .control{transform:scaleX(-1)}.control--next{inset-inline-end:0}.control--prev{inset-inline-start:0}.panel{outline:none}[data-rs-keyboard] .panel:focus{box-shadow:var(--rs-shadow-focus)}.--panel-hidden{display:none}.--scrollable .inner{overflow:auto;overflow:-moz-scrollbars-none;scrollbar-width:none;-ms-overflow-style:none;mask-image:linear-gradient(to right,transparent 0,transparent var(--rs-tabs-mid-l),#000 var(--rs-tabs-stop-l),#000 var(--rs-tabs-stop-r),transparent var(--rs-tabs-mid-r),transparent 100%);transition:var(--rs-duration-medium) var(--rs-easing-decelerate);transition-property:--rs-tabs-stop-l,--rs-tabs-stop-r,--rs-tabs-mid-l,--rs-tabs-mid-r}.--scrollable .inner::-webkit-scrollbar{display:none}.--direction-row .inner{white-space:nowrap}.--direction-row .inner:after{bottom:0;height:1px;inset-inline:0}.--direction-row .list{align-items:center;display:inline-flex;flex-wrap:nowrap;vertical-align:top}.--direction-row .--item-active:after{height:2px;inset-inline:0;bottom:0}.--direction-row .selector{bottom:0;height:2px;left:0;width:calc(var(--rs-tab-selection-scale-x) * 1px)}.--direction-row .button{box-sizing:initial;margin:var(--rs-unit-x1) calc(var(--rs-unit-x2) * -1);padding:0 var(--rs-unit-x2)}.--direction-row .buttonContent{justify-content:center;padding:var(--rs-tabs-item-p-v) 0}.--direction-column .inner:after{height:100%;inset-block:0;inset-inline-end:0;width:1px}.--direction-column .list{--rs-tabs-gap:var(--rs-unit-x1);display:flex;flex-direction:column}.--direction-column .item{padding-inline-end:var(--rs-unit-x1)}.--direction-column .--item-active:after{bottom:0}.--direction-column .--item-active:after,.--direction-column .selector{height:100%;inset-inline-end:0;width:2px}.--direction-column .selector{height:calc(var(--rs-tab-selection-scale-y) * 1px);top:0}.--direction-column .button{margin-inline-start:calc(var(--rs-unit-x2) * -1);padding:var(--rs-unit-x2);width:calc(100% + var(--rs-unit-x1))}.--direction-column .buttonContent{justify-content:flex-start}.--variant-borderless .inner:after,.--variant-pills .inner:after,.--variant-pills-elevated .inner:after{content:none}.--variant-pills .button,.--variant-pills-elevated .button{margin:0;padding:0}.--variant-pills .buttonContent,.--variant-pills-elevated .buttonContent{margin:0;padding:var(--rs-tabs-item-p-v) var(--rs-tabs-item-p-h)}@media (hover:hover) and (pointer:fine){.--variant-pills .buttonContent:hover,.--variant-pills-elevated .buttonContent:hover{background:none}}.--variant-pills-elevated .buttonContent{padding:calc(var(--rs-tabs-item-p-v) - var(--rs-unit-x1) / 2) var(--rs-tabs-item-p-h)}.--variant-pills .list,.--variant-pills-elevated .list{--rs-tabs-gap:var(--rs-unit-x1)}.--variant-pills .selector,.--variant-pills-elevated .selector{background-color:var(--rs-color-background-neutral);height:calc(var(--rs-tab-selection-scale-y) * 1px);opacity:.6;width:calc(var(--rs-tab-selection-scale-x) * 1px);z-index:0}.--direction-column.--variant-pills .selector,.--direction-column.--variant-pills-elevated .selector{left:0}.--direction-row.--variant-pills .selector,.--direction-row.--variant-pills-elevated .selector{top:0}.--variant-pills .--item-active:after,.--variant-pills-elevated .--item-active:after{background-color:var(--rs-color-background-neutral);opacity:.6;z-index:0}.--direction-column.--variant-pills .--item-active:after,.--direction-column.--variant-pills-elevated .--item-active:after{width:100%}.--direction-row.--variant-pills .--item-active:after,.--direction-row.--variant-pills-elevated .--item-active:after{height:100%}.--variant-pills-elevated .list{background:var(--rs-color-background-neutral-faded);border:2px solid transparent;border-radius:var(--rs-radius-medium)}.--variant-pills-elevated .--item-active:after,.--variant-pills-elevated .selector{background:var(--rs-color-background-elevation-raised);box-shadow:var(--rs-shadow-raised);box-sizing:border-box;opacity:1}.--size-medium{--rs-tabs-item-p-v:var(--rs-unit-x2);--rs-tabs-item-p-h:var(--rs-unit-x3)}.--size-large{--rs-tabs-item-p-v:var(--rs-unit-x3);--rs-tabs-item-p-h:var(--rs-unit-x4)}.--item-width-equal{max-width:none}.--item-width-equal .inner{flex-wrap:wrap}.--item-width-equal .list{display:flex;overflow:hidden}.--item-width-equal .listItem{flex-basis:0;flex-grow:1;margin:0}.--fade-end .inner,[dir=rtl] .--fade-start .inner{--rs-tabs-mid-r:100%;--rs-tabs-stop-r:calc(100% - var(--rs-unit-x1) * 10)}.--fade-start .inner,[dir=rtl] .--fade-end .inner{--rs-tabs-mid-l:0px;--rs-tabs-stop-l:calc(var(--rs-unit-x1) * 10)}@media (pointer:fine){.control{display:flex}.--fade-end .inner,[dir=rtl] .--fade-start .inner{--rs-tabs-mid-r:calc(100% - var(--rs-unit-x1) * 4);--rs-tabs-stop-r:calc(100% - var(--rs-unit-x1) * 10)}.--fade-start .inner,[dir=rtl] .--fade-end .inner{--rs-tabs-mid-l:calc(var(--rs-unit-x1) * 4);--rs-tabs-stop-l:calc(var(--rs-unit-x1) * 10)}}
@@ -7,6 +7,7 @@ const TabsControlled = (props) => {
7
7
  const { children, value, onChange, onSilentChange, itemWidth, variant, name, direction = "row", size = "medium", } = props;
8
8
  const id = useElementId();
9
9
  const elActiveRef = React.useRef(null);
10
+ // eslint-disable-next-line react-hooks/refs
10
11
  const elPrevActiveRef = React.useRef(elActiveRef.current);
11
12
  const elScrollableRef = React.useRef(null);
12
13
  const [selection, setSelection] = React.useState({
@@ -3,9 +3,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import React from "react";
4
4
  import { classNames } from "../../utilities/props.js";
5
5
  import useRTL from "../../hooks/useRTL.js";
6
- import { focusNextElement, focusPreviousElement, focusFirstElement, focusLastElement, } from "../../utilities/a11y/index.js";
7
6
  import useIsomorphicLayoutEffect from "../../hooks/useIsomorphicLayoutEffect.js";
8
- import useHotkeys from "../../hooks/useHotkeys.js";
7
+ import useKeyboardArrowNavigation from "../../hooks/useKeyboardArrowNavigation.js";
9
8
  import useFadeSide from "../../hooks/_private/useFadeSide.js";
10
9
  import Actionable from "../Actionable/index.js";
11
10
  import Icon from "../Icon/index.js";
@@ -61,23 +60,7 @@ const TabsList = (props) => {
61
60
  left: itemEl.offsetLeft,
62
61
  };
63
62
  }, [elScrollableRef]);
64
- const { ref: hotkeysRef } = useHotkeys({
65
- "ArrowLeft, ArrowUp": () => {
66
- focusPreviousElement(elScrollableRef.current);
67
- },
68
- "ArrowRight, ArrowDown": () => {
69
- focusNextElement(elScrollableRef.current);
70
- },
71
- Home: () => {
72
- focusFirstElement(elScrollableRef.current);
73
- },
74
- End: () => {
75
- focusLastElement(elScrollableRef.current);
76
- },
77
- }, [], {
78
- preventDefault: true,
79
- disabled: !!name,
80
- });
63
+ useKeyboardArrowNavigation({ ref: elScrollableRef, disabled: !!name });
81
64
  useIsomorphicLayoutEffect(() => {
82
65
  if (value)
83
66
  return;
@@ -106,7 +89,7 @@ const TabsList = (props) => {
106
89
  return;
107
90
  setSelection({ ...selectionStyle, status: "animated" });
108
91
  }, [selection]);
109
- return (_jsxs("div", { ...attributes, className: rootClassNames, children: [_jsx("div", { className: s.inner, ref: elScrollableRef, children: _jsxs("div", { className: s.list, role: "tablist", ref: hotkeysRef, children: [React.Children.map(children, (child, index) => {
92
+ return (_jsxs("div", { ...attributes, className: rootClassNames, children: [_jsx("div", { className: s.inner, ref: elScrollableRef, children: _jsxs("div", { className: s.list, role: "tablist", children: [React.Children.map(children, (child, index) => {
110
93
  if (!React.isValidElement(child))
111
94
  return null;
112
95
  const props = child.props;