@dxos/react-ui 0.8.4-main.406dc2a → 0.8.4-main.40e3dcdf1b

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 (407) hide show
  1. package/dist/lib/browser/chunk-2FKSMWNY.mjs +774 -0
  2. package/dist/lib/browser/chunk-2FKSMWNY.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +3916 -66
  4. package/dist/lib/browser/index.mjs.map +4 -4
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/testing/index.mjs +76 -64
  7. package/dist/lib/browser/testing/index.mjs.map +4 -4
  8. package/dist/lib/node-esm/chunk-ZNBLTSHI.mjs +776 -0
  9. package/dist/lib/node-esm/chunk-ZNBLTSHI.mjs.map +7 -0
  10. package/dist/lib/node-esm/index.mjs +3916 -66
  11. package/dist/lib/node-esm/index.mjs.map +4 -4
  12. package/dist/lib/node-esm/meta.json +1 -1
  13. package/dist/lib/node-esm/testing/index.mjs +76 -64
  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.map +1 -1
  17. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
  18. package/dist/types/src/components/{Buttons → Button}/Button.d.ts +1 -1
  19. package/dist/types/src/components/Button/Button.d.ts.map +1 -0
  20. package/dist/types/src/components/Button/Button.stories.d.ts.map +1 -0
  21. package/dist/types/src/components/{Buttons → Button}/IconButton.d.ts +2 -2
  22. package/dist/types/src/components/Button/IconButton.d.ts.map +1 -0
  23. package/dist/types/src/components/Button/IconButton.stories.d.ts.map +1 -0
  24. package/dist/types/src/components/Button/Toggle.d.ts.map +1 -0
  25. package/dist/types/src/components/Button/Toggle.stories.d.ts +16 -0
  26. package/dist/types/src/components/Button/Toggle.stories.d.ts.map +1 -0
  27. package/dist/types/src/components/{Buttons → Button}/ToggleGroup.d.ts +4 -4
  28. package/dist/types/src/components/Button/ToggleGroup.d.ts.map +1 -0
  29. package/dist/types/src/components/{Buttons → Button}/ToggleGroup.stories.d.ts +4 -4
  30. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts.map +1 -0
  31. package/dist/types/src/components/Button/index.d.ts.map +1 -0
  32. package/dist/types/src/components/Card/Card.d.ts +107 -0
  33. package/dist/types/src/components/Card/Card.d.ts.map +1 -0
  34. package/dist/types/src/components/Card/Card.stories.d.ts +21 -0
  35. package/dist/types/src/components/Card/Card.stories.d.ts.map +1 -0
  36. package/dist/types/src/components/Card/index.d.ts +2 -0
  37. package/dist/types/src/components/Card/index.d.ts.map +1 -0
  38. package/dist/types/src/components/Clipboard/CopyButton.d.ts +1 -1
  39. package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -1
  40. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts +1 -1
  41. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts.map +1 -1
  42. package/dist/types/src/components/{Dialogs → Dialog}/AlertDialog.d.ts +12 -3
  43. package/dist/types/src/components/Dialog/AlertDialog.d.ts.map +1 -0
  44. package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts.map +1 -0
  45. package/dist/types/src/components/Dialog/Dialog.d.ts +47 -0
  46. package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -0
  47. package/dist/types/src/components/{Dialogs → Dialog}/Dialog.stories.d.ts +9 -10
  48. package/dist/types/src/components/Dialog/Dialog.stories.d.ts.map +1 -0
  49. package/dist/types/src/components/Dialog/index.d.ts.map +1 -0
  50. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts +1 -1
  51. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts.map +1 -1
  52. package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts +11 -0
  53. package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts.map +1 -0
  54. package/dist/types/src/components/ErrorFallback/ErrorFallback.stories.d.ts +7 -0
  55. package/dist/types/src/components/ErrorFallback/ErrorFallback.stories.d.ts.map +1 -0
  56. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts +8 -0
  57. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts.map +1 -0
  58. package/dist/types/src/components/ErrorFallback/ThrowError.d.ts +9 -0
  59. package/dist/types/src/components/ErrorFallback/ThrowError.d.ts.map +1 -0
  60. package/dist/types/src/components/ErrorFallback/index.d.ts +5 -0
  61. package/dist/types/src/components/ErrorFallback/index.d.ts.map +1 -0
  62. package/dist/types/src/components/Icon/Icon.d.ts +1 -1
  63. package/dist/types/src/components/Icon/Icon.d.ts.map +1 -1
  64. package/dist/types/src/components/Icon/Icon.stories.d.ts +17 -0
  65. package/dist/types/src/components/Icon/Icon.stories.d.ts.map +1 -0
  66. package/dist/types/src/components/Image/Image.d.ts +14 -0
  67. package/dist/types/src/components/Image/Image.d.ts.map +1 -0
  68. package/dist/types/src/components/Image/Image.stories.d.ts +33 -0
  69. package/dist/types/src/components/Image/Image.stories.d.ts.map +1 -0
  70. package/dist/types/src/components/Image/index.d.ts +2 -0
  71. package/dist/types/src/components/Image/index.d.ts.map +1 -0
  72. package/dist/types/src/components/Input/Input.d.ts +5 -5
  73. package/dist/types/src/components/Input/Input.d.ts.map +1 -1
  74. package/dist/types/src/components/Input/Input.stories.d.ts +8 -8
  75. package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
  76. package/dist/types/src/components/{Lists → List}/List.d.ts +1 -1
  77. package/dist/types/src/components/List/List.d.ts.map +1 -0
  78. package/dist/types/src/components/List/List.stories.d.ts.map +1 -0
  79. package/dist/types/src/components/List/ListDropIndicator.d.ts.map +1 -0
  80. package/dist/types/src/components/List/Tree.d.ts.map +1 -0
  81. package/dist/types/src/components/List/Tree.stories.d.ts.map +1 -0
  82. package/dist/types/src/components/List/TreeDropIndicator.d.ts.map +1 -0
  83. package/dist/types/src/components/List/Treegrid.d.ts.map +1 -0
  84. package/dist/types/src/components/List/Treegrid.stories.d.ts.map +1 -0
  85. package/dist/types/src/components/List/index.d.ts.map +1 -0
  86. package/dist/types/src/components/Main/Main.d.ts +17 -18
  87. package/dist/types/src/components/Main/Main.d.ts.map +1 -1
  88. package/dist/types/src/components/Main/Main.stories.d.ts +0 -3
  89. package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
  90. package/dist/types/src/components/{Menus → Menu}/ContextMenu.d.ts +6 -6
  91. package/dist/types/src/components/Menu/ContextMenu.d.ts.map +1 -0
  92. package/dist/types/src/components/Menu/ContextMenu.stories.d.ts.map +1 -0
  93. package/dist/types/src/components/{Menus → Menu}/DropdownMenu.d.ts +3 -4
  94. package/dist/types/src/components/Menu/DropdownMenu.d.ts.map +1 -0
  95. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts.map +1 -0
  96. package/dist/types/src/components/Menu/index.d.ts.map +1 -0
  97. package/dist/types/src/components/Message/Message.d.ts +1 -1
  98. package/dist/types/src/components/Message/Message.d.ts.map +1 -1
  99. package/dist/types/src/components/Message/Message.stories.d.ts +3 -4
  100. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
  101. package/dist/types/src/components/Popover/Popover.d.ts +2 -1
  102. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  103. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +23 -26
  104. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  105. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +44 -8
  106. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
  107. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +39 -0
  108. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -0
  109. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts +24 -0
  110. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts.map +1 -0
  111. package/dist/types/src/components/ScrollContainer/index.d.ts +2 -0
  112. package/dist/types/src/components/ScrollContainer/index.d.ts.map +1 -0
  113. package/dist/types/src/components/Select/Select.d.ts +10 -10
  114. package/dist/types/src/components/Select/Select.d.ts.map +1 -1
  115. package/dist/types/src/components/Separator/Separator.d.ts +1 -1
  116. package/dist/types/src/components/Skeleton/Skeleton.d.ts +12 -0
  117. package/dist/types/src/components/Skeleton/Skeleton.d.ts.map +1 -0
  118. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts +17 -0
  119. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts.map +1 -0
  120. package/dist/types/src/components/Skeleton/index.d.ts +2 -0
  121. package/dist/types/src/components/Skeleton/index.d.ts.map +1 -0
  122. package/dist/types/src/components/Splitter/Splitter.d.ts +32 -0
  123. package/dist/types/src/components/Splitter/Splitter.d.ts.map +1 -0
  124. package/dist/types/src/components/Splitter/Splitter.stories.d.ts +7 -0
  125. package/dist/types/src/components/Splitter/Splitter.stories.d.ts.map +1 -0
  126. package/dist/types/src/components/Splitter/index.d.ts +2 -0
  127. package/dist/types/src/components/Splitter/index.d.ts.map +1 -0
  128. package/dist/types/src/components/Status/Status.stories.d.ts +4 -2
  129. package/dist/types/src/components/Status/Status.stories.d.ts.map +1 -1
  130. package/dist/types/src/components/Tag/Tag.d.ts +1 -1
  131. package/dist/types/src/components/Tag/Tag.d.ts.map +1 -1
  132. package/dist/types/src/components/Tag/Tag.stories.d.ts +0 -5
  133. package/dist/types/src/components/Tag/Tag.stories.d.ts.map +1 -1
  134. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts +2 -2
  135. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  136. package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts +12 -0
  137. package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts.map +1 -0
  138. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +1 -8
  139. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
  140. package/dist/types/src/components/ThemeProvider/index.d.ts +2 -1
  141. package/dist/types/src/components/ThemeProvider/index.d.ts.map +1 -1
  142. package/dist/types/src/components/Toast/Toast.d.ts +4 -4
  143. package/dist/types/src/components/Toast/Toast.d.ts.map +1 -1
  144. package/dist/types/src/components/Toolbar/Toolbar.d.ts +40 -12
  145. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  146. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
  147. package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
  148. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
  149. package/dist/types/src/components/index.d.ts +13 -8
  150. package/dist/types/src/components/index.d.ts.map +1 -1
  151. package/dist/types/src/exemplars/generics.stories.d.ts +18 -0
  152. package/dist/types/src/exemplars/generics.stories.d.ts.map +1 -0
  153. package/dist/types/src/exemplars/slot.stories.d.ts +14 -0
  154. package/dist/types/src/exemplars/slot.stories.d.ts.map +1 -0
  155. package/dist/types/src/exemplars/tabster.stories.d.ts +8 -0
  156. package/dist/types/src/exemplars/tabster.stories.d.ts.map +1 -0
  157. package/dist/types/src/exemplars/virtualizer.stories.d.ts +11 -0
  158. package/dist/types/src/exemplars/virtualizer.stories.d.ts.map +1 -0
  159. package/dist/types/src/hooks/useDensityContext.d.ts +1 -1
  160. package/dist/types/src/hooks/useDensityContext.d.ts.map +1 -1
  161. package/dist/types/src/hooks/useElevationContext.d.ts +1 -1
  162. package/dist/types/src/hooks/useElevationContext.d.ts.map +1 -1
  163. package/dist/types/src/index.d.ts +2 -1
  164. package/dist/types/src/index.d.ts.map +1 -1
  165. package/dist/types/src/playground/Controls.stories.d.ts.map +1 -1
  166. package/dist/types/src/playground/Custom.stories.d.ts.map +1 -1
  167. package/dist/types/src/primitives/Column/Column.d.ts +26 -0
  168. package/dist/types/src/primitives/Column/Column.d.ts.map +1 -0
  169. package/dist/types/src/primitives/Column/Column.stories.d.ts +6 -0
  170. package/dist/types/src/primitives/Column/Column.stories.d.ts.map +1 -0
  171. package/dist/types/src/primitives/Column/index.d.ts +2 -0
  172. package/dist/types/src/primitives/Column/index.d.ts.map +1 -0
  173. package/dist/types/src/primitives/Container/Container.d.ts +8 -0
  174. package/dist/types/src/primitives/Container/Container.d.ts.map +1 -0
  175. package/dist/types/src/primitives/Container/Container.stories.d.ts +6 -0
  176. package/dist/types/src/primitives/Container/Container.stories.d.ts.map +1 -0
  177. package/dist/types/src/primitives/Container/index.d.ts +2 -0
  178. package/dist/types/src/primitives/Container/index.d.ts.map +1 -0
  179. package/dist/types/src/primitives/Flex/Flex.d.ts +13 -0
  180. package/dist/types/src/primitives/Flex/Flex.d.ts.map +1 -0
  181. package/dist/types/src/primitives/Flex/Flex.stories.d.ts +8 -0
  182. package/dist/types/src/primitives/Flex/Flex.stories.d.ts.map +1 -0
  183. package/dist/types/src/primitives/Flex/index.d.ts +2 -0
  184. package/dist/types/src/primitives/Flex/index.d.ts.map +1 -0
  185. package/dist/types/src/primitives/Grid/Grid.d.ts +15 -0
  186. package/dist/types/src/primitives/Grid/Grid.d.ts.map +1 -0
  187. package/dist/types/src/primitives/Grid/Grid.stories.d.ts +8 -0
  188. package/dist/types/src/primitives/Grid/Grid.stories.d.ts.map +1 -0
  189. package/dist/types/src/primitives/Grid/index.d.ts +2 -0
  190. package/dist/types/src/primitives/Grid/index.d.ts.map +1 -0
  191. package/dist/types/src/primitives/Panel/Panel.d.ts +26 -0
  192. package/dist/types/src/primitives/Panel/Panel.d.ts.map +1 -0
  193. package/dist/types/src/primitives/Panel/Panel.stories.d.ts +6 -0
  194. package/dist/types/src/primitives/Panel/Panel.stories.d.ts.map +1 -0
  195. package/dist/types/src/primitives/Panel/index.d.ts +2 -0
  196. package/dist/types/src/primitives/Panel/index.d.ts.map +1 -0
  197. package/dist/types/src/primitives/index.d.ts +6 -0
  198. package/dist/types/src/primitives/index.d.ts.map +1 -0
  199. package/dist/types/src/testing/Loading.d.ts +9 -0
  200. package/dist/types/src/testing/Loading.d.ts.map +1 -0
  201. package/dist/types/src/testing/decorators/index.d.ts +1 -1
  202. package/dist/types/src/testing/decorators/index.d.ts.map +1 -1
  203. package/dist/types/src/testing/decorators/withLayout.d.ts +3 -3
  204. package/dist/types/src/testing/decorators/withLayout.d.ts.map +1 -1
  205. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts +12 -0
  206. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts.map +1 -0
  207. package/dist/types/src/testing/decorators/withTheme.d.ts +3 -2
  208. package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
  209. package/dist/types/src/testing/index.d.ts +1 -0
  210. package/dist/types/src/testing/index.d.ts.map +1 -1
  211. package/dist/types/src/translations.d.ts +11 -0
  212. package/dist/types/src/translations.d.ts.map +1 -0
  213. package/dist/types/src/util/index.d.ts +1 -2
  214. package/dist/types/src/util/index.d.ts.map +1 -1
  215. package/dist/types/tsconfig.tsbuildinfo +1 -1
  216. package/package.json +41 -29
  217. package/src/components/Avatars/Avatar.stories.tsx +5 -6
  218. package/src/components/Avatars/Avatar.tsx +6 -13
  219. package/src/components/Avatars/AvatarGroup.stories.tsx +2 -2
  220. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +4 -4
  221. package/src/components/Breadcrumb/Breadcrumb.tsx +11 -37
  222. package/src/components/{Buttons → Button}/Button.stories.tsx +4 -4
  223. package/src/components/{Buttons → Button}/Button.tsx +7 -13
  224. package/src/components/{Buttons → Button}/IconButton.stories.tsx +4 -4
  225. package/src/components/{Buttons → Button}/IconButton.tsx +20 -14
  226. package/src/components/{Buttons → Button}/Toggle.stories.tsx +7 -6
  227. package/src/components/{Buttons → Button}/ToggleGroup.stories.tsx +2 -2
  228. package/src/components/Card/Card.stories.tsx +151 -0
  229. package/src/components/Card/Card.tsx +347 -0
  230. package/src/components/Card/index.ts +5 -0
  231. package/src/components/Clipboard/CopyButton.tsx +7 -7
  232. package/src/components/DensityProvider/DensityProvider.tsx +1 -1
  233. package/src/components/Dialog/AlertDialog.stories.tsx +69 -0
  234. package/src/components/{Dialogs → Dialog}/AlertDialog.tsx +116 -16
  235. package/src/components/Dialog/Dialog.stories.tsx +122 -0
  236. package/src/components/{Dialogs → Dialog}/Dialog.tsx +179 -49
  237. package/src/components/ElevationProvider/ElevationProvider.tsx +1 -1
  238. package/src/components/ErrorFallback/ErrorFallback.stories.tsx +50 -0
  239. package/src/components/ErrorFallback/ErrorFallback.tsx +70 -0
  240. package/src/components/ErrorFallback/ErrorStack.tsx +80 -0
  241. package/src/components/ErrorFallback/ThrowError.tsx +37 -0
  242. package/src/components/ErrorFallback/index.ts +9 -0
  243. package/src/components/Icon/Icon.stories.tsx +113 -0
  244. package/src/components/Icon/Icon.tsx +3 -3
  245. package/src/components/Image/Image.stories.tsx +86 -0
  246. package/src/components/Image/Image.tsx +223 -0
  247. package/src/components/Image/index.ts +5 -0
  248. package/src/components/Input/Input.stories.tsx +21 -40
  249. package/src/components/Input/Input.tsx +32 -68
  250. package/src/components/Link/Link.stories.tsx +2 -2
  251. package/src/components/Link/Link.tsx +2 -2
  252. package/src/components/{Lists → List}/List.stories.tsx +30 -33
  253. package/src/components/{Lists → List}/List.tsx +12 -17
  254. package/src/components/{Lists → List}/ListDropIndicator.tsx +7 -7
  255. package/src/components/{Lists → List}/Tree.stories.tsx +4 -4
  256. package/src/components/{Lists → List}/TreeDropIndicator.tsx +6 -6
  257. package/src/components/{Lists → List}/Treegrid.stories.tsx +3 -3
  258. package/src/components/{Lists → List}/Treegrid.tsx +10 -15
  259. package/src/components/Main/Main.stories.tsx +41 -23
  260. package/src/components/Main/Main.tsx +149 -92
  261. package/src/components/{Menus → Menu}/ContextMenu.stories.tsx +2 -2
  262. package/src/components/{Menus → Menu}/ContextMenu.tsx +9 -33
  263. package/src/components/{Menus → Menu}/DropdownMenu.stories.tsx +3 -3
  264. package/src/components/{Menus → Menu}/DropdownMenu.tsx +89 -68
  265. package/src/components/Message/Message.stories.tsx +26 -11
  266. package/src/components/Message/Message.tsx +46 -33
  267. package/src/components/Popover/Popover.stories.tsx +5 -5
  268. package/src/components/Popover/Popover.tsx +75 -53
  269. package/src/components/ScrollArea/ScrollArea.stories.tsx +166 -40
  270. package/src/components/ScrollArea/ScrollArea.tsx +84 -82
  271. package/src/components/ScrollArea/index.ts +1 -1
  272. package/src/components/ScrollContainer/ScrollContainer.stories.tsx +89 -0
  273. package/src/components/ScrollContainer/ScrollContainer.tsx +238 -0
  274. package/src/components/ScrollContainer/index.ts +5 -0
  275. package/src/components/Select/Select.stories.tsx +3 -3
  276. package/src/components/Select/Select.tsx +11 -27
  277. package/src/components/Separator/Separator.tsx +1 -1
  278. package/src/components/Skeleton/Skeleton.stories.tsx +52 -0
  279. package/src/components/Skeleton/Skeleton.tsx +26 -0
  280. package/src/components/Skeleton/index.ts +5 -0
  281. package/src/components/Splitter/Splitter.stories.tsx +83 -0
  282. package/src/components/Splitter/Splitter.tsx +126 -0
  283. package/src/components/Splitter/index.ts +5 -0
  284. package/src/components/Status/Status.stories.tsx +21 -17
  285. package/src/components/Status/Status.tsx +2 -2
  286. package/src/components/Tag/Tag.stories.tsx +6 -11
  287. package/src/components/Tag/Tag.tsx +3 -8
  288. package/src/components/ThemeProvider/ThemeProvider.stories.tsx +32 -0
  289. package/src/components/ThemeProvider/ThemeProvider.tsx +5 -6
  290. package/src/components/ThemeProvider/TranslationsProvider.tsx +1 -16
  291. package/src/components/ThemeProvider/index.ts +3 -3
  292. package/src/components/Toast/Toast.stories.tsx +3 -3
  293. package/src/components/Toast/Toast.tsx +10 -14
  294. package/src/components/Toolbar/Toolbar.stories.tsx +4 -6
  295. package/src/components/Toolbar/Toolbar.tsx +193 -15
  296. package/src/components/Tooltip/Tooltip.stories.tsx +16 -14
  297. package/src/components/Tooltip/Tooltip.tsx +25 -22
  298. package/src/components/index.ts +14 -9
  299. package/src/exemplars/generics.stories.tsx +49 -0
  300. package/src/exemplars/slot.stories.tsx +107 -0
  301. package/src/exemplars/tabster.stories.tsx +127 -0
  302. package/src/exemplars/virtualizer.stories.tsx +137 -0
  303. package/src/hooks/useDensityContext.ts +1 -1
  304. package/src/hooks/useElevationContext.ts +1 -1
  305. package/src/index.ts +2 -1
  306. package/src/playground/Controls.stories.tsx +3 -10
  307. package/src/playground/Custom.stories.tsx +8 -10
  308. package/src/playground/Typography.stories.tsx +3 -3
  309. package/src/primitives/Column/Column.stories.tsx +78 -0
  310. package/src/primitives/Column/Column.tsx +134 -0
  311. package/src/primitives/Column/index.ts +5 -0
  312. package/src/primitives/Container/Container.stories.tsx +30 -0
  313. package/src/primitives/Container/Container.tsx +22 -0
  314. package/src/primitives/Container/index.ts +5 -0
  315. package/src/primitives/Flex/Flex.stories.tsx +58 -0
  316. package/src/primitives/Flex/Flex.tsx +29 -0
  317. package/src/primitives/Flex/index.ts +5 -0
  318. package/src/primitives/Grid/Grid.stories.tsx +57 -0
  319. package/src/primitives/Grid/Grid.tsx +35 -0
  320. package/src/primitives/Grid/index.ts +5 -0
  321. package/src/primitives/Panel/Panel.stories.tsx +67 -0
  322. package/src/primitives/Panel/Panel.tsx +119 -0
  323. package/src/primitives/Panel/index.ts +5 -0
  324. package/src/primitives/index.ts +9 -0
  325. package/src/testing/Loading.tsx +26 -0
  326. package/src/testing/decorators/index.ts +1 -1
  327. package/src/testing/decorators/withLayout.tsx +39 -18
  328. package/src/testing/decorators/withLayoutVariants.tsx +48 -0
  329. package/src/testing/decorators/withTheme.tsx +21 -18
  330. package/src/testing/index.ts +2 -0
  331. package/src/translations.ts +19 -0
  332. package/src/util/index.ts +2 -2
  333. package/dist/lib/browser/chunk-KX5JDELJ.mjs +0 -4521
  334. package/dist/lib/browser/chunk-KX5JDELJ.mjs.map +0 -7
  335. package/dist/lib/node-esm/chunk-3HDQYL5S.mjs +0 -4523
  336. package/dist/lib/node-esm/chunk-3HDQYL5S.mjs.map +0 -7
  337. package/dist/types/src/components/AnchoredOverflow/AnchoredOverflow.d.ts +0 -15
  338. package/dist/types/src/components/AnchoredOverflow/AnchoredOverflow.d.ts.map +0 -1
  339. package/dist/types/src/components/AnchoredOverflow/index.d.ts +0 -2
  340. package/dist/types/src/components/AnchoredOverflow/index.d.ts.map +0 -1
  341. package/dist/types/src/components/Buttons/Button.d.ts.map +0 -1
  342. package/dist/types/src/components/Buttons/Button.stories.d.ts.map +0 -1
  343. package/dist/types/src/components/Buttons/IconButton.d.ts.map +0 -1
  344. package/dist/types/src/components/Buttons/IconButton.stories.d.ts.map +0 -1
  345. package/dist/types/src/components/Buttons/Toggle.d.ts.map +0 -1
  346. package/dist/types/src/components/Buttons/Toggle.stories.d.ts +0 -13
  347. package/dist/types/src/components/Buttons/Toggle.stories.d.ts.map +0 -1
  348. package/dist/types/src/components/Buttons/ToggleGroup.d.ts.map +0 -1
  349. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts.map +0 -1
  350. package/dist/types/src/components/Buttons/index.d.ts.map +0 -1
  351. package/dist/types/src/components/Dialogs/AlertDialog.d.ts.map +0 -1
  352. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts.map +0 -1
  353. package/dist/types/src/components/Dialogs/Dialog.d.ts +0 -31
  354. package/dist/types/src/components/Dialogs/Dialog.d.ts.map +0 -1
  355. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts.map +0 -1
  356. package/dist/types/src/components/Dialogs/index.d.ts.map +0 -1
  357. package/dist/types/src/components/Lists/List.d.ts.map +0 -1
  358. package/dist/types/src/components/Lists/List.stories.d.ts.map +0 -1
  359. package/dist/types/src/components/Lists/ListDropIndicator.d.ts.map +0 -1
  360. package/dist/types/src/components/Lists/Tree.d.ts.map +0 -1
  361. package/dist/types/src/components/Lists/Tree.stories.d.ts.map +0 -1
  362. package/dist/types/src/components/Lists/TreeDropIndicator.d.ts.map +0 -1
  363. package/dist/types/src/components/Lists/Treegrid.d.ts.map +0 -1
  364. package/dist/types/src/components/Lists/Treegrid.stories.d.ts.map +0 -1
  365. package/dist/types/src/components/Lists/index.d.ts.map +0 -1
  366. package/dist/types/src/components/Menus/ContextMenu.d.ts.map +0 -1
  367. package/dist/types/src/components/Menus/ContextMenu.stories.d.ts.map +0 -1
  368. package/dist/types/src/components/Menus/DropdownMenu.d.ts.map +0 -1
  369. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts.map +0 -1
  370. package/dist/types/src/components/Menus/index.d.ts.map +0 -1
  371. package/dist/types/src/testing/decorators/withSurfaceVariantsLayout.d.ts +0 -12
  372. package/dist/types/src/testing/decorators/withSurfaceVariantsLayout.d.ts.map +0 -1
  373. package/dist/types/src/util/ThemedClassName.d.ts +0 -5
  374. package/dist/types/src/util/ThemedClassName.d.ts.map +0 -1
  375. package/dist/types/src/util/domino.d.ts +0 -18
  376. package/dist/types/src/util/domino.d.ts.map +0 -1
  377. package/src/components/AnchoredOverflow/AnchoredOverflow.tsx +0 -59
  378. package/src/components/AnchoredOverflow/index.ts +0 -5
  379. package/src/components/Dialogs/AlertDialog.stories.tsx +0 -69
  380. package/src/components/Dialogs/Dialog.stories.tsx +0 -67
  381. package/src/testing/decorators/withSurfaceVariantsLayout.tsx +0 -51
  382. package/src/util/ThemedClassName.ts +0 -7
  383. package/src/util/domino.ts +0 -53
  384. /package/dist/types/src/components/{Buttons → Button}/Button.stories.d.ts +0 -0
  385. /package/dist/types/src/components/{Buttons → Button}/IconButton.stories.d.ts +0 -0
  386. /package/dist/types/src/components/{Buttons → Button}/Toggle.d.ts +0 -0
  387. /package/dist/types/src/components/{Buttons → Button}/index.d.ts +0 -0
  388. /package/dist/types/src/components/{Dialogs → Dialog}/AlertDialog.stories.d.ts +0 -0
  389. /package/dist/types/src/components/{Dialogs → Dialog}/index.d.ts +0 -0
  390. /package/dist/types/src/components/{Lists → List}/List.stories.d.ts +0 -0
  391. /package/dist/types/src/components/{Lists → List}/ListDropIndicator.d.ts +0 -0
  392. /package/dist/types/src/components/{Lists → List}/Tree.d.ts +0 -0
  393. /package/dist/types/src/components/{Lists → List}/Tree.stories.d.ts +0 -0
  394. /package/dist/types/src/components/{Lists → List}/TreeDropIndicator.d.ts +0 -0
  395. /package/dist/types/src/components/{Lists → List}/Treegrid.d.ts +0 -0
  396. /package/dist/types/src/components/{Lists → List}/Treegrid.stories.d.ts +0 -0
  397. /package/dist/types/src/components/{Lists → List}/index.d.ts +0 -0
  398. /package/dist/types/src/components/{Menus → Menu}/ContextMenu.stories.d.ts +0 -0
  399. /package/dist/types/src/components/{Menus → Menu}/DropdownMenu.stories.d.ts +0 -0
  400. /package/dist/types/src/components/{Menus → Menu}/index.d.ts +0 -0
  401. /package/src/components/{Buttons → Button}/Toggle.tsx +0 -0
  402. /package/src/components/{Buttons → Button}/ToggleGroup.tsx +0 -0
  403. /package/src/components/{Buttons → Button}/index.ts +0 -0
  404. /package/src/components/{Dialogs → Dialog}/index.ts +0 -0
  405. /package/src/components/{Lists → List}/Tree.tsx +0 -0
  406. /package/src/components/{Lists → List}/index.ts +0 -0
  407. /package/src/components/{Menus → Menu}/index.ts +0 -0
@@ -25,6 +25,7 @@ import React, {
25
25
  forwardRef,
26
26
  useCallback,
27
27
  useEffect,
28
+ useMemo,
28
29
  useRef,
29
30
  } from 'react';
30
31
 
@@ -34,15 +35,15 @@ import { type ThemedClassName } from '../../util';
34
35
 
35
36
  type Direction = 'ltr' | 'rtl';
36
37
 
37
- /* -------------------------------------------------------------------------------------------------
38
- * DropdownMenu
39
- * ----------------------------------------------------------------------------------------------- */
38
+ //
39
+ // DropdownMenu
40
+ //
40
41
 
41
42
  const DROPDOWN_MENU_NAME = 'DropdownMenu';
42
43
 
43
44
  type ScopedProps<P> = P & { __scopeDropdownMenu?: Scope };
44
45
  const [createDropdownMenuContext, createDropdownMenuScope] = createContextScope(DROPDOWN_MENU_NAME, [createMenuScope]);
45
- const useMenuScope = createMenuScope();
46
+ const useMenuScope: (scope?: Scope) => any = createMenuScope();
46
47
 
47
48
  type DropdownMenuContextValue = {
48
49
  triggerId: string;
@@ -96,9 +97,9 @@ const DropdownMenuRoot: FC<DropdownMenuRootProps> = (props: ScopedProps<Dropdown
96
97
 
97
98
  DropdownMenuRoot.displayName = DROPDOWN_MENU_NAME;
98
99
 
99
- /* -------------------------------------------------------------------------------------------------
100
- * DropdownMenuTrigger
101
- * ----------------------------------------------------------------------------------------------- */
100
+ //
101
+ // DropdownMenuTrigger
102
+ //
102
103
 
103
104
  const TRIGGER_NAME = 'DropdownMenuTrigger';
104
105
 
@@ -161,9 +162,9 @@ const DropdownMenuTrigger = forwardRef<DropdownMenuTriggerElement, DropdownMenuT
161
162
 
162
163
  DropdownMenuTrigger.displayName = TRIGGER_NAME;
163
164
 
164
- /* -------------------------------------------------------------------------------------------------
165
- * DropdownMenuVirtualTrigger
166
- * ----------------------------------------------------------------------------------------------- */
165
+ //
166
+ // DropdownMenuVirtualTrigger
167
+ //
167
168
 
168
169
  const VIRTUAL_TRIGGER_NAME = 'DropdownMenuVirtualTrigger';
169
170
 
@@ -185,9 +186,9 @@ const DropdownMenuVirtualTrigger = (props: ScopedProps<DropdownMenuVirtualTrigge
185
186
 
186
187
  DropdownMenuVirtualTrigger.displayName = VIRTUAL_TRIGGER_NAME;
187
188
 
188
- /* -------------------------------------------------------------------------------------------------
189
- * DropdownMenuPortal
190
- * ----------------------------------------------------------------------------------------------- */
189
+ //
190
+ // DropdownMenuPortal
191
+ //
191
192
 
192
193
  const PORTAL_NAME = 'DropdownMenuPortal';
193
194
 
@@ -202,9 +203,9 @@ const DropdownMenuPortal: FC<DropdownMenuPortalProps> = (props: ScopedProps<Drop
202
203
 
203
204
  DropdownMenuPortal.displayName = PORTAL_NAME;
204
205
 
205
- /* -------------------------------------------------------------------------------------------------
206
- * DropdownMenuViewport
207
- * ----------------------------------------------------------------------------------------------- */
206
+ //
207
+ // DropdownMenuViewport
208
+ //
208
209
 
209
210
  type DropdownMenuViewportProps = ThemedClassName<ComponentPropsWithRef<typeof Primitive.div>> & {
210
211
  asChild?: boolean;
@@ -213,18 +214,18 @@ type DropdownMenuViewportProps = ThemedClassName<ComponentPropsWithRef<typeof Pr
213
214
  const DropdownMenuViewport = forwardRef<HTMLDivElement, DropdownMenuViewportProps>(
214
215
  ({ classNames, asChild, children, ...props }, forwardedRef) => {
215
216
  const { tx } = useThemeContext();
216
- const Root = asChild ? Slot : Primitive.div;
217
+ const Comp = asChild ? Slot : Primitive.div;
217
218
  return (
218
- <Root {...props} className={tx('menu.viewport', 'menu__viewport', {}, classNames)} ref={forwardedRef}>
219
+ <Comp {...props} className={tx('menu.viewport', {}, classNames)} ref={forwardedRef}>
219
220
  {children}
220
- </Root>
221
+ </Comp>
221
222
  );
222
223
  },
223
224
  );
224
225
 
225
- /* -------------------------------------------------------------------------------------------------
226
- * DropdownMenuContent
227
- * ----------------------------------------------------------------------------------------------- */
226
+ //
227
+ // DropdownMenuContent
228
+ //
228
229
 
229
230
  const CONTENT_NAME = 'DropdownMenuContent';
230
231
 
@@ -234,19 +235,35 @@ interface DropdownMenuContentProps extends Omit<MenuContentProps, 'onEntryFocus'
234
235
 
235
236
  const DropdownMenuContent = forwardRef<DropdownMenuContentElement, DropdownMenuContentProps>(
236
237
  (props: ScopedProps<DropdownMenuContentProps>, forwardedRef) => {
237
- const { __scopeDropdownMenu, classNames, collisionPadding = 8, ...contentProps } = props;
238
+ const { __scopeDropdownMenu, classNames, collisionPadding = 8, collisionBoundary, ...contentProps } = props;
238
239
  const { tx } = useThemeContext();
239
240
  const context = useDropdownMenuContext(CONTENT_NAME, __scopeDropdownMenu);
240
241
  const elevation = useElevationContext();
241
242
  const menuScope = useMenuScope(__scopeDropdownMenu);
242
243
  const hasInteractedOutsideRef = useRef(false);
243
244
  const safeCollisionPadding = useSafeCollisionPadding(collisionPadding);
245
+
246
+ // Check for the closest annotated collision boundary in the DOM tree.
247
+ const computedCollisionBoundary = useMemo(() => {
248
+ const closestBoundary = context.triggerRef.current?.closest(
249
+ '[data-popover-collision-boundary]',
250
+ ) as HTMLElement | null;
251
+ return closestBoundary
252
+ ? Array.isArray(collisionBoundary)
253
+ ? [closestBoundary, ...collisionBoundary]
254
+ : collisionBoundary
255
+ ? [closestBoundary, collisionBoundary]
256
+ : [closestBoundary]
257
+ : collisionBoundary;
258
+ }, [context.open, collisionBoundary, context.triggerRef.current]);
259
+
244
260
  return (
245
261
  <MenuPrimitive.Content
246
262
  id={context.contentId}
247
263
  aria-labelledby={context.triggerId}
248
264
  {...menuScope}
249
265
  {...contentProps}
266
+ collisionBoundary={computedCollisionBoundary}
250
267
  collisionPadding={safeCollisionPadding}
251
268
  ref={forwardedRef}
252
269
  onCloseAutoFocus={composeEventHandlers(props.onCloseAutoFocus, (event) => {
@@ -266,7 +283,7 @@ const DropdownMenuContent = forwardRef<DropdownMenuContentElement, DropdownMenuC
266
283
  }
267
284
  })}
268
285
  data-arrow-keys='up down'
269
- className={tx('menu.content', 'menu', { elevation }, classNames)}
286
+ className={tx('menu.content', { elevation }, classNames)}
270
287
  style={{
271
288
  ...props.style,
272
289
  // re-namespace exposed content custom properties
@@ -285,9 +302,9 @@ const DropdownMenuContent = forwardRef<DropdownMenuContentElement, DropdownMenuC
285
302
 
286
303
  DropdownMenuContent.displayName = CONTENT_NAME;
287
304
 
288
- /* -------------------------------------------------------------------------------------------------
289
- * DropdownMenuGroup
290
- * ----------------------------------------------------------------------------------------------- */
305
+ //
306
+ // DropdownMenuGroup
307
+ //
291
308
 
292
309
  const GROUP_NAME = 'DropdownMenuGroup';
293
310
 
@@ -305,9 +322,9 @@ const DropdownMenuGroup = forwardRef<DropdownMenuGroupElement, DropdownMenuGroup
305
322
 
306
323
  DropdownMenuGroup.displayName = GROUP_NAME;
307
324
 
308
- /* -------------------------------------------------------------------------------------------------
309
- * DropdownMenuLabel
310
- * ----------------------------------------------------------------------------------------------- */
325
+ //
326
+ // DropdownMenuLabel
327
+ //
311
328
 
312
329
  const LABEL_NAME = 'DropdownMenuLabel';
313
330
 
@@ -324,7 +341,7 @@ const DropdownMenuGroupLabel = forwardRef<DropdownMenuLabelElement, DropdownMenu
324
341
  <MenuPrimitive.Label
325
342
  {...menuScope}
326
343
  {...labelProps}
327
- className={tx('menu.groupLabel', 'menu__group__label', {}, classNames)}
344
+ className={tx('menu.groupLabel', {}, classNames)}
328
345
  ref={forwardedRef}
329
346
  />
330
347
  );
@@ -333,9 +350,9 @@ const DropdownMenuGroupLabel = forwardRef<DropdownMenuLabelElement, DropdownMenu
333
350
 
334
351
  DropdownMenuGroupLabel.displayName = LABEL_NAME;
335
352
 
336
- /* -------------------------------------------------------------------------------------------------
337
- * DropdownMenuItem
338
- * ----------------------------------------------------------------------------------------------- */
353
+ //
354
+ // DropdownMenuItem
355
+ //
339
356
 
340
357
  const ITEM_NAME = 'DropdownMenuItem';
341
358
 
@@ -352,7 +369,7 @@ const DropdownMenuItem = forwardRef<DropdownMenuItemElement, DropdownMenuItemPro
352
369
  <MenuPrimitive.Item
353
370
  {...menuScope}
354
371
  {...itemProps}
355
- className={tx('menu.item', 'menu__item', {}, classNames)}
372
+ className={tx('menu.item', {}, classNames)}
356
373
  ref={forwardedRef}
357
374
  />
358
375
  );
@@ -361,9 +378,9 @@ const DropdownMenuItem = forwardRef<DropdownMenuItemElement, DropdownMenuItemPro
361
378
 
362
379
  DropdownMenuItem.displayName = ITEM_NAME;
363
380
 
364
- /* -------------------------------------------------------------------------------------------------
365
- * DropdownMenuCheckboxItem
366
- * ----------------------------------------------------------------------------------------------- */
381
+ //
382
+ // DropdownMenuCheckboxItem
383
+ //
367
384
 
368
385
  const CHECKBOX_ITEM_NAME = 'DropdownMenuCheckboxItem';
369
386
 
@@ -380,7 +397,7 @@ const DropdownMenuCheckboxItem = forwardRef<DropdownMenuCheckboxItemElement, Dro
380
397
  <MenuPrimitive.CheckboxItem
381
398
  {...menuScope}
382
399
  {...checkboxItemProps}
383
- className={tx('menu.item', 'menu__item--checkbox', {}, classNames)}
400
+ className={tx('menu.item', {}, classNames)}
384
401
  ref={forwardedRef}
385
402
  />
386
403
  );
@@ -389,9 +406,9 @@ const DropdownMenuCheckboxItem = forwardRef<DropdownMenuCheckboxItemElement, Dro
389
406
 
390
407
  DropdownMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;
391
408
 
392
- /* -------------------------------------------------------------------------------------------------
393
- * DropdownMenuRadioGroup
394
- * ----------------------------------------------------------------------------------------------- */
409
+ //
410
+ // DropdownMenuRadioGroup
411
+ //
395
412
 
396
413
  const RADIO_GROUP_NAME = 'DropdownMenuRadioGroup';
397
414
 
@@ -409,9 +426,9 @@ const DropdownMenuRadioGroup = forwardRef<DropdownMenuRadioGroupElement, Dropdow
409
426
 
410
427
  DropdownMenuRadioGroup.displayName = RADIO_GROUP_NAME;
411
428
 
412
- /* -------------------------------------------------------------------------------------------------
413
- * DropdownMenuRadioItem
414
- * ----------------------------------------------------------------------------------------------- */
429
+ //
430
+ // DropdownMenuRadioItem
431
+ //
415
432
 
416
433
  const RADIO_ITEM_NAME = 'DropdownMenuRadioItem';
417
434
 
@@ -428,7 +445,7 @@ const DropdownMenuRadioItem = forwardRef<DropdownMenuRadioItemElement, DropdownM
428
445
  <MenuPrimitive.Item
429
446
  {...menuScope}
430
447
  {...itemProps}
431
- className={tx('menu.item', 'menu__item', {}, classNames)}
448
+ className={tx('menu.item', {}, classNames)}
432
449
  ref={forwardedRef}
433
450
  />
434
451
  );
@@ -437,9 +454,9 @@ const DropdownMenuRadioItem = forwardRef<DropdownMenuRadioItemElement, DropdownM
437
454
 
438
455
  DropdownMenuRadioItem.displayName = RADIO_ITEM_NAME;
439
456
 
440
- /* -------------------------------------------------------------------------------------------------
441
- * DropdownMenuItemIndicator
442
- * ----------------------------------------------------------------------------------------------- */
457
+ //
458
+ // DropdownMenuItemIndicator
459
+ //
443
460
 
444
461
  const INDICATOR_NAME = 'DropdownMenuItemIndicator';
445
462
 
@@ -457,9 +474,9 @@ const DropdownMenuItemIndicator = forwardRef<DropdownMenuItemIndicatorElement, D
457
474
 
458
475
  DropdownMenuItemIndicator.displayName = INDICATOR_NAME;
459
476
 
460
- /* -------------------------------------------------------------------------------------------------
461
- * DropdownMenuSeparator
462
- * ----------------------------------------------------------------------------------------------- */
477
+ //
478
+ // DropdownMenuSeparator
479
+ //
463
480
 
464
481
  const SEPARATOR_NAME = 'DropdownMenuSeparator';
465
482
 
@@ -476,7 +493,7 @@ const DropdownMenuSeparator = forwardRef<DropdownMenuSeparatorElement, DropdownM
476
493
  <MenuPrimitive.Separator
477
494
  {...menuScope}
478
495
  {...separatorProps}
479
- className={tx('menu.separator', 'menu__item', {}, classNames)}
496
+ className={tx('menu.separator', {}, classNames)}
480
497
  ref={forwardedRef}
481
498
  />
482
499
  );
@@ -485,9 +502,9 @@ const DropdownMenuSeparator = forwardRef<DropdownMenuSeparatorElement, DropdownM
485
502
 
486
503
  DropdownMenuSeparator.displayName = SEPARATOR_NAME;
487
504
 
488
- /* -------------------------------------------------------------------------------------------------
489
- * DropdownMenuArrow
490
- * ----------------------------------------------------------------------------------------------- */
505
+ //
506
+ // DropdownMenuArrow
507
+ //
491
508
 
492
509
  const ARROW_NAME = 'DropdownMenuArrow';
493
510
 
@@ -504,7 +521,7 @@ const DropdownMenuArrow = forwardRef<DropdownMenuArrowElement, DropdownMenuArrow
504
521
  <MenuPrimitive.Arrow
505
522
  {...menuScope}
506
523
  {...arrowProps}
507
- className={tx('menu.arrow', 'menu__arrow', {}, classNames)}
524
+ className={tx('menu.arrow', {}, classNames)}
508
525
  ref={forwardedRef}
509
526
  />
510
527
  );
@@ -513,9 +530,9 @@ const DropdownMenuArrow = forwardRef<DropdownMenuArrowElement, DropdownMenuArrow
513
530
 
514
531
  DropdownMenuArrow.displayName = ARROW_NAME;
515
532
 
516
- /* -------------------------------------------------------------------------------------------------
517
- * DropdownMenuSub
518
- * ----------------------------------------------------------------------------------------------- */
533
+ //
534
+ // DropdownMenuSub
535
+ //
519
536
 
520
537
  interface DropdownMenuSubProps {
521
538
  children?: ReactNode;
@@ -540,9 +557,9 @@ const DropdownMenuSub: FC<DropdownMenuSubProps> = (props: ScopedProps<DropdownMe
540
557
  );
541
558
  };
542
559
 
543
- /* -------------------------------------------------------------------------------------------------
544
- * DropdownMenuSubTrigger
545
- * ----------------------------------------------------------------------------------------------- */
560
+ //
561
+ // DropdownMenuSubTrigger
562
+ //
546
563
 
547
564
  const SUB_TRIGGER_NAME = 'DropdownMenuSubTrigger';
548
565
 
@@ -560,9 +577,9 @@ const DropdownMenuSubTrigger = forwardRef<DropdownMenuSubTriggerElement, Dropdow
560
577
 
561
578
  DropdownMenuSubTrigger.displayName = SUB_TRIGGER_NAME;
562
579
 
563
- /* -------------------------------------------------------------------------------------------------
564
- * DropdownMenuSubContent
565
- * ----------------------------------------------------------------------------------------------- */
580
+ //
581
+ // DropdownMenuSubContent
582
+ //
566
583
 
567
584
  const SUB_CONTENT_NAME = 'DropdownMenuSubContent';
568
585
 
@@ -598,7 +615,9 @@ const DropdownMenuSubContent = forwardRef<DropdownMenuSubContentElement, Dropdow
598
615
 
599
616
  DropdownMenuSubContent.displayName = SUB_CONTENT_NAME;
600
617
 
601
- /* ----------------------------------------------------------------------------------------------- */
618
+ //
619
+ // DropdownMenu
620
+ //
602
621
 
603
622
  export const DropdownMenu = {
604
623
  Root: DropdownMenuRoot,
@@ -621,7 +640,9 @@ export const DropdownMenu = {
621
640
  SubContent: DropdownMenuSubContent,
622
641
  };
623
642
 
624
- const useDropdownMenuMenuScope = useMenuScope;
643
+ type DropdownMenuScope = Scope;
644
+
645
+ const useDropdownMenuMenuScope: (scope?: DropdownMenuScope) => any = useMenuScope;
625
646
 
626
647
  export { createDropdownMenuScope, useDropdownMenuContext, useDropdownMenuMenuScope };
627
648
 
@@ -5,11 +5,14 @@
5
5
  import { type Meta, type StoryObj } from '@storybook/react-vite';
6
6
  import React from 'react';
7
7
 
8
- import { type MessageValence } from '@dxos/react-ui-types';
8
+ import { faker } from '@dxos/random';
9
+ import { type MessageValence } from '@dxos/ui-types';
9
10
 
10
11
  import { withTheme } from '../../testing';
11
12
 
12
- import { Callout } from './Message';
13
+ import { Message } from './Message';
14
+
15
+ faker.seed(123);
13
16
 
14
17
  type StoryProps = {
15
18
  valence: MessageValence;
@@ -18,18 +21,22 @@ type StoryProps = {
18
21
  };
19
22
 
20
23
  const DefaultStory = ({ valence, title, body }: StoryProps) => (
21
- <Callout.Root valence={valence}>
22
- {title && <Callout.Title>{title}</Callout.Title>}
23
- {body && <Callout.Content>{body}</Callout.Content>}
24
- </Callout.Root>
24
+ <div className='w-[30rem]'>
25
+ <Message.Root valence={valence}>
26
+ {title && <Message.Title>{title}</Message.Title>}
27
+ {body && <Message.Content>{body}</Message.Content>}
28
+ </Message.Root>
29
+ </div>
25
30
  );
26
31
 
27
32
  const meta = {
28
- title: 'ui/react-ui-core/Callout',
29
- component: Callout.Root as any,
33
+ title: 'ui/react-ui-core/components/Message',
34
+ component: Message.Root as any,
30
35
  render: DefaultStory,
31
- decorators: [withTheme],
32
- parameters: { chromatic: { disableSnapshot: false } },
36
+ decorators: [withTheme()],
37
+ parameters: {
38
+ layout: 'centered',
39
+ },
33
40
  argTypes: {
34
41
  valence: {
35
42
  control: 'select',
@@ -46,6 +53,14 @@ export const Default: Story = {
46
53
  args: {
47
54
  valence: 'neutral',
48
55
  title: 'Alert title',
49
- body: 'Alert content',
56
+ body: faker.lorem.paragraphs(1),
57
+ },
58
+ };
59
+
60
+ export const Error: Story = {
61
+ args: {
62
+ valence: 'error',
63
+ title: 'Error title',
64
+ body: faker.lorem.paragraphs(1),
50
65
  },
51
66
  };
@@ -8,7 +8,7 @@ import { Slot } from '@radix-ui/react-slot';
8
8
  import React, { type ComponentPropsWithRef, forwardRef } from 'react';
9
9
 
10
10
  import { useId } from '@dxos/react-hooks';
11
- import { type Elevation, type MessageValence } from '@dxos/react-ui-types';
11
+ import { type Elevation, type MessageValence } from '@dxos/ui-types';
12
12
 
13
13
  import { useElevationContext, useThemeContext } from '../../hooks';
14
14
  import { type ThemedClassName } from '../../util';
@@ -31,9 +31,15 @@ type MessageRootProps = ThemedClassName<ComponentPropsWithRef<typeof Primitive.d
31
31
  };
32
32
 
33
33
  type MessageContextValue = { titleId?: string; descriptionId: string; valence: MessageValence };
34
+
34
35
  const MESSAGE_NAME = 'Message';
36
+
35
37
  const [MessageProvider, useMessageContext] = createContext<MessageContextValue>(MESSAGE_NAME);
36
38
 
39
+ //
40
+ // Root
41
+ //
42
+
37
43
  const MessageRoot = forwardRef<HTMLDivElement, MessageRootProps>(
38
44
  (
39
45
  {
@@ -52,19 +58,20 @@ const MessageRoot = forwardRef<HTMLDivElement, MessageRootProps>(
52
58
  const titleId = useId('message__title', propsTitleId);
53
59
  const descriptionId = useId('message__description', propsDescriptionId);
54
60
  const elevation = useElevationContext(propsElevation);
55
- const Root = asChild ? Slot : Primitive.div;
61
+ const Comp = asChild ? Slot : Primitive.div;
62
+
56
63
  return (
57
64
  <MessageProvider {...{ titleId, descriptionId, valence }}>
58
- <Root
65
+ <Comp
59
66
  role={valence === 'neutral' ? 'paragraph' : 'alert'}
60
67
  {...props}
61
- className={tx('message.root', 'message', { valence, elevation }, classNames)}
68
+ className={tx('message.root', { valence, elevation }, classNames)}
62
69
  aria-labelledby={titleId}
63
70
  aria-describedby={descriptionId}
64
71
  ref={forwardedRef}
65
72
  >
66
73
  {children}
67
- </Root>
74
+ </Comp>
68
75
  </MessageProvider>
69
76
  );
70
77
  },
@@ -72,6 +79,10 @@ const MessageRoot = forwardRef<HTMLDivElement, MessageRootProps>(
72
79
 
73
80
  MessageRoot.displayName = MESSAGE_NAME;
74
81
 
82
+ //
83
+ // Title
84
+ //
85
+
75
86
  type MessageTitleProps = Omit<ThemedClassName<ComponentPropsWithRef<typeof Primitive.h2>>, 'id'> & {
76
87
  asChild?: boolean;
77
88
  icon?: string;
@@ -80,59 +91,61 @@ type MessageTitleProps = Omit<ThemedClassName<ComponentPropsWithRef<typeof Primi
80
91
  const MESSAGE_TITLE_NAME = 'MessageTitle';
81
92
 
82
93
  const MessageTitle = forwardRef<HTMLHeadingElement, MessageTitleProps>(
83
- ({ asChild, classNames, children, icon, ...props }, forwardedRef) => {
94
+ ({ asChild, classNames, children, icon: iconProp, ...props }, forwardedRef) => {
84
95
  const { tx } = useThemeContext();
85
96
  const { titleId, valence } = useMessageContext(MESSAGE_TITLE_NAME);
86
- const Root = asChild ? Slot : Primitive.h2;
97
+ const Comp = asChild ? Slot : Primitive.h2;
98
+ const icon = iconProp ?? messageIcons[valence];
87
99
  return (
88
- <Root
89
- {...props}
90
- className={tx('message.title', 'message__title', {}, classNames)}
91
- id={titleId}
92
- ref={forwardedRef}
93
- >
94
- {!icon && valence === 'neutral' ? null : (
95
- <Icon
96
- size={5}
97
- icon={icon ?? messageIcons[valence]}
98
- classNames={tx('message.icon', 'message__icon', { valence })}
99
- />
100
+ <Comp {...props} className={tx('message.header', {}, classNames)} id={titleId} ref={forwardedRef}>
101
+ {!icon && valence === 'neutral' ? (
102
+ <div />
103
+ ) : (
104
+ <Icon size={5} icon={icon} classNames={tx('message.icon', { valence })} />
100
105
  )}
101
- <span>{children}</span>
102
- </Root>
106
+ <span className={tx('message.title', {}, classNames)}>{children}</span>
107
+ </Comp>
103
108
  );
104
109
  },
105
110
  );
106
111
 
107
112
  MessageTitle.displayName = MESSAGE_TITLE_NAME;
108
113
 
114
+ //
115
+ // Content
116
+ //
117
+
109
118
  type MessageContentProps = Omit<ThemedClassName<ComponentPropsWithRef<typeof Primitive.h2>>, 'id'> & {
110
119
  asChild?: boolean;
111
120
  };
112
121
 
113
- const MESSAGE_BODY_NAME = 'MessageContent';
122
+ const MESSAGE_CONTENT_NAME = 'MessageContent';
114
123
 
115
124
  const MessageContent = forwardRef<HTMLParagraphElement, MessageContentProps>(
116
125
  ({ asChild, classNames, children, ...props }, forwardedRef) => {
117
126
  const { tx } = useThemeContext();
118
- const { descriptionId } = useMessageContext(MESSAGE_BODY_NAME);
119
- const Root = asChild ? Slot : Primitive.p;
127
+ const { descriptionId } = useMessageContext(MESSAGE_CONTENT_NAME);
128
+ const Comp = asChild ? Slot : Primitive.p;
120
129
  return (
121
- <Root
122
- {...props}
123
- className={tx('message.content', 'message__content', {}, classNames)}
124
- id={descriptionId}
125
- ref={forwardedRef}
126
- >
130
+ <Comp {...props} className={tx('message.content', {}, classNames)} id={descriptionId} ref={forwardedRef}>
127
131
  {children}
128
- </Root>
132
+ </Comp>
129
133
  );
130
134
  },
131
135
  );
132
136
 
133
- MessageContent.displayName = MESSAGE_BODY_NAME;
137
+ MessageContent.displayName = MESSAGE_CONTENT_NAME;
138
+
139
+ //
140
+ // Message
141
+ //
142
+
143
+ export const Message = {
144
+ Root: MessageRoot,
145
+ Title: MessageTitle,
146
+ Content: MessageContent,
147
+ };
134
148
 
135
- export const Message = { Root: MessageRoot, Title: MessageTitle, Content: MessageContent };
136
149
  export const Callout = Message;
137
150
 
138
151
  export type { MessageRootProps, MessageTitleProps, MessageContentProps };
@@ -8,7 +8,7 @@ import React, { type PropsWithChildren, type ReactNode, useRef, useState } from
8
8
  import { faker } from '@dxos/random';
9
9
 
10
10
  import { withTheme } from '../../testing';
11
- import { Button } from '../Buttons';
11
+ import { Button } from '../Button';
12
12
 
13
13
  import { Popover } from './Popover';
14
14
 
@@ -20,7 +20,7 @@ const DefaultStory = ({ openTrigger, children }: PropsWithChildren<{ openTrigger
20
20
  <Popover.Trigger asChild>{openTrigger}</Popover.Trigger>
21
21
  <Popover.Content>
22
22
  <Popover.Viewport>
23
- <p className='pli-2 plb-1 min-is-[18rem] max-is-[38rem]'>{children}</p>
23
+ <p className='px-2 py-1 min-w-[18rem] max-w-[38rem]'>{children}</p>
24
24
  </Popover.Viewport>
25
25
  <Popover.Arrow />
26
26
  </Popover.Content>
@@ -29,10 +29,10 @@ const DefaultStory = ({ openTrigger, children }: PropsWithChildren<{ openTrigger
29
29
  };
30
30
 
31
31
  const meta = {
32
- title: 'ui/react-ui-core/Popover',
32
+ title: 'ui/react-ui-core/components/Popover',
33
33
  component: Popover.Root,
34
34
  render: DefaultStory,
35
- decorators: [withTheme],
35
+ decorators: [withTheme()],
36
36
  } satisfies Meta<typeof DefaultStory>;
37
37
 
38
38
  export default meta;
@@ -59,7 +59,7 @@ export const VirtualTrigger = {
59
59
  <Popover.VirtualTrigger virtualRef={buttonRef} />
60
60
  <Popover.Content>
61
61
  <Popover.Viewport>
62
- <p className='pli-2 plb-1 min-is-[18rem] max-is-[38rem]'>{faker.lorem.paragraphs(3)}</p>
62
+ <p className='px-2 py-1 min-w-[18rem] max-w-[38rem]'>{faker.lorem.paragraphs(3)}</p>
63
63
  </Popover.Viewport>
64
64
  <Popover.Arrow />
65
65
  </Popover.Content>