@dxos/react-ui 0.8.4-main.3a94e84 → 0.8.4-main.3eb6e50203

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 (371) hide show
  1. package/dist/lib/browser/chunk-6DTBPJE4.mjs +774 -0
  2. package/dist/lib/browser/chunk-6DTBPJE4.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +3202 -59
  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 +66 -49
  7. package/dist/lib/browser/testing/index.mjs.map +4 -4
  8. package/dist/lib/node-esm/chunk-JKHQSGNU.mjs +776 -0
  9. package/dist/lib/node-esm/chunk-JKHQSGNU.mjs.map +7 -0
  10. package/dist/lib/node-esm/index.mjs +3202 -59
  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 +66 -49
  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/Avatars/Avatar.d.ts +1 -1
  18. package/dist/types/src/components/Avatars/Avatar.d.ts.map +1 -1
  19. package/dist/types/src/components/Avatars/Avatar.stories.d.ts +5 -31
  20. package/dist/types/src/components/Avatars/Avatar.stories.d.ts.map +1 -1
  21. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts +5 -11
  22. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts.map +1 -1
  23. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts +1 -1
  24. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
  25. package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts +8 -20
  26. package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts.map +1 -1
  27. package/dist/types/src/components/{Buttons → Button}/Button.d.ts +2 -2
  28. package/dist/types/src/components/Button/Button.d.ts.map +1 -0
  29. package/dist/types/src/components/Button/Button.stories.d.ts +17 -0
  30. package/dist/types/src/components/Button/Button.stories.d.ts.map +1 -0
  31. package/dist/types/src/components/{Buttons → Button}/IconButton.d.ts +4 -4
  32. package/dist/types/src/components/Button/IconButton.d.ts.map +1 -0
  33. package/dist/types/src/components/Button/IconButton.stories.d.ts +13 -0
  34. package/dist/types/src/components/Button/IconButton.stories.d.ts.map +1 -0
  35. package/dist/types/src/components/Button/Toggle.d.ts.map +1 -0
  36. package/dist/types/src/components/Button/Toggle.stories.d.ts +16 -0
  37. package/dist/types/src/components/Button/Toggle.stories.d.ts.map +1 -0
  38. package/dist/types/src/components/Button/ToggleGroup.d.ts +27 -0
  39. package/dist/types/src/components/Button/ToggleGroup.d.ts.map +1 -0
  40. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts +27 -0
  41. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts.map +1 -0
  42. package/dist/types/src/components/Button/index.d.ts.map +1 -0
  43. package/dist/types/src/components/Clipboard/ClipboardProvider.d.ts.map +1 -1
  44. package/dist/types/src/components/Clipboard/CopyButton.d.ts +1 -1
  45. package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -1
  46. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts +1 -1
  47. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts.map +1 -1
  48. package/dist/types/src/components/{Dialogs → Dialog}/AlertDialog.d.ts +1 -1
  49. package/dist/types/src/components/Dialog/AlertDialog.d.ts.map +1 -0
  50. package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts +11 -0
  51. package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts.map +1 -0
  52. package/dist/types/src/components/Dialog/Dialog.d.ts +46 -0
  53. package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -0
  54. package/dist/types/src/components/Dialog/Dialog.stories.d.ts +27 -0
  55. package/dist/types/src/components/Dialog/Dialog.stories.d.ts.map +1 -0
  56. package/dist/types/src/components/Dialog/index.d.ts.map +1 -0
  57. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts +1 -1
  58. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts.map +1 -1
  59. package/dist/types/src/components/Icon/Icon.d.ts +2 -2
  60. package/dist/types/src/components/Icon/Icon.d.ts.map +1 -1
  61. package/dist/types/src/components/Icon/Icon.stories.d.ts +17 -0
  62. package/dist/types/src/components/Icon/Icon.stories.d.ts.map +1 -0
  63. package/dist/types/src/components/Input/Input.d.ts +6 -5
  64. package/dist/types/src/components/Input/Input.d.ts.map +1 -1
  65. package/dist/types/src/components/Input/Input.stories.d.ts +12 -13
  66. package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
  67. package/dist/types/src/components/Link/Link.stories.d.ts +8 -8
  68. package/dist/types/src/components/Link/Link.stories.d.ts.map +1 -1
  69. package/dist/types/src/components/{Lists → List}/List.d.ts +3 -3
  70. package/dist/types/src/components/List/List.d.ts.map +1 -0
  71. package/dist/types/src/components/List/List.stories.d.ts +14 -0
  72. package/dist/types/src/components/List/List.stories.d.ts.map +1 -0
  73. package/dist/types/src/components/List/ListDropIndicator.d.ts.map +1 -0
  74. package/dist/types/src/components/{Lists → List}/Tree.d.ts +1 -1
  75. package/dist/types/src/components/List/Tree.d.ts.map +1 -0
  76. package/dist/types/src/components/List/Tree.stories.d.ts +15 -0
  77. package/dist/types/src/components/List/Tree.stories.d.ts.map +1 -0
  78. package/dist/types/src/components/List/TreeDropIndicator.d.ts.map +1 -0
  79. package/dist/types/src/components/{Lists → List}/Treegrid.d.ts +1 -1
  80. package/dist/types/src/components/{Lists → List}/Treegrid.d.ts.map +1 -1
  81. package/dist/types/src/components/List/Treegrid.stories.d.ts +12 -0
  82. package/dist/types/src/components/List/Treegrid.stories.d.ts.map +1 -0
  83. package/dist/types/src/components/List/index.d.ts.map +1 -0
  84. package/dist/types/src/components/Main/Main.d.ts +17 -27
  85. package/dist/types/src/components/Main/Main.d.ts.map +1 -1
  86. package/dist/types/src/components/Main/Main.stories.d.ts +6 -7
  87. package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
  88. package/dist/types/src/components/{Menus → Menu}/ContextMenu.d.ts +6 -6
  89. package/dist/types/src/components/Menu/ContextMenu.d.ts.map +1 -0
  90. package/dist/types/src/components/Menu/ContextMenu.stories.d.ts +12 -0
  91. package/dist/types/src/components/Menu/ContextMenu.stories.d.ts.map +1 -0
  92. package/dist/types/src/components/{Menus → Menu}/DropdownMenu.d.ts +8 -8
  93. package/dist/types/src/components/Menu/DropdownMenu.d.ts.map +1 -0
  94. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts +15 -0
  95. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts.map +1 -0
  96. package/dist/types/src/components/Menu/index.d.ts.map +1 -0
  97. package/dist/types/src/components/Message/Message.d.ts +1 -1
  98. package/dist/types/src/components/Message/Message.d.ts.map +1 -1
  99. package/dist/types/src/components/Message/Message.stories.d.ts +8 -17
  100. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
  101. package/dist/types/src/components/Popover/Popover.d.ts +3 -3
  102. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  103. package/dist/types/src/components/Popover/Popover.stories.d.ts +6 -34
  104. package/dist/types/src/components/Popover/Popover.stories.d.ts.map +1 -1
  105. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +25 -26
  106. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  107. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +37 -25
  108. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
  109. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +39 -0
  110. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -0
  111. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts +19 -0
  112. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts.map +1 -0
  113. package/dist/types/src/components/ScrollContainer/index.d.ts +2 -0
  114. package/dist/types/src/components/ScrollContainer/index.d.ts.map +1 -0
  115. package/dist/types/src/components/Select/Select.d.ts +10 -10
  116. package/dist/types/src/components/Select/Select.d.ts.map +1 -1
  117. package/dist/types/src/components/Select/Select.stories.d.ts +4 -9
  118. package/dist/types/src/components/Select/Select.stories.d.ts.map +1 -1
  119. package/dist/types/src/components/Separator/Separator.d.ts +1 -1
  120. package/dist/types/src/components/Skeleton/Skeleton.d.ts +12 -0
  121. package/dist/types/src/components/Skeleton/Skeleton.d.ts.map +1 -0
  122. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts +17 -0
  123. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts.map +1 -0
  124. package/dist/types/src/components/Skeleton/index.d.ts +2 -0
  125. package/dist/types/src/components/Skeleton/index.d.ts.map +1 -0
  126. package/dist/types/src/components/Splitter/Splitter.d.ts +26 -0
  127. package/dist/types/src/components/Splitter/Splitter.d.ts.map +1 -0
  128. package/dist/types/src/components/Splitter/Splitter.stories.d.ts +7 -0
  129. package/dist/types/src/components/Splitter/Splitter.stories.d.ts.map +1 -0
  130. package/dist/types/src/components/Splitter/index.d.ts +2 -0
  131. package/dist/types/src/components/Splitter/index.d.ts.map +1 -0
  132. package/dist/types/src/components/Status/Status.stories.d.ts +2 -8
  133. package/dist/types/src/components/Status/Status.stories.d.ts.map +1 -1
  134. package/dist/types/src/components/Tag/Tag.d.ts +1 -1
  135. package/dist/types/src/components/Tag/Tag.d.ts.map +1 -1
  136. package/dist/types/src/components/Tag/Tag.stories.d.ts +12 -12
  137. package/dist/types/src/components/Tag/Tag.stories.d.ts.map +1 -1
  138. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts +3 -3
  139. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  140. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +1 -8
  141. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
  142. package/dist/types/src/components/ThemeProvider/index.d.ts +2 -1
  143. package/dist/types/src/components/ThemeProvider/index.d.ts.map +1 -1
  144. package/dist/types/src/components/Toast/Toast.d.ts +5 -5
  145. package/dist/types/src/components/Toast/Toast.d.ts.map +1 -1
  146. package/dist/types/src/components/Toast/Toast.stories.d.ts +6 -44
  147. package/dist/types/src/components/Toast/Toast.stories.d.ts.map +1 -1
  148. package/dist/types/src/components/Toolbar/Toolbar.d.ts +20 -19
  149. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  150. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts +6 -50
  151. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
  152. package/dist/types/src/components/Tooltip/Tooltip.d.ts +2 -4
  153. package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
  154. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts +8 -61
  155. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
  156. package/dist/types/src/components/index.d.ts +7 -4
  157. package/dist/types/src/components/index.d.ts.map +1 -1
  158. package/dist/types/src/exemplars/generics.stories.d.ts +17 -0
  159. package/dist/types/src/exemplars/generics.stories.d.ts.map +1 -0
  160. package/dist/types/src/exemplars/slot.stories.d.ts +14 -0
  161. package/dist/types/src/exemplars/slot.stories.d.ts.map +1 -0
  162. package/dist/types/src/exemplars/tabster.stories.d.ts +8 -0
  163. package/dist/types/src/exemplars/tabster.stories.d.ts.map +1 -0
  164. package/dist/types/src/hooks/useDensityContext.d.ts +1 -1
  165. package/dist/types/src/hooks/useDensityContext.d.ts.map +1 -1
  166. package/dist/types/src/hooks/useElevationContext.d.ts +1 -1
  167. package/dist/types/src/hooks/useElevationContext.d.ts.map +1 -1
  168. package/dist/types/src/hooks/useSafeArea.d.ts.map +1 -1
  169. package/dist/types/src/hooks/useVisualViewport.d.ts +2 -2
  170. package/dist/types/src/hooks/useVisualViewport.d.ts.map +1 -1
  171. package/dist/types/src/index.d.ts +2 -1
  172. package/dist/types/src/index.d.ts.map +1 -1
  173. package/dist/types/src/playground/Controls.stories.d.ts +5 -9
  174. package/dist/types/src/playground/Controls.stories.d.ts.map +1 -1
  175. package/dist/types/src/playground/Custom.stories.d.ts +12 -4
  176. package/dist/types/src/playground/Custom.stories.d.ts.map +1 -1
  177. package/dist/types/src/playground/Typography.stories.d.ts +5 -11
  178. package/dist/types/src/playground/Typography.stories.d.ts.map +1 -1
  179. package/dist/types/src/primitives/Container/Container.d.ts +23 -0
  180. package/dist/types/src/primitives/Container/Container.d.ts.map +1 -0
  181. package/dist/types/src/primitives/Container/Container.stories.d.ts +11 -0
  182. package/dist/types/src/primitives/Container/Container.stories.d.ts.map +1 -0
  183. package/dist/types/src/primitives/Container/Layout.d.ts +18 -0
  184. package/dist/types/src/primitives/Container/Layout.d.ts.map +1 -0
  185. package/dist/types/src/primitives/Container/Layout.stories.d.ts +10 -0
  186. package/dist/types/src/primitives/Container/Layout.stories.d.ts.map +1 -0
  187. package/dist/types/src/primitives/Container/index.d.ts +3 -0
  188. package/dist/types/src/primitives/Container/index.d.ts.map +1 -0
  189. package/dist/types/src/primitives/Flex/Flex.d.ts +8 -0
  190. package/dist/types/src/primitives/Flex/Flex.d.ts.map +1 -0
  191. package/dist/types/src/primitives/Flex/index.d.ts +2 -0
  192. package/dist/types/src/primitives/Flex/index.d.ts.map +1 -0
  193. package/dist/types/src/primitives/index.d.ts +3 -0
  194. package/dist/types/src/primitives/index.d.ts.map +1 -0
  195. package/dist/types/src/testing/decorators/index.d.ts +2 -1
  196. package/dist/types/src/testing/decorators/index.d.ts.map +1 -1
  197. package/dist/types/src/testing/decorators/withLayout.d.ts +15 -0
  198. package/dist/types/src/testing/decorators/withLayout.d.ts.map +1 -0
  199. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts +12 -0
  200. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts.map +1 -0
  201. package/dist/types/src/testing/decorators/withTheme.d.ts +5 -1
  202. package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
  203. package/dist/types/src/util/index.d.ts +2 -1
  204. package/dist/types/src/util/index.d.ts.map +1 -1
  205. package/dist/types/src/util/usePx.d.ts +8 -0
  206. package/dist/types/src/util/usePx.d.ts.map +1 -0
  207. package/dist/types/tsconfig.tsbuildinfo +1 -1
  208. package/package.json +39 -31
  209. package/src/components/AnchoredOverflow/AnchoredOverflow.tsx +10 -12
  210. package/src/components/Avatars/Avatar.stories.tsx +23 -14
  211. package/src/components/Avatars/Avatar.tsx +6 -13
  212. package/src/components/Avatars/AvatarGroup.stories.tsx +12 -8
  213. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +19 -14
  214. package/src/components/Breadcrumb/Breadcrumb.tsx +6 -32
  215. package/src/components/{Buttons → Button}/Button.stories.tsx +9 -10
  216. package/src/components/{Buttons → Button}/Button.tsx +2 -8
  217. package/src/components/{Buttons → Button}/IconButton.stories.tsx +13 -10
  218. package/src/components/{Buttons → Button}/IconButton.tsx +23 -16
  219. package/src/components/Button/Toggle.stories.tsx +37 -0
  220. package/src/components/{Buttons → Button}/ToggleGroup.stories.tsx +12 -9
  221. package/src/components/{Buttons → Button}/ToggleGroup.tsx +17 -4
  222. package/src/components/Clipboard/ClipboardProvider.tsx +1 -1
  223. package/src/components/Clipboard/CopyButton.tsx +6 -5
  224. package/src/components/DensityProvider/DensityProvider.tsx +2 -2
  225. package/src/components/{Dialogs → Dialog}/AlertDialog.stories.tsx +17 -14
  226. package/src/components/{Dialogs → Dialog}/AlertDialog.tsx +16 -21
  227. package/src/components/Dialog/Dialog.stories.tsx +101 -0
  228. package/src/components/{Dialogs → Dialog}/Dialog.tsx +182 -57
  229. package/src/components/ElevationProvider/ElevationProvider.tsx +2 -2
  230. package/src/components/Icon/Icon.stories.tsx +113 -0
  231. package/src/components/Icon/Icon.tsx +3 -3
  232. package/src/components/Input/Input.stories.tsx +22 -23
  233. package/src/components/Input/Input.tsx +38 -44
  234. package/src/components/Link/Link.stories.tsx +12 -8
  235. package/src/components/Link/Link.tsx +1 -1
  236. package/src/components/{Lists → List}/List.stories.tsx +34 -28
  237. package/src/components/{Lists → List}/List.tsx +23 -25
  238. package/src/components/{Lists → List}/ListDropIndicator.tsx +1 -1
  239. package/src/components/{Lists → List}/Tree.stories.tsx +13 -10
  240. package/src/components/{Lists → List}/Tree.tsx +4 -3
  241. package/src/components/{Lists → List}/TreeDropIndicator.tsx +1 -1
  242. package/src/components/{Lists → List}/Treegrid.stories.tsx +14 -8
  243. package/src/components/{Lists → List}/Treegrid.tsx +61 -25
  244. package/src/components/Main/Main.stories.tsx +56 -27
  245. package/src/components/Main/Main.tsx +166 -94
  246. package/src/components/{Menus → Menu}/ContextMenu.stories.tsx +13 -10
  247. package/src/components/{Menus → Menu}/ContextMenu.tsx +8 -31
  248. package/src/components/{Menus → Menu}/DropdownMenu.stories.tsx +14 -11
  249. package/src/components/{Menus → Menu}/DropdownMenu.tsx +109 -78
  250. package/src/components/Message/Message.stories.tsx +14 -10
  251. package/src/components/Message/Message.tsx +34 -23
  252. package/src/components/Popover/Popover.stories.tsx +14 -11
  253. package/src/components/Popover/Popover.tsx +67 -48
  254. package/src/components/ScrollArea/ScrollArea.stories.tsx +163 -34
  255. package/src/components/ScrollArea/ScrollArea.tsx +80 -82
  256. package/src/components/ScrollArea/index.ts +1 -1
  257. package/src/components/ScrollContainer/ScrollContainer.stories.tsx +70 -0
  258. package/src/components/ScrollContainer/ScrollContainer.tsx +238 -0
  259. package/src/components/ScrollContainer/index.ts +5 -0
  260. package/src/components/Select/Select.stories.tsx +15 -12
  261. package/src/components/Select/Select.tsx +18 -33
  262. package/src/components/Separator/Separator.tsx +1 -1
  263. package/src/components/Skeleton/Skeleton.stories.tsx +52 -0
  264. package/src/components/Skeleton/Skeleton.tsx +26 -0
  265. package/src/components/Skeleton/index.ts +5 -0
  266. package/src/components/Splitter/Splitter.stories.tsx +73 -0
  267. package/src/components/Splitter/Splitter.tsx +123 -0
  268. package/src/components/Splitter/index.ts +5 -0
  269. package/src/components/Status/Status.stories.tsx +11 -8
  270. package/src/components/Status/Status.tsx +2 -2
  271. package/src/components/Tag/Tag.stories.tsx +21 -12
  272. package/src/components/Tag/Tag.tsx +2 -7
  273. package/src/components/ThemeProvider/ThemeProvider.tsx +5 -5
  274. package/src/components/ThemeProvider/TranslationsProvider.tsx +3 -18
  275. package/src/components/ThemeProvider/index.ts +3 -3
  276. package/src/components/Toast/Toast.stories.tsx +14 -11
  277. package/src/components/Toast/Toast.tsx +15 -19
  278. package/src/components/Toolbar/Toolbar.stories.tsx +16 -14
  279. package/src/components/Toolbar/Toolbar.tsx +41 -10
  280. package/src/components/Tooltip/Tooltip.stories.tsx +18 -14
  281. package/src/components/Tooltip/Tooltip.tsx +29 -26
  282. package/src/components/index.ts +7 -4
  283. package/src/exemplars/generics.stories.tsx +44 -0
  284. package/src/exemplars/slot.stories.tsx +108 -0
  285. package/src/exemplars/tabster.stories.tsx +127 -0
  286. package/src/hooks/useDensityContext.ts +1 -1
  287. package/src/hooks/useElevationContext.ts +1 -1
  288. package/src/hooks/useSafeArea.ts +3 -2
  289. package/src/hooks/useVisualViewport.ts +4 -4
  290. package/src/index.ts +2 -1
  291. package/src/playground/Controls.stories.tsx +12 -9
  292. package/src/playground/Custom.stories.tsx +15 -26
  293. package/src/playground/Typography.stories.tsx +10 -8
  294. package/src/primitives/Container/Container.stories.tsx +67 -0
  295. package/src/primitives/Container/Container.tsx +79 -0
  296. package/src/primitives/Container/Layout.stories.tsx +57 -0
  297. package/src/primitives/Container/Layout.tsx +61 -0
  298. package/src/primitives/Container/index.ts +6 -0
  299. package/src/primitives/Flex/Flex.tsx +26 -0
  300. package/src/primitives/Flex/index.ts +5 -0
  301. package/src/primitives/index.ts +6 -0
  302. package/src/testing/decorators/index.ts +2 -1
  303. package/src/testing/decorators/withLayout.tsx +63 -0
  304. package/src/testing/decorators/{withSurfaceVariantsLayout.tsx → withLayoutVariants.tsx} +5 -5
  305. package/src/testing/decorators/withTheme.tsx +34 -0
  306. package/src/util/index.ts +3 -1
  307. package/src/util/usePx.ts +61 -0
  308. package/dist/lib/browser/chunk-2COVUP44.mjs +0 -4373
  309. package/dist/lib/browser/chunk-2COVUP44.mjs.map +0 -7
  310. package/dist/lib/node-esm/chunk-GHXHND5V.mjs +0 -4375
  311. package/dist/lib/node-esm/chunk-GHXHND5V.mjs.map +0 -7
  312. package/dist/types/src/components/Buttons/Button.d.ts.map +0 -1
  313. package/dist/types/src/components/Buttons/Button.stories.d.ts +0 -12
  314. package/dist/types/src/components/Buttons/Button.stories.d.ts.map +0 -1
  315. package/dist/types/src/components/Buttons/IconButton.d.ts.map +0 -1
  316. package/dist/types/src/components/Buttons/IconButton.stories.d.ts +0 -22
  317. package/dist/types/src/components/Buttons/IconButton.stories.d.ts.map +0 -1
  318. package/dist/types/src/components/Buttons/Toggle.d.ts.map +0 -1
  319. package/dist/types/src/components/Buttons/Toggle.stories.d.ts +0 -19
  320. package/dist/types/src/components/Buttons/Toggle.stories.d.ts.map +0 -1
  321. package/dist/types/src/components/Buttons/ToggleGroup.d.ts +0 -28
  322. package/dist/types/src/components/Buttons/ToggleGroup.d.ts.map +0 -1
  323. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts +0 -39
  324. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts.map +0 -1
  325. package/dist/types/src/components/Buttons/index.d.ts.map +0 -1
  326. package/dist/types/src/components/Dialogs/AlertDialog.d.ts.map +0 -1
  327. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts +0 -43
  328. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts.map +0 -1
  329. package/dist/types/src/components/Dialogs/Dialog.d.ts +0 -31
  330. package/dist/types/src/components/Dialogs/Dialog.d.ts.map +0 -1
  331. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts +0 -48
  332. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts.map +0 -1
  333. package/dist/types/src/components/Dialogs/index.d.ts.map +0 -1
  334. package/dist/types/src/components/Lists/List.d.ts.map +0 -1
  335. package/dist/types/src/components/Lists/List.stories.d.ts +0 -37
  336. package/dist/types/src/components/Lists/List.stories.d.ts.map +0 -1
  337. package/dist/types/src/components/Lists/ListDropIndicator.d.ts.map +0 -1
  338. package/dist/types/src/components/Lists/Tree.d.ts.map +0 -1
  339. package/dist/types/src/components/Lists/Tree.stories.d.ts +0 -41
  340. package/dist/types/src/components/Lists/Tree.stories.d.ts.map +0 -1
  341. package/dist/types/src/components/Lists/TreeDropIndicator.d.ts.map +0 -1
  342. package/dist/types/src/components/Lists/Treegrid.stories.d.ts +0 -10
  343. package/dist/types/src/components/Lists/Treegrid.stories.d.ts.map +0 -1
  344. package/dist/types/src/components/Lists/index.d.ts.map +0 -1
  345. package/dist/types/src/components/Menus/ContextMenu.d.ts.map +0 -1
  346. package/dist/types/src/components/Menus/ContextMenu.stories.d.ts +0 -50
  347. package/dist/types/src/components/Menus/ContextMenu.stories.d.ts.map +0 -1
  348. package/dist/types/src/components/Menus/DropdownMenu.d.ts.map +0 -1
  349. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts +0 -50
  350. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts.map +0 -1
  351. package/dist/types/src/components/Menus/index.d.ts.map +0 -1
  352. package/dist/types/src/testing/decorators/withSurfaceVariantsLayout.d.ts +0 -12
  353. package/dist/types/src/testing/decorators/withSurfaceVariantsLayout.d.ts.map +0 -1
  354. package/dist/types/src/util/ThemedClassName.d.ts +0 -5
  355. package/dist/types/src/util/ThemedClassName.d.ts.map +0 -1
  356. package/src/components/Buttons/Toggle.stories.tsx +0 -33
  357. package/src/components/Dialogs/Dialog.stories.tsx +0 -65
  358. package/src/testing/decorators/withTheme.ts +0 -25
  359. package/src/util/ThemedClassName.ts +0 -7
  360. /package/dist/types/src/components/{Buttons → Button}/Toggle.d.ts +0 -0
  361. /package/dist/types/src/components/{Buttons → Button}/index.d.ts +0 -0
  362. /package/dist/types/src/components/{Dialogs → Dialog}/index.d.ts +0 -0
  363. /package/dist/types/src/components/{Lists → List}/ListDropIndicator.d.ts +0 -0
  364. /package/dist/types/src/components/{Lists → List}/TreeDropIndicator.d.ts +0 -0
  365. /package/dist/types/src/components/{Lists → List}/index.d.ts +0 -0
  366. /package/dist/types/src/components/{Menus → Menu}/index.d.ts +0 -0
  367. /package/src/components/{Buttons → Button}/Toggle.tsx +0 -0
  368. /package/src/components/{Buttons → Button}/index.ts +0 -0
  369. /package/src/components/{Dialogs → Dialog}/index.ts +0 -0
  370. /package/src/components/{Lists → List}/index.ts +0 -0
  371. /package/src/components/{Menus → Menu}/index.ts +0 -0
@@ -8,7 +8,7 @@ import React, { forwardRef } from 'react';
8
8
  import { useElevationContext, useThemeContext } from '../../hooks';
9
9
  import { useSafeCollisionPadding } from '../../hooks/useSafeCollisionPadding';
10
10
  import { type ThemedClassName } from '../../util';
11
- import { Button, type ButtonProps } from '../Buttons';
11
+ import { Button, type ButtonProps } from '../Button';
12
12
  import { Icon } from '../Icon';
13
13
 
14
14
  type SelectRootProps = SelectPrimitive.SelectProps;
@@ -35,14 +35,13 @@ type SelectTriggerButtonProps = Omit<ButtonProps, 'children'> & Pick<SelectValue
35
35
 
36
36
  const SelectTriggerButton = forwardRef<HTMLButtonElement, SelectTriggerButtonProps>(
37
37
  ({ children, placeholder, ...props }, forwardedRef) => {
38
- const { tx } = useThemeContext();
39
38
  return (
40
39
  <SelectPrimitive.Trigger asChild ref={forwardedRef}>
41
40
  <Button {...props}>
42
41
  <SelectPrimitive.Value placeholder={placeholder}>{children}</SelectPrimitive.Value>
43
- <span className='w-1 flex-1' />
42
+ <span className='is-1 flex-1' />
44
43
  <SelectPrimitive.Icon asChild>
45
- <Icon icon='ph--caret-down--bold' classNames={tx('select.triggerIcon', 'select__trigger__icon', {})} />
44
+ <Icon size={3} icon='ph--caret-down--bold' />
46
45
  </SelectPrimitive.Icon>
47
46
  </Button>
48
47
  </SelectPrimitive.Trigger>
@@ -60,8 +59,9 @@ const SelectContent = forwardRef<HTMLDivElement, SelectContentProps>(
60
59
  return (
61
60
  <SelectPrimitive.Content
62
61
  {...props}
62
+ data-arrow-keys='up down'
63
63
  collisionPadding={safeCollisionPadding}
64
- className={tx('select.content', 'select__content', { elevation }, classNames)}
64
+ className={tx('select.content', { elevation }, classNames)}
65
65
  position='popper'
66
66
  ref={forwardedRef}
67
67
  >
@@ -79,10 +79,10 @@ const SelectScrollUpButton = forwardRef<HTMLDivElement, SelectScrollUpButtonProp
79
79
  return (
80
80
  <SelectPrimitive.SelectScrollUpButton
81
81
  {...props}
82
- className={tx('select.scrollButton', 'select__scroll-button--up', {}, classNames)}
82
+ className={tx('select.scrollButton', {}, classNames)}
83
83
  ref={forwardedRef}
84
84
  >
85
- {children ?? <Icon icon='ph--caret-up--bold' />}
85
+ {children ?? <Icon size={3} icon='ph--caret-up--bold' />}
86
86
  </SelectPrimitive.SelectScrollUpButton>
87
87
  );
88
88
  },
@@ -96,10 +96,10 @@ const SelectScrollDownButton = forwardRef<HTMLDivElement, SelectScrollDownButton
96
96
  return (
97
97
  <SelectPrimitive.SelectScrollDownButton
98
98
  {...props}
99
- className={tx('select.scrollButton', 'select__scroll-button--down', {}, classNames)}
99
+ className={tx('select.scrollButton', {}, classNames)}
100
100
  ref={forwardedRef}
101
101
  >
102
- {children ?? <Icon icon='ph--caret-down--bold' />}
102
+ {children ?? <Icon size={3} icon='ph--caret-down--bold' />}
103
103
  </SelectPrimitive.SelectScrollDownButton>
104
104
  );
105
105
  },
@@ -108,14 +108,10 @@ const SelectScrollDownButton = forwardRef<HTMLDivElement, SelectScrollDownButton
108
108
  type SelectViewportProps = ThemedClassName<SelectPrimitive.SelectViewportProps>;
109
109
 
110
110
  const SelectViewport = forwardRef<HTMLDivElement, SelectViewportProps>(
111
- ({ classNames, asChild, children, ...props }, forwardedRef) => {
111
+ ({ classNames, children, ...props }, forwardedRef) => {
112
112
  const { tx } = useThemeContext();
113
113
  return (
114
- <SelectPrimitive.SelectViewport
115
- {...props}
116
- className={tx('select.viewport', 'select__viewport', {}, classNames)}
117
- ref={forwardedRef}
118
- >
114
+ <SelectPrimitive.SelectViewport {...props} className={tx('select.viewport', {}, classNames)} ref={forwardedRef}>
119
115
  {children}
120
116
  </SelectPrimitive.SelectViewport>
121
117
  );
@@ -126,7 +122,7 @@ type SelectItemProps = ThemedClassName<SelectPrimitive.SelectItemProps>;
126
122
 
127
123
  const SelectItem = forwardRef<HTMLDivElement, SelectItemProps>(({ classNames, ...props }, forwardedRef) => {
128
124
  const { tx } = useThemeContext();
129
- return <SelectPrimitive.Item {...props} className={tx('select.item', 'option', {}, classNames)} ref={forwardedRef} />;
125
+ return <SelectPrimitive.Item {...props} className={tx('select.item', {}, classNames)} ref={forwardedRef} />;
130
126
  });
131
127
 
132
128
  type SelectItemTextProps = SelectPrimitive.SelectItemTextProps;
@@ -141,7 +137,7 @@ const SelectItemIndicator = forwardRef<HTMLDivElement, SelectItemIndicatorProps>
141
137
  return (
142
138
  <SelectPrimitive.ItemIndicator
143
139
  {...props}
144
- className={tx('select.itemIndicator', 'option__indicator', {}, classNames)}
140
+ className={tx('select.itemIndicator', {}, classNames)}
145
141
  ref={forwardedRef}
146
142
  >
147
143
  {children}
@@ -152,12 +148,13 @@ const SelectItemIndicator = forwardRef<HTMLDivElement, SelectItemIndicatorProps>
152
148
 
153
149
  type SelectOptionProps = SelectItemProps;
154
150
 
151
+ // TODO(burdon): Option to show icon on left/right.
155
152
  const SelectOption = forwardRef<HTMLDivElement, SelectItemProps>(({ children, classNames, ...props }, forwardedRef) => {
156
153
  const { tx } = useThemeContext();
157
154
  return (
158
- <SelectPrimitive.Item {...props} className={tx('select.item', 'option', {}, classNames)} ref={forwardedRef}>
155
+ <SelectPrimitive.Item {...props} className={tx('select.item', {}, classNames)} ref={forwardedRef}>
159
156
  <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>
160
- <span className='grow w-1' />
157
+ <span className='grow is-1' />
161
158
  {/* <SelectPrimitive.ItemIndicator className={tx('select.itemIndicator', 'option__indicator', {})}> */}
162
159
  <Icon icon='ph--check--regular' />
163
160
  {/* </SelectPrimitive.ItemIndicator> */}
@@ -177,26 +174,14 @@ type SelectSeparatorProps = ThemedClassName<SelectPrimitive.SelectSeparatorProps
177
174
 
178
175
  const SelectSeparator = forwardRef<HTMLDivElement, SelectSeparatorProps>(({ classNames, ...props }, forwardedRef) => {
179
176
  const { tx } = useThemeContext();
180
- return (
181
- <SelectPrimitive.Separator
182
- {...props}
183
- className={tx('select.separator', 'select__separator', {}, classNames)}
184
- ref={forwardedRef}
185
- />
186
- );
177
+ return <SelectPrimitive.Separator {...props} className={tx('select.separator', {}, classNames)} ref={forwardedRef} />;
187
178
  });
188
179
 
189
180
  type SelectArrowProps = ThemedClassName<SelectPrimitive.SelectArrowProps>;
190
181
 
191
182
  const SelectArrow = forwardRef<SVGSVGElement, SelectArrowProps>(({ classNames, ...props }, forwardedRef) => {
192
183
  const { tx } = useThemeContext();
193
- return (
194
- <SelectPrimitive.Arrow
195
- {...props}
196
- className={tx('select.arrow', 'select__arrow', {}, classNames)}
197
- ref={forwardedRef}
198
- />
199
- );
184
+ return <SelectPrimitive.Arrow {...props} className={tx('select.arrow', {}, classNames)} ref={forwardedRef} />;
200
185
  });
201
186
 
202
187
  export const Select = {
@@ -19,7 +19,7 @@ const Separator = forwardRef<HTMLDivElement, SeparatorProps>(
19
19
  <SeparatorPrimitive
20
20
  orientation={orientation}
21
21
  {...props}
22
- className={tx('separator.root', 'separator', { orientation, subdued }, classNames)}
22
+ className={tx('separator.root', { orientation, subdued }, classNames)}
23
23
  ref={forwardedRef}
24
24
  />
25
25
  );
@@ -0,0 +1,52 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+
5
+ import React from 'react';
6
+
7
+ import { withTheme } from '../../testing';
8
+
9
+ import { Skeleton } from './Skeleton';
10
+
11
+ export default {
12
+ title: 'ui/react-ui-core/components/Skeleton',
13
+ component: Skeleton,
14
+ decorators: [withTheme()],
15
+ parameters: {
16
+ layout: 'centered',
17
+ },
18
+ };
19
+
20
+ export const Default = {
21
+ render: () => (
22
+ <div className='flex flex-col gap-4 p-4 border border-separator rounded-sm'>
23
+ <div className='flex is-fit items-center gap-4'>
24
+ <Skeleton classNames='size-10 shrink-0 rounded-full' />
25
+ <div className='grid gap-2'>
26
+ <Skeleton classNames='bs-4 is-[150px]' />
27
+ <Skeleton classNames='bs-4 is-[100px]' />
28
+ </div>
29
+ </div>
30
+ </div>
31
+ ),
32
+ };
33
+
34
+ export const Card = {
35
+ render: () => (
36
+ <div className='flex flex-col gap-3 is-96 p-4 border border-separator rounded-sm'>
37
+ <div className='flex items-center gap-3'>
38
+ <Skeleton variant='circle' classNames='bs-12 is-12 rounded-full' />
39
+ <div className='flex flex-col gap-2 flex-1'>
40
+ <Skeleton classNames='bs-4 is-24' />
41
+ <Skeleton classNames='bs-3 is-32' />
42
+ </div>
43
+ </div>
44
+ <Skeleton classNames='bs-32 is-full rounded' />
45
+ <div className='flex flex-col gap-2'>
46
+ <Skeleton classNames='bs-3 is-full' />
47
+ <Skeleton classNames='bs-3 is-5/6' />
48
+ <Skeleton classNames='bs-3 is-4/6' />
49
+ </div>
50
+ </div>
51
+ ),
52
+ };
@@ -0,0 +1,26 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+
5
+ import React, { type ComponentPropsWithRef, forwardRef } from 'react';
6
+
7
+ import { useThemeContext } from '../../hooks';
8
+ import { type ThemedClassName } from '../../util';
9
+
10
+ type SkeletonProps = ThemedClassName<ComponentPropsWithRef<'div'>> & {
11
+ variant?: 'default' | 'circle' | 'text';
12
+ };
13
+
14
+ /**
15
+ * A skeleton loading component that displays a placeholder while content is loading.
16
+ */
17
+ const Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(
18
+ ({ classNames, variant = 'default', ...props }, forwardedRef) => {
19
+ const { tx } = useThemeContext();
20
+ return <div {...props} className={tx('skeleton.root', { variant }, classNames)} ref={forwardedRef} />;
21
+ },
22
+ );
23
+
24
+ export { Skeleton };
25
+
26
+ export type { SkeletonProps };
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+
5
+ export * from './Skeleton';
@@ -0,0 +1,73 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
+ import React, { useState } from 'react';
7
+
8
+ import { Layout } from '../../primitives';
9
+ import { withLayout, withTheme } from '../../testing';
10
+ import { ScrollArea } from '../ScrollArea';
11
+ import { Toolbar } from '../Toolbar';
12
+
13
+ import { Splitter, type SplitterRootProps } from './Splitter';
14
+
15
+ const Panel = ({ label }: { label: string }) => {
16
+ return (
17
+ <Layout.Main toolbar>
18
+ <Toolbar.Root>{label}</Toolbar.Root>
19
+ <ScrollArea.Root orientation='vertical'>
20
+ <ScrollArea.Viewport>
21
+ {Array.from({ length: 100 }).map((_, i) => (
22
+ <div key={i} className='p-1'>
23
+ {label}-{i}
24
+ </div>
25
+ ))}
26
+ </ScrollArea.Viewport>
27
+ </ScrollArea.Root>
28
+ </Layout.Main>
29
+ );
30
+ };
31
+
32
+ const DefaultStory = (props: SplitterRootProps) => {
33
+ const [mode, setMode] = useState(props.mode ?? 'both');
34
+
35
+ return (
36
+ <div className='grid grid-rows-[min-content_1fr] bs-full overflow-hidden'>
37
+ <Toolbar.Root>
38
+ <Toolbar.Button onClick={() => setMode('upper')}>A</Toolbar.Button>
39
+ <Toolbar.Button onClick={() => setMode('both')}>A + B</Toolbar.Button>
40
+ <Toolbar.Button onClick={() => setMode('lower')}>B</Toolbar.Button>
41
+ </Toolbar.Root>
42
+ <Splitter.Root mode={mode} ratio={props.ratio} classNames='divide-y divide-subduedSeparator'>
43
+ <Splitter.Panel position='upper'>
44
+ <Panel label='A' />
45
+ </Splitter.Panel>
46
+ <Splitter.Panel position='lower'>
47
+ <Panel label='B' />
48
+ </Splitter.Panel>
49
+ </Splitter.Root>
50
+ </div>
51
+ );
52
+ };
53
+
54
+ const meta: Meta<SplitterRootProps> = {
55
+ title: 'ui/react-ui-core/components/Splitter',
56
+ component: Splitter.Root,
57
+ render: DefaultStory,
58
+ decorators: [withTheme(), withLayout({ layout: 'column' })],
59
+ parameters: {
60
+ layout: 'fullscreen',
61
+ },
62
+ };
63
+
64
+ export default meta;
65
+
66
+ type Story = StoryObj<SplitterRootProps>;
67
+
68
+ export const Default: Story = {
69
+ args: {
70
+ mode: 'both',
71
+ ratio: 0.5,
72
+ },
73
+ };
@@ -0,0 +1,123 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import { createContextScope } from '@radix-ui/react-context';
6
+ import React, { type ComponentPropsWithoutRef, forwardRef } from 'react';
7
+
8
+ import { mx } from '@dxos/ui-theme';
9
+
10
+ import { type ThemedClassName } from '../../util';
11
+
12
+ type ScopedProps<P> = P & { __scopeSplitter?: any };
13
+
14
+ // TODO(burdon): Generalize styles.
15
+ // TODO(burdon): Enalbe resize.
16
+ // TODO(burdon): Generalize horizontal/vertical and change to start/end.
17
+ type Mode = 'upper' | 'lower' | 'both';
18
+
19
+ type SplitterContextValue = {
20
+ mode: Mode;
21
+ ratio: number;
22
+ transition: number;
23
+ };
24
+
25
+ const SPLITTER_NAME = 'Splitter';
26
+
27
+ const [createSplitterContext, createSplitterScope] = createContextScope(SPLITTER_NAME);
28
+
29
+ const [SplitterProvider, useSplitterContext] = createSplitterContext<SplitterContextValue>(SPLITTER_NAME);
30
+
31
+ //
32
+ // Root
33
+ //
34
+
35
+ const ROOT_NAME = 'Splitter.Root';
36
+
37
+ type RootProps = ThemedClassName<ComponentPropsWithoutRef<'div'>> & Partial<SplitterContextValue>;
38
+
39
+ const Root = forwardRef<HTMLDivElement, ScopedProps<RootProps>>(
40
+ (
41
+ { __scopeSplitter, classNames, mode = 'upper', ratio = 0.5, transition = 250, children, ...rootProps },
42
+ forwardedRef,
43
+ ) => {
44
+ return (
45
+ <SplitterProvider scope={__scopeSplitter} mode={mode} ratio={ratio} transition={transition}>
46
+ <div
47
+ role='none'
48
+ {...rootProps}
49
+ ref={forwardedRef}
50
+ className={mx('relative bs-full overflow-hidden', classNames)}
51
+ >
52
+ {children}
53
+ </div>
54
+ </SplitterProvider>
55
+ );
56
+ },
57
+ );
58
+
59
+ Root.displayName = ROOT_NAME;
60
+
61
+ //
62
+ // Panel
63
+ //
64
+
65
+ const PANEL_NAME = 'Splitter.Panel';
66
+
67
+ interface PanelProps extends ThemedClassName<ComponentPropsWithoutRef<'div'>> {
68
+ position: 'upper' | 'lower';
69
+ }
70
+
71
+ const Panel = forwardRef<HTMLDivElement, ScopedProps<PanelProps>>(
72
+ ({ __scopeSplitter, classNames, children, position, style, ...panelProps }, forwardedRef) => {
73
+ const context = useSplitterContext(PANEL_NAME, __scopeSplitter);
74
+ const { mode, ratio, transition } = context;
75
+
76
+ // Calculate position and height based on mode and ratio.
77
+ const isUpper = position === 'upper';
78
+ const top = isUpper ? '0%' : mode === 'upper' ? '100%' : mode === 'lower' ? '0%' : `${ratio * 100}%`;
79
+
80
+ const height = isUpper
81
+ ? mode === 'upper'
82
+ ? '100%'
83
+ : mode === 'lower'
84
+ ? '0%'
85
+ : `${ratio * 100}%`
86
+ : mode === 'lower'
87
+ ? '100%'
88
+ : mode === 'upper'
89
+ ? '0%'
90
+ : `${(1 - ratio) * 100}%`;
91
+
92
+ return (
93
+ <div
94
+ {...panelProps}
95
+ ref={forwardedRef}
96
+ className={mx('absolute inset-inline-0 flex flex-col overflow-hidden', classNames)}
97
+ style={{
98
+ top,
99
+ height,
100
+ transition: `top ${transition}ms, height ${transition}ms ease-out`,
101
+ ...style,
102
+ }}
103
+ >
104
+ {children}
105
+ </div>
106
+ );
107
+ },
108
+ );
109
+
110
+ Panel.displayName = PANEL_NAME;
111
+
112
+ //
113
+ // Splitter
114
+ //
115
+
116
+ const Splitter = {
117
+ Root,
118
+ Panel,
119
+ };
120
+
121
+ export { Splitter, createSplitterScope };
122
+
123
+ export type { Mode as SplitterMode, RootProps as SplitterRootProps, PanelProps as SplitterPanelProps };
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ export * from './Splitter';
@@ -2,19 +2,22 @@
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
- import { Status } from './Status';
10
8
  import { withTheme } from '../../testing';
11
9
 
12
- export default {
13
- title: 'ui/react-ui-core/Status',
10
+ import { Status } from './Status';
11
+
12
+ const meta = {
13
+ title: 'ui/react-ui-core/components/Status',
14
14
  component: Status,
15
- decorators: [withTheme],
16
- parameters: { chromatic: { disableSnapshot: false } },
17
- };
15
+ decorators: [withTheme()],
16
+ } satisfies Meta<typeof Status>;
17
+
18
+ export default meta;
19
+
20
+ type Story = StoryObj<typeof meta>;
18
21
 
19
22
  export const Normal = (props: any) => {
20
23
  return (
@@ -20,12 +20,12 @@ const Status = forwardRef<HTMLSpanElement, StatusProps>(
20
20
  <span
21
21
  role='status'
22
22
  {...props}
23
- className={tx('status.root', 'status', { indeterminate, variant }, classNames)}
23
+ className={tx('status.root', { indeterminate, variant }, classNames)}
24
24
  ref={forwardedRef}
25
25
  >
26
26
  <span
27
27
  role='none'
28
- className={tx('status.bar', 'status__bar', { indeterminate, variant }, classNames)}
28
+ className={tx('status.bar', { indeterminate, variant }, classNames)}
29
29
  {...(!indeterminate && { style: { width: `${Math.round(progress * 100)}%` } })}
30
30
  />
31
31
  {children}
@@ -1,25 +1,22 @@
1
1
  //
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
+
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
4
6
  import React from 'react';
5
7
 
6
- import { hues } from '@dxos/react-ui-theme';
7
- import '@dxos-theme';
8
- import { type ChromaticPalette, type MessageValence } from '@dxos/react-ui-types';
8
+ import { hues } from '@dxos/ui-theme';
9
+ import { type ChromaticPalette, type MessageValence } from '@dxos/ui-types';
9
10
 
10
- import { Tag } from './Tag';
11
11
  import { withTheme } from '../../testing';
12
12
 
13
+ import { Tag } from './Tag';
14
+
13
15
  const palettes = ['neutral', 'success', 'info', 'warning', 'error', ...hues] as (ChromaticPalette | MessageValence)[];
14
16
 
15
- export default {
16
- title: 'ui/react-ui-core/Tag',
17
+ const meta = {
18
+ title: 'ui/react-ui-core/components/Tag',
17
19
  component: Tag,
18
- decorators: [withTheme],
19
- parameters: { chromatic: { disableSnapshot: false } },
20
- } as const;
21
-
22
- export const Default = {
23
20
  render: () => (
24
21
  <div role='grid' className='grid grid-cols-5 gap-2 max-is-screen-md'>
25
22
  {palettes.map((palette) => (
@@ -29,4 +26,16 @@ export const Default = {
29
26
  ))}
30
27
  </div>
31
28
  ),
32
- };
29
+ decorators: [withTheme()],
30
+ parameters: {
31
+ chromatic: {
32
+ disableSnapshot: false,
33
+ },
34
+ },
35
+ } satisfies Meta<typeof Tag>;
36
+
37
+ export default meta;
38
+
39
+ type Story = StoryObj<typeof meta>;
40
+
41
+ export const Default: Story = {};
@@ -6,7 +6,7 @@ import { Primitive } from '@radix-ui/react-primitive';
6
6
  import { Slot } from '@radix-ui/react-slot';
7
7
  import React, { type ComponentPropsWithRef, forwardRef } from 'react';
8
8
 
9
- import { type ChromaticPalette, type MessageValence, type NeutralPalette } from '@dxos/react-ui-types';
9
+ import { type ChromaticPalette, type MessageValence, type NeutralPalette } from '@dxos/ui-types';
10
10
 
11
11
  import { useThemeContext } from '../../hooks';
12
12
  import { type ThemedClassName } from '../../util';
@@ -21,12 +21,7 @@ export const Tag = forwardRef<HTMLSpanElement, TagProps>(
21
21
  const { tx } = useThemeContext();
22
22
  const Root = asChild ? Slot : Primitive.span;
23
23
  return (
24
- <Root
25
- {...props}
26
- className={tx('tag.root', 'dx-tag', { palette }, classNames)}
27
- data-hue={palette}
28
- ref={forwardedRef}
29
- />
24
+ <Root {...props} className={tx('tag.root', { palette }, classNames)} data-hue={palette} ref={forwardedRef} />
30
25
  );
31
26
  },
32
27
  );
@@ -3,17 +3,16 @@
3
3
  //
4
4
 
5
5
  import { createKeyborg } from 'keyborg';
6
- import React, { createContext, type PropsWithChildren, useEffect, useMemo } from 'react';
6
+ import React, { type PropsWithChildren, createContext, useEffect, useMemo } from 'react';
7
7
 
8
- import { type Density, type Elevation, type ThemeFunction } from '@dxos/react-ui-types';
8
+ import { type Density, type Elevation, type ThemeFunction, type ThemeMode } from '@dxos/ui-types';
9
9
 
10
- import { TranslationsProvider, type TranslationsProviderProps } from './TranslationsProvider';
11
10
  import { type SafeAreaPadding, useSafeArea } from '../../hooks';
12
11
  import { hasIosKeyboard } from '../../util';
13
12
  import { DensityProvider } from '../DensityProvider';
14
13
  import { ElevationProvider } from '../ElevationProvider';
15
14
 
16
- export type ThemeMode = 'dark' | 'light';
15
+ import { TranslationsProvider, type TranslationsProviderProps } from './TranslationsProvider';
17
16
 
18
17
  export type ThemeContextValue = {
19
18
  tx: ThemeFunction<any>;
@@ -21,6 +20,7 @@ export type ThemeContextValue = {
21
20
  hasIosKeyboard: boolean;
22
21
  safeAreaPadding?: SafeAreaPadding;
23
22
  noCache?: boolean;
23
+ platform?: 'mobile' | 'desktop';
24
24
  };
25
25
 
26
26
  /**
@@ -40,7 +40,7 @@ export const ThemeProvider = ({
40
40
  fallback = null,
41
41
  resourceExtensions,
42
42
  appNs,
43
- tx = (_path, defaultClassName, _styleProps, ..._options) => defaultClassName,
43
+ tx = (_path, _styleProps, ..._options) => undefined,
44
44
  themeMode = 'dark',
45
45
  rootDensity = 'fine',
46
46
  ...rest
@@ -2,30 +2,15 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- import { enUS as dtLocaleEnUs, type Locale } from 'date-fns/locale';
6
- import i18Next, { type TFunction, type Resource } from 'i18next';
7
- import React, { type ReactNode, useEffect, createContext, useState, Suspense, useContext } from 'react';
5
+ import { type Locale, enUS as dtLocaleEnUs } from 'date-fns/locale';
6
+ import i18Next, { type Resource } from 'i18next';
7
+ import React, { type ReactNode, Suspense, createContext, useContext, useEffect, useState } from 'react';
8
8
  import { initReactI18next, useTranslation as useI18NextTranslation } from 'react-i18next';
9
9
 
10
10
  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';