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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (231) hide show
  1. package/dist/lib/browser/chunk-EJYV4HAH.mjs +774 -0
  2. package/dist/lib/browser/chunk-EJYV4HAH.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +3197 -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-YTLZCZ2M.mjs +776 -0
  9. package/dist/lib/node-esm/chunk-YTLZCZ2M.mjs.map +7 -0
  10. package/dist/lib/node-esm/index.mjs +3197 -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/Button/Button.d.ts +1 -1
  18. package/dist/types/src/components/Button/Button.d.ts.map +1 -1
  19. package/dist/types/src/components/Button/IconButton.d.ts +2 -1
  20. package/dist/types/src/components/Button/IconButton.d.ts.map +1 -1
  21. package/dist/types/src/components/Button/ToggleGroup.d.ts +4 -4
  22. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts +4 -4
  23. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts +1 -1
  24. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts.map +1 -1
  25. package/dist/types/src/components/Dialog/Dialog.d.ts +24 -9
  26. package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -1
  27. package/dist/types/src/components/Dialog/Dialog.stories.d.ts +7 -5
  28. package/dist/types/src/components/Dialog/Dialog.stories.d.ts.map +1 -1
  29. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts +1 -1
  30. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts.map +1 -1
  31. package/dist/types/src/components/Icon/Icon.d.ts +1 -1
  32. package/dist/types/src/components/Icon/Icon.d.ts.map +1 -1
  33. package/dist/types/src/components/Input/Input.d.ts +5 -2
  34. package/dist/types/src/components/Input/Input.d.ts.map +1 -1
  35. package/dist/types/src/components/Input/Input.stories.d.ts +2 -2
  36. package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
  37. package/dist/types/src/components/List/List.d.ts +1 -1
  38. package/dist/types/src/components/List/List.d.ts.map +1 -1
  39. package/dist/types/src/components/List/List.stories.d.ts.map +1 -1
  40. package/dist/types/src/components/Main/Main.d.ts +8 -9
  41. package/dist/types/src/components/Main/Main.d.ts.map +1 -1
  42. package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
  43. package/dist/types/src/components/{Menus → Menu}/ContextMenu.d.ts +6 -6
  44. package/dist/types/src/components/Menu/ContextMenu.d.ts.map +1 -0
  45. package/dist/types/src/components/Menu/ContextMenu.stories.d.ts.map +1 -0
  46. package/dist/types/src/components/{Menus → Menu}/DropdownMenu.d.ts +3 -4
  47. package/dist/types/src/components/Menu/DropdownMenu.d.ts.map +1 -0
  48. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts.map +1 -0
  49. package/dist/types/src/components/Menu/index.d.ts.map +1 -0
  50. package/dist/types/src/components/Message/Message.d.ts +1 -1
  51. package/dist/types/src/components/Message/Message.d.ts.map +1 -1
  52. package/dist/types/src/components/Message/Message.stories.d.ts +1 -1
  53. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
  54. package/dist/types/src/components/Popover/Popover.d.ts +1 -1
  55. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  56. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +25 -26
  57. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  58. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +46 -8
  59. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
  60. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +4 -2
  61. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -1
  62. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts +2 -1
  63. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts.map +1 -1
  64. package/dist/types/src/components/Select/Select.d.ts +9 -9
  65. package/dist/types/src/components/Separator/Separator.d.ts +1 -1
  66. package/dist/types/src/components/Skeleton/Skeleton.d.ts +12 -0
  67. package/dist/types/src/components/Skeleton/Skeleton.d.ts.map +1 -0
  68. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts +17 -0
  69. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts.map +1 -0
  70. package/dist/types/src/components/Skeleton/index.d.ts +2 -0
  71. package/dist/types/src/components/Skeleton/index.d.ts.map +1 -0
  72. package/dist/types/src/components/Splitter/Splitter.d.ts +26 -0
  73. package/dist/types/src/components/Splitter/Splitter.d.ts.map +1 -0
  74. package/dist/types/src/components/Splitter/Splitter.stories.d.ts +7 -0
  75. package/dist/types/src/components/Splitter/Splitter.stories.d.ts.map +1 -0
  76. package/dist/types/src/components/Splitter/index.d.ts +2 -0
  77. package/dist/types/src/components/Splitter/index.d.ts.map +1 -0
  78. package/dist/types/src/components/Tag/Tag.d.ts +1 -1
  79. package/dist/types/src/components/Tag/Tag.d.ts.map +1 -1
  80. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts +2 -2
  81. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  82. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +1 -8
  83. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
  84. package/dist/types/src/components/ThemeProvider/index.d.ts +2 -1
  85. package/dist/types/src/components/ThemeProvider/index.d.ts.map +1 -1
  86. package/dist/types/src/components/Toast/Toast.d.ts +4 -4
  87. package/dist/types/src/components/Toolbar/Toolbar.d.ts +13 -12
  88. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  89. package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
  90. package/dist/types/src/components/index.d.ts +3 -1
  91. package/dist/types/src/components/index.d.ts.map +1 -1
  92. package/dist/types/src/exemplars/generics.stories.d.ts +17 -0
  93. package/dist/types/src/exemplars/generics.stories.d.ts.map +1 -0
  94. package/dist/types/src/exemplars/slot.stories.d.ts +14 -0
  95. package/dist/types/src/exemplars/slot.stories.d.ts.map +1 -0
  96. package/dist/types/src/exemplars/tabster.stories.d.ts +8 -0
  97. package/dist/types/src/exemplars/tabster.stories.d.ts.map +1 -0
  98. package/dist/types/src/hooks/useDensityContext.d.ts +1 -1
  99. package/dist/types/src/hooks/useDensityContext.d.ts.map +1 -1
  100. package/dist/types/src/hooks/useElevationContext.d.ts +1 -1
  101. package/dist/types/src/hooks/useElevationContext.d.ts.map +1 -1
  102. package/dist/types/src/index.d.ts +2 -1
  103. package/dist/types/src/index.d.ts.map +1 -1
  104. package/dist/types/src/playground/Controls.stories.d.ts.map +1 -1
  105. package/dist/types/src/primitives/Container/Container.d.ts +23 -0
  106. package/dist/types/src/primitives/Container/Container.d.ts.map +1 -0
  107. package/dist/types/src/primitives/Container/Container.stories.d.ts +11 -0
  108. package/dist/types/src/primitives/Container/Container.stories.d.ts.map +1 -0
  109. package/dist/types/src/primitives/Container/Layout.d.ts +18 -0
  110. package/dist/types/src/primitives/Container/Layout.d.ts.map +1 -0
  111. package/dist/types/src/primitives/Container/Layout.stories.d.ts +10 -0
  112. package/dist/types/src/primitives/Container/Layout.stories.d.ts.map +1 -0
  113. package/dist/types/src/primitives/Container/index.d.ts +3 -0
  114. package/dist/types/src/primitives/Container/index.d.ts.map +1 -0
  115. package/dist/types/src/primitives/Flex/Flex.d.ts +8 -0
  116. package/dist/types/src/primitives/Flex/Flex.d.ts.map +1 -0
  117. package/dist/types/src/primitives/Flex/index.d.ts +2 -0
  118. package/dist/types/src/primitives/Flex/index.d.ts.map +1 -0
  119. package/dist/types/src/primitives/index.d.ts +3 -0
  120. package/dist/types/src/primitives/index.d.ts.map +1 -0
  121. package/dist/types/src/testing/decorators/withLayout.d.ts +3 -3
  122. package/dist/types/src/testing/decorators/withLayout.d.ts.map +1 -1
  123. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts +1 -1
  124. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts.map +1 -1
  125. package/dist/types/src/testing/decorators/withTheme.d.ts +3 -2
  126. package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
  127. package/dist/types/src/util/index.d.ts +1 -2
  128. package/dist/types/src/util/index.d.ts.map +1 -1
  129. package/dist/types/tsconfig.tsbuildinfo +1 -1
  130. package/package.json +37 -32
  131. package/src/components/AnchoredOverflow/AnchoredOverflow.tsx +8 -0
  132. package/src/components/Avatars/Avatar.stories.tsx +4 -4
  133. package/src/components/Avatars/Avatar.tsx +1 -1
  134. package/src/components/Avatars/AvatarGroup.stories.tsx +2 -2
  135. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +2 -2
  136. package/src/components/Button/Button.stories.tsx +2 -2
  137. package/src/components/Button/Button.tsx +1 -1
  138. package/src/components/Button/IconButton.stories.tsx +2 -2
  139. package/src/components/Button/IconButton.tsx +8 -3
  140. package/src/components/Button/Toggle.stories.tsx +2 -2
  141. package/src/components/Button/ToggleGroup.stories.tsx +2 -2
  142. package/src/components/Clipboard/CopyButton.tsx +3 -3
  143. package/src/components/DensityProvider/DensityProvider.tsx +1 -1
  144. package/src/components/Dialog/AlertDialog.stories.tsx +2 -2
  145. package/src/components/Dialog/Dialog.stories.tsx +57 -23
  146. package/src/components/Dialog/Dialog.tsx +181 -40
  147. package/src/components/ElevationProvider/ElevationProvider.tsx +1 -1
  148. package/src/components/Icon/Icon.stories.tsx +3 -3
  149. package/src/components/Icon/Icon.tsx +1 -1
  150. package/src/components/Input/Input.stories.tsx +12 -11
  151. package/src/components/Input/Input.tsx +13 -5
  152. package/src/components/Link/Link.stories.tsx +2 -2
  153. package/src/components/List/List.stories.tsx +18 -14
  154. package/src/components/List/List.tsx +1 -1
  155. package/src/components/List/Tree.stories.tsx +2 -2
  156. package/src/components/List/Treegrid.stories.tsx +2 -2
  157. package/src/components/List/Treegrid.tsx +1 -1
  158. package/src/components/Main/Main.stories.tsx +41 -20
  159. package/src/components/Main/Main.tsx +92 -45
  160. package/src/components/{Menus → Menu}/ContextMenu.stories.tsx +2 -2
  161. package/src/components/{Menus → Menu}/DropdownMenu.stories.tsx +2 -2
  162. package/src/components/{Menus → Menu}/DropdownMenu.tsx +61 -57
  163. package/src/components/Message/Message.stories.tsx +3 -3
  164. package/src/components/Message/Message.tsx +30 -5
  165. package/src/components/Popover/Popover.stories.tsx +2 -2
  166. package/src/components/Popover/Popover.tsx +35 -33
  167. package/src/components/ScrollArea/ScrollArea.stories.tsx +166 -40
  168. package/src/components/ScrollArea/ScrollArea.tsx +86 -80
  169. package/src/components/ScrollArea/index.ts +1 -1
  170. package/src/components/ScrollContainer/ScrollContainer.stories.tsx +3 -2
  171. package/src/components/ScrollContainer/ScrollContainer.tsx +99 -92
  172. package/src/components/Select/Select.stories.tsx +2 -2
  173. package/src/components/Skeleton/Skeleton.stories.tsx +52 -0
  174. package/src/components/Skeleton/Skeleton.tsx +26 -0
  175. package/src/components/Skeleton/index.ts +5 -0
  176. package/src/components/Splitter/Splitter.stories.tsx +73 -0
  177. package/src/components/Splitter/Splitter.tsx +123 -0
  178. package/src/components/Splitter/index.ts +5 -0
  179. package/src/components/Status/Status.stories.tsx +2 -2
  180. package/src/components/Tag/Tag.stories.tsx +4 -4
  181. package/src/components/Tag/Tag.tsx +1 -1
  182. package/src/components/ThemeProvider/ThemeProvider.tsx +2 -3
  183. package/src/components/ThemeProvider/TranslationsProvider.tsx +1 -16
  184. package/src/components/ThemeProvider/index.ts +3 -3
  185. package/src/components/Toast/Toast.stories.tsx +2 -2
  186. package/src/components/Toolbar/Toolbar.stories.tsx +2 -2
  187. package/src/components/Toolbar/Toolbar.tsx +31 -12
  188. package/src/components/Tooltip/Tooltip.stories.tsx +2 -2
  189. package/src/components/Tooltip/Tooltip.tsx +22 -20
  190. package/src/components/index.ts +3 -1
  191. package/src/exemplars/generics.stories.tsx +44 -0
  192. package/src/exemplars/slot.stories.tsx +108 -0
  193. package/src/exemplars/tabster.stories.tsx +127 -0
  194. package/src/hooks/useDensityContext.ts +1 -1
  195. package/src/hooks/useElevationContext.ts +1 -1
  196. package/src/index.ts +2 -1
  197. package/src/playground/Controls.stories.tsx +3 -4
  198. package/src/playground/Custom.stories.tsx +2 -2
  199. package/src/playground/Typography.stories.tsx +2 -2
  200. package/src/primitives/Container/Container.stories.tsx +67 -0
  201. package/src/primitives/Container/Container.tsx +82 -0
  202. package/src/primitives/Container/Layout.stories.tsx +57 -0
  203. package/src/primitives/Container/Layout.tsx +61 -0
  204. package/src/primitives/Container/index.ts +6 -0
  205. package/src/primitives/Flex/Flex.tsx +26 -0
  206. package/src/primitives/Flex/index.ts +5 -0
  207. package/src/primitives/index.ts +6 -0
  208. package/src/testing/decorators/withLayout.tsx +22 -15
  209. package/src/testing/decorators/withLayoutVariants.tsx +3 -3
  210. package/src/testing/decorators/withTheme.tsx +21 -18
  211. package/src/util/index.ts +2 -2
  212. package/dist/lib/browser/chunk-53MI2QCM.mjs +0 -4707
  213. package/dist/lib/browser/chunk-53MI2QCM.mjs.map +0 -7
  214. package/dist/lib/node-esm/chunk-ID67AFFF.mjs +0 -4709
  215. package/dist/lib/node-esm/chunk-ID67AFFF.mjs.map +0 -7
  216. package/dist/types/src/components/Menus/ContextMenu.d.ts.map +0 -1
  217. package/dist/types/src/components/Menus/ContextMenu.stories.d.ts.map +0 -1
  218. package/dist/types/src/components/Menus/DropdownMenu.d.ts.map +0 -1
  219. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts.map +0 -1
  220. package/dist/types/src/components/Menus/index.d.ts.map +0 -1
  221. package/dist/types/src/util/ThemedClassName.d.ts +0 -5
  222. package/dist/types/src/util/ThemedClassName.d.ts.map +0 -1
  223. package/dist/types/src/util/domino.d.ts +0 -18
  224. package/dist/types/src/util/domino.d.ts.map +0 -1
  225. package/src/util/ThemedClassName.ts +0 -7
  226. package/src/util/domino.ts +0 -53
  227. /package/dist/types/src/components/{Menus → Menu}/ContextMenu.stories.d.ts +0 -0
  228. /package/dist/types/src/components/{Menus → Menu}/DropdownMenu.stories.d.ts +0 -0
  229. /package/dist/types/src/components/{Menus → Menu}/index.d.ts +0 -0
  230. /package/src/components/{Menus → Menu}/ContextMenu.tsx +0 -0
  231. /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.e8ec1fe",
3
+ "version": "0.8.4-main.ef1bc66f44",
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.e8ec1fe",
78
- "@dxos/debug": "0.8.4-main.e8ec1fe",
79
- "@dxos/lit-ui": "0.8.4-main.e8ec1fe",
80
- "@dxos/log": "0.8.4-main.e8ec1fe",
81
- "@dxos/invariant": "0.8.4-main.e8ec1fe",
82
- "@dxos/react-hooks": "0.8.4-main.e8ec1fe",
83
- "@dxos/react-list": "0.8.4-main.e8ec1fe",
84
- "@dxos/react-input": "0.8.4-main.e8ec1fe",
85
- "@dxos/react-ui-types": "0.8.4-main.e8ec1fe",
86
- "@dxos/util": "0.8.4-main.e8ec1fe"
81
+ "@dxos/debug": "0.8.4-main.ef1bc66f44",
82
+ "@dxos/invariant": "0.8.4-main.ef1bc66f44",
83
+ "@dxos/async": "0.8.4-main.ef1bc66f44",
84
+ "@dxos/lit-ui": "0.8.4-main.ef1bc66f44",
85
+ "@dxos/react-hooks": "0.8.4-main.ef1bc66f44",
86
+ "@dxos/log": "0.8.4-main.ef1bc66f44",
87
+ "@dxos/react-input": "0.8.4-main.ef1bc66f44",
88
+ "@dxos/ui-types": "0.8.4-main.ef1bc66f44",
89
+ "@dxos/react-list": "0.8.4-main.ef1bc66f44",
90
+ "@dxos/util": "0.8.4-main.ef1bc66f44"
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.e8ec1fe",
99
- "@dxos/react-ui-theme": "0.8.4-main.e8ec1fe",
100
- "@dxos/util": "0.8.4-main.e8ec1fe"
103
+ "@dxos/random": "0.8.4-main.ef1bc66f44",
104
+ "@dxos/ui-theme": "0.8.4-main.ef1bc66f44",
105
+ "@dxos/util": "0.8.4-main.ef1bc66f44"
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.e8ec1fe"
108
+ "react": "~19.2.3",
109
+ "react-dom": "~19.2.3",
110
+ "@dxos/ui-theme": "0.8.4-main.ef1bc66f44"
106
111
  },
107
112
  "publishConfig": {
108
113
  "access": "public"
@@ -51,6 +51,14 @@ const AnchoredOverflowAnchor = forwardRef<HTMLDivElement, AnchoredOverflowAnchor
51
51
  },
52
52
  );
53
53
 
54
+ /**
55
+ * 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
56
+ * added above the viewport. This is particularly useful for:
57
+ * - Chat applications where new messages are prepended to the list.
58
+ * - Notification feeds where new items appear at the top.
59
+ * - Any scenario where content is inserted at the start of a scrollable container.
60
+ */
61
+ // TODO(burdon): Move into container?
54
62
  export const AnchoredOverflow = {
55
63
  Root: AnchoredOverflowRoot,
56
64
  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';
@@ -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;
@@ -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';
@@ -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;
@@ -14,9 +14,10 @@ import { Button, type ButtonProps } from './Button';
14
14
  type IconButtonProps = Omit<ButtonProps, 'children'> &
15
15
  Partial<Pick<IconProps, 'icon' | 'size'>> & {
16
16
  label: string;
17
- iconOnly?: boolean;
18
17
  noTooltip?: boolean;
19
18
  caretDown?: boolean;
19
+ iconOnly?: boolean;
20
+ iconEnd?: boolean;
20
21
  iconClassNames?: ThemedClassName<any>['classNames'];
21
22
  tooltipSide?: TooltipSide;
22
23
  };
@@ -45,12 +46,16 @@ const IconOnlyButton = forwardRef<HTMLButtonElement, IconButtonProps>(
45
46
 
46
47
  // TODO(burdon): Inherit size from container/density.
47
48
  const LabelledIconButton = forwardRef<HTMLButtonElement, IconButtonProps>(
48
- ({ icon, size = 5, iconOnly, label, classNames, iconClassNames, caretDown, ...props }, forwardedRef) => {
49
+ (
50
+ { size = 5, icon, iconOnly, iconEnd, iconClassNames, label, caretDown, noTooltip: _, classNames, ...props },
51
+ forwardedRef,
52
+ ) => {
49
53
  const { tx } = useThemeContext();
50
54
  return (
51
55
  <Button {...props} classNames={tx('iconButton.root', 'iconButton', { iconOnly }, classNames)} ref={forwardedRef}>
52
- {icon && <Icon icon={icon} size={size} classNames={iconClassNames} />}
56
+ {icon && !iconEnd && <Icon icon={icon} size={size} classNames={iconClassNames} />}
53
57
  <span className={iconOnly ? 'sr-only' : undefined}>{label}</span>
58
+ {icon && iconEnd && <Icon icon={icon} size={size} classNames={iconClassNames} />}
54
59
  {caretDown && <Icon size={3} icon='ph--caret-down--bold' />}
55
60
  </Button>
56
61
  );
@@ -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;
@@ -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
  };