@dxos/react-ui 0.8.4-main.f9ba587 → 0.8.4-main.fcc0d83b33

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 (482) hide show
  1. package/dist/lib/browser/chunk-BDBC6H6V.mjs +848 -0
  2. package/dist/lib/browser/chunk-BDBC6H6V.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +4102 -61
  4. package/dist/lib/browser/index.mjs.map +4 -4
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/testing/index.mjs +112 -61
  7. package/dist/lib/browser/testing/index.mjs.map +4 -4
  8. package/dist/lib/browser/translations.mjs +18 -0
  9. package/dist/lib/browser/translations.mjs.map +7 -0
  10. package/dist/lib/node-esm/chunk-3JSJK2ZY.mjs +850 -0
  11. package/dist/lib/node-esm/chunk-3JSJK2ZY.mjs.map +7 -0
  12. package/dist/lib/node-esm/index.mjs +4102 -61
  13. package/dist/lib/node-esm/index.mjs.map +4 -4
  14. package/dist/lib/node-esm/meta.json +1 -1
  15. package/dist/lib/node-esm/testing/index.mjs +112 -61
  16. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  17. package/dist/lib/node-esm/translations.mjs +20 -0
  18. package/dist/lib/node-esm/translations.mjs.map +7 -0
  19. package/dist/types/src/components/Avatars/Avatar.d.ts +2 -2
  20. package/dist/types/src/components/Avatars/Avatar.d.ts.map +1 -1
  21. package/dist/types/src/components/Avatars/Avatar.stories.d.ts +5 -31
  22. package/dist/types/src/components/Avatars/Avatar.stories.d.ts.map +1 -1
  23. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts +5 -11
  24. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts.map +1 -1
  25. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts +1 -1
  26. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
  27. package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts +8 -20
  28. package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts.map +1 -1
  29. package/dist/types/src/components/{Buttons → Button}/Button.d.ts +4 -4
  30. package/dist/types/src/components/Button/Button.d.ts.map +1 -0
  31. package/dist/types/src/components/Button/Button.stories.d.ts +17 -0
  32. package/dist/types/src/components/Button/Button.stories.d.ts.map +1 -0
  33. package/dist/types/src/components/{Buttons → Button}/IconButton.d.ts +5 -4
  34. package/dist/types/src/components/Button/IconButton.d.ts.map +1 -0
  35. package/dist/types/src/components/Button/IconButton.stories.d.ts +16 -0
  36. package/dist/types/src/components/Button/IconButton.stories.d.ts.map +1 -0
  37. package/dist/types/src/components/{Buttons → Button}/Toggle.d.ts +2 -2
  38. package/dist/types/src/components/Button/Toggle.d.ts.map +1 -0
  39. package/dist/types/src/components/Button/Toggle.stories.d.ts +16 -0
  40. package/dist/types/src/components/Button/Toggle.stories.d.ts.map +1 -0
  41. package/dist/types/src/components/Button/ToggleGroup.d.ts +27 -0
  42. package/dist/types/src/components/Button/ToggleGroup.d.ts.map +1 -0
  43. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts +27 -0
  44. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts.map +1 -0
  45. package/dist/types/src/components/Button/index.d.ts.map +1 -0
  46. package/dist/types/src/components/Card/Card.d.ts +127 -0
  47. package/dist/types/src/components/Card/Card.d.ts.map +1 -0
  48. package/dist/types/src/components/Card/Card.stories.d.ts +21 -0
  49. package/dist/types/src/components/Card/Card.stories.d.ts.map +1 -0
  50. package/dist/types/src/components/Card/index.d.ts +2 -0
  51. package/dist/types/src/components/Card/index.d.ts.map +1 -0
  52. package/dist/types/src/components/Clipboard/ClipboardProvider.d.ts.map +1 -1
  53. package/dist/types/src/components/Clipboard/CopyButton.d.ts +1 -1
  54. package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -1
  55. package/dist/types/src/components/Clipboard/index.d.ts +10 -1
  56. package/dist/types/src/components/Clipboard/index.d.ts.map +1 -1
  57. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts +1 -1
  58. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts.map +1 -1
  59. package/dist/types/src/components/Dialog/AlertDialog.d.ts +51 -0
  60. package/dist/types/src/components/Dialog/AlertDialog.d.ts.map +1 -0
  61. package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts +11 -0
  62. package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts.map +1 -0
  63. package/dist/types/src/components/Dialog/Dialog.d.ts +64 -0
  64. package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -0
  65. package/dist/types/src/components/Dialog/Dialog.stories.d.ts +25 -0
  66. package/dist/types/src/components/Dialog/Dialog.stories.d.ts.map +1 -0
  67. package/dist/types/src/components/Dialog/index.d.ts.map +1 -0
  68. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts +1 -1
  69. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts.map +1 -1
  70. package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts +11 -0
  71. package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts.map +1 -0
  72. package/dist/types/src/components/ErrorFallback/ErrorFallback.stories.d.ts +7 -0
  73. package/dist/types/src/components/ErrorFallback/ErrorFallback.stories.d.ts.map +1 -0
  74. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts +19 -0
  75. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts.map +1 -0
  76. package/dist/types/src/components/ErrorFallback/ThrowError.d.ts +9 -0
  77. package/dist/types/src/components/ErrorFallback/ThrowError.d.ts.map +1 -0
  78. package/dist/types/src/components/ErrorFallback/index.d.ts +5 -0
  79. package/dist/types/src/components/ErrorFallback/index.d.ts.map +1 -0
  80. package/dist/types/src/components/Focus/Focus.d.ts +36 -0
  81. package/dist/types/src/components/Focus/Focus.d.ts.map +1 -0
  82. package/dist/types/src/components/Focus/Focus.stories.d.ts +9 -0
  83. package/dist/types/src/components/Focus/Focus.stories.d.ts.map +1 -0
  84. package/dist/types/src/components/Focus/index.d.ts +2 -0
  85. package/dist/types/src/components/Focus/index.d.ts.map +1 -0
  86. package/dist/types/src/components/Icon/Icon.d.ts +5 -2
  87. package/dist/types/src/components/Icon/Icon.d.ts.map +1 -1
  88. package/dist/types/src/components/Icon/Icon.stories.d.ts +25 -0
  89. package/dist/types/src/components/Icon/Icon.stories.d.ts.map +1 -0
  90. package/dist/types/src/components/Image/Image.d.ts +15 -0
  91. package/dist/types/src/components/Image/Image.d.ts.map +1 -0
  92. package/dist/types/src/components/Image/Image.stories.d.ts +34 -0
  93. package/dist/types/src/components/Image/Image.stories.d.ts.map +1 -0
  94. package/dist/types/src/components/Image/index.d.ts +2 -0
  95. package/dist/types/src/components/Image/index.d.ts.map +1 -0
  96. package/dist/types/src/components/Input/Input.d.ts +19 -24
  97. package/dist/types/src/components/Input/Input.d.ts.map +1 -1
  98. package/dist/types/src/components/Input/Input.stories.d.ts +17 -18
  99. package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
  100. package/dist/types/src/components/Link/Link.stories.d.ts +8 -8
  101. package/dist/types/src/components/Link/Link.stories.d.ts.map +1 -1
  102. package/dist/types/src/components/{Lists → List}/List.d.ts +8 -6
  103. package/dist/types/src/components/List/List.d.ts.map +1 -0
  104. package/dist/types/src/components/List/List.stories.d.ts +16 -0
  105. package/dist/types/src/components/List/List.stories.d.ts.map +1 -0
  106. package/dist/types/src/components/List/ListDropIndicator.d.ts.map +1 -0
  107. package/dist/types/src/components/{Lists → List}/Tree.d.ts +3 -3
  108. package/dist/types/src/components/List/Tree.d.ts.map +1 -0
  109. package/dist/types/src/components/List/Tree.stories.d.ts +15 -0
  110. package/dist/types/src/components/List/Tree.stories.d.ts.map +1 -0
  111. package/dist/types/src/components/List/TreeDropIndicator.d.ts.map +1 -0
  112. package/dist/types/src/components/{Lists → List}/Treegrid.d.ts +6 -10
  113. package/dist/types/src/components/List/Treegrid.d.ts.map +1 -0
  114. package/dist/types/src/components/List/Treegrid.stories.d.ts +12 -0
  115. package/dist/types/src/components/List/Treegrid.stories.d.ts.map +1 -0
  116. package/dist/types/src/components/List/index.d.ts.map +1 -0
  117. package/dist/types/src/components/Main/Main.d.ts +25 -31
  118. package/dist/types/src/components/Main/Main.d.ts.map +1 -1
  119. package/dist/types/src/components/Main/Main.stories.d.ts +6 -10
  120. package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
  121. package/dist/types/src/components/Main/useSwipeToDismiss.d.ts.map +1 -1
  122. package/dist/types/src/components/{Menus → Menu}/ContextMenu.d.ts +6 -6
  123. package/dist/types/src/components/Menu/ContextMenu.d.ts.map +1 -0
  124. package/dist/types/src/components/Menu/ContextMenu.stories.d.ts +12 -0
  125. package/dist/types/src/components/Menu/ContextMenu.stories.d.ts.map +1 -0
  126. package/dist/types/src/components/Menu/DropdownMenu.d.ts +121 -0
  127. package/dist/types/src/components/Menu/DropdownMenu.d.ts.map +1 -0
  128. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts +28 -0
  129. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts.map +1 -0
  130. package/dist/types/src/components/Menu/index.d.ts.map +1 -0
  131. package/dist/types/src/components/Message/Message.d.ts +1 -1
  132. package/dist/types/src/components/Message/Message.d.ts.map +1 -1
  133. package/dist/types/src/components/Message/Message.stories.d.ts +12 -22
  134. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
  135. package/dist/types/src/components/Popover/Popover.d.ts +41 -24
  136. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  137. package/dist/types/src/components/Popover/Popover.stories.d.ts +6 -34
  138. package/dist/types/src/components/Popover/Popover.stories.d.ts.map +1 -1
  139. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +27 -27
  140. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  141. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +50 -27
  142. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
  143. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +68 -0
  144. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -0
  145. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts +23 -0
  146. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts.map +1 -0
  147. package/dist/types/src/components/ScrollContainer/index.d.ts +2 -0
  148. package/dist/types/src/components/ScrollContainer/index.d.ts.map +1 -0
  149. package/dist/types/src/components/Select/Select.d.ts +10 -10
  150. package/dist/types/src/components/Select/Select.d.ts.map +1 -1
  151. package/dist/types/src/components/Select/Select.stories.d.ts +6 -11
  152. package/dist/types/src/components/Select/Select.stories.d.ts.map +1 -1
  153. package/dist/types/src/components/Separator/Separator.d.ts +4 -4
  154. package/dist/types/src/components/Separator/Separator.d.ts.map +1 -1
  155. package/dist/types/src/components/Skeleton/Skeleton.d.ts +12 -0
  156. package/dist/types/src/components/Skeleton/Skeleton.d.ts.map +1 -0
  157. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts +17 -0
  158. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts.map +1 -0
  159. package/dist/types/src/components/Skeleton/index.d.ts +2 -0
  160. package/dist/types/src/components/Skeleton/index.d.ts.map +1 -0
  161. package/dist/types/src/components/Splitter/Splitter.d.ts +34 -0
  162. package/dist/types/src/components/Splitter/Splitter.d.ts.map +1 -0
  163. package/dist/types/src/components/Splitter/Splitter.stories.d.ts +7 -0
  164. package/dist/types/src/components/Splitter/Splitter.stories.d.ts.map +1 -0
  165. package/dist/types/src/components/Splitter/index.d.ts +2 -0
  166. package/dist/types/src/components/Splitter/index.d.ts.map +1 -0
  167. package/dist/types/src/components/Status/Status.d.ts +3 -4
  168. package/dist/types/src/components/Status/Status.d.ts.map +1 -1
  169. package/dist/types/src/components/Status/Status.stories.d.ts +6 -10
  170. package/dist/types/src/components/Status/Status.stories.d.ts.map +1 -1
  171. package/dist/types/src/components/Tag/Tag.d.ts +1 -1
  172. package/dist/types/src/components/Tag/Tag.d.ts.map +1 -1
  173. package/dist/types/src/components/Tag/Tag.stories.d.ts +8 -13
  174. package/dist/types/src/components/Tag/Tag.stories.d.ts.map +1 -1
  175. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts +4 -4
  176. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  177. package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts +12 -0
  178. package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts.map +1 -0
  179. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +55 -63
  180. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
  181. package/dist/types/src/components/ThemeProvider/index.d.ts +2 -1
  182. package/dist/types/src/components/ThemeProvider/index.d.ts.map +1 -1
  183. package/dist/types/src/components/Toast/Toast.d.ts +20 -20
  184. package/dist/types/src/components/Toast/Toast.d.ts.map +1 -1
  185. package/dist/types/src/components/Toast/Toast.stories.d.ts +6 -44
  186. package/dist/types/src/components/Toast/Toast.stories.d.ts.map +1 -1
  187. package/dist/types/src/components/Toolbar/Toolbar.d.ts +41 -23
  188. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  189. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts +6 -50
  190. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
  191. package/dist/types/src/components/Tooltip/Tooltip.d.ts +11 -13
  192. package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
  193. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts +10 -63
  194. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
  195. package/dist/types/src/components/index.d.ts +14 -8
  196. package/dist/types/src/components/index.d.ts.map +1 -1
  197. package/dist/types/src/exemplars/generics.stories.d.ts +19 -0
  198. package/dist/types/src/exemplars/generics.stories.d.ts.map +1 -0
  199. package/dist/types/src/exemplars/slot.stories.d.ts +15 -0
  200. package/dist/types/src/exemplars/slot.stories.d.ts.map +1 -0
  201. package/dist/types/src/exemplars/tabster.stories.d.ts +8 -0
  202. package/dist/types/src/exemplars/tabster.stories.d.ts.map +1 -0
  203. package/dist/types/src/exemplars/virtualizer.stories.d.ts +11 -0
  204. package/dist/types/src/exemplars/virtualizer.stories.d.ts.map +1 -0
  205. package/dist/types/src/hooks/index.d.ts +1 -0
  206. package/dist/types/src/hooks/index.d.ts.map +1 -1
  207. package/dist/types/src/hooks/useDensityContext.d.ts +2 -2
  208. package/dist/types/src/hooks/useDensityContext.d.ts.map +1 -1
  209. package/dist/types/src/hooks/useElevationContext.d.ts +1 -1
  210. package/dist/types/src/hooks/useElevationContext.d.ts.map +1 -1
  211. package/dist/types/src/hooks/useIconHref.d.ts.map +1 -1
  212. package/dist/types/src/hooks/useSafeArea.d.ts.map +1 -1
  213. package/dist/types/src/hooks/useSafeCollisionPadding.d.ts.map +1 -1
  214. package/dist/types/src/hooks/useVisualViewport.d.ts +2 -2
  215. package/dist/types/src/hooks/useVisualViewport.d.ts.map +1 -1
  216. package/dist/types/src/index.d.ts +2 -1
  217. package/dist/types/src/index.d.ts.map +1 -1
  218. package/dist/types/src/playground/Controls.stories.d.ts +5 -9
  219. package/dist/types/src/playground/Controls.stories.d.ts.map +1 -1
  220. package/dist/types/src/playground/Custom.stories.d.ts +12 -4
  221. package/dist/types/src/playground/Custom.stories.d.ts.map +1 -1
  222. package/dist/types/src/playground/Typography.stories.d.ts +5 -11
  223. package/dist/types/src/playground/Typography.stories.d.ts.map +1 -1
  224. package/dist/types/src/primitives/Column/Column.d.ts +33 -0
  225. package/dist/types/src/primitives/Column/Column.d.ts.map +1 -0
  226. package/dist/types/src/primitives/Column/Column.stories.d.ts +25 -0
  227. package/dist/types/src/primitives/Column/Column.stories.d.ts.map +1 -0
  228. package/dist/types/src/primitives/Column/index.d.ts +2 -0
  229. package/dist/types/src/primitives/Column/index.d.ts.map +1 -0
  230. package/dist/types/src/primitives/Container/Container.d.ts +7 -0
  231. package/dist/types/src/primitives/Container/Container.d.ts.map +1 -0
  232. package/dist/types/src/primitives/Container/Container.stories.d.ts +6 -0
  233. package/dist/types/src/primitives/Container/Container.stories.d.ts.map +1 -0
  234. package/dist/types/src/primitives/Container/index.d.ts +2 -0
  235. package/dist/types/src/primitives/Container/index.d.ts.map +1 -0
  236. package/dist/types/src/primitives/Flex/Flex.d.ts +11 -0
  237. package/dist/types/src/primitives/Flex/Flex.d.ts.map +1 -0
  238. package/dist/types/src/primitives/Flex/Flex.stories.d.ts +8 -0
  239. package/dist/types/src/primitives/Flex/Flex.stories.d.ts.map +1 -0
  240. package/dist/types/src/primitives/Flex/index.d.ts +2 -0
  241. package/dist/types/src/primitives/Flex/index.d.ts.map +1 -0
  242. package/dist/types/src/primitives/Grid/Grid.d.ts +10 -0
  243. package/dist/types/src/primitives/Grid/Grid.d.ts.map +1 -0
  244. package/dist/types/src/primitives/Grid/Grid.stories.d.ts +8 -0
  245. package/dist/types/src/primitives/Grid/Grid.stories.d.ts.map +1 -0
  246. package/dist/types/src/primitives/Grid/index.d.ts +2 -0
  247. package/dist/types/src/primitives/Grid/index.d.ts.map +1 -0
  248. package/dist/types/src/primitives/Panel/Panel.d.ts +35 -0
  249. package/dist/types/src/primitives/Panel/Panel.d.ts.map +1 -0
  250. package/dist/types/src/primitives/Panel/Panel.stories.d.ts +6 -0
  251. package/dist/types/src/primitives/Panel/Panel.stories.d.ts.map +1 -0
  252. package/dist/types/src/primitives/Panel/index.d.ts +2 -0
  253. package/dist/types/src/primitives/Panel/index.d.ts.map +1 -0
  254. package/dist/types/src/primitives/index.d.ts +6 -0
  255. package/dist/types/src/primitives/index.d.ts.map +1 -0
  256. package/dist/types/src/testing/Loading.d.ts +9 -0
  257. package/dist/types/src/testing/Loading.d.ts.map +1 -0
  258. package/dist/types/src/testing/decorators/index.d.ts +2 -1
  259. package/dist/types/src/testing/decorators/index.d.ts.map +1 -1
  260. package/dist/types/src/testing/decorators/withLayout.d.ts +15 -0
  261. package/dist/types/src/testing/decorators/withLayout.d.ts.map +1 -0
  262. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts +12 -0
  263. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts.map +1 -0
  264. package/dist/types/src/testing/decorators/withTheme.d.ts +5 -1
  265. package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
  266. package/dist/types/src/testing/index.d.ts +1 -0
  267. package/dist/types/src/testing/index.d.ts.map +1 -1
  268. package/dist/types/src/translations.d.ts +11 -0
  269. package/dist/types/src/translations.d.ts.map +1 -0
  270. package/dist/types/src/util/index.d.ts +2 -1
  271. package/dist/types/src/util/index.d.ts.map +1 -1
  272. package/dist/types/src/util/usePx.d.ts +8 -0
  273. package/dist/types/src/util/usePx.d.ts.map +1 -0
  274. package/dist/types/tsconfig.tsbuildinfo +1 -1
  275. package/package.json +54 -39
  276. package/src/components/Avatars/Avatar.stories.tsx +23 -16
  277. package/src/components/Avatars/Avatar.tsx +10 -18
  278. package/src/components/Avatars/AvatarGroup.stories.tsx +11 -8
  279. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +19 -15
  280. package/src/components/Breadcrumb/Breadcrumb.tsx +14 -40
  281. package/src/components/{Buttons → Button}/Button.stories.tsx +11 -13
  282. package/src/components/{Buttons → Button}/Button.tsx +12 -26
  283. package/src/components/{Buttons → Button}/IconButton.stories.tsx +18 -13
  284. package/src/components/{Buttons → Button}/IconButton.tsx +22 -16
  285. package/src/components/Button/Toggle.stories.tsx +36 -0
  286. package/src/components/{Buttons → Button}/Toggle.tsx +4 -4
  287. package/src/components/{Buttons → Button}/ToggleGroup.stories.tsx +14 -12
  288. package/src/components/Button/ToggleGroup.tsx +50 -0
  289. package/src/components/Card/Card.stories.tsx +151 -0
  290. package/src/components/Card/Card.tsx +505 -0
  291. package/src/components/Card/index.ts +5 -0
  292. package/src/components/Clipboard/ClipboardProvider.tsx +1 -1
  293. package/src/components/Clipboard/CopyButton.tsx +9 -9
  294. package/src/components/DensityProvider/DensityProvider.tsx +2 -2
  295. package/src/components/Dialog/AlertDialog.stories.tsx +68 -0
  296. package/src/components/Dialog/AlertDialog.tsx +213 -0
  297. package/src/components/Dialog/Dialog.stories.tsx +177 -0
  298. package/src/components/Dialog/Dialog.tsx +285 -0
  299. package/src/components/ElevationProvider/ElevationProvider.tsx +2 -2
  300. package/src/components/ErrorFallback/ErrorFallback.stories.tsx +45 -0
  301. package/src/components/ErrorFallback/ErrorFallback.tsx +70 -0
  302. package/src/components/ErrorFallback/ErrorStack.tsx +114 -0
  303. package/src/components/ErrorFallback/ThrowError.tsx +37 -0
  304. package/src/components/ErrorFallback/index.ts +9 -0
  305. package/src/components/Focus/AUDIT.md +43 -0
  306. package/src/components/Focus/Focus.stories.tsx +230 -0
  307. package/src/components/Focus/Focus.tsx +201 -0
  308. package/src/components/Focus/index.ts +5 -0
  309. package/src/components/Icon/Icon.stories.tsx +143 -0
  310. package/src/components/Icon/Icon.tsx +6 -2
  311. package/src/components/Image/Image.stories.tsx +86 -0
  312. package/src/components/Image/Image.tsx +246 -0
  313. package/src/components/Image/index.ts +5 -0
  314. package/src/components/Input/Input.stories.tsx +27 -49
  315. package/src/components/Input/Input.tsx +51 -87
  316. package/src/components/Link/Link.stories.tsx +11 -8
  317. package/src/components/Link/Link.tsx +2 -2
  318. package/src/components/{Lists → List}/List.stories.tsx +45 -47
  319. package/src/components/{Lists → List}/List.tsx +30 -35
  320. package/src/components/{Lists → List}/ListDropIndicator.tsx +7 -7
  321. package/src/components/{Lists → List}/Tree.stories.tsx +15 -13
  322. package/src/components/{Lists → List}/Tree.tsx +3 -3
  323. package/src/components/{Lists → List}/TreeDropIndicator.tsx +7 -7
  324. package/src/components/{Lists → List}/Treegrid.stories.tsx +39 -34
  325. package/src/components/List/Treegrid.tsx +188 -0
  326. package/src/components/Main/Main.stories.tsx +52 -27
  327. package/src/components/Main/Main.tsx +176 -105
  328. package/src/components/{Menus → Menu}/ContextMenu.stories.tsx +12 -10
  329. package/src/components/{Menus → Menu}/ContextMenu.tsx +10 -33
  330. package/src/components/{Menus → Menu}/DropdownMenu.stories.tsx +13 -11
  331. package/src/components/{Menus → Menu}/DropdownMenu.tsx +157 -120
  332. package/src/components/Message/Message.stories.tsx +36 -18
  333. package/src/components/Message/Message.tsx +43 -34
  334. package/src/components/Popover/Popover.stories.tsx +18 -16
  335. package/src/components/Popover/Popover.tsx +124 -102
  336. package/src/components/ScrollArea/ScrollArea.stories.tsx +224 -32
  337. package/src/components/ScrollArea/ScrollArea.tsx +97 -79
  338. package/src/components/ScrollArea/index.ts +1 -1
  339. package/src/components/ScrollContainer/ScrollContainer.stories.tsx +91 -0
  340. package/src/components/ScrollContainer/ScrollContainer.tsx +347 -0
  341. package/src/components/ScrollContainer/index.ts +5 -0
  342. package/src/components/Select/Select.stories.tsx +19 -17
  343. package/src/components/Select/Select.tsx +16 -32
  344. package/src/components/Separator/Separator.tsx +5 -8
  345. package/src/components/Skeleton/Skeleton.stories.tsx +51 -0
  346. package/src/components/Skeleton/Skeleton.tsx +26 -0
  347. package/src/components/Skeleton/index.ts +5 -0
  348. package/src/components/Splitter/Splitter.stories.tsx +83 -0
  349. package/src/components/Splitter/Splitter.tsx +127 -0
  350. package/src/components/Splitter/index.ts +5 -0
  351. package/src/components/Status/Status.stories.tsx +29 -23
  352. package/src/components/Status/Status.tsx +10 -7
  353. package/src/components/Tag/Tag.stories.tsx +16 -13
  354. package/src/components/Tag/Tag.tsx +3 -8
  355. package/src/components/ThemeProvider/ThemeProvider.stories.tsx +31 -0
  356. package/src/components/ThemeProvider/ThemeProvider.tsx +12 -11
  357. package/src/components/ThemeProvider/TranslationsProvider.tsx +3 -18
  358. package/src/components/ThemeProvider/index.ts +3 -3
  359. package/src/components/Toast/Toast.stories.tsx +13 -11
  360. package/src/components/Toast/Toast.tsx +23 -42
  361. package/src/components/Toolbar/Toolbar.stories.tsx +22 -21
  362. package/src/components/Toolbar/Toolbar.tsx +188 -13
  363. package/src/components/Tooltip/Tooltip.stories.tsx +35 -30
  364. package/src/components/Tooltip/Tooltip.tsx +44 -41
  365. package/src/components/index.ts +15 -9
  366. package/src/exemplars/generics.stories.tsx +41 -0
  367. package/src/exemplars/slot.stories.tsx +117 -0
  368. package/src/exemplars/tabster.stories.tsx +127 -0
  369. package/src/exemplars/virtualizer.stories.tsx +137 -0
  370. package/src/hooks/index.ts +1 -0
  371. package/src/hooks/useDensityContext.ts +3 -3
  372. package/src/hooks/useElevationContext.ts +1 -1
  373. package/src/hooks/useSafeArea.ts +3 -2
  374. package/src/hooks/useSafeCollisionPadding.ts +1 -1
  375. package/src/hooks/useVisualViewport.ts +4 -4
  376. package/src/index.ts +2 -1
  377. package/src/playground/Controls.stories.tsx +20 -24
  378. package/src/playground/Custom.stories.tsx +20 -34
  379. package/src/playground/Typography.stories.tsx +11 -9
  380. package/src/primitives/Column/AUDIT.md +148 -0
  381. package/src/primitives/Column/Column.stories.tsx +181 -0
  382. package/src/primitives/Column/Column.tsx +165 -0
  383. package/src/primitives/Column/index.ts +5 -0
  384. package/src/primitives/Container/Container.stories.tsx +29 -0
  385. package/src/primitives/Container/Container.tsx +19 -0
  386. package/src/primitives/Container/index.ts +5 -0
  387. package/src/primitives/Flex/Flex.stories.tsx +57 -0
  388. package/src/primitives/Flex/Flex.tsx +27 -0
  389. package/src/primitives/Flex/index.ts +5 -0
  390. package/src/primitives/Grid/Grid.stories.tsx +56 -0
  391. package/src/primitives/Grid/Grid.tsx +30 -0
  392. package/src/primitives/Grid/index.ts +5 -0
  393. package/src/primitives/Panel/Panel.stories.tsx +68 -0
  394. package/src/primitives/Panel/Panel.tsx +120 -0
  395. package/src/primitives/Panel/index.ts +5 -0
  396. package/src/primitives/index.ts +9 -0
  397. package/src/testing/Loading.tsx +47 -0
  398. package/src/testing/decorators/index.ts +2 -1
  399. package/src/testing/decorators/withLayout.tsx +77 -0
  400. package/src/testing/decorators/withLayoutVariants.tsx +48 -0
  401. package/src/testing/decorators/withTheme.tsx +37 -0
  402. package/src/testing/index.ts +2 -0
  403. package/src/translations.ts +19 -0
  404. package/src/util/index.ts +3 -1
  405. package/src/util/usePx.ts +62 -0
  406. package/dist/lib/browser/chunk-T6YPS45E.mjs +0 -4376
  407. package/dist/lib/browser/chunk-T6YPS45E.mjs.map +0 -7
  408. package/dist/lib/node-esm/chunk-TYVQJ4KW.mjs +0 -4378
  409. package/dist/lib/node-esm/chunk-TYVQJ4KW.mjs.map +0 -7
  410. package/dist/types/src/components/AnchoredOverflow/AnchoredOverflow.d.ts +0 -15
  411. package/dist/types/src/components/AnchoredOverflow/AnchoredOverflow.d.ts.map +0 -1
  412. package/dist/types/src/components/AnchoredOverflow/index.d.ts +0 -2
  413. package/dist/types/src/components/AnchoredOverflow/index.d.ts.map +0 -1
  414. package/dist/types/src/components/Buttons/Button.d.ts.map +0 -1
  415. package/dist/types/src/components/Buttons/Button.stories.d.ts +0 -12
  416. package/dist/types/src/components/Buttons/Button.stories.d.ts.map +0 -1
  417. package/dist/types/src/components/Buttons/IconButton.d.ts.map +0 -1
  418. package/dist/types/src/components/Buttons/IconButton.stories.d.ts +0 -22
  419. package/dist/types/src/components/Buttons/IconButton.stories.d.ts.map +0 -1
  420. package/dist/types/src/components/Buttons/Toggle.d.ts.map +0 -1
  421. package/dist/types/src/components/Buttons/Toggle.stories.d.ts +0 -19
  422. package/dist/types/src/components/Buttons/Toggle.stories.d.ts.map +0 -1
  423. package/dist/types/src/components/Buttons/ToggleGroup.d.ts +0 -28
  424. package/dist/types/src/components/Buttons/ToggleGroup.d.ts.map +0 -1
  425. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts +0 -39
  426. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts.map +0 -1
  427. package/dist/types/src/components/Buttons/index.d.ts.map +0 -1
  428. package/dist/types/src/components/Dialogs/AlertDialog.d.ts +0 -31
  429. package/dist/types/src/components/Dialogs/AlertDialog.d.ts.map +0 -1
  430. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts +0 -43
  431. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts.map +0 -1
  432. package/dist/types/src/components/Dialogs/Dialog.d.ts +0 -31
  433. package/dist/types/src/components/Dialogs/Dialog.d.ts.map +0 -1
  434. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts +0 -48
  435. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts.map +0 -1
  436. package/dist/types/src/components/Dialogs/index.d.ts.map +0 -1
  437. package/dist/types/src/components/Lists/List.d.ts.map +0 -1
  438. package/dist/types/src/components/Lists/List.stories.d.ts +0 -37
  439. package/dist/types/src/components/Lists/List.stories.d.ts.map +0 -1
  440. package/dist/types/src/components/Lists/ListDropIndicator.d.ts.map +0 -1
  441. package/dist/types/src/components/Lists/Tree.d.ts.map +0 -1
  442. package/dist/types/src/components/Lists/Tree.stories.d.ts +0 -41
  443. package/dist/types/src/components/Lists/Tree.stories.d.ts.map +0 -1
  444. package/dist/types/src/components/Lists/TreeDropIndicator.d.ts.map +0 -1
  445. package/dist/types/src/components/Lists/Treegrid.d.ts.map +0 -1
  446. package/dist/types/src/components/Lists/Treegrid.stories.d.ts +0 -10
  447. package/dist/types/src/components/Lists/Treegrid.stories.d.ts.map +0 -1
  448. package/dist/types/src/components/Lists/index.d.ts.map +0 -1
  449. package/dist/types/src/components/Menus/ContextMenu.d.ts.map +0 -1
  450. package/dist/types/src/components/Menus/ContextMenu.stories.d.ts +0 -50
  451. package/dist/types/src/components/Menus/ContextMenu.stories.d.ts.map +0 -1
  452. package/dist/types/src/components/Menus/DropdownMenu.d.ts +0 -112
  453. package/dist/types/src/components/Menus/DropdownMenu.d.ts.map +0 -1
  454. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts +0 -50
  455. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts.map +0 -1
  456. package/dist/types/src/components/Menus/index.d.ts.map +0 -1
  457. package/dist/types/src/testing/decorators/withSurfaceVariantsLayout.d.ts +0 -12
  458. package/dist/types/src/testing/decorators/withSurfaceVariantsLayout.d.ts.map +0 -1
  459. package/dist/types/src/util/ThemedClassName.d.ts +0 -5
  460. package/dist/types/src/util/ThemedClassName.d.ts.map +0 -1
  461. package/src/components/AnchoredOverflow/AnchoredOverflow.tsx +0 -59
  462. package/src/components/AnchoredOverflow/index.ts +0 -5
  463. package/src/components/Buttons/Toggle.stories.tsx +0 -33
  464. package/src/components/Buttons/ToggleGroup.tsx +0 -41
  465. package/src/components/Dialogs/AlertDialog.stories.tsx +0 -66
  466. package/src/components/Dialogs/AlertDialog.tsx +0 -172
  467. package/src/components/Dialogs/Dialog.stories.tsx +0 -65
  468. package/src/components/Dialogs/Dialog.tsx +0 -159
  469. package/src/components/Lists/Treegrid.tsx +0 -152
  470. package/src/testing/decorators/withSurfaceVariantsLayout.tsx +0 -51
  471. package/src/testing/decorators/withTheme.ts +0 -22
  472. package/src/util/ThemedClassName.ts +0 -7
  473. /package/dist/types/src/components/{Buttons → Button}/index.d.ts +0 -0
  474. /package/dist/types/src/components/{Dialogs → Dialog}/index.d.ts +0 -0
  475. /package/dist/types/src/components/{Lists → List}/ListDropIndicator.d.ts +0 -0
  476. /package/dist/types/src/components/{Lists → List}/TreeDropIndicator.d.ts +0 -0
  477. /package/dist/types/src/components/{Lists → List}/index.d.ts +0 -0
  478. /package/dist/types/src/components/{Menus → Menu}/index.d.ts +0 -0
  479. /package/src/components/{Buttons → Button}/index.ts +0 -0
  480. /package/src/components/{Dialogs → Dialog}/index.ts +0 -0
  481. /package/src/components/{Lists → List}/index.ts +0 -0
  482. /package/src/components/{Menus → Menu}/index.ts +0 -0
@@ -2,7 +2,7 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- // This is based upon `@radix-ui/react-popover` fetched 25 Oct 2024 at https://github.com/radix-ui/primitives at commit 374c7d7.
5
+ // This is based upon `@radix-ui/react-popover` fetched Oct 25, 2024 at https://github.com/radix-ui/primitives at commit 374c7d7.
6
6
 
7
7
  import { composeEventHandlers } from '@radix-ui/primitive';
8
8
  import { useComposedRefs } from '@radix-ui/react-compose-refs';
@@ -22,55 +22,60 @@ import { useControllableState } from '@radix-ui/react-use-controllable-state';
22
22
  import { hideOthers } from 'aria-hidden';
23
23
  import React, {
24
24
  type ComponentPropsWithRef,
25
- forwardRef,
26
- type ElementRef,
27
- type RefObject,
28
- type ReactNode,
29
- useRef,
30
- useCallback,
31
25
  type ComponentPropsWithoutRef,
26
+ type ComponentRef,
32
27
  type FC,
33
- useState,
28
+ type ReactNode,
29
+ type RefObject,
30
+ forwardRef,
31
+ useCallback,
34
32
  useEffect,
35
- type MutableRefObject,
33
+ useMemo,
34
+ useRef,
35
+ useState,
36
36
  } from 'react';
37
37
  import { RemoveScroll } from 'react-remove-scroll';
38
38
 
39
- import { useElevationContext, useThemeContext } from '../../hooks';
40
- import { useSafeCollisionPadding } from '../../hooks/useSafeCollisionPadding';
39
+ import { useSafeCollisionPadding, useElevationContext, useThemeContext } from '../../hooks';
41
40
  import { type ThemedClassName } from '../../util';
42
41
 
43
- /* -------------------------------------------------------------------------------------------------
44
- * Popover
45
- * ----------------------------------------------------------------------------------------------- */
42
+ //
43
+ // Context
44
+ //
45
+
46
+ type ScopedProps<P> = P & { __scopePopover?: Scope };
46
47
 
47
48
  const POPOVER_NAME = 'Popover';
48
49
 
49
- type ScopedProps<P> = P & { __scopePopover?: Scope };
50
50
  const [createPopoverContext, createPopoverScope] = createContextScope(POPOVER_NAME, [createPopperScope]);
51
+
51
52
  const usePopperScope = createPopperScope();
52
53
 
53
54
  type PopoverContextValue = {
54
- triggerRef: MutableRefObject<HTMLButtonElement>;
55
+ triggerRef: RefObject<HTMLButtonElement>;
55
56
  contentId: string;
57
+ hasCustomAnchor: boolean;
58
+ modal: boolean;
56
59
  open: boolean;
57
60
  onOpenChange(open: boolean): void;
58
61
  onOpenToggle(): void;
59
- hasCustomAnchor: boolean;
60
62
  onCustomAnchorAdd(): void;
61
63
  onCustomAnchorRemove(): void;
62
- modal: boolean;
63
64
  };
64
65
 
65
66
  const [PopoverProvider, usePopoverContext] = createPopoverContext<PopoverContextValue>(POPOVER_NAME);
66
67
 
67
- interface PopoverRootProps {
68
+ //
69
+ // PopoverRoot
70
+ //
71
+
72
+ type PopoverRootProps = {
68
73
  children?: ReactNode;
69
74
  open?: boolean;
70
75
  defaultOpen?: boolean;
71
76
  onOpenChange?: (open: boolean) => void;
72
77
  modal?: boolean;
73
- }
78
+ };
74
79
 
75
80
  const PopoverRoot: FC<PopoverRootProps> = (props: ScopedProps<PopoverRootProps>) => {
76
81
  const { __scopePopover, children, open: openProp, defaultOpen, onOpenChange, modal = false } = props;
@@ -88,7 +93,7 @@ const PopoverRoot: FC<PopoverRootProps> = (props: ScopedProps<PopoverRootProps>)
88
93
  <PopoverProvider
89
94
  scope={__scopePopover}
90
95
  contentId={useId()}
91
- triggerRef={triggerRef as MutableRefObject<HTMLButtonElement>}
96
+ triggerRef={triggerRef as RefObject<HTMLButtonElement>}
92
97
  open={open}
93
98
  onOpenChange={setOpen}
94
99
  onOpenToggle={useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen])}
@@ -105,15 +110,15 @@ const PopoverRoot: FC<PopoverRootProps> = (props: ScopedProps<PopoverRootProps>)
105
110
 
106
111
  PopoverRoot.displayName = POPOVER_NAME;
107
112
 
108
- /* -------------------------------------------------------------------------------------------------
109
- * PopoverAnchor
110
- * ----------------------------------------------------------------------------------------------- */
113
+ //
114
+ // PopoverAnchor
115
+ //
111
116
 
112
117
  const ANCHOR_NAME = 'PopoverAnchor';
113
118
 
114
- type PopoverAnchorElement = ElementRef<typeof PopperPrimitive.Anchor>;
119
+ type PopoverAnchorElement = ComponentRef<typeof PopperPrimitive.Anchor>;
115
120
  type PopperAnchorProps = ComponentPropsWithoutRef<typeof PopperPrimitive.Anchor>;
116
- interface PopoverAnchorProps extends PopperAnchorProps {}
121
+ type PopoverAnchorProps = PopperAnchorProps;
117
122
 
118
123
  const PopoverAnchor = forwardRef<PopoverAnchorElement, PopoverAnchorProps>(
119
124
  (props: ScopedProps<PopoverAnchorProps>, forwardedRef) => {
@@ -133,25 +138,28 @@ const PopoverAnchor = forwardRef<PopoverAnchorElement, PopoverAnchorProps>(
133
138
 
134
139
  PopoverAnchor.displayName = ANCHOR_NAME;
135
140
 
136
- /* -------------------------------------------------------------------------------------------------
137
- * PopoverTrigger
138
- * ----------------------------------------------------------------------------------------------- */
141
+ //
142
+ // PopoverTrigger
143
+ //
139
144
 
140
145
  const TRIGGER_NAME = 'PopoverTrigger';
141
146
 
142
- type PopoverTriggerElement = ElementRef<typeof Primitive.button>;
147
+ type PopoverTriggerElement = ComponentRef<typeof Primitive.button>;
143
148
  type PrimitiveButtonProps = ComponentPropsWithoutRef<typeof Primitive.button>;
144
- interface PopoverTriggerProps extends PrimitiveButtonProps {}
149
+ type PopoverTriggerProps = PrimitiveButtonProps & {
150
+ asChild?: boolean;
151
+ };
145
152
 
146
153
  const PopoverTrigger = forwardRef<PopoverTriggerElement, PopoverTriggerProps>(
147
154
  (props: ScopedProps<PopoverTriggerProps>, forwardedRef) => {
148
- const { __scopePopover, ...triggerProps } = props;
155
+ const { __scopePopover, asChild, ...triggerProps } = props;
149
156
  const context = usePopoverContext(TRIGGER_NAME, __scopePopover);
150
157
  const popperScope = usePopperScope(__scopePopover);
151
158
  const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);
159
+ const Comp = asChild ? Slot : Primitive.button;
152
160
 
153
161
  const trigger = (
154
- <Primitive.button
162
+ <Comp
155
163
  type='button'
156
164
  aria-haspopup='dialog'
157
165
  aria-expanded={context.open}
@@ -175,15 +183,15 @@ const PopoverTrigger = forwardRef<PopoverTriggerElement, PopoverTriggerProps>(
175
183
 
176
184
  PopoverTrigger.displayName = TRIGGER_NAME;
177
185
 
178
- /* -------------------------------------------------------------------------------------------------
179
- * PopoverVirtualTrigger
180
- * ----------------------------------------------------------------------------------------------- */
186
+ //
187
+ // PopoverVirtualTrigger
188
+ //
181
189
 
182
190
  const VIRTUAL_TRIGGER_NAME = 'PopoverVirtualTrigger';
183
191
 
184
- interface PopoverVirtualTriggerProps {
185
- virtualRef: RefObject<PopoverTriggerElement>;
186
- }
192
+ type PopoverVirtualTriggerProps = {
193
+ virtualRef: RefObject<PopoverTriggerElement | null>;
194
+ };
187
195
 
188
196
  const PopoverVirtualTrigger = (props: ScopedProps<PopoverVirtualTriggerProps>) => {
189
197
  const { __scopePopover, virtualRef } = props;
@@ -194,14 +202,14 @@ const PopoverVirtualTrigger = (props: ScopedProps<PopoverVirtualTriggerProps>) =
194
202
  context.triggerRef.current = virtualRef.current;
195
203
  }
196
204
  });
197
- return <PopperPrimitive.Anchor {...popperScope} virtualRef={virtualRef} />;
205
+ return <PopperPrimitive.Anchor {...popperScope} virtualRef={virtualRef as RefObject<PopoverTriggerElement>} />;
198
206
  };
199
207
 
200
208
  PopoverVirtualTrigger.displayName = VIRTUAL_TRIGGER_NAME;
201
209
 
202
- /* -------------------------------------------------------------------------------------------------
203
- * PopoverPortal
204
- * ----------------------------------------------------------------------------------------------- */
210
+ //
211
+ // PopoverPortal
212
+ //
205
213
 
206
214
  const PORTAL_NAME = 'PopoverPortal';
207
215
 
@@ -211,7 +219,7 @@ const [PortalProvider, usePortalContext] = createPopoverContext<PortalContextVal
211
219
  });
212
220
 
213
221
  type PortalProps = ComponentPropsWithoutRef<typeof PortalPrimitive>;
214
- interface PopoverPortalProps {
222
+ type PopoverPortalProps = {
215
223
  children?: ReactNode;
216
224
  /**
217
225
  * Specify a container element to portal the content into.
@@ -222,9 +230,9 @@ interface PopoverPortalProps {
222
230
  * controlling animation with React animation libraries.
223
231
  */
224
232
  forceMount?: true;
225
- }
233
+ };
226
234
 
227
- const PopoverPortal: FC<PopoverPortalProps> = (props: ScopedProps<PopoverPortalProps>) => {
235
+ const PopoverPortal = (props: ScopedProps<PopoverPortalProps>) => {
228
236
  const { __scopePopover, forceMount, children, container } = props;
229
237
  const context = usePopoverContext(PORTAL_NAME, __scopePopover);
230
238
  return (
@@ -240,9 +248,9 @@ const PopoverPortal: FC<PopoverPortalProps> = (props: ScopedProps<PopoverPortalP
240
248
 
241
249
  PopoverPortal.displayName = PORTAL_NAME;
242
250
 
243
- /* -------------------------------------------------------------------------------------------------
244
- * PopoverContent
245
- * ----------------------------------------------------------------------------------------------- */
251
+ //
252
+ // PopoverContent
253
+ //
246
254
 
247
255
  const CONTENT_NAME = 'PopoverContent';
248
256
 
@@ -274,11 +282,11 @@ const PopoverContent = forwardRef<PopoverContentTypeElement, PopoverContentProps
274
282
 
275
283
  PopoverContent.displayName = CONTENT_NAME;
276
284
 
277
- /* ----------------------------------------------------------------------------------------------- */
278
-
279
285
  type PopoverContentTypeElement = PopoverContentImplElement;
280
- export interface PopoverContentTypeProps
281
- extends Omit<PopoverContentImplProps, 'trapFocus' | 'disableOutsidePointerEvents'> {}
286
+ export interface PopoverContentTypeProps extends Omit<
287
+ PopoverContentImplProps,
288
+ 'trapFocus' | 'disableOutsidePointerEvents'
289
+ > {}
282
290
 
283
291
  const PopoverContentModal = forwardRef<PopoverContentTypeElement, PopoverContentTypeProps>(
284
292
  (props: ScopedProps<PopoverContentTypeProps>, forwardedRef) => {
@@ -300,8 +308,7 @@ const PopoverContentModal = forwardRef<PopoverContentTypeElement, PopoverContent
300
308
  <PopoverContentImpl
301
309
  {...props}
302
310
  ref={composedRefs}
303
- // we make sure we're not trapping once it's been closed
304
- // (closed !== unmounted when animating out)
311
+ // Make sure we're not trapping once it's been closed (closed !== unmounted when animating out).
305
312
  trapFocus={context.open}
306
313
  disableOutsidePointerEvents
307
314
  onCloseAutoFocus={composeEventHandlers(props.onCloseAutoFocus, (event) => {
@@ -390,33 +397,31 @@ const PopoverContentNonModal = forwardRef<PopoverContentTypeElement, PopoverCont
390
397
  },
391
398
  );
392
399
 
393
- /* ----------------------------------------------------------------------------------------------- */
394
-
395
- type PopoverContentImplElement = ElementRef<typeof PopperPrimitive.Content>;
400
+ type PopoverContentImplElement = ComponentRef<typeof PopperPrimitive.Content>;
396
401
  type FocusScopeProps = ComponentPropsWithoutRef<typeof FocusScope>;
397
402
  type DismissableLayerProps = ComponentPropsWithoutRef<typeof DismissableLayer>;
398
403
  type PopperContentProps = ThemedClassName<ComponentPropsWithoutRef<typeof PopperPrimitive.Content>>;
399
- interface PopoverContentImplProps
400
- extends Omit<PopperContentProps, 'onPlaced'>,
401
- Omit<DismissableLayerProps, 'onDismiss'> {
402
- /**
403
- * Whether focus should be trapped within the `Popover`
404
- * (default: false)
405
- */
406
- trapFocus?: FocusScopeProps['trapped'];
407
-
408
- /**
409
- * Event handler called when auto-focusing on open.
410
- * Can be prevented.
411
- */
412
- onOpenAutoFocus?: FocusScopeProps['onMountAutoFocus'];
413
404
 
414
- /**
415
- * Event handler called when auto-focusing on close.
416
- * Can be prevented.
417
- */
418
- onCloseAutoFocus?: FocusScopeProps['onUnmountAutoFocus'];
419
- }
405
+ type PopoverContentImplProps = Omit<PopperContentProps, 'onPlaced'> &
406
+ Omit<DismissableLayerProps, 'onDismiss'> & {
407
+ /**
408
+ * Whether focus should be trapped within the `Popover`
409
+ * (default: false)
410
+ */
411
+ trapFocus?: FocusScopeProps['trapped'];
412
+
413
+ /**
414
+ * Event handler called when auto-focusing on open.
415
+ * Can be prevented.
416
+ */
417
+ onOpenAutoFocus?: FocusScopeProps['onMountAutoFocus'];
418
+
419
+ /**
420
+ * Event handler called when auto-focusing on close.
421
+ * Can be prevented.
422
+ */
423
+ onCloseAutoFocus?: FocusScopeProps['onUnmountAutoFocus'];
424
+ };
420
425
 
421
426
  const PopoverContentImpl = forwardRef<PopoverContentImplElement, PopoverContentImplProps>(
422
427
  (props: ScopedProps<PopoverContentImplProps>, forwardedRef) => {
@@ -431,6 +436,7 @@ const PopoverContentImpl = forwardRef<PopoverContentImplElement, PopoverContentI
431
436
  onFocusOutside,
432
437
  onInteractOutside,
433
438
  collisionPadding = 8,
439
+ collisionBoundary,
434
440
  classNames,
435
441
  ...contentProps
436
442
  } = props;
@@ -440,10 +446,23 @@ const PopoverContentImpl = forwardRef<PopoverContentImplElement, PopoverContentI
440
446
  const elevation = useElevationContext();
441
447
  const safeCollisionPadding = useSafeCollisionPadding(collisionPadding);
442
448
 
443
- // Make sure the whole tree has focus guards as our `Popover` may be
444
- // the last element in the DOM (because of the `Portal`)
449
+ // Make sure the whole tree has focus guards as our `Popover` may be the last element in the DOM (because of the `Portal`)
445
450
  useFocusGuards();
446
451
 
452
+ // Check for the closest annotated collision boundary in the DOM tree.
453
+ const computedCollisionBoundary = useMemo(() => {
454
+ const closestBoundary = context.triggerRef.current?.closest(
455
+ '[data-popover-collision-boundary]',
456
+ ) as HTMLElement | null;
457
+ return closestBoundary
458
+ ? Array.isArray(collisionBoundary)
459
+ ? [closestBoundary, ...collisionBoundary]
460
+ : collisionBoundary
461
+ ? [closestBoundary, collisionBoundary]
462
+ : [closestBoundary]
463
+ : collisionBoundary;
464
+ }, [context.open, collisionBoundary, context.triggerRef.current]);
465
+
447
466
  return (
448
467
  <FocusScope
449
468
  asChild
@@ -468,11 +487,12 @@ const PopoverContentImpl = forwardRef<PopoverContentImplElement, PopoverContentI
468
487
  {...popperScope}
469
488
  {...contentProps}
470
489
  collisionPadding={safeCollisionPadding}
471
- className={tx('popover.content', 'popover', { elevation }, classNames)}
490
+ collisionBoundary={computedCollisionBoundary}
491
+ className={tx('popover.content', { elevation }, classNames)}
472
492
  ref={forwardedRef}
473
493
  style={{
474
494
  ...contentProps.style,
475
- // re-namespace exposed content custom properties
495
+ // Re-namespace exposed content custom properties.
476
496
  ...{
477
497
  '--radix-popover-content-transform-origin': 'var(--radix-popper-transform-origin)',
478
498
  '--radix-popover-content-available-width': 'var(--radix-popper-available-width)',
@@ -488,14 +508,14 @@ const PopoverContentImpl = forwardRef<PopoverContentImplElement, PopoverContentI
488
508
  },
489
509
  );
490
510
 
491
- /* -------------------------------------------------------------------------------------------------
492
- * PopoverClose
493
- * ----------------------------------------------------------------------------------------------- */
511
+ //
512
+ // PopoverClose
513
+ //
494
514
 
495
515
  const CLOSE_NAME = 'PopoverClose';
496
516
 
497
- type PopoverCloseElement = ElementRef<typeof Primitive.button>;
498
- interface PopoverCloseProps extends PrimitiveButtonProps {}
517
+ type PopoverCloseElement = ComponentRef<typeof Primitive.button>;
518
+ type PopoverCloseProps = PrimitiveButtonProps;
499
519
 
500
520
  const PopoverClose = forwardRef<PopoverCloseElement, PopoverCloseProps>(
501
521
  (props: ScopedProps<PopoverCloseProps>, forwardedRef) => {
@@ -514,15 +534,15 @@ const PopoverClose = forwardRef<PopoverCloseElement, PopoverCloseProps>(
514
534
 
515
535
  PopoverClose.displayName = CLOSE_NAME;
516
536
 
517
- /* -------------------------------------------------------------------------------------------------
518
- * PopoverArrow
519
- * ----------------------------------------------------------------------------------------------- */
537
+ //
538
+ // PopoverArrow
539
+ //
520
540
 
521
541
  const ARROW_NAME = 'PopoverArrow';
522
542
 
523
- type PopoverArrowElement = ElementRef<typeof PopperPrimitive.Arrow>;
543
+ type PopoverArrowElement = ComponentRef<typeof PopperPrimitive.Arrow>;
524
544
  type PopperArrowProps = ThemedClassName<ComponentPropsWithoutRef<typeof PopperPrimitive.Arrow>>;
525
- interface PopoverArrowProps extends PopperArrowProps {}
545
+ type PopoverArrowProps = PopperArrowProps;
526
546
 
527
547
  const PopoverArrow = forwardRef<PopoverArrowElement, PopoverArrowProps>(
528
548
  (props: ScopedProps<PopoverArrowProps>, forwardedRef) => {
@@ -533,7 +553,7 @@ const PopoverArrow = forwardRef<PopoverArrowElement, PopoverArrowProps>(
533
553
  <PopperPrimitive.Arrow
534
554
  {...popperScope}
535
555
  {...arrowProps}
536
- className={tx('popover.arrow', 'popover__arrow', {}, classNames)}
556
+ className={tx('popover.arrow', {}, classNames)}
537
557
  ref={forwardedRef}
538
558
  />
539
559
  );
@@ -542,9 +562,9 @@ const PopoverArrow = forwardRef<PopoverArrowElement, PopoverArrowProps>(
542
562
 
543
563
  PopoverArrow.displayName = ARROW_NAME;
544
564
 
545
- /* -------------------------------------------------------------------------------------------------
546
- * PopoverViewport
547
- * ----------------------------------------------------------------------------------------------- */
565
+ //
566
+ // PopoverViewport
567
+ //
548
568
 
549
569
  type PopoverViewportProps = ThemedClassName<ComponentPropsWithRef<typeof Primitive.div>> & {
550
570
  asChild?: boolean;
@@ -555,25 +575,27 @@ type PopoverViewportProps = ThemedClassName<ComponentPropsWithRef<typeof Primiti
555
575
  const PopoverViewport = forwardRef<HTMLDivElement, PopoverViewportProps>(
556
576
  ({ classNames, asChild, constrainInline = true, constrainBlock = true, children, ...props }, forwardedRef) => {
557
577
  const { tx } = useThemeContext();
558
- const Root = asChild ? Slot : Primitive.div;
578
+ const Comp = asChild ? Slot : Primitive.div;
559
579
  return (
560
- <Root
580
+ <Comp
561
581
  {...props}
562
- className={tx('popover.viewport', 'popover__viewport', { constrainInline, constrainBlock }, classNames)}
582
+ className={tx('popover.viewport', { constrainInline, constrainBlock }, classNames)}
563
583
  ref={forwardedRef}
564
584
  >
565
585
  {children}
566
- </Root>
586
+ </Comp>
567
587
  );
568
588
  },
569
589
  );
570
590
 
571
- /* ----------------------------------------------------------------------------------------------- */
572
-
573
591
  const getState = (open: boolean) => (open ? 'open' : 'closed');
574
592
 
575
593
  type PopoverContentInteractOutsideEvent = Parameters<NonNullable<PopoverContentProps['onInteractOutside']>>[0];
576
594
 
595
+ //
596
+ // Popver
597
+ //
598
+
577
599
  export const Popover = {
578
600
  Root: PopoverRoot,
579
601
  Anchor: PopoverAnchor,