@dxos/react-ui 0.8.4-main.ead640a → 0.8.4-main.ef1bc66f44

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 (315) hide show
  1. package/dist/lib/browser/chunk-EJYV4HAH.mjs +774 -0
  2. package/dist/lib/browser/chunk-EJYV4HAH.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +3199 -64
  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 +37 -48
  7. package/dist/lib/browser/testing/index.mjs.map +4 -4
  8. package/dist/lib/node-esm/chunk-YTLZCZ2M.mjs +776 -0
  9. package/dist/lib/node-esm/chunk-YTLZCZ2M.mjs.map +7 -0
  10. package/dist/lib/node-esm/index.mjs +3199 -64
  11. package/dist/lib/node-esm/index.mjs.map +4 -4
  12. package/dist/lib/node-esm/meta.json +1 -1
  13. package/dist/lib/node-esm/testing/index.mjs +37 -48
  14. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  15. package/dist/types/src/components/AnchoredOverflow/AnchoredOverflow.d.ts +7 -0
  16. package/dist/types/src/components/AnchoredOverflow/AnchoredOverflow.d.ts.map +1 -1
  17. package/dist/types/src/components/{Buttons → Button}/Button.d.ts +1 -1
  18. package/dist/types/src/components/Button/Button.d.ts.map +1 -0
  19. package/dist/types/src/components/Button/Button.stories.d.ts.map +1 -0
  20. package/dist/types/src/components/{Buttons → Button}/IconButton.d.ts +2 -2
  21. package/dist/types/src/components/Button/IconButton.d.ts.map +1 -0
  22. package/dist/types/src/components/Button/IconButton.stories.d.ts.map +1 -0
  23. package/dist/types/src/components/Button/Toggle.d.ts.map +1 -0
  24. package/dist/types/src/components/Button/Toggle.stories.d.ts +16 -0
  25. package/dist/types/src/components/Button/Toggle.stories.d.ts.map +1 -0
  26. package/dist/types/src/components/{Buttons → Button}/ToggleGroup.d.ts +4 -4
  27. package/dist/types/src/components/Button/ToggleGroup.d.ts.map +1 -0
  28. package/dist/types/src/components/{Buttons → Button}/ToggleGroup.stories.d.ts +4 -4
  29. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts.map +1 -0
  30. package/dist/types/src/components/Button/index.d.ts.map +1 -0
  31. package/dist/types/src/components/Clipboard/CopyButton.d.ts +1 -1
  32. package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -1
  33. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts +1 -1
  34. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts.map +1 -1
  35. package/dist/types/src/components/Dialog/AlertDialog.d.ts.map +1 -0
  36. package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts.map +1 -0
  37. package/dist/types/src/components/Dialog/Dialog.d.ts +46 -0
  38. package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -0
  39. package/dist/types/src/components/{Dialogs → Dialog}/Dialog.stories.d.ts +7 -5
  40. package/dist/types/src/components/Dialog/Dialog.stories.d.ts.map +1 -0
  41. package/dist/types/src/components/Dialog/index.d.ts.map +1 -0
  42. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts +1 -1
  43. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts.map +1 -1
  44. package/dist/types/src/components/Icon/Icon.d.ts +1 -1
  45. package/dist/types/src/components/Icon/Icon.d.ts.map +1 -1
  46. package/dist/types/src/components/Icon/Icon.stories.d.ts +17 -0
  47. package/dist/types/src/components/Icon/Icon.stories.d.ts.map +1 -0
  48. package/dist/types/src/components/Input/Input.d.ts +5 -2
  49. package/dist/types/src/components/Input/Input.d.ts.map +1 -1
  50. package/dist/types/src/components/Input/Input.stories.d.ts +2 -2
  51. package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
  52. package/dist/types/src/components/{Lists → List}/List.d.ts +1 -1
  53. package/dist/types/src/components/List/List.d.ts.map +1 -0
  54. package/dist/types/src/components/List/List.stories.d.ts.map +1 -0
  55. package/dist/types/src/components/List/ListDropIndicator.d.ts.map +1 -0
  56. package/dist/types/src/components/List/Tree.d.ts.map +1 -0
  57. package/dist/types/src/components/List/Tree.stories.d.ts.map +1 -0
  58. package/dist/types/src/components/List/TreeDropIndicator.d.ts.map +1 -0
  59. package/dist/types/src/components/List/Treegrid.d.ts.map +1 -0
  60. package/dist/types/src/components/List/Treegrid.stories.d.ts.map +1 -0
  61. package/dist/types/src/components/List/index.d.ts.map +1 -0
  62. package/dist/types/src/components/Main/Main.d.ts +16 -17
  63. package/dist/types/src/components/Main/Main.d.ts.map +1 -1
  64. package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
  65. package/dist/types/src/components/{Menus → Menu}/ContextMenu.d.ts +6 -6
  66. package/dist/types/src/components/Menu/ContextMenu.d.ts.map +1 -0
  67. package/dist/types/src/components/Menu/ContextMenu.stories.d.ts.map +1 -0
  68. package/dist/types/src/components/{Menus → Menu}/DropdownMenu.d.ts +3 -4
  69. package/dist/types/src/components/Menu/DropdownMenu.d.ts.map +1 -0
  70. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts.map +1 -0
  71. package/dist/types/src/components/Menu/index.d.ts.map +1 -0
  72. package/dist/types/src/components/Message/Message.d.ts +1 -1
  73. package/dist/types/src/components/Message/Message.d.ts.map +1 -1
  74. package/dist/types/src/components/Message/Message.stories.d.ts +1 -1
  75. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
  76. package/dist/types/src/components/Popover/Popover.d.ts +1 -1
  77. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  78. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +25 -26
  79. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  80. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +46 -8
  81. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
  82. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +39 -0
  83. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -0
  84. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts +19 -0
  85. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts.map +1 -0
  86. package/dist/types/src/components/ScrollContainer/index.d.ts +2 -0
  87. package/dist/types/src/components/ScrollContainer/index.d.ts.map +1 -0
  88. package/dist/types/src/components/Select/Select.d.ts +10 -10
  89. package/dist/types/src/components/Select/Select.d.ts.map +1 -1
  90. package/dist/types/src/components/Separator/Separator.d.ts +1 -1
  91. package/dist/types/src/components/Skeleton/Skeleton.d.ts +12 -0
  92. package/dist/types/src/components/Skeleton/Skeleton.d.ts.map +1 -0
  93. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts +17 -0
  94. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts.map +1 -0
  95. package/dist/types/src/components/Skeleton/index.d.ts +2 -0
  96. package/dist/types/src/components/Skeleton/index.d.ts.map +1 -0
  97. package/dist/types/src/components/Splitter/Splitter.d.ts +26 -0
  98. package/dist/types/src/components/Splitter/Splitter.d.ts.map +1 -0
  99. package/dist/types/src/components/Splitter/Splitter.stories.d.ts +7 -0
  100. package/dist/types/src/components/Splitter/Splitter.stories.d.ts.map +1 -0
  101. package/dist/types/src/components/Splitter/index.d.ts +2 -0
  102. package/dist/types/src/components/Splitter/index.d.ts.map +1 -0
  103. package/dist/types/src/components/Tag/Tag.d.ts +1 -1
  104. package/dist/types/src/components/Tag/Tag.d.ts.map +1 -1
  105. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts +2 -2
  106. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  107. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +1 -8
  108. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
  109. package/dist/types/src/components/ThemeProvider/index.d.ts +2 -1
  110. package/dist/types/src/components/ThemeProvider/index.d.ts.map +1 -1
  111. package/dist/types/src/components/Toast/Toast.d.ts +4 -4
  112. package/dist/types/src/components/Toolbar/Toolbar.d.ts +14 -11
  113. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  114. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
  115. package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
  116. package/dist/types/src/components/index.d.ts +7 -4
  117. package/dist/types/src/components/index.d.ts.map +1 -1
  118. package/dist/types/src/exemplars/generics.stories.d.ts +17 -0
  119. package/dist/types/src/exemplars/generics.stories.d.ts.map +1 -0
  120. package/dist/types/src/exemplars/slot.stories.d.ts +14 -0
  121. package/dist/types/src/exemplars/slot.stories.d.ts.map +1 -0
  122. package/dist/types/src/exemplars/tabster.stories.d.ts +8 -0
  123. package/dist/types/src/exemplars/tabster.stories.d.ts.map +1 -0
  124. package/dist/types/src/hooks/useDensityContext.d.ts +1 -1
  125. package/dist/types/src/hooks/useDensityContext.d.ts.map +1 -1
  126. package/dist/types/src/hooks/useElevationContext.d.ts +1 -1
  127. package/dist/types/src/hooks/useElevationContext.d.ts.map +1 -1
  128. package/dist/types/src/index.d.ts +2 -1
  129. package/dist/types/src/index.d.ts.map +1 -1
  130. package/dist/types/src/playground/Controls.stories.d.ts.map +1 -1
  131. package/dist/types/src/playground/Custom.stories.d.ts.map +1 -1
  132. package/dist/types/src/primitives/Container/Container.d.ts +23 -0
  133. package/dist/types/src/primitives/Container/Container.d.ts.map +1 -0
  134. package/dist/types/src/primitives/Container/Container.stories.d.ts +11 -0
  135. package/dist/types/src/primitives/Container/Container.stories.d.ts.map +1 -0
  136. package/dist/types/src/primitives/Container/Layout.d.ts +18 -0
  137. package/dist/types/src/primitives/Container/Layout.d.ts.map +1 -0
  138. package/dist/types/src/primitives/Container/Layout.stories.d.ts +10 -0
  139. package/dist/types/src/primitives/Container/Layout.stories.d.ts.map +1 -0
  140. package/dist/types/src/primitives/Container/index.d.ts +3 -0
  141. package/dist/types/src/primitives/Container/index.d.ts.map +1 -0
  142. package/dist/types/src/primitives/Flex/Flex.d.ts +8 -0
  143. package/dist/types/src/primitives/Flex/Flex.d.ts.map +1 -0
  144. package/dist/types/src/primitives/Flex/index.d.ts +2 -0
  145. package/dist/types/src/primitives/Flex/index.d.ts.map +1 -0
  146. package/dist/types/src/primitives/index.d.ts +3 -0
  147. package/dist/types/src/primitives/index.d.ts.map +1 -0
  148. package/dist/types/src/testing/decorators/index.d.ts +1 -1
  149. package/dist/types/src/testing/decorators/index.d.ts.map +1 -1
  150. package/dist/types/src/testing/decorators/withLayout.d.ts +3 -3
  151. package/dist/types/src/testing/decorators/withLayout.d.ts.map +1 -1
  152. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts +12 -0
  153. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts.map +1 -0
  154. package/dist/types/src/testing/decorators/withTheme.d.ts +3 -2
  155. package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
  156. package/dist/types/src/util/index.d.ts +1 -2
  157. package/dist/types/src/util/index.d.ts.map +1 -1
  158. package/dist/types/tsconfig.tsbuildinfo +1 -1
  159. package/package.json +38 -30
  160. package/src/components/AnchoredOverflow/AnchoredOverflow.tsx +8 -0
  161. package/src/components/Avatars/Avatar.stories.tsx +4 -4
  162. package/src/components/Avatars/Avatar.tsx +1 -1
  163. package/src/components/Avatars/AvatarGroup.stories.tsx +2 -2
  164. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +3 -3
  165. package/src/components/{Buttons → Button}/Button.stories.tsx +3 -3
  166. package/src/components/{Buttons → Button}/Button.tsx +1 -1
  167. package/src/components/{Buttons → Button}/IconButton.stories.tsx +2 -2
  168. package/src/components/{Buttons → Button}/IconButton.tsx +19 -13
  169. package/src/components/{Buttons → Button}/Toggle.stories.tsx +7 -6
  170. package/src/components/{Buttons → Button}/ToggleGroup.stories.tsx +2 -2
  171. package/src/components/Clipboard/CopyButton.tsx +4 -4
  172. package/src/components/DensityProvider/DensityProvider.tsx +1 -1
  173. package/src/components/{Dialogs → Dialog}/AlertDialog.stories.tsx +3 -3
  174. package/src/components/Dialog/Dialog.stories.tsx +101 -0
  175. package/src/components/{Dialogs → Dialog}/Dialog.tsx +181 -40
  176. package/src/components/ElevationProvider/ElevationProvider.tsx +1 -1
  177. package/src/components/Icon/Icon.stories.tsx +113 -0
  178. package/src/components/Icon/Icon.tsx +1 -1
  179. package/src/components/Input/Input.stories.tsx +12 -11
  180. package/src/components/Input/Input.tsx +13 -5
  181. package/src/components/Link/Link.stories.tsx +2 -2
  182. package/src/components/{Lists → List}/List.stories.tsx +19 -15
  183. package/src/components/{Lists → List}/List.tsx +1 -1
  184. package/src/components/{Lists → List}/ListDropIndicator.tsx +1 -1
  185. package/src/components/{Lists → List}/Tree.stories.tsx +2 -2
  186. package/src/components/{Lists → List}/Treegrid.stories.tsx +2 -2
  187. package/src/components/Main/Main.stories.tsx +41 -20
  188. package/src/components/Main/Main.tsx +103 -56
  189. package/src/components/{Menus → Menu}/ContextMenu.stories.tsx +2 -2
  190. package/src/components/{Menus → Menu}/DropdownMenu.stories.tsx +3 -3
  191. package/src/components/{Menus → Menu}/DropdownMenu.tsx +79 -58
  192. package/src/components/Message/Message.stories.tsx +3 -3
  193. package/src/components/Message/Message.tsx +30 -5
  194. package/src/components/Popover/Popover.stories.tsx +3 -3
  195. package/src/components/Popover/Popover.tsx +52 -33
  196. package/src/components/ScrollArea/ScrollArea.stories.tsx +166 -40
  197. package/src/components/ScrollArea/ScrollArea.tsx +86 -80
  198. package/src/components/ScrollArea/index.ts +1 -1
  199. package/src/components/ScrollContainer/ScrollContainer.stories.tsx +70 -0
  200. package/src/components/ScrollContainer/ScrollContainer.tsx +238 -0
  201. package/src/components/ScrollContainer/index.ts +5 -0
  202. package/src/components/Select/Select.stories.tsx +3 -3
  203. package/src/components/Select/Select.tsx +4 -4
  204. package/src/components/Skeleton/Skeleton.stories.tsx +52 -0
  205. package/src/components/Skeleton/Skeleton.tsx +26 -0
  206. package/src/components/Skeleton/index.ts +5 -0
  207. package/src/components/Splitter/Splitter.stories.tsx +73 -0
  208. package/src/components/Splitter/Splitter.tsx +123 -0
  209. package/src/components/Splitter/index.ts +5 -0
  210. package/src/components/Status/Status.stories.tsx +2 -2
  211. package/src/components/Tag/Tag.stories.tsx +4 -4
  212. package/src/components/Tag/Tag.tsx +1 -1
  213. package/src/components/ThemeProvider/ThemeProvider.tsx +2 -3
  214. package/src/components/ThemeProvider/TranslationsProvider.tsx +1 -16
  215. package/src/components/ThemeProvider/index.ts +3 -3
  216. package/src/components/Toast/Toast.stories.tsx +3 -3
  217. package/src/components/Toolbar/Toolbar.stories.tsx +4 -6
  218. package/src/components/Toolbar/Toolbar.tsx +32 -12
  219. package/src/components/Tooltip/Tooltip.stories.tsx +3 -3
  220. package/src/components/Tooltip/Tooltip.tsx +22 -20
  221. package/src/components/index.ts +7 -4
  222. package/src/exemplars/generics.stories.tsx +44 -0
  223. package/src/exemplars/slot.stories.tsx +108 -0
  224. package/src/exemplars/tabster.stories.tsx +127 -0
  225. package/src/hooks/useDensityContext.ts +1 -1
  226. package/src/hooks/useElevationContext.ts +1 -1
  227. package/src/index.ts +2 -1
  228. package/src/playground/Controls.stories.tsx +3 -4
  229. package/src/playground/Custom.stories.tsx +8 -10
  230. package/src/playground/Typography.stories.tsx +2 -2
  231. package/src/primitives/Container/Container.stories.tsx +67 -0
  232. package/src/primitives/Container/Container.tsx +82 -0
  233. package/src/primitives/Container/Layout.stories.tsx +57 -0
  234. package/src/primitives/Container/Layout.tsx +61 -0
  235. package/src/primitives/Container/index.ts +6 -0
  236. package/src/primitives/Flex/Flex.tsx +26 -0
  237. package/src/primitives/Flex/index.ts +5 -0
  238. package/src/primitives/index.ts +6 -0
  239. package/src/testing/decorators/index.ts +1 -1
  240. package/src/testing/decorators/withLayout.tsx +22 -15
  241. package/src/testing/decorators/{withSurfaceVariantsLayout.tsx → withLayoutVariants.tsx} +5 -5
  242. package/src/testing/decorators/withTheme.tsx +21 -18
  243. package/src/util/index.ts +2 -2
  244. package/dist/lib/browser/chunk-24AWTFTZ.mjs +0 -4521
  245. package/dist/lib/browser/chunk-24AWTFTZ.mjs.map +0 -7
  246. package/dist/lib/node-esm/chunk-MPRFBTTQ.mjs +0 -4523
  247. package/dist/lib/node-esm/chunk-MPRFBTTQ.mjs.map +0 -7
  248. package/dist/types/src/components/Buttons/Button.d.ts.map +0 -1
  249. package/dist/types/src/components/Buttons/Button.stories.d.ts.map +0 -1
  250. package/dist/types/src/components/Buttons/IconButton.d.ts.map +0 -1
  251. package/dist/types/src/components/Buttons/IconButton.stories.d.ts.map +0 -1
  252. package/dist/types/src/components/Buttons/Toggle.d.ts.map +0 -1
  253. package/dist/types/src/components/Buttons/Toggle.stories.d.ts +0 -13
  254. package/dist/types/src/components/Buttons/Toggle.stories.d.ts.map +0 -1
  255. package/dist/types/src/components/Buttons/ToggleGroup.d.ts.map +0 -1
  256. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts.map +0 -1
  257. package/dist/types/src/components/Buttons/index.d.ts.map +0 -1
  258. package/dist/types/src/components/Dialogs/AlertDialog.d.ts.map +0 -1
  259. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts.map +0 -1
  260. package/dist/types/src/components/Dialogs/Dialog.d.ts +0 -31
  261. package/dist/types/src/components/Dialogs/Dialog.d.ts.map +0 -1
  262. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts.map +0 -1
  263. package/dist/types/src/components/Dialogs/index.d.ts.map +0 -1
  264. package/dist/types/src/components/Lists/List.d.ts.map +0 -1
  265. package/dist/types/src/components/Lists/List.stories.d.ts.map +0 -1
  266. package/dist/types/src/components/Lists/ListDropIndicator.d.ts.map +0 -1
  267. package/dist/types/src/components/Lists/Tree.d.ts.map +0 -1
  268. package/dist/types/src/components/Lists/Tree.stories.d.ts.map +0 -1
  269. package/dist/types/src/components/Lists/TreeDropIndicator.d.ts.map +0 -1
  270. package/dist/types/src/components/Lists/Treegrid.d.ts.map +0 -1
  271. package/dist/types/src/components/Lists/Treegrid.stories.d.ts.map +0 -1
  272. package/dist/types/src/components/Lists/index.d.ts.map +0 -1
  273. package/dist/types/src/components/Menus/ContextMenu.d.ts.map +0 -1
  274. package/dist/types/src/components/Menus/ContextMenu.stories.d.ts.map +0 -1
  275. package/dist/types/src/components/Menus/DropdownMenu.d.ts.map +0 -1
  276. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts.map +0 -1
  277. package/dist/types/src/components/Menus/index.d.ts.map +0 -1
  278. package/dist/types/src/testing/decorators/withSurfaceVariantsLayout.d.ts +0 -12
  279. package/dist/types/src/testing/decorators/withSurfaceVariantsLayout.d.ts.map +0 -1
  280. package/dist/types/src/util/ThemedClassName.d.ts +0 -5
  281. package/dist/types/src/util/ThemedClassName.d.ts.map +0 -1
  282. package/dist/types/src/util/domino.d.ts +0 -18
  283. package/dist/types/src/util/domino.d.ts.map +0 -1
  284. package/src/components/Dialogs/Dialog.stories.tsx +0 -67
  285. package/src/util/ThemedClassName.ts +0 -7
  286. package/src/util/domino.ts +0 -53
  287. package/dist/types/src/components/{Buttons → Button}/Button.stories.d.ts +0 -0
  288. package/dist/types/src/components/{Buttons → Button}/IconButton.stories.d.ts +0 -0
  289. package/dist/types/src/components/{Buttons → Button}/Toggle.d.ts +0 -0
  290. package/dist/types/src/components/{Buttons → Button}/index.d.ts +0 -0
  291. package/dist/types/src/components/{Dialogs → Dialog}/AlertDialog.d.ts +0 -0
  292. package/dist/types/src/components/{Dialogs → Dialog}/AlertDialog.stories.d.ts +0 -0
  293. package/dist/types/src/components/{Dialogs → Dialog}/index.d.ts +0 -0
  294. package/dist/types/src/components/{Lists → List}/List.stories.d.ts +0 -0
  295. package/dist/types/src/components/{Lists → List}/ListDropIndicator.d.ts +0 -0
  296. package/dist/types/src/components/{Lists → List}/Tree.d.ts +0 -0
  297. package/dist/types/src/components/{Lists → List}/Tree.stories.d.ts +0 -0
  298. package/dist/types/src/components/{Lists → List}/TreeDropIndicator.d.ts +0 -0
  299. package/dist/types/src/components/{Lists → List}/Treegrid.d.ts +0 -0
  300. package/dist/types/src/components/{Lists → List}/Treegrid.stories.d.ts +0 -0
  301. package/dist/types/src/components/{Lists → List}/index.d.ts +0 -0
  302. package/dist/types/src/components/{Menus → Menu}/ContextMenu.stories.d.ts +0 -0
  303. package/dist/types/src/components/{Menus → Menu}/DropdownMenu.stories.d.ts +0 -0
  304. package/dist/types/src/components/{Menus → Menu}/index.d.ts +0 -0
  305. package/src/components/{Buttons → Button}/Toggle.tsx +0 -0
  306. package/src/components/{Buttons → Button}/ToggleGroup.tsx +0 -0
  307. package/src/components/{Buttons → Button}/index.ts +0 -0
  308. package/src/components/{Dialogs → Dialog}/AlertDialog.tsx +0 -0
  309. package/src/components/{Dialogs → Dialog}/index.ts +0 -0
  310. package/src/components/{Lists → List}/Tree.tsx +0 -0
  311. package/src/components/{Lists → List}/TreeDropIndicator.tsx +0 -0
  312. package/src/components/{Lists → List}/Treegrid.tsx +1 -1
  313. /package/src/components/{Lists → List}/index.ts +0 -0
  314. /package/src/components/{Menus → Menu}/ContextMenu.tsx +0 -0
  315. /package/src/components/{Menus → Menu}/index.ts +0 -0
@@ -3,7 +3,7 @@
3
3
  //
4
4
 
5
5
  import { type Locale, enUS as dtLocaleEnUs } from 'date-fns/locale';
6
- import i18Next, { type Resource, type TFunction } from 'i18next';
6
+ import i18Next, { type Resource } from 'i18next';
7
7
  import React, { type ReactNode, Suspense, createContext, useContext, useEffect, useState } from 'react';
8
8
  import { initReactI18next, useTranslation as useI18NextTranslation } from 'react-i18next';
9
9
 
@@ -11,21 +11,6 @@ const initialLng = 'en-US';
11
11
  const initialNs = 'dxos-common';
12
12
  const initialDtLocale = dtLocaleEnUs;
13
13
 
14
- // TODO(thure): `Parameters<TFunction>` causes typechecking issues because `TFunction` has so many signatures.
15
- export type Label = string | [string, { ns: string; count?: number; defaultValue?: string }];
16
-
17
- export const isLabel = (o: any): o is Label =>
18
- typeof o === 'string' ||
19
- (Array.isArray(o) &&
20
- o.length === 2 &&
21
- typeof o[0] === 'string' &&
22
- !!o[1] &&
23
- typeof o[1] === 'object' &&
24
- 'ns' in o[1] &&
25
- typeof o[1].ns === 'string');
26
-
27
- export const toLocalizedString = (label: Label, t: TFunction) => (Array.isArray(label) ? t(...label) : label);
28
-
29
14
  export const resources = {
30
15
  [initialLng]: {
31
16
  [initialNs]: {
@@ -2,7 +2,7 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- export * from './ThemeProvider';
6
- export { type Label, isLabel, toLocalizedString, useTranslation } from './TranslationsProvider';
5
+ export { type Label, isLabel, toLocalizedString } from '@dxos/ui-types';
7
6
 
8
- // TODO(burdon): Use `@internal` with barrel exports (rather than picking individual exports?)
7
+ export * from './ThemeProvider';
8
+ export { useTranslation } from './TranslationsProvider';
@@ -6,7 +6,7 @@ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
6
  import React, { type ReactNode, useState } from 'react';
7
7
 
8
8
  import { withTheme } from '../../testing';
9
- import { Button } from '../Buttons';
9
+ import { Button } from '../Button';
10
10
 
11
11
  import { Toast } from './Toast';
12
12
 
@@ -45,10 +45,10 @@ const DefaultStory = ({ title, description, actionTriggers, openTrigger, closeTr
45
45
  };
46
46
 
47
47
  const meta = {
48
- title: 'ui/react-ui-core/Toast',
48
+ title: 'ui/react-ui-core/components/Toast',
49
49
  component: Toast as any,
50
50
  render: DefaultStory,
51
- decorators: [withTheme],
51
+ decorators: [withTheme()],
52
52
  } satisfies Meta<typeof DefaultStory>;
53
53
 
54
54
  export default meta;
@@ -6,7 +6,7 @@ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
6
  import React from 'react';
7
7
 
8
8
  import { withTheme } from '../../testing';
9
- import { Toggle } from '../Buttons';
9
+ import { Toggle } from '../Button';
10
10
  import { Icon } from '../Icon';
11
11
  import { Select } from '../Select';
12
12
 
@@ -63,18 +63,16 @@ const DefaultStory = (props: StorybookToolbarProps) => {
63
63
  </Toolbar.Button>
64
64
  <Toolbar.Separator />
65
65
  <Toolbar.Button>Test</Toolbar.Button>
66
- <Toolbar.Button>
67
- <Icon icon='ph--arrow-clockwise--regular' />
68
- </Toolbar.Button>
66
+ <Toolbar.IconButton icon='ph--arrow-clockwise--regular' label='Refresh' iconOnly />
69
67
  </Toolbar.Root>
70
68
  );
71
69
  };
72
70
 
73
71
  const meta = {
74
- title: 'ui/react-ui-core/Toolbar',
72
+ title: 'ui/react-ui-core/components/Toolbar',
75
73
  component: Toolbar as any,
76
74
  render: DefaultStory,
77
- decorators: [withTheme],
75
+ decorators: [withTheme()],
78
76
  } satisfies Meta<typeof DefaultStory>;
79
77
 
80
78
  export default meta;
@@ -6,6 +6,8 @@ import type { ToggleGroupItemProps as ToggleGroupItemPrimitiveProps } from '@rad
6
6
  import * as ToolbarPrimitive from '@radix-ui/react-toolbar';
7
7
  import React, { Fragment, forwardRef } from 'react';
8
8
 
9
+ import { type ToolbarStyleProps } from '@dxos/ui-theme';
10
+
9
11
  import { useThemeContext } from '../../hooks';
10
12
  import { type ThemedClassName } from '../../util';
11
13
  import {
@@ -18,30 +20,37 @@ import {
18
20
  Toggle,
19
21
  type ToggleGroupItemProps,
20
22
  type ToggleProps,
21
- } from '../Buttons';
23
+ } from '../Button';
22
24
  import { Link, type LinkProps } from '../Link';
23
25
  import { Separator, type SeparatorProps } from '../Separator';
24
26
 
25
27
  type ToolbarRootProps = ThemedClassName<
26
- ToolbarPrimitive.ToolbarProps & {
27
- layoutManaged?: boolean;
28
- textBlockWidth?: boolean;
29
- }
28
+ ToolbarPrimitive.ToolbarProps &
29
+ ToolbarStyleProps & {
30
+ textBlockWidth?: boolean;
31
+ }
30
32
  >;
31
33
 
34
+ // TODO(burdon): Implement asChild property.
32
35
  const ToolbarRoot = forwardRef<HTMLDivElement, ToolbarRootProps>(
33
- ({ classNames, children, layoutManaged, textBlockWidth: wrapContents, ...props }, forwardedRef) => {
36
+ (
37
+ { classNames, children, density, disabled, layoutManaged, textBlockWidth: textBlockWidthProp, ...props },
38
+ forwardedRef,
39
+ ) => {
34
40
  const { tx } = useThemeContext();
35
- const InnerRoot = wrapContents ? 'div' : Fragment;
36
- const innerRootProps = wrapContents
37
- ? { role: 'none', className: tx('toolbar.inner', 'toolbar', { layoutManaged }, classNames) }
41
+ const InnerRoot = textBlockWidthProp ? 'div' : Fragment;
42
+ const innerRootProps = textBlockWidthProp
43
+ ? {
44
+ role: 'none',
45
+ className: tx('toolbar.inner', 'toolbar', { layoutManaged }, classNames),
46
+ }
38
47
  : {};
39
48
 
40
49
  return (
41
50
  <ToolbarPrimitive.Root
42
51
  {...props}
43
52
  data-arrow-keys={props.orientation === 'vertical' ? 'up down' : 'left right'}
44
- className={tx('toolbar.root', 'toolbar', { layoutManaged }, classNames)}
53
+ className={tx('toolbar.root', 'toolbar', { density, disabled, layoutManaged }, classNames)}
45
54
  ref={forwardedRef}
46
55
  >
47
56
  <InnerRoot {...innerRootProps}>{children}</InnerRoot>
@@ -65,7 +74,7 @@ type ToolbarIconButtonProps = IconButtonProps;
65
74
  const ToolbarIconButton = forwardRef<HTMLButtonElement, ToolbarIconButtonProps>((props, forwardedRef) => {
66
75
  return (
67
76
  <ToolbarPrimitive.Button asChild>
68
- <IconButton {...props} ref={forwardedRef} />
77
+ <IconButton {...props} noTooltip ref={forwardedRef} />
69
78
  </ToolbarPrimitive.Button>
70
79
  );
71
80
  });
@@ -124,7 +133,18 @@ const ToolbarToggleGroupIconItem = forwardRef<HTMLButtonElement, ToolbarToggleGr
124
133
  ({ variant, density, elevation, classNames, icon, label, iconOnly, ...props }, forwardedRef) => {
125
134
  return (
126
135
  <ToolbarPrimitive.ToolbarToggleItem {...props} asChild>
127
- <IconButton {...{ variant, density, elevation, classNames, icon, label, iconOnly }} ref={forwardedRef} />
136
+ <IconButton
137
+ {...{
138
+ variant,
139
+ density,
140
+ elevation,
141
+ classNames,
142
+ icon,
143
+ label,
144
+ iconOnly,
145
+ }}
146
+ ref={forwardedRef}
147
+ />
128
148
  </ToolbarPrimitive.ToolbarToggleItem>
129
149
  );
130
150
  },
@@ -8,7 +8,7 @@ import React from 'react';
8
8
  import { faker } from '@dxos/random';
9
9
 
10
10
  import { withTheme } from '../../testing';
11
- import { Button } from '../Buttons';
11
+ import { Button } from '../Button';
12
12
 
13
13
  import { Tooltip } from './Tooltip';
14
14
 
@@ -30,10 +30,10 @@ const DefaultStory = ({ tooltips, defaultOpen }: StoryProps) => (
30
30
  );
31
31
 
32
32
  const meta = {
33
- title: 'ui/react-ui-core/Tooltip',
33
+ title: 'ui/react-ui-core/components/Tooltip',
34
34
  component: Tooltip as any,
35
35
  render: DefaultStory,
36
- decorators: [withTheme],
36
+ decorators: [withTheme()],
37
37
  } satisfies Meta<typeof DefaultStory>;
38
38
 
39
39
  export default meta;
@@ -41,9 +41,9 @@ type TooltipScopedProps<P = {}> = P & { __scopeTooltip?: Scope };
41
41
  const [createTooltipContext, createTooltipScope] = createContextScope('Tooltip', [createPopperScope]);
42
42
  const usePopperScope = createPopperScope();
43
43
 
44
- /* -------------------------------------------------------------------------------------------------
45
- * Tooltip
46
- * ----------------------------------------------------------------------------------------------- */
44
+ //
45
+ // Tooltip
46
+ //
47
47
 
48
48
  const DEFAULT_DELAY_DURATION = 700;
49
49
  const TOOLTIP_OPEN = 'tooltip.open';
@@ -228,9 +228,9 @@ const TooltipProvider: FC<TooltipProviderProps> = (props: TooltipScopedProps<Too
228
228
 
229
229
  TooltipProvider.displayName = TOOLTIP_NAME;
230
230
 
231
- /* -------------------------------------------------------------------------------------------------
232
- * TooltipVirtualTrigger
233
- * ----------------------------------------------------------------------------------------------- */
231
+ //
232
+ // TooltipVirtualTrigger
233
+ //
234
234
 
235
235
  const TooltipVirtualTrigger = ({
236
236
  virtualRef,
@@ -240,9 +240,9 @@ const TooltipVirtualTrigger = ({
240
240
  return <PopperPrimitive.Anchor asChild {...popperScope} virtualRef={virtualRef} />;
241
241
  };
242
242
 
243
- /* -------------------------------------------------------------------------------------------------
244
- * TooltipTrigger
245
- * ----------------------------------------------------------------------------------------------- */
243
+ //
244
+ // TooltipTrigger
245
+ //
246
246
 
247
247
  const TRIGGER_NAME = 'TooltipTrigger';
248
248
 
@@ -322,9 +322,9 @@ const TooltipTrigger = forwardRef<TooltipTriggerElement, TooltipTriggerProps>(
322
322
 
323
323
  TooltipTrigger.displayName = TRIGGER_NAME;
324
324
 
325
- /* -------------------------------------------------------------------------------------------------
326
- * TooltipPortal
327
- * ----------------------------------------------------------------------------------------------- */
325
+ //
326
+ // TooltipPortal
327
+ //
328
328
 
329
329
  const PORTAL_NAME = 'TooltipPortal';
330
330
 
@@ -363,9 +363,9 @@ const TooltipPortal: FC<TooltipPortalProps> = (props: TooltipScopedProps<Tooltip
363
363
 
364
364
  TooltipPortal.displayName = PORTAL_NAME;
365
365
 
366
- /* -------------------------------------------------------------------------------------------------
367
- * TooltipContent
368
- * ----------------------------------------------------------------------------------------------- */
366
+ //
367
+ // TooltipContent
368
+ //
369
369
 
370
370
  const CONTENT_NAME = 'TooltipContent';
371
371
 
@@ -574,9 +574,9 @@ const TooltipContentImpl = forwardRef<TooltipContentImplElement, TooltipContentI
574
574
 
575
575
  TooltipContent.displayName = CONTENT_NAME;
576
576
 
577
- /* -------------------------------------------------------------------------------------------------
578
- * TooltipArrow
579
- * ----------------------------------------------------------------------------------------------- */
577
+ //
578
+ // TooltipArrow
579
+ //
580
580
 
581
581
  const ARROW_NAME = 'TooltipArrow';
582
582
 
@@ -599,8 +599,6 @@ const TooltipArrow = forwardRef<TooltipArrowElement, TooltipArrowProps>(
599
599
 
600
600
  TooltipArrow.displayName = ARROW_NAME;
601
601
 
602
- /* ----------------------------------------------------------------------------------------------- */
603
-
604
602
  type TooltipSide = NonNullable<TooltipContentProps['side']>;
605
603
 
606
604
  const getExitSideFromRect = (point: Point, rect: DOMRect): TooltipSide => {
@@ -755,6 +753,10 @@ const getHullPresorted = <P extends Point>(points: Readonly<Array<P>>): Array<P>
755
753
  }
756
754
  };
757
755
 
756
+ //
757
+ // Tooltip
758
+ //
759
+
758
760
  export const Tooltip = {
759
761
  Provider: TooltipProvider,
760
762
  Trigger: TooltipTrigger,
@@ -5,21 +5,24 @@
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
- export * from './Menus';
16
+ export * from './Menu';
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';
24
+ export * from './Skeleton';
25
+ export * from './Splitter';
23
26
  export * from './Tag';
24
27
  export * from './Toast';
25
28
  export * from './Toolbar';
@@ -0,0 +1,44 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
+ import React, { type ReactElement, type Ref, forwardRef } from 'react';
7
+
8
+ import { type SlottableProps } from '@dxos/ui-types';
9
+
10
+ import { withTheme } from '../testing';
11
+
12
+ const ComponentInner = forwardRef<HTMLDivElement, ComponentProps>(({ children, ...props }, forwardedRef) => {
13
+ return (
14
+ <div {...props} ref={forwardedRef}>
15
+ {children}
16
+ </div>
17
+ );
18
+ });
19
+
20
+ ComponentInner.displayName = 'Component';
21
+
22
+ /**
23
+ * Generic component pattern.
24
+ */
25
+ type ComponentProps<P extends HTMLElement = any> = SlottableProps<P>;
26
+
27
+ const Component = ComponentInner as <P extends HTMLElement>(
28
+ props: SlottableProps<P> & { ref?: Ref<P> },
29
+ ) => ReactElement;
30
+
31
+ const meta = {
32
+ title: 'ui/react-ui-core/exemplars/generics',
33
+ component: Component,
34
+ decorators: [withTheme()],
35
+ parameters: {
36
+ layout: 'centered',
37
+ },
38
+ } satisfies Meta;
39
+
40
+ export default meta;
41
+
42
+ type Story = StoryObj<typeof meta>;
43
+
44
+ export const Single: Story = {};
@@ -0,0 +1,108 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { Slot } from '@radix-ui/react-slot';
6
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
7
+ import React, { type PropsWithChildren, forwardRef } from 'react';
8
+
9
+ import { mx } from '@dxos/ui-theme';
10
+ import { type SlottableClassName, type SlottableProps, type ThemedClassName } from '@dxos/ui-types';
11
+
12
+ import { withTheme } from '../testing';
13
+
14
+ /**
15
+ * Composition
16
+ *
17
+ * All Radix primitive parts that render a DOM element accept an asChild prop.
18
+ * When asChild is set to true, Radix will not render a default DOM element, instead cloning the part's child and passing it the props and behavior required to make it functional.
19
+ * https://www.radix-ui.com/primitives/docs/guides/composition
20
+ */
21
+
22
+ // Outer primitive (like Tooltip.Trigger or Focus.Group).
23
+ const Outer = forwardRef<HTMLDivElement, SlottableProps<HTMLDivElement>>(
24
+ ({ children, className, classNames, asChild, ...props }, forwardedRef) => {
25
+ const Root = asChild ? Slot : 'div';
26
+ return (
27
+ <Root {...props} className={mx(className, classNames)} data-outer='true' ref={forwardedRef}>
28
+ {children}
29
+ </Root>
30
+ );
31
+ },
32
+ );
33
+
34
+ // Middle primitive (like Dialog.Trigger or Mosaic.Cell).
35
+ const Middle = forwardRef<HTMLDivElement, SlottableProps<HTMLDivElement>>(
36
+ ({ children, className, classNames, asChild, ...props }, forwardedRef) => {
37
+ const Root = asChild ? Slot : 'div';
38
+ return (
39
+ <Root {...props} className={mx(className, classNames)} data-middle='true' ref={forwardedRef}>
40
+ {children}
41
+ </Root>
42
+ );
43
+ },
44
+ );
45
+
46
+ // Leaf component (like Card.Root).
47
+ const Leaf = forwardRef<HTMLButtonElement, SlottableClassName<PropsWithChildren>>(
48
+ ({ className, classNames, children, ...props }, forwardedRef) => {
49
+ return (
50
+ <button {...props} className={mx('p-2 outline-none border rounded', className, classNames)} ref={forwardedRef}>
51
+ {children}
52
+ </button>
53
+ );
54
+ },
55
+ );
56
+
57
+ // Test 1: Single asChild.
58
+ const TestSingle = ({ classNames, ...props }: ThemedClassName<{ role?: string }>) => (
59
+ <Outer asChild {...props} className={mx('p-2', classNames)}>
60
+ <Leaf>Single asChild</Leaf>
61
+ </Outer>
62
+ );
63
+
64
+ // Test 2: Nested asChild.
65
+ const TestNested = ({ classNames, ...props }: ThemedClassName<{ role?: string }>) => {
66
+ return (
67
+ <Outer asChild {...props} className={mx('p-2', classNames)}>
68
+ <Middle asChild>
69
+ <Leaf>Nested asChild</Leaf>
70
+ </Middle>
71
+ </Outer>
72
+ );
73
+ };
74
+
75
+ // Test 3: Complex.
76
+ const TestInner = ({ classNames, ...props }: ThemedClassName<{ role?: string }>) => (
77
+ <Outer asChild {...props} className={mx('p-2', classNames)}>
78
+ <Middle asChild>
79
+ <Leaf>
80
+ <div role='none'>Leaf</div>
81
+ </Leaf>
82
+ </Middle>
83
+ </Outer>
84
+ );
85
+
86
+ const meta = {
87
+ title: 'ui/react-ui-core/exemplars/slot',
88
+ decorators: [withTheme()],
89
+ parameters: {
90
+ layout: 'centered',
91
+ },
92
+ } satisfies Meta;
93
+
94
+ export default meta;
95
+
96
+ type Story = StoryObj<typeof meta>;
97
+
98
+ export const Single: Story = {
99
+ render: () => <TestSingle role='listitem' classNames='border-red-500' />,
100
+ };
101
+
102
+ export const Nested: Story = {
103
+ render: () => <TestNested role='listitem' classNames='border-green-500' />,
104
+ };
105
+
106
+ export const Inner: Story = {
107
+ render: () => <TestInner role='listitem' classNames='border-blue-500' />,
108
+ };
@@ -0,0 +1,127 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import {
6
+ useArrowNavigationGroup,
7
+ useFocusFinders,
8
+ useFocusableGroup,
9
+ useMergedTabsterAttributes_unstable,
10
+ } from '@fluentui/react-tabster';
11
+ import { type Decorator, type Meta, type StoryObj } from '@storybook/react-vite';
12
+ import React, { forwardRef, useEffect, useMemo, useRef } from 'react';
13
+ import { createTabster, disposeTabster } from 'tabster';
14
+
15
+ import { Input, ScrollArea } from '@dxos/react-ui';
16
+ import { withLayout, withTheme } from '@dxos/react-ui/testing';
17
+ import { mx } from '@dxos/ui-theme';
18
+
19
+ // TODO(burdon): Factor out styles (incl. tabster debugging).
20
+ // TODO(burdon): Implement horizontal movement between columns when column is selected.
21
+ // TODO(burdon): Prevent tab out of app.
22
+
23
+ const border =
24
+ 'rounded-sm outline-none border border-subduedSeparator focus:border-primary-500 focus-within:border-rose-500';
25
+
26
+ const Board = forwardRef<HTMLDivElement, { columns: string[][] }>(({ columns }, ref) => {
27
+ const arrowNavigationAttrs = useArrowNavigationGroup({ axis: 'horizontal', memorizeCurrent: true, tabbable: true });
28
+
29
+ return (
30
+ <div ref={ref} tabIndex={0} {...arrowNavigationAttrs} className='flex bs-full is-full overflow-hidden'>
31
+ <div className={mx('flex bs-full overflow-x-auto p-4 gap-4')}>
32
+ {columns.map((column) => (
33
+ <Column key={column[0]} items={column} />
34
+ ))}
35
+ </div>
36
+ </div>
37
+ );
38
+ });
39
+
40
+ const Column = forwardRef<HTMLDivElement, { items: string[] }>(({ items }, ref) => {
41
+ const focusableGroupAttrs = useFocusableGroup({ tabBehavior: 'limited' });
42
+ const arrowNavigationAttrs = useArrowNavigationGroup({ axis: 'vertical', memorizeCurrent: true });
43
+ const tabsterAttrs = useMergedTabsterAttributes_unstable(focusableGroupAttrs, arrowNavigationAttrs);
44
+
45
+ return (
46
+ <ScrollArea.Root tabIndex={0} orientation='vertical' classNames={mx('shrink-0 bs-full is-[25rem]', border)}>
47
+ <ScrollArea.Viewport {...tabsterAttrs} classNames='p-4 gap-4' ref={ref}>
48
+ {items.map((item) => (
49
+ <Item key={item} value={item} />
50
+ ))}
51
+ </ScrollArea.Viewport>
52
+ </ScrollArea.Root>
53
+ );
54
+ });
55
+
56
+ const Item = forwardRef<HTMLDivElement, { value: string }>(({ value }, ref) => {
57
+ const focusableGroupAttrs = useFocusableGroup();
58
+
59
+ return (
60
+ <div
61
+ ref={ref}
62
+ tabIndex={0}
63
+ {...focusableGroupAttrs}
64
+ className={mx('flex shrink-0 is-full gap-4 p-4 items-center', border)}
65
+ >
66
+ <Input.Root>
67
+ <Input.Checkbox />
68
+ </Input.Root>
69
+ <Input.Root>
70
+ <Input.TextInput defaultValue={value} />
71
+ </Input.Root>
72
+ </div>
73
+ );
74
+ });
75
+
76
+ const DefaultStory = () => {
77
+ const columns = useMemo(() => {
78
+ return [['A1', 'A2', 'A3'], ['B1'], ['C1', 'C2', 'C3', 'C4', 'C5', 'C6'], ['D1', 'D2']];
79
+ }, []);
80
+
81
+ const ref = useRef<HTMLDivElement>(null);
82
+ const { findFirstFocusable } = useFocusFinders();
83
+ useEffect(() => {
84
+ if (ref.current) {
85
+ findFirstFocusable(ref.current)?.focus();
86
+ }
87
+ }, []);
88
+
89
+ return <Board columns={columns} ref={ref} />;
90
+ };
91
+
92
+ // TODO(burdon): This doesn't seem to be necessary or recongized; memoization doesn't work.
93
+ const withTabster: Decorator = (Story) => {
94
+ useEffect(() => {
95
+ const tabster = createTabster(window, {
96
+ autoRoot: {},
97
+ // TODO(burdon): Not called.
98
+ // checkUncontrolledCompletely: (el) => {
99
+ // console.log(el);
100
+ // return true;
101
+ // },
102
+ });
103
+
104
+ return () => {
105
+ disposeTabster(tabster);
106
+ };
107
+ }, []);
108
+
109
+ return <Story />;
110
+ };
111
+
112
+ const meta: Meta<typeof DefaultStory> = {
113
+ title: 'ui/react-ui-core/exemplars/tabster',
114
+ component: DefaultStory,
115
+ decorators: [withTheme(), withLayout({ layout: 'fullscreen' }), withTabster],
116
+ parameters: {
117
+ layout: 'fullscreen',
118
+ },
119
+ };
120
+
121
+ export default meta;
122
+
123
+ type Story = StoryObj<typeof meta>;
124
+
125
+ export const Default: Story = {
126
+ args: {},
127
+ };
@@ -4,7 +4,7 @@
4
4
 
5
5
  import { useContext } from 'react';
6
6
 
7
- import { type Density } from '@dxos/react-ui-types';
7
+ import { type Density } from '@dxos/ui-types';
8
8
 
9
9
  import { DensityContext } from '../components';
10
10
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  import { useContext } from 'react';
6
6
 
7
- import { type Elevation } from '@dxos/react-ui-types';
7
+ import { type Elevation } from '@dxos/ui-types';
8
8
 
9
9
  import { ElevationContext } from '../components';
10
10
 
package/src/index.ts CHANGED
@@ -6,8 +6,9 @@ export { type Resource, type TFunction } from 'i18next';
6
6
  export { Trans } from 'react-i18next';
7
7
 
8
8
  export * from '@dxos/react-hooks';
9
- export * from '@dxos/react-ui-types';
9
+ export * from '@dxos/ui-types';
10
10
 
11
11
  export * from './components';
12
12
  export * from './hooks';
13
+ export * from './primitives';
13
14
  export * from './util';
@@ -6,8 +6,7 @@ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
6
  import React, { useState } from 'react';
7
7
 
8
8
  import { Icon, Input, Select, Toggle, Toolbar } from '../components';
9
- import { withTheme } from '../testing';
10
- import { withSurfaceVariantsLayout } from '../testing';
9
+ import { withLayoutVariants, withTheme } from '../testing';
11
10
 
12
11
  const DefaultStory = () => {
13
12
  const [checked, setChecked] = useState<boolean>(false);
@@ -82,9 +81,9 @@ const DefaultStory = () => {
82
81
  };
83
82
 
84
83
  const meta = {
85
- title: 'ui/react-ui-core/Playground/Controls',
84
+ title: 'ui/react-ui-core/playground/Controls',
86
85
  render: DefaultStory,
87
- decorators: [withTheme, withSurfaceVariantsLayout()],
86
+ decorators: [withTheme(), withLayoutVariants()],
88
87
  } satisfies Meta<typeof Icon>;
89
88
 
90
89
  export default meta;