reshaped 3.3.11 → 3.3.13

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 (253) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/bundle.css +1 -1
  3. package/dist/bundle.d.ts +1 -1
  4. package/dist/bundle.js +16 -17
  5. package/dist/cjs/themes/_generator/utilities/generateColors.d.ts +1 -1
  6. package/dist/cjs/themes/_generator/utilities/generateColors.js +3 -2
  7. package/dist/cjs/themes/_generator/utilities/tests/color.test.js +32 -31
  8. package/dist/cjs/themes/slate/theme.css +1 -1
  9. package/dist/components/Accordion/tests/Accordion.stories.d.ts +30 -8
  10. package/dist/components/Accordion/tests/Accordion.stories.js +172 -119
  11. package/dist/components/ActionBar/tests/ActionBar.stories.d.ts +12 -3
  12. package/dist/components/ActionBar/tests/ActionBar.stories.js +51 -36
  13. package/dist/components/ActionBar/tests/ActionBar.test.stories.d.ts +15 -0
  14. package/dist/components/ActionBar/tests/ActionBar.test.stories.js +26 -0
  15. package/dist/components/Actionable/Actionable.js +1 -1
  16. package/dist/components/Actionable/tests/Actionable.stories.d.ts +19 -5
  17. package/dist/components/Actionable/tests/Actionable.stories.js +88 -63
  18. package/dist/components/Actionable/tests/Actionable.test.stories.d.ts +32 -0
  19. package/dist/components/Actionable/tests/Actionable.test.stories.js +130 -0
  20. package/dist/components/Alert/Alert.js +1 -1
  21. package/dist/components/Alert/tests/Alert.stories.d.ts +12 -3
  22. package/dist/components/Alert/tests/Alert.stories.js +51 -86
  23. package/dist/components/Alert/tests/Alert.test.stories.d.ts +15 -0
  24. package/dist/components/Alert/tests/Alert.test.stories.js +26 -0
  25. package/dist/components/Autocomplete/Autocomplete.js +9 -2
  26. package/dist/components/Autocomplete/tests/Autocomplete.stories.d.ts +6 -2
  27. package/dist/components/Autocomplete/tests/Autocomplete.stories.js +94 -111
  28. package/dist/components/Autocomplete/tests/Autocomplete.test.stories.d.ts +23 -0
  29. package/dist/components/Autocomplete/tests/Autocomplete.test.stories.js +86 -0
  30. package/dist/components/Avatar/Avatar.js +1 -1
  31. package/dist/components/Avatar/tests/Avatar.stories.d.ts +14 -4
  32. package/dist/components/Avatar/tests/Avatar.stories.js +94 -80
  33. package/dist/components/Avatar/tests/Avatar.test.stories.d.ts +17 -0
  34. package/dist/components/Avatar/tests/Avatar.test.stories.js +39 -0
  35. package/dist/components/Badge/tests/Badge.stories.d.ts +33 -8
  36. package/dist/components/Badge/tests/Badge.stories.js +238 -212
  37. package/dist/components/Badge/tests/Badge.test.stories.d.ts +20 -0
  38. package/dist/components/Badge/tests/Badge.test.stories.js +44 -0
  39. package/dist/components/Breadcrumbs/Breadcrumbs.js +2 -2
  40. package/dist/components/Breadcrumbs/Breadcrumbs.types.d.ts +1 -0
  41. package/dist/components/Breadcrumbs/tests/Breadcrumbs.stories.d.ts +24 -5
  42. package/dist/components/Breadcrumbs/tests/Breadcrumbs.stories.js +114 -95
  43. package/dist/components/Breadcrumbs/tests/Breadcrumbs.test.stories.d.ts +23 -0
  44. package/dist/components/Breadcrumbs/tests/Breadcrumbs.test.stories.js +76 -0
  45. package/dist/components/Button/Button.js +5 -2
  46. package/dist/components/Button/Button.module.css +1 -1
  47. package/dist/components/Button/Button.types.d.ts +1 -0
  48. package/dist/components/Button/tests/Button.stories.d.ts +2 -2
  49. package/dist/components/Button/tests/Button.stories.js +77 -74
  50. package/dist/components/Button/tests/Button.test.stories.d.ts +27 -0
  51. package/dist/components/Button/tests/Button.test.stories.js +112 -0
  52. package/dist/components/Calendar/tests/Calendar.test.stories.d.ts +26 -0
  53. package/dist/components/Calendar/tests/Calendar.test.stories.js +161 -0
  54. package/dist/components/Card/tests/Card.stories.d.ts +0 -1
  55. package/dist/components/Card/tests/Card.stories.js +0 -11
  56. package/dist/components/Card/tests/Card.test.stories.d.ts +35 -0
  57. package/dist/components/Card/tests/Card.test.stories.js +54 -0
  58. package/dist/components/Carousel/Carousel.js +52 -4
  59. package/dist/components/Carousel/Carousel.types.d.ts +4 -0
  60. package/dist/components/Carousel/CarouselControl.js +1 -1
  61. package/dist/components/Carousel/tests/Carousel.stories.d.ts +23 -4
  62. package/dist/components/Carousel/tests/Carousel.stories.js +199 -102
  63. package/dist/components/Checkbox/tests/Checkbox.test.stories.d.ts +25 -0
  64. package/dist/components/Checkbox/tests/Checkbox.test.stories.js +104 -0
  65. package/dist/components/CheckboxGroup/tests/CheckboxGroup.test.stories.d.ts +22 -0
  66. package/dist/components/CheckboxGroup/tests/CheckboxGroup.test.stories.js +78 -0
  67. package/dist/components/Container/tests/Container.stories.d.ts +12 -3
  68. package/dist/components/Container/tests/Container.stories.js +50 -31
  69. package/dist/components/Container/tests/Container.test.stories.d.ts +15 -0
  70. package/dist/components/Container/tests/Container.test.stories.js +26 -0
  71. package/dist/components/ContextMenu/ContextMenu.js +13 -9
  72. package/dist/components/ContextMenu/tests/ContextMenu.stories.js +2 -3
  73. package/dist/components/ContextMenu/tests/ContextMenu.test.stories.d.ts +26 -0
  74. package/dist/components/ContextMenu/tests/ContextMenu.test.stories.js +53 -0
  75. package/dist/components/Dismissible/Dismissible.js +1 -1
  76. package/dist/components/Dismissible/tests/Dismissible.stories.d.ts +10 -3
  77. package/dist/components/Dismissible/tests/Dismissible.stories.js +51 -34
  78. package/dist/components/Dismissible/tests/Dismissible.test.stories.d.ts +19 -0
  79. package/dist/components/Dismissible/tests/Dismissible.test.stories.js +42 -0
  80. package/dist/components/Divider/tests/Divider.test.stories.d.ts +18 -0
  81. package/dist/components/Divider/tests/Divider.test.stories.js +47 -0
  82. package/dist/components/DropdownMenu/tests/DropdownMenu.test.stories.d.ts +37 -0
  83. package/dist/components/DropdownMenu/tests/DropdownMenu.test.stories.js +117 -0
  84. package/dist/components/FileUpload/tests/FileUpload.test.stories.d.ts +22 -0
  85. package/dist/components/FileUpload/tests/FileUpload.test.stories.js +52 -0
  86. package/dist/components/FormControl/FormControlCaption.js +1 -1
  87. package/dist/components/FormControl/FormControlLabel.js +1 -1
  88. package/dist/components/FormControl/tests/FormControl.stories.d.ts +11 -5
  89. package/dist/components/FormControl/tests/FormControl.stories.js +78 -73
  90. package/dist/components/FormControl/tests/FormControl.test.stories.d.ts +20 -0
  91. package/dist/components/FormControl/tests/FormControl.test.stories.js +49 -0
  92. package/dist/components/Grid/tests/Grid.stories.d.ts +20 -5
  93. package/dist/components/Grid/tests/Grid.stories.js +164 -149
  94. package/dist/components/Grid/tests/Grid.test.stories.d.ts +19 -0
  95. package/dist/components/Grid/tests/Grid.test.stories.js +42 -0
  96. package/dist/components/Hidden/tests/Hidden.stories.d.ts +4 -1
  97. package/dist/components/Hidden/tests/Hidden.stories.js +28 -25
  98. package/dist/components/Hidden/tests/Hidden.test.stories.d.ts +15 -0
  99. package/dist/components/Hidden/tests/Hidden.test.stories.js +20 -0
  100. package/dist/components/HiddenVisually/tests/HiddenVisually.stories.d.ts +4 -1
  101. package/dist/components/HiddenVisually/tests/HiddenVisually.stories.js +8 -5
  102. package/dist/components/HiddenVisually/tests/HiddenVisually.test.stories.d.ts +15 -0
  103. package/dist/components/HiddenVisually/tests/HiddenVisually.test.stories.js +20 -0
  104. package/dist/components/Hotkey/tests/Hotkey.test.stories.d.ts +15 -0
  105. package/dist/components/Hotkey/tests/Hotkey.test.stories.js +26 -0
  106. package/dist/components/Icon/tests/Icon.stories.d.ts +12 -3
  107. package/dist/components/Icon/tests/Icon.stories.js +69 -60
  108. package/dist/components/Icon/tests/Icon.test.stories.d.ts +16 -0
  109. package/dist/components/Icon/tests/Icon.test.stories.js +35 -0
  110. package/dist/components/Image/tests/Image.stories.d.ts +24 -5
  111. package/dist/components/Image/tests/Image.stories.js +95 -75
  112. package/dist/components/Image/tests/Image.test.stories.d.ts +25 -0
  113. package/dist/components/Image/tests/Image.test.stories.js +80 -0
  114. package/dist/components/Link/tests/Link.test.stories.d.ts +29 -0
  115. package/dist/components/Link/tests/Link.test.stories.js +87 -0
  116. package/dist/components/Loader/Loader.js +1 -1
  117. package/dist/components/Loader/Loader.types.d.ts +1 -0
  118. package/dist/components/Loader/tests/Loader.stories.js +8 -8
  119. package/dist/components/Loader/tests/Loader.test.stories.d.ts +16 -0
  120. package/dist/components/Loader/tests/Loader.test.stories.js +32 -0
  121. package/dist/components/MenuItem/tests/MenuItem.test.stories.d.ts +26 -0
  122. package/dist/components/MenuItem/tests/MenuItem.test.stories.js +100 -0
  123. package/dist/components/Modal/tests/Modal.test.stories.d.ts +32 -0
  124. package/dist/components/Modal/tests/Modal.test.stories.js +149 -0
  125. package/dist/components/Overlay/tests/Overlay.stories.d.ts +4 -2
  126. package/dist/components/Overlay/tests/Overlay.stories.js +53 -53
  127. package/dist/components/Overlay/tests/Overlay.test.stories.d.ts +28 -0
  128. package/dist/components/Overlay/tests/Overlay.test.stories.js +146 -0
  129. package/dist/components/Pagination/tests/Pagination.test.stories.d.ts +23 -0
  130. package/dist/components/Pagination/tests/Pagination.test.stories.js +86 -0
  131. package/dist/components/PinField/tests/PinField.stories.d.ts +0 -1
  132. package/dist/components/PinField/tests/PinField.stories.js +10 -19
  133. package/dist/components/PinField/tests/PinField.test.stories.d.ts +29 -0
  134. package/dist/components/PinField/tests/PinField.test.stories.js +177 -0
  135. package/dist/components/Popover/tests/Popover.test.stories.d.ts +40 -0
  136. package/dist/components/Popover/tests/Popover.test.stories.js +167 -0
  137. package/dist/components/Progress/Progress.js +2 -2
  138. package/dist/components/Progress/Progress.types.d.ts +1 -0
  139. package/dist/components/Progress/tests/Progress.stories.js +10 -10
  140. package/dist/components/Progress/tests/Progress.test.stories.d.ts +16 -0
  141. package/dist/components/Progress/tests/Progress.test.stories.js +35 -0
  142. package/dist/components/Radio/tests/Radio.test.stories.d.ts +30 -0
  143. package/dist/components/Radio/tests/Radio.test.stories.js +118 -0
  144. package/dist/components/RadioGroup/tests/RadioGroup.test.stories.d.ts +22 -0
  145. package/dist/components/RadioGroup/tests/RadioGroup.test.stories.js +78 -0
  146. package/dist/components/Reshaped/tests/Reshaped.stories.d.ts +33 -0
  147. package/dist/components/Reshaped/tests/Reshaped.stories.js +88 -0
  148. package/dist/components/Resizable/Resizable.js +1 -0
  149. package/dist/components/Resizable/tests/Resizable.stories.d.ts +3 -0
  150. package/dist/components/Resizable/tests/Resizable.stories.js +4 -0
  151. package/dist/components/Resizable/tests/Resizable.test.stories.d.ts +19 -0
  152. package/dist/components/Resizable/tests/Resizable.test.stories.js +25 -0
  153. package/dist/components/Scrim/tests/Scrim.test.stories.d.ts +15 -0
  154. package/dist/components/Scrim/tests/Scrim.test.stories.js +25 -0
  155. package/dist/components/ScrollArea/ScrollArea.js +1 -1
  156. package/dist/components/ScrollArea/ScrollArea.module.css +1 -1
  157. package/dist/components/ScrollArea/tests/ScrollArea.stories.d.ts +17 -4
  158. package/dist/components/ScrollArea/tests/ScrollArea.stories.js +114 -139
  159. package/dist/components/ScrollArea/tests/ScrollArea.test.stories.d.ts +23 -0
  160. package/dist/components/ScrollArea/tests/ScrollArea.test.stories.js +66 -0
  161. package/dist/components/Select/tests/Select.stories.d.ts +1 -1
  162. package/dist/components/Select/tests/Select.stories.js +5 -12
  163. package/dist/components/Select/tests/Select.test.stories.d.ts +27 -0
  164. package/dist/components/Select/tests/Select.test.stories.js +132 -0
  165. package/dist/components/Skeleton/tests/Skeleton.test.stories.d.ts +15 -0
  166. package/dist/components/Skeleton/tests/Skeleton.test.stories.js +23 -0
  167. package/dist/components/Slider/tests/Slider.stories.d.ts +0 -1
  168. package/dist/components/Slider/tests/Slider.stories.js +8 -9
  169. package/dist/components/Slider/tests/Slider.test.stories.d.ts +38 -0
  170. package/dist/components/Slider/tests/Slider.test.stories.js +150 -0
  171. package/dist/components/Stepper/Stepper.js +1 -1
  172. package/dist/components/Stepper/tests/Stepper.stories.js +0 -3
  173. package/dist/components/Stepper/tests/Stepper.test.stories.d.ts +18 -0
  174. package/dist/components/Stepper/tests/Stepper.test.stories.js +28 -0
  175. package/dist/components/Switch/tests/Switch.test.stories.d.ts +23 -0
  176. package/dist/components/Switch/tests/Switch.test.stories.js +79 -0
  177. package/dist/components/Table/index.d.ts +1 -1
  178. package/dist/components/Table/tests/Table.stories.d.ts +5 -5
  179. package/dist/components/Table/tests/Table.test.stories.d.ts +25 -0
  180. package/dist/components/Table/tests/Table.test.stories.js +93 -0
  181. package/dist/components/Tabs/tests/Tabs.stories.js +4 -4
  182. package/dist/components/Tabs/tests/Tabs.test.stories.d.ts +28 -0
  183. package/dist/components/Tabs/tests/Tabs.test.stories.js +128 -0
  184. package/dist/components/Text/tests/Text.stories.d.ts +28 -7
  185. package/dist/components/Text/tests/Text.stories.js +148 -125
  186. package/dist/components/Text/tests/Text.test.stories.d.ts +18 -0
  187. package/dist/components/Text/tests/Text.test.stories.js +49 -0
  188. package/dist/components/TextArea/TextArea.module.css +1 -1
  189. package/dist/components/TextArea/tests/TextArea.stories.js +1 -1
  190. package/dist/components/TextArea/tests/TextArea.test.stories.d.ts +29 -0
  191. package/dist/components/TextArea/tests/TextArea.test.stories.js +99 -0
  192. package/dist/components/TextField/tests/TextField.stories.js +1 -1
  193. package/dist/components/TextField/tests/TextField.test.stories.d.ts +29 -0
  194. package/dist/components/TextField/tests/TextField.test.stories.js +99 -0
  195. package/dist/components/Theme/tests/Theme.test.stories.d.ts +24 -0
  196. package/dist/components/Theme/tests/Theme.test.stories.js +133 -0
  197. package/dist/components/Timeline/tests/Timeline.test.stories.d.ts +18 -0
  198. package/dist/components/Timeline/tests/Timeline.test.stories.js +32 -0
  199. package/dist/components/Toast/tests/Toast.test.stories.d.ts +16 -0
  200. package/dist/components/Toast/tests/Toast.test.stories.js +101 -0
  201. package/dist/components/Tooltip/tests/Tooltip.stories.js +0 -14
  202. package/dist/components/Tooltip/tests/Tooltip.test.stories.d.ts +19 -0
  203. package/dist/components/Tooltip/tests/Tooltip.test.stories.js +40 -0
  204. package/dist/components/View/View.js +1 -2
  205. package/dist/components/View/tests/View.stories.d.ts +112 -28
  206. package/dist/components/View/tests/View.stories.js +1092 -1012
  207. package/dist/components/View/tests/View.test.stories.d.ts +20 -0
  208. package/dist/components/View/tests/View.test.stories.js +50 -0
  209. package/dist/components/_private/Flyout/FlyoutContent.js +1 -1
  210. package/dist/components/_private/Flyout/tests/Flyout.stories.js +4 -4
  211. package/dist/components/_private/Flyout/tests/Flyout.test.stories.d.ts +28 -0
  212. package/dist/components/_private/Flyout/tests/Flyout.test.stories.js +205 -0
  213. package/dist/components/_private/Portal/tests/Portal.stories.js +1 -1
  214. package/dist/hooks/_private/useSingletonHotkeys.d.ts +3 -3
  215. package/dist/hooks/_private/useSingletonHotkeys.js +1 -1
  216. package/dist/hooks/tests/useDrag.stories.js +1 -0
  217. package/dist/hooks/tests/useDrag.test.stories.d.ts +26 -0
  218. package/dist/hooks/tests/useDrag.test.stories.js +120 -0
  219. package/dist/hooks/tests/useElementId.stories.d.ts +6 -0
  220. package/dist/hooks/tests/useElementId.stories.js +19 -0
  221. package/dist/hooks/tests/useHotkeys.test.stories.d.ts +39 -0
  222. package/dist/hooks/tests/useHotkeys.test.stories.js +119 -0
  223. package/dist/hooks/tests/useRTL.stories.d.ts +6 -0
  224. package/dist/hooks/tests/useRTL.stories.js +25 -0
  225. package/dist/hooks/tests/useResponsiveClientValue.stories.d.ts +9 -1
  226. package/dist/hooks/tests/useResponsiveClientValue.stories.js +22 -9
  227. package/dist/hooks/tests/useScrollLock.stories.d.ts +6 -0
  228. package/dist/hooks/tests/useScrollLock.stories.js +22 -0
  229. package/dist/hooks/tests/useToggle.stories.d.ts +8 -0
  230. package/dist/hooks/tests/useToggle.stories.js +54 -0
  231. package/dist/hooks/useHotkeys.js +0 -2
  232. package/dist/hooks/useScrollLock.d.ts +1 -0
  233. package/dist/hooks/useScrollLock.js +7 -3
  234. package/dist/index.d.ts +1 -1
  235. package/dist/tests/ShadowDOM.stories.js +1 -1
  236. package/dist/themes/_generator/tests/themes.stories.d.ts +3 -0
  237. package/dist/themes/_generator/tests/themes.stories.js +7 -11
  238. package/dist/themes/_generator/utilities/generateColors.d.ts +1 -1
  239. package/dist/themes/_generator/utilities/generateColors.js +3 -2
  240. package/dist/themes/slate/theme.css +1 -1
  241. package/dist/utilities/helpers.d.ts +1 -0
  242. package/dist/utilities/helpers.js +3 -0
  243. package/dist/utilities/scroll/lock.d.ts +1 -0
  244. package/dist/utilities/scroll/lock.js +3 -3
  245. package/dist/utilities/scroll/lockSafari.d.ts +1 -1
  246. package/dist/utilities/scroll/lockSafari.js +4 -5
  247. package/dist/utilities/scroll/lockStandard.d.ts +4 -1
  248. package/dist/utilities/scroll/lockStandard.js +7 -2
  249. package/dist/utilities/storybook/Example.js +1 -2
  250. package/package.json +42 -41
  251. package/dist/components/Theme/tests/Theme.stories.d.ts +0 -13
  252. package/dist/components/Theme/tests/Theme.stories.js +0 -80
  253. package/dist/utilities/storybook/Example.module.css +0 -1
@@ -0,0 +1,93 @@
1
+ import { expect } from "@storybook/test";
2
+ import Table from "../index.js";
3
+ export default {
4
+ title: "Components/Table/tests",
5
+ component: Table,
6
+ parameters: {
7
+ iframe: {
8
+ url: "https://reshaped.so/docs/components/table",
9
+ },
10
+ chromatic: { disableSnapshot: true },
11
+ },
12
+ };
13
+ export const render = {
14
+ name: "rendering",
15
+ render: () => (<Table>
16
+ <Table.Head>
17
+ <Table.Row>
18
+ <Table.Heading>Heading</Table.Heading>
19
+ <Table.Heading>Heading</Table.Heading>
20
+ </Table.Row>
21
+ </Table.Head>
22
+ <Table.Body>
23
+ <Table.Row>
24
+ <Table.Cell>Content</Table.Cell>
25
+ <Table.Cell>Content</Table.Cell>
26
+ </Table.Row>
27
+ </Table.Body>
28
+ </Table>),
29
+ play: async ({ canvas }) => {
30
+ const body = canvas.getAllByRole("rowgroup");
31
+ const rows = canvas.getAllByRole("row");
32
+ const headings = canvas.getAllByRole("columnheader");
33
+ const cells = canvas.getAllByRole("cell");
34
+ expect(body).toHaveLength(2);
35
+ expect(rows).toHaveLength(2);
36
+ expect(headings).toHaveLength(2);
37
+ expect(cells).toHaveLength(2);
38
+ expect(canvas.getAllByText("Heading")).toHaveLength(2);
39
+ expect(canvas.getAllByText("Content")).toHaveLength(2);
40
+ },
41
+ };
42
+ export const tbody = {
43
+ name: "tbody rendering",
44
+ render: () => (<Table>
45
+ <Table.Row>
46
+ <Table.Heading>Heading</Table.Heading>
47
+ <Table.Heading>Heading</Table.Heading>
48
+ </Table.Row>
49
+ </Table>),
50
+ play: async ({ canvas }) => {
51
+ const body = canvas.getByRole("rowgroup");
52
+ expect(body).toBeInTheDocument();
53
+ },
54
+ };
55
+ export const tabIndex = {
56
+ name: "adds tabIndex for clickable rows",
57
+ render: () => (<Table>
58
+ <Table.Row>
59
+ <Table.Cell />
60
+ </Table.Row>
61
+ <Table.Row onClick={() => { }}>
62
+ <Table.Cell />
63
+ </Table.Row>
64
+ <Table.Row attributes={{ onClick: () => { } }}>
65
+ <Table.Cell />
66
+ </Table.Row>
67
+ </Table>),
68
+ play: async ({ canvas }) => {
69
+ const elRows = canvas.getAllByRole("row");
70
+ expect(elRows[0]).not.toHaveAttribute("tabIndex");
71
+ expect(elRows[1]).toHaveAttribute("tabIndex", "0");
72
+ expect(elRows[2]).toHaveAttribute("tabIndex", "0");
73
+ },
74
+ };
75
+ export const className = {
76
+ name: "className, attributes",
77
+ render: () => (<div data-testid="root">
78
+ <Table className="test-classname" attributes={{ id: "test-id" }}>
79
+ <Table.Row attributes={{ id: "test-row-id" }}>
80
+ <Table.Cell attributes={{ id: "test-cell-id" }}></Table.Cell>
81
+ </Table.Row>
82
+ </Table>
83
+ </div>),
84
+ play: async ({ canvas }) => {
85
+ const root = canvas.getByTestId("root").firstChild;
86
+ const row = canvas.getByRole("row");
87
+ const cell = canvas.getByRole("cell");
88
+ expect(root).toHaveClass("test-classname");
89
+ expect(root).toHaveAttribute("id", "test-id");
90
+ expect(row).toHaveAttribute("id", "test-row-id");
91
+ expect(cell).toHaveAttribute("id", "test-cell-id");
92
+ },
93
+ };
@@ -302,7 +302,7 @@ export const edgeCaseDom = () => {
302
302
  <Text>Section 1</Text>
303
303
 
304
304
  <View gap={1} direction="row">
305
- {[...Array(4)].map((i) => (<View grow height="100px" backgroundColor="neutral-faded" key={i}/>))}
305
+ {[...Array(4)].map((_, i) => (<View grow height="100px" backgroundColor="neutral-faded" key={i}/>))}
306
306
  </View>
307
307
  </View>
308
308
 
@@ -310,7 +310,7 @@ export const edgeCaseDom = () => {
310
310
  <Text>Section 2</Text>
311
311
 
312
312
  <View gap={1} direction="row">
313
- {[...Array(4)].map((i) => (<View grow height="100px" backgroundColor="neutral-faded"/>))}
313
+ {[...Array(4)].map((_, i) => (<View key={i} grow height="100px" backgroundColor="neutral-faded"/>))}
314
314
  </View>
315
315
  </View>
316
316
 
@@ -318,7 +318,7 @@ export const edgeCaseDom = () => {
318
318
  <Text>Section 3</Text>
319
319
 
320
320
  <View gap={1} direction="row">
321
- {[...Array(4)].map((i) => (<View grow height="100px" backgroundColor="neutral-faded"/>))}
321
+ {[...Array(4)].map((_, i) => (<View key={i} grow height="100px" backgroundColor="neutral-faded"/>))}
322
322
  </View>
323
323
  </View>
324
324
 
@@ -326,7 +326,7 @@ export const edgeCaseDom = () => {
326
326
  <Text>Section 4</Text>
327
327
 
328
328
  <View gap={1} direction="row">
329
- {[...Array(4)].map((i) => (<View grow height="100px" backgroundColor="neutral-faded"/>))}
329
+ {[...Array(4)].map((_, i) => (<View key={i} grow height="100px" backgroundColor="neutral-faded"/>))}
330
330
  </View>
331
331
  </View>
332
332
  </View>
@@ -0,0 +1,28 @@
1
+ import { StoryObj } from "@storybook/react";
2
+ import { fn } from "@storybook/test";
3
+ declare const _default: {
4
+ title: string;
5
+ component: {
6
+ (props: import("./..").TabsProps): import("react").JSX.Element;
7
+ Item: import("react").ForwardRefExoticComponent<import("./..").TabsItemProps & import("react").RefAttributes<HTMLAnchorElement | HTMLButtonElement>>;
8
+ List: (props: import("../Tabs.types").ListProps) => import("react").JSX.Element;
9
+ Panel: (props: import("../Tabs.types").PanelProps) => import("react").JSX.Element;
10
+ };
11
+ parameters: {
12
+ iframe: {
13
+ url: string;
14
+ };
15
+ chromatic: {
16
+ disableSnapshot: boolean;
17
+ };
18
+ };
19
+ };
20
+ export default _default;
21
+ export declare const base: StoryObj;
22
+ export declare const defaultValue: StoryObj<{
23
+ handleChange: ReturnType<typeof fn>;
24
+ }>;
25
+ export declare const value: StoryObj<{
26
+ handleChange: ReturnType<typeof fn>;
27
+ }>;
28
+ export declare const className: StoryObj;
@@ -0,0 +1,128 @@
1
+ import { expect, within, userEvent, waitFor, fn } from "@storybook/test";
2
+ import Tabs from "../index.js";
3
+ export default {
4
+ title: "Components/Tabs/tests",
5
+ component: Tabs,
6
+ parameters: {
7
+ iframe: {
8
+ url: "https://reshaped.so/docs/components/tabs",
9
+ },
10
+ chromatic: { disableSnapshot: true },
11
+ },
12
+ };
13
+ export const base = {
14
+ name: "base",
15
+ render: () => (<Tabs>
16
+ <Tabs.List>
17
+ <Tabs.Item value="1">Item 1</Tabs.Item>
18
+ <Tabs.Item value="2">Item 2</Tabs.Item>
19
+ </Tabs.List>
20
+
21
+ <Tabs.Panel value="1">Content 1</Tabs.Panel>
22
+ <Tabs.Panel value="2">Content 2</Tabs.Panel>
23
+ </Tabs>),
24
+ play: async ({ canvas }) => {
25
+ const list = canvas.getByRole("tablist");
26
+ const items = canvas.getAllByRole("tab");
27
+ const panels = canvas.getAllByRole("tabpanel", { hidden: true });
28
+ expect(list).toBeInTheDocument();
29
+ expect(items).toHaveLength(2);
30
+ expect(panels).toHaveLength(2);
31
+ expect(panels[0]).toBeVisible();
32
+ expect(panels[1]).not.toBeVisible();
33
+ const selectedItem = items[0];
34
+ const selectedPanel = panels[0];
35
+ expect(selectedItem).toHaveAttribute("aria-selected", "true");
36
+ expect(selectedItem.getAttribute("aria-controls")).toBe(selectedPanel.getAttribute("id"));
37
+ const unselectedItem = items[1];
38
+ const unselectedPanel = panels[1];
39
+ expect(unselectedItem).toHaveAttribute("aria-selected", "false");
40
+ expect(unselectedItem.getAttribute("aria-controls")).toBe(unselectedPanel.getAttribute("id"));
41
+ await userEvent.tab();
42
+ expect(document.activeElement).toBe(items[0]);
43
+ await userEvent.tab();
44
+ waitFor(() => {
45
+ expect(document.activeElement).toBe(panels[0]);
46
+ });
47
+ },
48
+ };
49
+ export const defaultValue = {
50
+ name: "defaultValue, uncontrolled",
51
+ args: {
52
+ handleChange: fn(),
53
+ },
54
+ render: (args) => (<Tabs defaultValue="2" onChange={args.handleChange}>
55
+ <Tabs.List>
56
+ <Tabs.Item value="1">Item 1</Tabs.Item>
57
+ <Tabs.Item value="2">Item 2</Tabs.Item>
58
+ </Tabs.List>
59
+
60
+ <Tabs.Panel value="1">Content 1</Tabs.Panel>
61
+ <Tabs.Panel value="2">Content 2</Tabs.Panel>
62
+ </Tabs>),
63
+ play: async ({ canvas, args }) => {
64
+ const items = canvas.getAllByRole("tab");
65
+ expect(items[1]).toHaveAttribute("aria-selected", "true");
66
+ expect(items[1]).toHaveAttribute("tabindex", "0");
67
+ expect(items[0]).toHaveAttribute("tabindex", "-1");
68
+ await userEvent.click(items[0]);
69
+ expect(args.handleChange).toHaveBeenCalledTimes(1);
70
+ expect(args.handleChange).toHaveBeenCalledWith({ value: "1" });
71
+ expect(document.activeElement).toBe(items[0]);
72
+ expect(items[0]).toHaveAttribute("aria-selected", "true");
73
+ expect(items[0]).toHaveAttribute("tabindex", "0");
74
+ expect(items[1]).toHaveAttribute("tabindex", "-1");
75
+ },
76
+ };
77
+ export const value = {
78
+ name: "value, controlled",
79
+ args: {
80
+ handleChange: fn(),
81
+ },
82
+ render: (args) => (<Tabs value="2" onChange={args.handleChange}>
83
+ <Tabs.List>
84
+ <Tabs.Item value="1">Item 1</Tabs.Item>
85
+ <Tabs.Item value="2">Item 2</Tabs.Item>
86
+ </Tabs.List>
87
+
88
+ <Tabs.Panel value="1">Content 1</Tabs.Panel>
89
+ <Tabs.Panel value="2">Content 2</Tabs.Panel>
90
+ </Tabs>),
91
+ play: async ({ canvas, args }) => {
92
+ const items = canvas.getAllByRole("tab");
93
+ expect(items[1]).toHaveAttribute("aria-selected", "true");
94
+ expect(items[1]).toHaveAttribute("tabindex", "0");
95
+ expect(items[0]).toHaveAttribute("tabindex", "-1");
96
+ await userEvent.click(items[0]);
97
+ expect(args.handleChange).toHaveBeenCalledTimes(1);
98
+ expect(args.handleChange).toHaveBeenCalledWith({ value: "1" });
99
+ expect(document.activeElement).toBe(items[0]);
100
+ expect(items[1]).toHaveAttribute("aria-selected", "true");
101
+ expect(items[1]).toHaveAttribute("tabindex", "0");
102
+ expect(items[0]).toHaveAttribute("tabindex", "-1");
103
+ },
104
+ };
105
+ export const className = {
106
+ name: "className, attributes",
107
+ render: () => (<div data-testid="root">
108
+ <Tabs>
109
+ <Tabs.List attributes={{ id: "test-list-id" }} className="test-list-classname">
110
+ <Tabs.Item attributes={{ id: "test-item-id" }} value="1">
111
+ Item
112
+ </Tabs.Item>
113
+ </Tabs.List>
114
+
115
+ <Tabs.Panel attributes={{ "data-testid": "test-panel-id" }} className="test-panel-classname" value="1"/>
116
+ </Tabs>
117
+ </div>),
118
+ play: async ({ canvas }) => {
119
+ const list = canvas.getByTestId("root").firstChild;
120
+ const item = within(list).getByRole("presentation");
121
+ const panel = canvas.getByRole("tabpanel");
122
+ expect(list).toHaveClass("test-list-classname");
123
+ expect(list).toHaveAttribute("id", "test-list-id");
124
+ expect(item).toHaveAttribute("id", "test-item-id");
125
+ expect(panel).toHaveClass("test-panel-classname");
126
+ expect(panel).toHaveAttribute("data-testid", "test-panel-id");
127
+ },
128
+ };
@@ -8,10 +8,31 @@ declare const _default: {
8
8
  };
9
9
  };
10
10
  export default _default;
11
- export declare const variant: () => import("react").JSX.Element;
12
- export declare const weight: () => import("react").JSX.Element;
13
- export declare const color: () => import("react").JSX.Element;
14
- export declare const decoration: () => import("react").JSX.Element;
15
- export declare const wrap: () => import("react").JSX.Element;
16
- export declare const maxLines: () => import("react").JSX.Element;
17
- export declare const align: () => import("react").JSX.Element;
11
+ export declare const variant: {
12
+ name: string;
13
+ render: () => import("react").JSX.Element;
14
+ };
15
+ export declare const weight: {
16
+ name: string;
17
+ render: () => import("react").JSX.Element;
18
+ };
19
+ export declare const color: {
20
+ name: string;
21
+ render: () => import("react").JSX.Element;
22
+ };
23
+ export declare const decoration: {
24
+ name: string;
25
+ render: () => import("react").JSX.Element;
26
+ };
27
+ export declare const wrap: {
28
+ name: string;
29
+ render: () => import("react").JSX.Element;
30
+ };
31
+ export declare const maxLines: {
32
+ name: string;
33
+ render: () => import("react").JSX.Element;
34
+ };
35
+ export declare const align: {
36
+ name: string;
37
+ render: () => import("react").JSX.Element;
38
+ };
@@ -9,129 +9,152 @@ export default {
9
9
  },
10
10
  },
11
11
  };
12
- export const variant = () => (<Example>
13
- <Example.Item title="variant: title-1">
14
- <Text variant="title-1">Title 1</Text>
15
- </Example.Item>
16
- <Example.Item title="variant: title-2">
17
- <Text variant="title-2">Title 2</Text>
18
- </Example.Item>
19
- <Example.Item title="variant: title-3">
20
- <Text variant="title-3">Title 3</Text>
21
- </Example.Item>
22
- <Example.Item title="variant: title-4">
23
- <Text variant="title-4">Title 4</Text>
24
- </Example.Item>
25
- <Example.Item title="variant: title-5">
26
- <Text variant="title-5">Title 5</Text>
27
- </Example.Item>
28
- <Example.Item title="variant: title-6">
29
- <Text variant="title-6">Title 6</Text>
30
- </Example.Item>
31
- <Example.Item title="variant: featured-1">
32
- <Text variant="featured-1">Featured 1</Text>
33
- </Example.Item>
34
- <Example.Item title="variant: featured-2">
35
- <Text variant="featured-2">Featured 2</Text>
36
- </Example.Item>
37
- <Example.Item title="variant: featured-3">
38
- <Text variant="featured-3">Featured 3</Text>
39
- </Example.Item>
40
- <Example.Item title="variant: body-1">
41
- <Text variant="body-1">Body 1</Text>
42
- </Example.Item>
43
- <Example.Item title="variant: body-2">
44
- <Text variant="body-2">Body 2</Text>
45
- </Example.Item>
46
- <Example.Item title="variant: body-3">
47
- <Text variant="body-3">Body 3</Text>
48
- </Example.Item>
49
- <Example.Item title="variant: caption-1">
50
- <Text variant="caption-1">Caption 1</Text>
51
- </Example.Item>
52
- <Example.Item title="variant: caption-2">
53
- <Text variant="caption-2">Caption 2</Text>
54
- </Example.Item>
55
- <Example.Item title={["responsive variant", "[s] body-3", "[m+] title-4"]}>
56
- <Text variant={{ s: "body-3", m: "title-4" }}>Responsive</Text>
57
- </Example.Item>
58
- </Example>);
59
- export const weight = () => (<Example>
60
- <Example.Item title="weight: regular">
61
- <Text weight="regular">Regular</Text>
62
- </Example.Item>
63
- <Example.Item title="weight: medium">
64
- <Text weight="medium">Medium</Text>
65
- </Example.Item>
66
- <Example.Item title="weight: bold">
67
- <Text weight="bold">Bold</Text>
68
- </Example.Item>
69
- <Example.Item title={["responsive", "[s] weight: regular", "[m+] bold"]}>
70
- <Text weight={{ s: "regular", m: "bold" }}>Responsive</Text>
71
- </Example.Item>
72
- </Example>);
73
- export const color = () => (<Example>
74
- <Example.Item title="color: inherit">
75
- <Text>Neutral</Text>
76
- </Example.Item>
77
- <Example.Item title="color: neutral-faded">
78
- <Text color="neutral-faded">Faded</Text>
79
- </Example.Item>
80
- <Example.Item title="color: positive">
81
- <Text color="positive">Positive</Text>
82
- </Example.Item>
83
- <Example.Item title="color: warning">
84
- <Text color="warning">Warning</Text>
85
- </Example.Item>
86
- <Example.Item title="color: critical">
87
- <Text color="critical">Critical</Text>
88
- </Example.Item>
89
- <Example.Item title="color: primary">
90
- <Text color="primary">Primary</Text>
91
- </Example.Item>
92
- <Example.Item title="color: disabled">
93
- <Text color="disabled">Disabled</Text>
94
- </Example.Item>
95
- </Example>);
96
- export const decoration = () => (<Example>
97
- <Example.Item title="decoration: line-through">
98
- <Text decoration="line-through">Line through</Text>
99
- </Example.Item>
100
- </Example>);
101
- export const wrap = () => (<Example>
102
- <Example.Item title="wrap: balance">
103
- <Text wrap="balance" variant="title-3">
104
- The design system you want to build
105
- </Text>
106
- </Example.Item>
107
- </Example>);
108
- export const maxLines = () => (<Example>
109
- <Example.Item title="maxLines: 2">
110
- <Text maxLines={2}>
111
- There are many variations of passages of Lorem Ipsum available, but the majority have
112
- suffered alteration in some form, by injected humour, or randomised words which don't look
113
- even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be
114
- sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum
115
- generators on the Internet tend to repeat predefined chunks as necessary, making this the
116
- first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined
117
- with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable.
118
- The generated Lorem Ipsum is therefore always free from repetition, injected humour, or
119
- non-characteristic words etc.
120
- </Text>
121
- </Example.Item>
122
- </Example>);
123
- export const align = () => (<Example>
124
- <Example.Item title="align: start">
125
- <Text align="start">Text content</Text>
126
- </Example.Item>
127
- <Example.Item title="align: center">
128
- <Text align="center">Text content</Text>
129
- </Example.Item>
130
- <Example.Item title="align: end">
131
- <Text align="end">Text content</Text>
132
- </Example.Item>
12
+ export const variant = {
13
+ name: "variant",
14
+ render: () => (<Example>
15
+ <Example.Item title="variant: title-1">
16
+ <Text variant="title-1">Title 1</Text>
17
+ </Example.Item>
18
+ <Example.Item title="variant: title-2">
19
+ <Text variant="title-2">Title 2</Text>
20
+ </Example.Item>
21
+ <Example.Item title="variant: title-3">
22
+ <Text variant="title-3">Title 3</Text>
23
+ </Example.Item>
24
+ <Example.Item title="variant: title-4">
25
+ <Text variant="title-4">Title 4</Text>
26
+ </Example.Item>
27
+ <Example.Item title="variant: title-5">
28
+ <Text variant="title-5">Title 5</Text>
29
+ </Example.Item>
30
+ <Example.Item title="variant: title-6">
31
+ <Text variant="title-6">Title 6</Text>
32
+ </Example.Item>
33
+ <Example.Item title="variant: featured-1">
34
+ <Text variant="featured-1">Featured 1</Text>
35
+ </Example.Item>
36
+ <Example.Item title="variant: featured-2">
37
+ <Text variant="featured-2">Featured 2</Text>
38
+ </Example.Item>
39
+ <Example.Item title="variant: featured-3">
40
+ <Text variant="featured-3">Featured 3</Text>
41
+ </Example.Item>
42
+ <Example.Item title="variant: body-1">
43
+ <Text variant="body-1">Body 1</Text>
44
+ </Example.Item>
45
+ <Example.Item title="variant: body-2">
46
+ <Text variant="body-2">Body 2</Text>
47
+ </Example.Item>
48
+ <Example.Item title="variant: body-3">
49
+ <Text variant="body-3">Body 3</Text>
50
+ </Example.Item>
51
+ <Example.Item title="variant: caption-1">
52
+ <Text variant="caption-1">Caption 1</Text>
53
+ </Example.Item>
54
+ <Example.Item title="variant: caption-2">
55
+ <Text variant="caption-2">Caption 2</Text>
56
+ </Example.Item>
57
+ <Example.Item title={["responsive variant", "[s] body-3", "[m+] title-4"]}>
58
+ <Text variant={{ s: "body-3", m: "title-4" }}>Responsive</Text>
59
+ </Example.Item>
60
+ </Example>),
61
+ };
62
+ export const weight = {
63
+ name: "weight",
64
+ render: () => (<Example>
65
+ <Example.Item title="weight: regular">
66
+ <Text weight="regular">Regular</Text>
67
+ </Example.Item>
68
+ <Example.Item title="weight: medium">
69
+ <Text weight="medium">Medium</Text>
70
+ </Example.Item>
71
+ <Example.Item title="weight: bold">
72
+ <Text weight="bold">Bold</Text>
73
+ </Example.Item>
74
+ <Example.Item title={["responsive", "[s] weight: regular", "[m+] bold"]}>
75
+ <Text weight={{ s: "regular", m: "bold" }}>Responsive</Text>
76
+ </Example.Item>
77
+ </Example>),
78
+ };
79
+ export const color = {
80
+ name: "color",
81
+ render: () => (<Example>
82
+ <Example.Item title="color: inherit">
83
+ <Text>Neutral</Text>
84
+ </Example.Item>
85
+ <Example.Item title="color: neutral-faded">
86
+ <Text color="neutral-faded">Faded</Text>
87
+ </Example.Item>
88
+ <Example.Item title="color: positive">
89
+ <Text color="positive">Positive</Text>
90
+ </Example.Item>
91
+ <Example.Item title="color: warning">
92
+ <Text color="warning">Warning</Text>
93
+ </Example.Item>
94
+ <Example.Item title="color: critical">
95
+ <Text color="critical">Critical</Text>
96
+ </Example.Item>
97
+ <Example.Item title="color: primary">
98
+ <Text color="primary">Primary</Text>
99
+ </Example.Item>
100
+ <Example.Item title="color: disabled">
101
+ <Text color="disabled" attributes={{ "aria-disabled": true }}>
102
+ Disabled
103
+ </Text>
104
+ </Example.Item>
105
+ </Example>),
106
+ };
107
+ export const decoration = {
108
+ name: "decoration",
109
+ render: () => (<Example>
110
+ <Example.Item title="decoration: line-through">
111
+ <Text decoration="line-through">Line through</Text>
112
+ </Example.Item>
113
+ </Example>),
114
+ };
115
+ export const wrap = {
116
+ name: "wrap",
117
+ render: () => (<Example>
118
+ <Example.Item title="wrap: balance">
119
+ <Text wrap="balance" variant="title-3">
120
+ The design system you want to build
121
+ </Text>
122
+ </Example.Item>
123
+ </Example>),
124
+ };
125
+ export const maxLines = {
126
+ name: "maxLines",
127
+ render: () => (<Example>
128
+ <Example.Item title="maxLines: 2">
129
+ <Text maxLines={2}>
130
+ There are many variations of passages of Lorem Ipsum available, but the majority have
131
+ suffered alteration in some form, by injected humour, or randomised words which don't look
132
+ even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be
133
+ sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum
134
+ generators on the Internet tend to repeat predefined chunks as necessary, making this the
135
+ first true generator on the Internet. It uses a dictionary of over 200 Latin words,
136
+ combined with a handful of model sentence structures, to generate Lorem Ipsum which looks
137
+ reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected
138
+ humour, or non-characteristic words etc.
139
+ </Text>
140
+ </Example.Item>
141
+ </Example>),
142
+ };
143
+ export const align = {
144
+ name: "align",
145
+ render: () => (<Example>
146
+ <Example.Item title="align: start">
147
+ <Text align="start">Text content</Text>
148
+ </Example.Item>
149
+ <Example.Item title="align: center">
150
+ <Text align="center">Text content</Text>
151
+ </Example.Item>
152
+ <Example.Item title="align: end">
153
+ <Text align="end">Text content</Text>
154
+ </Example.Item>
133
155
 
134
- <Example.Item title={["responsive alignment", "[s]: center", "[m+] start"]}>
135
- <Text align={{ s: "center", m: "start" }}>Text content</Text>
136
- </Example.Item>
137
- </Example>);
156
+ <Example.Item title={["responsive alignment", "[s]: center", "[m+] start"]}>
157
+ <Text align={{ s: "center", m: "start" }}>Text content</Text>
158
+ </Example.Item>
159
+ </Example>),
160
+ };
@@ -0,0 +1,18 @@
1
+ import { StoryObj } from "@storybook/react";
2
+ declare const _default: {
3
+ title: string;
4
+ component: <As extends keyof React.JSX.IntrinsicElements>(props: import("./..").TextProps<As>) => import("react").JSX.Element;
5
+ parameters: {
6
+ iframe: {
7
+ url: string;
8
+ };
9
+ chromatic: {
10
+ disableSnapshot: boolean;
11
+ };
12
+ };
13
+ };
14
+ export default _default;
15
+ export declare const asProp: StoryObj;
16
+ export declare const headingAs: StoryObj;
17
+ export declare const headingAsResponsive: StoryObj;
18
+ export declare const className: StoryObj;