@dxos/react-ui 0.8.4-main.c1de068 → 0.8.4-main.c351d160a8

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 (459) hide show
  1. package/dist/lib/browser/chunk-EJSGYGYH.mjs +774 -0
  2. package/dist/lib/browser/chunk-EJSGYGYH.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +3917 -61
  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 +100 -60
  7. package/dist/lib/browser/testing/index.mjs.map +4 -4
  8. package/dist/lib/node-esm/chunk-B7MXDDMJ.mjs +776 -0
  9. package/dist/lib/node-esm/chunk-B7MXDDMJ.mjs.map +7 -0
  10. package/dist/lib/node-esm/index.mjs +3917 -61
  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 +100 -60
  14. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  15. package/dist/types/src/components/Avatars/Avatar.d.ts +1 -1
  16. package/dist/types/src/components/Avatars/Avatar.d.ts.map +1 -1
  17. package/dist/types/src/components/Avatars/Avatar.stories.d.ts +5 -31
  18. package/dist/types/src/components/Avatars/Avatar.stories.d.ts.map +1 -1
  19. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts +5 -11
  20. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts.map +1 -1
  21. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts +1 -1
  22. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
  23. package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts +8 -20
  24. package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts.map +1 -1
  25. package/dist/types/src/components/{Buttons → Button}/Button.d.ts +4 -4
  26. package/dist/types/src/components/Button/Button.d.ts.map +1 -0
  27. package/dist/types/src/components/Button/Button.stories.d.ts +17 -0
  28. package/dist/types/src/components/Button/Button.stories.d.ts.map +1 -0
  29. package/dist/types/src/components/{Buttons → Button}/IconButton.d.ts +4 -4
  30. package/dist/types/src/components/Button/IconButton.d.ts.map +1 -0
  31. package/dist/types/src/components/Button/IconButton.stories.d.ts +13 -0
  32. package/dist/types/src/components/Button/IconButton.stories.d.ts.map +1 -0
  33. package/dist/types/src/components/{Buttons → Button}/Toggle.d.ts +2 -2
  34. package/dist/types/src/components/Button/Toggle.d.ts.map +1 -0
  35. package/dist/types/src/components/Button/Toggle.stories.d.ts +16 -0
  36. package/dist/types/src/components/Button/Toggle.stories.d.ts.map +1 -0
  37. package/dist/types/src/components/Button/ToggleGroup.d.ts +27 -0
  38. package/dist/types/src/components/Button/ToggleGroup.d.ts.map +1 -0
  39. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts +27 -0
  40. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts.map +1 -0
  41. package/dist/types/src/components/Button/index.d.ts.map +1 -0
  42. package/dist/types/src/components/Card/Card.d.ts +107 -0
  43. package/dist/types/src/components/Card/Card.d.ts.map +1 -0
  44. package/dist/types/src/components/Card/Card.stories.d.ts +21 -0
  45. package/dist/types/src/components/Card/Card.stories.d.ts.map +1 -0
  46. package/dist/types/src/components/Card/index.d.ts +2 -0
  47. package/dist/types/src/components/Card/index.d.ts.map +1 -0
  48. package/dist/types/src/components/Clipboard/ClipboardProvider.d.ts.map +1 -1
  49. package/dist/types/src/components/Clipboard/CopyButton.d.ts +1 -1
  50. package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -1
  51. package/dist/types/src/components/Clipboard/index.d.ts +10 -1
  52. package/dist/types/src/components/Clipboard/index.d.ts.map +1 -1
  53. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts +1 -1
  54. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts.map +1 -1
  55. package/dist/types/src/components/Dialog/AlertDialog.d.ts +40 -0
  56. package/dist/types/src/components/Dialog/AlertDialog.d.ts.map +1 -0
  57. package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts +11 -0
  58. package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts.map +1 -0
  59. package/dist/types/src/components/Dialog/Dialog.d.ts +47 -0
  60. package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -0
  61. package/dist/types/src/components/Dialog/Dialog.stories.d.ts +24 -0
  62. package/dist/types/src/components/Dialog/Dialog.stories.d.ts.map +1 -0
  63. package/dist/types/src/components/Dialog/index.d.ts.map +1 -0
  64. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts +1 -1
  65. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts.map +1 -1
  66. package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts +11 -0
  67. package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts.map +1 -0
  68. package/dist/types/src/components/ErrorFallback/ErrorFallback.stories.d.ts +7 -0
  69. package/dist/types/src/components/ErrorFallback/ErrorFallback.stories.d.ts.map +1 -0
  70. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts +8 -0
  71. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts.map +1 -0
  72. package/dist/types/src/components/ErrorFallback/ThrowError.d.ts +9 -0
  73. package/dist/types/src/components/ErrorFallback/ThrowError.d.ts.map +1 -0
  74. package/dist/types/src/components/ErrorFallback/index.d.ts +5 -0
  75. package/dist/types/src/components/ErrorFallback/index.d.ts.map +1 -0
  76. package/dist/types/src/components/Icon/Icon.d.ts +2 -2
  77. package/dist/types/src/components/Icon/Icon.d.ts.map +1 -1
  78. package/dist/types/src/components/Icon/Icon.stories.d.ts +17 -0
  79. package/dist/types/src/components/Icon/Icon.stories.d.ts.map +1 -0
  80. package/dist/types/src/components/Image/Image.d.ts +14 -0
  81. package/dist/types/src/components/Image/Image.d.ts.map +1 -0
  82. package/dist/types/src/components/Image/Image.stories.d.ts +33 -0
  83. package/dist/types/src/components/Image/Image.stories.d.ts.map +1 -0
  84. package/dist/types/src/components/Image/index.d.ts +2 -0
  85. package/dist/types/src/components/Image/index.d.ts.map +1 -0
  86. package/dist/types/src/components/Input/Input.d.ts +8 -10
  87. package/dist/types/src/components/Input/Input.d.ts.map +1 -1
  88. package/dist/types/src/components/Input/Input.stories.d.ts +17 -18
  89. package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
  90. package/dist/types/src/components/Link/Link.stories.d.ts +8 -8
  91. package/dist/types/src/components/Link/Link.stories.d.ts.map +1 -1
  92. package/dist/types/src/components/{Lists → List}/List.d.ts +3 -3
  93. package/dist/types/src/components/List/List.d.ts.map +1 -0
  94. package/dist/types/src/components/List/List.stories.d.ts +14 -0
  95. package/dist/types/src/components/List/List.stories.d.ts.map +1 -0
  96. package/dist/types/src/components/List/ListDropIndicator.d.ts.map +1 -0
  97. package/dist/types/src/components/{Lists → List}/Tree.d.ts +1 -1
  98. package/dist/types/src/components/List/Tree.d.ts.map +1 -0
  99. package/dist/types/src/components/List/Tree.stories.d.ts +15 -0
  100. package/dist/types/src/components/List/Tree.stories.d.ts.map +1 -0
  101. package/dist/types/src/components/List/TreeDropIndicator.d.ts.map +1 -0
  102. package/dist/types/src/components/{Lists → List}/Treegrid.d.ts +1 -1
  103. package/dist/types/src/components/{Lists → List}/Treegrid.d.ts.map +1 -1
  104. package/dist/types/src/components/List/Treegrid.stories.d.ts +12 -0
  105. package/dist/types/src/components/List/Treegrid.stories.d.ts.map +1 -0
  106. package/dist/types/src/components/List/index.d.ts.map +1 -0
  107. package/dist/types/src/components/Main/Main.d.ts +18 -28
  108. package/dist/types/src/components/Main/Main.d.ts.map +1 -1
  109. package/dist/types/src/components/Main/Main.stories.d.ts +6 -10
  110. package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
  111. package/dist/types/src/components/{Menus → Menu}/ContextMenu.d.ts +6 -6
  112. package/dist/types/src/components/Menu/ContextMenu.d.ts.map +1 -0
  113. package/dist/types/src/components/Menu/ContextMenu.stories.d.ts +12 -0
  114. package/dist/types/src/components/Menu/ContextMenu.stories.d.ts.map +1 -0
  115. package/dist/types/src/components/Menu/DropdownMenu.d.ts +114 -0
  116. package/dist/types/src/components/Menu/DropdownMenu.d.ts.map +1 -0
  117. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts +20 -0
  118. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts.map +1 -0
  119. package/dist/types/src/components/Menu/index.d.ts.map +1 -0
  120. package/dist/types/src/components/Message/Message.d.ts +1 -1
  121. package/dist/types/src/components/Message/Message.d.ts.map +1 -1
  122. package/dist/types/src/components/Message/Message.stories.d.ts +10 -20
  123. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
  124. package/dist/types/src/components/Popover/Popover.d.ts +30 -24
  125. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  126. package/dist/types/src/components/Popover/Popover.stories.d.ts +6 -34
  127. package/dist/types/src/components/Popover/Popover.stories.d.ts.map +1 -1
  128. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +23 -26
  129. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  130. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +35 -25
  131. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
  132. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +39 -0
  133. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -0
  134. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts +24 -0
  135. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts.map +1 -0
  136. package/dist/types/src/components/ScrollContainer/index.d.ts +2 -0
  137. package/dist/types/src/components/ScrollContainer/index.d.ts.map +1 -0
  138. package/dist/types/src/components/Select/Select.d.ts +10 -10
  139. package/dist/types/src/components/Select/Select.d.ts.map +1 -1
  140. package/dist/types/src/components/Select/Select.stories.d.ts +4 -9
  141. package/dist/types/src/components/Select/Select.stories.d.ts.map +1 -1
  142. package/dist/types/src/components/Separator/Separator.d.ts +4 -4
  143. package/dist/types/src/components/Separator/Separator.d.ts.map +1 -1
  144. package/dist/types/src/components/Skeleton/Skeleton.d.ts +12 -0
  145. package/dist/types/src/components/Skeleton/Skeleton.d.ts.map +1 -0
  146. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts +17 -0
  147. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts.map +1 -0
  148. package/dist/types/src/components/Skeleton/index.d.ts +2 -0
  149. package/dist/types/src/components/Skeleton/index.d.ts.map +1 -0
  150. package/dist/types/src/components/Splitter/Splitter.d.ts +32 -0
  151. package/dist/types/src/components/Splitter/Splitter.d.ts.map +1 -0
  152. package/dist/types/src/components/Splitter/Splitter.stories.d.ts +7 -0
  153. package/dist/types/src/components/Splitter/Splitter.stories.d.ts.map +1 -0
  154. package/dist/types/src/components/Splitter/index.d.ts +2 -0
  155. package/dist/types/src/components/Splitter/index.d.ts.map +1 -0
  156. package/dist/types/src/components/Status/Status.stories.d.ts +6 -10
  157. package/dist/types/src/components/Status/Status.stories.d.ts.map +1 -1
  158. package/dist/types/src/components/Tag/Tag.d.ts +1 -1
  159. package/dist/types/src/components/Tag/Tag.d.ts.map +1 -1
  160. package/dist/types/src/components/Tag/Tag.stories.d.ts +8 -13
  161. package/dist/types/src/components/Tag/Tag.stories.d.ts.map +1 -1
  162. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts +3 -3
  163. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  164. package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts +12 -0
  165. package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts.map +1 -0
  166. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +1 -8
  167. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
  168. package/dist/types/src/components/ThemeProvider/index.d.ts +2 -1
  169. package/dist/types/src/components/ThemeProvider/index.d.ts.map +1 -1
  170. package/dist/types/src/components/Toast/Toast.d.ts +19 -19
  171. package/dist/types/src/components/Toast/Toast.d.ts.map +1 -1
  172. package/dist/types/src/components/Toast/Toast.stories.d.ts +6 -44
  173. package/dist/types/src/components/Toast/Toast.stories.d.ts.map +1 -1
  174. package/dist/types/src/components/Toolbar/Toolbar.d.ts +42 -20
  175. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  176. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts +6 -50
  177. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
  178. package/dist/types/src/components/Tooltip/Tooltip.d.ts +10 -12
  179. package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
  180. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts +8 -61
  181. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
  182. package/dist/types/src/components/index.d.ts +13 -8
  183. package/dist/types/src/components/index.d.ts.map +1 -1
  184. package/dist/types/src/exemplars/generics.stories.d.ts +18 -0
  185. package/dist/types/src/exemplars/generics.stories.d.ts.map +1 -0
  186. package/dist/types/src/exemplars/slot.stories.d.ts +14 -0
  187. package/dist/types/src/exemplars/slot.stories.d.ts.map +1 -0
  188. package/dist/types/src/exemplars/tabster.stories.d.ts +8 -0
  189. package/dist/types/src/exemplars/tabster.stories.d.ts.map +1 -0
  190. package/dist/types/src/exemplars/virtualizer.stories.d.ts +11 -0
  191. package/dist/types/src/exemplars/virtualizer.stories.d.ts.map +1 -0
  192. package/dist/types/src/hooks/index.d.ts +1 -0
  193. package/dist/types/src/hooks/index.d.ts.map +1 -1
  194. package/dist/types/src/hooks/useDensityContext.d.ts +1 -1
  195. package/dist/types/src/hooks/useDensityContext.d.ts.map +1 -1
  196. package/dist/types/src/hooks/useElevationContext.d.ts +1 -1
  197. package/dist/types/src/hooks/useElevationContext.d.ts.map +1 -1
  198. package/dist/types/src/hooks/useSafeArea.d.ts.map +1 -1
  199. package/dist/types/src/hooks/useVisualViewport.d.ts +2 -2
  200. package/dist/types/src/hooks/useVisualViewport.d.ts.map +1 -1
  201. package/dist/types/src/index.d.ts +2 -1
  202. package/dist/types/src/index.d.ts.map +1 -1
  203. package/dist/types/src/playground/Controls.stories.d.ts +5 -9
  204. package/dist/types/src/playground/Controls.stories.d.ts.map +1 -1
  205. package/dist/types/src/playground/Custom.stories.d.ts +12 -4
  206. package/dist/types/src/playground/Custom.stories.d.ts.map +1 -1
  207. package/dist/types/src/playground/Typography.stories.d.ts +5 -11
  208. package/dist/types/src/playground/Typography.stories.d.ts.map +1 -1
  209. package/dist/types/src/primitives/Column/Column.d.ts +26 -0
  210. package/dist/types/src/primitives/Column/Column.d.ts.map +1 -0
  211. package/dist/types/src/primitives/Column/Column.stories.d.ts +6 -0
  212. package/dist/types/src/primitives/Column/Column.stories.d.ts.map +1 -0
  213. package/dist/types/src/primitives/Column/index.d.ts +2 -0
  214. package/dist/types/src/primitives/Column/index.d.ts.map +1 -0
  215. package/dist/types/src/primitives/Container/Container.d.ts +8 -0
  216. package/dist/types/src/primitives/Container/Container.d.ts.map +1 -0
  217. package/dist/types/src/primitives/Container/Container.stories.d.ts +6 -0
  218. package/dist/types/src/primitives/Container/Container.stories.d.ts.map +1 -0
  219. package/dist/types/src/primitives/Container/index.d.ts +2 -0
  220. package/dist/types/src/primitives/Container/index.d.ts.map +1 -0
  221. package/dist/types/src/primitives/Flex/Flex.d.ts +13 -0
  222. package/dist/types/src/primitives/Flex/Flex.d.ts.map +1 -0
  223. package/dist/types/src/primitives/Flex/Flex.stories.d.ts +8 -0
  224. package/dist/types/src/primitives/Flex/Flex.stories.d.ts.map +1 -0
  225. package/dist/types/src/primitives/Flex/index.d.ts +2 -0
  226. package/dist/types/src/primitives/Flex/index.d.ts.map +1 -0
  227. package/dist/types/src/primitives/Grid/Grid.d.ts +15 -0
  228. package/dist/types/src/primitives/Grid/Grid.d.ts.map +1 -0
  229. package/dist/types/src/primitives/Grid/Grid.stories.d.ts +8 -0
  230. package/dist/types/src/primitives/Grid/Grid.stories.d.ts.map +1 -0
  231. package/dist/types/src/primitives/Grid/index.d.ts +2 -0
  232. package/dist/types/src/primitives/Grid/index.d.ts.map +1 -0
  233. package/dist/types/src/primitives/Panel/Panel.d.ts +26 -0
  234. package/dist/types/src/primitives/Panel/Panel.d.ts.map +1 -0
  235. package/dist/types/src/primitives/Panel/Panel.stories.d.ts +6 -0
  236. package/dist/types/src/primitives/Panel/Panel.stories.d.ts.map +1 -0
  237. package/dist/types/src/primitives/Panel/index.d.ts +2 -0
  238. package/dist/types/src/primitives/Panel/index.d.ts.map +1 -0
  239. package/dist/types/src/primitives/index.d.ts +6 -0
  240. package/dist/types/src/primitives/index.d.ts.map +1 -0
  241. package/dist/types/src/testing/Loading.d.ts +9 -0
  242. package/dist/types/src/testing/Loading.d.ts.map +1 -0
  243. package/dist/types/src/testing/decorators/index.d.ts +2 -1
  244. package/dist/types/src/testing/decorators/index.d.ts.map +1 -1
  245. package/dist/types/src/testing/decorators/withLayout.d.ts +15 -0
  246. package/dist/types/src/testing/decorators/withLayout.d.ts.map +1 -0
  247. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts +12 -0
  248. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts.map +1 -0
  249. package/dist/types/src/testing/decorators/withTheme.d.ts +5 -1
  250. package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
  251. package/dist/types/src/testing/index.d.ts +1 -0
  252. package/dist/types/src/testing/index.d.ts.map +1 -1
  253. package/dist/types/src/translations.d.ts +11 -0
  254. package/dist/types/src/translations.d.ts.map +1 -0
  255. package/dist/types/src/util/index.d.ts +2 -1
  256. package/dist/types/src/util/index.d.ts.map +1 -1
  257. package/dist/types/src/util/usePx.d.ts +8 -0
  258. package/dist/types/src/util/usePx.d.ts.map +1 -0
  259. package/dist/types/tsconfig.tsbuildinfo +1 -1
  260. package/package.json +43 -31
  261. package/src/components/Avatars/Avatar.stories.tsx +24 -16
  262. package/src/components/Avatars/Avatar.tsx +9 -16
  263. package/src/components/Avatars/AvatarGroup.stories.tsx +12 -8
  264. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +20 -15
  265. package/src/components/Breadcrumb/Breadcrumb.tsx +12 -38
  266. package/src/components/{Buttons → Button}/Button.stories.tsx +10 -11
  267. package/src/components/{Buttons → Button}/Button.tsx +9 -15
  268. package/src/components/{Buttons → Button}/IconButton.stories.tsx +15 -12
  269. package/src/components/{Buttons → Button}/IconButton.tsx +22 -16
  270. package/src/components/Button/Toggle.stories.tsx +37 -0
  271. package/src/components/{Buttons → Button}/Toggle.tsx +4 -4
  272. package/src/components/{Buttons → Button}/ToggleGroup.stories.tsx +12 -9
  273. package/src/components/Button/ToggleGroup.tsx +50 -0
  274. package/src/components/Card/Card.stories.tsx +151 -0
  275. package/src/components/Card/Card.tsx +390 -0
  276. package/src/components/Card/index.ts +5 -0
  277. package/src/components/Clipboard/ClipboardProvider.tsx +1 -1
  278. package/src/components/Clipboard/CopyButton.tsx +9 -8
  279. package/src/components/DensityProvider/DensityProvider.tsx +2 -2
  280. package/src/components/Dialog/AlertDialog.stories.tsx +69 -0
  281. package/src/components/Dialog/AlertDialog.tsx +255 -0
  282. package/src/components/Dialog/Dialog.stories.tsx +122 -0
  283. package/src/components/Dialog/Dialog.tsx +275 -0
  284. package/src/components/ElevationProvider/ElevationProvider.tsx +2 -2
  285. package/src/components/ErrorFallback/ErrorFallback.stories.tsx +50 -0
  286. package/src/components/ErrorFallback/ErrorFallback.tsx +70 -0
  287. package/src/components/ErrorFallback/ErrorStack.tsx +80 -0
  288. package/src/components/ErrorFallback/ThrowError.tsx +37 -0
  289. package/src/components/ErrorFallback/index.ts +9 -0
  290. package/src/components/Icon/Icon.stories.tsx +113 -0
  291. package/src/components/Icon/Icon.tsx +3 -2
  292. package/src/components/Image/Image.stories.tsx +86 -0
  293. package/src/components/Image/Image.tsx +223 -0
  294. package/src/components/Image/index.ts +5 -0
  295. package/src/components/Input/Input.stories.tsx +28 -49
  296. package/src/components/Input/Input.tsx +49 -85
  297. package/src/components/Link/Link.stories.tsx +12 -8
  298. package/src/components/Link/Link.tsx +2 -2
  299. package/src/components/{Lists → List}/List.stories.tsx +44 -45
  300. package/src/components/{Lists → List}/List.tsx +27 -28
  301. package/src/components/{Lists → List}/ListDropIndicator.tsx +7 -7
  302. package/src/components/{Lists → List}/Tree.stories.tsx +15 -12
  303. package/src/components/{Lists → List}/Tree.tsx +4 -3
  304. package/src/components/{Lists → List}/TreeDropIndicator.tsx +7 -7
  305. package/src/components/{Lists → List}/Treegrid.stories.tsx +15 -9
  306. package/src/components/{Lists → List}/Treegrid.tsx +67 -31
  307. package/src/components/Main/Main.stories.tsx +53 -27
  308. package/src/components/Main/Main.tsx +177 -105
  309. package/src/components/{Menus → Menu}/ContextMenu.stories.tsx +13 -10
  310. package/src/components/{Menus → Menu}/ContextMenu.tsx +10 -33
  311. package/src/components/{Menus → Menu}/DropdownMenu.stories.tsx +14 -11
  312. package/src/components/{Menus → Menu}/DropdownMenu.tsx +155 -118
  313. package/src/components/Message/Message.stories.tsx +35 -16
  314. package/src/components/Message/Message.tsx +46 -33
  315. package/src/components/Popover/Popover.stories.tsx +16 -13
  316. package/src/components/Popover/Popover.tsx +123 -101
  317. package/src/components/ScrollArea/ScrollArea.stories.tsx +163 -34
  318. package/src/components/ScrollArea/ScrollArea.tsx +84 -82
  319. package/src/components/ScrollArea/index.ts +1 -1
  320. package/src/components/ScrollContainer/ScrollContainer.stories.tsx +89 -0
  321. package/src/components/ScrollContainer/ScrollContainer.tsx +238 -0
  322. package/src/components/ScrollContainer/index.ts +5 -0
  323. package/src/components/Select/Select.stories.tsx +15 -12
  324. package/src/components/Select/Select.tsx +16 -31
  325. package/src/components/Separator/Separator.tsx +5 -8
  326. package/src/components/Skeleton/Skeleton.stories.tsx +52 -0
  327. package/src/components/Skeleton/Skeleton.tsx +26 -0
  328. package/src/components/Skeleton/index.ts +5 -0
  329. package/src/components/Splitter/Splitter.stories.tsx +83 -0
  330. package/src/components/Splitter/Splitter.tsx +126 -0
  331. package/src/components/Splitter/index.ts +5 -0
  332. package/src/components/Status/Status.stories.tsx +30 -23
  333. package/src/components/Status/Status.tsx +2 -2
  334. package/src/components/Tag/Tag.stories.tsx +17 -13
  335. package/src/components/Tag/Tag.tsx +3 -8
  336. package/src/components/ThemeProvider/ThemeProvider.stories.tsx +32 -0
  337. package/src/components/ThemeProvider/ThemeProvider.tsx +7 -7
  338. package/src/components/ThemeProvider/TranslationsProvider.tsx +3 -18
  339. package/src/components/ThemeProvider/index.ts +3 -3
  340. package/src/components/Toast/Toast.stories.tsx +14 -11
  341. package/src/components/Toast/Toast.tsx +23 -42
  342. package/src/components/Toolbar/Toolbar.stories.tsx +16 -14
  343. package/src/components/Toolbar/Toolbar.tsx +183 -11
  344. package/src/components/Tooltip/Tooltip.stories.tsx +31 -25
  345. package/src/components/Tooltip/Tooltip.tsx +44 -41
  346. package/src/components/index.ts +14 -9
  347. package/src/exemplars/generics.stories.tsx +49 -0
  348. package/src/exemplars/slot.stories.tsx +107 -0
  349. package/src/exemplars/tabster.stories.tsx +127 -0
  350. package/src/exemplars/virtualizer.stories.tsx +137 -0
  351. package/src/hooks/index.ts +1 -0
  352. package/src/hooks/useDensityContext.ts +1 -1
  353. package/src/hooks/useElevationContext.ts +1 -1
  354. package/src/hooks/useSafeArea.ts +3 -2
  355. package/src/hooks/useVisualViewport.ts +4 -4
  356. package/src/index.ts +2 -1
  357. package/src/playground/Controls.stories.tsx +12 -15
  358. package/src/playground/Custom.stories.tsx +16 -27
  359. package/src/playground/Typography.stories.tsx +11 -9
  360. package/src/primitives/Column/Column.stories.tsx +78 -0
  361. package/src/primitives/Column/Column.tsx +133 -0
  362. package/src/primitives/Column/index.ts +5 -0
  363. package/src/primitives/Container/Container.stories.tsx +30 -0
  364. package/src/primitives/Container/Container.tsx +22 -0
  365. package/src/primitives/Container/index.ts +5 -0
  366. package/src/primitives/Flex/Flex.stories.tsx +58 -0
  367. package/src/primitives/Flex/Flex.tsx +29 -0
  368. package/src/primitives/Flex/index.ts +5 -0
  369. package/src/primitives/Grid/Grid.stories.tsx +57 -0
  370. package/src/primitives/Grid/Grid.tsx +35 -0
  371. package/src/primitives/Grid/index.ts +5 -0
  372. package/src/primitives/Panel/Panel.stories.tsx +67 -0
  373. package/src/primitives/Panel/Panel.tsx +119 -0
  374. package/src/primitives/Panel/index.ts +5 -0
  375. package/src/primitives/index.ts +9 -0
  376. package/src/testing/Loading.tsx +26 -0
  377. package/src/testing/decorators/index.ts +2 -1
  378. package/src/testing/decorators/withLayout.tsx +77 -0
  379. package/src/testing/decorators/withLayoutVariants.tsx +48 -0
  380. package/src/testing/decorators/withTheme.tsx +34 -0
  381. package/src/testing/index.ts +2 -0
  382. package/src/translations.ts +19 -0
  383. package/src/util/index.ts +3 -1
  384. package/src/util/usePx.ts +61 -0
  385. package/dist/lib/browser/chunk-2COVUP44.mjs +0 -4373
  386. package/dist/lib/browser/chunk-2COVUP44.mjs.map +0 -7
  387. package/dist/lib/node-esm/chunk-GHXHND5V.mjs +0 -4375
  388. package/dist/lib/node-esm/chunk-GHXHND5V.mjs.map +0 -7
  389. package/dist/types/src/components/AnchoredOverflow/AnchoredOverflow.d.ts +0 -15
  390. package/dist/types/src/components/AnchoredOverflow/AnchoredOverflow.d.ts.map +0 -1
  391. package/dist/types/src/components/AnchoredOverflow/index.d.ts +0 -2
  392. package/dist/types/src/components/AnchoredOverflow/index.d.ts.map +0 -1
  393. package/dist/types/src/components/Buttons/Button.d.ts.map +0 -1
  394. package/dist/types/src/components/Buttons/Button.stories.d.ts +0 -12
  395. package/dist/types/src/components/Buttons/Button.stories.d.ts.map +0 -1
  396. package/dist/types/src/components/Buttons/IconButton.d.ts.map +0 -1
  397. package/dist/types/src/components/Buttons/IconButton.stories.d.ts +0 -22
  398. package/dist/types/src/components/Buttons/IconButton.stories.d.ts.map +0 -1
  399. package/dist/types/src/components/Buttons/Toggle.d.ts.map +0 -1
  400. package/dist/types/src/components/Buttons/Toggle.stories.d.ts +0 -19
  401. package/dist/types/src/components/Buttons/Toggle.stories.d.ts.map +0 -1
  402. package/dist/types/src/components/Buttons/ToggleGroup.d.ts +0 -28
  403. package/dist/types/src/components/Buttons/ToggleGroup.d.ts.map +0 -1
  404. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts +0 -39
  405. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts.map +0 -1
  406. package/dist/types/src/components/Buttons/index.d.ts.map +0 -1
  407. package/dist/types/src/components/Dialogs/AlertDialog.d.ts +0 -31
  408. package/dist/types/src/components/Dialogs/AlertDialog.d.ts.map +0 -1
  409. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts +0 -43
  410. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts.map +0 -1
  411. package/dist/types/src/components/Dialogs/Dialog.d.ts +0 -31
  412. package/dist/types/src/components/Dialogs/Dialog.d.ts.map +0 -1
  413. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts +0 -48
  414. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts.map +0 -1
  415. package/dist/types/src/components/Dialogs/index.d.ts.map +0 -1
  416. package/dist/types/src/components/Lists/List.d.ts.map +0 -1
  417. package/dist/types/src/components/Lists/List.stories.d.ts +0 -37
  418. package/dist/types/src/components/Lists/List.stories.d.ts.map +0 -1
  419. package/dist/types/src/components/Lists/ListDropIndicator.d.ts.map +0 -1
  420. package/dist/types/src/components/Lists/Tree.d.ts.map +0 -1
  421. package/dist/types/src/components/Lists/Tree.stories.d.ts +0 -41
  422. package/dist/types/src/components/Lists/Tree.stories.d.ts.map +0 -1
  423. package/dist/types/src/components/Lists/TreeDropIndicator.d.ts.map +0 -1
  424. package/dist/types/src/components/Lists/Treegrid.stories.d.ts +0 -10
  425. package/dist/types/src/components/Lists/Treegrid.stories.d.ts.map +0 -1
  426. package/dist/types/src/components/Lists/index.d.ts.map +0 -1
  427. package/dist/types/src/components/Menus/ContextMenu.d.ts.map +0 -1
  428. package/dist/types/src/components/Menus/ContextMenu.stories.d.ts +0 -50
  429. package/dist/types/src/components/Menus/ContextMenu.stories.d.ts.map +0 -1
  430. package/dist/types/src/components/Menus/DropdownMenu.d.ts +0 -112
  431. package/dist/types/src/components/Menus/DropdownMenu.d.ts.map +0 -1
  432. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts +0 -50
  433. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts.map +0 -1
  434. package/dist/types/src/components/Menus/index.d.ts.map +0 -1
  435. package/dist/types/src/testing/decorators/withSurfaceVariantsLayout.d.ts +0 -12
  436. package/dist/types/src/testing/decorators/withSurfaceVariantsLayout.d.ts.map +0 -1
  437. package/dist/types/src/util/ThemedClassName.d.ts +0 -5
  438. package/dist/types/src/util/ThemedClassName.d.ts.map +0 -1
  439. package/src/components/AnchoredOverflow/AnchoredOverflow.tsx +0 -59
  440. package/src/components/AnchoredOverflow/index.ts +0 -5
  441. package/src/components/Buttons/Toggle.stories.tsx +0 -33
  442. package/src/components/Buttons/ToggleGroup.tsx +0 -41
  443. package/src/components/Dialogs/AlertDialog.stories.tsx +0 -66
  444. package/src/components/Dialogs/AlertDialog.tsx +0 -172
  445. package/src/components/Dialogs/Dialog.stories.tsx +0 -65
  446. package/src/components/Dialogs/Dialog.tsx +0 -159
  447. package/src/testing/decorators/withSurfaceVariantsLayout.tsx +0 -51
  448. package/src/testing/decorators/withTheme.ts +0 -25
  449. package/src/util/ThemedClassName.ts +0 -7
  450. /package/dist/types/src/components/{Buttons → Button}/index.d.ts +0 -0
  451. /package/dist/types/src/components/{Dialogs → Dialog}/index.d.ts +0 -0
  452. /package/dist/types/src/components/{Lists → List}/ListDropIndicator.d.ts +0 -0
  453. /package/dist/types/src/components/{Lists → List}/TreeDropIndicator.d.ts +0 -0
  454. /package/dist/types/src/components/{Lists → List}/index.d.ts +0 -0
  455. /package/dist/types/src/components/{Menus → Menu}/index.d.ts +0 -0
  456. /package/src/components/{Buttons → Button}/index.ts +0 -0
  457. /package/src/components/{Dialogs → Dialog}/index.ts +0 -0
  458. /package/src/components/{Lists → List}/index.ts +0 -0
  459. /package/src/components/{Menus → Menu}/index.ts +0 -0
@@ -0,0 +1,126 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import { createContextScope } from '@radix-ui/react-context';
6
+ import { Primitive } from '@radix-ui/react-primitive';
7
+ import { Slot } from '@radix-ui/react-slot';
8
+ import React, { forwardRef } from 'react';
9
+
10
+ import { composableProps } from '@dxos/ui-theme';
11
+ import { type SlottableProps } from '@dxos/ui-types';
12
+
13
+ import { useThemeContext } from '../../hooks';
14
+
15
+ type ScopedProps<P> = P & { __scopeSplitter?: any };
16
+
17
+ // TODO(burdon): Enable resize.
18
+ // TODO(burdon): Generalize horizontal/vertical and change to start/end.
19
+ type Mode = 'upper' | 'lower' | 'both';
20
+
21
+ type SplitterContextValue = {
22
+ mode: Mode;
23
+ ratio: number;
24
+ transition: number;
25
+ };
26
+
27
+ const SPLITTER_NAME = 'Splitter';
28
+
29
+ const [createSplitterContext, createSplitterScope] = createContextScope(SPLITTER_NAME);
30
+
31
+ const [SplitterProvider, useSplitterContext] = createSplitterContext<SplitterContextValue>(SPLITTER_NAME);
32
+
33
+ //
34
+ // Root
35
+ //
36
+
37
+ const ROOT_NAME = 'Splitter.Root';
38
+
39
+ type RootProps = SlottableProps<HTMLDivElement, Partial<SplitterContextValue>>;
40
+
41
+ const Root = forwardRef<HTMLDivElement, ScopedProps<RootProps>>(
42
+ ({ __scopeSplitter, asChild, mode = 'upper', ratio = 0.5, transition = 250, children, ...props }, forwardedRef) => {
43
+ const { className, ...rest } = composableProps(props);
44
+ const Comp = asChild ? Slot : Primitive.div;
45
+ const { tx } = useThemeContext();
46
+ return (
47
+ <SplitterProvider scope={__scopeSplitter} mode={mode} ratio={ratio} transition={transition}>
48
+ <Comp role='none' {...rest} ref={forwardedRef} className={tx('splitter.root', {}, className)}>
49
+ {children}
50
+ </Comp>
51
+ </SplitterProvider>
52
+ );
53
+ },
54
+ );
55
+
56
+ Root.displayName = ROOT_NAME;
57
+
58
+ //
59
+ // Panel
60
+ //
61
+
62
+ const PANEL_NAME = 'Splitter.Panel';
63
+
64
+ type PanelProps = SlottableProps<
65
+ HTMLDivElement,
66
+ {
67
+ position: 'upper' | 'lower';
68
+ }
69
+ >;
70
+
71
+ const Panel = forwardRef<HTMLDivElement, ScopedProps<PanelProps>>(
72
+ ({ __scopeSplitter, asChild, children, position, style, ...props }, forwardedRef) => {
73
+ const { className, ...rest } = composableProps(props);
74
+ const Comp = asChild ? Slot : Primitive.div;
75
+ const { mode, ratio, transition } = useSplitterContext(PANEL_NAME, __scopeSplitter);
76
+ const { tx } = useThemeContext();
77
+
78
+ // Calculate position and height based on mode and ratio.
79
+ const isUpper = position === 'upper';
80
+ const top = isUpper ? '0%' : mode === 'upper' ? '100%' : mode === 'lower' ? '0%' : `${ratio * 100}%`;
81
+
82
+ const height = isUpper
83
+ ? mode === 'upper'
84
+ ? '100%'
85
+ : mode === 'lower'
86
+ ? '0%'
87
+ : `${ratio * 100}%`
88
+ : mode === 'lower'
89
+ ? '100%'
90
+ : mode === 'upper'
91
+ ? '0%'
92
+ : `${(1 - ratio) * 100}%`;
93
+
94
+ return (
95
+ <Comp
96
+ role='none'
97
+ {...rest}
98
+ ref={forwardedRef}
99
+ className={tx('splitter.panel', {}, className)}
100
+ style={{
101
+ top,
102
+ height,
103
+ transition: `top ${transition}ms, height ${transition}ms ease-out`,
104
+ ...style,
105
+ }}
106
+ >
107
+ {children}
108
+ </Comp>
109
+ );
110
+ },
111
+ );
112
+
113
+ Panel.displayName = PANEL_NAME;
114
+
115
+ //
116
+ // Splitter
117
+ //
118
+
119
+ const Splitter = {
120
+ Root,
121
+ Panel,
122
+ };
123
+
124
+ export { Splitter, createSplitterScope };
125
+
126
+ 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,35 +2,42 @@
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
- export const Normal = (props: any) => {
20
- return (
21
- <div className='m-5 space-b-5'>
22
- <Status classNames='block' progress={0} {...props} />
23
- <Status classNames='block' progress={0.3} {...props} />
24
- <Status classNames='block' progress={0.7} {...props} />
25
- <Status classNames='block' progress={1} {...props} />
26
- </div>
27
- );
22
+ export const Normal: Story = {
23
+ render: (props) => {
24
+ return (
25
+ <div className='m-5 space-b-5'>
26
+ <Status classNames='block' progress={0} {...props} />
27
+ <Status classNames='block' progress={0.3} {...props} />
28
+ <Status classNames='block' progress={0.7} {...props} />
29
+ <Status classNames='block' progress={1} {...props} />
30
+ </div>
31
+ );
32
+ },
28
33
  };
29
34
 
30
- export const Indeterminate = (props: any) => {
31
- return (
32
- <div className='m-5'>
33
- <Status classNames='block' indeterminate {...props} />
34
- </div>
35
- );
35
+ export const Indeterminate: Story = {
36
+ render: (props) => {
37
+ return (
38
+ <div className='m-5'>
39
+ <Status classNames='block' indeterminate {...props} />
40
+ </div>
41
+ );
42
+ },
36
43
  };
@@ -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,27 +1,24 @@
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';
10
+
11
+ import { withLayout, withTheme } from '../../testing';
9
12
 
10
13
  import { Tag } from './Tag';
11
- import { withTheme } from '../../testing';
12
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
- <div role='grid' className='grid grid-cols-5 gap-2 max-is-screen-md'>
21
+ <div>
25
22
  {palettes.map((palette) => (
26
23
  <Tag key={palette} palette={palette}>
27
24
  {palette}
@@ -29,4 +26,11 @@ export const Default = {
29
26
  ))}
30
27
  </div>
31
28
  ),
32
- };
29
+ decorators: [withTheme(), withLayout({ layout: 'default' })],
30
+ } satisfies Meta<typeof Tag>;
31
+
32
+ export default meta;
33
+
34
+ type Story = StoryObj<typeof meta>;
35
+
36
+ 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';
@@ -19,14 +19,9 @@ export type TagProps = ThemedClassName<ComponentPropsWithRef<typeof Primitive.sp
19
19
  export const Tag = forwardRef<HTMLSpanElement, TagProps>(
20
20
  ({ asChild, palette = 'neutral', classNames, ...props }, forwardedRef) => {
21
21
  const { tx } = useThemeContext();
22
- const Root = asChild ? Slot : Primitive.span;
22
+ const Comp = 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
+ <Comp {...props} className={tx('tag.root', { palette }, classNames)} data-hue={palette} ref={forwardedRef} />
30
25
  );
31
26
  },
32
27
  );
@@ -0,0 +1,32 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
+ import React from 'react';
7
+
8
+ import { useThemeContext } from '../../hooks';
9
+ import { withLayout, withTheme } from '../../testing';
10
+
11
+ import { ThemeProvider } from './ThemeProvider';
12
+
13
+ const meta = {
14
+ title: 'ui/react-ui-core/components/ThemeProvider',
15
+ component: ThemeProvider,
16
+ render: () => {
17
+ const { themeMode, platform } = useThemeContext();
18
+ return (
19
+ <div className='p-4 flex flex-col gap-4'>
20
+ <h1>ThemeProvider</h1>
21
+ <pre className='text-sm text-description'>{JSON.stringify({ themeMode, platform }, null, 2)}</pre>
22
+ </div>
23
+ );
24
+ },
25
+ decorators: [withTheme(), withLayout()],
26
+ } satisfies Meta<typeof ThemeProvider>;
27
+
28
+ export default meta;
29
+
30
+ type Story = StoryObj<typeof meta>;
31
+
32
+ export const Default: Story = {};
@@ -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
@@ -78,8 +78,8 @@ export const ThemeProvider = ({
78
78
 
79
79
  const handleInputModalityChange = (isUsingKeyboard: boolean) => {
80
80
  if (isUsingKeyboard) {
81
- document.body.setAttribute('data-is-keyboard', 'true');
81
+ document.body.setAttribute('data-w-keyboard', 'true');
82
82
  } else {
83
- document.body.removeAttribute('data-is-keyboard');
83
+ document.body.removeAttribute('data-w-keyboard');
84
84
  }
85
85
  };
@@ -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';
@@ -2,13 +2,13 @@
2
2
  // Copyright 2022 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, { type ReactNode, useState } from 'react';
8
7
 
9
- import { Toast } from './Toast';
10
8
  import { withTheme } from '../../testing';
11
- import { Button } from '../Buttons';
9
+ import { Button } from '../Button';
10
+
11
+ import { Toast } from './Toast';
12
12
 
13
13
  type ActionTriggerProps = { altText: string; trigger: ReactNode };
14
14
 
@@ -44,15 +44,18 @@ const DefaultStory = ({ title, description, actionTriggers, openTrigger, closeTr
44
44
  );
45
45
  };
46
46
 
47
- export default {
48
- title: 'ui/react-ui-core/Toast',
49
- component: Toast,
47
+ const meta = {
48
+ title: 'ui/react-ui-core/components/Toast',
49
+ component: Toast as any,
50
50
  render: DefaultStory,
51
- decorators: [withTheme],
52
- parameters: { chromatic: { disableSnapshot: false } },
53
- };
51
+ decorators: [withTheme()],
52
+ } satisfies Meta<typeof DefaultStory>;
53
+
54
+ export default meta;
55
+
56
+ type Story = StoryObj<typeof meta>;
54
57
 
55
- export const Default = {
58
+ export const Default: Story = {
56
59
  args: {
57
60
  openTrigger: 'Open toast',
58
61
  title: 'This is a toast',
@@ -4,49 +4,32 @@
4
4
 
5
5
  import { Primitive } from '@radix-ui/react-primitive';
6
6
  import { Slot } from '@radix-ui/react-slot';
7
- import {
8
- ToastProvider as ToastProviderPrimitive,
9
- type ToastProviderProps as ToastProviderPrimitiveProps,
10
- ToastViewport as ToastViewportPrimitive,
11
- type ToastViewportProps as ToastViewportPrimitiveProps,
12
- Root as ToastRootPrimitive,
13
- type ToastProps as ToastRootPrimitiveProps,
14
- ToastTitle as ToastTitlePrimitive,
15
- type ToastTitleProps as ToastTitlePrimitiveProps,
16
- ToastDescription as ToastDescriptionPrimitive,
17
- type ToastDescriptionProps as ToastDescriptionPrimitiveProps,
18
- ToastAction as ToastActionPrimitive,
19
- type ToastActionProps as ToastActionPrimitiveProps,
20
- ToastClose as ToastClosePrimitive,
21
- type ToastCloseProps as ToastClosePrimitiveProps,
22
- } from '@radix-ui/react-toast';
23
- import React, { type ComponentPropsWithRef, forwardRef, type FunctionComponent } from 'react';
7
+ import * as ToastPrimitive from '@radix-ui/react-toast';
8
+ import React, { type ComponentPropsWithRef, type FunctionComponent, forwardRef } from 'react';
24
9
 
25
10
  import { useThemeContext } from '../../hooks';
26
11
  import { type ThemedClassName } from '../../util';
27
12
  import { ElevationProvider } from '../ElevationProvider';
28
13
 
29
- type ToastProviderProps = ToastProviderPrimitiveProps;
14
+ type ToastProviderProps = ToastPrimitive.ToastProviderProps;
30
15
 
31
- const ToastProvider: FunctionComponent<ToastProviderProps> = ToastProviderPrimitive;
16
+ const ToastProvider: FunctionComponent<ToastProviderProps> = ToastPrimitive.Provider;
32
17
 
33
- type ToastViewportProps = ThemedClassName<ToastViewportPrimitiveProps>;
18
+ type ToastViewportProps = ThemedClassName<ToastPrimitive.ToastViewportProps>;
34
19
 
35
20
  const ToastViewport = forwardRef<HTMLOListElement, ToastViewportProps>(({ classNames, ...props }, forwardedRef) => {
36
21
  const { tx } = useThemeContext();
37
- return (
38
- <ToastViewportPrimitive className={tx('toast.viewport', 'toast-viewport', {}, classNames)} ref={forwardedRef} />
39
- );
22
+ return <ToastPrimitive.Viewport {...props} className={tx('toast.viewport', {}, classNames)} ref={forwardedRef} />;
40
23
  });
41
24
 
42
- type ToastRootProps = ThemedClassName<ToastRootPrimitiveProps>;
25
+ type ToastRootProps = ThemedClassName<ToastPrimitive.ToastProps>;
43
26
 
44
27
  const ToastRoot = forwardRef<HTMLLIElement, ToastRootProps>(({ classNames, children, ...props }, forwardedRef) => {
45
28
  const { tx } = useThemeContext();
46
29
  return (
47
- <ToastRootPrimitive {...props} className={tx('toast.root', 'toast', {}, classNames)} ref={forwardedRef}>
30
+ <ToastPrimitive.Root {...props} className={tx('toast.root', {}, classNames)} ref={forwardedRef}>
48
31
  <ElevationProvider elevation='toast'>{children}</ElevationProvider>
49
- </ToastRootPrimitive>
32
+ </ToastPrimitive.Root>
50
33
  );
51
34
  });
52
35
 
@@ -54,29 +37,27 @@ type ToastBodyProps = ThemedClassName<ComponentPropsWithRef<typeof Primitive.div
54
37
 
55
38
  const ToastBody = forwardRef<HTMLDivElement, ToastBodyProps>(({ asChild, classNames, ...props }, forwardedRef) => {
56
39
  const { tx } = useThemeContext();
57
- const Root = asChild ? Slot : Primitive.div;
58
- return <Root {...props} className={tx('toast.body', 'toast__body', {}, classNames)} ref={forwardedRef} />;
40
+ const Comp = asChild ? Slot : Primitive.div;
41
+ return <Comp {...props} className={tx('toast.body', {}, classNames)} ref={forwardedRef} />;
59
42
  });
60
43
 
61
- type ToastTitleProps = ThemedClassName<ToastTitlePrimitiveProps>;
44
+ type ToastTitleProps = ThemedClassName<ToastPrimitive.ToastTitleProps>;
62
45
 
63
46
  const ToastTitle = forwardRef<HTMLHeadingElement, ToastTitleProps>(
64
47
  ({ asChild, classNames, ...props }, forwardedRef) => {
65
48
  const { tx } = useThemeContext();
66
- const Root = asChild ? Slot : ToastTitlePrimitive;
67
- return <Root {...props} className={tx('toast.title', 'toast__title', {}, classNames)} ref={forwardedRef} />;
49
+ const Comp = asChild ? Slot : ToastPrimitive.Title;
50
+ return <Comp {...props} className={tx('toast.title', {}, classNames)} ref={forwardedRef} />;
68
51
  },
69
52
  );
70
53
 
71
- type ToastDescriptionProps = ThemedClassName<ToastDescriptionPrimitiveProps>;
54
+ type ToastDescriptionProps = ThemedClassName<ToastPrimitive.ToastDescriptionProps>;
72
55
 
73
56
  const ToastDescription = forwardRef<HTMLParagraphElement, ToastDescriptionProps>(
74
57
  ({ asChild, classNames, ...props }, forwardedRef) => {
75
58
  const { tx } = useThemeContext();
76
- const Root = asChild ? Slot : ToastDescriptionPrimitive;
77
- return (
78
- <Root {...props} className={tx('toast.description', 'toast__description', {}, classNames)} ref={forwardedRef} />
79
- );
59
+ const Comp = asChild ? Slot : ToastPrimitive.Description;
60
+ return <Comp {...props} className={tx('toast.description', {}, classNames)} ref={forwardedRef} />;
80
61
  },
81
62
  );
82
63
 
@@ -85,18 +66,18 @@ type ToastActionsProps = ThemedClassName<ComponentPropsWithRef<typeof Primitive.
85
66
  const ToastActions = forwardRef<HTMLDivElement, ToastActionsProps>(
86
67
  ({ asChild, classNames, ...props }, forwardedRef) => {
87
68
  const { tx } = useThemeContext();
88
- const Root = asChild ? Slot : Primitive.div;
89
- return <Root {...props} className={tx('toast.actions', 'toast__actions', {}, classNames)} ref={forwardedRef} />;
69
+ const Comp = asChild ? Slot : Primitive.div;
70
+ return <Comp {...props} className={tx('toast.actions', {}, classNames)} ref={forwardedRef} />;
90
71
  },
91
72
  );
92
73
 
93
- type ToastActionProps = ToastActionPrimitiveProps;
74
+ type ToastActionProps = ToastPrimitive.ToastActionProps;
94
75
 
95
- const ToastAction: FunctionComponent<ToastActionProps> = ToastActionPrimitive;
76
+ const ToastAction: FunctionComponent<ToastActionProps> = ToastPrimitive.Action;
96
77
 
97
- type ToastCloseProps = ToastClosePrimitiveProps;
78
+ type ToastCloseProps = ToastPrimitive.ToastCloseProps;
98
79
 
99
- const ToastClose: FunctionComponent<ToastCloseProps> = ToastClosePrimitive;
80
+ const ToastClose: FunctionComponent<ToastCloseProps> = ToastPrimitive.Close;
100
81
 
101
82
  export const Toast = {
102
83
  Provider: ToastProvider,
@@ -2,16 +2,16 @@
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 { Toolbar } from './Toolbar';
10
8
  import { withTheme } from '../../testing';
11
- import { Toggle } from '../Buttons';
9
+ import { Toggle } from '../Button';
12
10
  import { Icon } from '../Icon';
13
11
  import { Select } from '../Select';
14
12
 
13
+ import { Toolbar } from './Toolbar';
14
+
15
15
  type StorybookToolbarProps = {};
16
16
 
17
17
  const DefaultStory = (props: StorybookToolbarProps) => {
@@ -29,6 +29,7 @@ const DefaultStory = (props: StorybookToolbarProps) => {
29
29
  <Select.Option value={'b'}>B</Select.Option>
30
30
  <Select.Option value={'c'}>C</Select.Option>
31
31
  </Select.Viewport>
32
+ <Select.Arrow />
32
33
  </Select.Content>
33
34
  </Select.Portal>
34
35
  </Select.Root>
@@ -62,21 +63,22 @@ const DefaultStory = (props: StorybookToolbarProps) => {
62
63
  </Toolbar.Button>
63
64
  <Toolbar.Separator />
64
65
  <Toolbar.Button>Test</Toolbar.Button>
65
- <Toolbar.Button>
66
- <Icon icon='ph--arrow-clockwise--regular' />
67
- </Toolbar.Button>
66
+ <Toolbar.IconButton icon='ph--arrow-clockwise--regular' label='Refresh' iconOnly />
68
67
  </Toolbar.Root>
69
68
  );
70
69
  };
71
70
 
72
- export default {
73
- title: 'ui/react-ui-core/Toolbar',
74
- component: Toolbar,
71
+ const meta = {
72
+ title: 'ui/react-ui-core/components/Toolbar',
73
+ component: Toolbar as any,
75
74
  render: DefaultStory,
76
- decorators: [withTheme],
77
- parameters: { chromatic: { disableSnapshot: false } },
78
- };
75
+ decorators: [withTheme()],
76
+ } satisfies Meta<typeof DefaultStory>;
77
+
78
+ export default meta;
79
+
80
+ type Story = StoryObj<typeof meta>;
79
81
 
80
- export const Default = {
82
+ export const Default: Story = {
81
83
  args: {},
82
84
  };