@dxos/react-ui 0.8.4-main.3c1ae3b → 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 (242) 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 +3198 -66
  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 +34 -45
  7. package/dist/lib/browser/testing/index.mjs.map +3 -3
  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 +3198 -66
  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 +34 -45
  14. package/dist/lib/node-esm/testing/index.mjs.map +3 -3
  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.map +1 -1
  18. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
  19. package/dist/types/src/components/Button/Button.d.ts +1 -1
  20. package/dist/types/src/components/Button/Button.d.ts.map +1 -1
  21. package/dist/types/src/components/Button/IconButton.d.ts.map +1 -1
  22. package/dist/types/src/components/Button/ToggleGroup.d.ts +4 -4
  23. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts +4 -4
  24. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts +1 -1
  25. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts.map +1 -1
  26. package/dist/types/src/components/Dialog/AlertDialog.d.ts.map +1 -1
  27. package/dist/types/src/components/Dialog/Dialog.d.ts +23 -8
  28. package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -1
  29. package/dist/types/src/components/Dialog/Dialog.stories.d.ts +7 -5
  30. package/dist/types/src/components/Dialog/Dialog.stories.d.ts.map +1 -1
  31. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts +1 -1
  32. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts.map +1 -1
  33. package/dist/types/src/components/Icon/Icon.d.ts +1 -1
  34. package/dist/types/src/components/Icon/Icon.d.ts.map +1 -1
  35. package/dist/types/src/components/Input/Input.d.ts +1 -1
  36. package/dist/types/src/components/Input/Input.d.ts.map +1 -1
  37. package/dist/types/src/components/Input/Input.stories.d.ts +2 -2
  38. package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
  39. package/dist/types/src/components/List/List.d.ts +1 -1
  40. package/dist/types/src/components/List/List.d.ts.map +1 -1
  41. package/dist/types/src/components/List/List.stories.d.ts.map +1 -1
  42. package/dist/types/src/components/List/Treegrid.d.ts.map +1 -1
  43. package/dist/types/src/components/Main/Main.d.ts +8 -9
  44. package/dist/types/src/components/Main/Main.d.ts.map +1 -1
  45. package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
  46. package/dist/types/src/components/{Menus → Menu}/ContextMenu.d.ts +6 -6
  47. package/dist/types/src/components/Menu/ContextMenu.d.ts.map +1 -0
  48. package/dist/types/src/components/Menu/ContextMenu.stories.d.ts.map +1 -0
  49. package/dist/types/src/components/{Menus → Menu}/DropdownMenu.d.ts +1 -1
  50. package/dist/types/src/components/Menu/DropdownMenu.d.ts.map +1 -0
  51. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts.map +1 -0
  52. package/dist/types/src/components/Menu/index.d.ts.map +1 -0
  53. package/dist/types/src/components/Message/Message.d.ts +1 -1
  54. package/dist/types/src/components/Message/Message.d.ts.map +1 -1
  55. package/dist/types/src/components/Message/Message.stories.d.ts +1 -1
  56. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
  57. package/dist/types/src/components/Popover/Popover.d.ts +1 -1
  58. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  59. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +25 -26
  60. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  61. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +46 -8
  62. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
  63. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +2 -2
  64. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -1
  65. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts +1 -1
  66. package/dist/types/src/components/Select/Select.d.ts +9 -9
  67. package/dist/types/src/components/Select/Select.d.ts.map +1 -1
  68. package/dist/types/src/components/Separator/Separator.d.ts +1 -1
  69. package/dist/types/src/components/Skeleton/Skeleton.d.ts +12 -0
  70. package/dist/types/src/components/Skeleton/Skeleton.d.ts.map +1 -0
  71. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts +17 -0
  72. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts.map +1 -0
  73. package/dist/types/src/components/Skeleton/index.d.ts +2 -0
  74. package/dist/types/src/components/Skeleton/index.d.ts.map +1 -0
  75. package/dist/types/src/components/Splitter/Splitter.d.ts +26 -0
  76. package/dist/types/src/components/Splitter/Splitter.d.ts.map +1 -0
  77. package/dist/types/src/components/Splitter/Splitter.stories.d.ts +7 -0
  78. package/dist/types/src/components/Splitter/Splitter.stories.d.ts.map +1 -0
  79. package/dist/types/src/components/Splitter/index.d.ts +2 -0
  80. package/dist/types/src/components/Splitter/index.d.ts.map +1 -0
  81. package/dist/types/src/components/Tag/Tag.d.ts +1 -1
  82. package/dist/types/src/components/Tag/Tag.d.ts.map +1 -1
  83. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts +2 -2
  84. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  85. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +1 -8
  86. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
  87. package/dist/types/src/components/ThemeProvider/index.d.ts +2 -1
  88. package/dist/types/src/components/ThemeProvider/index.d.ts.map +1 -1
  89. package/dist/types/src/components/Toast/Toast.d.ts +4 -4
  90. package/dist/types/src/components/Toast/Toast.d.ts.map +1 -1
  91. package/dist/types/src/components/Toolbar/Toolbar.d.ts +13 -12
  92. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  93. package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
  94. package/dist/types/src/components/index.d.ts +3 -1
  95. package/dist/types/src/components/index.d.ts.map +1 -1
  96. package/dist/types/src/exemplars/generics.stories.d.ts +17 -0
  97. package/dist/types/src/exemplars/generics.stories.d.ts.map +1 -0
  98. package/dist/types/src/exemplars/slot.stories.d.ts +14 -0
  99. package/dist/types/src/exemplars/slot.stories.d.ts.map +1 -0
  100. package/dist/types/src/exemplars/tabster.stories.d.ts +8 -0
  101. package/dist/types/src/exemplars/tabster.stories.d.ts.map +1 -0
  102. package/dist/types/src/hooks/useDensityContext.d.ts +1 -1
  103. package/dist/types/src/hooks/useDensityContext.d.ts.map +1 -1
  104. package/dist/types/src/hooks/useElevationContext.d.ts +1 -1
  105. package/dist/types/src/hooks/useElevationContext.d.ts.map +1 -1
  106. package/dist/types/src/index.d.ts +2 -1
  107. package/dist/types/src/index.d.ts.map +1 -1
  108. package/dist/types/src/playground/Controls.stories.d.ts.map +1 -1
  109. package/dist/types/src/primitives/Container/Container.d.ts +23 -0
  110. package/dist/types/src/primitives/Container/Container.d.ts.map +1 -0
  111. package/dist/types/src/primitives/Container/Container.stories.d.ts +11 -0
  112. package/dist/types/src/primitives/Container/Container.stories.d.ts.map +1 -0
  113. package/dist/types/src/primitives/Container/Layout.d.ts +18 -0
  114. package/dist/types/src/primitives/Container/Layout.d.ts.map +1 -0
  115. package/dist/types/src/primitives/Container/Layout.stories.d.ts +10 -0
  116. package/dist/types/src/primitives/Container/Layout.stories.d.ts.map +1 -0
  117. package/dist/types/src/primitives/Container/index.d.ts +3 -0
  118. package/dist/types/src/primitives/Container/index.d.ts.map +1 -0
  119. package/dist/types/src/primitives/Flex/Flex.d.ts +8 -0
  120. package/dist/types/src/primitives/Flex/Flex.d.ts.map +1 -0
  121. package/dist/types/src/primitives/Flex/index.d.ts +2 -0
  122. package/dist/types/src/primitives/Flex/index.d.ts.map +1 -0
  123. package/dist/types/src/primitives/index.d.ts +3 -0
  124. package/dist/types/src/primitives/index.d.ts.map +1 -0
  125. package/dist/types/src/testing/decorators/withLayout.d.ts +3 -3
  126. package/dist/types/src/testing/decorators/withLayout.d.ts.map +1 -1
  127. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts +1 -1
  128. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts.map +1 -1
  129. package/dist/types/src/testing/decorators/withTheme.d.ts +3 -2
  130. package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
  131. package/dist/types/src/util/index.d.ts +1 -2
  132. package/dist/types/src/util/index.d.ts.map +1 -1
  133. package/dist/types/tsconfig.tsbuildinfo +1 -1
  134. package/package.json +37 -32
  135. package/src/components/AnchoredOverflow/AnchoredOverflow.tsx +10 -12
  136. package/src/components/Avatars/Avatar.stories.tsx +4 -4
  137. package/src/components/Avatars/Avatar.tsx +3 -10
  138. package/src/components/Avatars/AvatarGroup.stories.tsx +2 -2
  139. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +2 -2
  140. package/src/components/Breadcrumb/Breadcrumb.tsx +5 -31
  141. package/src/components/Button/Button.stories.tsx +2 -2
  142. package/src/components/Button/Button.tsx +2 -8
  143. package/src/components/Button/IconButton.stories.tsx +2 -2
  144. package/src/components/Button/IconButton.tsx +5 -2
  145. package/src/components/Button/Toggle.stories.tsx +2 -2
  146. package/src/components/Button/ToggleGroup.stories.tsx +2 -2
  147. package/src/components/Clipboard/CopyButton.tsx +3 -3
  148. package/src/components/DensityProvider/DensityProvider.tsx +1 -1
  149. package/src/components/Dialog/AlertDialog.stories.tsx +2 -2
  150. package/src/components/Dialog/AlertDialog.tsx +3 -8
  151. package/src/components/Dialog/Dialog.stories.tsx +57 -23
  152. package/src/components/Dialog/Dialog.tsx +162 -43
  153. package/src/components/ElevationProvider/ElevationProvider.tsx +1 -1
  154. package/src/components/Icon/Icon.stories.tsx +3 -3
  155. package/src/components/Icon/Icon.tsx +2 -2
  156. package/src/components/Input/Input.stories.tsx +12 -11
  157. package/src/components/Input/Input.tsx +12 -27
  158. package/src/components/Link/Link.stories.tsx +2 -2
  159. package/src/components/Link/Link.tsx +1 -1
  160. package/src/components/List/List.stories.tsx +18 -14
  161. package/src/components/List/List.tsx +8 -14
  162. package/src/components/List/Tree.stories.tsx +2 -2
  163. package/src/components/List/Treegrid.stories.tsx +2 -2
  164. package/src/components/List/Treegrid.tsx +4 -9
  165. package/src/components/Main/Main.stories.tsx +41 -20
  166. package/src/components/Main/Main.tsx +128 -71
  167. package/src/components/{Menus → Menu}/ContextMenu.stories.tsx +2 -2
  168. package/src/components/{Menus → Menu}/ContextMenu.tsx +7 -31
  169. package/src/components/{Menus → Menu}/DropdownMenu.stories.tsx +2 -2
  170. package/src/components/{Menus → Menu}/DropdownMenu.tsx +65 -63
  171. package/src/components/Message/Message.stories.tsx +3 -3
  172. package/src/components/Message/Message.tsx +32 -23
  173. package/src/components/Popover/Popover.stories.tsx +2 -2
  174. package/src/components/Popover/Popover.tsx +38 -36
  175. package/src/components/ScrollArea/ScrollArea.stories.tsx +166 -40
  176. package/src/components/ScrollArea/ScrollArea.tsx +80 -82
  177. package/src/components/ScrollArea/index.ts +1 -1
  178. package/src/components/ScrollContainer/ScrollContainer.stories.tsx +2 -2
  179. package/src/components/ScrollContainer/ScrollContainer.tsx +14 -9
  180. package/src/components/Select/Select.stories.tsx +2 -2
  181. package/src/components/Select/Select.tsx +9 -25
  182. package/src/components/Separator/Separator.tsx +1 -1
  183. package/src/components/Skeleton/Skeleton.stories.tsx +52 -0
  184. package/src/components/Skeleton/Skeleton.tsx +26 -0
  185. package/src/components/Skeleton/index.ts +5 -0
  186. package/src/components/Splitter/Splitter.stories.tsx +73 -0
  187. package/src/components/Splitter/Splitter.tsx +123 -0
  188. package/src/components/Splitter/index.ts +5 -0
  189. package/src/components/Status/Status.stories.tsx +2 -2
  190. package/src/components/Status/Status.tsx +2 -2
  191. package/src/components/Tag/Tag.stories.tsx +4 -4
  192. package/src/components/Tag/Tag.tsx +2 -7
  193. package/src/components/ThemeProvider/ThemeProvider.tsx +3 -4
  194. package/src/components/ThemeProvider/TranslationsProvider.tsx +1 -16
  195. package/src/components/ThemeProvider/index.ts +3 -3
  196. package/src/components/Toast/Toast.stories.tsx +2 -2
  197. package/src/components/Toast/Toast.tsx +6 -10
  198. package/src/components/Toolbar/Toolbar.stories.tsx +2 -2
  199. package/src/components/Toolbar/Toolbar.tsx +31 -12
  200. package/src/components/Tooltip/Tooltip.stories.tsx +2 -2
  201. package/src/components/Tooltip/Tooltip.tsx +24 -22
  202. package/src/components/index.ts +3 -1
  203. package/src/exemplars/generics.stories.tsx +44 -0
  204. package/src/exemplars/slot.stories.tsx +108 -0
  205. package/src/exemplars/tabster.stories.tsx +127 -0
  206. package/src/hooks/useDensityContext.ts +1 -1
  207. package/src/hooks/useElevationContext.ts +1 -1
  208. package/src/index.ts +2 -1
  209. package/src/playground/Controls.stories.tsx +3 -4
  210. package/src/playground/Custom.stories.tsx +2 -2
  211. package/src/playground/Typography.stories.tsx +2 -2
  212. package/src/primitives/Container/Container.stories.tsx +67 -0
  213. package/src/primitives/Container/Container.tsx +79 -0
  214. package/src/primitives/Container/Layout.stories.tsx +57 -0
  215. package/src/primitives/Container/Layout.tsx +61 -0
  216. package/src/primitives/Container/index.ts +6 -0
  217. package/src/primitives/Flex/Flex.tsx +26 -0
  218. package/src/primitives/Flex/index.ts +5 -0
  219. package/src/primitives/index.ts +6 -0
  220. package/src/testing/decorators/withLayout.tsx +22 -15
  221. package/src/testing/decorators/withLayoutVariants.tsx +2 -2
  222. package/src/testing/decorators/withTheme.tsx +21 -18
  223. package/src/util/index.ts +2 -2
  224. package/dist/lib/browser/chunk-BFCXP6YC.mjs +0 -4710
  225. package/dist/lib/browser/chunk-BFCXP6YC.mjs.map +0 -7
  226. package/dist/lib/node-esm/chunk-F4Z46DD6.mjs +0 -4712
  227. package/dist/lib/node-esm/chunk-F4Z46DD6.mjs.map +0 -7
  228. package/dist/types/src/components/Menus/ContextMenu.d.ts.map +0 -1
  229. package/dist/types/src/components/Menus/ContextMenu.stories.d.ts.map +0 -1
  230. package/dist/types/src/components/Menus/DropdownMenu.d.ts.map +0 -1
  231. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts.map +0 -1
  232. package/dist/types/src/components/Menus/index.d.ts.map +0 -1
  233. package/dist/types/src/util/ThemedClassName.d.ts +0 -5
  234. package/dist/types/src/util/ThemedClassName.d.ts.map +0 -1
  235. package/dist/types/src/util/domino.d.ts +0 -18
  236. package/dist/types/src/util/domino.d.ts.map +0 -1
  237. package/src/util/ThemedClassName.ts +0 -7
  238. package/src/util/domino.ts +0 -53
  239. /package/dist/types/src/components/{Menus → Menu}/ContextMenu.stories.d.ts +0 -0
  240. /package/dist/types/src/components/{Menus → Menu}/DropdownMenu.stories.d.ts +0 -0
  241. /package/dist/types/src/components/{Menus → Menu}/index.d.ts +0 -0
  242. /package/src/components/{Menus → Menu}/index.ts +0 -0
package/package.json CHANGED
@@ -1,25 +1,29 @@
1
1
  {
2
2
  "name": "@dxos/react-ui",
3
- "version": "0.8.4-main.3c1ae3b",
3
+ "version": "0.8.4-main.3eb6e50203",
4
4
  "description": "Low-level React components for DXOS, applying a theme to a core group of primitives",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/dxos/dxos"
10
+ },
7
11
  "license": "MIT",
8
12
  "author": "DXOS.org",
9
- "sideEffects": true,
13
+ "sideEffects": false,
10
14
  "type": "module",
11
15
  "exports": {
12
16
  ".": {
13
- "source": "./src/index.ts",
14
- "types": "./dist/types/src/index.d.ts",
15
17
  "browser": "./dist/lib/browser/index.mjs",
16
- "node": "./dist/lib/node-esm/index.mjs"
18
+ "node": "./dist/lib/node-esm/index.mjs",
19
+ "source": "./src/index.ts",
20
+ "types": "./dist/types/src/index.d.ts"
17
21
  },
18
22
  "./testing": {
19
- "source": "./src/testing/index.ts",
20
- "types": "./dist/types/src/testing/index.d.ts",
21
23
  "browser": "./dist/lib/browser/testing/index.mjs",
22
- "node": "./dist/lib/node-esm/testing/index.mjs"
24
+ "node": "./dist/lib/node-esm/testing/index.mjs",
25
+ "source": "./src/testing/index.ts",
26
+ "types": "./dist/types/src/testing/index.d.ts"
23
27
  }
24
28
  },
25
29
  "types": "dist/types/src/index.d.ts",
@@ -35,9 +39,9 @@
35
39
  "src"
36
40
  ],
37
41
  "dependencies": {
38
- "@atlaskit/pragmatic-drag-and-drop-hitbox": "^1.0.3",
39
- "@fluentui/react-tabster": "^9.24.2",
40
- "@preact-signals/safe-react": "^0.9.0",
42
+ "@atlaskit/pragmatic-drag-and-drop-hitbox": "1.1.0",
43
+ "@effect-atom/atom-react": "^0.5.0",
44
+ "@fluentui/react-tabster": "9.26.11",
41
45
  "@radix-ui/primitive": "1.1.1",
42
46
  "@radix-ui/react-alert-dialog": "1.1.6",
43
47
  "@radix-ui/react-avatar": "1.1.3",
@@ -74,35 +78,36 @@
74
78
  "keyborg": "^2.5.0",
75
79
  "react-i18next": "^11.18.6",
76
80
  "react-remove-scroll": "^2.6.0",
77
- "@dxos/async": "0.8.4-main.3c1ae3b",
78
- "@dxos/invariant": "0.8.4-main.3c1ae3b",
79
- "@dxos/debug": "0.8.4-main.3c1ae3b",
80
- "@dxos/log": "0.8.4-main.3c1ae3b",
81
- "@dxos/react-hooks": "0.8.4-main.3c1ae3b",
82
- "@dxos/lit-ui": "0.8.4-main.3c1ae3b",
83
- "@dxos/react-input": "0.8.4-main.3c1ae3b",
84
- "@dxos/react-list": "0.8.4-main.3c1ae3b",
85
- "@dxos/react-ui-types": "0.8.4-main.3c1ae3b",
86
- "@dxos/util": "0.8.4-main.3c1ae3b"
81
+ "@dxos/async": "0.8.4-main.3eb6e50203",
82
+ "@dxos/debug": "0.8.4-main.3eb6e50203",
83
+ "@dxos/invariant": "0.8.4-main.3eb6e50203",
84
+ "@dxos/log": "0.8.4-main.3eb6e50203",
85
+ "@dxos/lit-ui": "0.8.4-main.3eb6e50203",
86
+ "@dxos/react-hooks": "0.8.4-main.3eb6e50203",
87
+ "@dxos/react-input": "0.8.4-main.3eb6e50203",
88
+ "@dxos/react-list": "0.8.4-main.3eb6e50203",
89
+ "@dxos/ui-types": "0.8.4-main.3eb6e50203",
90
+ "@dxos/util": "0.8.4-main.3eb6e50203"
87
91
  },
88
92
  "devDependencies": {
89
93
  "@dnd-kit/core": "^6.0.5",
90
94
  "@dnd-kit/sortable": "^7.0.1",
91
95
  "@dnd-kit/utilities": "^3.2.0",
92
- "@phosphor-icons/react": "^2.1.10",
93
- "@types/react": "~19.2.2",
94
- "@types/react-dom": "~19.2.2",
95
- "react": "~19.2.0",
96
- "react-dom": "~19.2.0",
96
+ "@phosphor-icons/react": "2.1.10",
97
+ "@types/react": "~19.2.7",
98
+ "@types/react-dom": "~19.2.3",
99
+ "react": "~19.2.3",
100
+ "react-dom": "~19.2.3",
101
+ "tabster": "^8.5.5",
97
102
  "vite": "7.1.9",
98
- "@dxos/random": "0.8.4-main.3c1ae3b",
99
- "@dxos/react-ui-theme": "0.8.4-main.3c1ae3b",
100
- "@dxos/util": "0.8.4-main.3c1ae3b"
103
+ "@dxos/random": "0.8.4-main.3eb6e50203",
104
+ "@dxos/ui-theme": "0.8.4-main.3eb6e50203",
105
+ "@dxos/util": "0.8.4-main.3eb6e50203"
101
106
  },
102
107
  "peerDependencies": {
103
- "react": "^19.0.0",
104
- "react-dom": "^19.0.0",
105
- "@dxos/react-ui-theme": "0.8.4-main.3c1ae3b"
108
+ "react": "~19.2.3",
109
+ "react-dom": "~19.2.3",
110
+ "@dxos/ui-theme": "0.8.4-main.3eb6e50203"
106
111
  },
107
112
  "publishConfig": {
108
113
  "access": "public"
@@ -18,12 +18,7 @@ const AnchoredOverflowRoot = forwardRef<HTMLDivElement, AnchoredOverflowRootProp
18
18
  const { tx } = useThemeContext();
19
19
  const Root = asChild ? Slot : Primitive.div;
20
20
  return (
21
- <Root
22
- role='none'
23
- {...props}
24
- className={tx('anchoredOverflow.root', 'overflow-anchored', {}, classNames)}
25
- ref={forwardedRef}
26
- >
21
+ <Root role='none' {...props} className={tx('anchoredOverflow.root', {}, classNames)} ref={forwardedRef}>
27
22
  {children}
28
23
  </Root>
29
24
  );
@@ -39,18 +34,21 @@ const AnchoredOverflowAnchor = forwardRef<HTMLDivElement, AnchoredOverflowAnchor
39
34
  const { tx } = useThemeContext();
40
35
  const Root = asChild ? Slot : Primitive.div;
41
36
  return (
42
- <Root
43
- role='none'
44
- {...props}
45
- className={tx('anchoredOverflow.anchor', 'overflow-anchor', {}, classNames)}
46
- ref={forwardedRef}
47
- >
37
+ <Root role='none' {...props} className={tx('anchoredOverflow.anchor', {}, classNames)} ref={forwardedRef}>
48
38
  {children}
49
39
  </Root>
50
40
  );
51
41
  },
52
42
  );
53
43
 
44
+ /**
45
+ * This component leverages the CSS https://developer.mozilla.org/en-US/docs/Web/CSS/overflow-anchor property to prevent unwanted scroll jumps when content is dynamically
46
+ * added above the viewport. This is particularly useful for:
47
+ * - Chat applications where new messages are prepended to the list.
48
+ * - Notification feeds where new items appear at the top.
49
+ * - Any scenario where content is inserted at the start of a scrollable container.
50
+ */
51
+ // TODO(burdon): Move into container?
54
52
  export const AnchoredOverflow = {
55
53
  Root: AnchoredOverflowRoot,
56
54
  Anchor: AnchoredOverflowAnchor,
@@ -5,8 +5,8 @@
5
5
  import { type Meta } from '@storybook/react-vite';
6
6
  import React, { type PropsWithChildren } from 'react';
7
7
 
8
- import { type HuePalette } from '@dxos/react-ui-theme';
9
- import { type Size } from '@dxos/react-ui-types';
8
+ import { type HuePalette } from '@dxos/ui-theme';
9
+ import { type Size } from '@dxos/ui-types';
10
10
  import { hexToFallback } from '@dxos/util';
11
11
 
12
12
  import { withTheme } from '../../testing';
@@ -57,9 +57,9 @@ const DefaultStory = (props: StoryProps) => {
57
57
  };
58
58
 
59
59
  const meta = {
60
- title: 'ui/react-ui-core/Avatar',
60
+ title: 'ui/react-ui-core/components/Avatar',
61
61
  component: Avatar.Root,
62
- decorators: [withTheme],
62
+ decorators: [withTheme()],
63
63
  } satisfies Meta<typeof Avatar.Root>;
64
64
 
65
65
  export default meta;
@@ -17,7 +17,7 @@ import {
17
17
  } from '@dxos/lit-ui';
18
18
  import { DxAvatar } from '@dxos/lit-ui/react';
19
19
  import { useId } from '@dxos/react-hooks';
20
- import { mx } from '@dxos/react-ui-theme';
20
+ import { mx } from '@dxos/ui-theme';
21
21
 
22
22
  import { useIconHref, useThemeContext } from '../../hooks';
23
23
  import { type ThemedClassName } from '../../util';
@@ -67,14 +67,7 @@ const AvatarLabel = forwardRef<HTMLSpanElement, AvatarLabelProps>(
67
67
  const Root = asChild ? Slot : Primitive.span;
68
68
  const { tx } = useThemeContext();
69
69
  const { labelId } = useAvatarContext('AvatarLabel');
70
- return (
71
- <Root
72
- {...props}
73
- id={labelId}
74
- ref={forwardedRef}
75
- className={tx('avatar.label', 'avatar__label', { srOnly }, classNames)}
76
- />
77
- );
70
+ return <Root {...props} id={labelId} ref={forwardedRef} className={tx('avatar.label', { srOnly }, classNames)} />;
78
71
  },
79
72
  );
80
73
 
@@ -93,7 +86,7 @@ const AvatarDescription = forwardRef<HTMLSpanElement, AvatarDescriptionProps>(
93
86
  {...props}
94
87
  id={descriptionId}
95
88
  ref={forwardedRef}
96
- className={tx('avatar.description', 'avatar__description', { srOnly }, classNames)}
89
+ className={tx('avatar.description', { srOnly }, classNames)}
97
90
  />
98
91
  );
99
92
  },
@@ -38,9 +38,9 @@ const DefaultStory = () => {
38
38
  };
39
39
 
40
40
  const meta = {
41
- title: 'ui/react-ui-core/AvatarGroup',
41
+ title: 'ui/react-ui-core/components/AvatarGroup',
42
42
  render: DefaultStory,
43
- decorators: [withTheme],
43
+ decorators: [withTheme()],
44
44
  } satisfies Meta<typeof DefaultStory>;
45
45
 
46
46
  export default meta;
@@ -39,10 +39,10 @@ const DefaultStory = (props: BreadcrumbRootProps) => {
39
39
  };
40
40
 
41
41
  const meta = {
42
- title: 'ui/react-ui-core/Breadcrumb',
42
+ title: 'ui/react-ui-core/components/Breadcrumb',
43
43
  component: Breadcrumb.Root as any,
44
44
  render: DefaultStory,
45
- decorators: [withTheme],
45
+ decorators: [withTheme()],
46
46
  } satisfies Meta<typeof DefaultStory>;
47
47
 
48
48
  export default meta;
@@ -20,14 +20,7 @@ const BreadcrumbRoot = forwardRef<HTMLDivElement, BreadcrumbRootProps>(
20
20
  ({ asChild, classNames, ...props }, forwardedRef) => {
21
21
  const { tx } = useThemeContext();
22
22
  const Root = asChild ? Slot : Primitive.div;
23
- return (
24
- <Root
25
- role='navigation'
26
- {...props}
27
- className={tx('breadcrumb.root', 'breadcrumb', {}, classNames)}
28
- ref={forwardedRef}
29
- />
30
- );
23
+ return <Root role='navigation' {...props} className={tx('breadcrumb.root', {}, classNames)} ref={forwardedRef} />;
31
24
  },
32
25
  );
33
26
 
@@ -37,14 +30,7 @@ const BreadcrumbList = forwardRef<HTMLOListElement, BreadcrumbListProps>(
37
30
  ({ asChild, classNames, ...props }, forwardedRef) => {
38
31
  const { tx } = useThemeContext();
39
32
  const Root = asChild ? Slot : Primitive.ol;
40
- return (
41
- <Root
42
- role='list'
43
- {...props}
44
- className={tx('breadcrumb.list', 'breadcrumb__list', {}, classNames)}
45
- ref={forwardedRef}
46
- />
47
- );
33
+ return <Root role='list' {...props} className={tx('breadcrumb.list', {}, classNames)} ref={forwardedRef} />;
48
34
  },
49
35
  );
50
36
 
@@ -54,14 +40,7 @@ const BreadcrumbListItem = forwardRef<HTMLLIElement, BreadcrumbListItemProps>(
54
40
  ({ asChild, classNames, ...props }, forwardedRef) => {
55
41
  const { tx } = useThemeContext();
56
42
  const Root = asChild ? Slot : Primitive.li;
57
- return (
58
- <Root
59
- role='listitem'
60
- {...props}
61
- className={tx('breadcrumb.listItem', 'breadcrumb__list__item', {}, classNames)}
62
- ref={forwardedRef}
63
- />
64
- );
43
+ return <Root role='listitem' {...props} className={tx('breadcrumb.listItem', {}, classNames)} ref={forwardedRef} />;
65
44
  },
66
45
  );
67
46
 
@@ -79,12 +58,7 @@ const BreadcrumbCurrent = forwardRef<HTMLHeadingElement, BreadcrumbCurrentProps>
79
58
  const { tx } = useThemeContext();
80
59
  const Root = asChild ? Slot : 'h1';
81
60
  return (
82
- <Root
83
- {...props}
84
- aria-current='page'
85
- className={tx('breadcrumb.current', 'breadcrumb__item__heading--current', {}, classNames)}
86
- ref={forwardedRef}
87
- />
61
+ <Root {...props} aria-current='page' className={tx('breadcrumb.current', {}, classNames)} ref={forwardedRef} />
88
62
  );
89
63
  },
90
64
  );
@@ -98,7 +72,7 @@ const BreadcrumbSeparator = ({ children, classNames, ...props }: BreadcrumbSepar
98
72
  role='separator'
99
73
  aria-hidden='true'
100
74
  {...props}
101
- className={tx('breadcrumb.separator', 'breadcrumb__separator', {}, classNames)}
75
+ className={tx('breadcrumb.separator', {}, classNames)}
102
76
  >
103
77
  {children ?? <Icon icon='ph--dot--bold' />}
104
78
  </Primitive.span>
@@ -33,10 +33,10 @@ const DefaultStory = ({ children, ...args }: Omit<ButtonProps, 'ref'>) => {
33
33
  };
34
34
 
35
35
  const meta = {
36
- title: 'ui/react-ui-core/Button',
36
+ title: 'ui/react-ui-core/components/Button',
37
37
  component: Button,
38
38
  render: DefaultStory,
39
- decorators: [withTheme, withLayoutVariants()],
39
+ decorators: [withTheme(), withLayoutVariants()],
40
40
  } satisfies Meta<typeof Button>;
41
41
 
42
42
  export default meta;
@@ -7,7 +7,7 @@ import { Primitive } from '@radix-ui/react-primitive';
7
7
  import { Slot } from '@radix-ui/react-slot';
8
8
  import React, { type ComponentPropsWithRef, forwardRef, memo } from 'react';
9
9
 
10
- import { type Density, type Elevation } from '@dxos/react-ui-types';
10
+ import { type Density, type Elevation } from '@dxos/ui-types';
11
11
 
12
12
  import { useDensityContext, useElevationContext, useThemeContext } from '../../hooks';
13
13
  import { type ThemedClassName } from '../../util';
@@ -56,7 +56,6 @@ const Button = memo(
56
56
  data-props={inGroup ? 'grouped' : ''}
57
57
  className={tx(
58
58
  'button.root',
59
- 'button',
60
59
  {
61
60
  variant,
62
61
  inGroup,
@@ -88,12 +87,7 @@ const ButtonGroup = forwardRef<HTMLDivElement, ButtonGroupProps>(
88
87
  const elevation = useElevationContext(propsElevation);
89
88
  const Root = asChild ? Slot : Primitive.div;
90
89
  return (
91
- <Root
92
- role='none'
93
- {...props}
94
- className={tx('button.group', 'button-group', { elevation }, classNames)}
95
- ref={forwardedRef}
96
- >
90
+ <Root role='none' {...props} className={tx('button.group', { elevation }, classNames)} ref={forwardedRef}>
97
91
  <ButtonGroupProvider inGroup>{children}</ButtonGroupProvider>
98
92
  </Root>
99
93
  );
@@ -24,10 +24,10 @@ const DefaultStory = (props: IconButtonProps) => {
24
24
  };
25
25
 
26
26
  const meta = {
27
- title: 'ui/react-ui-core/IconButton',
27
+ title: 'ui/react-ui-core/components/IconButton',
28
28
  component: IconButton,
29
29
  render: DefaultStory as any,
30
- decorators: [withTheme],
30
+ decorators: [withTheme()],
31
31
  } satisfies Meta<typeof IconButton>;
32
32
 
33
33
  export default meta;
@@ -46,10 +46,13 @@ const IconOnlyButton = forwardRef<HTMLButtonElement, IconButtonProps>(
46
46
 
47
47
  // TODO(burdon): Inherit size from container/density.
48
48
  const LabelledIconButton = forwardRef<HTMLButtonElement, IconButtonProps>(
49
- ({ size = 5, icon, iconOnly, iconEnd, iconClassNames, label, caretDown, classNames, ...props }, forwardedRef) => {
49
+ (
50
+ { size = 5, icon, iconOnly, iconEnd, iconClassNames, label, caretDown, noTooltip: _, classNames, ...props },
51
+ forwardedRef,
52
+ ) => {
50
53
  const { tx } = useThemeContext();
51
54
  return (
52
- <Button {...props} classNames={tx('iconButton.root', 'iconButton', { iconOnly }, classNames)} ref={forwardedRef}>
55
+ <Button {...props} classNames={tx('iconButton.root', { iconOnly }, classNames)} ref={forwardedRef}>
53
56
  {icon && !iconEnd && <Icon icon={icon} size={size} classNames={iconClassNames} />}
54
57
  <span className={iconOnly ? 'sr-only' : undefined}>{label}</span>
55
58
  {icon && iconEnd && <Icon icon={icon} size={size} classNames={iconClassNames} />}
@@ -19,10 +19,10 @@ const DefaultStory = (props: ToggleProps) => {
19
19
  };
20
20
 
21
21
  const meta = {
22
- title: 'ui/react-ui-core/Toggle',
22
+ title: 'ui/react-ui-core/components/Toggle',
23
23
  component: Toggle,
24
24
  render: DefaultStory,
25
- decorators: [withTheme],
25
+ decorators: [withTheme()],
26
26
  parameters: {
27
27
  layout: 'centered',
28
28
  },
@@ -25,10 +25,10 @@ const DefaultStory = (props: ToggleGroupProps) => {
25
25
  };
26
26
 
27
27
  const meta = {
28
- title: 'ui/react-ui-core/ToggleGroup',
28
+ title: 'ui/react-ui-core/components/ToggleGroup',
29
29
  component: ToggleGroup,
30
30
  render: DefaultStory,
31
- decorators: [withTheme],
31
+ decorators: [withTheme()],
32
32
  } satisfies Meta<typeof ToggleGroup>;
33
33
 
34
34
  export default meta;
@@ -4,7 +4,7 @@
4
4
 
5
5
  import React from 'react';
6
6
 
7
- import { mx } from '@dxos/react-ui-theme';
7
+ import { mx, osTranslations } from '@dxos/ui-theme';
8
8
 
9
9
  import { Button, type ButtonProps, IconButton } from '../Button';
10
10
  import { Icon, type IconProps } from '../Icon';
@@ -21,7 +21,7 @@ export type CopyButtonProps = ButtonProps &
21
21
  const inactiveLabelStyles = 'invisible bs-px -mbe-px overflow-hidden';
22
22
 
23
23
  export const CopyButton = ({ classNames, value, size = 5, ...props }: CopyButtonProps) => {
24
- const { t } = useTranslation('os');
24
+ const { t } = useTranslation(osTranslations);
25
25
  const { textValue, setTextValue } = useClipboard();
26
26
  const isCopied = textValue === value;
27
27
  return (
@@ -55,7 +55,7 @@ export const CopyButtonIconOnly = ({
55
55
  variant,
56
56
  ...props
57
57
  }: TooltipScopedProps<CopyButtonIconOnlyProps>) => {
58
- const { t } = useTranslation('os');
58
+ const { t } = useTranslation(osTranslations);
59
59
  const { textValue, setTextValue } = useClipboard();
60
60
  const isCopied = textValue === value;
61
61
  const label = isCopied ? t('copy success label') : (props.label ?? t('copy label'));
@@ -4,7 +4,7 @@
4
4
 
5
5
  import React, { type PropsWithChildren, createContext } from 'react';
6
6
 
7
- import { type Density } from '@dxos/react-ui-types';
7
+ import { type Density } from '@dxos/ui-types';
8
8
 
9
9
  export interface DensityContextValue {
10
10
  density?: Density;
@@ -47,10 +47,10 @@ const DefaultStory = ({ title, description, body, openTrigger, cancelTrigger, ac
47
47
  };
48
48
 
49
49
  const meta = {
50
- title: 'ui/react-ui-core/AlertDialog',
50
+ title: 'ui/react-ui-core/components/AlertDialog',
51
51
  component: AlertDialog.Root as any,
52
52
  render: DefaultStory as any,
53
- decorators: [withTheme],
53
+ decorators: [withTheme()],
54
54
  } satisfies Meta<typeof DefaultStory>;
55
55
 
56
56
  export default meta;
@@ -61,11 +61,7 @@ const AlertDialogTitle: ForwardRefExoticComponent<AlertDialogTitleProps> = forwa
61
61
  >(({ classNames, srOnly, ...props }, forwardedRef) => {
62
62
  const { tx } = useThemeContext();
63
63
  return (
64
- <AlertDialogTitlePrimitive
65
- {...props}
66
- className={tx('dialog.title', 'dialog--alert__title', { srOnly }, classNames)}
67
- ref={forwardedRef}
68
- />
64
+ <AlertDialogTitlePrimitive {...props} className={tx('dialog.title', { srOnly }, classNames)} ref={forwardedRef} />
69
65
  );
70
66
  });
71
67
 
@@ -79,7 +75,7 @@ const AlertDialogDescription: ForwardRefExoticComponent<AlertDialogTitleProps> =
79
75
  return (
80
76
  <AlertDialogDescriptionPrimitive
81
77
  {...props}
82
- className={tx('dialog.description', 'dialog--alert__description', { srOnly }, classNames)}
78
+ className={tx('dialog.description', { srOnly }, classNames)}
83
79
  ref={forwardedRef}
84
80
  />
85
81
  );
@@ -109,7 +105,6 @@ const AlertDialogOverlay: ForwardRefExoticComponent<AlertDialogOverlayProps> = f
109
105
  {...props}
110
106
  className={tx(
111
107
  'dialog.overlay',
112
- 'dialog--alert__overlay',
113
108
  {},
114
109
  classNames,
115
110
  'data-[block-align=start]:justify-center',
@@ -137,7 +132,7 @@ const AlertDialogContent: ForwardRefExoticComponent<AlertDialogContentProps> = f
137
132
  return (
138
133
  <AlertDialogContentPrimitive
139
134
  {...props}
140
- className={tx('dialog.content', 'dialog--alert', { inOverlayLayout }, classNames)}
135
+ className={tx('dialog.content', { inOverlayLayout }, classNames)}
141
136
  ref={forwardedRef}
142
137
  >
143
138
  {children}
@@ -5,34 +5,46 @@
5
5
  import { type Meta, type StoryObj } from '@storybook/react-vite';
6
6
  import React from 'react';
7
7
 
8
+ import { faker } from '@dxos/random';
9
+
8
10
  import { withTheme } from '../../testing';
9
11
  import { Button } from '../Button';
10
12
 
11
- import { Dialog } from './Dialog';
13
+ import { Dialog, type DialogContentProps } from './Dialog';
12
14
 
13
- type StoryProps = Partial<{
14
- title: string;
15
- description: string;
16
- body: string;
17
- closeTrigger: string;
18
- openTrigger: string;
19
- blockAlign: 'center' | 'start';
20
- }>;
15
+ type StoryProps = Pick<DialogContentProps, 'size'> &
16
+ Partial<{
17
+ title: string;
18
+ description: string;
19
+ openTrigger: string;
20
+ closeTrigger: string;
21
+ blockAlign: 'center' | 'start';
22
+ }>;
21
23
 
22
- const DefaultStory = ({ title, openTrigger, description, body, closeTrigger, blockAlign }: StoryProps) => {
24
+ const DefaultStory = ({ size, title, description, openTrigger, closeTrigger, blockAlign }: StoryProps) => {
23
25
  return (
24
26
  <Dialog.Root defaultOpen>
25
27
  <Dialog.Trigger asChild>
26
28
  <Button>{openTrigger}</Button>
27
29
  </Dialog.Trigger>
28
30
  <Dialog.Overlay blockAlign={blockAlign}>
29
- <Dialog.Content>
30
- <Dialog.Title>{title}</Dialog.Title>
31
- <Dialog.Description>{description}</Dialog.Description>
32
- <p className='mbs-2 mbe-4'>{body}</p>
33
- <Dialog.Close asChild>
34
- <Button variant='primary'>{closeTrigger}</Button>
35
- </Dialog.Close>
31
+ <Dialog.Content size={size}>
32
+ <Dialog.Header>
33
+ <Dialog.Title>{title}</Dialog.Title>
34
+ {closeTrigger && (
35
+ <Dialog.Close asChild>
36
+ <Dialog.CloseIconButton />
37
+ </Dialog.Close>
38
+ )}
39
+ </Dialog.Header>
40
+ <Dialog.Body>
41
+ <Dialog.Description>{description}</Dialog.Description>
42
+ </Dialog.Body>
43
+ <Dialog.ActionBar>
44
+ <Dialog.Close asChild>
45
+ <Button variant='primary'>{closeTrigger}</Button>
46
+ </Dialog.Close>
47
+ </Dialog.ActionBar>
36
48
  </Dialog.Content>
37
49
  </Dialog.Overlay>
38
50
  </Dialog.Root>
@@ -40,10 +52,10 @@ const DefaultStory = ({ title, openTrigger, description, body, closeTrigger, blo
40
52
  };
41
53
 
42
54
  const meta = {
43
- title: 'ui/react-ui-core/Dialog',
55
+ title: 'ui/react-ui-core/components/Dialog',
44
56
  component: Dialog as any,
45
57
  render: DefaultStory,
46
- decorators: [withTheme],
58
+ decorators: [withTheme()],
47
59
  parameters: {
48
60
  chromatic: {
49
61
  disableSnapshot: false,
@@ -55,13 +67,35 @@ export default meta;
55
67
 
56
68
  type Story = StoryObj<typeof meta>;
57
69
 
58
- export const Default: Story = {
70
+ export const Small: Story = {
71
+ args: {
72
+ title: 'Dialog title',
73
+ description: faker.lorem.paragraph(2),
74
+ openTrigger: 'Open',
75
+ closeTrigger: 'Close',
76
+ blockAlign: 'center',
77
+ size: 'sm',
78
+ },
79
+ };
80
+
81
+ export const Medium: Story = {
82
+ args: {
83
+ title: 'Dialog title',
84
+ description: faker.lorem.paragraph(2),
85
+ openTrigger: 'Open',
86
+ closeTrigger: 'Close',
87
+ blockAlign: 'center',
88
+ size: 'md',
89
+ },
90
+ };
91
+
92
+ export const Large: Story = {
59
93
  args: {
60
94
  title: 'Dialog title',
95
+ description: faker.lorem.paragraph(2),
61
96
  openTrigger: 'Open Dialog',
62
- description: 'Dialog description',
63
- body: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.',
64
- closeTrigger: 'Close trigger',
97
+ closeTrigger: 'Close',
65
98
  blockAlign: 'center',
99
+ size: 'lg',
66
100
  },
67
101
  };