@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,390 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { Primitive } from '@radix-ui/react-primitive';
6
+ import { Slot } from '@radix-ui/react-slot';
7
+ import React, {
8
+ CSSProperties,
9
+ type HTMLAttributes,
10
+ type PropsWithChildren,
11
+ createContext,
12
+ forwardRef,
13
+ useContext,
14
+ } from 'react';
15
+
16
+ import { composableProps, largeIconSize, mx } from '@dxos/ui-theme';
17
+ import { type Density, type SlottableProps } from '@dxos/ui-types';
18
+
19
+ import { useThemeContext } from '../../hooks';
20
+ import { Column } from '../../primitives';
21
+ import { type ThemedClassName } from '../../util';
22
+ import { Button } from '../Button';
23
+ import { Icon, type IconProps } from '../Icon';
24
+ import { Image } from '../Image';
25
+ import {
26
+ Toolbar,
27
+ ToolbarCloseIconButtonProps,
28
+ ToolbarDragHandleProps,
29
+ type ToolbarMenuItem,
30
+ type ToolbarMenuProps,
31
+ type ToolbarRootProps,
32
+ } from '../Toolbar';
33
+
34
+ //
35
+ // Context
36
+ //
37
+
38
+ type CardContextValue = {
39
+ menuItems?: CardMenuItem<any>[];
40
+ };
41
+
42
+ /** @deprecated Use context for menus. */
43
+ const CardContext = createContext<CardContextValue>({});
44
+
45
+ //
46
+ // Root
47
+ //
48
+
49
+ type CardRootProps = SlottableProps<
50
+ HTMLDivElement,
51
+ {
52
+ id?: string;
53
+ border?: boolean;
54
+ fullWidth?: boolean;
55
+ density?: Density;
56
+ }
57
+ >;
58
+
59
+ const CardRoot = forwardRef<HTMLDivElement, CardRootProps>(
60
+ ({ children, id, asChild, role, border = true, fullWidth, density, ...props }, forwardedRef) => {
61
+ const { className, ...rest } = composableProps(props);
62
+ const Comp = asChild ? Slot : Primitive.div;
63
+ const { tx } = useThemeContext();
64
+
65
+ return (
66
+ <Comp
67
+ {...rest}
68
+ {...(id && { 'data-object-id': id })}
69
+ role={role ?? 'group'}
70
+ className={tx('card.root', { border, fullWidth }, className)}
71
+ ref={forwardedRef}
72
+ >
73
+ <Column.Root gutter={density === 'coarse' ? 'lg' : 'md'}>{children}</Column.Root>
74
+ </Comp>
75
+ );
76
+ },
77
+ );
78
+
79
+ //
80
+ // Toolbar
81
+ //
82
+
83
+ type CardToolbarProps = ToolbarRootProps;
84
+
85
+ const CardToolbar = forwardRef<HTMLDivElement, CardToolbarProps>(({ children, classNames, ...props }, forwardedRef) => {
86
+ const { tx } = useThemeContext();
87
+
88
+ return (
89
+ <Toolbar.Root {...props} style={largeIconSize} classNames={[tx('card.toolbar', {}), classNames]} ref={forwardedRef}>
90
+ {children}
91
+ </Toolbar.Root>
92
+ );
93
+ });
94
+
95
+ //
96
+ // DragHandle
97
+ //
98
+
99
+ type CardDragHandleProps = ToolbarDragHandleProps;
100
+
101
+ const CardDragHandle = forwardRef<HTMLButtonElement, CardDragHandleProps>((props, forwardedRef) => {
102
+ return (
103
+ <CardIconBlock>
104
+ <Toolbar.DragHandle {...props} testId='card-drag-handle' ref={forwardedRef} />
105
+ </CardIconBlock>
106
+ );
107
+ });
108
+
109
+ //
110
+ // CloseIconButton
111
+ //
112
+
113
+ type CloseIconButtonProps = ToolbarCloseIconButtonProps;
114
+
115
+ const CloseIconButton = forwardRef<HTMLButtonElement, CloseIconButtonProps>((props, forwardedRef) => {
116
+ return (
117
+ <CardIconBlock>
118
+ <Toolbar.CloseIconButton {...props} ref={forwardedRef} />
119
+ </CardIconBlock>
120
+ );
121
+ });
122
+
123
+ //
124
+ // Menu
125
+ //
126
+
127
+ type CardMenuItem<T extends any | void = void> = ToolbarMenuItem<T>;
128
+
129
+ type CardMenuProps<T extends any | void = void> = ToolbarMenuProps<T>;
130
+
131
+ const CardMenu = <T extends any | void = void>({ context, items, ...props }: CardMenuProps<T>) => {
132
+ const { menuItems } = useContext(CardContext) ?? {};
133
+ const combinedItems = [...(items ?? []), ...((menuItems as CardMenuItem<T>[]) ?? [])];
134
+
135
+ return (
136
+ <CardIconBlock>
137
+ <Toolbar.Menu {...props} context={context} items={combinedItems} />
138
+ </CardIconBlock>
139
+ );
140
+ };
141
+
142
+ //
143
+ // Icon
144
+ //
145
+
146
+ const CardIcon = (props: IconProps) => {
147
+ return (
148
+ <CardIconBlock>
149
+ <Icon {...props} />
150
+ </CardIconBlock>
151
+ );
152
+ };
153
+
154
+ //
155
+ // IconBlock
156
+ //
157
+
158
+ const CardIconBlock = forwardRef<HTMLDivElement, ThemedClassName<PropsWithChildren>>(
159
+ ({ classNames, children, ...props }, forwardedRef) => {
160
+ const { tx } = useThemeContext();
161
+ return (
162
+ <div {...props} role='none' className={tx('card.icon-block', {}, classNames)} ref={forwardedRef}>
163
+ {children}
164
+ </div>
165
+ );
166
+ },
167
+ );
168
+
169
+ //
170
+ // Title
171
+ //
172
+
173
+ type CardTitleProps = SlottableProps<HTMLDivElement>;
174
+
175
+ const CardTitle = forwardRef<HTMLDivElement, CardTitleProps>(({ children, asChild, role, ...props }, forwardedRef) => {
176
+ const { className, ...rest } = composableProps(props);
177
+ const Comp = asChild ? Slot : Primitive.div;
178
+ const { tx } = useThemeContext();
179
+
180
+ return (
181
+ <Comp {...rest} role={role ?? 'heading'} className={tx('card.title', {}, className)} ref={forwardedRef}>
182
+ {children}
183
+ </Comp>
184
+ );
185
+ });
186
+
187
+ //
188
+ // Content
189
+ //
190
+
191
+ type CardContentProps = SlottableProps<HTMLDivElement>;
192
+
193
+ const CardContent = forwardRef<HTMLDivElement, CardContentProps>(({ children, role, ...props }, forwardedRef) => {
194
+ const { tx } = useThemeContext();
195
+
196
+ return (
197
+ <div {...props} role={role ?? 'none'} className={tx('card.content', {})} ref={forwardedRef}>
198
+ {children}
199
+ </div>
200
+ );
201
+ });
202
+
203
+ //
204
+ // Row
205
+ //
206
+
207
+ type CardRowProps = SlottableProps<HTMLDivElement, { icon?: string }>;
208
+
209
+ const CardRow = forwardRef<HTMLDivElement, CardRowProps>(({ children, role, icon, ...props }, forwardedRef) => {
210
+ const { className, ...rest } = composableProps(props);
211
+ return (
212
+ <Column.Row {...rest} role={role ?? 'none'} classNames={className} ref={forwardedRef}>
213
+ {(icon && <CardIcon classNames='text-subdued' icon={icon} />) || <div />}
214
+ {children}
215
+ <div />
216
+ </Column.Row>
217
+ );
218
+ });
219
+
220
+ //
221
+ // Section
222
+ //
223
+
224
+ type CardSectionProps = SlottableProps<HTMLDivElement>;
225
+
226
+ const CardSection = forwardRef<HTMLDivElement, CardSectionProps>(
227
+ ({ children, asChild, role, ...props }, forwardedRef) => {
228
+ const { className, ...rest } = composableProps(props);
229
+ const Comp = asChild ? Slot : Primitive.div;
230
+
231
+ return (
232
+ <Comp {...rest} role={role ?? 'none'} className={mx('col-span-full', className)} ref={forwardedRef}>
233
+ {children}
234
+ </Comp>
235
+ );
236
+ },
237
+ );
238
+
239
+ //
240
+ // Heading
241
+ //
242
+
243
+ type CardHeadingProps = SlottableProps<HTMLDivElement, { variant?: 'default' | 'subtitle' }>;
244
+
245
+ /**
246
+ * @deprecated Use typography.
247
+ */
248
+ const CardHeading = forwardRef<HTMLDivElement, CardHeadingProps>(
249
+ ({ children, asChild, role, variant = 'default', ...props }, forwardedRef) => {
250
+ const { className, ...rest } = composableProps(props);
251
+ const Comp = asChild ? Slot : Primitive.div;
252
+ const { tx } = useThemeContext();
253
+
254
+ return (
255
+ <Comp
256
+ {...rest}
257
+ role={role ?? 'heading'}
258
+ className={tx('card.heading', { variant }, className)}
259
+ ref={forwardedRef}
260
+ >
261
+ {children}
262
+ </Comp>
263
+ );
264
+ },
265
+ );
266
+
267
+ //
268
+ // Text
269
+ //
270
+
271
+ type CardTextProps = SlottableProps<HTMLDivElement, { truncate?: boolean; variant?: 'default' | 'description' }>;
272
+
273
+ const CardText = forwardRef<HTMLDivElement, CardTextProps>(
274
+ ({ children, asChild, role, truncate, variant = 'default', ...props }, forwardedRef) => {
275
+ const { className, ...rest } = composableProps(props);
276
+ const Comp = asChild ? Slot : Primitive.div;
277
+ const { tx } = useThemeContext();
278
+
279
+ return (
280
+ <Comp {...rest} role={role ?? 'none'} className={tx('card.text', { variant }, className)} ref={forwardedRef}>
281
+ <span className={tx('card.text-span', { variant, truncate })}>{children}</span>
282
+ </Comp>
283
+ );
284
+ },
285
+ );
286
+
287
+ //
288
+ // Poster
289
+ //
290
+
291
+ type CardPosterProps = ThemedClassName<
292
+ {
293
+ alt: string;
294
+ aspect?: 'video' | 'auto';
295
+ } & Partial<{ image: string; icon: string }>
296
+ >;
297
+
298
+ const CardPoster = (props: CardPosterProps) => {
299
+ const { tx } = useThemeContext();
300
+ const aspect = props.aspect === 'auto' ? 'aspect-auto' : 'aspect-video';
301
+ if (props.image) {
302
+ return (
303
+ <div role='none' className='col-span-full mb-1'>
304
+ <Image classNames={[tx('card.poster', {}), aspect, props.classNames]} src={props.image} alt={props.alt} />
305
+ </div>
306
+ );
307
+ }
308
+
309
+ if (props.icon) {
310
+ return (
311
+ <div role='image' className={tx('card.poster-icon', {}, [aspect, props.classNames])} aria-label={props.alt}>
312
+ <Icon icon={props.icon} size={10} />
313
+ </div>
314
+ );
315
+ }
316
+ };
317
+
318
+ //
319
+ // Action
320
+ //
321
+
322
+ type CardActionProps = { icon?: string; label: string; actionIcon?: string; onClick?: () => void };
323
+
324
+ const CardAction = ({ icon, actionIcon = 'ph--arrow-right--regular', label, onClick }: CardActionProps) => {
325
+ const { tx } = useThemeContext();
326
+ return (
327
+ <Button variant='ghost' classNames={tx('card.action', {})} onClick={onClick}>
328
+ {icon ? <CardIcon classNames='text-subdued' icon={icon} /> : <div />}
329
+ <span className={tx('card.action-label', {}, !actionIcon ? 'col-span-2' : undefined)}>{label}</span>
330
+ {actionIcon && <CardIcon icon={actionIcon} />}
331
+ </Button>
332
+ );
333
+ };
334
+
335
+ //
336
+ // Link
337
+ //
338
+
339
+ type CardLinkProps = { label: string; href: string };
340
+
341
+ const CardLink = ({ label, href }: CardLinkProps) => {
342
+ const { tx } = useThemeContext();
343
+ return (
344
+ <a className={tx('card.link', {})} data-variant='ghost' href={href} target='_blank' rel='noreferrer'>
345
+ <CardIcon classNames='text-subdued' icon='ph--link--regular' />
346
+ <span className={tx('card.link-label', {})}>{label}</span>
347
+ <CardIcon classNames='invisible group-hover:visible' icon='ph--arrow-square-out--regular' />
348
+ </a>
349
+ );
350
+ };
351
+
352
+ //
353
+ // Card
354
+ //
355
+
356
+ export const Card = {
357
+ Root: CardRoot,
358
+
359
+ // Toolbar
360
+ Toolbar: CardToolbar,
361
+ ToolbarIconButton: Toolbar.IconButton,
362
+ ToolbarSeparator: Toolbar.Separator,
363
+
364
+ // Toolbar blocks
365
+ IconBlock: CardIconBlock,
366
+ DragHandle: CardDragHandle,
367
+ CloseIconButton: CloseIconButton,
368
+ Menu: CardMenu,
369
+ Icon: CardIcon,
370
+ Title: CardTitle,
371
+
372
+ // Content
373
+ Content: CardContent,
374
+ Row: CardRow,
375
+ Section: CardSection,
376
+ Heading: CardHeading,
377
+ Text: CardText,
378
+ Poster: CardPoster,
379
+ Action: CardAction,
380
+ Link: CardLink,
381
+ };
382
+
383
+ export type {
384
+ CardContextValue,
385
+ CardRootProps,
386
+ CardToolbarProps,
387
+ CardDragHandleProps,
388
+ CloseIconButtonProps,
389
+ CardMenuProps,
390
+ };
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ export * from './Card';
@@ -2,7 +2,7 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import React, { createContext, type PropsWithChildren, useCallback, useContext, useState } from 'react';
5
+ import React, { type PropsWithChildren, createContext, useCallback, useContext, useState } from 'react';
6
6
 
7
7
  export type ClipboardContextValue = {
8
8
  textValue: string;
@@ -4,23 +4,24 @@
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
- import { useClipboard } from './ClipboardProvider';
10
- import { Button, type ButtonProps, IconButton } from '../Buttons';
9
+ import { Button, type ButtonProps, IconButton } from '../Button';
11
10
  import { Icon, type IconProps } from '../Icon';
12
11
  import { useTranslation } from '../ThemeProvider';
13
12
  import { type TooltipScopedProps, useTooltipContext } from '../Tooltip';
14
13
 
14
+ import { useClipboard } from './ClipboardProvider';
15
+
15
16
  export type CopyButtonProps = ButtonProps &
16
17
  Pick<IconProps, 'size'> & {
17
18
  value: string;
18
19
  };
19
20
 
20
- const inactiveLabelStyles = 'invisible bs-px -mbe-px overflow-hidden';
21
+ const inactiveLabelStyles = 'invisible h-px -mb-px overflow-hidden';
21
22
 
22
23
  export const CopyButton = ({ classNames, value, size = 5, ...props }: CopyButtonProps) => {
23
- const { t } = useTranslation('os');
24
+ const { t } = useTranslation(osTranslations);
24
25
  const { textValue, setTextValue } = useClipboard();
25
26
  const isCopied = textValue === value;
26
27
  return (
@@ -31,11 +32,11 @@ export const CopyButton = ({ classNames, value, size = 5, ...props }: CopyButton
31
32
  data-testid='copy-invitation'
32
33
  >
33
34
  <div role='none' className={mx('flex gap-1 items-center', isCopied && inactiveLabelStyles)}>
34
- <span className='pli-1'>{t('copy label')}</span>
35
+ <span className='px-1'>{t('copy label')}</span>
35
36
  <Icon icon='ph--copy--regular' size={size} />
36
37
  </div>
37
38
  <div role='none' className={mx('flex gap-1 items-center', !isCopied && inactiveLabelStyles)}>
38
- <span className='pli-1'>{t('copy success label')}</span>
39
+ <span className='px-1'>{t('copy success label')}</span>
39
40
  <Icon icon='ph--check--regular' size={size} />
40
41
  </div>
41
42
  </Button>
@@ -54,7 +55,7 @@ export const CopyButtonIconOnly = ({
54
55
  variant,
55
56
  ...props
56
57
  }: TooltipScopedProps<CopyButtonIconOnlyProps>) => {
57
- const { t } = useTranslation('os');
58
+ const { t } = useTranslation(osTranslations);
58
59
  const { textValue, setTextValue } = useClipboard();
59
60
  const isCopied = textValue === value;
60
61
  const label = isCopied ? t('copy success label') : (props.label ?? t('copy label'));
@@ -2,9 +2,9 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import React, { createContext, type PropsWithChildren } from 'react';
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;
@@ -0,0 +1,69 @@
1
+ //
2
+ // Copyright 2022 DXOS.org
3
+ //
4
+
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
+ import React from 'react';
7
+
8
+ import { faker } from '@dxos/random';
9
+
10
+ import { withTheme } from '../../testing';
11
+ import { Button } from '../Button';
12
+
13
+ import { AlertDialog } from './AlertDialog';
14
+
15
+ type StoryProps = Partial<{
16
+ title: string;
17
+ description: string;
18
+ openTrigger: string;
19
+ cancelTrigger: string;
20
+ actionTrigger: string;
21
+ }>;
22
+
23
+ const DefaultStory = ({ title, description, openTrigger, cancelTrigger, actionTrigger }: StoryProps) => {
24
+ return (
25
+ <AlertDialog.Root defaultOpen>
26
+ <AlertDialog.Trigger asChild>
27
+ <Button>{openTrigger}</Button>
28
+ </AlertDialog.Trigger>
29
+ <AlertDialog.Overlay>
30
+ <AlertDialog.Content>
31
+ <AlertDialog.Body>
32
+ <AlertDialog.Title>{title}</AlertDialog.Title>
33
+ <AlertDialog.Description>{description}</AlertDialog.Description>
34
+ </AlertDialog.Body>
35
+ <AlertDialog.ActionBar>
36
+ <div className='grow' />
37
+ <AlertDialog.Cancel asChild>
38
+ <Button>{cancelTrigger}</Button>
39
+ </AlertDialog.Cancel>
40
+ <AlertDialog.Action asChild>
41
+ <Button variant='primary'>{actionTrigger}</Button>
42
+ </AlertDialog.Action>
43
+ </AlertDialog.ActionBar>
44
+ </AlertDialog.Content>
45
+ </AlertDialog.Overlay>
46
+ </AlertDialog.Root>
47
+ );
48
+ };
49
+
50
+ const meta = {
51
+ title: 'ui/react-ui-core/components/AlertDialog',
52
+ component: AlertDialog.Root as any,
53
+ render: DefaultStory as any,
54
+ decorators: [withTheme()],
55
+ } satisfies Meta<typeof DefaultStory>;
56
+
57
+ export default meta;
58
+
59
+ type Story = StoryObj<typeof meta>;
60
+
61
+ export const Default: Story = {
62
+ args: {
63
+ title: faker.lorem.sentence(3),
64
+ description: faker.lorem.paragraph(1),
65
+ openTrigger: 'Open AlertDialog',
66
+ cancelTrigger: 'Cancel',
67
+ actionTrigger: 'Action',
68
+ },
69
+ };