@dxos/react-ui 0.8.4-main.d05673bc65 → 0.8.4-main.e00bdcdb52

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 (288) hide show
  1. package/dist/lib/browser/{chunk-2FKSMWNY.mjs → chunk-BDBC6H6V.mjs} +79 -5
  2. package/dist/lib/browser/chunk-BDBC6H6V.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +921 -736
  4. package/dist/lib/browser/index.mjs.map +4 -4
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/testing/index.mjs +30 -18
  7. package/dist/lib/browser/testing/index.mjs.map +3 -3
  8. package/dist/lib/browser/translations.mjs +18 -0
  9. package/dist/lib/browser/translations.mjs.map +7 -0
  10. package/dist/lib/node-esm/{chunk-ZNBLTSHI.mjs → chunk-3JSJK2ZY.mjs} +79 -5
  11. package/dist/lib/node-esm/chunk-3JSJK2ZY.mjs.map +7 -0
  12. package/dist/lib/node-esm/index.mjs +921 -736
  13. package/dist/lib/node-esm/index.mjs.map +4 -4
  14. package/dist/lib/node-esm/meta.json +1 -1
  15. package/dist/lib/node-esm/testing/index.mjs +30 -18
  16. package/dist/lib/node-esm/testing/index.mjs.map +3 -3
  17. package/dist/lib/node-esm/translations.mjs +20 -0
  18. package/dist/lib/node-esm/translations.mjs.map +7 -0
  19. package/dist/types/src/components/Avatars/Avatar.d.ts +1 -1
  20. package/dist/types/src/components/Avatars/Avatar.d.ts.map +1 -1
  21. package/dist/types/src/components/Avatars/Avatar.stories.d.ts.map +1 -1
  22. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts.map +1 -1
  23. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
  24. package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts.map +1 -1
  25. package/dist/types/src/components/Button/Button.d.ts +2 -2
  26. package/dist/types/src/components/Button/Button.d.ts.map +1 -1
  27. package/dist/types/src/components/Button/Button.stories.d.ts +1 -1
  28. package/dist/types/src/components/Button/Button.stories.d.ts.map +1 -1
  29. package/dist/types/src/components/Button/IconButton.d.ts +1 -0
  30. package/dist/types/src/components/Button/IconButton.d.ts.map +1 -1
  31. package/dist/types/src/components/Button/IconButton.stories.d.ts +3 -0
  32. package/dist/types/src/components/Button/IconButton.stories.d.ts.map +1 -1
  33. package/dist/types/src/components/Button/Toggle.d.ts +2 -2
  34. package/dist/types/src/components/Button/Toggle.d.ts.map +1 -1
  35. package/dist/types/src/components/Button/Toggle.stories.d.ts.map +1 -1
  36. package/dist/types/src/components/Button/ToggleGroup.d.ts +6 -6
  37. package/dist/types/src/components/Button/ToggleGroup.d.ts.map +1 -1
  38. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts +2 -2
  39. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts.map +1 -1
  40. package/dist/types/src/components/Card/Card.d.ts +70 -50
  41. package/dist/types/src/components/Card/Card.d.ts.map +1 -1
  42. package/dist/types/src/components/Card/Card.stories.d.ts +2 -2
  43. package/dist/types/src/components/Card/Card.stories.d.ts.map +1 -1
  44. package/dist/types/src/components/Clipboard/ClipboardProvider.d.ts.map +1 -1
  45. package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -1
  46. package/dist/types/src/components/Clipboard/index.d.ts +10 -1
  47. package/dist/types/src/components/Clipboard/index.d.ts.map +1 -1
  48. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts.map +1 -1
  49. package/dist/types/src/components/Dialog/AlertDialog.d.ts +42 -31
  50. package/dist/types/src/components/Dialog/AlertDialog.d.ts.map +1 -1
  51. package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts.map +1 -1
  52. package/dist/types/src/components/Dialog/Dialog.d.ts +47 -30
  53. package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -1
  54. package/dist/types/src/components/Dialog/Dialog.stories.d.ts +3 -2
  55. package/dist/types/src/components/Dialog/Dialog.stories.d.ts.map +1 -1
  56. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts.map +1 -1
  57. package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts.map +1 -1
  58. package/dist/types/src/components/ErrorFallback/ErrorFallback.stories.d.ts.map +1 -1
  59. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts +14 -3
  60. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts.map +1 -1
  61. package/dist/types/src/components/ErrorFallback/ThrowError.d.ts.map +1 -1
  62. package/dist/types/src/components/Focus/Focus.d.ts +36 -0
  63. package/dist/types/src/components/Focus/Focus.d.ts.map +1 -0
  64. package/dist/types/src/components/Focus/Focus.stories.d.ts +9 -0
  65. package/dist/types/src/components/Focus/Focus.stories.d.ts.map +1 -0
  66. package/dist/types/src/components/Focus/index.d.ts +2 -0
  67. package/dist/types/src/components/Focus/index.d.ts.map +1 -0
  68. package/dist/types/src/components/Icon/Icon.d.ts +3 -0
  69. package/dist/types/src/components/Icon/Icon.d.ts.map +1 -1
  70. package/dist/types/src/components/Icon/Icon.stories.d.ts +11 -3
  71. package/dist/types/src/components/Icon/Icon.stories.d.ts.map +1 -1
  72. package/dist/types/src/components/Image/Image.d.ts +2 -1
  73. package/dist/types/src/components/Image/Image.d.ts.map +1 -1
  74. package/dist/types/src/components/Image/Image.stories.d.ts +3 -2
  75. package/dist/types/src/components/Image/Image.stories.d.ts.map +1 -1
  76. package/dist/types/src/components/Input/Input.d.ts +14 -17
  77. package/dist/types/src/components/Input/Input.d.ts.map +1 -1
  78. package/dist/types/src/components/Input/Input.stories.d.ts +3 -3
  79. package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
  80. package/dist/types/src/components/Link/Link.stories.d.ts.map +1 -1
  81. package/dist/types/src/components/List/List.d.ts +5 -3
  82. package/dist/types/src/components/List/List.d.ts.map +1 -1
  83. package/dist/types/src/components/List/List.stories.d.ts +3 -1
  84. package/dist/types/src/components/List/List.stories.d.ts.map +1 -1
  85. package/dist/types/src/components/List/ListDropIndicator.d.ts.map +1 -1
  86. package/dist/types/src/components/List/Tree.d.ts +2 -2
  87. package/dist/types/src/components/List/Tree.d.ts.map +1 -1
  88. package/dist/types/src/components/List/Tree.stories.d.ts.map +1 -1
  89. package/dist/types/src/components/List/TreeDropIndicator.d.ts.map +1 -1
  90. package/dist/types/src/components/List/Treegrid.d.ts +5 -9
  91. package/dist/types/src/components/List/Treegrid.d.ts.map +1 -1
  92. package/dist/types/src/components/List/Treegrid.stories.d.ts.map +1 -1
  93. package/dist/types/src/components/Main/Main.d.ts +7 -3
  94. package/dist/types/src/components/Main/Main.d.ts.map +1 -1
  95. package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
  96. package/dist/types/src/components/Main/useSwipeToDismiss.d.ts.map +1 -1
  97. package/dist/types/src/components/Menu/ContextMenu.d.ts.map +1 -1
  98. package/dist/types/src/components/Menu/ContextMenu.stories.d.ts.map +1 -1
  99. package/dist/types/src/components/Menu/DropdownMenu.d.ts +58 -49
  100. package/dist/types/src/components/Menu/DropdownMenu.d.ts.map +1 -1
  101. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts +14 -1
  102. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts.map +1 -1
  103. package/dist/types/src/components/Message/Message.d.ts.map +1 -1
  104. package/dist/types/src/components/Message/Message.stories.d.ts +2 -2
  105. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
  106. package/dist/types/src/components/Popover/Popover.d.ts +38 -22
  107. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  108. package/dist/types/src/components/Popover/Popover.stories.d.ts.map +1 -1
  109. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +12 -9
  110. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  111. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +18 -5
  112. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
  113. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +42 -13
  114. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -1
  115. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts +5 -6
  116. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts.map +1 -1
  117. package/dist/types/src/components/Select/Select.d.ts.map +1 -1
  118. package/dist/types/src/components/Select/Select.stories.d.ts +2 -2
  119. package/dist/types/src/components/Select/Select.stories.d.ts.map +1 -1
  120. package/dist/types/src/components/Separator/Separator.d.ts +3 -3
  121. package/dist/types/src/components/Separator/Separator.d.ts.map +1 -1
  122. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts.map +1 -1
  123. package/dist/types/src/components/Splitter/Splitter.d.ts +19 -17
  124. package/dist/types/src/components/Splitter/Splitter.d.ts.map +1 -1
  125. package/dist/types/src/components/Splitter/Splitter.stories.d.ts.map +1 -1
  126. package/dist/types/src/components/Status/Status.d.ts +3 -4
  127. package/dist/types/src/components/Status/Status.d.ts.map +1 -1
  128. package/dist/types/src/components/Status/Status.stories.d.ts.map +1 -1
  129. package/dist/types/src/components/Tag/Tag.stories.d.ts.map +1 -1
  130. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts +1 -1
  131. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  132. package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts +1 -1
  133. package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts.map +1 -1
  134. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +54 -55
  135. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
  136. package/dist/types/src/components/ThemeProvider/index.d.ts +1 -1
  137. package/dist/types/src/components/ThemeProvider/index.d.ts.map +1 -1
  138. package/dist/types/src/components/Toast/Toast.d.ts +16 -16
  139. package/dist/types/src/components/Toast/Toast.d.ts.map +1 -1
  140. package/dist/types/src/components/Toast/Toast.stories.d.ts.map +1 -1
  141. package/dist/types/src/components/Toolbar/Toolbar.d.ts +11 -19
  142. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  143. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
  144. package/dist/types/src/components/Tooltip/Tooltip.d.ts +10 -10
  145. package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
  146. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts +2 -2
  147. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
  148. package/dist/types/src/components/index.d.ts +1 -0
  149. package/dist/types/src/components/index.d.ts.map +1 -1
  150. package/dist/types/src/exemplars/generics.stories.d.ts +6 -5
  151. package/dist/types/src/exemplars/generics.stories.d.ts.map +1 -1
  152. package/dist/types/src/exemplars/slot.stories.d.ts +1 -0
  153. package/dist/types/src/exemplars/slot.stories.d.ts.map +1 -1
  154. package/dist/types/src/exemplars/tabster.stories.d.ts.map +1 -1
  155. package/dist/types/src/exemplars/virtualizer.stories.d.ts.map +1 -1
  156. package/dist/types/src/hooks/index.d.ts +1 -0
  157. package/dist/types/src/hooks/index.d.ts.map +1 -1
  158. package/dist/types/src/hooks/useDensityContext.d.ts +1 -1
  159. package/dist/types/src/hooks/useDensityContext.d.ts.map +1 -1
  160. package/dist/types/src/hooks/useElevationContext.d.ts.map +1 -1
  161. package/dist/types/src/hooks/useIconHref.d.ts.map +1 -1
  162. package/dist/types/src/hooks/useSafeArea.d.ts.map +1 -1
  163. package/dist/types/src/hooks/useSafeCollisionPadding.d.ts.map +1 -1
  164. package/dist/types/src/hooks/useVisualViewport.d.ts.map +1 -1
  165. package/dist/types/src/playground/Controls.stories.d.ts.map +1 -1
  166. package/dist/types/src/playground/Custom.stories.d.ts +1 -1
  167. package/dist/types/src/playground/Custom.stories.d.ts.map +1 -1
  168. package/dist/types/src/playground/Typography.stories.d.ts.map +1 -1
  169. package/dist/types/src/primitives/Column/Column.d.ts +21 -14
  170. package/dist/types/src/primitives/Column/Column.d.ts.map +1 -1
  171. package/dist/types/src/primitives/Column/Column.stories.d.ts +19 -0
  172. package/dist/types/src/primitives/Column/Column.stories.d.ts.map +1 -1
  173. package/dist/types/src/primitives/Container/Container.d.ts +4 -5
  174. package/dist/types/src/primitives/Container/Container.d.ts.map +1 -1
  175. package/dist/types/src/primitives/Container/Container.stories.d.ts.map +1 -1
  176. package/dist/types/src/primitives/Flex/Flex.d.ts +5 -7
  177. package/dist/types/src/primitives/Flex/Flex.d.ts.map +1 -1
  178. package/dist/types/src/primitives/Flex/Flex.stories.d.ts.map +1 -1
  179. package/dist/types/src/primitives/Grid/Grid.d.ts +3 -8
  180. package/dist/types/src/primitives/Grid/Grid.d.ts.map +1 -1
  181. package/dist/types/src/primitives/Grid/Grid.stories.d.ts.map +1 -1
  182. package/dist/types/src/primitives/Panel/Panel.d.ts +24 -15
  183. package/dist/types/src/primitives/Panel/Panel.d.ts.map +1 -1
  184. package/dist/types/src/primitives/Panel/Panel.stories.d.ts.map +1 -1
  185. package/dist/types/src/testing/Loading.d.ts.map +1 -1
  186. package/dist/types/src/testing/decorators/withLayout.d.ts.map +1 -1
  187. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts.map +1 -1
  188. package/dist/types/src/testing/decorators/withTheme.d.ts +1 -1
  189. package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
  190. package/dist/types/src/translations.d.ts +3 -3
  191. package/dist/types/src/translations.d.ts.map +1 -1
  192. package/dist/types/src/util/usePx.d.ts.map +1 -1
  193. package/dist/types/tsconfig.tsbuildinfo +1 -1
  194. package/package.json +28 -25
  195. package/src/components/Avatars/Avatar.stories.tsx +2 -3
  196. package/src/components/Avatars/Avatar.tsx +1 -2
  197. package/src/components/Avatars/AvatarGroup.stories.tsx +0 -1
  198. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +1 -2
  199. package/src/components/Button/Button.stories.tsx +0 -1
  200. package/src/components/Button/Button.tsx +5 -13
  201. package/src/components/Button/IconButton.stories.tsx +6 -4
  202. package/src/components/Button/IconButton.tsx +3 -4
  203. package/src/components/Button/Toggle.stories.tsx +0 -1
  204. package/src/components/Button/Toggle.tsx +4 -4
  205. package/src/components/Button/ToggleGroup.stories.tsx +0 -1
  206. package/src/components/Button/ToggleGroup.tsx +12 -16
  207. package/src/components/Card/Card.stories.tsx +12 -12
  208. package/src/components/Card/Card.tsx +266 -108
  209. package/src/components/Clipboard/CopyButton.tsx +3 -4
  210. package/src/components/Dialog/AlertDialog.stories.tsx +5 -6
  211. package/src/components/Dialog/AlertDialog.tsx +67 -126
  212. package/src/components/Dialog/Dialog.stories.tsx +64 -9
  213. package/src/components/Dialog/Dialog.tsx +84 -88
  214. package/src/components/ErrorFallback/ErrorFallback.stories.tsx +3 -8
  215. package/src/components/ErrorFallback/ErrorStack.tsx +36 -2
  216. package/src/components/Focus/AUDIT.md +43 -0
  217. package/src/components/Focus/Focus.stories.tsx +230 -0
  218. package/src/components/Focus/Focus.tsx +201 -0
  219. package/src/components/Focus/index.ts +5 -0
  220. package/src/components/Icon/Icon.stories.tsx +43 -13
  221. package/src/components/Icon/Icon.tsx +5 -1
  222. package/src/components/Image/Image.stories.tsx +3 -3
  223. package/src/components/Image/Image.tsx +31 -8
  224. package/src/components/Input/Input.stories.tsx +3 -4
  225. package/src/components/Input/Input.tsx +7 -7
  226. package/src/components/Link/Link.stories.tsx +0 -1
  227. package/src/components/List/List.stories.tsx +0 -1
  228. package/src/components/List/List.tsx +6 -5
  229. package/src/components/List/Tree.stories.tsx +1 -2
  230. package/src/components/List/Tree.tsx +0 -1
  231. package/src/components/List/Treegrid.stories.tsx +26 -27
  232. package/src/components/List/Treegrid.tsx +14 -14
  233. package/src/components/Main/Main.stories.tsx +0 -1
  234. package/src/components/Main/Main.tsx +1 -2
  235. package/src/components/Menu/ContextMenu.stories.tsx +0 -1
  236. package/src/components/Menu/DropdownMenu.stories.tsx +0 -1
  237. package/src/components/Menu/DropdownMenu.tsx +48 -42
  238. package/src/components/Message/Message.stories.tsx +6 -7
  239. package/src/components/Message/Message.tsx +1 -5
  240. package/src/components/Popover/Popover.stories.tsx +4 -5
  241. package/src/components/Popover/Popover.tsx +42 -42
  242. package/src/components/ScrollArea/ScrollArea.stories.tsx +93 -30
  243. package/src/components/ScrollArea/ScrollArea.tsx +39 -23
  244. package/src/components/ScrollContainer/ScrollContainer.stories.tsx +20 -18
  245. package/src/components/ScrollContainer/ScrollContainer.tsx +200 -91
  246. package/src/components/Select/Select.stories.tsx +5 -6
  247. package/src/components/Separator/Separator.tsx +4 -7
  248. package/src/components/Skeleton/Skeleton.stories.tsx +0 -1
  249. package/src/components/Splitter/Splitter.stories.tsx +29 -29
  250. package/src/components/Splitter/Splitter.tsx +35 -34
  251. package/src/components/Status/Status.stories.tsx +0 -1
  252. package/src/components/Status/Status.tsx +8 -5
  253. package/src/components/Tag/Tag.stories.tsx +0 -1
  254. package/src/components/ThemeProvider/ThemeProvider.stories.tsx +0 -1
  255. package/src/components/ThemeProvider/ThemeProvider.tsx +5 -4
  256. package/src/components/ThemeProvider/index.ts +1 -1
  257. package/src/components/Toast/Toast.stories.tsx +0 -1
  258. package/src/components/Toast/Toast.tsx +16 -31
  259. package/src/components/Toolbar/Toolbar.stories.tsx +0 -1
  260. package/src/components/Toolbar/Toolbar.tsx +21 -35
  261. package/src/components/Tooltip/Tooltip.stories.tsx +6 -7
  262. package/src/components/Tooltip/Tooltip.tsx +15 -16
  263. package/src/components/index.ts +1 -0
  264. package/src/exemplars/generics.stories.tsx +7 -15
  265. package/src/exemplars/slot.stories.tsx +67 -57
  266. package/src/exemplars/tabster.stories.tsx +1 -1
  267. package/src/exemplars/virtualizer.stories.tsx +4 -4
  268. package/src/hooks/index.ts +1 -0
  269. package/src/hooks/useDensityContext.ts +2 -2
  270. package/src/playground/Custom.stories.tsx +6 -9
  271. package/src/primitives/Column/AUDIT.md +148 -0
  272. package/src/primitives/Column/Column.stories.tsx +122 -19
  273. package/src/primitives/Column/Column.tsx +73 -42
  274. package/src/primitives/Container/Container.stories.tsx +0 -1
  275. package/src/primitives/Container/Container.tsx +5 -8
  276. package/src/primitives/Flex/Flex.stories.tsx +0 -1
  277. package/src/primitives/Flex/Flex.tsx +10 -12
  278. package/src/primitives/Grid/Grid.stories.tsx +0 -1
  279. package/src/primitives/Grid/Grid.tsx +4 -9
  280. package/src/primitives/Panel/Panel.stories.tsx +9 -8
  281. package/src/primitives/Panel/Panel.tsx +64 -63
  282. package/src/testing/Loading.tsx +25 -4
  283. package/src/testing/decorators/withLayout.tsx +6 -6
  284. package/src/testing/decorators/withTheme.tsx +10 -7
  285. package/src/translations.ts +3 -3
  286. package/src/util/usePx.ts +1 -0
  287. package/dist/lib/browser/chunk-2FKSMWNY.mjs.map +0 -7
  288. package/dist/lib/node-esm/chunk-ZNBLTSHI.mjs.map +0 -7
@@ -5,14 +5,13 @@
5
5
  import { type Meta, type StoryObj } from '@storybook/react-vite';
6
6
  import React from 'react';
7
7
 
8
- import { faker } from '@dxos/random';
8
+ import { random } from '@dxos/random';
9
9
 
10
10
  import { withTheme } from '../../testing';
11
11
  import { Icon } from '../Icon';
12
+ import { Treegrid, TREEGRID_PARENT_OF_SEPARATOR, TREEGRID_PATH_SEPARATOR } from './Treegrid';
12
13
 
13
- import { Treegrid } from './Treegrid';
14
-
15
- faker.seed(1234);
14
+ random.seed(1234);
16
15
 
17
16
  type StorybookNode = {
18
17
  id: string;
@@ -32,33 +31,33 @@ const content = {
32
31
  title: 'Root',
33
32
  nodes: [
34
33
  {
35
- id: faker.string.uuid(),
34
+ id: random.string.uuid(),
36
35
  title: 'Personal Space',
37
36
  icon: 'ph--house--regular',
38
37
  nodes: [
39
38
  {
40
- id: faker.string.uuid(),
41
- title: faker.commerce.productName(),
39
+ id: random.string.uuid(),
40
+ title: random.commerce.productName(),
42
41
  },
43
42
  {
44
- id: faker.string.uuid(),
45
- title: faker.commerce.productName(),
43
+ id: random.string.uuid(),
44
+ title: random.commerce.productName(),
46
45
  },
47
46
  {
48
- id: faker.string.uuid(),
49
- title: faker.commerce.productName(),
47
+ id: random.string.uuid(),
48
+ title: random.commerce.productName(),
50
49
  nodes: [
51
50
  {
52
- id: faker.string.uuid(),
53
- title: faker.commerce.productName(),
51
+ id: random.string.uuid(),
52
+ title: random.commerce.productName(),
54
53
  nodes: [
55
54
  {
56
- id: faker.string.uuid(),
57
- title: faker.commerce.productName(),
55
+ id: random.string.uuid(),
56
+ title: random.commerce.productName(),
58
57
  },
59
58
  {
60
- id: faker.string.uuid(),
61
- title: faker.commerce.productName(),
59
+ id: random.string.uuid(),
60
+ title: random.commerce.productName(),
62
61
  },
63
62
  ],
64
63
  },
@@ -67,24 +66,24 @@ const content = {
67
66
  ],
68
67
  },
69
68
  {
70
- id: faker.string.uuid(),
71
- title: faker.commerce.productName(),
69
+ id: random.string.uuid(),
70
+ title: random.commerce.productName(),
72
71
  icon: 'ph--planet--regular',
73
72
  nodes: [
74
73
  {
75
- id: faker.string.uuid(),
76
- title: faker.commerce.productName(),
74
+ id: random.string.uuid(),
75
+ title: random.commerce.productName(),
77
76
  },
78
77
  ],
79
78
  },
80
79
  {
81
- id: faker.string.uuid(),
82
- title: faker.commerce.productName(),
80
+ id: random.string.uuid(),
81
+ title: random.commerce.productName(),
83
82
  icon: 'ph--sailboat--regular',
84
83
  },
85
84
  {
86
- id: faker.string.uuid(),
87
- title: faker.commerce.productName(),
85
+ id: random.string.uuid(),
86
+ title: random.commerce.productName(),
88
87
  icon: 'ph--planet--regular',
89
88
  },
90
89
  ],
@@ -129,8 +128,8 @@ const DefaultStory = () => {
129
128
  return (
130
129
  <Treegrid.Row
131
130
  key={node.id}
132
- id={path.join(Treegrid.PATH_SEPARATOR)}
133
- {...(parentOf && { parentOf: parentOf.join(Treegrid.PARENT_OF_SEPARATOR) })}
131
+ id={path.join(TREEGRID_PATH_SEPARATOR)}
132
+ {...(parentOf && { parentOf: parentOf.join(TREEGRID_PARENT_OF_SEPARATOR) })}
134
133
  >
135
134
  <Treegrid.Cell indent classNames='flex items-center'>
136
135
  {node.icon && <Icon icon={node.icon} classNames='w-[1em] h-[1em] my-1' />}
@@ -15,10 +15,12 @@ import React, {
15
15
  useCallback,
16
16
  } from 'react';
17
17
 
18
+ import { composable, composableProps } from '@dxos/ui-theme';
19
+
18
20
  import { useThemeContext } from '../../hooks';
19
21
  import { type ThemedClassName } from '../../util';
20
22
 
21
- // TODO(thure): A lot of the accessible affordances for this kind of thing need to be implemented per https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/treegrid_role
23
+ // TODO(thure): https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/treegrid_role
22
24
 
23
25
  const TREEGRID_ROW_NAME = 'TreegridRow';
24
26
 
@@ -34,17 +36,19 @@ type TreegridRowContextValue = {
34
36
  const [TreegridRowProvider, useTreegridRowContext] =
35
37
  createTreegridRowContext<TreegridRowContextValue>(TREEGRID_ROW_NAME);
36
38
 
37
- const PATH_SEPARATOR = '~';
38
- const PARENT_OF_SEPARATOR = ' ';
39
+ // TODO(burdon): Replace with functions.
40
+ export const TREEGRID_PATH_SEPARATOR = '~';
41
+ export const TREEGRID_PARENT_OF_SEPARATOR = ' ';
39
42
 
40
43
  type TreegridRootProps = ThemedClassName<ComponentPropsWithRef<typeof Primitive.div>> & {
41
44
  gridTemplateColumns: CSSProperties['gridTemplateColumns'];
42
45
  asChild?: boolean;
43
46
  };
44
47
 
45
- const TreegridRoot = forwardRef<HTMLDivElement, TreegridRootProps>(
46
- ({ asChild, classNames, children, style, gridTemplateColumns, ...props }, forwardedRef) => {
48
+ const TreegridRoot = composable<HTMLDivElement, TreegridRootProps>(
49
+ ({ asChild, classNames, children, style, gridTemplateColumns, onKeyDown: onKeyDownProp, ...props }, forwardedRef) => {
47
50
  const { tx } = useThemeContext();
51
+ const { className, role: _role, ...rest } = composableProps<HTMLDivElement>(props, { classNames });
48
52
  const Comp = asChild ? Slot : Primitive.div;
49
53
  const { findFirstFocusable } = useFocusFinders();
50
54
 
@@ -89,16 +93,16 @@ const TreegridRoot = forwardRef<HTMLDivElement, TreegridRootProps>(
89
93
  break;
90
94
  }
91
95
  }
92
- props.onKeyDown?.(event);
96
+ onKeyDownProp?.(event);
93
97
  },
94
- [findFirstFocusable],
98
+ [findFirstFocusable, onKeyDownProp],
95
99
  );
96
100
 
97
101
  return (
98
102
  <Comp
99
103
  role='treegrid'
100
- {...props}
101
- className={tx('treegrid.root', {}, classNames)}
104
+ {...rest}
105
+ className={tx('treegrid.root', {}, className)}
102
106
  style={{ ...style, gridTemplateColumns }}
103
107
  onKeyDown={handleKeyDown}
104
108
  ref={forwardedRef}
@@ -136,7 +140,7 @@ const TreegridRow = forwardRef<HTMLDivElement, TreegridRowScopedProps<TreegridRo
136
140
  ) => {
137
141
  const { tx } = useThemeContext();
138
142
  const Comp = asChild ? Slot : Primitive.div;
139
- const pathParts = id.split(PATH_SEPARATOR);
143
+ const pathParts = id.split(TREEGRID_PATH_SEPARATOR);
140
144
  const level = pathParts.length - 1;
141
145
  const [open, onOpenChange] = useControllableState({
142
146
  prop: propsOpen,
@@ -181,8 +185,4 @@ export const Treegrid = {
181
185
  Root: TreegridRoot,
182
186
  Row: TreegridRow,
183
187
  Cell: TreegridCell,
184
- PARENT_OF_SEPARATOR,
185
- PATH_SEPARATOR,
186
- createTreegridRowScope,
187
- useTreegridRowContext,
188
188
  };
@@ -8,7 +8,6 @@ import React from 'react';
8
8
  import { withLayout, withTheme } from '../../testing';
9
9
  import { IconButton } from '../Button';
10
10
  import { Toolbar } from '../Toolbar';
11
-
12
11
  import { Main, useSidebars } from './Main';
13
12
 
14
13
  type StoryMainArgs = {};
@@ -30,7 +30,6 @@ import { type MainStyleProps, osTranslations } from '@dxos/ui-theme';
30
30
  import { useThemeContext } from '../../hooks';
31
31
  import { type ThemedClassName } from '../../util';
32
32
  import { type Label, toLocalizedString, useTranslation } from '../ThemeProvider';
33
-
34
33
  import { useSwipeToDismiss } from './useSwipeToDismiss';
35
34
 
36
35
  const MAIN_NAME = 'Main';
@@ -398,9 +397,9 @@ const MainContent = forwardRef<HTMLDivElement, MainContentProps>(
398
397
 
399
398
  return (
400
399
  <Comp
401
- role={role}
402
400
  {...(handlesFocus && { ...mover })}
403
401
  {...props}
402
+ role={role}
404
403
  data-sidebar-left-state={navigationSidebarState}
405
404
  data-sidebar-right-state={complementarySidebarState}
406
405
  data-handles-focus={handlesFocus}
@@ -6,7 +6,6 @@ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
6
  import React from 'react';
7
7
 
8
8
  import { withTheme } from '../../testing';
9
-
10
9
  import { ContextMenu } from './ContextMenu';
11
10
 
12
11
  const DefaultStory = () => {
@@ -7,7 +7,6 @@ import React, { useRef, useState } from 'react';
7
7
 
8
8
  import { withTheme } from '../../testing';
9
9
  import { Button } from '../Button';
10
-
11
10
  import { DropdownMenu } from './DropdownMenu';
12
11
 
13
12
  const DefaultStory = () => {
@@ -17,9 +17,9 @@ import { useControllableState } from '@radix-ui/react-use-controllable-state';
17
17
  import React, {
18
18
  type ComponentPropsWithRef,
19
19
  type ComponentPropsWithoutRef,
20
- type ElementRef,
20
+ type ComponentRef,
21
21
  type FC,
22
- type MutableRefObject,
22
+ PropsWithChildren,
23
23
  type ReactNode,
24
24
  type RefObject,
25
25
  forwardRef,
@@ -47,7 +47,7 @@ const useMenuScope: (scope?: Scope) => any = createMenuScope();
47
47
 
48
48
  type DropdownMenuContextValue = {
49
49
  triggerId: string;
50
- triggerRef: MutableRefObject<HTMLButtonElement | null>;
50
+ triggerRef: RefObject<HTMLButtonElement | null>;
51
51
  contentId: string;
52
52
  open: boolean;
53
53
  onOpenChange(open: boolean): void;
@@ -58,17 +58,23 @@ type DropdownMenuContextValue = {
58
58
  const [DropdownMenuProvider, useDropdownMenuContext] =
59
59
  createDropdownMenuContext<DropdownMenuContextValue>(DROPDOWN_MENU_NAME);
60
60
 
61
- interface DropdownMenuRootProps {
62
- children?: ReactNode;
61
+ type DropdownMenuRootProps = PropsWithChildren<{
63
62
  dir?: Direction;
63
+ modal?: boolean;
64
64
  open?: boolean;
65
65
  defaultOpen?: boolean;
66
66
  onOpenChange?(open: boolean): void;
67
- modal?: boolean;
68
- }
69
-
70
- const DropdownMenuRoot: FC<DropdownMenuRootProps> = (props: ScopedProps<DropdownMenuRootProps>) => {
71
- const { __scopeDropdownMenu, children, dir, open: openProp, defaultOpen, onOpenChange, modal = true } = props;
67
+ }>;
68
+
69
+ const DropdownMenuRoot = ({
70
+ __scopeDropdownMenu,
71
+ children,
72
+ dir,
73
+ modal = true,
74
+ open: openProp,
75
+ defaultOpen,
76
+ onOpenChange,
77
+ }: ScopedProps<DropdownMenuRootProps>) => {
72
78
  const menuScope = useMenuScope(__scopeDropdownMenu);
73
79
  const triggerRef = useRef<HTMLButtonElement | null>(null);
74
80
  const [open = false, setOpen] = useControllableState({
@@ -81,14 +87,14 @@ const DropdownMenuRoot: FC<DropdownMenuRootProps> = (props: ScopedProps<Dropdown
81
87
  <DropdownMenuProvider
82
88
  scope={__scopeDropdownMenu}
83
89
  triggerId={useId()}
84
- triggerRef={triggerRef as MutableRefObject<HTMLButtonElement | null>}
90
+ triggerRef={triggerRef}
85
91
  contentId={useId()}
86
92
  open={open}
87
93
  onOpenChange={setOpen}
88
94
  onOpenToggle={useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen])}
89
95
  modal={modal}
90
96
  >
91
- <MenuPrimitive.Root {...menuScope} open={open} onOpenChange={setOpen} dir={dir} modal={modal}>
97
+ <MenuPrimitive.Root {...menuScope} dir={dir} modal={modal} open={open} onOpenChange={setOpen}>
92
98
  {children}
93
99
  </MenuPrimitive.Root>
94
100
  </DropdownMenuProvider>
@@ -103,9 +109,9 @@ DropdownMenuRoot.displayName = DROPDOWN_MENU_NAME;
103
109
 
104
110
  const TRIGGER_NAME = 'DropdownMenuTrigger';
105
111
 
106
- type DropdownMenuTriggerElement = ElementRef<typeof Primitive.button>;
112
+ type DropdownMenuTriggerElement = ComponentRef<typeof Primitive.button>;
107
113
  type PrimitiveButtonProps = ComponentPropsWithoutRef<typeof Primitive.button>;
108
- interface DropdownMenuTriggerProps extends PrimitiveButtonProps {}
114
+ type DropdownMenuTriggerProps = PrimitiveButtonProps;
109
115
 
110
116
  const DropdownMenuTrigger = forwardRef<DropdownMenuTriggerElement, DropdownMenuTriggerProps>(
111
117
  (props: ScopedProps<DropdownMenuTriggerProps>, forwardedRef) => {
@@ -168,9 +174,9 @@ DropdownMenuTrigger.displayName = TRIGGER_NAME;
168
174
 
169
175
  const VIRTUAL_TRIGGER_NAME = 'DropdownMenuVirtualTrigger';
170
176
 
171
- interface DropdownMenuVirtualTriggerProps {
177
+ type DropdownMenuVirtualTriggerProps = {
172
178
  virtualRef: RefObject<DropdownMenuTriggerElement | null>;
173
- }
179
+ };
174
180
 
175
181
  const DropdownMenuVirtualTrigger = (props: ScopedProps<DropdownMenuVirtualTriggerProps>) => {
176
182
  const { __scopeDropdownMenu, virtualRef } = props;
@@ -193,7 +199,7 @@ DropdownMenuVirtualTrigger.displayName = VIRTUAL_TRIGGER_NAME;
193
199
  const PORTAL_NAME = 'DropdownMenuPortal';
194
200
 
195
201
  type MenuPortalProps = ComponentPropsWithoutRef<typeof MenuPrimitive.Portal>;
196
- interface DropdownMenuPortalProps extends MenuPortalProps {}
202
+ type DropdownMenuPortalProps = MenuPortalProps;
197
203
 
198
204
  const DropdownMenuPortal: FC<DropdownMenuPortalProps> = (props: ScopedProps<DropdownMenuPortalProps>) => {
199
205
  const { __scopeDropdownMenu, ...portalProps } = props;
@@ -229,9 +235,9 @@ const DropdownMenuViewport = forwardRef<HTMLDivElement, DropdownMenuViewportProp
229
235
 
230
236
  const CONTENT_NAME = 'DropdownMenuContent';
231
237
 
232
- type DropdownMenuContentElement = ElementRef<typeof MenuPrimitive.Content>;
238
+ type DropdownMenuContentElement = ComponentRef<typeof MenuPrimitive.Content>;
233
239
  type MenuContentProps = ThemedClassName<ComponentPropsWithoutRef<typeof MenuPrimitive.Content>>;
234
- interface DropdownMenuContentProps extends Omit<MenuContentProps, 'onEntryFocus'> {}
240
+ type DropdownMenuContentProps = Omit<MenuContentProps, 'onEntryFocus'>;
235
241
 
236
242
  const DropdownMenuContent = forwardRef<DropdownMenuContentElement, DropdownMenuContentProps>(
237
243
  (props: ScopedProps<DropdownMenuContentProps>, forwardedRef) => {
@@ -308,9 +314,9 @@ DropdownMenuContent.displayName = CONTENT_NAME;
308
314
 
309
315
  const GROUP_NAME = 'DropdownMenuGroup';
310
316
 
311
- type DropdownMenuGroupElement = ElementRef<typeof MenuPrimitive.Group>;
317
+ type DropdownMenuGroupElement = ComponentRef<typeof MenuPrimitive.Group>;
312
318
  type MenuGroupProps = ComponentPropsWithoutRef<typeof MenuPrimitive.Group>;
313
- interface DropdownMenuGroupProps extends MenuGroupProps {}
319
+ type DropdownMenuGroupProps = MenuGroupProps;
314
320
 
315
321
  const DropdownMenuGroup = forwardRef<DropdownMenuGroupElement, DropdownMenuGroupProps>(
316
322
  (props: ScopedProps<DropdownMenuGroupProps>, forwardedRef) => {
@@ -328,9 +334,9 @@ DropdownMenuGroup.displayName = GROUP_NAME;
328
334
 
329
335
  const LABEL_NAME = 'DropdownMenuLabel';
330
336
 
331
- type DropdownMenuLabelElement = ElementRef<typeof MenuPrimitive.Label>;
337
+ type DropdownMenuLabelElement = ComponentRef<typeof MenuPrimitive.Label>;
332
338
  type MenuLabelProps = ThemedClassName<ComponentPropsWithoutRef<typeof MenuPrimitive.Label>>;
333
- interface DropdownMenuLabelProps extends MenuLabelProps {}
339
+ type DropdownMenuLabelProps = MenuLabelProps;
334
340
 
335
341
  const DropdownMenuGroupLabel = forwardRef<DropdownMenuLabelElement, DropdownMenuLabelProps>(
336
342
  (props: ScopedProps<DropdownMenuLabelProps>, forwardedRef) => {
@@ -356,9 +362,9 @@ DropdownMenuGroupLabel.displayName = LABEL_NAME;
356
362
 
357
363
  const ITEM_NAME = 'DropdownMenuItem';
358
364
 
359
- type DropdownMenuItemElement = ElementRef<typeof MenuPrimitive.Item>;
365
+ type DropdownMenuItemElement = ComponentRef<typeof MenuPrimitive.Item>;
360
366
  type MenuItemProps = ThemedClassName<ComponentPropsWithoutRef<typeof MenuPrimitive.Item>>;
361
- interface DropdownMenuItemProps extends MenuItemProps {}
367
+ type DropdownMenuItemProps = MenuItemProps;
362
368
 
363
369
  const DropdownMenuItem = forwardRef<DropdownMenuItemElement, DropdownMenuItemProps>(
364
370
  (props: ScopedProps<DropdownMenuItemProps>, forwardedRef) => {
@@ -384,9 +390,9 @@ DropdownMenuItem.displayName = ITEM_NAME;
384
390
 
385
391
  const CHECKBOX_ITEM_NAME = 'DropdownMenuCheckboxItem';
386
392
 
387
- type DropdownMenuCheckboxItemElement = ElementRef<typeof MenuPrimitive.CheckboxItem>;
393
+ type DropdownMenuCheckboxItemElement = ComponentRef<typeof MenuPrimitive.CheckboxItem>;
388
394
  type MenuCheckboxItemProps = ThemedClassName<ComponentPropsWithoutRef<typeof MenuPrimitive.CheckboxItem>>;
389
- interface DropdownMenuCheckboxItemProps extends MenuCheckboxItemProps {}
395
+ type DropdownMenuCheckboxItemProps = MenuCheckboxItemProps;
390
396
 
391
397
  const DropdownMenuCheckboxItem = forwardRef<DropdownMenuCheckboxItemElement, DropdownMenuCheckboxItemProps>(
392
398
  (props: ScopedProps<DropdownMenuCheckboxItemProps>, forwardedRef) => {
@@ -412,9 +418,9 @@ DropdownMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;
412
418
 
413
419
  const RADIO_GROUP_NAME = 'DropdownMenuRadioGroup';
414
420
 
415
- type DropdownMenuRadioGroupElement = ElementRef<typeof MenuPrimitive.RadioGroup>;
421
+ type DropdownMenuRadioGroupElement = ComponentRef<typeof MenuPrimitive.RadioGroup>;
416
422
  type MenuRadioGroupProps = ComponentPropsWithoutRef<typeof MenuPrimitive.RadioGroup>;
417
- interface DropdownMenuRadioGroupProps extends MenuRadioGroupProps {}
423
+ type DropdownMenuRadioGroupProps = MenuRadioGroupProps;
418
424
 
419
425
  const DropdownMenuRadioGroup = forwardRef<DropdownMenuRadioGroupElement, DropdownMenuRadioGroupProps>(
420
426
  (props: ScopedProps<DropdownMenuRadioGroupProps>, forwardedRef) => {
@@ -432,7 +438,7 @@ DropdownMenuRadioGroup.displayName = RADIO_GROUP_NAME;
432
438
 
433
439
  const RADIO_ITEM_NAME = 'DropdownMenuRadioItem';
434
440
 
435
- type DropdownMenuRadioItemElement = ElementRef<typeof MenuPrimitive.RadioItem>;
441
+ type DropdownMenuRadioItemElement = ComponentRef<typeof MenuPrimitive.RadioItem>;
436
442
  type MenuRadioItemProps = ComponentPropsWithoutRef<typeof MenuPrimitive.RadioItem>;
437
443
  type DropdownMenuRadioItemProps = ThemedClassName<MenuRadioItemProps>;
438
444
 
@@ -460,9 +466,9 @@ DropdownMenuRadioItem.displayName = RADIO_ITEM_NAME;
460
466
 
461
467
  const INDICATOR_NAME = 'DropdownMenuItemIndicator';
462
468
 
463
- type DropdownMenuItemIndicatorElement = ElementRef<typeof MenuPrimitive.ItemIndicator>;
469
+ type DropdownMenuItemIndicatorElement = ComponentRef<typeof MenuPrimitive.ItemIndicator>;
464
470
  type MenuItemIndicatorProps = ComponentPropsWithoutRef<typeof MenuPrimitive.ItemIndicator>;
465
- interface DropdownMenuItemIndicatorProps extends MenuItemIndicatorProps {}
471
+ type DropdownMenuItemIndicatorProps = MenuItemIndicatorProps;
466
472
 
467
473
  const DropdownMenuItemIndicator = forwardRef<DropdownMenuItemIndicatorElement, DropdownMenuItemIndicatorProps>(
468
474
  (props: ScopedProps<DropdownMenuItemIndicatorProps>, forwardedRef) => {
@@ -480,9 +486,9 @@ DropdownMenuItemIndicator.displayName = INDICATOR_NAME;
480
486
 
481
487
  const SEPARATOR_NAME = 'DropdownMenuSeparator';
482
488
 
483
- type DropdownMenuSeparatorElement = ElementRef<typeof MenuPrimitive.Separator>;
489
+ type DropdownMenuSeparatorElement = ComponentRef<typeof MenuPrimitive.Separator>;
484
490
  type MenuSeparatorProps = ThemedClassName<ComponentPropsWithoutRef<typeof MenuPrimitive.Separator>>;
485
- interface DropdownMenuSeparatorProps extends MenuSeparatorProps {}
491
+ type DropdownMenuSeparatorProps = MenuSeparatorProps;
486
492
 
487
493
  const DropdownMenuSeparator = forwardRef<DropdownMenuSeparatorElement, DropdownMenuSeparatorProps>(
488
494
  (props: ScopedProps<DropdownMenuSeparatorProps>, forwardedRef) => {
@@ -508,9 +514,9 @@ DropdownMenuSeparator.displayName = SEPARATOR_NAME;
508
514
 
509
515
  const ARROW_NAME = 'DropdownMenuArrow';
510
516
 
511
- type DropdownMenuArrowElement = ElementRef<typeof MenuPrimitive.Arrow>;
517
+ type DropdownMenuArrowElement = ComponentRef<typeof MenuPrimitive.Arrow>;
512
518
  type MenuArrowProps = ThemedClassName<ComponentPropsWithoutRef<typeof MenuPrimitive.Arrow>>;
513
- interface DropdownMenuArrowProps extends MenuArrowProps {}
519
+ type DropdownMenuArrowProps = MenuArrowProps;
514
520
 
515
521
  const DropdownMenuArrow = forwardRef<DropdownMenuArrowElement, DropdownMenuArrowProps>(
516
522
  (props: ScopedProps<DropdownMenuArrowProps>, forwardedRef) => {
@@ -534,12 +540,12 @@ DropdownMenuArrow.displayName = ARROW_NAME;
534
540
  // DropdownMenuSub
535
541
  //
536
542
 
537
- interface DropdownMenuSubProps {
543
+ type DropdownMenuSubProps = {
538
544
  children?: ReactNode;
539
545
  open?: boolean;
540
546
  defaultOpen?: boolean;
541
547
  onOpenChange?(open: boolean): void;
542
- }
548
+ };
543
549
 
544
550
  const DropdownMenuSub: FC<DropdownMenuSubProps> = (props: ScopedProps<DropdownMenuSubProps>) => {
545
551
  const { __scopeDropdownMenu, children, open: openProp, onOpenChange, defaultOpen } = props;
@@ -563,9 +569,9 @@ const DropdownMenuSub: FC<DropdownMenuSubProps> = (props: ScopedProps<DropdownMe
563
569
 
564
570
  const SUB_TRIGGER_NAME = 'DropdownMenuSubTrigger';
565
571
 
566
- type DropdownMenuSubTriggerElement = ElementRef<typeof MenuPrimitive.SubTrigger>;
572
+ type DropdownMenuSubTriggerElement = ComponentRef<typeof MenuPrimitive.SubTrigger>;
567
573
  type MenuSubTriggerProps = ComponentPropsWithoutRef<typeof MenuPrimitive.SubTrigger>;
568
- interface DropdownMenuSubTriggerProps extends MenuSubTriggerProps {}
574
+ type DropdownMenuSubTriggerProps = MenuSubTriggerProps;
569
575
 
570
576
  const DropdownMenuSubTrigger = forwardRef<DropdownMenuSubTriggerElement, DropdownMenuSubTriggerProps>(
571
577
  (props: ScopedProps<DropdownMenuSubTriggerProps>, forwardedRef) => {
@@ -583,9 +589,9 @@ DropdownMenuSubTrigger.displayName = SUB_TRIGGER_NAME;
583
589
 
584
590
  const SUB_CONTENT_NAME = 'DropdownMenuSubContent';
585
591
 
586
- type DropdownMenuSubContentElement = ElementRef<typeof MenuPrimitive.Content>;
592
+ type DropdownMenuSubContentElement = ComponentRef<typeof MenuPrimitive.Content>;
587
593
  type MenuSubContentProps = ComponentPropsWithoutRef<typeof MenuPrimitive.SubContent>;
588
- interface DropdownMenuSubContentProps extends MenuSubContentProps {}
594
+ type DropdownMenuSubContentProps = MenuSubContentProps;
589
595
 
590
596
  const DropdownMenuSubContent = forwardRef<DropdownMenuSubContentElement, DropdownMenuSubContentProps>(
591
597
  (props: ScopedProps<DropdownMenuSubContentProps>, forwardedRef) => {
@@ -5,22 +5,21 @@
5
5
  import { type Meta, type StoryObj } from '@storybook/react-vite';
6
6
  import React from 'react';
7
7
 
8
- import { faker } from '@dxos/random';
8
+ import { random } from '@dxos/random';
9
9
  import { type MessageValence } from '@dxos/ui-types';
10
10
 
11
11
  import { withTheme } from '../../testing';
12
-
13
12
  import { Message } from './Message';
14
13
 
15
- faker.seed(123);
14
+ random.seed(123);
16
15
 
17
- type StoryProps = {
16
+ type DefaultStoryProps = {
18
17
  valence: MessageValence;
19
18
  title: string;
20
19
  body: string;
21
20
  };
22
21
 
23
- const DefaultStory = ({ valence, title, body }: StoryProps) => (
22
+ const DefaultStory = ({ valence, title, body }: DefaultStoryProps) => (
24
23
  <div className='w-[30rem]'>
25
24
  <Message.Root valence={valence}>
26
25
  {title && <Message.Title>{title}</Message.Title>}
@@ -53,7 +52,7 @@ export const Default: Story = {
53
52
  args: {
54
53
  valence: 'neutral',
55
54
  title: 'Alert title',
56
- body: faker.lorem.paragraphs(1),
55
+ body: random.lorem.paragraphs(1),
57
56
  },
58
57
  };
59
58
 
@@ -61,6 +60,6 @@ export const Error: Story = {
61
60
  args: {
62
61
  valence: 'error',
63
62
  title: 'Error title',
64
- body: faker.lorem.paragraphs(1),
63
+ body: random.lorem.paragraphs(1),
65
64
  },
66
65
  };
@@ -98,11 +98,7 @@ const MessageTitle = forwardRef<HTMLHeadingElement, MessageTitleProps>(
98
98
  const icon = iconProp ?? messageIcons[valence];
99
99
  return (
100
100
  <Comp {...props} className={tx('message.header', {}, classNames)} id={titleId} ref={forwardedRef}>
101
- {!icon && valence === 'neutral' ? (
102
- <div />
103
- ) : (
104
- <Icon size={5} icon={icon} classNames={tx('message.icon', { valence })} />
105
- )}
101
+ {!icon && valence === 'neutral' ? <div /> : <Icon icon={icon} classNames={tx('message.icon', { valence })} />}
106
102
  <span className={tx('message.title', {}, classNames)}>{children}</span>
107
103
  </Comp>
108
104
  );
@@ -5,14 +5,13 @@
5
5
  import { type Meta, type StoryObj } from '@storybook/react-vite';
6
6
  import React, { type PropsWithChildren, type ReactNode, useRef, useState } from 'react';
7
7
 
8
- import { faker } from '@dxos/random';
8
+ import { random } from '@dxos/random';
9
9
 
10
10
  import { withTheme } from '../../testing';
11
11
  import { Button } from '../Button';
12
-
13
12
  import { Popover } from './Popover';
14
13
 
15
- faker.seed(1234);
14
+ random.seed(1234);
16
15
 
17
16
  const DefaultStory = ({ openTrigger, children }: PropsWithChildren<{ openTrigger: ReactNode }>) => {
18
17
  return (
@@ -42,7 +41,7 @@ type Story = StoryObj<typeof meta>;
42
41
  export const Default: Story = {
43
42
  args: {
44
43
  openTrigger: <Button>Open popover</Button>,
45
- children: faker.lorem.paragraphs(3),
44
+ children: random.lorem.paragraphs(3),
46
45
  },
47
46
  };
48
47
 
@@ -59,7 +58,7 @@ export const VirtualTrigger = {
59
58
  <Popover.VirtualTrigger virtualRef={buttonRef} />
60
59
  <Popover.Content>
61
60
  <Popover.Viewport>
62
- <p className='px-2 py-1 min-w-[18rem] max-w-[38rem]'>{faker.lorem.paragraphs(3)}</p>
61
+ <p className='px-2 py-1 min-w-[18rem] max-w-[38rem]'>{random.lorem.paragraphs(3)}</p>
63
62
  </Popover.Viewport>
64
63
  <Popover.Arrow />
65
64
  </Popover.Content>