@dxos/react-ui 0.8.4-main.dedc0f3 → 0.8.4-main.e250131250

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 (458) hide show
  1. package/dist/lib/browser/chunk-LUPEFGHJ.mjs +776 -0
  2. package/dist/lib/browser/chunk-LUPEFGHJ.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +4100 -62
  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 +99 -60
  7. package/dist/lib/browser/testing/index.mjs.map +4 -4
  8. package/dist/lib/node-esm/chunk-EQOBFLZC.mjs +778 -0
  9. package/dist/lib/node-esm/chunk-EQOBFLZC.mjs.map +7 -0
  10. package/dist/lib/node-esm/index.mjs +4100 -62
  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 +99 -60
  14. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  15. package/dist/types/src/components/Avatars/Avatar.d.ts.map +1 -1
  16. package/dist/types/src/components/Avatars/Avatar.stories.d.ts +0 -6
  17. package/dist/types/src/components/Avatars/Avatar.stories.d.ts.map +1 -1
  18. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts +0 -6
  19. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts.map +1 -1
  20. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
  21. package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts +0 -6
  22. package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts.map +1 -1
  23. package/dist/types/src/components/{Buttons → Button}/Button.d.ts +4 -4
  24. package/dist/types/src/components/Button/Button.d.ts.map +1 -0
  25. package/dist/types/src/components/{Buttons → Button}/Button.stories.d.ts +1 -7
  26. package/dist/types/src/components/Button/Button.stories.d.ts.map +1 -0
  27. package/dist/types/src/components/{Buttons → Button}/IconButton.d.ts +2 -2
  28. package/dist/types/src/components/Button/IconButton.d.ts.map +1 -0
  29. package/dist/types/src/components/{Buttons → Button}/IconButton.stories.d.ts +0 -6
  30. package/dist/types/src/components/Button/IconButton.stories.d.ts.map +1 -0
  31. package/dist/types/src/components/{Buttons → Button}/Toggle.d.ts +2 -2
  32. package/dist/types/src/components/Button/Toggle.d.ts.map +1 -0
  33. package/dist/types/src/components/Button/Toggle.stories.d.ts +16 -0
  34. package/dist/types/src/components/Button/Toggle.stories.d.ts.map +1 -0
  35. package/dist/types/src/components/Button/ToggleGroup.d.ts +27 -0
  36. package/dist/types/src/components/Button/ToggleGroup.d.ts.map +1 -0
  37. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts +27 -0
  38. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts.map +1 -0
  39. package/dist/types/src/components/Button/index.d.ts.map +1 -0
  40. package/dist/types/src/components/Card/Card.d.ts +145 -0
  41. package/dist/types/src/components/Card/Card.d.ts.map +1 -0
  42. package/dist/types/src/components/Card/Card.stories.d.ts +21 -0
  43. package/dist/types/src/components/Card/Card.stories.d.ts.map +1 -0
  44. package/dist/types/src/components/Card/index.d.ts +2 -0
  45. package/dist/types/src/components/Card/index.d.ts.map +1 -0
  46. package/dist/types/src/components/Clipboard/CopyButton.d.ts +1 -1
  47. package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -1
  48. package/dist/types/src/components/Clipboard/index.d.ts +10 -1
  49. package/dist/types/src/components/Clipboard/index.d.ts.map +1 -1
  50. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts +1 -1
  51. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts.map +1 -1
  52. package/dist/types/src/components/Dialog/AlertDialog.d.ts +53 -0
  53. package/dist/types/src/components/Dialog/AlertDialog.d.ts.map +1 -0
  54. package/dist/types/src/components/{Dialogs → Dialog}/AlertDialog.stories.d.ts +0 -6
  55. package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts.map +1 -0
  56. package/dist/types/src/components/Dialog/Dialog.d.ts +66 -0
  57. package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -0
  58. package/dist/types/src/components/Dialog/Dialog.stories.d.ts +25 -0
  59. package/dist/types/src/components/Dialog/Dialog.stories.d.ts.map +1 -0
  60. package/dist/types/src/components/Dialog/index.d.ts.map +1 -0
  61. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts +1 -1
  62. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts.map +1 -1
  63. package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts +11 -0
  64. package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts.map +1 -0
  65. package/dist/types/src/components/ErrorFallback/ErrorFallback.stories.d.ts +7 -0
  66. package/dist/types/src/components/ErrorFallback/ErrorFallback.stories.d.ts.map +1 -0
  67. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts +8 -0
  68. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts.map +1 -0
  69. package/dist/types/src/components/ErrorFallback/ThrowError.d.ts +9 -0
  70. package/dist/types/src/components/ErrorFallback/ThrowError.d.ts.map +1 -0
  71. package/dist/types/src/components/ErrorFallback/index.d.ts +5 -0
  72. package/dist/types/src/components/ErrorFallback/index.d.ts.map +1 -0
  73. package/dist/types/src/components/Focus/Focus.d.ts +44 -0
  74. package/dist/types/src/components/Focus/Focus.d.ts.map +1 -0
  75. package/dist/types/src/components/Focus/Focus.stories.d.ts +9 -0
  76. package/dist/types/src/components/Focus/Focus.stories.d.ts.map +1 -0
  77. package/dist/types/src/components/Focus/index.d.ts +2 -0
  78. package/dist/types/src/components/Focus/index.d.ts.map +1 -0
  79. package/dist/types/src/components/Icon/Icon.d.ts +5 -2
  80. package/dist/types/src/components/Icon/Icon.d.ts.map +1 -1
  81. package/dist/types/src/components/Icon/Icon.stories.d.ts +25 -0
  82. package/dist/types/src/components/Icon/Icon.stories.d.ts.map +1 -0
  83. package/dist/types/src/components/Image/Image.d.ts +14 -0
  84. package/dist/types/src/components/Image/Image.d.ts.map +1 -0
  85. package/dist/types/src/components/Image/Image.stories.d.ts +33 -0
  86. package/dist/types/src/components/Image/Image.stories.d.ts.map +1 -0
  87. package/dist/types/src/components/Image/index.d.ts +2 -0
  88. package/dist/types/src/components/Image/index.d.ts.map +1 -0
  89. package/dist/types/src/components/Input/Input.d.ts +7 -9
  90. package/dist/types/src/components/Input/Input.d.ts.map +1 -1
  91. package/dist/types/src/components/Input/Input.stories.d.ts +8 -14
  92. package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
  93. package/dist/types/src/components/Link/Link.stories.d.ts +0 -6
  94. package/dist/types/src/components/Link/Link.stories.d.ts.map +1 -1
  95. package/dist/types/src/components/{Lists → List}/List.d.ts +10 -4
  96. package/dist/types/src/components/List/List.d.ts.map +1 -0
  97. package/dist/types/src/components/{Lists → List}/List.stories.d.ts +8 -8
  98. package/dist/types/src/components/List/List.stories.d.ts.map +1 -0
  99. package/dist/types/src/components/List/ListDropIndicator.d.ts.map +1 -0
  100. package/dist/types/src/components/List/Tree.d.ts.map +1 -0
  101. package/dist/types/src/components/{Lists → List}/Tree.stories.d.ts +0 -6
  102. package/dist/types/src/components/List/Tree.stories.d.ts.map +1 -0
  103. package/dist/types/src/components/List/TreeDropIndicator.d.ts.map +1 -0
  104. package/dist/types/src/components/{Lists → List}/Treegrid.d.ts.map +1 -1
  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 +17 -27
  108. package/dist/types/src/components/Main/Main.d.ts.map +1 -1
  109. package/dist/types/src/components/Main/Main.stories.d.ts +0 -4
  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/{Menus → Menu}/ContextMenu.stories.d.ts +0 -6
  114. package/dist/types/src/components/Menu/ContextMenu.stories.d.ts.map +1 -0
  115. package/dist/types/src/components/Menu/DropdownMenu.d.ts +113 -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 +28 -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 +5 -7
  123. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
  124. package/dist/types/src/components/Popover/Popover.d.ts +34 -25
  125. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  126. package/dist/types/src/components/Popover/Popover.stories.d.ts +0 -6
  127. package/dist/types/src/components/Popover/Popover.stories.d.ts.map +1 -1
  128. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +32 -24
  129. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  130. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +63 -12
  131. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
  132. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +55 -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 +23 -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 +2 -8
  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 +37 -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.d.ts +3 -4
  157. package/dist/types/src/components/Status/Status.d.ts.map +1 -1
  158. package/dist/types/src/components/Status/Status.stories.d.ts +4 -8
  159. package/dist/types/src/components/Status/Status.stories.d.ts.map +1 -1
  160. package/dist/types/src/components/Tag/Tag.d.ts +1 -1
  161. package/dist/types/src/components/Tag/Tag.d.ts.map +1 -1
  162. package/dist/types/src/components/Tag/Tag.stories.d.ts +5 -10
  163. package/dist/types/src/components/Tag/Tag.stories.d.ts.map +1 -1
  164. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts +3 -3
  165. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  166. package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts +12 -0
  167. package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts.map +1 -0
  168. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +1 -8
  169. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
  170. package/dist/types/src/components/ThemeProvider/index.d.ts +2 -1
  171. package/dist/types/src/components/ThemeProvider/index.d.ts.map +1 -1
  172. package/dist/types/src/components/Toast/Toast.d.ts +19 -19
  173. package/dist/types/src/components/Toast/Toast.d.ts.map +1 -1
  174. package/dist/types/src/components/Toast/Toast.stories.d.ts +0 -6
  175. package/dist/types/src/components/Toast/Toast.stories.d.ts.map +1 -1
  176. package/dist/types/src/components/Toolbar/Toolbar.d.ts +46 -20
  177. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  178. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts +0 -6
  179. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
  180. package/dist/types/src/components/Tooltip/Tooltip.d.ts +10 -12
  181. package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
  182. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts +2 -8
  183. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
  184. package/dist/types/src/components/index.d.ts +14 -8
  185. package/dist/types/src/components/index.d.ts.map +1 -1
  186. package/dist/types/src/exemplars/generics.stories.d.ts +23 -0
  187. package/dist/types/src/exemplars/generics.stories.d.ts.map +1 -0
  188. package/dist/types/src/exemplars/slot.stories.d.ts +15 -0
  189. package/dist/types/src/exemplars/slot.stories.d.ts.map +1 -0
  190. package/dist/types/src/exemplars/tabster.stories.d.ts +8 -0
  191. package/dist/types/src/exemplars/tabster.stories.d.ts.map +1 -0
  192. package/dist/types/src/exemplars/virtualizer.stories.d.ts +11 -0
  193. package/dist/types/src/exemplars/virtualizer.stories.d.ts.map +1 -0
  194. package/dist/types/src/hooks/index.d.ts +1 -0
  195. package/dist/types/src/hooks/index.d.ts.map +1 -1
  196. package/dist/types/src/hooks/useDensityContext.d.ts +2 -2
  197. package/dist/types/src/hooks/useDensityContext.d.ts.map +1 -1
  198. package/dist/types/src/hooks/useElevationContext.d.ts +1 -1
  199. package/dist/types/src/hooks/useElevationContext.d.ts.map +1 -1
  200. package/dist/types/src/hooks/useSafeArea.d.ts.map +1 -1
  201. package/dist/types/src/hooks/useVisualViewport.d.ts +2 -2
  202. package/dist/types/src/hooks/useVisualViewport.d.ts.map +1 -1
  203. package/dist/types/src/index.d.ts +2 -1
  204. package/dist/types/src/index.d.ts.map +1 -1
  205. package/dist/types/src/playground/Controls.stories.d.ts +0 -6
  206. package/dist/types/src/playground/Controls.stories.d.ts.map +1 -1
  207. package/dist/types/src/playground/Custom.stories.d.ts +1 -2
  208. package/dist/types/src/playground/Custom.stories.d.ts.map +1 -1
  209. package/dist/types/src/playground/Typography.stories.d.ts +0 -6
  210. package/dist/types/src/playground/Typography.stories.d.ts.map +1 -1
  211. package/dist/types/src/primitives/Column/Column.d.ts +51 -0
  212. package/dist/types/src/primitives/Column/Column.d.ts.map +1 -0
  213. package/dist/types/src/primitives/Column/Column.stories.d.ts +25 -0
  214. package/dist/types/src/primitives/Column/Column.stories.d.ts.map +1 -0
  215. package/dist/types/src/primitives/Column/index.d.ts +2 -0
  216. package/dist/types/src/primitives/Column/index.d.ts.map +1 -0
  217. package/dist/types/src/primitives/Container/Container.d.ts +11 -0
  218. package/dist/types/src/primitives/Container/Container.d.ts.map +1 -0
  219. package/dist/types/src/primitives/Container/Container.stories.d.ts +6 -0
  220. package/dist/types/src/primitives/Container/Container.stories.d.ts.map +1 -0
  221. package/dist/types/src/primitives/Container/index.d.ts +2 -0
  222. package/dist/types/src/primitives/Container/index.d.ts.map +1 -0
  223. package/dist/types/src/primitives/Flex/Flex.d.ts +15 -0
  224. package/dist/types/src/primitives/Flex/Flex.d.ts.map +1 -0
  225. package/dist/types/src/primitives/Flex/Flex.stories.d.ts +8 -0
  226. package/dist/types/src/primitives/Flex/Flex.stories.d.ts.map +1 -0
  227. package/dist/types/src/primitives/Flex/index.d.ts +2 -0
  228. package/dist/types/src/primitives/Flex/index.d.ts.map +1 -0
  229. package/dist/types/src/primitives/Grid/Grid.d.ts +14 -0
  230. package/dist/types/src/primitives/Grid/Grid.d.ts.map +1 -0
  231. package/dist/types/src/primitives/Grid/Grid.stories.d.ts +8 -0
  232. package/dist/types/src/primitives/Grid/Grid.stories.d.ts.map +1 -0
  233. package/dist/types/src/primitives/Grid/index.d.ts +2 -0
  234. package/dist/types/src/primitives/Grid/index.d.ts.map +1 -0
  235. package/dist/types/src/primitives/Panel/Panel.d.ts +46 -0
  236. package/dist/types/src/primitives/Panel/Panel.d.ts.map +1 -0
  237. package/dist/types/src/primitives/Panel/Panel.stories.d.ts +6 -0
  238. package/dist/types/src/primitives/Panel/Panel.stories.d.ts.map +1 -0
  239. package/dist/types/src/primitives/Panel/index.d.ts +2 -0
  240. package/dist/types/src/primitives/Panel/index.d.ts.map +1 -0
  241. package/dist/types/src/primitives/index.d.ts +6 -0
  242. package/dist/types/src/primitives/index.d.ts.map +1 -0
  243. package/dist/types/src/testing/Loading.d.ts +9 -0
  244. package/dist/types/src/testing/Loading.d.ts.map +1 -0
  245. package/dist/types/src/testing/decorators/index.d.ts +2 -1
  246. package/dist/types/src/testing/decorators/index.d.ts.map +1 -1
  247. package/dist/types/src/testing/decorators/withLayout.d.ts +15 -0
  248. package/dist/types/src/testing/decorators/withLayout.d.ts.map +1 -0
  249. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts +12 -0
  250. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts.map +1 -0
  251. package/dist/types/src/testing/decorators/withTheme.d.ts +5 -1
  252. package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
  253. package/dist/types/src/testing/index.d.ts +1 -0
  254. package/dist/types/src/testing/index.d.ts.map +1 -1
  255. package/dist/types/src/translations.d.ts +11 -0
  256. package/dist/types/src/translations.d.ts.map +1 -0
  257. package/dist/types/src/util/index.d.ts +2 -1
  258. package/dist/types/src/util/index.d.ts.map +1 -1
  259. package/dist/types/src/util/usePx.d.ts +8 -0
  260. package/dist/types/src/util/usePx.d.ts.map +1 -0
  261. package/dist/types/tsconfig.tsbuildinfo +1 -1
  262. package/package.json +41 -31
  263. package/src/components/Avatars/Avatar.stories.tsx +7 -10
  264. package/src/components/Avatars/Avatar.tsx +6 -13
  265. package/src/components/Avatars/AvatarGroup.stories.tsx +2 -5
  266. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +4 -7
  267. package/src/components/Breadcrumb/Breadcrumb.tsx +11 -37
  268. package/src/components/{Buttons → Button}/Button.stories.tsx +5 -7
  269. package/src/components/{Buttons → Button}/Button.tsx +12 -26
  270. package/src/components/{Buttons → Button}/IconButton.stories.tsx +4 -7
  271. package/src/components/{Buttons → Button}/IconButton.tsx +19 -14
  272. package/src/components/{Buttons → Button}/Toggle.stories.tsx +7 -9
  273. package/src/components/{Buttons → Button}/Toggle.tsx +4 -4
  274. package/src/components/{Buttons → Button}/ToggleGroup.stories.tsx +2 -5
  275. package/src/components/{Buttons → Button}/ToggleGroup.tsx +12 -16
  276. package/src/components/Card/Card.stories.tsx +151 -0
  277. package/src/components/Card/Card.tsx +394 -0
  278. package/src/components/Card/index.ts +5 -0
  279. package/src/components/Clipboard/CopyButton.tsx +7 -7
  280. package/src/components/DensityProvider/DensityProvider.tsx +1 -1
  281. package/src/components/Dialog/AlertDialog.stories.tsx +69 -0
  282. package/src/components/{Dialogs → Dialog}/AlertDialog.tsx +121 -82
  283. package/src/components/Dialog/Dialog.stories.tsx +178 -0
  284. package/src/components/Dialog/Dialog.tsx +280 -0
  285. package/src/components/ElevationProvider/ElevationProvider.tsx +1 -1
  286. package/src/components/ErrorFallback/ErrorFallback.stories.tsx +50 -0
  287. package/src/components/ErrorFallback/ErrorFallback.tsx +70 -0
  288. package/src/components/ErrorFallback/ErrorStack.tsx +80 -0
  289. package/src/components/ErrorFallback/ThrowError.tsx +37 -0
  290. package/src/components/ErrorFallback/index.ts +9 -0
  291. package/src/components/Focus/AUDIT.md +43 -0
  292. package/src/components/Focus/Focus.stories.tsx +230 -0
  293. package/src/components/Focus/Focus.tsx +201 -0
  294. package/src/components/Focus/index.ts +5 -0
  295. package/src/components/Icon/Icon.stories.tsx +144 -0
  296. package/src/components/Icon/Icon.tsx +6 -2
  297. package/src/components/Image/Image.stories.tsx +86 -0
  298. package/src/components/Image/Image.tsx +223 -0
  299. package/src/components/Image/index.ts +5 -0
  300. package/src/components/Input/Input.stories.tsx +21 -43
  301. package/src/components/Input/Input.tsx +38 -74
  302. package/src/components/Link/Link.stories.tsx +2 -5
  303. package/src/components/Link/Link.tsx +2 -2
  304. package/src/components/{Lists → List}/List.stories.tsx +30 -37
  305. package/src/components/{Lists → List}/List.tsx +16 -19
  306. package/src/components/{Lists → List}/ListDropIndicator.tsx +7 -7
  307. package/src/components/{Lists → List}/Tree.stories.tsx +5 -8
  308. package/src/components/{Lists → List}/TreeDropIndicator.tsx +6 -6
  309. package/src/components/{Lists → List}/Treegrid.stories.tsx +3 -3
  310. package/src/components/{Lists → List}/Treegrid.tsx +66 -30
  311. package/src/components/Main/Main.stories.tsx +41 -23
  312. package/src/components/Main/Main.tsx +163 -97
  313. package/src/components/{Menus → Menu}/ContextMenu.stories.tsx +2 -5
  314. package/src/components/{Menus → Menu}/ContextMenu.tsx +9 -33
  315. package/src/components/{Menus → Menu}/DropdownMenu.stories.tsx +3 -6
  316. package/src/components/{Menus → Menu}/DropdownMenu.tsx +139 -112
  317. package/src/components/Message/Message.stories.tsx +28 -15
  318. package/src/components/Message/Message.tsx +43 -34
  319. package/src/components/Popover/Popover.stories.tsx +5 -8
  320. package/src/components/Popover/Popover.tsx +118 -96
  321. package/src/components/ScrollArea/ScrollArea.stories.tsx +222 -35
  322. package/src/components/ScrollArea/ScrollArea.tsx +97 -79
  323. package/src/components/ScrollArea/index.ts +1 -1
  324. package/src/components/ScrollContainer/ScrollContainer.stories.tsx +90 -0
  325. package/src/components/ScrollContainer/ScrollContainer.tsx +320 -0
  326. package/src/components/ScrollContainer/index.ts +5 -0
  327. package/src/components/Select/Select.stories.tsx +6 -8
  328. package/src/components/Select/Select.tsx +11 -27
  329. package/src/components/Separator/Separator.tsx +5 -8
  330. package/src/components/Skeleton/Skeleton.stories.tsx +52 -0
  331. package/src/components/Skeleton/Skeleton.tsx +26 -0
  332. package/src/components/Skeleton/index.ts +5 -0
  333. package/src/components/Splitter/Splitter.stories.tsx +83 -0
  334. package/src/components/Splitter/Splitter.tsx +140 -0
  335. package/src/components/Splitter/index.ts +5 -0
  336. package/src/components/Status/Status.stories.tsx +21 -20
  337. package/src/components/Status/Status.tsx +10 -7
  338. package/src/components/Tag/Tag.stories.tsx +8 -12
  339. package/src/components/Tag/Tag.tsx +3 -8
  340. package/src/components/ThemeProvider/ThemeProvider.stories.tsx +32 -0
  341. package/src/components/ThemeProvider/ThemeProvider.tsx +10 -9
  342. package/src/components/ThemeProvider/TranslationsProvider.tsx +1 -16
  343. package/src/components/ThemeProvider/index.ts +3 -3
  344. package/src/components/Toast/Toast.stories.tsx +3 -6
  345. package/src/components/Toast/Toast.tsx +22 -41
  346. package/src/components/Toolbar/Toolbar.stories.tsx +4 -9
  347. package/src/components/Toolbar/Toolbar.tsx +183 -11
  348. package/src/components/Tooltip/Tooltip.stories.tsx +17 -18
  349. package/src/components/Tooltip/Tooltip.tsx +42 -39
  350. package/src/components/index.ts +15 -9
  351. package/src/exemplars/generics.stories.tsx +41 -0
  352. package/src/exemplars/slot.stories.tsx +117 -0
  353. package/src/exemplars/tabster.stories.tsx +127 -0
  354. package/src/exemplars/virtualizer.stories.tsx +137 -0
  355. package/src/hooks/index.ts +1 -0
  356. package/src/hooks/useDensityContext.ts +3 -3
  357. package/src/hooks/useElevationContext.ts +1 -1
  358. package/src/hooks/useSafeArea.ts +3 -2
  359. package/src/hooks/useVisualViewport.ts +4 -4
  360. package/src/index.ts +2 -1
  361. package/src/playground/Controls.stories.tsx +3 -12
  362. package/src/playground/Custom.stories.tsx +13 -34
  363. package/src/playground/Typography.stories.tsx +3 -6
  364. package/src/primitives/Column/AUDIT.md +354 -0
  365. package/src/primitives/Column/Column.stories.tsx +183 -0
  366. package/src/primitives/Column/Column.tsx +169 -0
  367. package/src/primitives/Column/index.ts +5 -0
  368. package/src/primitives/Container/Container.stories.tsx +30 -0
  369. package/src/primitives/Container/Container.tsx +19 -0
  370. package/src/primitives/Container/index.ts +5 -0
  371. package/src/primitives/Flex/Flex.stories.tsx +58 -0
  372. package/src/primitives/Flex/Flex.tsx +24 -0
  373. package/src/primitives/Flex/index.ts +5 -0
  374. package/src/primitives/Grid/Grid.stories.tsx +57 -0
  375. package/src/primitives/Grid/Grid.tsx +30 -0
  376. package/src/primitives/Grid/index.ts +5 -0
  377. package/src/primitives/Panel/Panel.stories.tsx +67 -0
  378. package/src/primitives/Panel/Panel.tsx +114 -0
  379. package/src/primitives/Panel/index.ts +5 -0
  380. package/src/primitives/index.ts +9 -0
  381. package/src/testing/Loading.tsx +26 -0
  382. package/src/testing/decorators/index.ts +2 -1
  383. package/src/testing/decorators/withLayout.tsx +77 -0
  384. package/src/testing/decorators/withLayoutVariants.tsx +48 -0
  385. package/src/testing/decorators/withTheme.tsx +37 -0
  386. package/src/testing/index.ts +2 -0
  387. package/src/translations.ts +19 -0
  388. package/src/util/index.ts +3 -1
  389. package/src/util/usePx.ts +62 -0
  390. package/dist/lib/browser/chunk-Y4PW3CX2.mjs +0 -4402
  391. package/dist/lib/browser/chunk-Y4PW3CX2.mjs.map +0 -7
  392. package/dist/lib/node-esm/chunk-L6LIOSFT.mjs +0 -4404
  393. package/dist/lib/node-esm/chunk-L6LIOSFT.mjs.map +0 -7
  394. package/dist/types/src/components/AnchoredOverflow/AnchoredOverflow.d.ts +0 -15
  395. package/dist/types/src/components/AnchoredOverflow/AnchoredOverflow.d.ts.map +0 -1
  396. package/dist/types/src/components/AnchoredOverflow/index.d.ts +0 -2
  397. package/dist/types/src/components/AnchoredOverflow/index.d.ts.map +0 -1
  398. package/dist/types/src/components/Buttons/Button.d.ts.map +0 -1
  399. package/dist/types/src/components/Buttons/Button.stories.d.ts.map +0 -1
  400. package/dist/types/src/components/Buttons/IconButton.d.ts.map +0 -1
  401. package/dist/types/src/components/Buttons/IconButton.stories.d.ts.map +0 -1
  402. package/dist/types/src/components/Buttons/Toggle.d.ts.map +0 -1
  403. package/dist/types/src/components/Buttons/Toggle.stories.d.ts +0 -19
  404. package/dist/types/src/components/Buttons/Toggle.stories.d.ts.map +0 -1
  405. package/dist/types/src/components/Buttons/ToggleGroup.d.ts +0 -31
  406. package/dist/types/src/components/Buttons/ToggleGroup.d.ts.map +0 -1
  407. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts +0 -37
  408. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts.map +0 -1
  409. package/dist/types/src/components/Buttons/index.d.ts.map +0 -1
  410. package/dist/types/src/components/Dialogs/AlertDialog.d.ts +0 -31
  411. package/dist/types/src/components/Dialogs/AlertDialog.d.ts.map +0 -1
  412. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts.map +0 -1
  413. package/dist/types/src/components/Dialogs/Dialog.d.ts +0 -31
  414. package/dist/types/src/components/Dialogs/Dialog.d.ts.map +0 -1
  415. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts +0 -26
  416. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts.map +0 -1
  417. package/dist/types/src/components/Dialogs/index.d.ts.map +0 -1
  418. package/dist/types/src/components/Lists/List.d.ts.map +0 -1
  419. package/dist/types/src/components/Lists/List.stories.d.ts.map +0 -1
  420. package/dist/types/src/components/Lists/ListDropIndicator.d.ts.map +0 -1
  421. package/dist/types/src/components/Lists/Tree.d.ts.map +0 -1
  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.map +0 -1
  425. package/dist/types/src/components/Lists/index.d.ts.map +0 -1
  426. package/dist/types/src/components/Menus/ContextMenu.d.ts.map +0 -1
  427. package/dist/types/src/components/Menus/ContextMenu.stories.d.ts.map +0 -1
  428. package/dist/types/src/components/Menus/DropdownMenu.d.ts +0 -113
  429. package/dist/types/src/components/Menus/DropdownMenu.d.ts.map +0 -1
  430. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts +0 -21
  431. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts.map +0 -1
  432. package/dist/types/src/components/Menus/index.d.ts.map +0 -1
  433. package/dist/types/src/testing/decorators/withSurfaceVariantsLayout.d.ts +0 -12
  434. package/dist/types/src/testing/decorators/withSurfaceVariantsLayout.d.ts.map +0 -1
  435. package/dist/types/src/util/ThemedClassName.d.ts +0 -5
  436. package/dist/types/src/util/ThemedClassName.d.ts.map +0 -1
  437. package/src/components/AnchoredOverflow/AnchoredOverflow.tsx +0 -59
  438. package/src/components/AnchoredOverflow/index.ts +0 -5
  439. package/src/components/Dialogs/AlertDialog.stories.tsx +0 -72
  440. package/src/components/Dialogs/Dialog.stories.tsx +0 -65
  441. package/src/components/Dialogs/Dialog.tsx +0 -159
  442. package/src/testing/decorators/withSurfaceVariantsLayout.tsx +0 -51
  443. package/src/testing/decorators/withTheme.ts +0 -25
  444. package/src/util/ThemedClassName.ts +0 -7
  445. /package/dist/types/src/components/{Buttons → Button}/index.d.ts +0 -0
  446. /package/dist/types/src/components/{Dialogs → Dialog}/index.d.ts +0 -0
  447. /package/dist/types/src/components/{Lists → List}/ListDropIndicator.d.ts +0 -0
  448. /package/dist/types/src/components/{Lists → List}/Tree.d.ts +0 -0
  449. /package/dist/types/src/components/{Lists → List}/TreeDropIndicator.d.ts +0 -0
  450. /package/dist/types/src/components/{Lists → List}/Treegrid.d.ts +0 -0
  451. /package/dist/types/src/components/{Lists → List}/Treegrid.stories.d.ts +0 -0
  452. /package/dist/types/src/components/{Lists → List}/index.d.ts +0 -0
  453. /package/dist/types/src/components/{Menus → Menu}/index.d.ts +0 -0
  454. /package/src/components/{Buttons → Button}/index.ts +0 -0
  455. /package/src/components/{Dialogs → Dialog}/index.ts +0 -0
  456. /package/src/components/{Lists → List}/Tree.tsx +0 -0
  457. /package/src/components/{Lists → List}/index.ts +0 -0
  458. /package/src/components/{Menus → Menu}/index.ts +0 -0
@@ -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 DefaultStoryProps = 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 }: DefaultStoryProps) => {
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
+ };
@@ -2,102 +2,90 @@
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
7
  import React, { type ForwardRefExoticComponent, type FunctionComponent, forwardRef } from 'react';
27
8
 
9
+ import { type DialogSize } from '@dxos/ui-theme';
10
+
28
11
  import { useThemeContext } from '../../hooks';
12
+ import { Column } from '../../primitives';
29
13
  import { type ThemedClassName } from '../../util';
30
14
  import { ElevationProvider } from '../ElevationProvider';
31
15
 
32
- type AlertDialogRootProps = AlertDialogRootPrimitiveProps;
16
+ import {
17
+ Dialog,
18
+ type DialogHeaderProps,
19
+ type DialogBodyProps,
20
+ type DialogActionBarProps,
21
+ type DialogCloseIconButtonProps,
22
+ } from './Dialog';
23
+
24
+ //
25
+ // Root
26
+ //
27
+
28
+ type AlertDialogRootProps = AlertDialogPrimitive.AlertDialogProps;
33
29
 
34
30
  const AlertDialogRoot: FunctionComponent<AlertDialogRootProps> = (props) => (
35
31
  <ElevationProvider elevation='dialog'>
36
- <AlertDialogRootPrimitive {...props} />
32
+ <AlertDialogPrimitive.Root {...props} />
37
33
  </ElevationProvider>
38
34
  );
39
35
 
40
- type AlertDialogTriggerProps = AlertDialogTriggerPrimitiveProps;
36
+ //
37
+ // Trigger
38
+ //
41
39
 
42
- const AlertDialogTrigger: FunctionComponent<AlertDialogTriggerProps> = AlertDialogTriggerPrimitive;
40
+ type AlertDialogTriggerProps = AlertDialogPrimitive.AlertDialogTriggerProps;
43
41
 
44
- type AlertDialogPortalProps = AlertDialogPortalPrimitiveProps;
42
+ const AlertDialogTrigger: FunctionComponent<AlertDialogTriggerProps> = AlertDialogPrimitive.Trigger;
45
43
 
46
- const AlertDialogPortal: FunctionComponent<AlertDialogPortalProps> = AlertDialogPortalPrimitive;
44
+ //
45
+ // Portal
46
+ //
47
47
 
48
- type AlertDialogCancelProps = AlertDialogCancelPrimitiveProps;
48
+ type AlertDialogPortalProps = AlertDialogPrimitive.AlertDialogPortalProps;
49
49
 
50
- const AlertDialogCancel: FunctionComponent<AlertDialogCancelProps> = AlertDialogCancelPrimitive;
50
+ const AlertDialogPortal: FunctionComponent<AlertDialogPortalProps> = AlertDialogPrimitive.Portal;
51
51
 
52
- type AlertDialogActionProps = AlertDialogActionPrimitiveProps;
52
+ //
53
+ // Cancel
54
+ //
53
55
 
54
- const AlertDialogAction: FunctionComponent<AlertDialogActionProps> = AlertDialogActionPrimitive;
56
+ type AlertDialogCancelProps = AlertDialogPrimitive.AlertDialogCancelProps;
55
57
 
56
- type AlertDialogTitleProps = ThemedClassName<AlertDialogTitlePrimitiveProps> & { srOnly?: boolean };
58
+ const AlertDialogCancel: FunctionComponent<AlertDialogCancelProps> = AlertDialogPrimitive.Cancel;
57
59
 
58
- const AlertDialogTitle: ForwardRefExoticComponent<AlertDialogTitleProps> = forwardRef<
59
- HTMLHeadingElement,
60
- AlertDialogTitleProps
61
- >(({ classNames, srOnly, ...props }, forwardedRef) => {
62
- const { tx } = useThemeContext();
63
- return (
64
- <AlertDialogTitlePrimitive
65
- {...props}
66
- className={tx('dialog.title', 'dialog--alert__title', { srOnly }, classNames)}
67
- ref={forwardedRef}
68
- />
69
- );
70
- });
60
+ //
61
+ // Action
62
+ //
71
63
 
72
- type AlertDialogDescriptionProps = ThemedClassName<AlertDialogDescriptionPrimitiveProps> & { srOnly?: boolean };
64
+ type AlertDialogActionProps = AlertDialogPrimitive.AlertDialogActionProps;
73
65
 
74
- const AlertDialogDescription: ForwardRefExoticComponent<AlertDialogTitleProps> = forwardRef<
75
- HTMLParagraphElement,
76
- AlertDialogDescriptionProps
77
- >(({ classNames, srOnly, ...props }, forwardedRef) => {
78
- const { tx } = useThemeContext();
79
- return (
80
- <AlertDialogDescriptionPrimitive
81
- {...props}
82
- className={tx('dialog.description', 'dialog--alert__description', { srOnly }, classNames)}
83
- ref={forwardedRef}
84
- />
85
- );
86
- });
66
+ const AlertDialogAction: FunctionComponent<AlertDialogActionProps> = AlertDialogPrimitive.Action;
67
+
68
+ //
69
+ // Context
70
+ //
87
71
 
88
72
  type OverlayLayoutContextValue = { inOverlayLayout?: boolean };
73
+
89
74
  const ALERT_DIALOG_OVERLAY_NAME = 'AlertDialogOverlay';
90
75
  const ALERT_DIALOG_CONTENT_NAME = 'AlertDialogContent';
76
+
91
77
  const [OverlayLayoutProvider, useOverlayLayoutContext] = createContext<OverlayLayoutContextValue>(
92
78
  ALERT_DIALOG_OVERLAY_NAME,
93
- {
94
- inOverlayLayout: false,
95
- },
79
+ { inOverlayLayout: false },
96
80
  );
97
81
 
98
- type AlertDialogOverlayProps = ThemedClassName<AlertDialogOverlayPrimitiveProps> & {
99
- blockAlign?: 'center' | 'start' | 'end';
100
- };
82
+ //
83
+ // Overlay
84
+ //
85
+
86
+ type AlertDialogOverlayProps = ThemedClassName<
87
+ AlertDialogPrimitive.AlertDialogOverlayProps & { blockAlign?: 'center' | 'start' | 'end' }
88
+ >;
101
89
 
102
90
  const AlertDialogOverlay: ForwardRefExoticComponent<AlertDialogOverlayProps> = forwardRef<
103
91
  HTMLDivElement,
@@ -105,56 +93,102 @@ const AlertDialogOverlay: ForwardRefExoticComponent<AlertDialogOverlayProps> = f
105
93
  >(({ classNames, children, blockAlign, ...props }, forwardedRef) => {
106
94
  const { tx } = useThemeContext();
107
95
  return (
108
- <AlertDialogOverlayPrimitive
96
+ <AlertDialogPrimitive.Overlay
109
97
  {...props}
110
- className={tx(
111
- 'dialog.overlay',
112
- 'dialog--alert__overlay',
113
- {},
114
- classNames,
115
- 'data-[block-align=start]:justify-center',
116
- 'data-[block-align=start]:items-start',
117
- 'data-[block-align=center]:place-content-center',
118
- )}
119
- ref={forwardedRef}
120
98
  data-block-align={blockAlign}
99
+ className={tx('dialog.overlay', {}, classNames)}
100
+ ref={forwardedRef}
121
101
  >
122
102
  <OverlayLayoutProvider inOverlayLayout>{children}</OverlayLayoutProvider>
123
- </AlertDialogOverlayPrimitive>
103
+ </AlertDialogPrimitive.Overlay>
124
104
  );
125
105
  });
126
106
 
127
107
  AlertDialogOverlay.displayName = ALERT_DIALOG_OVERLAY_NAME;
128
108
 
129
- type AlertDialogContentProps = ThemedClassName<AlertDialogContentPrimitiveProps>;
109
+ //
110
+ // Content
111
+ //
112
+
113
+ type AlertDialogContentProps = ThemedClassName<AlertDialogPrimitive.AlertDialogContentProps> & { size?: DialogSize };
130
114
 
131
115
  const AlertDialogContent: ForwardRefExoticComponent<AlertDialogContentProps> = forwardRef<
132
116
  HTMLDivElement,
133
117
  AlertDialogContentProps
134
- >(({ classNames, children, ...props }, forwardedRef) => {
118
+ >(({ classNames, children, size = 'md', ...props }, forwardedRef) => {
135
119
  const { tx } = useThemeContext();
136
120
  const { inOverlayLayout } = useOverlayLayoutContext(ALERT_DIALOG_CONTENT_NAME);
137
121
  return (
138
- <AlertDialogContentPrimitive
122
+ <AlertDialogPrimitive.Content
139
123
  {...props}
140
- className={tx('dialog.content', 'dialog--alert', { inOverlayLayout }, classNames)}
124
+ className={tx('dialog.content', { inOverlayLayout, size }, classNames)}
141
125
  ref={forwardedRef}
142
126
  >
143
- {children}
144
- </AlertDialogContentPrimitive>
127
+ <Column.Root classNames='dx-expander' gutter='sm'>
128
+ {children}
129
+ </Column.Root>
130
+ </AlertDialogPrimitive.Content>
145
131
  );
146
132
  });
147
133
 
148
134
  AlertDialogContent.displayName = ALERT_DIALOG_CONTENT_NAME;
149
135
 
136
+ //
137
+ // Title
138
+ //
139
+
140
+ type AlertDialogTitleProps = ThemedClassName<AlertDialogPrimitive.AlertDialogTitleProps> & { srOnly?: boolean };
141
+
142
+ const AlertDialogTitle: ForwardRefExoticComponent<AlertDialogTitleProps> = forwardRef<
143
+ HTMLHeadingElement,
144
+ AlertDialogTitleProps
145
+ >(({ classNames, srOnly, ...props }, forwardedRef) => {
146
+ const { tx } = useThemeContext();
147
+ return (
148
+ <AlertDialogPrimitive.Title {...props} className={tx('dialog.title', { srOnly }, classNames)} ref={forwardedRef} />
149
+ );
150
+ });
151
+
152
+ //
153
+ // Description
154
+ //
155
+
156
+ type AlertDialogDescriptionProps = ThemedClassName<AlertDialogPrimitive.AlertDialogDescriptionProps> & {
157
+ srOnly?: boolean;
158
+ };
159
+
160
+ const AlertDialogDescription: ForwardRefExoticComponent<AlertDialogDescriptionProps> = forwardRef<
161
+ HTMLParagraphElement,
162
+ AlertDialogDescriptionProps
163
+ >(({ classNames, srOnly, ...props }, forwardedRef) => {
164
+ const { tx } = useThemeContext();
165
+ return (
166
+ <AlertDialogPrimitive.Description
167
+ {...props}
168
+ className={tx('dialog.description', { srOnly }, classNames)}
169
+ ref={forwardedRef}
170
+ />
171
+ );
172
+ });
173
+
174
+ //
175
+ // AlertDialog
176
+ //
177
+
150
178
  export const AlertDialog = {
151
179
  Root: AlertDialogRoot,
152
180
  Trigger: AlertDialogTrigger,
153
181
  Portal: AlertDialogPortal,
154
182
  Overlay: AlertDialogOverlay,
155
183
  Content: AlertDialogContent,
184
+ // Shared with Dialog.
185
+ Header: Dialog.Header,
186
+ Body: Dialog.Body,
156
187
  Title: AlertDialogTitle,
157
188
  Description: AlertDialogDescription,
189
+ ActionBar: Dialog.ActionBar,
190
+ CloseIconButton: Dialog.CloseIconButton,
191
+ // AlertDialog-specific dismissal.
158
192
  Cancel: AlertDialogCancel,
159
193
  Action: AlertDialogAction,
160
194
  };
@@ -169,4 +203,9 @@ export type {
169
203
  AlertDialogDescriptionProps,
170
204
  AlertDialogCancelProps,
171
205
  AlertDialogActionProps,
206
+ // Re-export shared types.
207
+ DialogHeaderProps as AlertDialogHeaderProps,
208
+ DialogBodyProps as AlertDialogBodyProps,
209
+ DialogActionBarProps as AlertDialogActionBarProps,
210
+ DialogCloseIconButtonProps as AlertDialogCloseIconButtonProps,
172
211
  };
@@ -0,0 +1,178 @@
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
+ import { Input } from '../Input';
13
+ import { ScrollArea } from '../ScrollArea';
14
+
15
+ import { Dialog, type DialogContentProps } from './Dialog';
16
+
17
+ type DefaultStoryProps = Pick<DialogContentProps, 'size'> &
18
+ Partial<{
19
+ title: string;
20
+ description: string;
21
+ openTrigger: string;
22
+ closeTrigger: string;
23
+ blockAlign: 'start' | 'center';
24
+ }>;
25
+
26
+ /**
27
+ * Standard Dialog with non-scrolling content in Dialog.Body.
28
+ * Dialog.Body delegates to Column.Content, which applies gutter padding via `px-[var(--gutter)]`.
29
+ */
30
+ const DefaultStory = ({ size, title, description, openTrigger, closeTrigger, blockAlign }: DefaultStoryProps) => {
31
+ return (
32
+ <Dialog.Root defaultOpen modal>
33
+ <Dialog.Trigger asChild>
34
+ <Button>{openTrigger}</Button>
35
+ </Dialog.Trigger>
36
+ <Dialog.Overlay blockAlign={blockAlign}>
37
+ <Dialog.Content size={size}>
38
+ <Dialog.Header>
39
+ <Dialog.Title>{title}</Dialog.Title>
40
+ {closeTrigger && (
41
+ <Dialog.Close asChild>
42
+ <Dialog.CloseIconButton />
43
+ </Dialog.Close>
44
+ )}
45
+ </Dialog.Header>
46
+ <Dialog.Body>
47
+ <Dialog.Description>{description}</Dialog.Description>
48
+ <Input.Root>
49
+ <Input.Label>Value</Input.Label>
50
+ <Input.TextInput placeholder='Enter value' />
51
+ </Input.Root>
52
+ </Dialog.Body>
53
+ <Dialog.ActionBar>
54
+ <Dialog.Close asChild>
55
+ <Button variant='primary'>{closeTrigger}</Button>
56
+ </Dialog.Close>
57
+ </Dialog.ActionBar>
58
+ </Dialog.Content>
59
+ </Dialog.Overlay>
60
+ </Dialog.Root>
61
+ );
62
+ };
63
+
64
+ /**
65
+ * Dialog with a ScrollArea child inside Dialog.Body.
66
+ * The ScrollArea breaks out of Body's gutter padding via `--gutter-offset`
67
+ * and applies its own asymmetric padding (accounting for scrollbar width).
68
+ */
69
+ const ScrollingStory = ({ size, title, description, openTrigger, closeTrigger, blockAlign }: DefaultStoryProps) => {
70
+ return (
71
+ <Dialog.Root defaultOpen modal>
72
+ <Dialog.Trigger asChild>
73
+ <Button>{openTrigger}</Button>
74
+ </Dialog.Trigger>
75
+ <Dialog.Overlay blockAlign={blockAlign}>
76
+ <Dialog.Content size={size}>
77
+ <Dialog.Header>
78
+ <Dialog.Title>{title}</Dialog.Title>
79
+ {closeTrigger && (
80
+ <Dialog.Close asChild>
81
+ <Dialog.CloseIconButton />
82
+ </Dialog.Close>
83
+ )}
84
+ </Dialog.Header>
85
+ <Dialog.Body>
86
+ <ScrollArea.Root orientation='vertical' padding thin>
87
+ <ScrollArea.Viewport>
88
+ <Dialog.Description>{description}</Dialog.Description>
89
+ </ScrollArea.Viewport>
90
+ </ScrollArea.Root>
91
+ </Dialog.Body>
92
+ <Dialog.ActionBar>
93
+ <Dialog.Close asChild>
94
+ <Button variant='primary'>{closeTrigger}</Button>
95
+ </Dialog.Close>
96
+ </Dialog.ActionBar>
97
+ </Dialog.Content>
98
+ </Dialog.Overlay>
99
+ </Dialog.Root>
100
+ );
101
+ };
102
+
103
+ const meta = {
104
+ title: 'ui/react-ui-core/components/Dialog',
105
+ component: Dialog as any,
106
+ render: DefaultStory,
107
+ decorators: [withTheme()],
108
+ } satisfies Meta<typeof DefaultStory>;
109
+
110
+ export default meta;
111
+
112
+ type Story = StoryObj<typeof meta>;
113
+
114
+ export const Default: Story = {
115
+ args: {
116
+ title: 'Dialog title',
117
+ description: faker.lorem.paragraph(1),
118
+ openTrigger: 'Open',
119
+ closeTrigger: 'Close',
120
+ blockAlign: 'start',
121
+ },
122
+ };
123
+
124
+ export const Small: Story = {
125
+ args: {
126
+ title: 'Dialog title',
127
+ description: faker.lorem.paragraph(1),
128
+ openTrigger: 'Open',
129
+ closeTrigger: 'Close',
130
+ blockAlign: 'center',
131
+ size: 'sm',
132
+ },
133
+ };
134
+
135
+ export const Medium: Story = {
136
+ args: {
137
+ title: 'Dialog title',
138
+ description: faker.lorem.paragraph(1),
139
+ openTrigger: 'Open',
140
+ closeTrigger: 'Close',
141
+ blockAlign: 'center',
142
+ size: 'md',
143
+ },
144
+ };
145
+
146
+ export const Large: Story = {
147
+ args: {
148
+ title: 'Dialog title',
149
+ description: faker.lorem.paragraph(2),
150
+ openTrigger: 'Open Dialog',
151
+ closeTrigger: 'Close',
152
+ blockAlign: 'center',
153
+ size: 'lg',
154
+ },
155
+ };
156
+
157
+ export const ExtraLarge: Story = {
158
+ args: {
159
+ title: 'Dialog title',
160
+ description: faker.lorem.paragraph(2),
161
+ openTrigger: 'Open Dialog',
162
+ closeTrigger: 'Close',
163
+ blockAlign: 'center',
164
+ size: 'xl',
165
+ },
166
+ };
167
+
168
+ export const Scrolling: Story = {
169
+ render: ScrollingStory,
170
+ args: {
171
+ title: 'Dialog title',
172
+ description: faker.lorem.paragraph(20),
173
+ openTrigger: 'Open Dialog',
174
+ closeTrigger: 'Close',
175
+ blockAlign: 'center',
176
+ size: 'md',
177
+ },
178
+ };