reshaped 3.8.0-canary.1 → 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 (284) hide show
  1. package/CHANGELOG.md +83 -18
  2. package/dist/bundle.css +1 -1
  3. package/dist/bundle.d.ts +1 -1
  4. package/dist/bundle.js +11 -11
  5. package/dist/components/Accordion/AccordionControlled.js +1 -0
  6. package/dist/components/Actionable/Actionable.js +17 -3
  7. package/dist/components/Actionable/Actionable.module.css +1 -1
  8. package/dist/components/Actionable/Actionable.types.d.ts +15 -3
  9. package/dist/components/Actionable/tests/Actionable.stories.d.ts +13 -1
  10. package/dist/components/Actionable/tests/Actionable.stories.js +127 -7
  11. package/dist/components/Alert/tests/Alert.stories.d.ts +6 -5
  12. package/dist/components/Alert/tests/Alert.stories.js +15 -2
  13. package/dist/components/Autocomplete/Autocomplete.js +2 -2
  14. package/dist/components/Autocomplete/Autocomplete.types.d.ts +1 -1
  15. package/dist/components/Badge/Badge.module.css +1 -1
  16. package/dist/components/Badge/tests/Badge.stories.d.ts +5 -0
  17. package/dist/components/Badge/tests/Badge.stories.js +34 -0
  18. package/dist/components/Breadcrumbs/Breadcrumbs.js +1 -0
  19. package/dist/components/Breadcrumbs/tests/Breadcrumbs.stories.d.ts +8 -4
  20. package/dist/components/Breadcrumbs/tests/Breadcrumbs.stories.js +57 -1
  21. package/dist/components/Button/Button.js +2 -2
  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/DropdownMenu/tests/DropdownMenu.test.stories.d.ts +0 -15
  50. package/dist/components/DropdownMenu/tests/DropdownMenu.test.stories.js +0 -106
  51. package/dist/components/FileUpload/FileUpload.module.css +1 -1
  52. package/dist/components/Flyout/Flyout.module.css +1 -1
  53. package/dist/components/Flyout/Flyout.types.d.ts +7 -7
  54. package/dist/components/Flyout/FlyoutContent.js +4 -1
  55. package/dist/components/Flyout/FlyoutControlled.js +10 -3
  56. package/dist/components/Flyout/index.d.ts +1 -1
  57. package/dist/components/Flyout/tests/Flyout.stories.d.ts +8 -0
  58. package/dist/components/Flyout/tests/Flyout.stories.js +81 -33
  59. package/dist/components/Flyout/useFlyout.d.ts +1 -7
  60. package/dist/components/Flyout/useFlyout.js +5 -1
  61. package/dist/components/Flyout/utilities/calculatePosition.d.ts +3 -2
  62. package/dist/components/Flyout/utilities/calculatePosition.js +47 -22
  63. package/dist/components/Flyout/utilities/flyout.js +3 -2
  64. package/dist/components/Flyout/utilities/getPositionFallbacks.js +3 -3
  65. package/dist/components/Flyout/utilities/isFullyVisible.d.ts +0 -2
  66. package/dist/components/Flyout/utilities/isFullyVisible.js +5 -7
  67. package/dist/components/FormControl/FormControl.context.d.ts +1 -1
  68. package/dist/components/FormControl/tests/FormControl.stories.d.ts +2 -0
  69. package/dist/components/FormControl/tests/FormControl.stories.js +35 -0
  70. package/dist/components/Hidden/tests/Hidden.stories.d.ts +2 -0
  71. package/dist/components/Hidden/tests/Hidden.stories.js +9 -0
  72. package/dist/components/HiddenVisually/tests/HiddenVisually.stories.d.ts +2 -0
  73. package/dist/components/HiddenVisually/tests/HiddenVisually.stories.js +9 -0
  74. package/dist/components/Hotkey/tests/Hotkey.stories.d.ts +2 -0
  75. package/dist/components/Hotkey/tests/Hotkey.stories.js +15 -0
  76. package/dist/components/Icon/Icon.js +2 -2
  77. package/dist/components/Icon/Icon.types.d.ts +1 -1
  78. package/dist/components/Icon/tests/Icon.stories.d.ts +3 -0
  79. package/dist/components/Icon/tests/Icon.stories.js +29 -1
  80. package/dist/components/Link/Link.d.ts +1 -1
  81. package/dist/components/Link/Link.js +2 -2
  82. package/dist/components/Link/Link.types.d.ts +1 -1
  83. package/dist/components/Link/tests/Link.stories.d.ts +29 -6
  84. package/dist/components/Link/tests/Link.stories.js +141 -58
  85. package/dist/components/Link/tests/Link.test.stories.d.ts +1 -13
  86. package/dist/components/Link/tests/Link.test.stories.js +0 -76
  87. package/dist/components/Loader/tests/Loader.stories.d.ts +11 -2
  88. package/dist/components/Loader/tests/Loader.stories.js +52 -25
  89. package/dist/components/Loader/tests/Loader.test.stories.d.ts +0 -3
  90. package/dist/components/Loader/tests/Loader.test.stories.js +0 -21
  91. package/dist/components/MenuItem/MenuItem.js +2 -2
  92. package/dist/components/MenuItem/MenuItem.module.css +1 -1
  93. package/dist/components/MenuItem/MenuItem.types.d.ts +1 -1
  94. package/dist/components/MenuItem/tests/MenuItem.stories.d.ts +37 -7
  95. package/dist/components/MenuItem/tests/MenuItem.stories.js +218 -112
  96. package/dist/components/Modal/Modal.js +1 -1
  97. package/dist/components/Modal/Modal.module.css +1 -1
  98. package/dist/components/Modal/tests/Modal.stories.d.ts +53 -10
  99. package/dist/components/Modal/tests/Modal.stories.js +367 -210
  100. package/dist/components/Overlay/Overlay.js +2 -1
  101. package/dist/components/Overlay/tests/Overlay.stories.d.ts +15 -1
  102. package/dist/components/Overlay/tests/Overlay.stories.js +135 -1
  103. package/dist/components/Pagination/tests/Pagination.stories.d.ts +14 -1
  104. package/dist/components/Pagination/tests/Pagination.stories.js +93 -15
  105. package/dist/components/PinField/tests/PinField.stories.d.ts +1 -1
  106. package/dist/components/PinField/tests/PinField.stories.js +1 -1
  107. package/dist/components/Popover/Popover.js +2 -2
  108. package/dist/components/Popover/Popover.module.css +1 -1
  109. package/dist/components/Popover/Popover.types.d.ts +3 -1
  110. package/dist/components/Progress/tests/Progress.stories.d.ts +19 -4
  111. package/dist/components/Progress/tests/Progress.stories.js +85 -49
  112. package/dist/components/Radio/Radio.module.css +1 -1
  113. package/dist/components/Radio/tests/Radio.stories.d.ts +25 -4
  114. package/dist/components/Radio/tests/Radio.stories.js +147 -65
  115. package/dist/components/RadioGroup/tests/RadioGroup.stories.d.ts +9 -2
  116. package/dist/components/RadioGroup/tests/RadioGroup.stories.js +64 -38
  117. package/dist/components/Reshaped/Reshaped.css +1 -1
  118. package/dist/components/Scrim/tests/Scrim.stories.d.ts +10 -2
  119. package/dist/components/Scrim/tests/Scrim.stories.js +51 -31
  120. package/dist/components/ScrollArea/ScrollArea.module.css +1 -1
  121. package/dist/components/Select/Select.d.ts +8 -1
  122. package/dist/components/Select/Select.js +22 -48
  123. package/dist/components/Select/Select.module.css +1 -1
  124. package/dist/components/Select/Select.types.d.ts +83 -38
  125. package/dist/components/Select/SelectCustom.d.ts +3 -0
  126. package/dist/components/Select/SelectCustom.js +12 -0
  127. package/dist/components/Select/SelectCustomControlled.d.ts +4 -0
  128. package/dist/components/Select/SelectCustomControlled.js +105 -0
  129. package/dist/components/Select/SelectCustomUncontrolled.d.ts +4 -0
  130. package/dist/components/Select/SelectCustomUncontrolled.js +18 -0
  131. package/dist/components/Select/SelectEndContent.d.ts +3 -0
  132. package/dist/components/Select/SelectEndContent.js +12 -0
  133. package/dist/components/Select/SelectNative.d.ts +4 -0
  134. package/dist/components/Select/SelectNative.js +29 -0
  135. package/dist/components/Select/SelectOption.d.ts +4 -0
  136. package/dist/components/Select/SelectOption.js +13 -0
  137. package/dist/components/Select/SelectOptionGroup.d.ts +4 -0
  138. package/dist/components/Select/SelectOptionGroup.js +9 -0
  139. package/dist/components/Select/SelectRoot.d.ts +4 -0
  140. package/dist/components/Select/SelectRoot.js +21 -0
  141. package/dist/components/Select/SelectStartContent.d.ts +3 -0
  142. package/dist/components/Select/SelectStartContent.js +20 -0
  143. package/dist/components/Select/SelectTrigger.d.ts +4 -0
  144. package/dist/components/Select/SelectTrigger.js +16 -0
  145. package/dist/components/Select/tests/Select.stories.d.ts +38 -10
  146. package/dist/components/Select/tests/Select.stories.js +504 -175
  147. package/dist/components/Skeleton/tests/Skeleton.stories.d.ts +10 -2
  148. package/dist/components/Skeleton/tests/Skeleton.stories.js +46 -28
  149. package/dist/components/Slider/Slider.module.css +1 -1
  150. package/dist/components/Stepper/Stepper.js +2 -2
  151. package/dist/components/Stepper/Stepper.types.d.ts +2 -0
  152. package/dist/components/Stepper/tests/Stepper.stories.d.ts +18 -3
  153. package/dist/components/Stepper/tests/Stepper.stories.js +99 -47
  154. package/dist/components/Switch/Switch.module.css +1 -1
  155. package/dist/components/Switch/tests/Switch.stories.d.ts +10 -2
  156. package/dist/components/Switch/tests/Switch.stories.js +77 -23
  157. package/dist/components/Switch/tests/Switch.test.stories.d.ts +0 -10
  158. package/dist/components/Switch/tests/Switch.test.stories.js +0 -68
  159. package/dist/components/Table/Table.js +5 -3
  160. package/dist/components/Table/Table.module.css +1 -1
  161. package/dist/components/Table/tests/Table.stories.d.ts +25 -5
  162. package/dist/components/Table/tests/Table.stories.js +274 -177
  163. package/dist/components/Table/tests/Table.test.stories.d.ts +0 -5
  164. package/dist/components/Table/tests/Table.test.stories.js +0 -82
  165. package/dist/components/Tabs/Tabs.module.css +1 -1
  166. package/dist/components/Tabs/TabsControlled.js +1 -0
  167. package/dist/components/TextArea/TextArea.module.css +1 -1
  168. package/dist/components/TextArea/tests/TextArea.stories.d.ts +41 -9
  169. package/dist/components/TextArea/tests/TextArea.stories.js +179 -93
  170. package/dist/components/TextField/TextField.js +1 -1
  171. package/dist/components/TextField/TextField.module.css +1 -1
  172. package/dist/components/TextField/tests/TextField.stories.d.ts +41 -11
  173. package/dist/components/TextField/tests/TextField.stories.js +206 -132
  174. package/dist/components/TextField/tests/TextField.test.stories.d.ts +0 -13
  175. package/dist/components/TextField/tests/TextField.test.stories.js +0 -88
  176. package/dist/components/Theme/Theme.module.css +1 -1
  177. package/dist/components/Timeline/Timeline.js +2 -2
  178. package/dist/components/Timeline/tests/Timeline.stories.d.ts +10 -2
  179. package/dist/components/Timeline/tests/Timeline.stories.js +69 -45
  180. package/dist/components/Timeline/tests/Timeline.test.stories.d.ts +0 -2
  181. package/dist/components/Timeline/tests/Timeline.test.stories.js +0 -21
  182. package/dist/components/Toast/ToastContainer.js +1 -0
  183. package/dist/components/Toast/ToastRegion.js +1 -0
  184. package/dist/components/Toast/tests/Toast.stories.d.ts +32 -8
  185. package/dist/components/Toast/tests/Toast.stories.js +111 -37
  186. package/dist/components/ToggleButton/ToggleButton.types.d.ts +1 -1
  187. package/dist/components/ToggleButtonGroup/ToggleButtonGroupControlled.js +1 -0
  188. package/dist/components/Tooltip/Tooltip.js +1 -1
  189. package/dist/components/Tooltip/Tooltip.types.d.ts +2 -2
  190. package/dist/components/Tooltip/tests/Tooltip.stories.d.ts +18 -4
  191. package/dist/components/Tooltip/tests/Tooltip.stories.js +139 -107
  192. package/dist/components/Tooltip/tests/Tooltip.test.stories.d.ts +0 -6
  193. package/dist/components/Tooltip/tests/Tooltip.test.stories.js +0 -29
  194. package/dist/components/View/View.js +11 -4
  195. package/dist/components/View/tests/View.stories.d.ts +4 -0
  196. package/dist/components/View/tests/View.stories.js +39 -0
  197. package/dist/components/_private/Expandable/Expandable.js +3 -1
  198. package/dist/components/_private/Portal/Portal.js +4 -1
  199. package/dist/hooks/_private/useIsDismissible.d.ts +1 -0
  200. package/dist/hooks/_private/useIsDismissible.js +6 -6
  201. package/dist/hooks/_private/usePrevious.js +1 -0
  202. package/dist/hooks/tests/useDrag.stories.js +1 -1
  203. package/dist/hooks/useScrollLock.js +5 -3
  204. package/dist/index.d.ts +1 -1
  205. package/dist/styles/resolvers/align/align.css +1 -1
  206. package/dist/styles/resolvers/aspectRatio/aspectRatio.css +1 -1
  207. package/dist/styles/resolvers/bleed/bleed.module.css +1 -1
  208. package/dist/styles/resolvers/justify/justify.css +1 -1
  209. package/dist/styles/resolvers/maxHeight/maxHeight.module.css +1 -1
  210. package/dist/styles/resolvers/maxWidth/maxWidth.module.css +1 -1
  211. package/dist/styles/resolvers/minHeight/minHeight.module.css +1 -1
  212. package/dist/styles/resolvers/minWidth/minWidth.module.css +1 -1
  213. package/dist/styles/resolvers/position/position.css +1 -1
  214. package/dist/styles/resolvers/textAlign/textAlign.css +1 -1
  215. package/dist/styles/resolvers/width/width.module.css +1 -1
  216. package/dist/utilities/scroll/disable.js +2 -2
  217. package/dist/utilities/scroll/index.d.ts +1 -1
  218. package/dist/utilities/scroll/index.js +1 -1
  219. package/dist/utilities/scroll/lock.d.ts +1 -2
  220. package/dist/utilities/scroll/lock.js +16 -15
  221. package/dist/utilities/scroll/lockSafari.js +1 -0
  222. package/package.json +23 -23
  223. package/dist/components/Actionable/tests/Actionable.test.stories.d.ts +0 -32
  224. package/dist/components/Actionable/tests/Actionable.test.stories.js +0 -130
  225. package/dist/components/Alert/tests/Alert.test.stories.d.ts +0 -15
  226. package/dist/components/Alert/tests/Alert.test.stories.js +0 -26
  227. package/dist/components/Badge/tests/Badge.test.stories.d.ts +0 -20
  228. package/dist/components/Badge/tests/Badge.test.stories.js +0 -46
  229. package/dist/components/Breadcrumbs/tests/Breadcrumbs.test.stories.d.ts +0 -23
  230. package/dist/components/Breadcrumbs/tests/Breadcrumbs.test.stories.js +0 -76
  231. package/dist/components/Button/tests/Button.test.stories.d.ts +0 -27
  232. package/dist/components/Button/tests/Button.test.stories.js +0 -112
  233. package/dist/components/Card/tests/Card.test.stories.d.ts +0 -35
  234. package/dist/components/Card/tests/Card.test.stories.js +0 -54
  235. package/dist/components/Checkbox/tests/Checkbox.test.stories.d.ts +0 -25
  236. package/dist/components/Checkbox/tests/Checkbox.test.stories.js +0 -104
  237. package/dist/components/CheckboxGroup/tests/CheckboxGroup.test.stories.d.ts +0 -22
  238. package/dist/components/CheckboxGroup/tests/CheckboxGroup.test.stories.js +0 -78
  239. package/dist/components/Container/tests/Container.test.stories.d.ts +0 -15
  240. package/dist/components/Container/tests/Container.test.stories.js +0 -26
  241. package/dist/components/ContextMenu/tests/ContextMenu.test.stories.d.ts +0 -25
  242. package/dist/components/ContextMenu/tests/ContextMenu.test.stories.js +0 -53
  243. package/dist/components/Dismissible/tests/Dismissible.test.stories.d.ts +0 -19
  244. package/dist/components/Dismissible/tests/Dismissible.test.stories.js +0 -42
  245. package/dist/components/Divider/tests/Divider.test.stories.d.ts +0 -18
  246. package/dist/components/Divider/tests/Divider.test.stories.js +0 -47
  247. package/dist/components/FormControl/tests/FormControl.test.stories.d.ts +0 -20
  248. package/dist/components/FormControl/tests/FormControl.test.stories.js +0 -49
  249. package/dist/components/Hidden/tests/Hidden.test.stories.d.ts +0 -15
  250. package/dist/components/Hidden/tests/Hidden.test.stories.js +0 -20
  251. package/dist/components/HiddenVisually/tests/HiddenVisually.test.stories.d.ts +0 -15
  252. package/dist/components/HiddenVisually/tests/HiddenVisually.test.stories.js +0 -20
  253. package/dist/components/Hotkey/tests/Hotkey.test.stories.d.ts +0 -15
  254. package/dist/components/Hotkey/tests/Hotkey.test.stories.js +0 -26
  255. package/dist/components/Icon/tests/Icon.test.stories.d.ts +0 -16
  256. package/dist/components/Icon/tests/Icon.test.stories.js +0 -35
  257. package/dist/components/MenuItem/tests/MenuItem.test.stories.d.ts +0 -26
  258. package/dist/components/MenuItem/tests/MenuItem.test.stories.js +0 -100
  259. package/dist/components/Modal/tests/Modal.test.stories.d.ts +0 -31
  260. package/dist/components/Modal/tests/Modal.test.stories.js +0 -149
  261. package/dist/components/Overlay/tests/Overlay.test.stories.d.ts +0 -28
  262. package/dist/components/Overlay/tests/Overlay.test.stories.js +0 -148
  263. package/dist/components/Pagination/tests/Pagination.test.stories.d.ts +0 -23
  264. package/dist/components/Pagination/tests/Pagination.test.stories.js +0 -86
  265. package/dist/components/Progress/tests/Progress.test.stories.d.ts +0 -16
  266. package/dist/components/Progress/tests/Progress.test.stories.js +0 -35
  267. package/dist/components/Radio/tests/Radio.test.stories.d.ts +0 -30
  268. package/dist/components/Radio/tests/Radio.test.stories.js +0 -118
  269. package/dist/components/RadioGroup/tests/RadioGroup.test.stories.d.ts +0 -22
  270. package/dist/components/RadioGroup/tests/RadioGroup.test.stories.js +0 -78
  271. package/dist/components/Scrim/tests/Scrim.test.stories.d.ts +0 -15
  272. package/dist/components/Scrim/tests/Scrim.test.stories.js +0 -25
  273. package/dist/components/Select/tests/Select.test.stories.d.ts +0 -27
  274. package/dist/components/Select/tests/Select.test.stories.js +0 -132
  275. package/dist/components/Skeleton/tests/Skeleton.test.stories.d.ts +0 -15
  276. package/dist/components/Skeleton/tests/Skeleton.test.stories.js +0 -23
  277. package/dist/components/Stepper/tests/Stepper.test.stories.d.ts +0 -20
  278. package/dist/components/Stepper/tests/Stepper.test.stories.js +0 -28
  279. package/dist/components/TextArea/tests/TextArea.test.stories.d.ts +0 -28
  280. package/dist/components/TextArea/tests/TextArea.test.stories.js +0 -99
  281. package/dist/components/Toast/tests/Toast.test.stories.d.ts +0 -16
  282. package/dist/components/Toast/tests/Toast.test.stories.js +0 -101
  283. package/dist/components/View/tests/View.test.stories.d.ts +0 -24
  284. package/dist/components/View/tests/View.test.stories.js +0 -50
@@ -1,6 +1,4 @@
1
- import { expect, fn, userEvent, within, waitFor } from "storybook/test";
2
1
  import Tooltip from "../index.js";
3
- import Button from "../../Button/index.js";
4
2
  export default {
5
3
  title: "Components/Tooltip/tests",
6
4
  component: Tooltip,
@@ -11,30 +9,3 @@ export default {
11
9
  chromatic: { disableSnapshot: true },
12
10
  },
13
11
  };
14
- export const defaultActive = {
15
- name: "uncontrolled",
16
- args: {
17
- handleOpen: fn(),
18
- handleClose: fn(),
19
- },
20
- render: (args) => (<Tooltip text="Content" onOpen={args.handleOpen} onClose={args.handleClose}>
21
- {(attributes) => <Button attributes={attributes}>Trigger</Button>}
22
- </Tooltip>),
23
- play: async ({ canvasElement, args }) => {
24
- const canvas = within(canvasElement.ownerDocument.body);
25
- const trigger = canvas.getAllByRole("button")[0];
26
- await userEvent.hover(trigger);
27
- await waitFor(() => {
28
- expect(args.handleOpen).toHaveBeenCalledTimes(1);
29
- expect(args.handleOpen).toHaveBeenCalledWith();
30
- });
31
- const item = canvas.getByText("Content");
32
- expect(item).toBeInTheDocument();
33
- await userEvent.unhover(trigger);
34
- await waitFor(() => {
35
- expect(args.handleClose).toHaveBeenCalledTimes(1);
36
- expect(args.handleClose).toHaveBeenCalledWith({});
37
- expect(item).not.toBeInTheDocument();
38
- });
39
- },
40
- };
@@ -1,6 +1,6 @@
1
1
  import { createElement as _createElement } from "react";
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import React from "react";
3
+ import React, { isValidElement } from "react";
4
4
  import { classNames, responsiveClassNames, responsiveVariables } from "../../utilities/props.js";
5
5
  import Divider from "../Divider/index.js";
6
6
  import Hidden from "../Hidden/index.js";
@@ -100,13 +100,15 @@ const View = (props) => {
100
100
  return (_jsx("div", { className: dividerClassName, children: _jsx(Divider, { vertical: isDividerVertical, blank: true }) }, `${key}-divider`));
101
101
  };
102
102
  const renderItem = ({ className, child, index }) => {
103
- const isItem = child.type === ViewItem;
104
- const isView = child.type === View;
103
+ const isElement = isValidElement(child);
104
+ const isItem = isElement && child.type === ViewItem;
105
+ const isView = isElement && child.type === View;
105
106
  const key = child.key;
106
107
  const dividerElement = !!index && divided && renderDivider({ className, key });
107
108
  let itemElement;
108
109
  if (isItem) {
109
110
  itemElement = React.cloneElement(child, {
111
+ // @ts-expect-error -- child is guaranteed to be an element
110
112
  className: classNames(className, child.props.className),
111
113
  });
112
114
  }
@@ -120,10 +122,13 @@ const View = (props) => {
120
122
  itemElement = (_jsx("div", { className: className, children: child }, key));
121
123
  }
122
124
  // Passing grow here because it's responsive and nowrap should follow it
125
+ // @ts-expect-error -- child is guaranteed to be an element
123
126
  if ((isItem || isView) && child.props?.grow) {
127
+ // @ts-expect-error -- child is guaranteed to be an element
124
128
  nowrap = child.props.grow;
125
129
  isFlex = true;
126
130
  }
131
+ // @ts-expect-error -- child is guaranteed to be an element
127
132
  if (isItem && child.props?.gap === "auto")
128
133
  nowrap = true;
129
134
  return (_jsxs(React.Fragment, { children: [dividerElement, itemElement] }, key ? `${key}-fragment` : undefined));
@@ -134,8 +139,10 @@ const View = (props) => {
134
139
  if (!child)
135
140
  return null;
136
141
  const usedIndex = renderedItemIndex;
142
+ // eslint-disable-next-line react-hooks/immutability
137
143
  renderedItemIndex += 1;
138
- if (child.type === Hidden) {
144
+ if (isValidElement(child) && child.type === Hidden) {
145
+ // @ts-expect-error -- child is guaranteed to be an element
139
146
  const { children: hiddenChild, ...hiddenProps } = child.props;
140
147
  const key = child.key || index;
141
148
  return (_createElement(Hidden, { ...hiddenProps, key: key }, renderItem({ child: hiddenChild, index: usedIndex })));
@@ -1,5 +1,6 @@
1
1
  import React from "react";
2
2
  import { type ViewProps } from "./..";
3
+ import { StoryObj } from "@storybook/react-vite";
3
4
  declare const _default: {
4
5
  title: string;
5
6
  component: {
@@ -137,3 +138,6 @@ export declare const testComposition: {
137
138
  name: string;
138
139
  render: () => React.JSX.Element;
139
140
  };
141
+ export declare const asProp: StoryObj;
142
+ export declare const className: StoryObj;
143
+ export declare const itemClassName: StoryObj;
@@ -9,6 +9,7 @@ import MenuItem from "../../MenuItem/index.js";
9
9
  import Button from "../../Button/index.js";
10
10
  import IconPlus from "../../../icons/Plus.js";
11
11
  import useToggle from "../../../hooks/useToggle.js";
12
+ import { expect } from "storybook/test";
12
13
  export default {
13
14
  title: "Utility components/View",
14
15
  component: View,
@@ -1288,3 +1289,41 @@ export const testComposition = {
1288
1289
  </Example.Item>
1289
1290
  </Example>),
1290
1291
  };
1292
+ export const asProp = {
1293
+ name: "as",
1294
+ render: () => (<View as="ul">
1295
+ <View.Item as="li">Content</View.Item>
1296
+ </View>),
1297
+ play: async ({ canvas }) => {
1298
+ const list = canvas.getByRole("list");
1299
+ const item = canvas.getByRole("listitem");
1300
+ expect(list).toBeInTheDocument();
1301
+ expect(item).toBeInTheDocument();
1302
+ },
1303
+ };
1304
+ export const className = {
1305
+ name: "className, attributes",
1306
+ render: () => (<div data-testid="root">
1307
+ <View className="test-classname" attributes={{ id: "test-id" }}>
1308
+ Content
1309
+ </View>
1310
+ </div>),
1311
+ play: async ({ canvas }) => {
1312
+ const root = canvas.getByTestId("root").firstChild;
1313
+ expect(root).toHaveClass("test-classname");
1314
+ expect(root).toHaveAttribute("id", "test-id");
1315
+ },
1316
+ };
1317
+ export const itemClassName = {
1318
+ name: "item className, attributes",
1319
+ render: () => (<div data-testid="root">
1320
+ <View.Item className="test-classname" attributes={{ id: "test-id" }}>
1321
+ Content
1322
+ </View.Item>
1323
+ </div>),
1324
+ play: async ({ canvas }) => {
1325
+ const root = canvas.getByTestId("root").firstChild;
1326
+ expect(root).toHaveClass("test-classname");
1327
+ expect(root).toHaveAttribute("id", "test-id");
1328
+ },
1329
+ };
@@ -10,7 +10,9 @@ const Expandable = (props) => {
10
10
  const rootRef = React.useRef(null);
11
11
  const mountedRef = React.useRef(false);
12
12
  const [animatedHeight, setAnimatedHeight] = React.useState(active ? "auto" : null);
13
- const contentClassNames = classNames(s.root, mountedRef.current && animatedHeight !== "auto" && s["--animated"]);
13
+ const contentClassNames = classNames(s.root,
14
+ // eslint-disable-next-line react-hooks/refs
15
+ mountedRef.current && animatedHeight !== "auto" && s["--animated"]);
14
16
  const handleTransitionEnd = (e) => {
15
17
  if (e.propertyName !== "height")
16
18
  return;
@@ -18,18 +18,20 @@ const Portal = (props) => {
18
18
  const { children, targetRef } = props;
19
19
  const mountedToggle = useToggle();
20
20
  const rootRef = React.useRef(null);
21
+ // eslint-disable-next-line react-hooks/refs
21
22
  const rootNode = rootRef.current?.getRootNode();
22
23
  const isShadowDom = rootNode instanceof ShadowRoot;
23
24
  const defaultTargetEl = isShadowDom ? rootNode : document.body;
24
25
  /**
25
26
  * Check for parent portal to render inside it
26
- * To avoid z-iondex issues
27
+ * To avoid z-index issues
27
28
  * Example:
28
29
  * Dropdown rendered on the page should render under the modal
29
30
  * Dropdown inside the modal should render above it
30
31
  */
31
32
  const portal = usePortalScope();
32
33
  const nextScopeRef = targetRef || portal.scopeRef;
34
+ // eslint-disable-next-line react-hooks/refs
33
35
  const targetEl = nextScopeRef?.current || defaultTargetEl;
34
36
  useIsomorphicLayoutEffect(() => {
35
37
  mountedToggle.activate();
@@ -37,6 +39,7 @@ const Portal = (props) => {
37
39
  }, []);
38
40
  /* Preserve the current theme when rendered in body */
39
41
  return [
42
+ // eslint-disable-next-line react-hooks/refs
40
43
  ReactDOM.createPortal(_jsx(Theme, { children: children }), targetEl),
41
44
  // Make sure this element doesn't affect components using :last-child when their children use portals
42
45
  !mountedToggle.active && _jsx("div", { ref: rootRef, className: s.root }, "root"),
@@ -8,5 +8,6 @@ declare const useIsDismissible: (args: {
8
8
  active?: boolean;
9
9
  contentRef: Ref;
10
10
  triggerRef?: Ref;
11
+ hasTrigger?: boolean;
11
12
  }) => () => boolean;
12
13
  export default useIsDismissible;
@@ -4,7 +4,6 @@
4
4
  */
5
5
  import React from "react";
6
6
  import useElementId from "../useElementId.js";
7
- import { onNextFrame } from "../../utilities/animation.js";
8
7
  let queue = {};
9
8
  let latestId = null;
10
9
  const removeFromQueue = (id) => {
@@ -23,12 +22,12 @@ const addToQueue = (id, contentRef, triggerRef) => {
23
22
  latestId = id;
24
23
  };
25
24
  const useIsDismissible = (args) => {
26
- const { active, contentRef, triggerRef } = args;
25
+ const { active, contentRef, triggerRef, hasTrigger = true } = args;
27
26
  const id = useElementId();
28
27
  React.useEffect(() => {
29
28
  if (!active)
30
29
  return;
31
- onNextFrame(() => addToQueue(id, contentRef, triggerRef));
30
+ addToQueue(id, contentRef, triggerRef);
32
31
  return () => removeFromQueue(id);
33
32
  }, [active, id, contentRef, triggerRef]);
34
33
  return React.useCallback(() => {
@@ -38,10 +37,11 @@ const useIsDismissible = (args) => {
38
37
  const latestTrigger = latest?.triggerRef?.current;
39
38
  const prev = latest?.parentId ? queue[latest.parentId] : undefined;
40
39
  const prevContent = prev?.contentRef.current;
40
+ const nested = prevContent && latestTrigger && prevContent.contains(latestTrigger);
41
41
  // Don't block independently rendered components that are not nested in each other
42
- if (!prevContent || !latestTrigger || !prevContent.contains(latestTrigger))
42
+ if (hasTrigger && !nested)
43
43
  return true;
44
- return latestId === id;
45
- }, [id, active]);
44
+ return !latestId || latestId === id;
45
+ }, [id, active, hasTrigger]);
46
46
  };
47
47
  export default useIsDismissible;
@@ -12,6 +12,7 @@ const usePrevious = (value, clean = false) => {
12
12
  React.useEffect(() => {
13
13
  ref.current = clean ? copy(value) : value;
14
14
  }, [value, clean]);
15
+ // eslint-disable-next-line react-hooks/refs
15
16
  return ref.current;
16
17
  };
17
18
  export default usePrevious;
@@ -5,7 +5,7 @@ import useDrag from "../_private/useDrag.js";
5
5
  import useToggle from "../useToggle.js";
6
6
  import Button from "../../components/Button/index.js";
7
7
  export default {
8
- title: "Internal/Hooks/useDrag",
8
+ title: "Internal/useDrag",
9
9
  parameters: {
10
10
  chromatic: { disableSnapshot: true },
11
11
  },
@@ -1,18 +1,20 @@
1
1
  "use client";
2
2
  import React from "react";
3
- import { lockScroll, unlockScroll } from "../utilities/scroll/index.js";
3
+ import { lockScroll } from "../utilities/scroll/index.js";
4
4
  const useScrollLock = (options) => {
5
5
  const { containerRef, originRef } = options || {};
6
6
  const [locked, setLocked] = React.useState(false);
7
+ const unlockScrollRef = React.useRef(null);
7
8
  const handleLockScroll = React.useCallback(() => {
8
- lockScroll({
9
+ unlockScrollRef.current = lockScroll({
9
10
  containerEl: containerRef?.current,
10
11
  originEl: originRef?.current,
11
12
  cb: () => setLocked(true),
12
13
  });
13
14
  }, [containerRef, originRef]);
14
15
  const handleUnlockScroll = React.useCallback(() => {
15
- unlockScroll(() => setLocked(false));
16
+ unlockScrollRef.current?.(() => setLocked(false));
17
+ unlockScrollRef.current = null;
16
18
  }, []);
17
19
  return React.useMemo(() => ({
18
20
  scrollLocked: locked,
package/dist/index.d.ts CHANGED
@@ -103,7 +103,7 @@ export type { ContainerProps } from "./components/Container";
103
103
  export { default as Dismissible } from "./components/Dismissible";
104
104
  export type { DismissibleProps } from "./components/Dismissible";
105
105
  export { default as Flyout } from "./components/Flyout";
106
- export type { FlyoutProps, FlyoutInstance } from "./components/Flyout";
106
+ export type { FlyoutProps, FlyoutInstance, FlyoutTriggerAttributes } from "./components/Flyout";
107
107
  export { default as FormControl } from "./components/FormControl";
108
108
  export type { FormControlProps } from "./components/FormControl";
109
109
  export { default as Grid } from "./components/Grid";
@@ -1 +1 @@
1
- [style*="--rs-align-s:"]{align-items:var(--rs-align)!important;--rs-align-s: ;--rs-align-m:var(--rs-align-s);--rs-align-l:var(--rs-align-m);--rs-align-xl:var(--rs-align-l);--rs-align:var(--rs-align-s)}@media (--rs-viewport-m ){[style*="--rs-align-s:"]{--rs-align:var(--rs-align-m)}}@media (--rs-viewport-l ){[style*="--rs-align-s:"]{--rs-align:var(--rs-align-l)}}@media (--rs-viewport-xl ){[style*="--rs-align-s:"]{--rs-align:var(--rs-align-xl)}}
1
+ [style*="--rs-align-"]{align-items:var(--rs-align)!important;--rs-align-s: ;--rs-align-m:var(--rs-align-s);--rs-align-l:var(--rs-align-m);--rs-align-xl:var(--rs-align-l);--rs-align:var(--rs-align-s)}@media (--rs-viewport-m ){[style*="--rs-align-"]{--rs-align:var(--rs-align-m)}}@media (--rs-viewport-l ){[style*="--rs-align-"]{--rs-align:var(--rs-align-l)}}@media (--rs-viewport-xl ){[style*="--rs-align-"]{--rs-align:var(--rs-align-xl)}}
@@ -1 +1 @@
1
- [style*="--rs-ratio-s:"]{--rs-ratio-s:0;--rs-ratio-m:var(--rs-ratio-s);--rs-ratio-l:var(--rs-ratio-m);--rs-ratio-xl:var(--rs-ratio-l);--rs-ratio:var(--rs-ratio-s)}[style*="--rs-ratio-s:"]:empty,[style*="--rs-ratio-s:"]:not(:empty)>*{aspect-ratio:var(--rs-ratio)}[style*="--rs-ratio-s:"]>img{object-fit:cover}@media (--rs-viewport-m ){[style*="--rs-ratio-s:"]{--rs-ratio:var(--rs-ratio-m)}}@media (--rs-viewport-l ){[style*="--rs-ratio-s:"]{--rs-ratio:var(--rs-ratio-l)}}@media (--rs-viewport-xl ){[style*="--rs-ratio-s:"]{--rs-ratio:var(--rs-ratio-xl)}}
1
+ [style*="--rs-ratio-"]{--rs-ratio-s:0;--rs-ratio-m:var(--rs-ratio-s);--rs-ratio-l:var(--rs-ratio-m);--rs-ratio-xl:var(--rs-ratio-l);--rs-ratio:var(--rs-ratio-s)}[style*="--rs-ratio-s:"]:empty,[style*="--rs-ratio-s:"]:not(:empty)>*{aspect-ratio:var(--rs-ratio)}[style*="--rs-ratio-s:"]>img{object-fit:cover}@media (--rs-viewport-m ){[style*="--rs-ratio-"]{--rs-ratio:var(--rs-ratio-m)}}@media (--rs-viewport-l ){[style*="--rs-ratio-"]{--rs-ratio:var(--rs-ratio-l)}}@media (--rs-viewport-xl ){[style*="--rs-ratio-"]{--rs-ratio:var(--rs-ratio-xl)}}
@@ -1 +1 @@
1
- .root[style*="--rs-bleed-s:"]{margin-left:calc(var(--rs-unit-x1) * var(--rs-bleed) * -1);margin-right:calc(var(--rs-unit-x1) * var(--rs-bleed) * -1);--rs-bleed-s:0;--rs-bleed-m:var(--rs-bleed-s);--rs-bleed-l:var(--rs-bleed-m);--rs-bleed-xl:var(--rs-bleed-l);--rs-bleed:var(--rs-bleed-s)}.--bleed{border-left-style:none!important;border-radius:0!important;border-right-style:none!important}@media (--rs-viewport-m ){.root[style*="--rs-bleed-s:"]{--rs-bleed:var(--rs-bleed-m)}.--bleed-true--m{border-left-style:none!important;border-radius:0!important;border-right-style:none!important}.--bleed-false--m{border-left-style:solid!important;border-radius:var(--rs-radius)!important;border-right-style:solid!important}}@media (--rs-viewport-l ){.root[style*="--rs-bleed-s:"]{--rs-bleed:var(--rs-bleed-l)}.--bleed-true--l{border-left-style:none!important;border-radius:0!important;border-right-style:none!important}.--bleed-false--l{border-left-style:solid!important;border-radius:var(--rs-radius)!important;border-right-style:solid!important}}@media (--rs-viewport-xl ){.root[style*="--rs-bleed-s:"]{--rs-bleed:var(--rs-bleed-xl)}.--bleed-true--xl{border-left-style:none!important;border-radius:0!important;border-right-style:none!important}.--bleed-false--xl{border-left-style:solid!important;border-radius:var(--rs-radius)!important;border-right-style:solid!important}}
1
+ .root[style*="--rs-bleed-"]{margin-left:calc(var(--rs-unit-x1) * var(--rs-bleed) * -1);margin-right:calc(var(--rs-unit-x1) * var(--rs-bleed) * -1);--rs-bleed-s:0;--rs-bleed-m:var(--rs-bleed-s);--rs-bleed-l:var(--rs-bleed-m);--rs-bleed-xl:var(--rs-bleed-l);--rs-bleed:var(--rs-bleed-s)}.--bleed{border-left-style:none!important;border-radius:0!important;border-right-style:none!important}@media (--rs-viewport-m ){.root[style*="--rs-bleed-"]{--rs-bleed:var(--rs-bleed-m)}.--bleed-true--m{border-left-style:none!important;border-radius:0!important;border-right-style:none!important}.--bleed-false--m{border-left-style:solid!important;border-radius:var(--rs-radius)!important;border-right-style:solid!important}}@media (--rs-viewport-l ){.root[style*="--rs-bleed-"]{--rs-bleed:var(--rs-bleed-l)}.--bleed-true--l{border-left-style:none!important;border-radius:0!important;border-right-style:none!important}.--bleed-false--l{border-left-style:solid!important;border-radius:var(--rs-radius)!important;border-right-style:solid!important}}@media (--rs-viewport-xl ){.root[style*="--rs-bleed-"]{--rs-bleed:var(--rs-bleed-xl)}.--bleed-true--xl{border-left-style:none!important;border-radius:0!important;border-right-style:none!important}.--bleed-false--xl{border-left-style:solid!important;border-radius:var(--rs-radius)!important;border-right-style:solid!important}}
@@ -1 +1 @@
1
- [style*="--rs-justify-s:"]{justify-content:var(--rs-justify)!important;--rs-justify-s: ;--rs-justify-m:var(--rs-justify-s);--rs-justify-l:var(--rs-justify-m);--rs-justify-xl:var(--rs-justify-l);--rs-justify:var(--rs-justify-s)}@media (--rs-viewport-m ){[style*="--rs-justify-s:"]{--rs-justify:var(--rs-justify-m)}}@media (--rs-viewport-l ){[style*="--rs-justify-s:"]{--rs-justify:var(--rs-justify-l)}}@media (--rs-viewport-xl ){[style*="--rs-justify-s:"]{--rs-justify:var(--rs-justify-xl)}}
1
+ [style*="--rs-justify-"]{justify-content:var(--rs-justify)!important;--rs-justify-s: ;--rs-justify-m:var(--rs-justify-s);--rs-justify-l:var(--rs-justify-m);--rs-justify-xl:var(--rs-justify-l);--rs-justify:var(--rs-justify-s)}@media (--rs-viewport-m ){[style*="--rs-justify-"]{--rs-justify:var(--rs-justify-m)}}@media (--rs-viewport-l ){[style*="--rs-justify-"]{--rs-justify:var(--rs-justify-l)}}@media (--rs-viewport-xl ){[style*="--rs-justify-"]{--rs-justify:var(--rs-justify-xl)}}
@@ -1 +1 @@
1
- .root[style*="--rs-max-h-s:"]{--rs-max-h-s:none;--rs-max-h-m:var(--rs-max-h-s);--rs-max-h-l:var(--rs-max-h-m);--rs-max-h-xl:var(--rs-max-h-l);--rs-max-h:var(--rs-max-h-s)}.--type-literal{max-height:var(--rs-max-h)!important}.--type-unit{max-height:calc(var(--rs-max-h) * var(--rs-unit-x1))!important}@media (--rs-viewport-m ){.root[style*="--rs-max-h-s:"]{--rs-max-h:var(--rs-max-h-m)}.--type-literal--m{max-height:var(--rs-max-h)!important}.--type-unit--m{max-height:calc(var(--rs-max-h) * var(--rs-unit-x1))!important}}@media (--rs-viewport-l ){.root[style*="--rs-max-h-s:"]{--rs-max-h:var(--rs-max-h-l)}.--type-literal--l{max-height:var(--rs-max-h)!important}.--type-unit--l{max-height:calc(var(--rs-max-h) * var(--rs-unit-x1))!important}}@media (--rs-viewport-xl ){.root[style*="--rs-max-h-s:"]{--rs-max-h:var(--rs-max-h-xl)}.--type-literal--xl{max-height:var(--rs-max-h)!important}.--type-unit--xl{max-height:calc(var(--rs-max-h) * var(--rs-unit-x1))!important}}
1
+ .root[style*="--rs-max-h-"]{--rs-max-h-s:none;--rs-max-h-m:var(--rs-max-h-s);--rs-max-h-l:var(--rs-max-h-m);--rs-max-h-xl:var(--rs-max-h-l);--rs-max-h:var(--rs-max-h-s)}.--type-literal{max-height:var(--rs-max-h)!important}.--type-unit{max-height:calc(var(--rs-max-h) * var(--rs-unit-x1))!important}@media (--rs-viewport-m ){.root[style*="--rs-max-h-"]{--rs-max-h:var(--rs-max-h-m)}.--type-literal--m{max-height:var(--rs-max-h)!important}.--type-unit--m{max-height:calc(var(--rs-max-h) * var(--rs-unit-x1))!important}}@media (--rs-viewport-l ){.root[style*="--rs-max-h-"]{--rs-max-h:var(--rs-max-h-l)}.--type-literal--l{max-height:var(--rs-max-h)!important}.--type-unit--l{max-height:calc(var(--rs-max-h) * var(--rs-unit-x1))!important}}@media (--rs-viewport-xl ){.root[style*="--rs-max-h-"]{--rs-max-h:var(--rs-max-h-xl)}.--type-literal--xl{max-height:var(--rs-max-h)!important}.--type-unit--xl{max-height:calc(var(--rs-max-h) * var(--rs-unit-x1))!important}}
@@ -1 +1 @@
1
- .root[style*="--rs-max-w-s:"]{--rs-max-w-s:none;--rs-max-w-m:var(--rs-max-w-s);--rs-max-w-l:var(--rs-max-w-m);--rs-max-w-xl:var(--rs-max-w-l);--rs-max-w:var(--rs-max-w-s)}.--type-literal{max-width:var(--rs-max-w)!important}.--type-unit{max-width:calc(var(--rs-max-w) * var(--rs-unit-x1))!important}@media (--rs-viewport-m ){.root[style*="--rs-max-w-s:"]{--rs-max-w:var(--rs-max-w-m)}.--type-literal--m{max-width:var(--rs-max-w)!important}.--type-unit--m{max-width:calc(var(--rs-max-w) * var(--rs-unit-x1))!important}}@media (--rs-viewport-l ){.root[style*="--rs-max-w-s:"]{--rs-max-w:var(--rs-max-w-l)}.--type-literal--l{max-width:var(--rs-max-w)!important}.--type-unit--l{max-width:calc(var(--rs-max-w) * var(--rs-unit-x1))!important}}@media (--rs-viewport-xl ){.root[style*="--rs-max-w-s:"]{--rs-max-w:var(--rs-max-w-xl)}.--type-literal--xl{max-width:var(--rs-max-w)!important}.--type-unit--xl{max-width:calc(var(--rs-max-w) * var(--rs-unit-x1))!important}}
1
+ .root[style*="--rs-max-w-"]{--rs-max-w-s:none;--rs-max-w-m:var(--rs-max-w-s);--rs-max-w-l:var(--rs-max-w-m);--rs-max-w-xl:var(--rs-max-w-l);--rs-max-w:var(--rs-max-w-s)}.--type-literal{max-width:var(--rs-max-w)!important}.--type-unit{max-width:calc(var(--rs-max-w) * var(--rs-unit-x1))!important}@media (--rs-viewport-m ){.root[style*="--rs-max-w-"]{--rs-max-w:var(--rs-max-w-m)}.--type-literal--m{max-width:var(--rs-max-w)!important}.--type-unit--m{max-width:calc(var(--rs-max-w) * var(--rs-unit-x1))!important}}@media (--rs-viewport-l ){.root[style*="--rs-max-w-"]{--rs-max-w:var(--rs-max-w-l)}.--type-literal--l{max-width:var(--rs-max-w)!important}.--type-unit--l{max-width:calc(var(--rs-max-w) * var(--rs-unit-x1))!important}}@media (--rs-viewport-xl ){.root[style*="--rs-max-w-"]{--rs-max-w:var(--rs-max-w-xl)}.--type-literal--xl{max-width:var(--rs-max-w)!important}.--type-unit--xl{max-width:calc(var(--rs-max-w) * var(--rs-unit-x1))!important}}
@@ -1 +1 @@
1
- .root[style*="--rs-min-h-s:"]{--rs-min-h-s:none;--rs-min-h-m:var(--rs-min-h-s);--rs-min-h-l:var(--rs-min-h-m);--rs-min-h-xl:var(--rs-min-h-l);--rs-min-h:var(--rs-min-h-s)}.--type-literal{min-height:var(--rs-min-h)!important}.--type-unit{min-height:calc(var(--rs-min-h) * var(--rs-unit-x1))!important}@media (--rs-viewport-m ){.root[style*="--rs-min-h-s:"]{--rs-min-h:var(--rs-min-h-m)}.--type-literal--m{min-height:var(--rs-min-h)!important}.--type-unit--m{min-height:calc(var(--rs-min-h) * var(--rs-unit-x1))!important}}@media (--rs-viewport-l ){.root[style*="--rs-min-h-s:"]{--rs-min-h:var(--rs-min-h-l)}.--type-literal--l{min-height:var(--rs-min-h)!important}.--type-unit--l{min-height:calc(var(--rs-min-h) * var(--rs-unit-x1))!important}}@media (--rs-viewport-xl ){.root[style*="--rs-min-h-s:"]{--rs-min-h:var(--rs-min-h-xl)}.--type-literal--xl{min-height:var(--rs-min-h)!important}.--type-unit--xl{min-height:calc(var(--rs-min-h) * var(--rs-unit-x1))!important}}
1
+ .root[style*="--rs-min-h-"]{--rs-min-h-s:none;--rs-min-h-m:var(--rs-min-h-s);--rs-min-h-l:var(--rs-min-h-m);--rs-min-h-xl:var(--rs-min-h-l);--rs-min-h:var(--rs-min-h-s)}.--type-literal{min-height:var(--rs-min-h)!important}.--type-unit{min-height:calc(var(--rs-min-h) * var(--rs-unit-x1))!important}@media (--rs-viewport-m ){.root[style*="--rs-min-h-"]{--rs-min-h:var(--rs-min-h-m)}.--type-literal--m{min-height:var(--rs-min-h)!important}.--type-unit--m{min-height:calc(var(--rs-min-h) * var(--rs-unit-x1))!important}}@media (--rs-viewport-l ){.root[style*="--rs-min-h-"]{--rs-min-h:var(--rs-min-h-l)}.--type-literal--l{min-height:var(--rs-min-h)!important}.--type-unit--l{min-height:calc(var(--rs-min-h) * var(--rs-unit-x1))!important}}@media (--rs-viewport-xl ){.root[style*="--rs-min-h-"]{--rs-min-h:var(--rs-min-h-xl)}.--type-literal--xl{min-height:var(--rs-min-h)!important}.--type-unit--xl{min-height:calc(var(--rs-min-h) * var(--rs-unit-x1))!important}}
@@ -1 +1 @@
1
- .root[style*="--rs-min-w-s:"]{--rs-min-w-s:none;--rs-min-w-m:var(--rs-min-w-s);--rs-min-w-l:var(--rs-min-w-m);--rs-min-w-xl:var(--rs-min-w-l);--rs-min-w:var(--rs-min-w-s)}.--type-literal{min-width:var(--rs-min-w)!important}.--type-unit{min-width:calc(var(--rs-min-w) * var(--rs-unit-x1))!important}@media (--rs-viewport-m ){.root[style*="--rs-min-w-s:"]{--rs-min-w:var(--rs-min-w-m)}.--type-literal--m{min-width:var(--rs-min-w)!important}.--type-unit--m{min-width:calc(var(--rs-min-w) * var(--rs-unit-x1))!important}}@media (--rs-viewport-l ){.root[style*="--rs-min-w-s:"]{--rs-min-w:var(--rs-min-w-l)}.--type-literal--l{min-width:var(--rs-min-w)!important}.--type-unit--l{min-width:calc(var(--rs-min-w) * var(--rs-unit-x1))!important}}@media (--rs-viewport-xl ){.root[style*="--rs-min-w-s:"]{--rs-min-w:var(--rs-min-w-xl)}.--type-literal--xl{min-width:var(--rs-min-w)!important}.--type-unit--xl{min-width:calc(var(--rs-min-w) * var(--rs-unit-x1))!important}}
1
+ .root[style*="--rs-min-w-"]{--rs-min-w-s:none;--rs-min-w-m:var(--rs-min-w-s);--rs-min-w-l:var(--rs-min-w-m);--rs-min-w-xl:var(--rs-min-w-l);--rs-min-w:var(--rs-min-w-s)}.--type-literal{min-width:var(--rs-min-w)!important}.--type-unit{min-width:calc(var(--rs-min-w) * var(--rs-unit-x1))!important}@media (--rs-viewport-m ){.root[style*="--rs-min-w-"]{--rs-min-w:var(--rs-min-w-m)}.--type-literal--m{min-width:var(--rs-min-w)!important}.--type-unit--m{min-width:calc(var(--rs-min-w) * var(--rs-unit-x1))!important}}@media (--rs-viewport-l ){.root[style*="--rs-min-w-"]{--rs-min-w:var(--rs-min-w-l)}.--type-literal--l{min-width:var(--rs-min-w)!important}.--type-unit--l{min-width:calc(var(--rs-min-w) * var(--rs-unit-x1))!important}}@media (--rs-viewport-xl ){.root[style*="--rs-min-w-"]{--rs-min-w:var(--rs-min-w-xl)}.--type-literal--xl{min-width:var(--rs-min-w)!important}.--type-unit--xl{min-width:calc(var(--rs-min-w) * var(--rs-unit-x1))!important}}
@@ -1 +1 @@
1
- [style*="--rs-position-s:"]{position:var(--rs-position)!important;--rs-position-s: ;--rs-position-m:var(--rs-position-s);--rs-position-l:var(--rs-position-m);--rs-position-xl:var(--rs-position-l);--rs-position:var(--rs-position-s)}@media (--rs-viewport-m ){[style*="--rs-position-s:"]{--rs-position:var(--rs-position-m)}}@media (--rs-viewport-l ){[style*="--rs-position-s:"]{--rs-position:var(--rs-position-l)}}@media (--rs-viewport-xl ){[style*="--rs-position-s:"]{--rs-position:var(--rs-position-xl)}}
1
+ [style*="--rs-position-"]{position:var(--rs-position)!important;--rs-position-s: ;--rs-position-m:var(--rs-position-s);--rs-position-l:var(--rs-position-m);--rs-position-xl:var(--rs-position-l);--rs-position:var(--rs-position-s)}@media (--rs-viewport-m ){[style*="--rs-position-"]{--rs-position:var(--rs-position-m)}}@media (--rs-viewport-l ){[style*="--rs-position-"]{--rs-position:var(--rs-position-l)}}@media (--rs-viewport-xl ){[style*="--rs-position-"]{--rs-position:var(--rs-position-xl)}}
@@ -1 +1 @@
1
- [style*="--rs-text-align-s:"]{text-align:var(--rs-text-align)!important;--rs-text-align-s: ;--rs-text-align-m:var(--rs-text-align-s);--rs-text-align-l:var(--rs-text-align-m);--rs-text-align-xl:var(--rs-text-align-l);--rs-text-align:var(--rs-text-align-s)}@media (--rs-viewport-m ){[style*="--rs-text-align-s:"]{--rs-text-align:var(--rs-text-align-m)}}@media (--rs-viewport-l ){[style*="--rs-text-align-s:"]{--rs-text-align:var(--rs-text-align-l)}}@media (--rs-viewport-xl ){[style*="--rs-text-align-s:"]{--rs-text-align:var(--rs-text-align-xl)}}
1
+ [style*="--rs-text-align-"]{text-align:var(--rs-text-align)!important;--rs-text-align-s: ;--rs-text-align-m:var(--rs-text-align-s);--rs-text-align-l:var(--rs-text-align-m);--rs-text-align-xl:var(--rs-text-align-l);--rs-text-align:var(--rs-text-align-s)}@media (--rs-viewport-m ){[style*="--rs-text-align-"]{--rs-text-align:var(--rs-text-align-m)}}@media (--rs-viewport-l ){[style*="--rs-text-align-"]{--rs-text-align:var(--rs-text-align-l)}}@media (--rs-viewport-xl ){[style*="--rs-text-align-"]{--rs-text-align:var(--rs-text-align-xl)}}
@@ -1 +1 @@
1
- .root[style*="--rs-w-s:"]{--rs-w-s:auto;--rs-w-m:var(--rs-w-s);--rs-w-l:var(--rs-w-m);--rs-w-xl:var(--rs-w-l);--rs-w:var(--rs-w-s)}.--type-literal{width:var(--rs-w)!important}.--type-unit{width:calc(var(--rs-w) * var(--rs-unit-x1))!important}@media (--rs-viewport-m ){.root[style*="--rs-w-s:"]{--rs-w:var(--rs-w-m)}.--type-literal--m{width:var(--rs-w)!important}.--type-unit--m{width:calc(var(--rs-w) * var(--rs-unit-x1))!important}}@media (--rs-viewport-l ){.root[style*="--rs-w-s:"]{--rs-w:var(--rs-w-l)}.--type-literal--l{width:var(--rs-w)!important}.--type-unit--l{width:calc(var(--rs-w) * var(--rs-unit-x1))!important}}@media (--rs-viewport-xl ){.root[style*="--rs-w-s:"]{--rs-w:var(--rs-w-xl)}.--type-literal--xl{width:var(--rs-w)!important}.--type-unit--xl{width:calc(var(--rs-w) * var(--rs-unit-x1))!important}}
1
+ .root[style*="--rs-w-"]{--rs-w-s:auto;--rs-w-m:var(--rs-w-s);--rs-w-l:var(--rs-w-m);--rs-w-xl:var(--rs-w-l);--rs-w:var(--rs-w-s)}.--type-literal{width:var(--rs-w)!important}.--type-unit{width:calc(var(--rs-w) * var(--rs-unit-x1))!important}@media (--rs-viewport-m ){.root[style*="--rs-w-"]{--rs-w:var(--rs-w-m)}.--type-literal--m{width:var(--rs-w)!important}.--type-unit--m{width:calc(var(--rs-w) * var(--rs-unit-x1))!important}}@media (--rs-viewport-l ){.root[style*="--rs-w-"]{--rs-w:var(--rs-w-l)}.--type-literal--l{width:var(--rs-w)!important}.--type-unit--l{width:calc(var(--rs-w) * var(--rs-unit-x1))!important}}@media (--rs-viewport-xl ){.root[style*="--rs-w-"]{--rs-w:var(--rs-w-xl)}.--type-literal--xl{width:var(--rs-w)!important}.--type-unit--xl{width:calc(var(--rs-w) * var(--rs-unit-x1))!important}}
@@ -4,8 +4,8 @@ export const preventDefault = (e) => e.preventDefault();
4
4
  * without locking the page with overflow
5
5
  */
6
6
  export const disableScroll = () => {
7
- window.addEventListener("wheel", preventDefault, { passive: false });
8
- window.addEventListener("touchmove", preventDefault, { passive: false });
7
+ window.addEventListener("wheel", preventDefault);
8
+ window.addEventListener("touchmove", preventDefault);
9
9
  };
10
10
  export const enableScroll = () => {
11
11
  window.removeEventListener("wheel", preventDefault);
@@ -1,2 +1,2 @@
1
1
  export { disableScroll, enableScroll } from "./disable";
2
- export { lockScroll, unlockScroll } from "./lock";
2
+ export { lockScroll } from "./lock";
@@ -1,2 +1,2 @@
1
1
  export { disableScroll, enableScroll } from "./disable.js";
2
- export { lockScroll, unlockScroll } from "./lock.js";
2
+ export { lockScroll } from "./lock.js";
@@ -2,5 +2,4 @@ export declare const lockScroll: (args: {
2
2
  containerEl?: HTMLElement | null;
3
3
  originEl?: HTMLElement | null;
4
4
  cb?: () => void;
5
- }) => void;
6
- export declare const unlockScroll: (cb?: () => void) => void;
5
+ }) => ((cb?: () => void) => void) | undefined;
@@ -3,31 +3,32 @@ import { findClosestScrollableContainer } from "../dom/index.js";
3
3
  import lockSafariScroll from "./lockSafari.js";
4
4
  import lockStandardScroll from "./lockStandard.js";
5
5
  let bodyLockedCount = 0;
6
- let reset = () => { };
7
6
  export const lockScroll = (args) => {
8
- const isIOSLock = isIOS() && !args.containerEl && !args.originEl;
7
+ const isIOSLock = isIOS();
8
+ let reset = () => { };
9
9
  let container = document.body;
10
- if (args.originEl && !isIOSLock) {
10
+ if (args.originEl)
11
11
  container = findClosestScrollableContainer({ el: args.originEl });
12
- }
13
- if (args.containerEl && !isIOSLock)
12
+ if (args.containerEl)
14
13
  container = args.containerEl;
15
- if (container === document.body)
14
+ const lockedBodyScroll = container === document.body;
15
+ if (lockedBodyScroll)
16
16
  bodyLockedCount += 1;
17
- if (bodyLockedCount > 1)
17
+ console.log("bodyLockedCount", { bodyLockedCount, lockedBodyScroll, isIOSLock });
18
+ if (lockedBodyScroll && bodyLockedCount > 1)
18
19
  return;
19
- if (isIOSLock) {
20
+ if (isIOSLock && lockedBodyScroll) {
20
21
  reset = lockSafariScroll();
21
22
  }
22
23
  else {
23
24
  reset = lockStandardScroll({ container });
24
25
  }
25
26
  args.cb?.();
26
- };
27
- export const unlockScroll = (cb) => {
28
- bodyLockedCount -= 1;
29
- if (bodyLockedCount > 0)
30
- return;
31
- reset();
32
- cb?.();
27
+ return (cb) => {
28
+ if (lockedBodyScroll)
29
+ bodyLockedCount -= 1;
30
+ console.log("bodyLockedCount remove", bodyLockedCount, lockedBodyScroll);
31
+ reset();
32
+ cb?.();
33
+ };
33
34
  };
@@ -13,6 +13,7 @@ const lockSafariScroll = () => {
13
13
  overflow: "hidden",
14
14
  });
15
15
  return () => {
16
+ console.log("reset safari scroll", styleCache);
16
17
  styleCache.reset();
17
18
  window.scrollTo({ top: scrollY, left: scrollX, behavior: "instant" });
18
19
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "reshaped",
3
3
  "description": "Professionally crafted design system in React & Figma for building products of any scale and complexity",
4
- "version": "3.8.0-canary.1",
4
+ "version": "3.8.0-canary.10",
5
5
  "license": "MIT",
6
6
  "email": "hello@reshaped.so",
7
7
  "homepage": "https://reshaped.so",
@@ -89,8 +89,8 @@
89
89
  "release:minor": "node bin/release.js minor",
90
90
  "release:major": "node bin/release.js major",
91
91
  "release:lib": "pnpm build && pnpm publish",
92
- "release:canary": "pnpm build && yarn publish --tag canary",
93
- "release:test": "pnpm build && pnpm pack --filename reshaped-test.tgz",
92
+ "release:canary": "pnpm build && yarn publish --tag canary && git push --follow-tags",
93
+ "release:test": "pnpm build && pnpm pack --out reshaped-test.tgz",
94
94
  "release:copy": "sh ./bin/release-copy.sh",
95
95
  "chromatic": "chromatic -b build:chromatic --project-token=$(cat .chromatic)",
96
96
  "test:vrt": "pnpm chromatic",
@@ -110,34 +110,34 @@
110
110
  "@commitlint/cli": "19.8.1",
111
111
  "@commitlint/config-conventional": "19.8.1",
112
112
  "@commitlint/types": "19.8.1",
113
- "@eslint/js": "9.35.0",
113
+ "@eslint/js": "9.37.0",
114
114
  "@size-limit/preset-big-lib": "11.2.0",
115
- "@storybook/addon-a11y": "9.1.5",
116
- "@storybook/addon-docs": "9.1.5",
117
- "@storybook/addon-vitest": "9.1.5",
118
- "@storybook/react": "9.1.5",
119
- "@storybook/react-vite": "9.1.5",
115
+ "@storybook/addon-a11y": "9.1.10",
116
+ "@storybook/addon-docs": "9.1.10",
117
+ "@storybook/addon-vitest": "9.1.10",
118
+ "@storybook/react": "9.1.10",
119
+ "@storybook/react-vite": "9.1.10",
120
120
  "@testing-library/user-event": "14.6.1",
121
121
  "@types/culori": "4.0.1",
122
122
  "@types/events": "3.0.3",
123
- "@types/node": "24.3.3",
124
- "@types/react": "19.1.13",
125
- "@types/react-dom": "19.1.9",
123
+ "@types/node": "24.7.0",
124
+ "@types/react": "19.2.1",
125
+ "@types/react-dom": "19.2.0",
126
126
  "@vitejs/plugin-react": "4.6.0",
127
127
  "@vitest/browser": "3.2.4",
128
128
  "@vitest/coverage-istanbul": "3.2.4",
129
129
  "@vitest/coverage-v8": "3.2.4",
130
- "chromatic": "13.1.4",
130
+ "chromatic": "13.3.0",
131
131
  "conventional-changelog-cli": "5.0.0",
132
132
  "cz-conventional-changelog": "3.3.0",
133
- "eslint": "9.35.0",
133
+ "eslint": "9.37.0",
134
134
  "eslint-config-prettier": "10.1.8",
135
135
  "eslint-plugin-jsx-a11y": "6.10.2",
136
136
  "eslint-plugin-prettier": "5.5.4",
137
137
  "eslint-plugin-react": "7.37.5",
138
- "eslint-plugin-react-hooks": "5.2.0",
139
- "lefthook": "1.13.0",
140
- "playwright": "1.55.0",
138
+ "eslint-plugin-react-hooks": "6.1.1",
139
+ "lefthook": "1.13.6",
140
+ "playwright": "1.56.0",
141
141
  "postcss": "8.5.6",
142
142
  "postcss-cli": "11.0.1",
143
143
  "postcss-each": "1.1.0",
@@ -148,14 +148,14 @@
148
148
  "react-shadow": "20.6.0",
149
149
  "resolve-tspaths": "0.8.23",
150
150
  "size-limit": "11.2.0",
151
- "storybook": "9.1.5",
152
- "stylelint": "16.24.0",
151
+ "storybook": "9.1.10",
152
+ "stylelint": "16.25.0",
153
153
  "stylelint-config-prettier": "9.0.5",
154
- "stylelint-config-standard": "39.0.0",
154
+ "stylelint-config-standard": "39.0.1",
155
155
  "ts-node": "10.9.2",
156
- "typescript": "5.9.2",
157
- "typescript-eslint": "8.43.0",
158
- "vite": "7.1.5",
156
+ "typescript": "5.9.3",
157
+ "typescript-eslint": "8.46.0",
158
+ "vite": "7.1.9",
159
159
  "vite-tsconfig-paths": "5.1.4",
160
160
  "vitest": "3.2.4",
161
161
  "vitest-browser-react": "1.0.1"
@@ -1,32 +0,0 @@
1
- import { StoryObj } from "@storybook/react-vite";
2
- import { fn } from "storybook/test";
3
- declare const _default: {
4
- title: string;
5
- component: import("react").ForwardRefExoticComponent<import("./..").ActionableProps & import("react").RefAttributes<import("./..").ActionableRef>>;
6
- parameters: {
7
- iframe: {
8
- url: string;
9
- };
10
- chromatic: {
11
- disableSnapshot: boolean;
12
- };
13
- };
14
- };
15
- export default _default;
16
- export declare const children: StoryObj;
17
- export declare const href: StoryObj;
18
- export declare const attributesHref: StoryObj;
19
- export declare const onClick: StoryObj<{
20
- handleClick: ReturnType<typeof fn>;
21
- }>;
22
- export declare const hrefOnClick: StoryObj<{
23
- handleClick: ReturnType<typeof fn>;
24
- }>;
25
- export declare const as: StoryObj;
26
- export declare const type: StoryObj<{
27
- handleSubmit: ReturnType<typeof fn>;
28
- }>;
29
- export declare const stopPropagation: StoryObj<{
30
- handleParentClick: ReturnType<typeof fn>;
31
- }>;
32
- export declare const className: StoryObj;