@dxos/react-ui 0.8.4-main.f9ba587 → 0.8.4-main.fffef41

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 (279) hide show
  1. package/dist/lib/browser/{chunk-T6YPS45E.mjs → chunk-N5GDJTT2.mjs} +704 -373
  2. package/dist/lib/browser/chunk-N5GDJTT2.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +11 -1
  4. package/dist/lib/browser/index.mjs.map +1 -1
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/testing/index.mjs +57 -30
  7. package/dist/lib/browser/testing/index.mjs.map +4 -4
  8. package/dist/lib/node-esm/{chunk-TYVQJ4KW.mjs → chunk-SP7VQH72.mjs} +704 -373
  9. package/dist/lib/node-esm/chunk-SP7VQH72.mjs.map +7 -0
  10. package/dist/lib/node-esm/index.mjs +11 -1
  11. package/dist/lib/node-esm/index.mjs.map +1 -1
  12. package/dist/lib/node-esm/meta.json +1 -1
  13. package/dist/lib/node-esm/testing/index.mjs +57 -30
  14. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  15. package/dist/types/src/components/Avatars/Avatar.d.ts +1 -1
  16. package/dist/types/src/components/Avatars/Avatar.d.ts.map +1 -1
  17. package/dist/types/src/components/Avatars/Avatar.stories.d.ts +5 -31
  18. package/dist/types/src/components/Avatars/Avatar.stories.d.ts.map +1 -1
  19. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts +5 -11
  20. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts.map +1 -1
  21. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts +1 -1
  22. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
  23. package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts +8 -20
  24. package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts.map +1 -1
  25. package/dist/types/src/components/{Buttons → Button}/Button.d.ts +1 -1
  26. package/dist/types/src/components/Button/Button.d.ts.map +1 -0
  27. package/dist/types/src/components/Button/Button.stories.d.ts +17 -0
  28. package/dist/types/src/components/Button/Button.stories.d.ts.map +1 -0
  29. package/dist/types/src/components/{Buttons → Button}/IconButton.d.ts +2 -3
  30. package/dist/types/src/components/Button/IconButton.d.ts.map +1 -0
  31. package/dist/types/src/components/Button/IconButton.stories.d.ts +13 -0
  32. package/dist/types/src/components/Button/IconButton.stories.d.ts.map +1 -0
  33. package/dist/types/src/components/Button/Toggle.d.ts.map +1 -0
  34. package/dist/types/src/components/Button/Toggle.stories.d.ts +16 -0
  35. package/dist/types/src/components/Button/Toggle.stories.d.ts.map +1 -0
  36. package/dist/types/src/components/{Buttons → Button}/ToggleGroup.d.ts +7 -8
  37. package/dist/types/src/components/Button/ToggleGroup.d.ts.map +1 -0
  38. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts +27 -0
  39. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts.map +1 -0
  40. package/dist/types/src/components/Button/index.d.ts.map +1 -0
  41. package/dist/types/src/components/Clipboard/ClipboardProvider.d.ts.map +1 -1
  42. package/dist/types/src/components/Clipboard/CopyButton.d.ts +1 -1
  43. package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -1
  44. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts.map +1 -1
  45. package/dist/types/src/components/{Dialogs → Dialog}/AlertDialog.d.ts +1 -1
  46. package/dist/types/src/components/Dialog/AlertDialog.d.ts.map +1 -0
  47. package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts +11 -0
  48. package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts.map +1 -0
  49. package/dist/types/src/components/{Dialogs → Dialog}/Dialog.d.ts +1 -1
  50. package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -0
  51. package/dist/types/src/components/Dialog/Dialog.stories.d.ts +25 -0
  52. package/dist/types/src/components/Dialog/Dialog.stories.d.ts.map +1 -0
  53. package/dist/types/src/components/Dialog/index.d.ts.map +1 -0
  54. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts.map +1 -1
  55. package/dist/types/src/components/Icon/Icon.d.ts +1 -1
  56. package/dist/types/src/components/Icon/Icon.d.ts.map +1 -1
  57. package/dist/types/src/components/Icon/Icon.stories.d.ts +17 -0
  58. package/dist/types/src/components/Icon/Icon.stories.d.ts.map +1 -0
  59. package/dist/types/src/components/Input/Input.d.ts +2 -4
  60. package/dist/types/src/components/Input/Input.d.ts.map +1 -1
  61. package/dist/types/src/components/Input/Input.stories.d.ts +10 -11
  62. package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
  63. package/dist/types/src/components/Link/Link.stories.d.ts +8 -8
  64. package/dist/types/src/components/Link/Link.stories.d.ts.map +1 -1
  65. package/dist/types/src/components/{Lists → List}/List.d.ts +2 -2
  66. package/dist/types/src/components/List/List.d.ts.map +1 -0
  67. package/dist/types/src/components/List/List.stories.d.ts +14 -0
  68. package/dist/types/src/components/List/List.stories.d.ts.map +1 -0
  69. package/dist/types/src/components/List/ListDropIndicator.d.ts.map +1 -0
  70. package/dist/types/src/components/{Lists → List}/Tree.d.ts +1 -1
  71. package/dist/types/src/components/List/Tree.d.ts.map +1 -0
  72. package/dist/types/src/components/List/Tree.stories.d.ts +15 -0
  73. package/dist/types/src/components/List/Tree.stories.d.ts.map +1 -0
  74. package/dist/types/src/components/List/TreeDropIndicator.d.ts.map +1 -0
  75. package/dist/types/src/components/{Lists → List}/Treegrid.d.ts +1 -1
  76. package/dist/types/src/components/{Lists → List}/Treegrid.d.ts.map +1 -1
  77. package/dist/types/src/components/List/Treegrid.stories.d.ts +12 -0
  78. package/dist/types/src/components/List/Treegrid.stories.d.ts.map +1 -0
  79. package/dist/types/src/components/List/index.d.ts.map +1 -0
  80. package/dist/types/src/components/Main/Main.d.ts +10 -19
  81. package/dist/types/src/components/Main/Main.d.ts.map +1 -1
  82. package/dist/types/src/components/Main/Main.stories.d.ts +6 -7
  83. package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
  84. package/dist/types/src/components/Menus/ContextMenu.d.ts.map +1 -1
  85. package/dist/types/src/components/Menus/ContextMenu.stories.d.ts +6 -44
  86. package/dist/types/src/components/Menus/ContextMenu.stories.d.ts.map +1 -1
  87. package/dist/types/src/components/Menus/DropdownMenu.d.ts +8 -8
  88. package/dist/types/src/components/Menus/DropdownMenu.d.ts.map +1 -1
  89. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts +6 -41
  90. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts.map +1 -1
  91. package/dist/types/src/components/Message/Message.d.ts +1 -1
  92. package/dist/types/src/components/Message/Message.d.ts.map +1 -1
  93. package/dist/types/src/components/Message/Message.stories.d.ts +7 -16
  94. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
  95. package/dist/types/src/components/Popover/Popover.d.ts +2 -2
  96. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  97. package/dist/types/src/components/Popover/Popover.stories.d.ts +6 -34
  98. package/dist/types/src/components/Popover/Popover.stories.d.ts.map +1 -1
  99. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +1 -1
  100. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  101. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +6 -32
  102. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
  103. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +37 -0
  104. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -0
  105. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts +18 -0
  106. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts.map +1 -0
  107. package/dist/types/src/components/ScrollContainer/index.d.ts +2 -0
  108. package/dist/types/src/components/ScrollContainer/index.d.ts.map +1 -0
  109. package/dist/types/src/components/Select/Select.d.ts +1 -1
  110. package/dist/types/src/components/Select/Select.d.ts.map +1 -1
  111. package/dist/types/src/components/Select/Select.stories.d.ts +4 -9
  112. package/dist/types/src/components/Select/Select.stories.d.ts.map +1 -1
  113. package/dist/types/src/components/Status/Status.stories.d.ts +2 -8
  114. package/dist/types/src/components/Status/Status.stories.d.ts.map +1 -1
  115. package/dist/types/src/components/Tag/Tag.stories.d.ts +12 -12
  116. package/dist/types/src/components/Tag/Tag.stories.d.ts.map +1 -1
  117. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts +1 -1
  118. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  119. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +1 -1
  120. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
  121. package/dist/types/src/components/Toast/Toast.d.ts +1 -1
  122. package/dist/types/src/components/Toast/Toast.d.ts.map +1 -1
  123. package/dist/types/src/components/Toast/Toast.stories.d.ts +6 -44
  124. package/dist/types/src/components/Toast/Toast.stories.d.ts.map +1 -1
  125. package/dist/types/src/components/Toolbar/Toolbar.d.ts +12 -12
  126. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  127. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts +6 -50
  128. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
  129. package/dist/types/src/components/Tooltip/Tooltip.d.ts +2 -4
  130. package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
  131. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts +8 -61
  132. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
  133. package/dist/types/src/components/index.d.ts +4 -3
  134. package/dist/types/src/components/index.d.ts.map +1 -1
  135. package/dist/types/src/hooks/useSafeArea.d.ts.map +1 -1
  136. package/dist/types/src/hooks/useVisualViewport.d.ts +2 -2
  137. package/dist/types/src/hooks/useVisualViewport.d.ts.map +1 -1
  138. package/dist/types/src/playground/Controls.stories.d.ts +5 -9
  139. package/dist/types/src/playground/Controls.stories.d.ts.map +1 -1
  140. package/dist/types/src/playground/Custom.stories.d.ts +12 -4
  141. package/dist/types/src/playground/Custom.stories.d.ts.map +1 -1
  142. package/dist/types/src/playground/Typography.stories.d.ts +5 -11
  143. package/dist/types/src/playground/Typography.stories.d.ts.map +1 -1
  144. package/dist/types/src/testing/decorators/index.d.ts +2 -1
  145. package/dist/types/src/testing/decorators/index.d.ts.map +1 -1
  146. package/dist/types/src/testing/decorators/withLayout.d.ts +15 -0
  147. package/dist/types/src/testing/decorators/withLayout.d.ts.map +1 -0
  148. package/dist/types/src/testing/decorators/{withSurfaceVariantsLayout.d.ts → withLayoutVariants.d.ts} +2 -2
  149. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts.map +1 -0
  150. package/dist/types/src/testing/decorators/withTheme.d.ts +3 -0
  151. package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
  152. package/dist/types/src/util/domino.d.ts +18 -0
  153. package/dist/types/src/util/domino.d.ts.map +1 -0
  154. package/dist/types/src/util/index.d.ts +3 -1
  155. package/dist/types/src/util/index.d.ts.map +1 -1
  156. package/dist/types/src/util/usePx.d.ts +8 -0
  157. package/dist/types/src/util/usePx.d.ts.map +1 -0
  158. package/dist/types/tsconfig.tsbuildinfo +1 -1
  159. package/package.json +26 -23
  160. package/src/components/Avatars/Avatar.stories.tsx +19 -10
  161. package/src/components/Avatars/Avatar.tsx +3 -3
  162. package/src/components/Avatars/AvatarGroup.stories.tsx +10 -6
  163. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +17 -12
  164. package/src/components/Breadcrumb/Breadcrumb.tsx +3 -3
  165. package/src/components/{Buttons → Button}/Button.stories.tsx +10 -11
  166. package/src/components/{Buttons → Button}/IconButton.stories.tsx +11 -8
  167. package/src/components/{Buttons → Button}/IconButton.tsx +16 -14
  168. package/src/components/Button/Toggle.stories.tsx +37 -0
  169. package/src/components/{Buttons → Button}/ToggleGroup.stories.tsx +13 -10
  170. package/src/components/{Buttons → Button}/ToggleGroup.tsx +17 -4
  171. package/src/components/Clipboard/ClipboardProvider.tsx +1 -1
  172. package/src/components/Clipboard/CopyButton.tsx +4 -3
  173. package/src/components/DensityProvider/DensityProvider.tsx +1 -1
  174. package/src/components/{Dialogs → Dialog}/AlertDialog.stories.tsx +15 -12
  175. package/src/components/{Dialogs → Dialog}/AlertDialog.tsx +13 -13
  176. package/src/components/{Dialogs → Dialog}/Dialog.stories.tsx +17 -15
  177. package/src/components/{Dialogs → Dialog}/Dialog.tsx +13 -13
  178. package/src/components/ElevationProvider/ElevationProvider.tsx +1 -1
  179. package/src/components/Icon/Icon.stories.tsx +113 -0
  180. package/src/components/Icon/Icon.tsx +1 -1
  181. package/src/components/Input/Input.stories.tsx +12 -14
  182. package/src/components/Input/Input.tsx +16 -16
  183. package/src/components/Link/Link.stories.tsx +10 -6
  184. package/src/components/{Lists → List}/List.stories.tsx +22 -20
  185. package/src/components/{Lists → List}/List.tsx +15 -16
  186. package/src/components/{Lists → List}/ListDropIndicator.tsx +1 -1
  187. package/src/components/{Lists → List}/Tree.stories.tsx +11 -8
  188. package/src/components/{Lists → List}/Tree.tsx +4 -3
  189. package/src/components/{Lists → List}/TreeDropIndicator.tsx +1 -1
  190. package/src/components/{Lists → List}/Treegrid.stories.tsx +12 -6
  191. package/src/components/{Lists → List}/Treegrid.tsx +58 -17
  192. package/src/components/Main/Main.stories.tsx +17 -9
  193. package/src/components/Main/Main.tsx +43 -28
  194. package/src/components/Menus/ContextMenu.stories.tsx +11 -8
  195. package/src/components/Menus/ContextMenu.tsx +1 -0
  196. package/src/components/Menus/DropdownMenu.stories.tsx +12 -9
  197. package/src/components/Menus/DropdownMenu.tsx +45 -16
  198. package/src/components/Message/Message.stories.tsx +11 -7
  199. package/src/components/Message/Message.tsx +1 -1
  200. package/src/components/Popover/Popover.stories.tsx +12 -9
  201. package/src/components/Popover/Popover.tsx +29 -12
  202. package/src/components/ScrollArea/ScrollArea.stories.tsx +12 -9
  203. package/src/components/ScrollArea/ScrollArea.tsx +4 -4
  204. package/src/components/ScrollContainer/ScrollContainer.stories.tsx +69 -0
  205. package/src/components/ScrollContainer/ScrollContainer.tsx +231 -0
  206. package/src/components/ScrollContainer/index.ts +5 -0
  207. package/src/components/Select/Select.stories.tsx +15 -12
  208. package/src/components/Select/Select.tsx +9 -9
  209. package/src/components/Status/Status.stories.tsx +9 -6
  210. package/src/components/Tag/Tag.stories.tsx +18 -9
  211. package/src/components/ThemeProvider/ThemeProvider.tsx +3 -2
  212. package/src/components/ThemeProvider/TranslationsProvider.tsx +3 -3
  213. package/src/components/Toast/Toast.stories.tsx +12 -9
  214. package/src/components/Toast/Toast.tsx +9 -9
  215. package/src/components/Toolbar/Toolbar.stories.tsx +21 -19
  216. package/src/components/Toolbar/Toolbar.tsx +20 -8
  217. package/src/components/Tooltip/Tooltip.stories.tsx +16 -12
  218. package/src/components/Tooltip/Tooltip.tsx +5 -4
  219. package/src/components/index.ts +4 -3
  220. package/src/hooks/useSafeArea.ts +3 -2
  221. package/src/hooks/useSafeCollisionPadding.ts +1 -1
  222. package/src/hooks/useVisualViewport.ts +4 -4
  223. package/src/playground/Controls.stories.tsx +20 -17
  224. package/src/playground/Custom.stories.tsx +13 -24
  225. package/src/playground/Typography.stories.tsx +8 -6
  226. package/src/testing/decorators/index.ts +2 -1
  227. package/src/testing/decorators/withLayout.tsx +56 -0
  228. package/src/testing/decorators/{withSurfaceVariantsLayout.tsx → withLayoutVariants.tsx} +2 -2
  229. package/src/testing/decorators/withTheme.tsx +31 -0
  230. package/src/util/domino.ts +53 -0
  231. package/src/util/index.ts +3 -1
  232. package/src/util/usePx.ts +61 -0
  233. package/dist/lib/browser/chunk-T6YPS45E.mjs.map +0 -7
  234. package/dist/lib/node-esm/chunk-TYVQJ4KW.mjs.map +0 -7
  235. package/dist/types/src/components/Buttons/Button.d.ts.map +0 -1
  236. package/dist/types/src/components/Buttons/Button.stories.d.ts +0 -12
  237. package/dist/types/src/components/Buttons/Button.stories.d.ts.map +0 -1
  238. package/dist/types/src/components/Buttons/IconButton.d.ts.map +0 -1
  239. package/dist/types/src/components/Buttons/IconButton.stories.d.ts +0 -22
  240. package/dist/types/src/components/Buttons/IconButton.stories.d.ts.map +0 -1
  241. package/dist/types/src/components/Buttons/Toggle.d.ts.map +0 -1
  242. package/dist/types/src/components/Buttons/Toggle.stories.d.ts +0 -19
  243. package/dist/types/src/components/Buttons/Toggle.stories.d.ts.map +0 -1
  244. package/dist/types/src/components/Buttons/ToggleGroup.d.ts.map +0 -1
  245. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts +0 -39
  246. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts.map +0 -1
  247. package/dist/types/src/components/Buttons/index.d.ts.map +0 -1
  248. package/dist/types/src/components/Dialogs/AlertDialog.d.ts.map +0 -1
  249. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts +0 -43
  250. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts.map +0 -1
  251. package/dist/types/src/components/Dialogs/Dialog.d.ts.map +0 -1
  252. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts +0 -48
  253. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts.map +0 -1
  254. package/dist/types/src/components/Dialogs/index.d.ts.map +0 -1
  255. package/dist/types/src/components/Lists/List.d.ts.map +0 -1
  256. package/dist/types/src/components/Lists/List.stories.d.ts +0 -37
  257. package/dist/types/src/components/Lists/List.stories.d.ts.map +0 -1
  258. package/dist/types/src/components/Lists/ListDropIndicator.d.ts.map +0 -1
  259. package/dist/types/src/components/Lists/Tree.d.ts.map +0 -1
  260. package/dist/types/src/components/Lists/Tree.stories.d.ts +0 -41
  261. package/dist/types/src/components/Lists/Tree.stories.d.ts.map +0 -1
  262. package/dist/types/src/components/Lists/TreeDropIndicator.d.ts.map +0 -1
  263. package/dist/types/src/components/Lists/Treegrid.stories.d.ts +0 -10
  264. package/dist/types/src/components/Lists/Treegrid.stories.d.ts.map +0 -1
  265. package/dist/types/src/components/Lists/index.d.ts.map +0 -1
  266. package/dist/types/src/testing/decorators/withSurfaceVariantsLayout.d.ts.map +0 -1
  267. package/src/components/Buttons/Toggle.stories.tsx +0 -33
  268. package/src/testing/decorators/withTheme.ts +0 -22
  269. /package/dist/types/src/components/{Buttons → Button}/Toggle.d.ts +0 -0
  270. /package/dist/types/src/components/{Buttons → Button}/index.d.ts +0 -0
  271. /package/dist/types/src/components/{Dialogs → Dialog}/index.d.ts +0 -0
  272. /package/dist/types/src/components/{Lists → List}/ListDropIndicator.d.ts +0 -0
  273. /package/dist/types/src/components/{Lists → List}/TreeDropIndicator.d.ts +0 -0
  274. /package/dist/types/src/components/{Lists → List}/index.d.ts +0 -0
  275. /package/src/components/{Buttons → Button}/Button.tsx +0 -0
  276. /package/src/components/{Buttons → Button}/Toggle.tsx +0 -0
  277. /package/src/components/{Buttons → Button}/index.ts +0 -0
  278. /package/src/components/{Dialogs → Dialog}/index.ts +0 -0
  279. /package/src/components/{Lists → List}/index.ts +0 -0
@@ -4,7 +4,7 @@
4
4
 
5
5
  import type { ToggleGroupItemProps as ToggleGroupItemPrimitiveProps } from '@radix-ui/react-toggle-group';
6
6
  import * as ToolbarPrimitive from '@radix-ui/react-toolbar';
7
- import React, { forwardRef } from 'react';
7
+ import React, { Fragment, forwardRef } from 'react';
8
8
 
9
9
  import { useThemeContext } from '../../hooks';
10
10
  import { type ThemedClassName } from '../../util';
@@ -13,27 +13,39 @@ import {
13
13
  ButtonGroup,
14
14
  type ButtonGroupProps,
15
15
  type ButtonProps,
16
+ IconButton,
17
+ type IconButtonProps,
16
18
  Toggle,
17
19
  type ToggleGroupItemProps,
18
20
  type ToggleProps,
19
- IconButton,
20
- type IconButtonProps,
21
- } from '../Buttons';
21
+ } from '../Button';
22
22
  import { Link, type LinkProps } from '../Link';
23
23
  import { Separator, type SeparatorProps } from '../Separator';
24
24
 
25
- type ToolbarRootProps = ThemedClassName<ToolbarPrimitive.ToolbarProps> & { layoutManaged?: boolean };
25
+ type ToolbarRootProps = ThemedClassName<
26
+ ToolbarPrimitive.ToolbarProps & {
27
+ textBlockWidth?: boolean;
28
+ layoutManaged?: boolean;
29
+ disabled?: boolean;
30
+ }
31
+ >;
26
32
 
27
33
  const ToolbarRoot = forwardRef<HTMLDivElement, ToolbarRootProps>(
28
- ({ classNames, children, layoutManaged, ...props }, forwardedRef) => {
34
+ ({ classNames, children, layoutManaged, textBlockWidth: textBlockWidthParam, disabled, ...props }, forwardedRef) => {
29
35
  const { tx } = useThemeContext();
36
+ const InnerRoot = textBlockWidthParam ? 'div' : Fragment;
37
+ const innerRootProps = textBlockWidthParam
38
+ ? { role: 'none', className: tx('toolbar.inner', 'toolbar', { layoutManaged }, classNames) }
39
+ : {};
40
+
30
41
  return (
31
42
  <ToolbarPrimitive.Root
32
43
  {...props}
33
- className={tx('toolbar.root', 'toolbar', { layoutManaged }, classNames)}
44
+ data-arrow-keys={props.orientation === 'vertical' ? 'up down' : 'left right'}
45
+ className={tx('toolbar.root', 'toolbar', { layoutManaged, disabled }, classNames)}
34
46
  ref={forwardedRef}
35
47
  >
36
- {children}
48
+ <InnerRoot {...innerRootProps}>{children}</InnerRoot>
37
49
  </ToolbarPrimitive.Root>
38
50
  );
39
51
  },
@@ -2,14 +2,15 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
6
  import React from 'react';
7
7
 
8
8
  import { faker } from '@dxos/random';
9
9
 
10
- import { Tooltip } from './Tooltip';
11
10
  import { withTheme } from '../../testing';
12
- import { Button } from '../Buttons';
11
+ import { Button } from '../Button';
12
+
13
+ import { Tooltip } from './Tooltip';
13
14
 
14
15
  type StoryProps = {
15
16
  tooltips: { label: string; content: string }[];
@@ -28,15 +29,18 @@ const DefaultStory = ({ tooltips, defaultOpen }: StoryProps) => (
28
29
  </Tooltip.Provider>
29
30
  );
30
31
 
31
- export default {
32
+ const meta = {
32
33
  title: 'ui/react-ui-core/Tooltip',
33
- component: Tooltip,
34
+ component: Tooltip as any,
34
35
  render: DefaultStory,
35
36
  decorators: [withTheme],
36
- parameters: { chromatic: { disableSnapshot: false } },
37
- };
37
+ } satisfies Meta<typeof DefaultStory>;
38
+
39
+ export default meta;
40
+
41
+ type Story = StoryObj<typeof meta>;
38
42
 
39
- export const Default = {
43
+ export const Default: Story = {
40
44
  args: {
41
45
  tooltips: [
42
46
  {
@@ -50,9 +54,9 @@ export const Default = {
50
54
  },
51
55
  };
52
56
 
53
- export const DefaultOpen = {
57
+ export const DefaultOpen: Story = {
54
58
  args: {
55
- defaultOption: true,
59
+ defaultOpen: true,
56
60
  tooltips: [
57
61
  {
58
62
  label: 'Tooltip trigger',
@@ -65,9 +69,9 @@ export const DefaultOpen = {
65
69
  },
66
70
  };
67
71
 
68
- export const StressTest = {
72
+ export const StressTest: Story = {
69
73
  args: {
70
- defaultOption: true,
74
+ defaultOpen: true,
71
75
  tooltips: faker.helpers.multiple(
72
76
  () => ({
73
77
  label: faker.lorem.words(2),
@@ -11,7 +11,7 @@ import type { Scope } from '@radix-ui/react-context';
11
11
  import { DismissableLayer } from '@radix-ui/react-dismissable-layer';
12
12
  import { useId } from '@radix-ui/react-id';
13
13
  import * as PopperPrimitive from '@radix-ui/react-popper';
14
- import { createPopperScope, type PopperAnchorProps } from '@radix-ui/react-popper';
14
+ import { type PopperAnchorProps, createPopperScope } from '@radix-ui/react-popper';
15
15
  import { Portal as PortalPrimitive } from '@radix-ui/react-portal';
16
16
  import { Presence } from '@radix-ui/react-presence';
17
17
  import { Primitive } from '@radix-ui/react-primitive';
@@ -23,10 +23,11 @@ import React, {
23
23
  type ComponentPropsWithoutRef,
24
24
  type ElementRef,
25
25
  type FC,
26
- type SyntheticEvent,
27
- forwardRef,
28
26
  type MutableRefObject,
29
27
  type ReactNode,
28
+ type RefObject,
29
+ type SyntheticEvent,
30
+ forwardRef,
30
31
  useCallback,
31
32
  useEffect,
32
33
  useMemo,
@@ -218,7 +219,7 @@ const TooltipProvider: FC<TooltipProviderProps> = (props: TooltipScopedProps<Too
218
219
  {content}
219
220
  <TooltipArrow className={tx('tooltip.arrow', 'tooltip__arrow')} />
220
221
  </TooltipContent>
221
- <TooltipVirtualTrigger virtualRef={triggerRef} />
222
+ <TooltipVirtualTrigger virtualRef={triggerRef as RefObject<HTMLButtonElement>} />
222
223
  {children}
223
224
  </TooltipContextProvider>
224
225
  </PopperPrimitive.Root>
@@ -5,19 +5,20 @@
5
5
  export * from './AnchoredOverflow';
6
6
  export * from './Avatars';
7
7
  export * from './Breadcrumb';
8
- export * from './Buttons';
8
+ export * from './Button';
9
9
  export * from './Clipboard';
10
- export * from './Dialogs';
10
+ export * from './Dialog';
11
11
  export * from './Icon';
12
12
  export * from './Input';
13
13
  export * from './Link';
14
- export * from './Lists';
14
+ export * from './List';
15
15
  export * from './Main';
16
16
  export * from './Menus';
17
17
  export * from './Message';
18
18
  export * from './Popover';
19
19
  export * from './Status';
20
20
  export * from './ScrollArea';
21
+ export * from './ScrollContainer';
21
22
  export * from './Select';
22
23
  export * from './Separator';
23
24
  export * from './Tag';
@@ -4,7 +4,7 @@
4
4
 
5
5
  import { useCallback, useState } from 'react';
6
6
 
7
- import { useResize } from '@dxos/react-hooks';
7
+ import { useViewportResize } from '@dxos/react-hooks';
8
8
 
9
9
  export type SafeAreaPadding = Record<'top' | 'right' | 'bottom' | 'left', number>;
10
10
 
@@ -20,6 +20,7 @@ export const useSafeArea = (): SafeAreaPadding => {
20
20
  left: parseFloat(getComputedStyle(document.documentElement).getPropertyValue('--safe-area-left')),
21
21
  });
22
22
  }, []);
23
- useResize(handleResize);
23
+
24
+ useViewportResize(handleResize);
24
25
  return padding;
25
26
  };
@@ -21,7 +21,7 @@ const safePadding = (
21
21
  ) => {
22
22
  return (
23
23
  (propIsNumber(safePadding[side]) ? safePadding[side] : 0) +
24
- (propIsNumber(propsPadding) ? propsPadding : propsIsRecord(propsPadding) ? propsPadding[side] ?? 0 : 0)
24
+ (propIsNumber(propsPadding) ? propsPadding : propsIsRecord(propsPadding) ? (propsPadding[side] ?? 0) : 0)
25
25
  );
26
26
  };
27
27
 
@@ -2,11 +2,11 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { useCallback, type useEffect, useState } from 'react';
5
+ import { useCallback, useState } from 'react';
6
6
 
7
- import { useResize } from '@dxos/react-hooks';
7
+ import { useViewportResize } from '@dxos/react-hooks';
8
8
 
9
- export const useVisualViewport = (deps?: Parameters<typeof useEffect>[1]) => {
9
+ export const useVisualViewport = (deps?: Parameters<typeof useViewportResize>[1]) => {
10
10
  const [width, setWidth] = useState<number | null>(null);
11
11
  const [height, setHeight] = useState<number | null>(null);
12
12
 
@@ -17,7 +17,7 @@ export const useVisualViewport = (deps?: Parameters<typeof useEffect>[1]) => {
17
17
  }
18
18
  }, []);
19
19
 
20
- useResize(handleResize);
20
+ useViewportResize(handleResize, deps);
21
21
 
22
22
  return { width, height };
23
23
  };
@@ -2,13 +2,12 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
6
-
7
- import { FileTs, FileJs, ArrowClockwise, Bug, TextUnderline, TextB, TextItalic } from '@phosphor-icons/react';
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
8
6
  import React, { useState } from 'react';
9
7
 
10
- import { Input, Select, Toggle, Toolbar } from '../components';
11
- import { withTheme, withSurfaceVariantsLayout } from '../testing';
8
+ import { Icon, Input, Select, Toggle, Toolbar } from '../components';
9
+ import { withTheme } from '../testing';
10
+ import { withLayoutVariants } from '../testing';
12
11
 
13
12
  const DefaultStory = () => {
14
13
  const [checked, setChecked] = useState<boolean>(false);
@@ -29,6 +28,7 @@ const DefaultStory = () => {
29
28
  <Select.Option value={'b'}>B</Select.Option>
30
29
  <Select.Option value={'c'}>C</Select.Option>
31
30
  </Select.Viewport>
31
+ <Select.Arrow />
32
32
  </Select.Content>
33
33
  </Select.Portal>
34
34
  </Select.Root>
@@ -37,27 +37,27 @@ const DefaultStory = () => {
37
37
  {/* TODO(burdon): Icon sizes should adapt to density. */}
38
38
  <Toolbar.ToggleGroup type='multiple'>
39
39
  <Toolbar.ToggleGroupItem value='a'>
40
- <TextB />
40
+ <Icon icon='ph--text-b--regular' />
41
41
  </Toolbar.ToggleGroupItem>
42
42
  <Toolbar.ToggleGroupItem value='b'>
43
- <TextItalic />
43
+ <Icon icon='ph--text-italic--regular' />
44
44
  </Toolbar.ToggleGroupItem>
45
45
  <Toolbar.ToggleGroupItem value='c'>
46
- <TextUnderline />
46
+ <Icon icon='ph--text-underline--regular' />
47
47
  </Toolbar.ToggleGroupItem>
48
48
  </Toolbar.ToggleGroup>
49
49
  {/* TODO(burdon): Highlight isn't shown. */}
50
50
  <Toolbar.ToggleGroup type='single' defaultValue='a'>
51
51
  <Toolbar.ToggleGroupItem value='a'>
52
- <FileTs />
52
+ <Icon icon='ph--file-ts--regular' />
53
53
  </Toolbar.ToggleGroupItem>
54
54
  <Toolbar.ToggleGroupItem value='b'>
55
- <FileJs />
55
+ <Icon icon='ph--file-js--regular' />
56
56
  </Toolbar.ToggleGroupItem>
57
57
  </Toolbar.ToggleGroup>
58
58
  <Toolbar.Button asChild>
59
59
  <Toggle>
60
- <Bug />
60
+ <Icon icon='ph--bug--regular' />
61
61
  </Toggle>
62
62
  </Toolbar.Button>
63
63
  {/* TODO(burdon): Should not be 'is-full' by default. */}
@@ -71,7 +71,7 @@ const DefaultStory = () => {
71
71
  </Input.Root>
72
72
  <Toolbar.Button>Test</Toolbar.Button>
73
73
  <Toolbar.Button>
74
- <ArrowClockwise />
74
+ <Icon icon='ph--arrow-clockwise--regular' />
75
75
  </Toolbar.Button>
76
76
  </Toolbar.Root>
77
77
  <Input.Root>
@@ -81,11 +81,14 @@ const DefaultStory = () => {
81
81
  );
82
82
  };
83
83
 
84
- export default {
84
+ const meta = {
85
85
  title: 'ui/react-ui-core/Playground/Controls',
86
86
  render: DefaultStory,
87
- decorators: [withSurfaceVariantsLayout(), withTheme],
88
- parameters: { chromatic: { disableSnapshot: false } },
89
- };
87
+ decorators: [withTheme, withLayoutVariants()],
88
+ } satisfies Meta<typeof Icon>;
89
+
90
+ export default meta;
91
+
92
+ type Story = StoryObj<typeof meta>;
90
93
 
91
- export const Default = {};
94
+ export const Default: Story = {};
@@ -2,23 +2,12 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
6
-
7
- import { type StoryObj, type Meta } from '@storybook/react-vite';
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
8
6
  import React from 'react';
9
7
 
10
- import { Button, IconButton, type ButtonProps, Tooltip } from '../components';
8
+ import { Button, type ButtonProps, IconButton, Tooltip } from '../components';
11
9
  import { withTheme } from '../testing';
12
10
 
13
- // TODO(burdon): Change density to 3 or 4 sizes: (large, medium, small; or 22, 28, 32, 40)
14
- // TODO(burdon): IconButton should be square if no text.
15
- // TODO(burdon): IconButton icon should be auto-sized based on density.
16
-
17
- // TODO(burdon): Remove custom padding from all Buttons.
18
-
19
- // TODO(burdon): Forms w/ labels.
20
- // TODO(burdon): Card preview with sections.
21
-
22
11
  const DefaultStory = ({ children, ...args }: Omit<ButtonProps, 'ref'>) => {
23
12
  return (
24
13
  <Tooltip.Provider>
@@ -41,7 +30,7 @@ const DefaultStory = ({ children, ...args }: Omit<ButtonProps, 'ref'>) => {
41
30
  iconOnly
42
31
  size={7}
43
32
  density='coarse'
44
- classNames='px-1.5'
33
+ classNames='pli-1.5'
45
34
  />
46
35
  </div>
47
36
  </div>
@@ -54,7 +43,7 @@ const DefaultStory = ({ children, ...args }: Omit<ButtonProps, 'ref'>) => {
54
43
  </Button>
55
44
  </div>
56
45
  <div className='flex justify-center'>
57
- <IconButton {...args} label='Test' icon='ph--atom--regular' size={5} density='fine' classNames='px-2' />
46
+ <IconButton {...args} label='Test' icon='ph--atom--regular' density='fine' classNames='pli-2' />
58
47
  </div>
59
48
  <div className='flex justify-center'>
60
49
  <IconButton
@@ -62,9 +51,8 @@ const DefaultStory = ({ children, ...args }: Omit<ButtonProps, 'ref'>) => {
62
51
  label='Test'
63
52
  icon='ph--atom--regular'
64
53
  iconOnly
65
- size={5}
66
54
  density='fine'
67
- classNames='py-1 px-1.5'
55
+ classNames='plb-1 pli-1.5'
68
56
  />
69
57
  </div>
70
58
  </div>
@@ -72,7 +60,7 @@ const DefaultStory = ({ children, ...args }: Omit<ButtonProps, 'ref'>) => {
72
60
  {/* Small */}
73
61
  <div className='grid grid-cols-3 gap-4'>
74
62
  <div className='flex justify-center'>
75
- <Button {...args} density='fine' classNames={'!h-[24px] !text-[14px] p-0 px-1.5 min-bs-0'}>
63
+ <Button {...args} density='fine' classNames={'!h-[24px] !text-[14px] p-0 pli-1.5 min-bs-0'}>
76
64
  {children}
77
65
  </Button>
78
66
  </div>
@@ -101,18 +89,17 @@ const DefaultStory = ({ children, ...args }: Omit<ButtonProps, 'ref'>) => {
101
89
 
102
90
  {/* TODO(burdon): Full variant with max width. */}
103
91
  <div className='flex justify-center'>
104
- <Button classNames='w-full max-w-[15rem] rounded' variant='default'>
92
+ <Button classNames='is-full max-is-[15rem] rounded' variant='default'>
105
93
  Test
106
94
  </Button>
107
95
  </div>
108
96
  <div className='flex justify-center'>
109
97
  {/* TODO(burdon): Option to have button on RHS. Default size for icon should be 5 for this (medium) density. */}
110
98
  <IconButton
111
- classNames='w-full max-w-[15rem] rounded'
99
+ classNames='is-full max-is-[15rem] rounded'
112
100
  variant='primary'
113
101
  icon='ph--arrows-clockwise--regular'
114
102
  label='Test'
115
- size={5}
116
103
  />
117
104
  </div>
118
105
  </div>
@@ -120,13 +107,15 @@ const DefaultStory = ({ children, ...args }: Omit<ButtonProps, 'ref'>) => {
120
107
  );
121
108
  };
122
109
 
123
- const meta: Meta<typeof Button> = {
110
+ const meta = {
124
111
  title: 'ui/react-ui-core/Playground/Custom',
125
112
  component: Button,
126
113
  render: DefaultStory,
127
114
  decorators: [withTheme],
128
- parameters: { layout: 'centered' },
129
- };
115
+ parameters: {
116
+ layout: 'centered',
117
+ },
118
+ } satisfies Meta<typeof Button>;
130
119
 
131
120
  export default meta;
132
121
 
@@ -2,8 +2,7 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
6
-
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
7
6
  import React from 'react';
8
7
 
9
8
  import { withTheme } from '../testing';
@@ -43,13 +42,16 @@ const DefaultStory = () => {
43
42
  );
44
43
  };
45
44
 
46
- export default {
45
+ const meta = {
47
46
  title: 'ui/react-ui-core/Playground/Typography',
48
47
  render: DefaultStory,
49
48
  decorators: [withTheme],
50
- parameters: { chromatic: { disableSnapshot: false } },
51
- };
49
+ } satisfies Meta<typeof DefaultStory>;
50
+
51
+ export default meta;
52
+
53
+ type Story = StoryObj<typeof meta>;
52
54
 
53
- export const Default = {
55
+ export const Default: Story = {
54
56
  args: {},
55
57
  };
@@ -2,5 +2,6 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
+ export * from './withLayout';
6
+ export * from './withLayoutVariants';
5
7
  export * from './withTheme';
6
- export * from './withSurfaceVariantsLayout';
@@ -0,0 +1,56 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { type Decorator } from '@storybook/react';
6
+ import React, { type FC, type PropsWithChildren } from 'react';
7
+
8
+ import { type ClassNameValue, type ThemedClassName } from '@dxos/react-ui';
9
+ import { mx } from '@dxos/react-ui-theme';
10
+
11
+ export type ContainerProps = ThemedClassName<PropsWithChildren>;
12
+
13
+ export type ContainerType = 'default' | 'column';
14
+
15
+ export type WithLayoutProps =
16
+ | FC<ContainerProps>
17
+ | { classNames?: ClassNameValue; container?: ContainerType; scroll?: boolean };
18
+
19
+ /**
20
+ * Adds layout container.
21
+ */
22
+ export const withLayout =
23
+ (props: WithLayoutProps): Decorator =>
24
+ (Story) => {
25
+ if (typeof props === 'function') {
26
+ const Container = props;
27
+ return (
28
+ <Container>
29
+ <Story />
30
+ </Container>
31
+ );
32
+ }
33
+
34
+ const Container = layouts[(props as any).container as ContainerType] ?? layouts.default;
35
+ return (
36
+ <Container classNames={mx(props.classNames, props.scroll ? 'overflow-y-auto' : 'overflow-hidden')}>
37
+ <Story />
38
+ </Container>
39
+ );
40
+ };
41
+
42
+ const layouts: Record<ContainerType, FC<ContainerProps>> = {
43
+ default: ({ children, classNames }: ContainerProps) => (
44
+ <div role='none' className={mx(classNames)}>
45
+ {children}
46
+ </div>
47
+ ),
48
+
49
+ column: ({ children, classNames }: ContainerProps) => (
50
+ <div role='none' className='fixed inset-0 flex justify-center overflow-hidden bg-deckSurface'>
51
+ <div role='none' className={mx('flex flex-col is-[40rem] bg-baseSurface', classNames)}>
52
+ {children}
53
+ </div>
54
+ </div>
55
+ ),
56
+ };
@@ -23,7 +23,7 @@ const Panel = ({
23
23
  densities,
24
24
  className,
25
25
  }: { Story: ComponentType } & Config & { className?: string }) => (
26
- <div className={mx('flex flex-col h-full p-4 gap-4', className)}>
26
+ <div className={mx('flex flex-col bs-full p-4 gap-4', className)}>
27
27
  {elevations?.map(({ elevation, surface }) =>
28
28
  densities?.map((density) => (
29
29
  <Container key={`${elevation}--${density}`} surface={surface} elevation={elevation}>
@@ -34,7 +34,7 @@ const Panel = ({
34
34
  </div>
35
35
  );
36
36
 
37
- export const withSurfaceVariantsLayout = ({
37
+ export const withLayoutVariants = ({
38
38
  elevations = [
39
39
  { elevation: 'base', surface: 'bg-baseSurface' },
40
40
  { elevation: 'positioned', surface: 'bg-cardSurface' },
@@ -0,0 +1,31 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { type Decorator } from '@storybook/react';
6
+ import React, { memo } from 'react';
7
+
8
+ import { defaultTx } from '@dxos/react-ui-theme';
9
+
10
+ import { type ThemeMode, ThemeProvider, Tooltip } from '../../components';
11
+
12
+ /**
13
+ * Adds theme decorator (add to preview.ts)
14
+ */
15
+ export const withTheme: Decorator = (Story, context) => {
16
+ const {
17
+ globals: { theme },
18
+ parameters: { translations },
19
+ } = context;
20
+
21
+ // Prevent re-rendering of the story.
22
+ const MemoizedStory = memo(Story);
23
+
24
+ return (
25
+ <ThemeProvider tx={defaultTx} themeMode={theme as ThemeMode} resourceExtensions={translations} noCache>
26
+ <Tooltip.Provider>
27
+ <MemoizedStory />
28
+ </Tooltip.Provider>
29
+ </ThemeProvider>
30
+ );
31
+ };
@@ -0,0 +1,53 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { mx } from '@dxos/react-ui-theme';
6
+ import { type ClassNameValue } from '@dxos/react-ui-types';
7
+
8
+ /**
9
+ * Super lightweight chainable DOM builder.
10
+ */
11
+ export class Domino<T extends HTMLElement> {
12
+ static of<K extends keyof HTMLElementTagNameMap>(tag: K): Domino<HTMLElementTagNameMap[K]> {
13
+ return new Domino<HTMLElementTagNameMap[K]>(tag);
14
+ }
15
+
16
+ private readonly _el: T;
17
+ constructor(tag: keyof HTMLElementTagNameMap) {
18
+ this._el = document.createElement(tag) as T;
19
+ }
20
+ classNames(...classNames: ClassNameValue[]): this {
21
+ this._el.className = mx(classNames);
22
+ return this;
23
+ }
24
+ text(value: string): this {
25
+ this._el.textContent = value;
26
+ return this;
27
+ }
28
+ data(key: string, value: string): this {
29
+ this._el.dataset[key] = value;
30
+ return this;
31
+ }
32
+ attributes(attr: Record<string, string | undefined>): this {
33
+ Object.entries(attr)
34
+ .filter(([_, value]) => value !== undefined)
35
+ .map(([key, value]) => this._el.setAttribute(key, value!));
36
+ return this;
37
+ }
38
+ style(styles: Partial<CSSStyleDeclaration>): this {
39
+ Object.assign(this._el.style, styles);
40
+ return this;
41
+ }
42
+ children<C extends HTMLElement>(...children: Domino<C>[]): this {
43
+ children.forEach((child) => this._el.appendChild(child.build()));
44
+ return this;
45
+ }
46
+ on(event: string, handler: (e: Event) => void): this {
47
+ this._el.addEventListener(event, handler);
48
+ return this;
49
+ }
50
+ build(): T {
51
+ return this._el;
52
+ }
53
+ }
package/src/util/index.ts CHANGED
@@ -2,5 +2,7 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
+ export * from './domino';
5
6
  export * from './hasIosKeyboard';
6
- export * from './ThemedClassName';
7
+ export type * from './ThemedClassName';
8
+ export * from './usePx';