reshaped 3.9.0-canary.0 → 3.9.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 (344) hide show
  1. package/dist/bundle.css +1 -1
  2. package/dist/bundle.js +2 -31
  3. package/dist/cli/theming/index.js +4 -4
  4. package/dist/cli/theming/reshaped.config.js +1 -1
  5. package/dist/components/Accordion/Accordion.types.d.ts +1 -1
  6. package/dist/components/Accordion/AccordionControlled.js +2 -2
  7. package/dist/components/Accordion/AccordionTrigger.js +2 -2
  8. package/dist/components/Accordion/index.d.ts +1 -1
  9. package/dist/components/Accordion/index.js +1 -1
  10. package/dist/components/ActionBar/ActionBar.js +1 -1
  11. package/dist/components/ActionBar/ActionBar.types.d.ts +1 -1
  12. package/dist/components/Actionable/Actionable.js +1 -1
  13. package/dist/components/Alert/Alert.js +1 -1
  14. package/dist/components/Alert/Alert.types.d.ts +1 -1
  15. package/dist/components/Autocomplete/Autocomplete.js +6 -6
  16. package/dist/components/Autocomplete/Autocomplete.types.d.ts +3 -3
  17. package/dist/components/Avatar/Avatar.js +9 -26
  18. package/dist/components/Avatar/Avatar.module.css +1 -1
  19. package/dist/components/Badge/Badge.js +4 -4
  20. package/dist/components/Badge/Badge.module.css +1 -1
  21. package/dist/components/Badge/Badge.types.d.ts +1 -1
  22. package/dist/components/Breadcrumbs/Breadcrumbs.js +3 -3
  23. package/dist/components/Breadcrumbs/Breadcrumbs.types.d.ts +1 -1
  24. package/dist/components/Breadcrumbs/BreadcrumbsItem.js +1 -1
  25. package/dist/components/Button/Button.js +2 -2
  26. package/dist/components/Button/Button.module.css +1 -1
  27. package/dist/components/Button/Button.types.d.ts +3 -3
  28. package/dist/components/Calendar/Calendar.types.d.ts +25 -6
  29. package/dist/components/Calendar/CalendarControlled.js +45 -10
  30. package/dist/components/Calendar/CalendarControls.js +11 -11
  31. package/dist/components/Calendar/CalendarDate.js +13 -11
  32. package/dist/components/Calendar/CalendarMonth.js +3 -3
  33. package/dist/components/Calendar/CalendarYear.js +1 -1
  34. package/dist/components/Calendar/useCalendarKeyboardNavigation.js +1 -1
  35. package/dist/components/Card/Card.js +2 -2
  36. package/dist/components/Card/Card.module.css +1 -1
  37. package/dist/components/Card/Card.types.d.ts +1 -1
  38. package/dist/components/Carousel/Carousel.js +4 -4
  39. package/dist/components/Carousel/Carousel.types.d.ts +1 -1
  40. package/dist/components/Carousel/CarouselControl.d.ts +1 -1
  41. package/dist/components/Carousel/CarouselControl.js +3 -3
  42. package/dist/components/Checkbox/Checkbox.js +5 -15
  43. package/dist/components/CheckboxGroup/CheckboxGroup.types.d.ts +1 -1
  44. package/dist/components/Container/Container.js +1 -1
  45. package/dist/components/Container/Container.types.d.ts +1 -1
  46. package/dist/components/ContextMenu/ContextMenu.js +1 -1
  47. package/dist/components/Dismissible/Dismissible.js +1 -1
  48. package/dist/components/Divider/Divider.d.ts +1 -1
  49. package/dist/components/Divider/Divider.js +1 -1
  50. package/dist/components/DropdownMenu/DropdownMenu.js +6 -6
  51. package/dist/components/DropdownMenu/DropdownMenu.types.d.ts +4 -4
  52. package/dist/components/FileUpload/FileUpload.js +9 -7
  53. package/dist/components/FileUpload/FileUpload.module.css +1 -1
  54. package/dist/components/FileUpload/FileUpload.types.d.ts +3 -1
  55. package/dist/components/Flyout/Flyout.constants.d.ts +3 -6
  56. package/dist/components/Flyout/Flyout.constants.js +1 -3
  57. package/dist/components/Flyout/Flyout.js +1 -1
  58. package/dist/components/Flyout/Flyout.module.css +1 -1
  59. package/dist/components/Flyout/Flyout.types.d.ts +6 -7
  60. package/dist/components/Flyout/FlyoutContent.js +7 -7
  61. package/dist/components/Flyout/FlyoutControlled.js +17 -14
  62. package/dist/components/Flyout/index.d.ts +1 -1
  63. package/dist/components/Flyout/index.js +1 -1
  64. package/dist/components/Flyout/useFlyout.d.ts +2 -2
  65. package/dist/components/Flyout/useFlyout.js +5 -18
  66. package/dist/components/Flyout/utilities/calculatePosition.d.ts +6 -6
  67. package/dist/components/Flyout/utilities/calculatePosition.js +6 -6
  68. package/dist/components/Flyout/utilities/cooldown.js +1 -2
  69. package/dist/components/Flyout/utilities/flyout.d.ts +1 -1
  70. package/dist/components/Flyout/utilities/flyout.js +5 -2
  71. package/dist/components/FormControl/FormControlCaption.js +1 -1
  72. package/dist/components/FormControl/FormControlLabel.js +1 -1
  73. package/dist/components/FormControl/index.d.ts +2 -2
  74. package/dist/components/FormControl/index.js +2 -2
  75. package/dist/components/Grid/Grid.js +1 -1
  76. package/dist/components/Grid/Grid.types.d.ts +2 -2
  77. package/dist/components/HiddenInput/HiddenInput.js +34 -0
  78. package/dist/components/HiddenInput/HiddenInput.types.d.ts +26 -0
  79. package/dist/components/Icon/Icon.js +1 -1
  80. package/dist/components/Icon/Icon.module.css +1 -1
  81. package/dist/components/Image/Image.js +14 -9
  82. package/dist/components/Image/Image.module.css +1 -1
  83. package/dist/components/Image/Image.types.d.ts +4 -2
  84. package/dist/components/Link/Link.js +1 -1
  85. package/dist/components/MenuItem/MenuItem.js +1 -1
  86. package/dist/components/MenuItem/MenuItem.types.d.ts +2 -2
  87. package/dist/components/Modal/Modal.js +8 -8
  88. package/dist/components/Modal/Modal.module.css +1 -1
  89. package/dist/components/Modal/Modal.types.d.ts +1 -1
  90. package/dist/components/NumberField/NumberFieldControlled.js +7 -7
  91. package/dist/components/Overlay/Overlay.js +8 -8
  92. package/dist/components/PinField/PinFieldControlled.js +4 -4
  93. package/dist/components/Popover/Popover.js +3 -3
  94. package/dist/components/Popover/Popover.module.css +1 -1
  95. package/dist/components/Popover/Popover.types.d.ts +2 -2
  96. package/dist/components/Progress/Progress.module.css +1 -1
  97. package/dist/components/Radio/Radio.js +5 -15
  98. package/dist/components/RadioGroup/RadioGroup.types.d.ts +1 -1
  99. package/dist/components/Reshaped/Reshaped.css +1 -1
  100. package/dist/components/Reshaped/Reshaped.js +4 -4
  101. package/dist/components/Reshaped/Reshaped.types.d.ts +1 -1
  102. package/dist/components/Resizable/Resizable.js +2 -2
  103. package/dist/components/Resizable/Resizable.types.d.ts +1 -1
  104. package/dist/components/Resizable/ResizableHandle.js +1 -1
  105. package/dist/components/Scrim/Scrim.js +4 -3
  106. package/dist/components/Scrim/Scrim.module.css +1 -1
  107. package/dist/components/Scrim/Scrim.types.d.ts +2 -1
  108. package/dist/components/ScrollArea/ScrollArea.js +5 -5
  109. package/dist/components/Select/Select.types.d.ts +3 -3
  110. package/dist/components/Select/SelectCustomControlled.js +6 -3
  111. package/dist/components/Select/SelectEndContent.js +1 -1
  112. package/dist/components/Select/SelectGroup.js +1 -1
  113. package/dist/components/Select/SelectNative.js +2 -2
  114. package/dist/components/Select/SelectRoot.js +1 -1
  115. package/dist/components/Select/SelectTrigger.js +1 -1
  116. package/dist/components/Select/index.d.ts +1 -1
  117. package/dist/components/Select/index.js +1 -1
  118. package/dist/components/Skeleton/Skeleton.js +1 -1
  119. package/dist/components/Slider/SliderControlled.js +7 -7
  120. package/dist/components/Slider/SliderThumb.js +3 -3
  121. package/dist/components/Stepper/Stepper.js +4 -4
  122. package/dist/components/Switch/Switch.js +1 -1
  123. package/dist/components/Table/Table.js +2 -2
  124. package/dist/components/Tabs/Tabs.module.css +1 -1
  125. package/dist/components/Tabs/Tabs.types.d.ts +4 -2
  126. package/dist/components/Tabs/TabsContext.d.ts +1 -0
  127. package/dist/components/Tabs/TabsControlled.js +2 -1
  128. package/dist/components/Tabs/TabsItem.js +4 -4
  129. package/dist/components/Tabs/TabsList.js +17 -13
  130. package/dist/components/Tabs/TabsPanel.js +3 -3
  131. package/dist/components/Text/Text.js +3 -3
  132. package/dist/components/Text/Text.module.css +1 -1
  133. package/dist/components/Text/Text.types.d.ts +2 -0
  134. package/dist/components/TextArea/TextArea.js +1 -1
  135. package/dist/components/TextArea/TextArea.types.d.ts +1 -1
  136. package/dist/components/TextField/TextField.js +2 -2
  137. package/dist/components/TextField/TextField.types.d.ts +2 -2
  138. package/dist/components/Theme/GlobalColorMode.js +1 -1
  139. package/dist/components/Theme/Theme.js +2 -2
  140. package/dist/components/Theme/Theme.module.css +1 -1
  141. package/dist/components/Timeline/Timeline.js +1 -1
  142. package/dist/components/Toast/Toast.js +2 -2
  143. package/dist/components/Toast/Toast.types.d.ts +1 -1
  144. package/dist/components/Toast/ToastContainer.js +3 -3
  145. package/dist/components/Toast/ToastProvider.js +1 -1
  146. package/dist/components/Toast/ToastRegion.js +2 -2
  147. package/dist/components/ToggleButtonGroup/ToggleButtonGroup.types.d.ts +1 -1
  148. package/dist/components/ToggleButtonGroup/ToggleButtonGroupControlled.js +1 -1
  149. package/dist/components/Tooltip/Tooltip.js +5 -3
  150. package/dist/components/View/View.js +2 -2
  151. package/dist/components/View/View.types.d.ts +1 -1
  152. package/dist/components/_private/Expandable/Expandable.js +2 -2
  153. package/dist/components/_private/Portal/Portal.js +1 -1
  154. package/dist/config/tailwind.js +2 -2
  155. package/dist/hooks/_private/useDrag.js +4 -4
  156. package/dist/hooks/_private/useFadeSide.js +1 -1
  157. package/dist/hooks/useOnClickOutside.js +2 -4
  158. package/dist/hooks/useResponsiveClientValue.js +1 -1
  159. package/dist/styles/mixin.js +1 -1
  160. package/dist/tests/ThemesPlayground.js +16 -16
  161. package/dist/themes/_generator/definitions/slate.js +1 -1
  162. package/dist/themes/_generator/tokens/color/utilities/generateColors.d.ts +1 -1
  163. package/dist/themes/_generator/tokens/color/utilities/generateMetaColors.d.ts +1 -1
  164. package/dist/themes/_generator/tokens/color/utilities/generateMetaColors.js +1 -1
  165. package/dist/themes/_generator/tokens/css.js +2 -2
  166. package/dist/themes/_generator/tokens/font/font.types.d.ts +2 -2
  167. package/dist/themes/_generator/tokens/transforms.js +1 -1
  168. package/dist/themes/_generator/tokens/types.d.ts +3 -3
  169. package/dist/themes/_generator/transform.d.ts +1 -1
  170. package/dist/themes/_generator/transform.js +3 -3
  171. package/dist/themes/figma/theme.css +1 -1
  172. package/dist/themes/fragments/twitter/theme.css +1 -1
  173. package/dist/themes/index.d.ts +1 -1
  174. package/dist/themes/reshaped/theme.css +1 -1
  175. package/dist/themes/slate/theme.css +1 -1
  176. package/dist/types/config.d.ts +1 -1
  177. package/dist/utilities/a11y/TrapFocus.js +4 -4
  178. package/dist/utilities/scroll/lock.js +1 -1
  179. package/dist/utilities/scroll/lockStandard.js +1 -1
  180. package/dist/utilities/storybook/Example.js +1 -1
  181. package/package.json +42 -35
  182. package/dist/components/Accordion/tests/Accordion.stories.d.ts +0 -44
  183. package/dist/components/Accordion/tests/Accordion.stories.js +0 -204
  184. package/dist/components/ActionBar/tests/ActionBar.stories.d.ts +0 -40
  185. package/dist/components/ActionBar/tests/ActionBar.stories.js +0 -223
  186. package/dist/components/Actionable/tests/Actionable.stories.d.ts +0 -41
  187. package/dist/components/Actionable/tests/Actionable.stories.js +0 -220
  188. package/dist/components/Alert/tests/Alert.stories.d.ts +0 -24
  189. package/dist/components/Alert/tests/Alert.stories.js +0 -78
  190. package/dist/components/Autocomplete/tests/Autocomplete.stories.d.ts +0 -32
  191. package/dist/components/Autocomplete/tests/Autocomplete.stories.js +0 -246
  192. package/dist/components/Avatar/tests/Avatar.stories.d.ts +0 -31
  193. package/dist/components/Avatar/tests/Avatar.stories.js +0 -176
  194. package/dist/components/Badge/tests/Badge.stories.d.ts +0 -55
  195. package/dist/components/Badge/tests/Badge.stories.js +0 -328
  196. package/dist/components/Breadcrumbs/tests/Breadcrumbs.stories.d.ts +0 -40
  197. package/dist/components/Breadcrumbs/tests/Breadcrumbs.stories.js +0 -187
  198. package/dist/components/Button/tests/Button.stories.d.ts +0 -79
  199. package/dist/components/Button/tests/Button.stories.js +0 -789
  200. package/dist/components/Calendar/tests/Calendar.stories.d.ts +0 -29
  201. package/dist/components/Calendar/tests/Calendar.stories.js +0 -255
  202. package/dist/components/Card/tests/Card.stories.d.ts +0 -52
  203. package/dist/components/Card/tests/Card.stories.js +0 -125
  204. package/dist/components/Carousel/tests/Carousel.stories.d.ts +0 -34
  205. package/dist/components/Carousel/tests/Carousel.stories.js +0 -224
  206. package/dist/components/Checkbox/tests/Checkbox.stories.d.ts +0 -30
  207. package/dist/components/Checkbox/tests/Checkbox.stories.js +0 -171
  208. package/dist/components/CheckboxGroup/tests/CheckboxGroup.stories.d.ts +0 -19
  209. package/dist/components/CheckboxGroup/tests/CheckboxGroup.stories.js +0 -83
  210. package/dist/components/Container/tests/Container.stories.d.ts +0 -24
  211. package/dist/components/Container/tests/Container.stories.js +0 -75
  212. package/dist/components/ContextMenu/tests/ContextMenu.stories.d.ts +0 -26
  213. package/dist/components/ContextMenu/tests/ContextMenu.stories.js +0 -70
  214. package/dist/components/Dismissible/tests/Dismissible.stories.d.ts +0 -25
  215. package/dist/components/Dismissible/tests/Dismissible.stories.js +0 -97
  216. package/dist/components/Divider/tests/Divider.stories.d.ts +0 -20
  217. package/dist/components/Divider/tests/Divider.stories.js +0 -120
  218. package/dist/components/DropdownMenu/tests/DropdownMenu.stories.d.ts +0 -53
  219. package/dist/components/DropdownMenu/tests/DropdownMenu.stories.js +0 -278
  220. package/dist/components/FileUpload/tests/FileUpload.stories.d.ts +0 -31
  221. package/dist/components/FileUpload/tests/FileUpload.stories.js +0 -140
  222. package/dist/components/Flyout/tests/Flyout.stories.d.ts +0 -103
  223. package/dist/components/Flyout/tests/Flyout.stories.js +0 -738
  224. package/dist/components/FormControl/tests/FormControl.stories.d.ts +0 -31
  225. package/dist/components/FormControl/tests/FormControl.stories.js +0 -143
  226. package/dist/components/Grid/tests/Grid.stories.d.ts +0 -38
  227. package/dist/components/Grid/tests/Grid.stories.js +0 -245
  228. package/dist/components/Hidden/tests/Hidden.stories.d.ts +0 -16
  229. package/dist/components/Hidden/tests/Hidden.stories.js +0 -48
  230. package/dist/components/HiddenVisually/tests/HiddenVisually.stories.d.ts +0 -16
  231. package/dist/components/HiddenVisually/tests/HiddenVisually.stories.js +0 -28
  232. package/dist/components/Hotkey/tests/Hotkey.stories.d.ts +0 -13
  233. package/dist/components/Hotkey/tests/Hotkey.stories.js +0 -53
  234. package/dist/components/Icon/tests/Icon.stories.d.ts +0 -25
  235. package/dist/components/Icon/tests/Icon.stories.js +0 -113
  236. package/dist/components/Image/tests/Image.stories.d.ts +0 -41
  237. package/dist/components/Image/tests/Image.stories.js +0 -196
  238. package/dist/components/Link/tests/Link.stories.d.ts +0 -42
  239. package/dist/components/Link/tests/Link.stories.js +0 -155
  240. package/dist/components/Loader/tests/Loader.stories.d.ts +0 -21
  241. package/dist/components/Loader/tests/Loader.stories.js +0 -68
  242. package/dist/components/MenuItem/tests/MenuItem.stories.d.ts +0 -59
  243. package/dist/components/MenuItem/tests/MenuItem.stories.js +0 -236
  244. package/dist/components/Modal/tests/Modal.stories.d.ts +0 -64
  245. package/dist/components/Modal/tests/Modal.stories.js +0 -410
  246. package/dist/components/NumberField/tests/NumberField.stories.d.ts +0 -28
  247. package/dist/components/NumberField/tests/NumberField.stories.js +0 -258
  248. package/dist/components/Overlay/tests/Overlay.stories.d.ts +0 -28
  249. package/dist/components/Overlay/tests/Overlay.stories.js +0 -202
  250. package/dist/components/Pagination/tests/Pagination.stories.d.ts +0 -24
  251. package/dist/components/Pagination/tests/Pagination.stories.js +0 -105
  252. package/dist/components/PinField/tests/PinField.stories.d.ts +0 -34
  253. package/dist/components/PinField/tests/PinField.stories.js +0 -209
  254. package/dist/components/Popover/tests/Popover.stories.d.ts +0 -69
  255. package/dist/components/Popover/tests/Popover.stories.js +0 -340
  256. package/dist/components/Progress/tests/Progress.stories.d.ts +0 -30
  257. package/dist/components/Progress/tests/Progress.stories.js +0 -102
  258. package/dist/components/ProgressIndicator/tests/ProgressIndicator.stories.d.ts +0 -19
  259. package/dist/components/ProgressIndicator/tests/ProgressIndicator.stories.js +0 -92
  260. package/dist/components/Radio/tests/Radio.stories.d.ts +0 -35
  261. package/dist/components/Radio/tests/Radio.stories.js +0 -162
  262. package/dist/components/RadioGroup/tests/RadioGroup.stories.d.ts +0 -19
  263. package/dist/components/RadioGroup/tests/RadioGroup.stories.js +0 -77
  264. package/dist/components/Reshaped/tests/Reshaped.stories.d.ts +0 -34
  265. package/dist/components/Reshaped/tests/Reshaped.stories.js +0 -108
  266. package/dist/components/Resizable/tests/Resizable.stories.d.ts +0 -38
  267. package/dist/components/Resizable/tests/Resizable.stories.js +0 -185
  268. package/dist/components/Scrim/tests/Scrim.stories.d.ts +0 -20
  269. package/dist/components/Scrim/tests/Scrim.stories.js +0 -67
  270. package/dist/components/ScrollArea/tests/ScrollArea.stories.d.ts +0 -37
  271. package/dist/components/ScrollArea/tests/ScrollArea.stories.js +0 -244
  272. package/dist/components/Select/tests/Select.stories.d.ts +0 -53
  273. package/dist/components/Select/tests/Select.stories.js +0 -616
  274. package/dist/components/Skeleton/tests/Skeleton.stories.d.ts +0 -20
  275. package/dist/components/Skeleton/tests/Skeleton.stories.js +0 -63
  276. package/dist/components/Slider/tests/Slider.stories.d.ts +0 -47
  277. package/dist/components/Slider/tests/Slider.stories.js +0 -279
  278. package/dist/components/Stepper/tests/Stepper.stories.d.ts +0 -31
  279. package/dist/components/Stepper/tests/Stepper.stories.js +0 -135
  280. package/dist/components/Switch/tests/Switch.stories.d.ts +0 -22
  281. package/dist/components/Switch/tests/Switch.stories.js +0 -137
  282. package/dist/components/Switch/tests/Switch.test.stories.d.ts +0 -13
  283. package/dist/components/Switch/tests/Switch.test.stories.js +0 -11
  284. package/dist/components/Table/tests/Table.stories.d.ts +0 -42
  285. package/dist/components/Table/tests/Table.stories.js +0 -348
  286. package/dist/components/Tabs/tests/Tabs.stories.d.ts +0 -62
  287. package/dist/components/Tabs/tests/Tabs.stories.js +0 -539
  288. package/dist/components/Text/tests/Text.stories.d.ts +0 -48
  289. package/dist/components/Text/tests/Text.stories.js +0 -201
  290. package/dist/components/TextArea/tests/TextArea.stories.d.ts +0 -53
  291. package/dist/components/TextArea/tests/TextArea.stories.js +0 -204
  292. package/dist/components/TextField/tests/TextField.stories.d.ts +0 -54
  293. package/dist/components/TextField/tests/TextField.stories.js +0 -252
  294. package/dist/components/Theme/tests/Theme.stories.d.ts +0 -25
  295. package/dist/components/Theme/tests/Theme.stories.js +0 -171
  296. package/dist/components/Timeline/tests/Timeline.stories.d.ts +0 -22
  297. package/dist/components/Timeline/tests/Timeline.stories.js +0 -86
  298. package/dist/components/Toast/tests/Toast.stories.d.ts +0 -41
  299. package/dist/components/Toast/tests/Toast.stories.js +0 -432
  300. package/dist/components/ToggleButton/tests/ToggleButton.stories.d.ts +0 -27
  301. package/dist/components/ToggleButton/tests/ToggleButton.stories.js +0 -97
  302. package/dist/components/ToggleButtonGroup/tests/ToggleButtonGroup.stories.d.ts +0 -27
  303. package/dist/components/ToggleButtonGroup/tests/ToggleButtonGroup.stories.js +0 -169
  304. package/dist/components/Tooltip/tests/Tooltip.stories.d.ts +0 -28
  305. package/dist/components/Tooltip/tests/Tooltip.stories.js +0 -182
  306. package/dist/components/View/tests/View.stories.d.ts +0 -141
  307. package/dist/components/View/tests/View.stories.js +0 -1329
  308. package/dist/components/_private/HiddenInput/HiddenInput.js +0 -10
  309. package/dist/components/_private/HiddenInput/HiddenInput.types.d.ts +0 -15
  310. package/dist/components/_private/Portal/tests/Portal.stories.d.ts +0 -6
  311. package/dist/components/_private/Portal/tests/Portal.stories.js +0 -17
  312. package/dist/hooks/tests/useDrag.stories.d.ts +0 -31
  313. package/dist/hooks/tests/useDrag.stories.js +0 -147
  314. package/dist/hooks/tests/useElementId.stories.d.ts +0 -11
  315. package/dist/hooks/tests/useElementId.stories.js +0 -23
  316. package/dist/hooks/tests/useHandlerRef.stories.d.ts +0 -14
  317. package/dist/hooks/tests/useHandlerRef.stories.js +0 -44
  318. package/dist/hooks/tests/useHotkeys.stories.d.ts +0 -43
  319. package/dist/hooks/tests/useHotkeys.stories.js +0 -158
  320. package/dist/hooks/tests/useKeyboardArrowNavigation.stories.d.ts +0 -15
  321. package/dist/hooks/tests/useKeyboardArrowNavigation.stories.js +0 -128
  322. package/dist/hooks/tests/useKeyboardMode.stories.d.ts +0 -11
  323. package/dist/hooks/tests/useKeyboardMode.stories.js +0 -42
  324. package/dist/hooks/tests/useOnClickOutside.stories.d.ts +0 -23
  325. package/dist/hooks/tests/useOnClickOutside.stories.js +0 -111
  326. package/dist/hooks/tests/useRTL.stories.d.ts +0 -11
  327. package/dist/hooks/tests/useRTL.stories.js +0 -23
  328. package/dist/hooks/tests/useResponsiveClientValue.stories.d.ts +0 -18
  329. package/dist/hooks/tests/useResponsiveClientValue.stories.js +0 -30
  330. package/dist/hooks/tests/useScrollLock.stories.d.ts +0 -14
  331. package/dist/hooks/tests/useScrollLock.stories.js +0 -97
  332. package/dist/hooks/tests/useToggle.stories.d.ts +0 -13
  333. package/dist/hooks/tests/useToggle.stories.js +0 -59
  334. package/dist/tests/ShadowDOM.stories.d.ts +0 -6
  335. package/dist/tests/ShadowDOM.stories.js +0 -110
  336. package/dist/tests/themes.stories.d.ts +0 -16
  337. package/dist/tests/themes.stories.js +0 -327
  338. package/dist/utilities/a11y/tests/TrapFocus.stories.d.ts +0 -14
  339. package/dist/utilities/a11y/tests/TrapFocus.stories.js +0 -615
  340. /package/dist/components/{_private/HiddenInput → HiddenInput}/HiddenInput.d.ts +0 -0
  341. /package/dist/components/{_private/HiddenInput → HiddenInput}/HiddenInput.module.css +0 -0
  342. /package/dist/components/{_private/HiddenInput → HiddenInput}/HiddenInput.types.js +0 -0
  343. /package/dist/components/{_private/HiddenInput → HiddenInput}/index.d.ts +0 -0
  344. /package/dist/components/{_private/HiddenInput → HiddenInput}/index.js +0 -0
@@ -23,17 +23,14 @@ export type Options = Pick<BaseProps, "width" | "fallbackAdjustLayout" | "fallba
23
23
  lastUsedPosition: Position;
24
24
  onPositionChoose: (position: Position) => void;
25
25
  };
26
- export type Styles = React.CSSProperties;
27
26
  export type State = {
28
- styles: Styles;
29
27
  position?: Position;
30
28
  status: "idle" | "rendered" | "positioned" | "visible" | "hidden";
31
29
  };
32
30
  export type FlyoutData = {
33
- styles: Styles;
34
31
  position: Position;
35
32
  };
36
- export type UseFlyoutData = Pick<State, "styles" | "position" | "status"> & {
33
+ export type UseFlyoutData = Pick<State, "position" | "status"> & {
37
34
  updatePosition: (args?: {
38
35
  sync?: boolean;
39
36
  fallback?: boolean;
@@ -72,7 +69,7 @@ export type TriggerAttributes = {
72
69
  onFocus?: () => void;
73
70
  onMouseDown?: () => void;
74
71
  onMouseEnter?: () => void;
75
- onMouseLeave?: () => void;
72
+ onMouseLeave?: (e: React.MouseEvent) => void;
76
73
  onTouchStart?: () => void;
77
74
  onClick?: () => void;
78
75
  "aria-describedby"?: string;
@@ -132,6 +129,8 @@ type BaseProps = {
132
129
  contentGap?: number;
133
130
  /** Shift the content on the secondary axis, relative to its original position */
134
131
  contentShift?: number;
132
+ /** Maximum height for the content */
133
+ contentMaxHeight?: string;
135
134
  /** Additional classname for the content element */
136
135
  contentClassName?: string;
137
136
  /** Additional attributes for the content element */
@@ -178,7 +177,7 @@ export type ContextProps = {
178
177
  }) => void;
179
178
  handleOpen: () => void;
180
179
  handleMouseEnter: () => void;
181
- handleMouseLeave: () => void;
180
+ handleMouseLeave: (e: React.MouseEvent) => void;
182
181
  handleMouseDown: () => void;
183
182
  handleTransitionEnd: (e: React.TransitionEvent) => void;
184
183
  handleTransitionStart: (e: TransitionEvent) => void;
@@ -189,7 +188,7 @@ export type ContextProps = {
189
188
  handleContentMouseDown: () => void;
190
189
  handleContentMouseUp: () => void;
191
190
  isSubmenu: boolean;
192
- } & Pick<Props, "triggerType" | "contentClassName" | "contentAttributes" | "contentGap" | "trapFocusMode" | "containerRef" | "disableContentHover" | "autoFocus">;
191
+ } & Pick<Props, "triggerType" | "contentClassName" | "contentAttributes" | "contentGap" | "contentMaxHeight" | "trapFocusMode" | "containerRef" | "disableContentHover" | "autoFocus">;
193
192
  export type TriggerContextProps = {
194
193
  elRef?: ContextProps["triggerElRef"];
195
194
  };
@@ -1,18 +1,18 @@
1
1
  "use client";
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import React from "react";
4
- import { classNames } from "../../utilities/props.js";
5
- import { rafThrottle } from "../../utilities/helpers.js";
6
- import useIsomorphicLayoutEffect from "../../hooks/useIsomorphicLayoutEffect.js";
7
4
  import Portal from "../_private/Portal/index.js";
5
+ import useIsomorphicLayoutEffect from "../../hooks/useIsomorphicLayoutEffect.js";
8
6
  import { findClosestPositionContainer, findClosestScrollableContainer } from "../../utilities/dom/index.js";
9
- import cooldown from "./utilities/cooldown.js";
7
+ import { rafThrottle } from "../../utilities/helpers.js";
8
+ import { classNames } from "../../utilities/props.js";
10
9
  import { useFlyoutContext, ContentProvider } from "./Flyout.context.js";
11
10
  import s from "./Flyout.module.css";
11
+ import cooldown from "./utilities/cooldown.js";
12
12
  const FlyoutContent = (props) => {
13
13
  const { children, className, attributes } = props;
14
- const { flyout, id, flyoutElRef, triggerElRef, handleClose, handleTransitionEnd, handleTransitionStart, triggerType, handleMouseEnter, handleMouseLeave, handleContentMouseDown, handleContentMouseUp, contentClassName, contentAttributes, contentGap, trapFocusMode, disableContentHover, autoFocus, width, containerRef: passedContainerRef, isSubmenu, } = useFlyoutContext();
15
- const { styles, status, position } = flyout;
14
+ const { flyout, id, flyoutElRef, triggerElRef, handleClose, handleTransitionEnd, handleTransitionStart, triggerType, handleMouseEnter, handleMouseLeave, handleContentMouseDown, handleContentMouseUp, contentClassName, contentAttributes, contentGap, contentMaxHeight, trapFocusMode, disableContentHover, autoFocus, width, containerRef: passedContainerRef, isSubmenu, } = useFlyoutContext();
15
+ const { status, position } = flyout;
16
16
  const [mounted, setMounted] = React.useState(false);
17
17
  const closestFixedContainer = React.useMemo(() => {
18
18
  if (!mounted)
@@ -95,8 +95,8 @@ const FlyoutContent = (props) => {
95
95
  role = "menubar";
96
96
  }
97
97
  const content = (_jsx(ContentProvider, { value: { elRef: flyoutElRef }, children: _jsx("div", { className: rootClassNames, style: {
98
- ...styles,
99
98
  "--rs-flyout-gap": contentGap,
99
+ "--rs-flyout-max-h": contentMaxHeight,
100
100
  }, ref: flyoutElRef, onTransitionEnd: handleTransitionEnd, onMouseEnter: triggerType === "hover" ? handleMouseEnter : undefined, onMouseLeave: triggerType === "hover" ? handleMouseLeave : undefined, onMouseDown: handleContentMouseDown, onTouchStart: handleContentMouseDown, onMouseUp: handleContentMouseUp, onTouchEnd: handleContentMouseUp, children: _jsx("div", { role: role, ...attributes, id: id, tabIndex: !autoFocus ? -1 : undefined, "aria-modal": role === "dialog" ? true : undefined, style: { ...attributes?.style, ...contentAttributes?.style }, className: innerClassNames, children: children }) }) }));
101
101
  return _jsx(Portal, { targetRef: containerRef, children: content });
102
102
  };
@@ -1,21 +1,21 @@
1
1
  "use client";
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import React from "react";
4
- import { TrapFocus, checkKeyboardMode } from "../../utilities/a11y/index.js";
5
4
  import useIsDismissible from "../../hooks/_private/useIsDismissible.js";
6
5
  import useElementId from "../../hooks/useElementId.js";
7
- import useIsomorphicLayoutEffect from "../../hooks/useIsomorphicLayoutEffect.js";
6
+ import useHandlerRef from "../../hooks/useHandlerRef.js";
8
7
  import useHotkeys from "../../hooks/useHotkeys.js";
8
+ import useIsomorphicLayoutEffect from "../../hooks/useIsomorphicLayoutEffect.js";
9
9
  import useOnClickOutside from "../../hooks/useOnClickOutside.js";
10
10
  import useRTL from "../../hooks/useRTL.js";
11
+ import { TrapFocus, checkKeyboardMode } from "../../utilities/a11y/index.js";
11
12
  import { checkTransitions, onNextFrame } from "../../utilities/animation.js";
12
- import useFlyout from "./useFlyout.js";
13
13
  import * as timeouts from "./Flyout.constants.js";
14
- import cooldown from "./utilities/cooldown.js";
15
14
  import { Provider, useFlyoutTriggerContext, useFlyoutContext, useFlyoutContentContext, } from "./Flyout.context.js";
16
- import useHandlerRef from "../../hooks/useHandlerRef.js";
15
+ import useFlyout from "./useFlyout.js";
16
+ import cooldown from "./utilities/cooldown.js";
17
17
  const FlyoutControlled = (props) => {
18
- const { triggerType = "click", groupTimeouts, onOpen, onClose, children, disabled, forcePosition, fallbackAdjustLayout, fallbackMinWidth, fallbackMinHeight, trapFocusMode = "dialog", width, disableHideAnimation, disableContentHover, disableCloseOnOutsideClick, autoFocus = true, originCoordinates, contentGap = 2, contentShift, contentClassName, contentAttributes, position: passedPosition, active: passedActive, id: passedId, instanceRef, containerRef, initialFocusRef, positionRef, } = props;
18
+ const { triggerType = "click", groupTimeouts, onOpen, onClose, children, disabled, forcePosition, fallbackAdjustLayout, fallbackMinWidth, fallbackMinHeight, trapFocusMode = "dialog", width, disableHideAnimation, disableContentHover, disableCloseOnOutsideClick, autoFocus = true, originCoordinates, contentGap = 2, contentShift, contentMaxHeight, contentClassName, contentAttributes, position: passedPosition, active: passedActive, id: passedId, instanceRef, containerRef, initialFocusRef, positionRef, } = props;
19
19
  const fallbackPositions = props.fallbackPositions === false || forcePosition ? [] : props.fallbackPositions;
20
20
  const onOpenRef = useHandlerRef(onOpen);
21
21
  const onCloseRef = useHandlerRef(onClose);
@@ -84,7 +84,7 @@ const FlyoutControlled = (props) => {
84
84
  const clearTimer = React.useCallback(() => {
85
85
  if (timerRef.current)
86
86
  clearTimeout(timerRef.current);
87
- }, [timerRef]);
87
+ }, []);
88
88
  /**
89
89
  * Component open/close handlers
90
90
  * Called from the internal actions
@@ -143,16 +143,18 @@ const FlyoutControlled = (props) => {
143
143
  cooldown.warm();
144
144
  timerRef.current = setTimeout(() => {
145
145
  handleOpen();
146
- }, groupTimeouts && cooldown.status === "warming"
147
- ? timeouts.mouseEnter
148
- : timeouts.mouseEnterShort);
146
+ }, groupTimeouts && cooldown.status === "warming" ? timeouts.mouseEnter : 0);
149
147
  }
150
- }, [clearTimer, timerRef, handleOpen, groupTimeouts]);
151
- const handleMouseLeave = React.useCallback(() => {
148
+ }, [clearTimer, handleOpen, groupTimeouts]);
149
+ const handleMouseLeave = React.useCallback((e) => {
150
+ if (e.relatedTarget === flyoutElRef.current)
151
+ return;
152
+ if (e.relatedTarget === triggerElRef.current)
153
+ return;
152
154
  cooldown.cool();
153
155
  clearTimer();
154
- timerRef.current = setTimeout(() => handleClose({}), timeouts.mouseLeave);
155
- }, [clearTimer, timerRef, handleClose]);
156
+ handleClose({});
157
+ }, [clearTimer, handleClose, triggerElRef, flyoutElRef]);
156
158
  const handleTriggerClick = React.useCallback(() => {
157
159
  if (!isRendered) {
158
160
  handleOpen();
@@ -333,6 +335,7 @@ const FlyoutControlled = (props) => {
333
335
  contentClassName,
334
336
  contentAttributes,
335
337
  contentGap,
338
+ contentMaxHeight,
336
339
  containerRef,
337
340
  disableContentHover,
338
341
  autoFocus,
@@ -1,6 +1,6 @@
1
1
  import Flyout from "./Flyout";
2
- import FlyoutTrigger from "./FlyoutTrigger";
3
2
  import FlyoutContent from "./FlyoutContent";
3
+ import FlyoutTrigger from "./FlyoutTrigger";
4
4
  declare const FlyoutRoot: typeof Flyout & {
5
5
  Trigger: typeof FlyoutTrigger;
6
6
  Content: typeof FlyoutContent;
@@ -1,6 +1,6 @@
1
1
  import Flyout from "./Flyout.js";
2
- import FlyoutTrigger from "./FlyoutTrigger.js";
3
2
  import FlyoutContent from "./FlyoutContent.js";
3
+ import FlyoutTrigger from "./FlyoutTrigger.js";
4
4
  const FlyoutRoot = Flyout;
5
5
  FlyoutRoot.Trigger = FlyoutTrigger;
6
6
  FlyoutRoot.Content = FlyoutContent;
@@ -1,13 +1,13 @@
1
1
  import React from "react";
2
- import type * as G from "../../types/global";
3
2
  import type * as T from "./Flyout.types";
3
+ import type * as G from "../../types/global";
4
4
  type UseFlyout = (args: Pick<T.Props, "width" | "position" | "defaultActive" | "fallbackAdjustLayout" | "fallbackMinWidth" | "fallbackMinHeight" | "contentGap" | "contentShift"> & {
5
5
  fallbackPositions?: T.Position[];
6
6
  container?: HTMLElement | null;
7
7
  triggerElRef: React.RefObject<HTMLElement | null>;
8
8
  flyoutElRef: React.RefObject<HTMLElement | null>;
9
9
  triggerBounds?: DOMRect | G.Coordinates | null;
10
- }) => Pick<T.State, "styles" | "position" | "status"> & {
10
+ }) => Pick<T.State, "position" | "status"> & {
11
11
  updatePosition: (options?: {
12
12
  sync?: boolean;
13
13
  }) => void;
@@ -1,37 +1,26 @@
1
1
  import React from "react";
2
2
  import useRTL from "../../hooks/useRTL.js";
3
3
  import flyout from "./utilities/flyout.js";
4
- import { defaultStyles, resetStyles } from "./Flyout.constants.js";
5
4
  const flyoutReducer = (state, action) => {
6
5
  switch (action.type) {
7
6
  case "render":
8
- if (state.status !== "idle")
9
- return state;
10
7
  // Disable events before it's positioned to avoid mouseleave getting triggered
11
- return { ...state, status: "rendered", styles: { pointerEvents: "none", ...resetStyles } };
8
+ return { ...state, status: "rendered" };
12
9
  case "position":
13
- if (!action.payload.sync && state.status !== "rendered")
14
- return state;
15
- if (action.payload.sync && state.status !== "visible")
16
- return state;
17
10
  return {
18
11
  ...state,
19
- status: action.payload.sync ? "visible" : "positioned",
12
+ status: action.payload.sync ? state.status : "positioned",
20
13
  position: action.payload.position,
21
- styles: { ...defaultStyles, ...action.payload.styles },
22
14
  };
23
15
  case "show":
16
+ // Checking because we're positioning inside nextAnimationFrame
24
17
  if (state.status !== "positioned")
25
18
  return state;
26
19
  return { ...state, status: "visible" };
27
20
  case "hide":
28
- if (state.status !== "visible")
29
- return state;
30
21
  return { ...state, status: "hidden" };
31
22
  case "remove":
32
- if (state.status !== "hidden" && state.status !== "visible")
33
- return state;
34
- return { ...state, status: "idle", styles: resetStyles };
23
+ return { ...state, status: "idle" };
35
24
  default:
36
25
  throw new Error("[Reshaped] Invalid flyout reducer type");
37
26
  }
@@ -47,7 +36,6 @@ const useFlyout = (args) => {
47
36
  const [isRTL] = useRTL();
48
37
  const [state, dispatch] = React.useReducer(flyoutReducer, {
49
38
  position: defaultPosition,
50
- styles: defaultStyles,
51
39
  status: "idle",
52
40
  });
53
41
  const render = React.useCallback(() => {
@@ -114,13 +102,12 @@ const useFlyout = (args) => {
114
102
  }, [state.status, updatePosition]);
115
103
  return React.useMemo(() => ({
116
104
  position: state.position,
117
- styles: state.styles,
118
105
  status: state.status,
119
106
  updatePosition,
120
107
  render,
121
108
  hide,
122
109
  remove,
123
110
  show,
124
- }), [render, updatePosition, hide, remove, show, state.position, state.styles, state.status]);
111
+ }), [render, updatePosition, hide, remove, show, state.position, state.status]);
125
112
  };
126
113
  export default useFlyout;
@@ -13,13 +13,13 @@ declare const calculatePosition: (args: {
13
13
  } & Pick<T.Options, "position" | "rtl" | "width" | "contentGap" | "contentShift" | "fallbackAdjustLayout" | "fallbackMinWidth" | "fallbackMinHeight">) => {
14
14
  position: T.Position;
15
15
  styles: {
16
- left: number | undefined;
17
- right: number | undefined;
18
- top: number | undefined;
19
- bottom: number | undefined;
16
+ left: string | null;
17
+ right: string | null;
18
+ top: string | null;
19
+ bottom: string | null;
20
20
  transform: string;
21
- height: number | undefined;
22
- width: string | number | undefined;
21
+ height: string | null;
22
+ width: string | null;
23
23
  };
24
24
  boundaries: {
25
25
  left: number;
@@ -159,13 +159,13 @@ const calculatePosition = (args) => {
159
159
  return {
160
160
  position,
161
161
  styles: {
162
- left: right === null ? 0 : undefined,
163
- right: right === null ? undefined : 0,
164
- top: bottom === null ? 0 : undefined,
165
- bottom: bottom === null ? undefined : 0,
162
+ left: right === null ? "0px" : null,
163
+ right: right === null ? null : "0px",
164
+ top: bottom === null ? "0px" : null,
165
+ bottom: bottom === null ? null : "0px",
166
166
  transform: `translate(${translateX}px, ${translateY}px)`,
167
- height,
168
- width: width ?? passedWidth,
167
+ height: height !== undefined ? `${height}px` : null,
168
+ width: width !== undefined ? `${width}px` : (passedWidth ?? null),
169
169
  },
170
170
  boundaries: {
171
171
  left,
@@ -1,4 +1,3 @@
1
- import * as timeouts from "../Flyout.constants.js";
2
1
  class Cooldown {
3
2
  status = "cold";
4
3
  timer;
@@ -12,7 +11,7 @@ class Cooldown {
12
11
  this.timer = setTimeout(() => {
13
12
  this.status = "warm";
14
13
  this.timer = undefined;
15
- }, timeouts.mouseEnterShort);
14
+ }, 100);
16
15
  };
17
16
  cool = () => {
18
17
  clearTimeout(this.timer);
@@ -1,5 +1,5 @@
1
- import type * as G from "../../../types/global";
2
1
  import type * as T from "../Flyout.types";
2
+ import type * as G from "../../../types/global";
3
3
  /**
4
4
  * Set position of the target element to fit on the screen
5
5
  */
@@ -1,8 +1,8 @@
1
1
  import { getRectFromCoordinates, getShadowRoot, findClosestPositionContainer } from "../../../utilities/dom/index.js";
2
+ import { resetStyles } from "../Flyout.constants.js";
2
3
  import calculatePosition from "./calculatePosition.js";
3
4
  import getPositionFallbacks from "./getPositionFallbacks.js";
4
5
  import isFullyVisible from "./isFullyVisible.js";
5
- import { resetStyles } from "../Flyout.constants.js";
6
6
  /**
7
7
  * Set position of the target element to fit on the screen
8
8
  */
@@ -79,6 +79,9 @@ const flyout = (args) => {
79
79
  calculated = applyPosition(lastUsedPosition);
80
80
  onPositionChoose(calculated.position);
81
81
  targetClone.parentNode?.removeChild(targetClone);
82
- return calculated;
82
+ Object.entries(calculated.styles).forEach(([key, value]) => {
83
+ flyoutEl.style.setProperty(key, value);
84
+ });
85
+ return { position: calculated.position };
83
86
  };
84
87
  export default flyout;
@@ -2,8 +2,8 @@
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import Text from "../Text/index.js";
4
4
  import { useFormControlPrivate } from "./FormControl.context.js";
5
- import { getCaptionId } from "./FormControl.utilities.js";
6
5
  import s from "./FormControl.module.css";
6
+ import { getCaptionId } from "./FormControl.utilities.js";
7
7
  const FormControlCaption = (props) => {
8
8
  const { children, variant, disabled } = props;
9
9
  const { attributes, size, helperRef, errorRef } = useFormControlPrivate();
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { useFormControlPrivate } from "./FormControl.context.js";
4
3
  import Text from "../Text/index.js";
4
+ import { useFormControlPrivate } from "./FormControl.context.js";
5
5
  import s from "./FormControl.module.css";
6
6
  const FormControlLabel = (props) => {
7
7
  const { children } = props;
@@ -1,7 +1,7 @@
1
1
  import FormControl from "./FormControl";
2
- import FormControlLabel from "./FormControlLabel";
3
- import FormControlHelper from "./FormControlHelper";
4
2
  import FormControlError from "./FormControlError";
3
+ import FormControlHelper from "./FormControlHelper";
4
+ import FormControlLabel from "./FormControlLabel";
5
5
  declare const FormControlRoot: typeof FormControl & {
6
6
  Label: typeof FormControlLabel;
7
7
  Helper: typeof FormControlHelper;
@@ -1,7 +1,7 @@
1
1
  import FormControl from "./FormControl.js";
2
- import FormControlLabel from "./FormControlLabel.js";
3
- import FormControlHelper from "./FormControlHelper.js";
4
2
  import FormControlError from "./FormControlError.js";
3
+ import FormControlHelper from "./FormControlHelper.js";
4
+ import FormControlLabel from "./FormControlLabel.js";
5
5
  const FormControlRoot = FormControl;
6
6
  FormControlRoot.Label = FormControlLabel;
7
7
  FormControlRoot.Helper = FormControlHelper;
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { classNames, responsiveVariables, responsivePropDependency } from "../../utilities/props.js";
3
2
  import { resolveMixin } from "../../styles/mixin.js";
3
+ import { classNames, responsiveVariables, responsivePropDependency } from "../../utilities/props.js";
4
4
  import s from "./Grid.module.css";
5
5
  export const GridItem = (props) => {
6
6
  const { area, colStart, colEnd, colSpan, rowStart, rowEnd, rowSpan, children, className,
@@ -1,7 +1,7 @@
1
- import type React from "react";
2
1
  import type { Property } from "csstype";
3
- import type * as G from "../../types/global";
2
+ import type React from "react";
4
3
  import type * as TStyles from "../../styles/types";
4
+ import type * as G from "../../types/global";
5
5
  export type Props<TagName extends keyof React.JSX.IntrinsicElements = "div"> = {
6
6
  /** Gap between grid items */
7
7
  gap?: G.Responsive<number>;
@@ -0,0 +1,34 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useCheckboxGroup } from "../CheckboxGroup/index.js";
3
+ import { useFormControl } from "../FormControl/index.js";
4
+ import { useRadioGroup } from "../RadioGroup/index.js";
5
+ import { classNames } from "../../utilities/props.js";
6
+ import s from "./HiddenInput.module.css";
7
+ const HiddenInput = (props) => {
8
+ const { type, value, className, onBlur, onFocus, onChange, attributes } = props;
9
+ const rootClassNames = classNames(s.root, className);
10
+ const checkboxGroup = useCheckboxGroup();
11
+ const radioGroup = useRadioGroup();
12
+ const formControl = useFormControl();
13
+ const name = checkboxGroup?.name ?? radioGroup?.name ?? props.name;
14
+ const disabled = formControl?.disabled ?? props.disabled ?? checkboxGroup?.disabled ?? radioGroup?.disabled;
15
+ const checked = (value && checkboxGroup?.value?.includes(value)) ||
16
+ (value && radioGroup?.value === value) ||
17
+ props.checked;
18
+ const defaultChecked = checkboxGroup ? undefined : props.defaultChecked;
19
+ const handleChange = (event) => {
20
+ if (!name)
21
+ return;
22
+ const { checked } = event.target;
23
+ const changeArgs = { name, value, checked, event };
24
+ if (onChange)
25
+ onChange(changeArgs);
26
+ if (checkboxGroup?.onChange)
27
+ checkboxGroup.onChange(changeArgs);
28
+ if (radioGroup?.onChange)
29
+ radioGroup.onChange(changeArgs);
30
+ };
31
+ return (_jsx("input", { ...attributes, className: rootClassNames, type: type, name: name, value: value, checked: checked, defaultChecked: defaultChecked, disabled: disabled, onChange: handleChange, onFocus: onFocus || attributes?.onFocus, onBlur: onBlur || attributes?.onBlur }));
32
+ };
33
+ HiddenInput.displayName = "HiddenInput";
34
+ export default HiddenInput;
@@ -0,0 +1,26 @@
1
+ import React from "react";
2
+ import type * as G from "../../types/global";
3
+ export type Props = {
4
+ /** Name of the input element */
5
+ name?: string;
6
+ /** Value of the input element that is used for form submission */
7
+ value?: string;
8
+ /** Checked state of the input element, enables controlled mode */
9
+ checked?: boolean;
10
+ /** Default checked state of the input element, enables uncontrolled mode */
11
+ defaultChecked?: boolean;
12
+ /** Disable the input element */
13
+ disabled?: boolean;
14
+ /** Callback when the input value changes */
15
+ onChange?: G.ChangeHandler<boolean>;
16
+ /** Callback when the input or label is focused */
17
+ onFocus?: (e: React.FocusEvent) => void;
18
+ /** Callback when the input or label is blurred */
19
+ onBlur?: (e: React.FocusEvent) => void;
20
+ /** Type of the input element */
21
+ type: "checkbox" | "radio";
22
+ /** Additional classname for the root element */
23
+ className?: G.ClassName;
24
+ /** Additional attributes for the input element */
25
+ attributes?: G.Attributes<"input">;
26
+ };
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import React from "react";
3
- import { classNames } from "../../utilities/props.js";
4
3
  import { resolveMixin } from "../../styles/mixin.js";
4
+ import { classNames } from "../../utilities/props.js";
5
5
  import s from "./Icon.module.css";
6
6
  const Icon = (props) => {
7
7
  const { svg: Component, className, color, size = "1em", autoWidth, attributes } = props;
@@ -1 +1 @@
1
- .root{align-items:center;aspect-ratio:1;display:flex;justify-content:center}.--auto{aspect-ratio:auto;justify-content:flex-start;width:auto}.root svg{display:block;height:100%;min-width:100%;width:auto}.--color-neutral{color:var(--rs-color-foreground-neutral)}.--color-neutral-faded{color:var(--rs-color-foreground-neutral-faded)}.--color-primary{color:var(--rs-color-foreground-primary)}.--color-positive{color:var(--rs-color-foreground-positive)}.--color-warning{color:var(--rs-color-foreground-warning)}.--color-critical{color:var(--rs-color-foreground-critical)}.--color-disabled{color:var(--rs-color-foreground-disabled)}
1
+ .root{align-items:center;aspect-ratio:1;display:flex;justify-content:center;transition:color var(--rs-duration-fast) var(--rs-easing-standard)}.--auto{aspect-ratio:auto;justify-content:flex-start;width:auto}.root svg{display:block;height:100%;min-width:100%;width:auto}.--color-neutral{color:var(--rs-color-foreground-neutral)}.--color-neutral-faded{color:var(--rs-color-foreground-neutral-faded)}.--color-primary{color:var(--rs-color-foreground-primary)}.--color-positive{color:var(--rs-color-foreground-positive)}.--color-warning{color:var(--rs-color-foreground-warning)}.--color-critical{color:var(--rs-color-foreground-critical)}.--color-disabled{color:var(--rs-color-foreground-disabled)}
@@ -1,16 +1,18 @@
1
1
  "use client";
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import React from "react";
4
- import { classNames } from "../../utilities/props.js";
5
4
  import { resolveMixin } from "../../styles/mixin.js";
5
+ import { classNames } from "../../utilities/props.js";
6
6
  import s from "./Image.module.css";
7
7
  const Image = (props) => {
8
- const { src, alt, width, maxWidth, height, aspectRatio, onLoad, onError, fallback, displayMode = "cover", borderRadius, className, attributes, imageAttributes: passedImageAttributes, renderImage, } = props;
8
+ const { src, alt, width, maxWidth, height, aspectRatio, onLoad, onError, fallback, outline, displayMode = "cover", borderRadius, className, attributes, imageAttributes: passedImageAttributes, renderImage, } = props;
9
9
  const [status, setStatus] = React.useState("loading");
10
10
  const mixinStyles = resolveMixin({ radius: borderRadius, width, height, maxWidth, aspectRatio });
11
- const baseClassNames = classNames(s.root, mixinStyles.classNames, displayMode && s[`--display-mode-${displayMode}`], className);
12
- const imgClassNames = classNames(s.image, baseClassNames);
13
- const fallbackClassNames = classNames(s.fallback, baseClassNames);
11
+ const rootClassNames = classNames(s.root, mixinStyles.classNames, outline && s["--outline"], className);
12
+ const imageClassNames = classNames([
13
+ s.image,
14
+ displayMode && s[`image--display-mode-${displayMode}`],
15
+ ]);
14
16
  const isFallback = (status === "error" || !src) && !!fallback;
15
17
  const style = {
16
18
  ...attributes?.style,
@@ -19,10 +21,12 @@ const Image = (props) => {
19
21
  const handleLoad = (e) => {
20
22
  setStatus("success");
21
23
  onLoad?.(e);
24
+ passedImageAttributes?.onLoad?.(e);
22
25
  };
23
26
  const handleError = (e) => {
24
27
  setStatus("error");
25
28
  onError?.(e);
29
+ passedImageAttributes?.onError?.(e);
26
30
  };
27
31
  React.useEffect(() => {
28
32
  setStatus("loading");
@@ -34,13 +38,13 @@ const Image = (props) => {
34
38
  src: fallback ?? "",
35
39
  alt: alt ?? "",
36
40
  role: alt ? undefined : "presentation",
37
- className: fallbackClassNames,
41
+ className: imageClassNames,
38
42
  style,
39
43
  };
40
44
  // eslint-disable-next-line jsx-a11y/alt-text
41
45
  return renderImage ? renderImage(imageAttributes) : _jsx("img", { ...imageAttributes });
42
46
  }
43
- return (_jsx("div", { ...attributes, className: fallbackClassNames, style: style, children: fallback }));
47
+ return (_jsx("div", { ...attributes, className: classNames([s.fallback, rootClassNames]), style: style, children: fallback }));
44
48
  }
45
49
  const imageAttributes = {
46
50
  ...attributes,
@@ -50,11 +54,12 @@ const Image = (props) => {
50
54
  role: alt ? undefined : "presentation",
51
55
  onLoad: handleLoad,
52
56
  onError: handleError,
53
- className: imgClassNames,
57
+ className: outline ? imageClassNames : classNames([imageClassNames, rootClassNames]),
54
58
  style,
55
59
  };
56
60
  // eslint-disable-next-line jsx-a11y/alt-text
57
- return renderImage ? renderImage(imageAttributes) : _jsx("img", { ...imageAttributes });
61
+ const imageNode = renderImage ? renderImage(imageAttributes) : _jsx("img", { ...imageAttributes });
62
+ return outline ? (_jsx("div", { ...attributes, className: rootClassNames, style: style, children: imageNode })) : (imageNode);
58
63
  };
59
64
  Image.displayName = "Image";
60
65
  export default Image;
@@ -1 +1 @@
1
- .root{display:block;max-width:100%}.fallback{align-items:center;background:var(--rs-color-background-neutral-faded);color:var(--rs-color-foreground-disabled);display:flex;justify-content:center}.--display-mode-cover{object-fit:cover!important}.--display-mode-contain{object-fit:scale-down!important}
1
+ .root{position:relative}.root .image{border-radius:inherit;height:100%;width:100%}.image{display:block;max-width:100%}.fallback{align-items:center;background:var(--rs-color-background-neutral-faded);color:var(--rs-color-foreground-disabled);display:flex;justify-content:center}.--outline:after{border:1px solid var(--rs-color-border-neutral-faded);border-radius:inherit;content:"";inset:0;pointer-events:none;position:absolute}.image--display-mode-cover{object-fit:cover!important}.image--display-mode-contain{object-fit:scale-down!important}
@@ -1,6 +1,6 @@
1
1
  import type React from "react";
2
- import type * as G from "../../types/global";
3
2
  import type * as TStyles from "../../styles/types";
3
+ import type * as G from "../../types/global";
4
4
  export type Props = {
5
5
  /** Image URL */
6
6
  src?: string;
@@ -15,9 +15,11 @@ export type Props = {
15
15
  /** Image aspect ratio, width / height */
16
16
  aspectRatio?: G.Responsive<number>;
17
17
  /** Image border radius, based on the radius tokens */
18
- borderRadius?: Extract<TStyles.Radius, "small" | "medium" | "large">;
18
+ borderRadius?: Extract<TStyles.Radius, "small" | "medium" | "large" | "circular">;
19
19
  /** Image display mode for controlling how it fits into the provided boundaries */
20
20
  displayMode?: "cover" | "contain";
21
+ /** Add a semi-transparent border on top of the image for better background contrast */
22
+ outline?: boolean;
21
23
  /** Image on load event */
22
24
  onLoad?: (e: React.SyntheticEvent) => void;
23
25
  /** Image on error event */
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { forwardRef } from "react";
3
- import { classNames } from "../../utilities/props.js";
4
3
  import Actionable from "../Actionable/index.js";
5
4
  import Icon from "../Icon/index.js";
5
+ import { classNames } from "../../utilities/props.js";
6
6
  import s from "./Link.module.css";
7
7
  const Link = forwardRef((props, ref) => {
8
8
  const { icon, disabled, href, color = "primary", variant = "underline", className, children, attributes, type, onClick, stopPropagation, render, } = props;
@@ -1,9 +1,9 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { forwardRef } from "react";
3
- import { classNames, responsiveClassNames, responsivePropDependency } from "../../utilities/props.js";
4
3
  import Actionable from "../Actionable/index.js";
5
4
  import Icon from "../Icon/index.js";
6
5
  import View from "../View/index.js";
6
+ import { classNames, responsiveClassNames, responsivePropDependency } from "../../utilities/props.js";
7
7
  import s from "./MenuItem.module.css";
8
8
  const MenuItem = forwardRef((props, ref) => {
9
9
  const { icon, startSlot, endSlot, children, color = "primary", selected, highlighted, disabled, onClick, href, size = "medium", roundedCorners, stopPropagation, as, render, className, attributes, } = props;
@@ -1,6 +1,6 @@
1
- import type React from "react";
2
- import type { IconProps } from "../Icon";
3
1
  import type { ActionableProps } from "../Actionable";
2
+ import type { IconProps } from "../Icon";
3
+ import type React from "react";
4
4
  import type * as G from "../../types/global";
5
5
  export type Size = "small" | "medium" | "large";
6
6
  export type Props = Pick<ActionableProps, "attributes" | "className" | "disabled" | "children" | "href" | "onClick" | "as" | "stopPropagation" | "render"> & {