reshaped 3.8.0-canary.0 → 3.8.0-canary.10

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 (290) hide show
  1. package/CHANGELOG.md +101 -8
  2. package/README.md +2 -2
  3. package/dist/bundle.css +1 -1
  4. package/dist/bundle.d.ts +1 -1
  5. package/dist/bundle.js +11 -11
  6. package/dist/components/Accordion/AccordionControlled.js +1 -0
  7. package/dist/components/Actionable/Actionable.js +17 -3
  8. package/dist/components/Actionable/Actionable.module.css +1 -1
  9. package/dist/components/Actionable/Actionable.types.d.ts +15 -3
  10. package/dist/components/Actionable/tests/Actionable.stories.d.ts +13 -1
  11. package/dist/components/Actionable/tests/Actionable.stories.js +127 -7
  12. package/dist/components/Alert/tests/Alert.stories.d.ts +6 -5
  13. package/dist/components/Alert/tests/Alert.stories.js +15 -2
  14. package/dist/components/Autocomplete/Autocomplete.js +2 -2
  15. package/dist/components/Autocomplete/Autocomplete.types.d.ts +1 -1
  16. package/dist/components/Badge/Badge.module.css +1 -1
  17. package/dist/components/Badge/tests/Badge.stories.d.ts +5 -0
  18. package/dist/components/Badge/tests/Badge.stories.js +34 -0
  19. package/dist/components/Breadcrumbs/Breadcrumbs.js +1 -0
  20. package/dist/components/Breadcrumbs/tests/Breadcrumbs.stories.d.ts +8 -4
  21. package/dist/components/Breadcrumbs/tests/Breadcrumbs.stories.js +57 -1
  22. package/dist/components/Button/Button.js +2 -2
  23. package/dist/components/Button/Button.types.d.ts +1 -1
  24. package/dist/components/Button/tests/Button.stories.d.ts +54 -12
  25. package/dist/components/Button/tests/Button.stories.js +725 -588
  26. package/dist/components/Calendar/CalendarMonth.js +1 -0
  27. package/dist/components/Card/Card.d.ts +1 -1
  28. package/dist/components/Card/Card.module.css +1 -1
  29. package/dist/components/Card/tests/Card.stories.d.ts +29 -7
  30. package/dist/components/Card/tests/Card.stories.js +110 -65
  31. package/dist/components/Carousel/Carousel.js +1 -0
  32. package/dist/components/Carousel/Carousel.module.css +1 -1
  33. package/dist/components/Checkbox/Checkbox.module.css +1 -1
  34. package/dist/components/Checkbox/tests/Checkbox.stories.d.ts +20 -4
  35. package/dist/components/Checkbox/tests/Checkbox.stories.js +150 -79
  36. package/dist/components/CheckboxGroup/tests/CheckboxGroup.stories.d.ts +9 -2
  37. package/dist/components/CheckboxGroup/tests/CheckboxGroup.stories.js +67 -35
  38. package/dist/components/Container/tests/Container.stories.d.ts +2 -0
  39. package/dist/components/Container/tests/Container.stories.js +14 -0
  40. package/dist/components/ContextMenu/tests/ContextMenu.stories.d.ts +10 -1
  41. package/dist/components/ContextMenu/tests/ContextMenu.stories.js +57 -13
  42. package/dist/components/Dismissible/tests/Dismissible.stories.d.ts +5 -0
  43. package/dist/components/Dismissible/tests/Dismissible.stories.js +30 -1
  44. package/dist/components/Divider/tests/Divider.stories.d.ts +8 -3
  45. package/dist/components/Divider/tests/Divider.stories.js +71 -41
  46. package/dist/components/DropdownMenu/DropdownMenu.js +4 -4
  47. package/dist/components/DropdownMenu/DropdownMenu.types.d.ts +2 -2
  48. package/dist/components/DropdownMenu/tests/DropdownMenu.stories.d.ts +35 -6
  49. package/dist/components/DropdownMenu/tests/DropdownMenu.stories.js +222 -115
  50. package/dist/components/DropdownMenu/tests/DropdownMenu.test.stories.d.ts +0 -15
  51. package/dist/components/DropdownMenu/tests/DropdownMenu.test.stories.js +0 -106
  52. package/dist/components/FileUpload/FileUpload.module.css +1 -1
  53. package/dist/components/Flyout/Flyout.module.css +1 -1
  54. package/dist/components/Flyout/Flyout.types.d.ts +9 -6
  55. package/dist/components/Flyout/FlyoutContent.js +4 -1
  56. package/dist/components/Flyout/FlyoutControlled.js +11 -3
  57. package/dist/components/Flyout/index.d.ts +1 -1
  58. package/dist/components/Flyout/tests/Flyout.stories.d.ts +12 -0
  59. package/dist/components/Flyout/tests/Flyout.stories.js +112 -6
  60. package/dist/components/Flyout/useFlyout.d.ts +1 -6
  61. package/dist/components/Flyout/useFlyout.js +7 -1
  62. package/dist/components/Flyout/utilities/calculatePosition.d.ts +3 -2
  63. package/dist/components/Flyout/utilities/calculatePosition.js +85 -36
  64. package/dist/components/Flyout/utilities/flyout.js +24 -19
  65. package/dist/components/Flyout/utilities/getPositionFallbacks.js +3 -3
  66. package/dist/components/Flyout/utilities/helpers.d.ts +7 -0
  67. package/dist/components/Flyout/utilities/helpers.js +14 -0
  68. package/dist/components/Flyout/utilities/isFullyVisible.d.ts +4 -2
  69. package/dist/components/Flyout/utilities/isFullyVisible.js +6 -8
  70. package/dist/components/FormControl/FormControl.context.d.ts +1 -1
  71. package/dist/components/FormControl/tests/FormControl.stories.d.ts +2 -0
  72. package/dist/components/FormControl/tests/FormControl.stories.js +35 -0
  73. package/dist/components/Hidden/tests/Hidden.stories.d.ts +2 -0
  74. package/dist/components/Hidden/tests/Hidden.stories.js +9 -0
  75. package/dist/components/HiddenVisually/tests/HiddenVisually.stories.d.ts +2 -0
  76. package/dist/components/HiddenVisually/tests/HiddenVisually.stories.js +9 -0
  77. package/dist/components/Hotkey/tests/Hotkey.stories.d.ts +2 -0
  78. package/dist/components/Hotkey/tests/Hotkey.stories.js +15 -0
  79. package/dist/components/Icon/Icon.js +2 -2
  80. package/dist/components/Icon/Icon.types.d.ts +1 -1
  81. package/dist/components/Icon/tests/Icon.stories.d.ts +3 -0
  82. package/dist/components/Icon/tests/Icon.stories.js +29 -1
  83. package/dist/components/Link/Link.d.ts +1 -1
  84. package/dist/components/Link/Link.js +2 -2
  85. package/dist/components/Link/Link.types.d.ts +1 -1
  86. package/dist/components/Link/tests/Link.stories.d.ts +29 -6
  87. package/dist/components/Link/tests/Link.stories.js +141 -58
  88. package/dist/components/Link/tests/Link.test.stories.d.ts +1 -13
  89. package/dist/components/Link/tests/Link.test.stories.js +0 -76
  90. package/dist/components/Loader/tests/Loader.stories.d.ts +11 -2
  91. package/dist/components/Loader/tests/Loader.stories.js +52 -25
  92. package/dist/components/Loader/tests/Loader.test.stories.d.ts +0 -3
  93. package/dist/components/Loader/tests/Loader.test.stories.js +0 -21
  94. package/dist/components/MenuItem/MenuItem.js +2 -2
  95. package/dist/components/MenuItem/MenuItem.module.css +1 -1
  96. package/dist/components/MenuItem/MenuItem.types.d.ts +1 -1
  97. package/dist/components/MenuItem/tests/MenuItem.stories.d.ts +37 -7
  98. package/dist/components/MenuItem/tests/MenuItem.stories.js +218 -112
  99. package/dist/components/Modal/Modal.js +1 -1
  100. package/dist/components/Modal/Modal.module.css +1 -1
  101. package/dist/components/Modal/tests/Modal.stories.d.ts +53 -10
  102. package/dist/components/Modal/tests/Modal.stories.js +367 -210
  103. package/dist/components/Overlay/Overlay.js +2 -1
  104. package/dist/components/Overlay/tests/Overlay.stories.d.ts +15 -1
  105. package/dist/components/Overlay/tests/Overlay.stories.js +135 -1
  106. package/dist/components/Pagination/tests/Pagination.stories.d.ts +14 -1
  107. package/dist/components/Pagination/tests/Pagination.stories.js +93 -15
  108. package/dist/components/PinField/PinField.module.css +1 -1
  109. package/dist/components/PinField/tests/PinField.stories.d.ts +24 -3
  110. package/dist/components/PinField/tests/PinField.stories.js +194 -47
  111. package/dist/components/Popover/Popover.js +2 -2
  112. package/dist/components/Popover/Popover.module.css +1 -1
  113. package/dist/components/Popover/Popover.types.d.ts +3 -1
  114. package/dist/components/Progress/tests/Progress.stories.d.ts +19 -4
  115. package/dist/components/Progress/tests/Progress.stories.js +85 -49
  116. package/dist/components/Radio/Radio.module.css +1 -1
  117. package/dist/components/Radio/tests/Radio.stories.d.ts +25 -4
  118. package/dist/components/Radio/tests/Radio.stories.js +147 -65
  119. package/dist/components/RadioGroup/tests/RadioGroup.stories.d.ts +9 -2
  120. package/dist/components/RadioGroup/tests/RadioGroup.stories.js +64 -38
  121. package/dist/components/Reshaped/Reshaped.css +1 -1
  122. package/dist/components/Scrim/tests/Scrim.stories.d.ts +10 -2
  123. package/dist/components/Scrim/tests/Scrim.stories.js +51 -31
  124. package/dist/components/ScrollArea/ScrollArea.module.css +1 -1
  125. package/dist/components/Select/Select.d.ts +8 -1
  126. package/dist/components/Select/Select.js +22 -48
  127. package/dist/components/Select/Select.module.css +1 -1
  128. package/dist/components/Select/Select.types.d.ts +83 -38
  129. package/dist/components/Select/SelectCustom.d.ts +3 -0
  130. package/dist/components/Select/SelectCustom.js +12 -0
  131. package/dist/components/Select/SelectCustomControlled.d.ts +4 -0
  132. package/dist/components/Select/SelectCustomControlled.js +105 -0
  133. package/dist/components/Select/SelectCustomUncontrolled.d.ts +4 -0
  134. package/dist/components/Select/SelectCustomUncontrolled.js +18 -0
  135. package/dist/components/Select/SelectEndContent.d.ts +3 -0
  136. package/dist/components/Select/SelectEndContent.js +12 -0
  137. package/dist/components/Select/SelectNative.d.ts +4 -0
  138. package/dist/components/Select/SelectNative.js +29 -0
  139. package/dist/components/Select/SelectOption.d.ts +4 -0
  140. package/dist/components/Select/SelectOption.js +13 -0
  141. package/dist/components/Select/SelectOptionGroup.d.ts +4 -0
  142. package/dist/components/Select/SelectOptionGroup.js +9 -0
  143. package/dist/components/Select/SelectRoot.d.ts +4 -0
  144. package/dist/components/Select/SelectRoot.js +21 -0
  145. package/dist/components/Select/SelectStartContent.d.ts +3 -0
  146. package/dist/components/Select/SelectStartContent.js +20 -0
  147. package/dist/components/Select/SelectTrigger.d.ts +4 -0
  148. package/dist/components/Select/SelectTrigger.js +16 -0
  149. package/dist/components/Select/tests/Select.stories.d.ts +38 -10
  150. package/dist/components/Select/tests/Select.stories.js +504 -175
  151. package/dist/components/Skeleton/tests/Skeleton.stories.d.ts +10 -2
  152. package/dist/components/Skeleton/tests/Skeleton.stories.js +46 -28
  153. package/dist/components/Slider/Slider.module.css +1 -1
  154. package/dist/components/Stepper/Stepper.js +2 -2
  155. package/dist/components/Stepper/Stepper.types.d.ts +2 -0
  156. package/dist/components/Stepper/tests/Stepper.stories.d.ts +18 -3
  157. package/dist/components/Stepper/tests/Stepper.stories.js +99 -47
  158. package/dist/components/Switch/Switch.module.css +1 -1
  159. package/dist/components/Switch/tests/Switch.stories.d.ts +10 -2
  160. package/dist/components/Switch/tests/Switch.stories.js +77 -23
  161. package/dist/components/Switch/tests/Switch.test.stories.d.ts +0 -10
  162. package/dist/components/Switch/tests/Switch.test.stories.js +0 -68
  163. package/dist/components/Table/Table.js +5 -3
  164. package/dist/components/Table/Table.module.css +1 -1
  165. package/dist/components/Table/tests/Table.stories.d.ts +25 -5
  166. package/dist/components/Table/tests/Table.stories.js +274 -177
  167. package/dist/components/Table/tests/Table.test.stories.d.ts +0 -5
  168. package/dist/components/Table/tests/Table.test.stories.js +0 -82
  169. package/dist/components/Tabs/Tabs.module.css +1 -1
  170. package/dist/components/Tabs/TabsControlled.js +1 -0
  171. package/dist/components/TextArea/TextArea.module.css +1 -1
  172. package/dist/components/TextArea/tests/TextArea.stories.d.ts +41 -9
  173. package/dist/components/TextArea/tests/TextArea.stories.js +179 -93
  174. package/dist/components/TextField/TextField.js +1 -1
  175. package/dist/components/TextField/TextField.module.css +1 -1
  176. package/dist/components/TextField/tests/TextField.stories.d.ts +41 -11
  177. package/dist/components/TextField/tests/TextField.stories.js +206 -132
  178. package/dist/components/TextField/tests/TextField.test.stories.d.ts +0 -13
  179. package/dist/components/TextField/tests/TextField.test.stories.js +0 -88
  180. package/dist/components/Theme/Theme.module.css +1 -1
  181. package/dist/components/Timeline/Timeline.js +2 -2
  182. package/dist/components/Timeline/tests/Timeline.stories.d.ts +10 -2
  183. package/dist/components/Timeline/tests/Timeline.stories.js +69 -45
  184. package/dist/components/Timeline/tests/Timeline.test.stories.d.ts +0 -2
  185. package/dist/components/Timeline/tests/Timeline.test.stories.js +0 -21
  186. package/dist/components/Toast/ToastContainer.js +1 -0
  187. package/dist/components/Toast/ToastRegion.js +1 -0
  188. package/dist/components/Toast/tests/Toast.stories.d.ts +32 -8
  189. package/dist/components/Toast/tests/Toast.stories.js +111 -37
  190. package/dist/components/ToggleButton/ToggleButton.types.d.ts +1 -1
  191. package/dist/components/ToggleButtonGroup/ToggleButtonGroupControlled.js +1 -0
  192. package/dist/components/Tooltip/Tooltip.js +1 -1
  193. package/dist/components/Tooltip/Tooltip.types.d.ts +2 -2
  194. package/dist/components/Tooltip/tests/Tooltip.stories.d.ts +18 -4
  195. package/dist/components/Tooltip/tests/Tooltip.stories.js +139 -107
  196. package/dist/components/Tooltip/tests/Tooltip.test.stories.d.ts +0 -6
  197. package/dist/components/Tooltip/tests/Tooltip.test.stories.js +0 -29
  198. package/dist/components/View/View.js +11 -4
  199. package/dist/components/View/tests/View.stories.d.ts +4 -0
  200. package/dist/components/View/tests/View.stories.js +39 -0
  201. package/dist/components/_private/Expandable/Expandable.js +3 -1
  202. package/dist/components/_private/Portal/Portal.js +4 -1
  203. package/dist/hooks/_private/useIsDismissible.d.ts +1 -0
  204. package/dist/hooks/_private/useIsDismissible.js +6 -6
  205. package/dist/hooks/_private/usePrevious.js +1 -0
  206. package/dist/hooks/tests/useDrag.stories.js +1 -1
  207. package/dist/hooks/useScrollLock.js +5 -3
  208. package/dist/index.d.ts +1 -1
  209. package/dist/styles/resolvers/align/align.css +1 -1
  210. package/dist/styles/resolvers/aspectRatio/aspectRatio.css +1 -1
  211. package/dist/styles/resolvers/bleed/bleed.module.css +1 -1
  212. package/dist/styles/resolvers/justify/justify.css +1 -1
  213. package/dist/styles/resolvers/maxHeight/maxHeight.module.css +1 -1
  214. package/dist/styles/resolvers/maxWidth/maxWidth.module.css +1 -1
  215. package/dist/styles/resolvers/minHeight/minHeight.module.css +1 -1
  216. package/dist/styles/resolvers/minWidth/minWidth.module.css +1 -1
  217. package/dist/styles/resolvers/position/position.css +1 -1
  218. package/dist/styles/resolvers/textAlign/textAlign.css +1 -1
  219. package/dist/styles/resolvers/width/width.module.css +1 -1
  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 +44 -33
  227. package/dist/components/Actionable/tests/Actionable.test.stories.d.ts +0 -32
  228. package/dist/components/Actionable/tests/Actionable.test.stories.js +0 -130
  229. package/dist/components/Alert/tests/Alert.test.stories.d.ts +0 -15
  230. package/dist/components/Alert/tests/Alert.test.stories.js +0 -26
  231. package/dist/components/Badge/tests/Badge.test.stories.d.ts +0 -20
  232. package/dist/components/Badge/tests/Badge.test.stories.js +0 -46
  233. package/dist/components/Breadcrumbs/tests/Breadcrumbs.test.stories.d.ts +0 -23
  234. package/dist/components/Breadcrumbs/tests/Breadcrumbs.test.stories.js +0 -76
  235. package/dist/components/Button/tests/Button.test.stories.d.ts +0 -27
  236. package/dist/components/Button/tests/Button.test.stories.js +0 -112
  237. package/dist/components/Card/tests/Card.test.stories.d.ts +0 -35
  238. package/dist/components/Card/tests/Card.test.stories.js +0 -54
  239. package/dist/components/Checkbox/tests/Checkbox.test.stories.d.ts +0 -25
  240. package/dist/components/Checkbox/tests/Checkbox.test.stories.js +0 -104
  241. package/dist/components/CheckboxGroup/tests/CheckboxGroup.test.stories.d.ts +0 -22
  242. package/dist/components/CheckboxGroup/tests/CheckboxGroup.test.stories.js +0 -78
  243. package/dist/components/Container/tests/Container.test.stories.d.ts +0 -15
  244. package/dist/components/Container/tests/Container.test.stories.js +0 -26
  245. package/dist/components/ContextMenu/tests/ContextMenu.test.stories.d.ts +0 -25
  246. package/dist/components/ContextMenu/tests/ContextMenu.test.stories.js +0 -53
  247. package/dist/components/Dismissible/tests/Dismissible.test.stories.d.ts +0 -19
  248. package/dist/components/Dismissible/tests/Dismissible.test.stories.js +0 -42
  249. package/dist/components/Divider/tests/Divider.test.stories.d.ts +0 -18
  250. package/dist/components/Divider/tests/Divider.test.stories.js +0 -47
  251. package/dist/components/FormControl/tests/FormControl.test.stories.d.ts +0 -20
  252. package/dist/components/FormControl/tests/FormControl.test.stories.js +0 -49
  253. package/dist/components/Hidden/tests/Hidden.test.stories.d.ts +0 -15
  254. package/dist/components/Hidden/tests/Hidden.test.stories.js +0 -20
  255. package/dist/components/HiddenVisually/tests/HiddenVisually.test.stories.d.ts +0 -15
  256. package/dist/components/HiddenVisually/tests/HiddenVisually.test.stories.js +0 -20
  257. package/dist/components/Hotkey/tests/Hotkey.test.stories.d.ts +0 -15
  258. package/dist/components/Hotkey/tests/Hotkey.test.stories.js +0 -26
  259. package/dist/components/Icon/tests/Icon.test.stories.d.ts +0 -16
  260. package/dist/components/Icon/tests/Icon.test.stories.js +0 -35
  261. package/dist/components/MenuItem/tests/MenuItem.test.stories.d.ts +0 -26
  262. package/dist/components/MenuItem/tests/MenuItem.test.stories.js +0 -100
  263. package/dist/components/Modal/tests/Modal.test.stories.d.ts +0 -31
  264. package/dist/components/Modal/tests/Modal.test.stories.js +0 -149
  265. package/dist/components/Overlay/tests/Overlay.test.stories.d.ts +0 -28
  266. package/dist/components/Overlay/tests/Overlay.test.stories.js +0 -148
  267. package/dist/components/Pagination/tests/Pagination.test.stories.d.ts +0 -23
  268. package/dist/components/Pagination/tests/Pagination.test.stories.js +0 -86
  269. package/dist/components/PinField/tests/PinField.test.stories.d.ts +0 -29
  270. package/dist/components/PinField/tests/PinField.test.stories.js +0 -177
  271. package/dist/components/Progress/tests/Progress.test.stories.d.ts +0 -16
  272. package/dist/components/Progress/tests/Progress.test.stories.js +0 -35
  273. package/dist/components/Radio/tests/Radio.test.stories.d.ts +0 -30
  274. package/dist/components/Radio/tests/Radio.test.stories.js +0 -118
  275. package/dist/components/RadioGroup/tests/RadioGroup.test.stories.d.ts +0 -22
  276. package/dist/components/RadioGroup/tests/RadioGroup.test.stories.js +0 -78
  277. package/dist/components/Scrim/tests/Scrim.test.stories.d.ts +0 -15
  278. package/dist/components/Scrim/tests/Scrim.test.stories.js +0 -25
  279. package/dist/components/Select/tests/Select.test.stories.d.ts +0 -27
  280. package/dist/components/Select/tests/Select.test.stories.js +0 -132
  281. package/dist/components/Skeleton/tests/Skeleton.test.stories.d.ts +0 -15
  282. package/dist/components/Skeleton/tests/Skeleton.test.stories.js +0 -23
  283. package/dist/components/Stepper/tests/Stepper.test.stories.d.ts +0 -20
  284. package/dist/components/Stepper/tests/Stepper.test.stories.js +0 -28
  285. package/dist/components/TextArea/tests/TextArea.test.stories.d.ts +0 -28
  286. package/dist/components/TextArea/tests/TextArea.test.stories.js +0 -99
  287. package/dist/components/Toast/tests/Toast.test.stories.d.ts +0 -16
  288. package/dist/components/Toast/tests/Toast.test.stories.js +0 -101
  289. package/dist/components/View/tests/View.test.stories.d.ts +0 -24
  290. package/dist/components/View/tests/View.test.stories.js +0 -50
@@ -1,3 +1,5 @@
1
+ import { StoryObj } from "@storybook/react-vite";
2
+ import { fn } from "storybook/test";
1
3
  declare const _default: {
2
4
  title: string;
3
5
  component: import("react").FC<import("./..").CheckboxGroupProps>;
@@ -8,5 +10,10 @@ declare const _default: {
8
10
  };
9
11
  };
10
12
  export default _default;
11
- export declare const selection: () => import("react").JSX.Element;
12
- export declare const disabled: () => import("react").JSX.Element;
13
+ export declare const value: StoryObj<{
14
+ handleChange: ReturnType<typeof fn>;
15
+ }>;
16
+ export declare const defaultValue: StoryObj<{
17
+ handleChange: ReturnType<typeof fn>;
18
+ }>;
19
+ export declare const disabled: StoryObj;
@@ -1,7 +1,7 @@
1
- import { Example } from "../../../utilities/storybook/index.js";
2
1
  import View from "../../View/index.js";
3
2
  import CheckboxGroup from "../index.js";
4
3
  import Checkbox from "../../Checkbox/index.js";
4
+ import { expect, fn, userEvent } from "storybook/test";
5
5
  export default {
6
6
  title: "Components/CheckboxGroup",
7
7
  component: CheckboxGroup,
@@ -11,41 +11,73 @@ export default {
11
11
  },
12
12
  },
13
13
  };
14
- export const selection = () => (<Example>
15
- <Example.Item title="unselected">
16
- <CheckboxGroup name="animal">
17
- <View gap={3}>
18
- <Checkbox value="dog">Checkbox 1</Checkbox>
19
- <Checkbox value="cat">Checkbox 2</Checkbox>
20
- </View>
21
- </CheckboxGroup>
22
- </Example.Item>
14
+ export const value = {
15
+ name: "value, controlled",
16
+ args: {
17
+ handleChange: fn(),
18
+ },
19
+ render: (args) => (<View gap={2}>
20
+ <CheckboxGroup name="test-name" value={["1"]} onChange={args.handleChange}>
21
+ {/* checked should be ignored */}
22
+ <Checkbox value="1" checked={false}>
23
+ Content
24
+ </Checkbox>
23
25
 
24
- <Example.Item title="checked, uncontrolled">
25
- <CheckboxGroup name="animal" defaultValue={["dog"]}>
26
- <View gap={3}>
27
- <Checkbox value="dog">Checkbox 1</Checkbox>
28
- <Checkbox value="cat">Checkbox 2</Checkbox>
29
- </View>
26
+ <Checkbox value="2">Content 2</Checkbox>
30
27
  </CheckboxGroup>
31
- </Example.Item>
28
+ </View>),
29
+ play: async ({ canvas, args }) => {
30
+ const inputs = canvas.getAllByRole("checkbox");
31
+ expect(inputs[0]).toBeChecked();
32
+ await userEvent.click(inputs[1]);
33
+ expect(args.handleChange).toHaveBeenCalledTimes(1);
34
+ expect(args.handleChange).toHaveBeenCalledWith({
35
+ name: "test-name",
36
+ value: ["1", "2"],
37
+ event: expect.objectContaining({ target: inputs[1] }),
38
+ });
39
+ // Still checked because it's controlled
40
+ expect(inputs[0]).toBeChecked();
41
+ expect(inputs[1]).not.toBeChecked();
42
+ },
43
+ };
44
+ export const defaultValue = {
45
+ name: "defaultValue, uncontrolled",
46
+ args: {
47
+ handleChange: fn(),
48
+ },
49
+ render: (args) => (<View gap={2}>
50
+ <CheckboxGroup name="test-name" defaultValue={["1"]} onChange={args.handleChange}>
51
+ {/* checked should be ignored */}
52
+ <Checkbox value="1" checked={false}>
53
+ Content
54
+ </Checkbox>
32
55
 
33
- <Example.Item title="checked, controlled">
34
- <CheckboxGroup name="animal" value={["dog"]}>
35
- <View gap={3}>
36
- <Checkbox value="dog">Checkbox 1</Checkbox>
37
- <Checkbox value="cat">Checkbox 2</Checkbox>
38
- </View>
56
+ <Checkbox value="2">Content 2</Checkbox>
39
57
  </CheckboxGroup>
40
- </Example.Item>
41
- </Example>);
42
- export const disabled = () => (<Example>
43
- <Example.Item title="disabled">
44
- <CheckboxGroup name="animal" disabled>
45
- <View gap={3}>
46
- <Checkbox value="dog">Dog</Checkbox>
47
- <Checkbox value="cat">Cat</Checkbox>
48
- </View>
49
- </CheckboxGroup>
50
- </Example.Item>
51
- </Example>);
58
+ </View>),
59
+ play: async ({ canvas, args }) => {
60
+ const inputs = canvas.getAllByRole("checkbox");
61
+ expect(inputs[0]).toBeChecked();
62
+ await userEvent.click(inputs[1]);
63
+ expect(args.handleChange).toHaveBeenCalledTimes(1);
64
+ expect(args.handleChange).toHaveBeenCalledWith({
65
+ name: "test-name",
66
+ value: ["1", "2"],
67
+ event: expect.objectContaining({ target: inputs[1] }),
68
+ });
69
+ expect(inputs[0]).toBeChecked();
70
+ expect(inputs[1]).toBeChecked();
71
+ },
72
+ };
73
+ export const disabled = {
74
+ name: "disabled",
75
+ render: () => (<CheckboxGroup name="test-name" disabled>
76
+ <Checkbox value="test-value">Item 1</Checkbox>
77
+ <Checkbox value="test-value-2">Item 2</Checkbox>
78
+ </CheckboxGroup>),
79
+ play: async ({ canvas }) => {
80
+ const [input] = canvas.getAllByRole("checkbox");
81
+ expect(input).toBeDisabled();
82
+ },
83
+ };
@@ -1,3 +1,4 @@
1
+ import { StoryObj } from "@storybook/react-vite";
1
2
  declare const _default: {
2
3
  title: string;
3
4
  component: import("react").FC<import("./..").ContainerProps>;
@@ -20,3 +21,4 @@ export declare const flex: {
20
21
  name: string;
21
22
  render: () => import("react").JSX.Element;
22
23
  };
24
+ export declare const className: StoryObj;
@@ -1,5 +1,6 @@
1
1
  import { Example, Placeholder } from "../../../utilities/storybook/index.js";
2
2
  import Container from "../index.js";
3
+ import { expect } from "storybook/test";
3
4
  export default {
4
5
  title: "Utility components/Container",
5
6
  component: Container,
@@ -59,3 +60,16 @@ export const flex = {
59
60
  </Example.Item>
60
61
  </Example>),
61
62
  };
63
+ export const className = {
64
+ name: "className, attributes",
65
+ render: () => (<div data-testid="root">
66
+ <Container className="test-classname" attributes={{ id: "test-id" }}>
67
+ <Placeholder />
68
+ </Container>
69
+ </div>),
70
+ play: async ({ canvas }) => {
71
+ const root = canvas.getByTestId("root").firstChild;
72
+ expect(root).toHaveClass("test-classname");
73
+ expect(root).toHaveAttribute("id", "test-id");
74
+ },
75
+ };
@@ -1,3 +1,5 @@
1
+ import { StoryObj } from "@storybook/react-vite";
2
+ import { fn } from "storybook/test";
1
3
  declare const _default: {
2
4
  title: string;
3
5
  component: import("react").FC<import("./..").ContextMenuProps> & {
@@ -14,4 +16,11 @@ declare const _default: {
14
16
  };
15
17
  };
16
18
  export default _default;
17
- export declare const base: () => import("react").JSX.Element;
19
+ export declare const base: {
20
+ name: string;
21
+ render: () => import("react").JSX.Element;
22
+ };
23
+ export declare const handlers: StoryObj<{
24
+ handleOpen: ReturnType<typeof fn>;
25
+ handleClose: ReturnType<typeof fn>;
26
+ }>;
@@ -1,6 +1,8 @@
1
1
  import { Example } from "../../../utilities/storybook/index.js";
2
2
  import ContextMenu from "../index.js";
3
3
  import View from "../../View/index.js";
4
+ import { expect, fn, userEvent, waitFor, within } from "storybook/test";
5
+ import { sleep } from "../../../utilities/helpers.js";
4
6
  export default {
5
7
  title: "Components/ContextMenu",
6
8
  component: ContextMenu,
@@ -10,17 +12,59 @@ export default {
10
12
  },
11
13
  },
12
14
  };
13
- export const base = () => (<Example>
14
- <Example.Item title="base">
15
- <div style={{ height: 200, overflow: "auto" }}>
16
- <ContextMenu>
17
- <View height="400px" backgroundColor="neutral-faded" borderRadius="medium"/>
15
+ export const base = {
16
+ name: "base",
17
+ render: () => (<Example>
18
+ <Example.Item title="base">
19
+ <div style={{ height: 200, overflow: "auto" }}>
20
+ <ContextMenu>
21
+ <View height="400px" backgroundColor="neutral-faded" borderRadius="medium"/>
18
22
 
19
- <ContextMenu.Content>
20
- <ContextMenu.Item>Item 1</ContextMenu.Item>
21
- <ContextMenu.Item>Item 2</ContextMenu.Item>
22
- </ContextMenu.Content>
23
- </ContextMenu>
24
- </div>
25
- </Example.Item>
26
- </Example>);
23
+ <ContextMenu.Content>
24
+ <ContextMenu.Item>Item 1</ContextMenu.Item>
25
+ <ContextMenu.Item>Item 2</ContextMenu.Item>
26
+ </ContextMenu.Content>
27
+ </ContextMenu>
28
+ </div>
29
+ </Example.Item>
30
+ </Example>),
31
+ };
32
+ export const handlers = {
33
+ name: "handleOpen, handleClose",
34
+ args: {
35
+ handleOpen: fn(),
36
+ handleClose: fn(),
37
+ },
38
+ render: (args) => (<div style={{ height: 200, overflow: "auto" }} data-testid="scroll">
39
+ <ContextMenu onOpen={args.handleOpen} onClose={args.handleClose}>
40
+ <View height="400px" backgroundColor="neutral-faded" borderRadius="medium" attributes={{ "data-testid": "root" }}/>
41
+
42
+ <ContextMenu.Content>
43
+ <ContextMenu.Item>Item</ContextMenu.Item>
44
+ </ContextMenu.Content>
45
+ </ContextMenu>
46
+ </div>),
47
+ play: async ({ canvasElement, args }) => {
48
+ const canvas = within(canvasElement.ownerDocument.body);
49
+ const root = canvas.getByTestId("root");
50
+ const scroll = canvas.getByTestId("scroll");
51
+ await userEvent.pointer({ keys: "[MouseRight>]", target: root });
52
+ expect(args.handleOpen).toHaveBeenCalledTimes(1);
53
+ expect(args.handleOpen).toHaveBeenCalledWith();
54
+ const item = canvas.getByText("Item");
55
+ expect(item).toBeInTheDocument();
56
+ // Context menu locks the scroll of the closest scrollable parent
57
+ expect(scroll).toHaveStyle("overflow: hidden");
58
+ // Wait for the open animation to finish
59
+ await sleep(500);
60
+ await userEvent.click(root);
61
+ expect(args.handleClose).toHaveBeenCalledTimes(1);
62
+ expect(args.handleClose).toHaveBeenCalledWith({ reason: "outside-click" });
63
+ await waitFor(() => {
64
+ expect(item).not.toBeInTheDocument();
65
+ expect(scroll).not.toHaveStyle("overflow: hidden");
66
+ }, {
67
+ timeout: 1000,
68
+ });
69
+ },
70
+ };
@@ -1,4 +1,5 @@
1
1
  import { StoryObj } from "@storybook/react-vite";
2
+ import { fn } from "storybook/test";
2
3
  declare const _default: {
3
4
  title: string;
4
5
  components: import("react").FC<import("./..").DismissibleProps>;
@@ -18,3 +19,7 @@ export declare const align: {
18
19
  render: () => import("react").JSX.Element;
19
20
  };
20
21
  export declare const hideCloseButton: StoryObj;
22
+ export declare const closeAriaLabel: StoryObj<{
23
+ handleClose: ReturnType<typeof fn>;
24
+ }>;
25
+ export declare const className: StoryObj;
@@ -1,4 +1,4 @@
1
- import { within, expect } from "storybook/test";
1
+ import { within, expect, userEvent, fn } from "storybook/test";
2
2
  import { Example, Placeholder } from "../../../utilities/storybook/index.js";
3
3
  import Dismissible from "../index.js";
4
4
  import Image from "../../Image/index.js";
@@ -66,3 +66,32 @@ export const hideCloseButton = {
66
66
  expect(button).not.toBeInTheDocument();
67
67
  },
68
68
  };
69
+ export const closeAriaLabel = {
70
+ args: {
71
+ handleClose: fn(),
72
+ },
73
+ name: "onClose, closeAriaLabel",
74
+ render: (args) => (<Dismissible closeAriaLabel="Close" onClose={args.handleClose}>
75
+ <Placeholder />
76
+ </Dismissible>),
77
+ play: async ({ canvas, args }) => {
78
+ const button = canvas.getAllByRole("button")[0];
79
+ await userEvent.click(button);
80
+ expect(button).toHaveAttribute("aria-label", "Close");
81
+ expect(args.handleClose).toHaveBeenCalledTimes(1);
82
+ expect(args.handleClose).toHaveBeenCalledWith();
83
+ },
84
+ };
85
+ export const className = {
86
+ name: "className, attributes",
87
+ render: () => (<div data-testid="root">
88
+ <Dismissible closeAriaLabel="Close" onClose={() => { }} className="test-classname" attributes={{ id: "test-id" }}>
89
+ <Placeholder />
90
+ </Dismissible>
91
+ </div>),
92
+ play: async ({ canvas }) => {
93
+ const root = canvas.getByTestId("root").firstChild;
94
+ expect(root).toHaveClass("test-classname");
95
+ expect(root).toHaveAttribute("id", "test-id");
96
+ },
97
+ };
@@ -1,3 +1,4 @@
1
+ import { StoryObj } from "@storybook/react-vite";
1
2
  declare const _default: {
2
3
  title: string;
3
4
  component: import("react").FC<import("./..").DividerProps>;
@@ -8,6 +9,10 @@ declare const _default: {
8
9
  };
9
10
  };
10
11
  export default _default;
11
- export declare const rendering: () => import("react").JSX.Element;
12
- export declare const vertical: () => import("react").JSX.Element;
13
- export declare const label: () => import("react").JSX.Element;
12
+ export declare const rendering: StoryObj;
13
+ export declare const vertical: StoryObj;
14
+ export declare const label: {
15
+ name: string;
16
+ render: () => import("react").JSX.Element;
17
+ };
18
+ export declare const className: StoryObj;
@@ -1,6 +1,7 @@
1
1
  import { Example, Placeholder } from "../../../utilities/storybook/index.js";
2
2
  import View from "../../View/index.js";
3
3
  import Divider from "../index.js";
4
+ import { expect } from "storybook/test";
4
5
  export default {
5
6
  title: "Components/Divider",
6
7
  component: Divider,
@@ -10,55 +11,84 @@ export default {
10
11
  },
11
12
  },
12
13
  };
13
- export const rendering = () => (<Example>
14
- <Example.Item title="default rendering">
15
- <Divider />
16
- </Example.Item>
17
-
18
- <Example.Item title={["blank rendering", "box should overlap with divider"]}>
19
- <View width="40px" height="10px" backgroundColor="primary"/>
20
- <Divider blank/>
21
- </Example.Item>
22
- </Example>);
23
- export const vertical = () => (<Example>
24
- <Example.Item title="vertical">
25
- <View gap={3} direction="row" align="stretch">
26
- <Placeholder />
27
- <View.Item>
28
- <Divider vertical/>
29
- </View.Item>
30
- <Placeholder />
31
- </View>
32
- </Example.Item>
14
+ export const rendering = {
15
+ name: "base",
16
+ render: () => (<Example>
17
+ <Example.Item title="default rendering">
18
+ <Divider />
19
+ </Example.Item>
33
20
 
34
- <Example.Item title={["responsive vertical", "[s] true", "[m+]: false"]}>
35
- <View gap={3} direction={{ s: "row", m: "column" }} align="stretch">
36
- <Placeholder />
37
- <View.Item>
38
- <Divider vertical={{ s: true, m: false }}/>
39
- </View.Item>
40
- <Placeholder />
41
- </View>
42
- </Example.Item>
43
- </Example>);
44
- export const label = () => {
45
- return (<Example>
46
- <Example.Item title="alignment">
47
- <View gap={4}>
48
- <Divider>Centered label</Divider>
49
- <Divider contentPosition="start">Start label</Divider>
50
- <Divider contentPosition="end">End label</Divider>
21
+ <Example.Item title={["blank rendering", "box should overlap with divider"]}>
22
+ <View width="40px" height="10px" backgroundColor="primary"/>
23
+ <Divider blank/>
24
+ </Example.Item>
25
+ </Example>),
26
+ play: async ({ canvas }) => {
27
+ const [el] = canvas.getAllByRole("separator");
28
+ expect(el).toHaveAttribute("aria-orientation", "horizontal");
29
+ },
30
+ };
31
+ export const vertical = {
32
+ name: "vertical",
33
+ render: () => (<Example>
34
+ <Example.Item title="vertical">
35
+ <View gap={3} direction="row" align="stretch">
36
+ <Placeholder />
37
+ <View.Item>
38
+ <Divider vertical/>
39
+ </View.Item>
40
+ <Placeholder />
51
41
  </View>
52
42
  </Example.Item>
53
43
 
54
- <Example.Item title="responsive">
55
- <View gap={3} direction={{ s: "column", m: "row" }} align="stretch">
44
+ <Example.Item title={["responsive vertical", "[s] true", "[m+]: false"]}>
45
+ <View gap={3} direction={{ s: "row", m: "column" }} align="stretch">
56
46
  <Placeholder />
57
47
  <View.Item>
58
- <Divider vertical={{ s: false, m: true }}>or pick second option</Divider>
48
+ <Divider vertical={{ s: true, m: false }}/>
59
49
  </View.Item>
60
50
  <Placeholder />
61
51
  </View>
62
52
  </Example.Item>
63
- </Example>);
53
+ </Example>),
54
+ play: async ({ canvas }) => {
55
+ const [el, elResponsive] = canvas.getAllByRole("separator");
56
+ expect(el).toHaveAttribute("aria-orientation", "vertical");
57
+ expect(elResponsive).not.toHaveAttribute("aria-orientation");
58
+ },
59
+ };
60
+ export const label = {
61
+ name: "children, contentPosition",
62
+ render: () => {
63
+ return (<Example>
64
+ <Example.Item title="alignment">
65
+ <View gap={4}>
66
+ <Divider>Centered label</Divider>
67
+ <Divider contentPosition="start">Start label</Divider>
68
+ <Divider contentPosition="end">End label</Divider>
69
+ </View>
70
+ </Example.Item>
71
+
72
+ <Example.Item title="responsive">
73
+ <View gap={3} direction={{ s: "column", m: "row" }} align="stretch">
74
+ <Placeholder />
75
+ <View.Item>
76
+ <Divider vertical={{ s: false, m: true }}>or pick second option</Divider>
77
+ </View.Item>
78
+ <Placeholder />
79
+ </View>
80
+ </Example.Item>
81
+ </Example>);
82
+ },
83
+ };
84
+ export const className = {
85
+ name: "className, attributes",
86
+ render: () => (<div data-testid="root">
87
+ <Divider className="test-classname" attributes={{ id: "test-id" }}/>
88
+ </div>),
89
+ play: async ({ canvas }) => {
90
+ const root = canvas.getByTestId("root").firstChild;
91
+ expect(root).toHaveClass("test-classname");
92
+ expect(root).toHaveAttribute("id", "test-id");
93
+ },
64
94
  };
@@ -14,8 +14,8 @@ import s from "./DropdownMenu.module.css";
14
14
  const DropdownMenuSubContext = React.createContext(null);
15
15
  const DropdownMenuSubTriggerContext = React.createContext(false);
16
16
  const DropdownMenu = (props) => {
17
- const { children, position = "bottom-start", triggerType = "click", trapFocusMode = "action-menu", ...popoverProps } = props;
18
- return (_jsx(Popover, { ...popoverProps, position: position, padding: 0, trapFocusMode: trapFocusMode, triggerType: triggerType, children: children }));
17
+ const { children, position = "bottom-start", triggerType = "click", trapFocusMode = "action-menu", borderRadius = "small", ...popoverProps } = props;
18
+ return (_jsx(Popover, { ...popoverProps, position: position, padding: 0, trapFocusMode: trapFocusMode, triggerType: triggerType, borderRadius: borderRadius, disableHideAnimation: true, children: children }));
19
19
  };
20
20
  const DropdownMenuContent = (props) => {
21
21
  const { children, attributes, className } = props;
@@ -62,9 +62,9 @@ const DropdownMenuItem = (props) => {
62
62
  return (_jsx(MenuItem, { ...props, roundedCorners: true, className: [s.item, props.className], attributes: { role: "menuitem", ...props.attributes }, onClick: handleClick }));
63
63
  };
64
64
  const DropdownMenuSubMenu = (props) => {
65
- const { children } = props;
65
+ const { children, position = "end-top", contentGap = 0.5, ...dropdownMenuProps } = props;
66
66
  const dropdownMenuRef = React.useRef(null);
67
- return (_jsx(DropdownMenuSubContext.Provider, { value: dropdownMenuRef, children: _jsx(DropdownMenu, { triggerType: "hover", position: "end-top", contentGap: 0.5, instanceRef: dropdownMenuRef, children: children }) }));
67
+ return (_jsx(DropdownMenuSubContext.Provider, { value: dropdownMenuRef, children: _jsx(DropdownMenu, { ...dropdownMenuProps, triggerType: "hover", position: position, contentGap: contentGap, instanceRef: dropdownMenuRef, children: children }) }));
68
68
  };
69
69
  const DropdownMenuSubTriggerItem = (props) => {
70
70
  const { children, attributes, ...menuItemProps } = props;
@@ -3,7 +3,7 @@ import type { PopoverProps, PopoverInstance } from "../Popover";
3
3
  import type { MenuItemProps } from "../MenuItem";
4
4
  import type { FlyoutContentProps } from "../Flyout";
5
5
  export type Instance = PopoverInstance;
6
- export type Props = Pick<PopoverProps, "children" | "position" | "forcePosition" | "fallbackPositions" | "triggerType" | "contentGap" | "contentShift" | "onOpen" | "onClose" | "active" | "defaultActive" | "width" | "disableHideAnimation" | "disableCloseOnOutsideClick" | "instanceRef" | "containerRef" | "originCoordinates"> & {
6
+ export type Props = Pick<PopoverProps, "children" | "position" | "forcePosition" | "fallbackPositions" | "fallbackAdjustLayout" | "fallbackMinWidth" | "fallbackMinHeight" | "triggerType" | "contentGap" | "contentShift" | "onOpen" | "onClose" | "active" | "defaultActive" | "width" | "disableHideAnimation" | "disableCloseOnOutsideClick" | "instanceRef" | "containerRef" | "originCoordinates" | "borderRadius" | "elevation" | "initialFocusRef"> & {
7
7
  /** Change component trap focus keyboard behavior and shortcuts */
8
8
  trapFocusMode?: Extract<PopoverProps["trapFocusMode"], "action-menu" | "selection-menu"> | false;
9
9
  };
@@ -16,5 +16,5 @@ export type SectionProps = {
16
16
  export type SubMenuProps = {
17
17
  /** Node for inserting children */
18
18
  children: React.ReactNode;
19
- };
19
+ } & Pick<PopoverProps, "position" | "forcePosition" | "fallbackPositions" | "fallbackAdjustLayout" | "fallbackMinWidth" | "fallbackMinHeight" | "contentGap" | "contentShift" | "width" | "containerRef">;
20
20
  export type SubTriggerProps = Omit<MenuItemProps, "endSlot" | "roundedCorners">;
@@ -1,3 +1,5 @@
1
+ import { fn } from "storybook/test";
2
+ import { StoryObj } from "@storybook/react-vite";
1
3
  declare const _default: {
2
4
  title: string;
3
5
  component: import("react").FC<import("./..").DropdownMenuProps> & {
@@ -16,9 +18,36 @@ declare const _default: {
16
18
  };
17
19
  };
18
20
  export default _default;
19
- export declare const position: () => import("react").JSX.Element;
20
- export declare const sections: () => import("react").JSX.Element;
21
- export declare const submenu: () => import("react").JSX.Element;
22
- export declare const state: () => import("react").JSX.Element;
23
- export declare const testScroll: () => import("react").JSX.Element;
24
- export declare const testThemeSwitching: () => import("react").JSX.Element;
21
+ export declare const position: {
22
+ name: string;
23
+ render: () => import("react").JSX.Element;
24
+ };
25
+ export declare const sections: {
26
+ name: string;
27
+ render: () => import("react").JSX.Element;
28
+ };
29
+ export declare const submenu: {
30
+ name: string;
31
+ render: () => import("react").JSX.Element;
32
+ };
33
+ export declare const defaultActive: StoryObj<{
34
+ handleOpen: ReturnType<typeof fn>;
35
+ handleClose: ReturnType<typeof fn>;
36
+ }>;
37
+ export declare const active: StoryObj<{
38
+ handleOpen: ReturnType<typeof fn>;
39
+ handleClose: ReturnType<typeof fn>;
40
+ }>;
41
+ export declare const activeFalse: StoryObj<{
42
+ handleOpen: ReturnType<typeof fn>;
43
+ handleClose: ReturnType<typeof fn>;
44
+ }>;
45
+ export declare const className: StoryObj;
46
+ export declare const testScroll: {
47
+ name: string;
48
+ render: () => import("react").JSX.Element;
49
+ };
50
+ export declare const testThemeSwitching: {
51
+ name: string;
52
+ render: () => import("react").JSX.Element;
53
+ };