@dxos/react-ui 0.8.4-main.c85a9c8dae → 0.8.4-main.d05539e30a

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 (325) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +1 -1
  3. package/dist/lib/browser/chunk-A5QCIG5R.mjs +24 -0
  4. package/dist/lib/browser/chunk-A5QCIG5R.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-2FKSMWNY.mjs → chunk-LY5XDQR5.mjs} +84 -12
  6. package/dist/lib/browser/chunk-LY5XDQR5.mjs.map +7 -0
  7. package/dist/lib/browser/index.mjs +1559 -1062
  8. package/dist/lib/browser/index.mjs.map +4 -4
  9. package/dist/lib/browser/meta.json +1 -1
  10. package/dist/lib/browser/testing/index.mjs +44 -20
  11. package/dist/lib/browser/testing/index.mjs.map +4 -4
  12. package/dist/lib/browser/translations.mjs +9 -0
  13. package/dist/lib/browser/translations.mjs.map +7 -0
  14. package/dist/lib/node-esm/{chunk-ZNBLTSHI.mjs → chunk-NGKLIKP3.mjs} +84 -12
  15. package/dist/lib/node-esm/chunk-NGKLIKP3.mjs.map +7 -0
  16. package/dist/lib/node-esm/chunk-XCFLA74M.mjs +26 -0
  17. package/dist/lib/node-esm/chunk-XCFLA74M.mjs.map +7 -0
  18. package/dist/lib/node-esm/index.mjs +1559 -1062
  19. package/dist/lib/node-esm/index.mjs.map +4 -4
  20. package/dist/lib/node-esm/meta.json +1 -1
  21. package/dist/lib/node-esm/testing/index.mjs +44 -20
  22. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  23. package/dist/lib/node-esm/translations.mjs +10 -0
  24. package/dist/lib/node-esm/translations.mjs.map +7 -0
  25. package/dist/types/src/components/Avatars/Avatar.d.ts +1 -1
  26. package/dist/types/src/components/Avatars/Avatar.d.ts.map +1 -1
  27. package/dist/types/src/components/Avatars/Avatar.stories.d.ts.map +1 -1
  28. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts.map +1 -1
  29. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
  30. package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts.map +1 -1
  31. package/dist/types/src/components/Button/Button.d.ts +2 -2
  32. package/dist/types/src/components/Button/Button.d.ts.map +1 -1
  33. package/dist/types/src/components/Button/Button.stories.d.ts +1 -1
  34. package/dist/types/src/components/Button/Button.stories.d.ts.map +1 -1
  35. package/dist/types/src/components/Button/IconButton.d.ts +1 -0
  36. package/dist/types/src/components/Button/IconButton.d.ts.map +1 -1
  37. package/dist/types/src/components/Button/IconButton.stories.d.ts +3 -0
  38. package/dist/types/src/components/Button/IconButton.stories.d.ts.map +1 -1
  39. package/dist/types/src/components/Button/Toggle.d.ts +2 -2
  40. package/dist/types/src/components/Button/Toggle.d.ts.map +1 -1
  41. package/dist/types/src/components/Button/Toggle.stories.d.ts.map +1 -1
  42. package/dist/types/src/components/Button/ToggleGroup.d.ts +6 -6
  43. package/dist/types/src/components/Button/ToggleGroup.d.ts.map +1 -1
  44. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts +2 -2
  45. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts.map +1 -1
  46. package/dist/types/src/components/Card/Card.d.ts +68 -65
  47. package/dist/types/src/components/Card/Card.d.ts.map +1 -1
  48. package/dist/types/src/components/Card/Card.stories.d.ts +2 -2
  49. package/dist/types/src/components/Card/Card.stories.d.ts.map +1 -1
  50. package/dist/types/src/components/Carousel/Carousel.d.ts +106 -0
  51. package/dist/types/src/components/Carousel/Carousel.d.ts.map +1 -0
  52. package/dist/types/src/components/Carousel/index.d.ts +2 -0
  53. package/dist/types/src/components/Carousel/index.d.ts.map +1 -0
  54. package/dist/types/src/components/Clipboard/ClipboardProvider.d.ts.map +1 -1
  55. package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -1
  56. package/dist/types/src/components/Clipboard/index.d.ts +10 -1
  57. package/dist/types/src/components/Clipboard/index.d.ts.map +1 -1
  58. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts.map +1 -1
  59. package/dist/types/src/components/Dialog/AlertDialog.d.ts +42 -31
  60. package/dist/types/src/components/Dialog/AlertDialog.d.ts.map +1 -1
  61. package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts.map +1 -1
  62. package/dist/types/src/components/Dialog/Dialog.d.ts +47 -30
  63. package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -1
  64. package/dist/types/src/components/Dialog/Dialog.stories.d.ts +3 -2
  65. package/dist/types/src/components/Dialog/Dialog.stories.d.ts.map +1 -1
  66. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts.map +1 -1
  67. package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts.map +1 -1
  68. package/dist/types/src/components/ErrorFallback/ErrorFallback.stories.d.ts.map +1 -1
  69. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts +14 -3
  70. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts.map +1 -1
  71. package/dist/types/src/components/ErrorFallback/ThrowError.d.ts.map +1 -1
  72. package/dist/types/src/components/Focus/Focus.d.ts +36 -0
  73. package/dist/types/src/components/Focus/Focus.d.ts.map +1 -0
  74. package/dist/types/src/components/Focus/Focus.stories.d.ts +9 -0
  75. package/dist/types/src/components/Focus/Focus.stories.d.ts.map +1 -0
  76. package/dist/types/src/components/Focus/index.d.ts +2 -0
  77. package/dist/types/src/components/Focus/index.d.ts.map +1 -0
  78. package/dist/types/src/components/Icon/Icon.d.ts +4 -0
  79. package/dist/types/src/components/Icon/Icon.d.ts.map +1 -1
  80. package/dist/types/src/components/Icon/Icon.stories.d.ts +11 -3
  81. package/dist/types/src/components/Icon/Icon.stories.d.ts.map +1 -1
  82. package/dist/types/src/components/Image/Image.d.ts +2 -1
  83. package/dist/types/src/components/Image/Image.d.ts.map +1 -1
  84. package/dist/types/src/components/Image/Image.stories.d.ts +3 -2
  85. package/dist/types/src/components/Image/Image.stories.d.ts.map +1 -1
  86. package/dist/types/src/components/Input/Input.d.ts +14 -17
  87. package/dist/types/src/components/Input/Input.d.ts.map +1 -1
  88. package/dist/types/src/components/Input/Input.stories.d.ts +3 -3
  89. package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
  90. package/dist/types/src/components/Link/Link.d.ts.map +1 -1
  91. package/dist/types/src/components/Link/Link.stories.d.ts.map +1 -1
  92. package/dist/types/src/components/List/List.d.ts +5 -3
  93. package/dist/types/src/components/List/List.d.ts.map +1 -1
  94. package/dist/types/src/components/List/List.stories.d.ts +3 -1
  95. package/dist/types/src/components/List/List.stories.d.ts.map +1 -1
  96. package/dist/types/src/components/List/ListDropIndicator.d.ts.map +1 -1
  97. package/dist/types/src/components/List/Tree.d.ts +2 -2
  98. package/dist/types/src/components/List/Tree.d.ts.map +1 -1
  99. package/dist/types/src/components/List/Tree.stories.d.ts.map +1 -1
  100. package/dist/types/src/components/List/TreeDropIndicator.d.ts.map +1 -1
  101. package/dist/types/src/components/List/Treegrid.d.ts +5 -9
  102. package/dist/types/src/components/List/Treegrid.d.ts.map +1 -1
  103. package/dist/types/src/components/List/Treegrid.stories.d.ts.map +1 -1
  104. package/dist/types/src/components/Main/Main.d.ts +7 -3
  105. package/dist/types/src/components/Main/Main.d.ts.map +1 -1
  106. package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
  107. package/dist/types/src/components/Main/useSwipeToDismiss.d.ts.map +1 -1
  108. package/dist/types/src/components/MediaPlayer/MediaPlayer.d.ts +46 -0
  109. package/dist/types/src/components/MediaPlayer/MediaPlayer.d.ts.map +1 -0
  110. package/dist/types/src/components/MediaPlayer/MediaPlayer.stories.d.ts +16 -0
  111. package/dist/types/src/components/MediaPlayer/MediaPlayer.stories.d.ts.map +1 -0
  112. package/dist/types/src/components/MediaPlayer/index.d.ts +2 -0
  113. package/dist/types/src/components/MediaPlayer/index.d.ts.map +1 -0
  114. package/dist/types/src/components/Menu/ContextMenu.d.ts.map +1 -1
  115. package/dist/types/src/components/Menu/ContextMenu.stories.d.ts.map +1 -1
  116. package/dist/types/src/components/Menu/DropdownMenu.d.ts +58 -49
  117. package/dist/types/src/components/Menu/DropdownMenu.d.ts.map +1 -1
  118. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts +14 -1
  119. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts.map +1 -1
  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 +2 -2
  123. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
  124. package/dist/types/src/components/Popover/Popover.d.ts +38 -22
  125. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  126. package/dist/types/src/components/Popover/Popover.stories.d.ts.map +1 -1
  127. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +12 -11
  128. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  129. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +21 -10
  130. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
  131. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +42 -13
  132. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -1
  133. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts +5 -6
  134. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts.map +1 -1
  135. package/dist/types/src/components/Select/Select.d.ts.map +1 -1
  136. package/dist/types/src/components/Select/Select.stories.d.ts +2 -2
  137. package/dist/types/src/components/Select/Select.stories.d.ts.map +1 -1
  138. package/dist/types/src/components/Separator/Separator.d.ts +3 -3
  139. package/dist/types/src/components/Separator/Separator.d.ts.map +1 -1
  140. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts.map +1 -1
  141. package/dist/types/src/components/Splitter/Splitter.d.ts +19 -21
  142. package/dist/types/src/components/Splitter/Splitter.d.ts.map +1 -1
  143. package/dist/types/src/components/Splitter/Splitter.stories.d.ts.map +1 -1
  144. package/dist/types/src/components/Status/Status.d.ts +3 -4
  145. package/dist/types/src/components/Status/Status.d.ts.map +1 -1
  146. package/dist/types/src/components/Status/Status.stories.d.ts.map +1 -1
  147. package/dist/types/src/components/Tag/Tag.stories.d.ts.map +1 -1
  148. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts +1 -1
  149. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  150. package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts +1 -1
  151. package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts.map +1 -1
  152. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +54 -55
  153. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
  154. package/dist/types/src/components/ThemeProvider/index.d.ts +1 -1
  155. package/dist/types/src/components/ThemeProvider/index.d.ts.map +1 -1
  156. package/dist/types/src/components/Toast/Toast.d.ts +16 -16
  157. package/dist/types/src/components/Toast/Toast.d.ts.map +1 -1
  158. package/dist/types/src/components/Toast/Toast.stories.d.ts.map +1 -1
  159. package/dist/types/src/components/Toolbar/Toolbar.d.ts +10 -20
  160. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  161. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
  162. package/dist/types/src/components/Tooltip/Tooltip.d.ts +16 -16
  163. package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
  164. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts +2 -2
  165. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
  166. package/dist/types/src/components/index.d.ts +3 -0
  167. package/dist/types/src/components/index.d.ts.map +1 -1
  168. package/dist/types/src/exemplars/generics.stories.d.ts +6 -5
  169. package/dist/types/src/exemplars/generics.stories.d.ts.map +1 -1
  170. package/dist/types/src/exemplars/slot.stories.d.ts +1 -0
  171. package/dist/types/src/exemplars/slot.stories.d.ts.map +1 -1
  172. package/dist/types/src/exemplars/tabster.stories.d.ts.map +1 -1
  173. package/dist/types/src/exemplars/virtualizer.stories.d.ts.map +1 -1
  174. package/dist/types/src/hooks/index.d.ts +1 -0
  175. package/dist/types/src/hooks/index.d.ts.map +1 -1
  176. package/dist/types/src/hooks/useDensityContext.d.ts +1 -1
  177. package/dist/types/src/hooks/useDensityContext.d.ts.map +1 -1
  178. package/dist/types/src/hooks/useElevationContext.d.ts.map +1 -1
  179. package/dist/types/src/hooks/useIconHref.d.ts.map +1 -1
  180. package/dist/types/src/hooks/useSafeArea.d.ts.map +1 -1
  181. package/dist/types/src/hooks/useSafeCollisionPadding.d.ts.map +1 -1
  182. package/dist/types/src/hooks/useVisualViewport.d.ts.map +1 -1
  183. package/dist/types/src/playground/Controls.stories.d.ts.map +1 -1
  184. package/dist/types/src/playground/Custom.stories.d.ts +1 -1
  185. package/dist/types/src/playground/Custom.stories.d.ts.map +1 -1
  186. package/dist/types/src/playground/Typography.stories.d.ts.map +1 -1
  187. package/dist/types/src/primitives/Column/Column.d.ts +20 -19
  188. package/dist/types/src/primitives/Column/Column.d.ts.map +1 -1
  189. package/dist/types/src/primitives/Column/Column.stories.d.ts +19 -0
  190. package/dist/types/src/primitives/Column/Column.stories.d.ts.map +1 -1
  191. package/dist/types/src/primitives/Container/Container.d.ts +7 -0
  192. package/dist/types/src/primitives/Container/Container.d.ts.map +1 -0
  193. package/dist/types/src/primitives/Container/Container.stories.d.ts +6 -0
  194. package/dist/types/src/primitives/Container/Container.stories.d.ts.map +1 -0
  195. package/dist/types/src/primitives/Container/index.d.ts +2 -0
  196. package/dist/types/src/primitives/Container/index.d.ts.map +1 -0
  197. package/dist/types/src/primitives/Flex/Flex.d.ts +8 -5
  198. package/dist/types/src/primitives/Flex/Flex.d.ts.map +1 -1
  199. package/dist/types/src/primitives/Flex/Flex.stories.d.ts.map +1 -1
  200. package/dist/types/src/primitives/Grid/Grid.d.ts +6 -5
  201. package/dist/types/src/primitives/Grid/Grid.d.ts.map +1 -1
  202. package/dist/types/src/primitives/Grid/Grid.stories.d.ts.map +1 -1
  203. package/dist/types/src/primitives/Panel/Panel.d.ts +23 -22
  204. package/dist/types/src/primitives/Panel/Panel.d.ts.map +1 -1
  205. package/dist/types/src/primitives/Panel/Panel.stories.d.ts.map +1 -1
  206. package/dist/types/src/primitives/index.d.ts +1 -0
  207. package/dist/types/src/primitives/index.d.ts.map +1 -1
  208. package/dist/types/src/testing/Loading.d.ts +9 -0
  209. package/dist/types/src/testing/Loading.d.ts.map +1 -0
  210. package/dist/types/src/testing/decorators/withLayout.d.ts.map +1 -1
  211. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts.map +1 -1
  212. package/dist/types/src/testing/decorators/withTheme.d.ts +1 -1
  213. package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
  214. package/dist/types/src/testing/index.d.ts +1 -0
  215. package/dist/types/src/testing/index.d.ts.map +1 -1
  216. package/dist/types/src/translations.d.ts +8 -3
  217. package/dist/types/src/translations.d.ts.map +1 -1
  218. package/dist/types/src/util/usePx.d.ts.map +1 -1
  219. package/dist/types/tsconfig.tsbuildinfo +1 -1
  220. package/package.json +29 -26
  221. package/src/components/Avatars/Avatar.stories.tsx +2 -3
  222. package/src/components/Avatars/Avatar.tsx +1 -2
  223. package/src/components/Avatars/AvatarGroup.stories.tsx +0 -1
  224. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +1 -2
  225. package/src/components/Button/Button.stories.tsx +0 -1
  226. package/src/components/Button/Button.tsx +5 -13
  227. package/src/components/Button/IconButton.stories.tsx +6 -4
  228. package/src/components/Button/IconButton.tsx +3 -4
  229. package/src/components/Button/Toggle.stories.tsx +0 -1
  230. package/src/components/Button/Toggle.tsx +4 -4
  231. package/src/components/Button/ToggleGroup.stories.tsx +0 -1
  232. package/src/components/Button/ToggleGroup.tsx +12 -16
  233. package/src/components/Card/Card.stories.tsx +15 -15
  234. package/src/components/Card/Card.tsx +294 -132
  235. package/src/components/Carousel/Carousel.tsx +379 -0
  236. package/src/components/Carousel/index.ts +5 -0
  237. package/src/components/Clipboard/CopyButton.tsx +5 -6
  238. package/src/components/Dialog/AlertDialog.stories.tsx +5 -6
  239. package/src/components/Dialog/AlertDialog.tsx +67 -126
  240. package/src/components/Dialog/Dialog.stories.tsx +64 -9
  241. package/src/components/Dialog/Dialog.tsx +84 -88
  242. package/src/components/ErrorFallback/ErrorFallback.stories.tsx +3 -8
  243. package/src/components/ErrorFallback/ErrorStack.tsx +36 -2
  244. package/src/components/Focus/AUDIT.md +43 -0
  245. package/src/components/Focus/Focus.stories.tsx +230 -0
  246. package/src/components/Focus/Focus.tsx +201 -0
  247. package/src/components/Focus/index.ts +5 -0
  248. package/src/components/Icon/Icon.stories.tsx +43 -13
  249. package/src/components/Icon/Icon.tsx +14 -3
  250. package/src/components/Image/Image.stories.tsx +3 -3
  251. package/src/components/Image/Image.tsx +31 -8
  252. package/src/components/Input/Input.stories.tsx +3 -4
  253. package/src/components/Input/Input.tsx +7 -7
  254. package/src/components/Link/Link.stories.tsx +0 -1
  255. package/src/components/Link/Link.tsx +10 -2
  256. package/src/components/List/List.stories.tsx +3 -4
  257. package/src/components/List/List.tsx +7 -6
  258. package/src/components/List/ListDropIndicator.tsx +0 -1
  259. package/src/components/List/Tree.stories.tsx +2 -3
  260. package/src/components/List/Tree.tsx +0 -1
  261. package/src/components/List/TreeDropIndicator.tsx +1 -1
  262. package/src/components/List/Treegrid.stories.tsx +26 -27
  263. package/src/components/List/Treegrid.tsx +14 -14
  264. package/src/components/Main/Main.stories.tsx +0 -1
  265. package/src/components/Main/Main.tsx +1 -2
  266. package/src/components/MediaPlayer/MediaPlayer.stories.tsx +50 -0
  267. package/src/components/MediaPlayer/MediaPlayer.tsx +153 -0
  268. package/src/components/MediaPlayer/index.ts +5 -0
  269. package/src/components/Menu/ContextMenu.stories.tsx +0 -1
  270. package/src/components/Menu/DropdownMenu.stories.tsx +0 -1
  271. package/src/components/Menu/DropdownMenu.tsx +48 -42
  272. package/src/components/Message/Message.stories.tsx +7 -8
  273. package/src/components/Message/Message.tsx +23 -10
  274. package/src/components/Popover/Popover.stories.tsx +4 -5
  275. package/src/components/Popover/Popover.tsx +42 -42
  276. package/src/components/ScrollArea/ScrollArea.stories.tsx +89 -30
  277. package/src/components/ScrollArea/ScrollArea.tsx +41 -25
  278. package/src/components/ScrollContainer/ScrollContainer.stories.tsx +20 -18
  279. package/src/components/ScrollContainer/ScrollContainer.tsx +199 -92
  280. package/src/components/Select/Select.stories.tsx +5 -6
  281. package/src/components/Separator/Separator.tsx +4 -7
  282. package/src/components/Skeleton/Skeleton.stories.tsx +0 -1
  283. package/src/components/Splitter/Splitter.stories.tsx +29 -29
  284. package/src/components/Splitter/Splitter.tsx +35 -46
  285. package/src/components/Status/Status.stories.tsx +0 -1
  286. package/src/components/Status/Status.tsx +8 -5
  287. package/src/components/Tag/Tag.stories.tsx +0 -1
  288. package/src/components/ThemeProvider/ThemeProvider.stories.tsx +0 -1
  289. package/src/components/ThemeProvider/ThemeProvider.tsx +5 -4
  290. package/src/components/ThemeProvider/index.ts +1 -1
  291. package/src/components/Toast/Toast.stories.tsx +0 -1
  292. package/src/components/Toast/Toast.tsx +16 -31
  293. package/src/components/Toolbar/Toolbar.stories.tsx +0 -1
  294. package/src/components/Toolbar/Toolbar.tsx +36 -48
  295. package/src/components/Tooltip/Tooltip.stories.tsx +7 -8
  296. package/src/components/Tooltip/Tooltip.tsx +29 -29
  297. package/src/components/index.ts +3 -0
  298. package/src/exemplars/generics.stories.tsx +7 -15
  299. package/src/exemplars/slot.stories.tsx +64 -68
  300. package/src/exemplars/tabster.stories.tsx +1 -1
  301. package/src/exemplars/virtualizer.stories.tsx +4 -5
  302. package/src/hooks/index.ts +1 -0
  303. package/src/hooks/useDensityContext.ts +2 -2
  304. package/src/playground/Custom.stories.tsx +6 -9
  305. package/src/primitives/Column/AUDIT.md +148 -0
  306. package/src/primitives/Column/Column.stories.tsx +128 -19
  307. package/src/primitives/Column/Column.tsx +89 -80
  308. package/src/primitives/Container/Container.stories.tsx +29 -0
  309. package/src/primitives/Container/Container.tsx +19 -0
  310. package/src/primitives/Container/index.ts +5 -0
  311. package/src/primitives/Flex/Flex.stories.tsx +0 -1
  312. package/src/primitives/Flex/Flex.tsx +20 -20
  313. package/src/primitives/Grid/Grid.stories.tsx +0 -1
  314. package/src/primitives/Grid/Grid.tsx +23 -36
  315. package/src/primitives/Panel/Panel.stories.tsx +9 -8
  316. package/src/primitives/Panel/Panel.tsx +43 -60
  317. package/src/primitives/index.ts +1 -0
  318. package/src/testing/Loading.tsx +47 -0
  319. package/src/testing/decorators/withLayout.tsx +7 -17
  320. package/src/testing/decorators/withTheme.tsx +10 -7
  321. package/src/testing/index.ts +2 -0
  322. package/src/translations.ts +8 -3
  323. package/src/util/usePx.ts +1 -0
  324. package/dist/lib/browser/chunk-2FKSMWNY.mjs.map +0 -7
  325. package/dist/lib/node-esm/chunk-ZNBLTSHI.mjs.map +0 -7
@@ -2,33 +2,9 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import {
6
- AlertDialogAction as AlertDialogActionPrimitive,
7
- type AlertDialogActionProps as AlertDialogActionPrimitiveProps,
8
- AlertDialogCancel as AlertDialogCancelPrimitive,
9
- type AlertDialogCancelProps as AlertDialogCancelPrimitiveProps,
10
- AlertDialogContent as AlertDialogContentPrimitive,
11
- type AlertDialogContentProps as AlertDialogContentPrimitiveProps,
12
- AlertDialogDescription as AlertDialogDescriptionPrimitive,
13
- type AlertDialogDescriptionProps as AlertDialogDescriptionPrimitiveProps,
14
- AlertDialogOverlay as AlertDialogOverlayPrimitive,
15
- type AlertDialogOverlayProps as AlertDialogOverlayPrimitiveProps,
16
- AlertDialogPortal as AlertDialogPortalPrimitive,
17
- type AlertDialogPortalProps as AlertDialogPortalPrimitiveProps,
18
- Root as AlertDialogRootPrimitive,
19
- type AlertDialogProps as AlertDialogRootPrimitiveProps,
20
- AlertDialogTitle as AlertDialogTitlePrimitive,
21
- type AlertDialogTitleProps as AlertDialogTitlePrimitiveProps,
22
- AlertDialogTrigger as AlertDialogTriggerPrimitive,
23
- type AlertDialogTriggerProps as AlertDialogTriggerPrimitiveProps,
24
- } from '@radix-ui/react-alert-dialog';
5
+ import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
25
6
  import { createContext } from '@radix-ui/react-context';
26
- import React, {
27
- type ForwardRefExoticComponent,
28
- type FunctionComponent,
29
- type PropsWithChildren,
30
- forwardRef,
31
- } from 'react';
7
+ import React, { type ForwardRefExoticComponent, type FunctionComponent, forwardRef } from 'react';
32
8
 
33
9
  import { type DialogSize } from '@dxos/ui-theme';
34
10
 
@@ -36,16 +12,23 @@ import { useThemeContext } from '../../hooks';
36
12
  import { Column } from '../../primitives';
37
13
  import { type ThemedClassName } from '../../util';
38
14
  import { ElevationProvider } from '../ElevationProvider';
15
+ import {
16
+ Dialog,
17
+ type DialogHeaderProps,
18
+ type DialogBodyProps,
19
+ type DialogActionBarProps,
20
+ type DialogCloseIconButtonProps,
21
+ } from './Dialog';
39
22
 
40
23
  //
41
24
  // Root
42
25
  //
43
26
 
44
- type AlertDialogRootProps = AlertDialogRootPrimitiveProps;
27
+ type AlertDialogRootProps = AlertDialogPrimitive.AlertDialogProps;
45
28
 
46
29
  const AlertDialogRoot: FunctionComponent<AlertDialogRootProps> = (props) => (
47
30
  <ElevationProvider elevation='dialog'>
48
- <AlertDialogRootPrimitive {...props} />
31
+ <AlertDialogPrimitive.Root {...props} />
49
32
  </ElevationProvider>
50
33
  );
51
34
 
@@ -53,95 +36,55 @@ const AlertDialogRoot: FunctionComponent<AlertDialogRootProps> = (props) => (
53
36
  // Trigger
54
37
  //
55
38
 
56
- type AlertDialogTriggerProps = AlertDialogTriggerPrimitiveProps;
39
+ type AlertDialogTriggerProps = AlertDialogPrimitive.AlertDialogTriggerProps;
57
40
 
58
- const AlertDialogTrigger: FunctionComponent<AlertDialogTriggerProps> = AlertDialogTriggerPrimitive;
41
+ const AlertDialogTrigger: FunctionComponent<AlertDialogTriggerProps> = AlertDialogPrimitive.Trigger;
59
42
 
60
43
  //
61
44
  // Portal
62
45
  //
63
46
 
64
- type AlertDialogPortalProps = AlertDialogPortalPrimitiveProps;
47
+ type AlertDialogPortalProps = AlertDialogPrimitive.AlertDialogPortalProps;
65
48
 
66
- const AlertDialogPortal: FunctionComponent<AlertDialogPortalProps> = AlertDialogPortalPrimitive;
49
+ const AlertDialogPortal: FunctionComponent<AlertDialogPortalProps> = AlertDialogPrimitive.Portal;
67
50
 
68
51
  //
69
52
  // Cancel
70
53
  //
71
54
 
72
- type AlertDialogCancelProps = AlertDialogCancelPrimitiveProps;
55
+ type AlertDialogCancelProps = AlertDialogPrimitive.AlertDialogCancelProps;
73
56
 
74
- const AlertDialogCancel: FunctionComponent<AlertDialogCancelProps> = AlertDialogCancelPrimitive;
57
+ const AlertDialogCancel: FunctionComponent<AlertDialogCancelProps> = AlertDialogPrimitive.Cancel;
75
58
 
76
59
  //
77
60
  // Action
78
61
  //
79
62
 
80
- type AlertDialogActionProps = AlertDialogActionPrimitiveProps;
63
+ type AlertDialogActionProps = AlertDialogPrimitive.AlertDialogActionProps;
81
64
 
82
- const AlertDialogAction: FunctionComponent<AlertDialogActionProps> = AlertDialogActionPrimitive;
65
+ const AlertDialogAction: FunctionComponent<AlertDialogActionProps> = AlertDialogPrimitive.Action;
83
66
 
84
67
  //
85
- // Title
86
- //
87
-
88
- type AlertDialogTitleProps = ThemedClassName<AlertDialogTitlePrimitiveProps> & { srOnly?: boolean };
89
-
90
- const AlertDialogTitle: ForwardRefExoticComponent<AlertDialogTitleProps> = forwardRef<
91
- HTMLHeadingElement,
92
- AlertDialogTitleProps
93
- >(({ classNames, srOnly, ...props }, forwardedRef) => {
94
- const { tx } = useThemeContext();
95
- return (
96
- <AlertDialogTitlePrimitive {...props} className={tx('dialog.title', { srOnly }, classNames)} ref={forwardedRef} />
97
- );
98
- });
99
-
100
- //
101
- // Description
68
+ // Context
102
69
  //
103
70
 
104
- type AlertDialogDescriptionProps = ThemedClassName<AlertDialogDescriptionPrimitiveProps> & { srOnly?: boolean };
105
-
106
- const AlertDialogDescription: ForwardRefExoticComponent<AlertDialogTitleProps> = forwardRef<
107
- HTMLParagraphElement,
108
- AlertDialogDescriptionProps
109
- >(({ classNames, srOnly, ...props }, forwardedRef) => {
110
- const { tx } = useThemeContext();
111
- return (
112
- <AlertDialogDescriptionPrimitive
113
- {...props}
114
- className={tx('dialog.description', { srOnly }, classNames)}
115
- ref={forwardedRef}
116
- />
117
- );
118
- });
119
-
120
71
  type OverlayLayoutContextValue = { inOverlayLayout?: boolean };
121
72
 
122
- //
123
- // Context
124
- //
125
-
126
73
  const ALERT_DIALOG_OVERLAY_NAME = 'AlertDialogOverlay';
127
74
  const ALERT_DIALOG_CONTENT_NAME = 'AlertDialogContent';
128
- const ALERT_DIALOG_BODY_NAME = 'AlertDialogBody';
129
- const ALERT_DIALOG_ACTIONBAR_NAME = 'AlertDialogActionBar';
130
75
 
131
76
  const [OverlayLayoutProvider, useOverlayLayoutContext] = createContext<OverlayLayoutContextValue>(
132
77
  ALERT_DIALOG_OVERLAY_NAME,
133
- {
134
- inOverlayLayout: false,
135
- },
78
+ { inOverlayLayout: false },
136
79
  );
137
80
 
138
81
  //
139
82
  // Overlay
140
83
  //
141
84
 
142
- type AlertDialogOverlayProps = ThemedClassName<AlertDialogOverlayPrimitiveProps> & {
143
- blockAlign?: 'center' | 'start' | 'end';
144
- };
85
+ type AlertDialogOverlayProps = ThemedClassName<
86
+ AlertDialogPrimitive.AlertDialogOverlayProps & { blockAlign?: 'center' | 'start' | 'end' }
87
+ >;
145
88
 
146
89
  const AlertDialogOverlay: ForwardRefExoticComponent<AlertDialogOverlayProps> = forwardRef<
147
90
  HTMLDivElement,
@@ -149,22 +92,14 @@ const AlertDialogOverlay: ForwardRefExoticComponent<AlertDialogOverlayProps> = f
149
92
  >(({ classNames, children, blockAlign, ...props }, forwardedRef) => {
150
93
  const { tx } = useThemeContext();
151
94
  return (
152
- <AlertDialogOverlayPrimitive
95
+ <AlertDialogPrimitive.Overlay
153
96
  {...props}
154
97
  data-block-align={blockAlign}
155
- className={tx(
156
- 'dialog.overlay',
157
- {},
158
- classNames,
159
- // TODO(burdon): Move to dialog.ts.
160
- 'data-[h-align=start]:justify-center',
161
- 'data-[h-align=start]:items-start',
162
- 'data-[h-align=center]:place-content-center',
163
- )}
98
+ className={tx('dialog.overlay', {}, classNames)}
164
99
  ref={forwardedRef}
165
100
  >
166
101
  <OverlayLayoutProvider inOverlayLayout>{children}</OverlayLayoutProvider>
167
- </AlertDialogOverlayPrimitive>
102
+ </AlertDialogPrimitive.Overlay>
168
103
  );
169
104
  });
170
105
 
@@ -174,7 +109,7 @@ AlertDialogOverlay.displayName = ALERT_DIALOG_OVERLAY_NAME;
174
109
  // Content
175
110
  //
176
111
 
177
- type AlertDialogContentProps = ThemedClassName<AlertDialogContentPrimitiveProps> & { size?: DialogSize };
112
+ type AlertDialogContentProps = ThemedClassName<AlertDialogPrimitive.AlertDialogContentProps> & { size?: DialogSize };
178
113
 
179
114
  const AlertDialogContent: ForwardRefExoticComponent<AlertDialogContentProps> = forwardRef<
180
115
  HTMLDivElement,
@@ -183,62 +118,61 @@ const AlertDialogContent: ForwardRefExoticComponent<AlertDialogContentProps> = f
183
118
  const { tx } = useThemeContext();
184
119
  const { inOverlayLayout } = useOverlayLayoutContext(ALERT_DIALOG_CONTENT_NAME);
185
120
  return (
186
- <AlertDialogContentPrimitive
121
+ <AlertDialogPrimitive.Content
187
122
  {...props}
188
123
  className={tx('dialog.content', { inOverlayLayout, size }, classNames)}
124
+ // NOTE: Radix warning unless set to undefined.
125
+ // https://www.radix-ui.com/primitives/docs/components/dialog#description
126
+ aria-describedby={undefined}
189
127
  ref={forwardedRef}
190
128
  >
191
- <Column.Root>{children}</Column.Root>
192
- </AlertDialogContentPrimitive>
129
+ <Column.Root classNames='dx-expander' gutter='sm'>
130
+ {children}
131
+ </Column.Root>
132
+ </AlertDialogPrimitive.Content>
193
133
  );
194
134
  });
195
135
 
196
136
  AlertDialogContent.displayName = ALERT_DIALOG_CONTENT_NAME;
197
137
 
198
138
  //
199
- // Body
139
+ // Title
200
140
  //
201
141
 
202
- type AlertDialogBodyProps = PropsWithChildren;
142
+ type AlertDialogTitleProps = ThemedClassName<AlertDialogPrimitive.AlertDialogTitleProps> & { srOnly?: boolean };
203
143
 
204
- const AlertDialogBody: ForwardRefExoticComponent<AlertDialogBodyProps> = forwardRef<
205
- HTMLDivElement,
206
- AlertDialogBodyProps
207
- >(({ children, ...props }, forwardedRef) => {
144
+ const AlertDialogTitle: ForwardRefExoticComponent<AlertDialogTitleProps> = forwardRef<
145
+ HTMLHeadingElement,
146
+ AlertDialogTitleProps
147
+ >(({ classNames, srOnly, ...props }, forwardedRef) => {
208
148
  const { tx } = useThemeContext();
209
149
  return (
210
- <Column.Segment asChild>
211
- <div role='none' {...props} className={tx('dialog.body')} ref={forwardedRef}>
212
- {children}
213
- </div>
214
- </Column.Segment>
150
+ <AlertDialogPrimitive.Title {...props} className={tx('dialog.title', { srOnly }, classNames)} ref={forwardedRef} />
215
151
  );
216
152
  });
217
153
 
218
- AlertDialogBody.displayName = ALERT_DIALOG_BODY_NAME;
219
-
220
154
  //
221
- // ActionBar
155
+ // Description
222
156
  //
223
157
 
224
- type AlertDialogActionBarProps = ThemedClassName<PropsWithChildren>;
158
+ type AlertDialogDescriptionProps = ThemedClassName<AlertDialogPrimitive.AlertDialogDescriptionProps> & {
159
+ srOnly?: boolean;
160
+ };
225
161
 
226
- const AlertDialogActionBar: ForwardRefExoticComponent<AlertDialogActionBarProps> = forwardRef<
227
- HTMLDivElement,
228
- AlertDialogActionBarProps
229
- >(({ children, classNames, ...props }, forwardedRef) => {
162
+ const AlertDialogDescription: ForwardRefExoticComponent<AlertDialogDescriptionProps> = forwardRef<
163
+ HTMLParagraphElement,
164
+ AlertDialogDescriptionProps
165
+ >(({ classNames, srOnly, ...props }, forwardedRef) => {
230
166
  const { tx } = useThemeContext();
231
167
  return (
232
- <Column.Segment asChild>
233
- <div {...props} className={tx('dialog.actionbar', {}, classNames)} ref={forwardedRef}>
234
- {children}
235
- </div>
236
- </Column.Segment>
168
+ <AlertDialogPrimitive.Description
169
+ {...props}
170
+ className={tx('dialog.description', { srOnly }, classNames)}
171
+ ref={forwardedRef}
172
+ />
237
173
  );
238
174
  });
239
175
 
240
- AlertDialogActionBar.displayName = ALERT_DIALOG_ACTIONBAR_NAME;
241
-
242
176
  //
243
177
  // AlertDialog
244
178
  //
@@ -249,10 +183,14 @@ export const AlertDialog = {
249
183
  Portal: AlertDialogPortal,
250
184
  Overlay: AlertDialogOverlay,
251
185
  Content: AlertDialogContent,
252
- Body: AlertDialogBody,
186
+ // Shared with Dialog.
187
+ Header: Dialog.Header,
188
+ Body: Dialog.Body,
253
189
  Title: AlertDialogTitle,
254
190
  Description: AlertDialogDescription,
255
- ActionBar: AlertDialogActionBar,
191
+ ActionBar: Dialog.ActionBar,
192
+ CloseIconButton: Dialog.CloseIconButton,
193
+ // AlertDialog-specific dismissal.
256
194
  Cancel: AlertDialogCancel,
257
195
  Action: AlertDialogAction,
258
196
  };
@@ -263,10 +201,13 @@ export type {
263
201
  AlertDialogPortalProps,
264
202
  AlertDialogOverlayProps,
265
203
  AlertDialogContentProps,
266
- AlertDialogBodyProps,
267
204
  AlertDialogTitleProps,
268
205
  AlertDialogDescriptionProps,
269
- AlertDialogActionBarProps,
270
206
  AlertDialogCancelProps,
271
207
  AlertDialogActionProps,
208
+ // Re-export shared types.
209
+ DialogHeaderProps as AlertDialogHeaderProps,
210
+ DialogBodyProps as AlertDialogBodyProps,
211
+ DialogActionBarProps as AlertDialogActionBarProps,
212
+ DialogCloseIconButtonProps as AlertDialogCloseIconButtonProps,
272
213
  };
@@ -5,15 +5,15 @@
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';
8
+ import { random } from '@dxos/random';
9
9
 
10
10
  import { withTheme } from '../../testing';
11
11
  import { Button } from '../Button';
12
12
  import { Input } from '../Input';
13
-
13
+ import { ScrollArea } from '../ScrollArea';
14
14
  import { Dialog, type DialogContentProps } from './Dialog';
15
15
 
16
- type StoryProps = Pick<DialogContentProps, 'size'> &
16
+ type DefaultStoryProps = Pick<DialogContentProps, 'size'> &
17
17
  Partial<{
18
18
  title: string;
19
19
  description: string;
@@ -22,7 +22,11 @@ type StoryProps = Pick<DialogContentProps, 'size'> &
22
22
  blockAlign: 'start' | 'center';
23
23
  }>;
24
24
 
25
- const DefaultStory = ({ size, title, description, openTrigger, closeTrigger, blockAlign }: StoryProps) => {
25
+ /**
26
+ * Standard Dialog with non-scrolling content in Dialog.Body.
27
+ * Dialog.Body propagates the Column grid via subgrid. Children auto-center via --dx-col.
28
+ */
29
+ const DefaultStory = ({ size, title, description, openTrigger, closeTrigger, blockAlign }: DefaultStoryProps) => {
26
30
  return (
27
31
  <Dialog.Root defaultOpen modal>
28
32
  <Dialog.Trigger asChild>
@@ -56,6 +60,45 @@ const DefaultStory = ({ size, title, description, openTrigger, closeTrigger, blo
56
60
  );
57
61
  };
58
62
 
63
+ /**
64
+ * Dialog with a ScrollArea child inside Dialog.Body.
65
+ * The ScrollArea breaks out of Body's gutter padding via `--gutter`
66
+ * and applies its own asymmetric padding (accounting for scrollbar width).
67
+ */
68
+ const ScrollingStory = ({ size, title, description, openTrigger, closeTrigger, blockAlign }: DefaultStoryProps) => {
69
+ return (
70
+ <Dialog.Root defaultOpen modal>
71
+ <Dialog.Trigger asChild>
72
+ <Button>{openTrigger}</Button>
73
+ </Dialog.Trigger>
74
+ <Dialog.Overlay blockAlign={blockAlign}>
75
+ <Dialog.Content size={size}>
76
+ <Dialog.Header>
77
+ <Dialog.Title>{title}</Dialog.Title>
78
+ {closeTrigger && (
79
+ <Dialog.Close asChild>
80
+ <Dialog.CloseIconButton />
81
+ </Dialog.Close>
82
+ )}
83
+ </Dialog.Header>
84
+ <Dialog.Body>
85
+ <ScrollArea.Root orientation='vertical' padding thin>
86
+ <ScrollArea.Viewport>
87
+ <Dialog.Description>{description}</Dialog.Description>
88
+ </ScrollArea.Viewport>
89
+ </ScrollArea.Root>
90
+ </Dialog.Body>
91
+ <Dialog.ActionBar>
92
+ <Dialog.Close asChild>
93
+ <Button variant='primary'>{closeTrigger}</Button>
94
+ </Dialog.Close>
95
+ </Dialog.ActionBar>
96
+ </Dialog.Content>
97
+ </Dialog.Overlay>
98
+ </Dialog.Root>
99
+ );
100
+ };
101
+
59
102
  const meta = {
60
103
  title: 'ui/react-ui-core/components/Dialog',
61
104
  component: Dialog as any,
@@ -70,7 +113,7 @@ type Story = StoryObj<typeof meta>;
70
113
  export const Default: Story = {
71
114
  args: {
72
115
  title: 'Dialog title',
73
- description: faker.lorem.paragraph(1),
116
+ description: random.lorem.paragraph(1),
74
117
  openTrigger: 'Open',
75
118
  closeTrigger: 'Close',
76
119
  blockAlign: 'start',
@@ -80,7 +123,7 @@ export const Default: Story = {
80
123
  export const Small: Story = {
81
124
  args: {
82
125
  title: 'Dialog title',
83
- description: faker.lorem.paragraph(1),
126
+ description: random.lorem.paragraph(1),
84
127
  openTrigger: 'Open',
85
128
  closeTrigger: 'Close',
86
129
  blockAlign: 'center',
@@ -91,7 +134,7 @@ export const Small: Story = {
91
134
  export const Medium: Story = {
92
135
  args: {
93
136
  title: 'Dialog title',
94
- description: faker.lorem.paragraph(1),
137
+ description: random.lorem.paragraph(1),
95
138
  openTrigger: 'Open',
96
139
  closeTrigger: 'Close',
97
140
  blockAlign: 'center',
@@ -102,7 +145,7 @@ export const Medium: Story = {
102
145
  export const Large: Story = {
103
146
  args: {
104
147
  title: 'Dialog title',
105
- description: faker.lorem.paragraph(2),
148
+ description: random.lorem.paragraph(2),
106
149
  openTrigger: 'Open Dialog',
107
150
  closeTrigger: 'Close',
108
151
  blockAlign: 'center',
@@ -113,10 +156,22 @@ export const Large: Story = {
113
156
  export const ExtraLarge: Story = {
114
157
  args: {
115
158
  title: 'Dialog title',
116
- description: faker.lorem.paragraph(2),
159
+ description: random.lorem.paragraph(2),
117
160
  openTrigger: 'Open Dialog',
118
161
  closeTrigger: 'Close',
119
162
  blockAlign: 'center',
120
163
  size: 'xl',
121
164
  },
122
165
  };
166
+
167
+ export const Scrolling: Story = {
168
+ render: ScrollingStory,
169
+ args: {
170
+ title: 'Dialog title',
171
+ description: random.lorem.paragraph(20),
172
+ openTrigger: 'Open Dialog',
173
+ closeTrigger: 'Close',
174
+ blockAlign: 'center',
175
+ size: 'md',
176
+ },
177
+ };