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

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 (475) hide show
  1. package/dist/lib/browser/chunk-OCVRIJCH.mjs +848 -0
  2. package/dist/lib/browser/chunk-OCVRIJCH.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +4115 -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/node-esm/chunk-QUD5P3RU.mjs +850 -0
  9. package/dist/lib/node-esm/chunk-QUD5P3RU.mjs.map +7 -0
  10. package/dist/lib/node-esm/index.mjs +4115 -61
  11. package/dist/lib/node-esm/index.mjs.map +4 -4
  12. package/dist/lib/node-esm/meta.json +1 -1
  13. package/dist/lib/node-esm/testing/index.mjs +112 -61
  14. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  15. package/dist/types/src/components/Avatars/Avatar.d.ts +2 -2
  16. package/dist/types/src/components/Avatars/Avatar.d.ts.map +1 -1
  17. package/dist/types/src/components/Avatars/Avatar.stories.d.ts +5 -31
  18. package/dist/types/src/components/Avatars/Avatar.stories.d.ts.map +1 -1
  19. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts +5 -11
  20. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts.map +1 -1
  21. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts +1 -1
  22. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
  23. package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts +8 -20
  24. package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts.map +1 -1
  25. package/dist/types/src/components/{Buttons → Button}/Button.d.ts +4 -4
  26. package/dist/types/src/components/Button/Button.d.ts.map +1 -0
  27. package/dist/types/src/components/Button/Button.stories.d.ts +17 -0
  28. package/dist/types/src/components/Button/Button.stories.d.ts.map +1 -0
  29. package/dist/types/src/components/{Buttons → Button}/IconButton.d.ts +4 -4
  30. package/dist/types/src/components/Button/IconButton.d.ts.map +1 -0
  31. package/dist/types/src/components/Button/IconButton.stories.d.ts +16 -0
  32. package/dist/types/src/components/Button/IconButton.stories.d.ts.map +1 -0
  33. package/dist/types/src/components/{Buttons → Button}/Toggle.d.ts +2 -2
  34. package/dist/types/src/components/Button/Toggle.d.ts.map +1 -0
  35. package/dist/types/src/components/Button/Toggle.stories.d.ts +16 -0
  36. package/dist/types/src/components/Button/Toggle.stories.d.ts.map +1 -0
  37. package/dist/types/src/components/Button/ToggleGroup.d.ts +27 -0
  38. package/dist/types/src/components/Button/ToggleGroup.d.ts.map +1 -0
  39. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts +27 -0
  40. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts.map +1 -0
  41. package/dist/types/src/components/Button/index.d.ts.map +1 -0
  42. package/dist/types/src/components/Card/Card.d.ts +120 -0
  43. package/dist/types/src/components/Card/Card.d.ts.map +1 -0
  44. package/dist/types/src/components/Card/Card.stories.d.ts +21 -0
  45. package/dist/types/src/components/Card/Card.stories.d.ts.map +1 -0
  46. package/dist/types/src/components/Card/index.d.ts +2 -0
  47. package/dist/types/src/components/Card/index.d.ts.map +1 -0
  48. package/dist/types/src/components/Clipboard/ClipboardProvider.d.ts.map +1 -1
  49. package/dist/types/src/components/Clipboard/CopyButton.d.ts +1 -1
  50. package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -1
  51. package/dist/types/src/components/Clipboard/index.d.ts +10 -1
  52. package/dist/types/src/components/Clipboard/index.d.ts.map +1 -1
  53. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts +1 -1
  54. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts.map +1 -1
  55. package/dist/types/src/components/Dialog/AlertDialog.d.ts +51 -0
  56. package/dist/types/src/components/Dialog/AlertDialog.d.ts.map +1 -0
  57. package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts +11 -0
  58. package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts.map +1 -0
  59. package/dist/types/src/components/Dialog/Dialog.d.ts +64 -0
  60. package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -0
  61. package/dist/types/src/components/Dialog/Dialog.stories.d.ts +25 -0
  62. package/dist/types/src/components/Dialog/Dialog.stories.d.ts.map +1 -0
  63. package/dist/types/src/components/Dialog/index.d.ts.map +1 -0
  64. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts +1 -1
  65. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts.map +1 -1
  66. package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts +11 -0
  67. package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts.map +1 -0
  68. package/dist/types/src/components/ErrorFallback/ErrorFallback.stories.d.ts +7 -0
  69. package/dist/types/src/components/ErrorFallback/ErrorFallback.stories.d.ts.map +1 -0
  70. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts +19 -0
  71. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts.map +1 -0
  72. package/dist/types/src/components/ErrorFallback/ThrowError.d.ts +9 -0
  73. package/dist/types/src/components/ErrorFallback/ThrowError.d.ts.map +1 -0
  74. package/dist/types/src/components/ErrorFallback/index.d.ts +5 -0
  75. package/dist/types/src/components/ErrorFallback/index.d.ts.map +1 -0
  76. package/dist/types/src/components/Focus/Focus.d.ts +36 -0
  77. package/dist/types/src/components/Focus/Focus.d.ts.map +1 -0
  78. package/dist/types/src/components/Focus/Focus.stories.d.ts +9 -0
  79. package/dist/types/src/components/Focus/Focus.stories.d.ts.map +1 -0
  80. package/dist/types/src/components/Focus/index.d.ts +2 -0
  81. package/dist/types/src/components/Focus/index.d.ts.map +1 -0
  82. package/dist/types/src/components/Icon/Icon.d.ts +5 -2
  83. package/dist/types/src/components/Icon/Icon.d.ts.map +1 -1
  84. package/dist/types/src/components/Icon/Icon.stories.d.ts +25 -0
  85. package/dist/types/src/components/Icon/Icon.stories.d.ts.map +1 -0
  86. package/dist/types/src/components/Image/Image.d.ts +14 -0
  87. package/dist/types/src/components/Image/Image.d.ts.map +1 -0
  88. package/dist/types/src/components/Image/Image.stories.d.ts +33 -0
  89. package/dist/types/src/components/Image/Image.stories.d.ts.map +1 -0
  90. package/dist/types/src/components/Image/index.d.ts +2 -0
  91. package/dist/types/src/components/Image/index.d.ts.map +1 -0
  92. package/dist/types/src/components/Input/Input.d.ts +8 -10
  93. package/dist/types/src/components/Input/Input.d.ts.map +1 -1
  94. package/dist/types/src/components/Input/Input.stories.d.ts +17 -18
  95. package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
  96. package/dist/types/src/components/Link/Link.stories.d.ts +8 -8
  97. package/dist/types/src/components/Link/Link.stories.d.ts.map +1 -1
  98. package/dist/types/src/components/{Lists → List}/List.d.ts +8 -6
  99. package/dist/types/src/components/List/List.d.ts.map +1 -0
  100. package/dist/types/src/components/List/List.stories.d.ts +16 -0
  101. package/dist/types/src/components/List/List.stories.d.ts.map +1 -0
  102. package/dist/types/src/components/List/ListDropIndicator.d.ts.map +1 -0
  103. package/dist/types/src/components/{Lists → List}/Tree.d.ts +1 -1
  104. package/dist/types/src/components/List/Tree.d.ts.map +1 -0
  105. package/dist/types/src/components/List/Tree.stories.d.ts +15 -0
  106. package/dist/types/src/components/List/Tree.stories.d.ts.map +1 -0
  107. package/dist/types/src/components/List/TreeDropIndicator.d.ts.map +1 -0
  108. package/dist/types/src/components/{Lists → List}/Treegrid.d.ts +6 -10
  109. package/dist/types/src/components/List/Treegrid.d.ts.map +1 -0
  110. package/dist/types/src/components/List/Treegrid.stories.d.ts +12 -0
  111. package/dist/types/src/components/List/Treegrid.stories.d.ts.map +1 -0
  112. package/dist/types/src/components/List/index.d.ts.map +1 -0
  113. package/dist/types/src/components/Main/Main.d.ts +18 -28
  114. package/dist/types/src/components/Main/Main.d.ts.map +1 -1
  115. package/dist/types/src/components/Main/Main.stories.d.ts +6 -10
  116. package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
  117. package/dist/types/src/components/{Menus → Menu}/ContextMenu.d.ts +6 -6
  118. package/dist/types/src/components/Menu/ContextMenu.d.ts.map +1 -0
  119. package/dist/types/src/components/Menu/ContextMenu.stories.d.ts +12 -0
  120. package/dist/types/src/components/Menu/ContextMenu.stories.d.ts.map +1 -0
  121. package/dist/types/src/components/Menu/DropdownMenu.d.ts +113 -0
  122. package/dist/types/src/components/Menu/DropdownMenu.d.ts.map +1 -0
  123. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts +28 -0
  124. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts.map +1 -0
  125. package/dist/types/src/components/Menu/index.d.ts.map +1 -0
  126. package/dist/types/src/components/Message/Message.d.ts +1 -1
  127. package/dist/types/src/components/Message/Message.d.ts.map +1 -1
  128. package/dist/types/src/components/Message/Message.stories.d.ts +12 -22
  129. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
  130. package/dist/types/src/components/Popover/Popover.d.ts +34 -25
  131. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  132. package/dist/types/src/components/Popover/Popover.stories.d.ts +6 -34
  133. package/dist/types/src/components/Popover/Popover.stories.d.ts.map +1 -1
  134. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +27 -27
  135. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  136. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +50 -27
  137. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
  138. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +60 -0
  139. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -0
  140. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts +23 -0
  141. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts.map +1 -0
  142. package/dist/types/src/components/ScrollContainer/index.d.ts +2 -0
  143. package/dist/types/src/components/ScrollContainer/index.d.ts.map +1 -0
  144. package/dist/types/src/components/Select/Select.d.ts +10 -10
  145. package/dist/types/src/components/Select/Select.d.ts.map +1 -1
  146. package/dist/types/src/components/Select/Select.stories.d.ts +6 -11
  147. package/dist/types/src/components/Select/Select.stories.d.ts.map +1 -1
  148. package/dist/types/src/components/Separator/Separator.d.ts +4 -4
  149. package/dist/types/src/components/Separator/Separator.d.ts.map +1 -1
  150. package/dist/types/src/components/Skeleton/Skeleton.d.ts +12 -0
  151. package/dist/types/src/components/Skeleton/Skeleton.d.ts.map +1 -0
  152. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts +17 -0
  153. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts.map +1 -0
  154. package/dist/types/src/components/Skeleton/index.d.ts +2 -0
  155. package/dist/types/src/components/Skeleton/index.d.ts.map +1 -0
  156. package/dist/types/src/components/Splitter/Splitter.d.ts +34 -0
  157. package/dist/types/src/components/Splitter/Splitter.d.ts.map +1 -0
  158. package/dist/types/src/components/Splitter/Splitter.stories.d.ts +7 -0
  159. package/dist/types/src/components/Splitter/Splitter.stories.d.ts.map +1 -0
  160. package/dist/types/src/components/Splitter/index.d.ts +2 -0
  161. package/dist/types/src/components/Splitter/index.d.ts.map +1 -0
  162. package/dist/types/src/components/Status/Status.d.ts +3 -4
  163. package/dist/types/src/components/Status/Status.d.ts.map +1 -1
  164. package/dist/types/src/components/Status/Status.stories.d.ts +6 -10
  165. package/dist/types/src/components/Status/Status.stories.d.ts.map +1 -1
  166. package/dist/types/src/components/Tag/Tag.d.ts +1 -1
  167. package/dist/types/src/components/Tag/Tag.d.ts.map +1 -1
  168. package/dist/types/src/components/Tag/Tag.stories.d.ts +8 -13
  169. package/dist/types/src/components/Tag/Tag.stories.d.ts.map +1 -1
  170. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts +4 -4
  171. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  172. package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts +12 -0
  173. package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts.map +1 -0
  174. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +1 -8
  175. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
  176. package/dist/types/src/components/ThemeProvider/index.d.ts +2 -1
  177. package/dist/types/src/components/ThemeProvider/index.d.ts.map +1 -1
  178. package/dist/types/src/components/Toast/Toast.d.ts +19 -19
  179. package/dist/types/src/components/Toast/Toast.d.ts.map +1 -1
  180. package/dist/types/src/components/Toast/Toast.stories.d.ts +6 -44
  181. package/dist/types/src/components/Toast/Toast.stories.d.ts.map +1 -1
  182. package/dist/types/src/components/Toolbar/Toolbar.d.ts +40 -22
  183. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  184. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts +6 -50
  185. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
  186. package/dist/types/src/components/Tooltip/Tooltip.d.ts +10 -12
  187. package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
  188. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts +10 -63
  189. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
  190. package/dist/types/src/components/index.d.ts +14 -8
  191. package/dist/types/src/components/index.d.ts.map +1 -1
  192. package/dist/types/src/exemplars/generics.stories.d.ts +19 -0
  193. package/dist/types/src/exemplars/generics.stories.d.ts.map +1 -0
  194. package/dist/types/src/exemplars/slot.stories.d.ts +15 -0
  195. package/dist/types/src/exemplars/slot.stories.d.ts.map +1 -0
  196. package/dist/types/src/exemplars/tabster.stories.d.ts +8 -0
  197. package/dist/types/src/exemplars/tabster.stories.d.ts.map +1 -0
  198. package/dist/types/src/exemplars/virtualizer.stories.d.ts +11 -0
  199. package/dist/types/src/exemplars/virtualizer.stories.d.ts.map +1 -0
  200. package/dist/types/src/hooks/index.d.ts +1 -0
  201. package/dist/types/src/hooks/index.d.ts.map +1 -1
  202. package/dist/types/src/hooks/useDensityContext.d.ts +2 -2
  203. package/dist/types/src/hooks/useDensityContext.d.ts.map +1 -1
  204. package/dist/types/src/hooks/useElevationContext.d.ts +1 -1
  205. package/dist/types/src/hooks/useElevationContext.d.ts.map +1 -1
  206. package/dist/types/src/hooks/useSafeArea.d.ts.map +1 -1
  207. package/dist/types/src/hooks/useVisualViewport.d.ts +2 -2
  208. package/dist/types/src/hooks/useVisualViewport.d.ts.map +1 -1
  209. package/dist/types/src/index.d.ts +2 -1
  210. package/dist/types/src/index.d.ts.map +1 -1
  211. package/dist/types/src/playground/Controls.stories.d.ts +5 -9
  212. package/dist/types/src/playground/Controls.stories.d.ts.map +1 -1
  213. package/dist/types/src/playground/Custom.stories.d.ts +12 -4
  214. package/dist/types/src/playground/Custom.stories.d.ts.map +1 -1
  215. package/dist/types/src/playground/Typography.stories.d.ts +5 -11
  216. package/dist/types/src/playground/Typography.stories.d.ts.map +1 -1
  217. package/dist/types/src/primitives/Column/Column.d.ts +33 -0
  218. package/dist/types/src/primitives/Column/Column.d.ts.map +1 -0
  219. package/dist/types/src/primitives/Column/Column.stories.d.ts +25 -0
  220. package/dist/types/src/primitives/Column/Column.stories.d.ts.map +1 -0
  221. package/dist/types/src/primitives/Column/index.d.ts +2 -0
  222. package/dist/types/src/primitives/Column/index.d.ts.map +1 -0
  223. package/dist/types/src/primitives/Container/Container.d.ts +7 -0
  224. package/dist/types/src/primitives/Container/Container.d.ts.map +1 -0
  225. package/dist/types/src/primitives/Container/Container.stories.d.ts +6 -0
  226. package/dist/types/src/primitives/Container/Container.stories.d.ts.map +1 -0
  227. package/dist/types/src/primitives/Container/index.d.ts +2 -0
  228. package/dist/types/src/primitives/Container/index.d.ts.map +1 -0
  229. package/dist/types/src/primitives/Flex/Flex.d.ts +11 -0
  230. package/dist/types/src/primitives/Flex/Flex.d.ts.map +1 -0
  231. package/dist/types/src/primitives/Flex/Flex.stories.d.ts +8 -0
  232. package/dist/types/src/primitives/Flex/Flex.stories.d.ts.map +1 -0
  233. package/dist/types/src/primitives/Flex/index.d.ts +2 -0
  234. package/dist/types/src/primitives/Flex/index.d.ts.map +1 -0
  235. package/dist/types/src/primitives/Grid/Grid.d.ts +10 -0
  236. package/dist/types/src/primitives/Grid/Grid.d.ts.map +1 -0
  237. package/dist/types/src/primitives/Grid/Grid.stories.d.ts +8 -0
  238. package/dist/types/src/primitives/Grid/Grid.stories.d.ts.map +1 -0
  239. package/dist/types/src/primitives/Grid/index.d.ts +2 -0
  240. package/dist/types/src/primitives/Grid/index.d.ts.map +1 -0
  241. package/dist/types/src/primitives/Panel/Panel.d.ts +35 -0
  242. package/dist/types/src/primitives/Panel/Panel.d.ts.map +1 -0
  243. package/dist/types/src/primitives/Panel/Panel.stories.d.ts +6 -0
  244. package/dist/types/src/primitives/Panel/Panel.stories.d.ts.map +1 -0
  245. package/dist/types/src/primitives/Panel/index.d.ts +2 -0
  246. package/dist/types/src/primitives/Panel/index.d.ts.map +1 -0
  247. package/dist/types/src/primitives/index.d.ts +6 -0
  248. package/dist/types/src/primitives/index.d.ts.map +1 -0
  249. package/dist/types/src/testing/Loading.d.ts +9 -0
  250. package/dist/types/src/testing/Loading.d.ts.map +1 -0
  251. package/dist/types/src/testing/decorators/index.d.ts +2 -1
  252. package/dist/types/src/testing/decorators/index.d.ts.map +1 -1
  253. package/dist/types/src/testing/decorators/withLayout.d.ts +15 -0
  254. package/dist/types/src/testing/decorators/withLayout.d.ts.map +1 -0
  255. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts +12 -0
  256. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts.map +1 -0
  257. package/dist/types/src/testing/decorators/withTheme.d.ts +5 -1
  258. package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
  259. package/dist/types/src/testing/index.d.ts +1 -0
  260. package/dist/types/src/testing/index.d.ts.map +1 -1
  261. package/dist/types/src/translations.d.ts +11 -0
  262. package/dist/types/src/translations.d.ts.map +1 -0
  263. package/dist/types/src/util/index.d.ts +2 -1
  264. package/dist/types/src/util/index.d.ts.map +1 -1
  265. package/dist/types/src/util/usePx.d.ts +8 -0
  266. package/dist/types/src/util/usePx.d.ts.map +1 -0
  267. package/dist/types/tsconfig.tsbuildinfo +1 -1
  268. package/package.json +45 -32
  269. package/src/components/Avatars/Avatar.stories.tsx +23 -16
  270. package/src/components/Avatars/Avatar.tsx +10 -18
  271. package/src/components/Avatars/AvatarGroup.stories.tsx +11 -8
  272. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +19 -15
  273. package/src/components/Breadcrumb/Breadcrumb.tsx +14 -40
  274. package/src/components/{Buttons → Button}/Button.stories.tsx +11 -13
  275. package/src/components/{Buttons → Button}/Button.tsx +12 -26
  276. package/src/components/{Buttons → Button}/IconButton.stories.tsx +18 -13
  277. package/src/components/{Buttons → Button}/IconButton.tsx +21 -16
  278. package/src/components/Button/Toggle.stories.tsx +36 -0
  279. package/src/components/{Buttons → Button}/Toggle.tsx +4 -4
  280. package/src/components/{Buttons → Button}/ToggleGroup.stories.tsx +14 -12
  281. package/src/components/Button/ToggleGroup.tsx +50 -0
  282. package/src/components/Card/Card.stories.tsx +151 -0
  283. package/src/components/Card/Card.tsx +493 -0
  284. package/src/components/Card/index.ts +5 -0
  285. package/src/components/Clipboard/ClipboardProvider.tsx +1 -1
  286. package/src/components/Clipboard/CopyButton.tsx +9 -9
  287. package/src/components/DensityProvider/DensityProvider.tsx +2 -2
  288. package/src/components/Dialog/AlertDialog.stories.tsx +68 -0
  289. package/src/components/Dialog/AlertDialog.tsx +213 -0
  290. package/src/components/Dialog/Dialog.stories.tsx +177 -0
  291. package/src/components/Dialog/Dialog.tsx +285 -0
  292. package/src/components/ElevationProvider/ElevationProvider.tsx +2 -2
  293. package/src/components/ErrorFallback/ErrorFallback.stories.tsx +45 -0
  294. package/src/components/ErrorFallback/ErrorFallback.tsx +70 -0
  295. package/src/components/ErrorFallback/ErrorStack.tsx +114 -0
  296. package/src/components/ErrorFallback/ThrowError.tsx +37 -0
  297. package/src/components/ErrorFallback/index.ts +9 -0
  298. package/src/components/Focus/AUDIT.md +43 -0
  299. package/src/components/Focus/Focus.stories.tsx +230 -0
  300. package/src/components/Focus/Focus.tsx +201 -0
  301. package/src/components/Focus/index.ts +5 -0
  302. package/src/components/Icon/Icon.stories.tsx +143 -0
  303. package/src/components/Icon/Icon.tsx +6 -2
  304. package/src/components/Image/Image.stories.tsx +86 -0
  305. package/src/components/Image/Image.tsx +223 -0
  306. package/src/components/Image/index.ts +5 -0
  307. package/src/components/Input/Input.stories.tsx +27 -49
  308. package/src/components/Input/Input.tsx +51 -87
  309. package/src/components/Link/Link.stories.tsx +11 -8
  310. package/src/components/Link/Link.tsx +2 -2
  311. package/src/components/{Lists → List}/List.stories.tsx +45 -47
  312. package/src/components/{Lists → List}/List.tsx +30 -35
  313. package/src/components/{Lists → List}/ListDropIndicator.tsx +7 -7
  314. package/src/components/{Lists → List}/Tree.stories.tsx +15 -13
  315. package/src/components/{Lists → List}/Tree.tsx +3 -3
  316. package/src/components/{Lists → List}/TreeDropIndicator.tsx +7 -7
  317. package/src/components/{Lists → List}/Treegrid.stories.tsx +39 -34
  318. package/src/components/List/Treegrid.tsx +188 -0
  319. package/src/components/Main/Main.stories.tsx +52 -27
  320. package/src/components/Main/Main.tsx +176 -105
  321. package/src/components/{Menus → Menu}/ContextMenu.stories.tsx +12 -10
  322. package/src/components/{Menus → Menu}/ContextMenu.tsx +10 -33
  323. package/src/components/{Menus → Menu}/DropdownMenu.stories.tsx +13 -11
  324. package/src/components/{Menus → Menu}/DropdownMenu.tsx +157 -120
  325. package/src/components/Message/Message.stories.tsx +36 -18
  326. package/src/components/Message/Message.tsx +43 -34
  327. package/src/components/Popover/Popover.stories.tsx +18 -16
  328. package/src/components/Popover/Popover.tsx +124 -102
  329. package/src/components/ScrollArea/ScrollArea.stories.tsx +224 -32
  330. package/src/components/ScrollArea/ScrollArea.tsx +97 -79
  331. package/src/components/ScrollArea/index.ts +1 -1
  332. package/src/components/ScrollContainer/ScrollContainer.stories.tsx +91 -0
  333. package/src/components/ScrollContainer/ScrollContainer.tsx +347 -0
  334. package/src/components/ScrollContainer/index.ts +5 -0
  335. package/src/components/Select/Select.stories.tsx +19 -17
  336. package/src/components/Select/Select.tsx +16 -32
  337. package/src/components/Separator/Separator.tsx +5 -8
  338. package/src/components/Skeleton/Skeleton.stories.tsx +51 -0
  339. package/src/components/Skeleton/Skeleton.tsx +26 -0
  340. package/src/components/Skeleton/index.ts +5 -0
  341. package/src/components/Splitter/Splitter.stories.tsx +83 -0
  342. package/src/components/Splitter/Splitter.tsx +127 -0
  343. package/src/components/Splitter/index.ts +5 -0
  344. package/src/components/Status/Status.stories.tsx +29 -23
  345. package/src/components/Status/Status.tsx +10 -7
  346. package/src/components/Tag/Tag.stories.tsx +16 -13
  347. package/src/components/Tag/Tag.tsx +3 -8
  348. package/src/components/ThemeProvider/ThemeProvider.stories.tsx +31 -0
  349. package/src/components/ThemeProvider/ThemeProvider.tsx +12 -11
  350. package/src/components/ThemeProvider/TranslationsProvider.tsx +3 -18
  351. package/src/components/ThemeProvider/index.ts +3 -3
  352. package/src/components/Toast/Toast.stories.tsx +13 -11
  353. package/src/components/Toast/Toast.tsx +23 -42
  354. package/src/components/Toolbar/Toolbar.stories.tsx +22 -21
  355. package/src/components/Toolbar/Toolbar.tsx +187 -13
  356. package/src/components/Tooltip/Tooltip.stories.tsx +35 -30
  357. package/src/components/Tooltip/Tooltip.tsx +44 -41
  358. package/src/components/index.ts +15 -9
  359. package/src/exemplars/generics.stories.tsx +41 -0
  360. package/src/exemplars/slot.stories.tsx +117 -0
  361. package/src/exemplars/tabster.stories.tsx +127 -0
  362. package/src/exemplars/virtualizer.stories.tsx +137 -0
  363. package/src/hooks/index.ts +1 -0
  364. package/src/hooks/useDensityContext.ts +3 -3
  365. package/src/hooks/useElevationContext.ts +1 -1
  366. package/src/hooks/useSafeArea.ts +3 -2
  367. package/src/hooks/useSafeCollisionPadding.ts +1 -1
  368. package/src/hooks/useVisualViewport.ts +4 -4
  369. package/src/index.ts +2 -1
  370. package/src/playground/Controls.stories.tsx +20 -24
  371. package/src/playground/Custom.stories.tsx +20 -34
  372. package/src/playground/Typography.stories.tsx +11 -9
  373. package/src/primitives/Column/AUDIT.md +148 -0
  374. package/src/primitives/Column/Column.stories.tsx +181 -0
  375. package/src/primitives/Column/Column.tsx +165 -0
  376. package/src/primitives/Column/index.ts +5 -0
  377. package/src/primitives/Container/Container.stories.tsx +29 -0
  378. package/src/primitives/Container/Container.tsx +19 -0
  379. package/src/primitives/Container/index.ts +5 -0
  380. package/src/primitives/Flex/Flex.stories.tsx +57 -0
  381. package/src/primitives/Flex/Flex.tsx +27 -0
  382. package/src/primitives/Flex/index.ts +5 -0
  383. package/src/primitives/Grid/Grid.stories.tsx +56 -0
  384. package/src/primitives/Grid/Grid.tsx +30 -0
  385. package/src/primitives/Grid/index.ts +5 -0
  386. package/src/primitives/Panel/Panel.stories.tsx +68 -0
  387. package/src/primitives/Panel/Panel.tsx +120 -0
  388. package/src/primitives/Panel/index.ts +5 -0
  389. package/src/primitives/index.ts +9 -0
  390. package/src/testing/Loading.tsx +47 -0
  391. package/src/testing/decorators/index.ts +2 -1
  392. package/src/testing/decorators/withLayout.tsx +77 -0
  393. package/src/testing/decorators/withLayoutVariants.tsx +48 -0
  394. package/src/testing/decorators/withTheme.tsx +37 -0
  395. package/src/testing/index.ts +2 -0
  396. package/src/translations.ts +19 -0
  397. package/src/util/index.ts +3 -1
  398. package/src/util/usePx.ts +62 -0
  399. package/dist/lib/browser/chunk-T6YPS45E.mjs +0 -4376
  400. package/dist/lib/browser/chunk-T6YPS45E.mjs.map +0 -7
  401. package/dist/lib/node-esm/chunk-TYVQJ4KW.mjs +0 -4378
  402. package/dist/lib/node-esm/chunk-TYVQJ4KW.mjs.map +0 -7
  403. package/dist/types/src/components/AnchoredOverflow/AnchoredOverflow.d.ts +0 -15
  404. package/dist/types/src/components/AnchoredOverflow/AnchoredOverflow.d.ts.map +0 -1
  405. package/dist/types/src/components/AnchoredOverflow/index.d.ts +0 -2
  406. package/dist/types/src/components/AnchoredOverflow/index.d.ts.map +0 -1
  407. package/dist/types/src/components/Buttons/Button.d.ts.map +0 -1
  408. package/dist/types/src/components/Buttons/Button.stories.d.ts +0 -12
  409. package/dist/types/src/components/Buttons/Button.stories.d.ts.map +0 -1
  410. package/dist/types/src/components/Buttons/IconButton.d.ts.map +0 -1
  411. package/dist/types/src/components/Buttons/IconButton.stories.d.ts +0 -22
  412. package/dist/types/src/components/Buttons/IconButton.stories.d.ts.map +0 -1
  413. package/dist/types/src/components/Buttons/Toggle.d.ts.map +0 -1
  414. package/dist/types/src/components/Buttons/Toggle.stories.d.ts +0 -19
  415. package/dist/types/src/components/Buttons/Toggle.stories.d.ts.map +0 -1
  416. package/dist/types/src/components/Buttons/ToggleGroup.d.ts +0 -28
  417. package/dist/types/src/components/Buttons/ToggleGroup.d.ts.map +0 -1
  418. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts +0 -39
  419. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts.map +0 -1
  420. package/dist/types/src/components/Buttons/index.d.ts.map +0 -1
  421. package/dist/types/src/components/Dialogs/AlertDialog.d.ts +0 -31
  422. package/dist/types/src/components/Dialogs/AlertDialog.d.ts.map +0 -1
  423. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts +0 -43
  424. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts.map +0 -1
  425. package/dist/types/src/components/Dialogs/Dialog.d.ts +0 -31
  426. package/dist/types/src/components/Dialogs/Dialog.d.ts.map +0 -1
  427. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts +0 -48
  428. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts.map +0 -1
  429. package/dist/types/src/components/Dialogs/index.d.ts.map +0 -1
  430. package/dist/types/src/components/Lists/List.d.ts.map +0 -1
  431. package/dist/types/src/components/Lists/List.stories.d.ts +0 -37
  432. package/dist/types/src/components/Lists/List.stories.d.ts.map +0 -1
  433. package/dist/types/src/components/Lists/ListDropIndicator.d.ts.map +0 -1
  434. package/dist/types/src/components/Lists/Tree.d.ts.map +0 -1
  435. package/dist/types/src/components/Lists/Tree.stories.d.ts +0 -41
  436. package/dist/types/src/components/Lists/Tree.stories.d.ts.map +0 -1
  437. package/dist/types/src/components/Lists/TreeDropIndicator.d.ts.map +0 -1
  438. package/dist/types/src/components/Lists/Treegrid.d.ts.map +0 -1
  439. package/dist/types/src/components/Lists/Treegrid.stories.d.ts +0 -10
  440. package/dist/types/src/components/Lists/Treegrid.stories.d.ts.map +0 -1
  441. package/dist/types/src/components/Lists/index.d.ts.map +0 -1
  442. package/dist/types/src/components/Menus/ContextMenu.d.ts.map +0 -1
  443. package/dist/types/src/components/Menus/ContextMenu.stories.d.ts +0 -50
  444. package/dist/types/src/components/Menus/ContextMenu.stories.d.ts.map +0 -1
  445. package/dist/types/src/components/Menus/DropdownMenu.d.ts +0 -112
  446. package/dist/types/src/components/Menus/DropdownMenu.d.ts.map +0 -1
  447. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts +0 -50
  448. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts.map +0 -1
  449. package/dist/types/src/components/Menus/index.d.ts.map +0 -1
  450. package/dist/types/src/testing/decorators/withSurfaceVariantsLayout.d.ts +0 -12
  451. package/dist/types/src/testing/decorators/withSurfaceVariantsLayout.d.ts.map +0 -1
  452. package/dist/types/src/util/ThemedClassName.d.ts +0 -5
  453. package/dist/types/src/util/ThemedClassName.d.ts.map +0 -1
  454. package/src/components/AnchoredOverflow/AnchoredOverflow.tsx +0 -59
  455. package/src/components/AnchoredOverflow/index.ts +0 -5
  456. package/src/components/Buttons/Toggle.stories.tsx +0 -33
  457. package/src/components/Buttons/ToggleGroup.tsx +0 -41
  458. package/src/components/Dialogs/AlertDialog.stories.tsx +0 -66
  459. package/src/components/Dialogs/AlertDialog.tsx +0 -172
  460. package/src/components/Dialogs/Dialog.stories.tsx +0 -65
  461. package/src/components/Dialogs/Dialog.tsx +0 -159
  462. package/src/components/Lists/Treegrid.tsx +0 -152
  463. package/src/testing/decorators/withSurfaceVariantsLayout.tsx +0 -51
  464. package/src/testing/decorators/withTheme.ts +0 -22
  465. package/src/util/ThemedClassName.ts +0 -7
  466. /package/dist/types/src/components/{Buttons → Button}/index.d.ts +0 -0
  467. /package/dist/types/src/components/{Dialogs → Dialog}/index.d.ts +0 -0
  468. /package/dist/types/src/components/{Lists → List}/ListDropIndicator.d.ts +0 -0
  469. /package/dist/types/src/components/{Lists → List}/TreeDropIndicator.d.ts +0 -0
  470. /package/dist/types/src/components/{Lists → List}/index.d.ts +0 -0
  471. /package/dist/types/src/components/{Menus → Menu}/index.d.ts +0 -0
  472. /package/src/components/{Buttons → Button}/index.ts +0 -0
  473. /package/src/components/{Dialogs → Dialog}/index.ts +0 -0
  474. /package/src/components/{Lists → List}/index.ts +0 -0
  475. /package/src/components/{Menus → Menu}/index.ts +0 -0
@@ -15,17 +15,18 @@ import { Primitive } from '@radix-ui/react-primitive';
15
15
  import { Slot } from '@radix-ui/react-slot';
16
16
  import { useControllableState } from '@radix-ui/react-use-controllable-state';
17
17
  import React, {
18
- type ReactNode,
19
- type FC,
20
- useRef,
21
- type ElementRef,
22
- useCallback,
18
+ type ComponentPropsWithRef,
23
19
  type ComponentPropsWithoutRef,
20
+ type ComponentRef,
21
+ type FC,
22
+ PropsWithChildren,
23
+ type ReactNode,
24
+ type RefObject,
24
25
  forwardRef,
25
- type ComponentPropsWithRef,
26
+ useCallback,
26
27
  useEffect,
27
- type MutableRefObject,
28
- type RefObject,
28
+ useMemo,
29
+ useRef,
29
30
  } from 'react';
30
31
 
31
32
  import { useElevationContext, useThemeContext } from '../../hooks';
@@ -34,19 +35,19 @@ 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;
49
- triggerRef: MutableRefObject<HTMLButtonElement | null>;
50
+ triggerRef: RefObject<HTMLButtonElement | null>;
50
51
  contentId: string;
51
52
  open: boolean;
52
53
  onOpenChange(open: boolean): void;
@@ -57,17 +58,23 @@ type DropdownMenuContextValue = {
57
58
  const [DropdownMenuProvider, useDropdownMenuContext] =
58
59
  createDropdownMenuContext<DropdownMenuContextValue>(DROPDOWN_MENU_NAME);
59
60
 
60
- interface DropdownMenuRootProps {
61
- children?: ReactNode;
61
+ type DropdownMenuRootProps = PropsWithChildren<{
62
62
  dir?: Direction;
63
+ modal?: boolean;
63
64
  open?: boolean;
64
65
  defaultOpen?: boolean;
65
66
  onOpenChange?(open: boolean): void;
66
- modal?: boolean;
67
- }
68
-
69
- const DropdownMenuRoot: FC<DropdownMenuRootProps> = (props: ScopedProps<DropdownMenuRootProps>) => {
70
- const { __scopeDropdownMenu, children, dir, open: openProp, defaultOpen, onOpenChange, modal = true } = props;
67
+ }>;
68
+
69
+ const DropdownMenuRoot = ({
70
+ __scopeDropdownMenu,
71
+ children,
72
+ dir,
73
+ modal = true,
74
+ open: openProp,
75
+ defaultOpen,
76
+ onOpenChange,
77
+ }: ScopedProps<DropdownMenuRootProps>) => {
71
78
  const menuScope = useMenuScope(__scopeDropdownMenu);
72
79
  const triggerRef = useRef<HTMLButtonElement | null>(null);
73
80
  const [open = false, setOpen] = useControllableState({
@@ -80,14 +87,14 @@ const DropdownMenuRoot: FC<DropdownMenuRootProps> = (props: ScopedProps<Dropdown
80
87
  <DropdownMenuProvider
81
88
  scope={__scopeDropdownMenu}
82
89
  triggerId={useId()}
83
- triggerRef={triggerRef as MutableRefObject<HTMLButtonElement | null>}
90
+ triggerRef={triggerRef}
84
91
  contentId={useId()}
85
92
  open={open}
86
93
  onOpenChange={setOpen}
87
94
  onOpenToggle={useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen])}
88
95
  modal={modal}
89
96
  >
90
- <MenuPrimitive.Root {...menuScope} open={open} onOpenChange={setOpen} dir={dir} modal={modal}>
97
+ <MenuPrimitive.Root {...menuScope} dir={dir} modal={modal} open={open} onOpenChange={setOpen}>
91
98
  {children}
92
99
  </MenuPrimitive.Root>
93
100
  </DropdownMenuProvider>
@@ -96,15 +103,15 @@ const DropdownMenuRoot: FC<DropdownMenuRootProps> = (props: ScopedProps<Dropdown
96
103
 
97
104
  DropdownMenuRoot.displayName = DROPDOWN_MENU_NAME;
98
105
 
99
- /* -------------------------------------------------------------------------------------------------
100
- * DropdownMenuTrigger
101
- * ----------------------------------------------------------------------------------------------- */
106
+ //
107
+ // DropdownMenuTrigger
108
+ //
102
109
 
103
110
  const TRIGGER_NAME = 'DropdownMenuTrigger';
104
111
 
105
- type DropdownMenuTriggerElement = ElementRef<typeof Primitive.button>;
112
+ type DropdownMenuTriggerElement = ComponentRef<typeof Primitive.button>;
106
113
  type PrimitiveButtonProps = ComponentPropsWithoutRef<typeof Primitive.button>;
107
- interface DropdownMenuTriggerProps extends PrimitiveButtonProps {}
114
+ type DropdownMenuTriggerProps = PrimitiveButtonProps;
108
115
 
109
116
  const DropdownMenuTrigger = forwardRef<DropdownMenuTriggerElement, DropdownMenuTriggerProps>(
110
117
  (props: ScopedProps<DropdownMenuTriggerProps>, forwardedRef) => {
@@ -124,6 +131,7 @@ const DropdownMenuTrigger = forwardRef<DropdownMenuTriggerElement, DropdownMenuT
124
131
  disabled={disabled}
125
132
  {...triggerProps}
126
133
  ref={composeRefs(forwardedRef, context.triggerRef)}
134
+ data-arrow-keys='down'
127
135
  onPointerDown={composeEventHandlers(props.onPointerDown, (event) => {
128
136
  // only call handler if it's the left button (mousedown gets triggered by all mouse buttons)
129
137
  // but not when the control key is pressed (avoiding MacOS right click)
@@ -160,15 +168,15 @@ const DropdownMenuTrigger = forwardRef<DropdownMenuTriggerElement, DropdownMenuT
160
168
 
161
169
  DropdownMenuTrigger.displayName = TRIGGER_NAME;
162
170
 
163
- /* -------------------------------------------------------------------------------------------------
164
- * DropdownMenuVirtualTrigger
165
- * ----------------------------------------------------------------------------------------------- */
171
+ //
172
+ // DropdownMenuVirtualTrigger
173
+ //
166
174
 
167
175
  const VIRTUAL_TRIGGER_NAME = 'DropdownMenuVirtualTrigger';
168
176
 
169
- interface DropdownMenuVirtualTriggerProps {
170
- virtualRef: RefObject<DropdownMenuTriggerElement>;
171
- }
177
+ type DropdownMenuVirtualTriggerProps = {
178
+ virtualRef: RefObject<DropdownMenuTriggerElement | null>;
179
+ };
172
180
 
173
181
  const DropdownMenuVirtualTrigger = (props: ScopedProps<DropdownMenuVirtualTriggerProps>) => {
174
182
  const { __scopeDropdownMenu, virtualRef } = props;
@@ -179,19 +187,19 @@ const DropdownMenuVirtualTrigger = (props: ScopedProps<DropdownMenuVirtualTrigge
179
187
  context.triggerRef.current = virtualRef.current;
180
188
  }
181
189
  });
182
- return <MenuPrimitive.Anchor {...menuScope} virtualRef={virtualRef} />;
190
+ return <MenuPrimitive.Anchor {...menuScope} virtualRef={virtualRef as RefObject<DropdownMenuTriggerElement>} />;
183
191
  };
184
192
 
185
193
  DropdownMenuVirtualTrigger.displayName = VIRTUAL_TRIGGER_NAME;
186
194
 
187
- /* -------------------------------------------------------------------------------------------------
188
- * DropdownMenuPortal
189
- * ----------------------------------------------------------------------------------------------- */
195
+ //
196
+ // DropdownMenuPortal
197
+ //
190
198
 
191
199
  const PORTAL_NAME = 'DropdownMenuPortal';
192
200
 
193
201
  type MenuPortalProps = ComponentPropsWithoutRef<typeof MenuPrimitive.Portal>;
194
- interface DropdownMenuPortalProps extends MenuPortalProps {}
202
+ type DropdownMenuPortalProps = MenuPortalProps;
195
203
 
196
204
  const DropdownMenuPortal: FC<DropdownMenuPortalProps> = (props: ScopedProps<DropdownMenuPortalProps>) => {
197
205
  const { __scopeDropdownMenu, ...portalProps } = props;
@@ -201,9 +209,9 @@ const DropdownMenuPortal: FC<DropdownMenuPortalProps> = (props: ScopedProps<Drop
201
209
 
202
210
  DropdownMenuPortal.displayName = PORTAL_NAME;
203
211
 
204
- /* -------------------------------------------------------------------------------------------------
205
- * DropdownMenuViewport
206
- * ----------------------------------------------------------------------------------------------- */
212
+ //
213
+ // DropdownMenuViewport
214
+ //
207
215
 
208
216
  type DropdownMenuViewportProps = ThemedClassName<ComponentPropsWithRef<typeof Primitive.div>> & {
209
217
  asChild?: boolean;
@@ -212,40 +220,56 @@ type DropdownMenuViewportProps = ThemedClassName<ComponentPropsWithRef<typeof Pr
212
220
  const DropdownMenuViewport = forwardRef<HTMLDivElement, DropdownMenuViewportProps>(
213
221
  ({ classNames, asChild, children, ...props }, forwardedRef) => {
214
222
  const { tx } = useThemeContext();
215
- const Root = asChild ? Slot : Primitive.div;
223
+ const Comp = asChild ? Slot : Primitive.div;
216
224
  return (
217
- <Root {...props} className={tx('menu.viewport', 'menu__viewport', {}, classNames)} ref={forwardedRef}>
225
+ <Comp {...props} className={tx('menu.viewport', {}, classNames)} ref={forwardedRef}>
218
226
  {children}
219
- </Root>
227
+ </Comp>
220
228
  );
221
229
  },
222
230
  );
223
231
 
224
- /* -------------------------------------------------------------------------------------------------
225
- * DropdownMenuContent
226
- * ----------------------------------------------------------------------------------------------- */
232
+ //
233
+ // DropdownMenuContent
234
+ //
227
235
 
228
236
  const CONTENT_NAME = 'DropdownMenuContent';
229
237
 
230
- type DropdownMenuContentElement = ElementRef<typeof MenuPrimitive.Content>;
238
+ type DropdownMenuContentElement = ComponentRef<typeof MenuPrimitive.Content>;
231
239
  type MenuContentProps = ThemedClassName<ComponentPropsWithoutRef<typeof MenuPrimitive.Content>>;
232
- interface DropdownMenuContentProps extends Omit<MenuContentProps, 'onEntryFocus'> {}
240
+ type DropdownMenuContentProps = Omit<MenuContentProps, 'onEntryFocus'>;
233
241
 
234
242
  const DropdownMenuContent = forwardRef<DropdownMenuContentElement, DropdownMenuContentProps>(
235
243
  (props: ScopedProps<DropdownMenuContentProps>, forwardedRef) => {
236
- const { __scopeDropdownMenu, classNames, collisionPadding = 8, ...contentProps } = props;
244
+ const { __scopeDropdownMenu, classNames, collisionPadding = 8, collisionBoundary, ...contentProps } = props;
237
245
  const { tx } = useThemeContext();
238
246
  const context = useDropdownMenuContext(CONTENT_NAME, __scopeDropdownMenu);
239
247
  const elevation = useElevationContext();
240
248
  const menuScope = useMenuScope(__scopeDropdownMenu);
241
249
  const hasInteractedOutsideRef = useRef(false);
242
250
  const safeCollisionPadding = useSafeCollisionPadding(collisionPadding);
251
+
252
+ // Check for the closest annotated collision boundary in the DOM tree.
253
+ const computedCollisionBoundary = useMemo(() => {
254
+ const closestBoundary = context.triggerRef.current?.closest(
255
+ '[data-popover-collision-boundary]',
256
+ ) as HTMLElement | null;
257
+ return closestBoundary
258
+ ? Array.isArray(collisionBoundary)
259
+ ? [closestBoundary, ...collisionBoundary]
260
+ : collisionBoundary
261
+ ? [closestBoundary, collisionBoundary]
262
+ : [closestBoundary]
263
+ : collisionBoundary;
264
+ }, [context.open, collisionBoundary, context.triggerRef.current]);
265
+
243
266
  return (
244
267
  <MenuPrimitive.Content
245
268
  id={context.contentId}
246
269
  aria-labelledby={context.triggerId}
247
270
  {...menuScope}
248
271
  {...contentProps}
272
+ collisionBoundary={computedCollisionBoundary}
249
273
  collisionPadding={safeCollisionPadding}
250
274
  ref={forwardedRef}
251
275
  onCloseAutoFocus={composeEventHandlers(props.onCloseAutoFocus, (event) => {
@@ -264,7 +288,8 @@ const DropdownMenuContent = forwardRef<DropdownMenuContentElement, DropdownMenuC
264
288
  hasInteractedOutsideRef.current = true;
265
289
  }
266
290
  })}
267
- className={tx('menu.content', 'menu', { elevation }, classNames)}
291
+ data-arrow-keys='up down'
292
+ className={tx('menu.content', { elevation }, classNames)}
268
293
  style={{
269
294
  ...props.style,
270
295
  // re-namespace exposed content custom properties
@@ -283,15 +308,15 @@ const DropdownMenuContent = forwardRef<DropdownMenuContentElement, DropdownMenuC
283
308
 
284
309
  DropdownMenuContent.displayName = CONTENT_NAME;
285
310
 
286
- /* -------------------------------------------------------------------------------------------------
287
- * DropdownMenuGroup
288
- * ----------------------------------------------------------------------------------------------- */
311
+ //
312
+ // DropdownMenuGroup
313
+ //
289
314
 
290
315
  const GROUP_NAME = 'DropdownMenuGroup';
291
316
 
292
- type DropdownMenuGroupElement = ElementRef<typeof MenuPrimitive.Group>;
317
+ type DropdownMenuGroupElement = ComponentRef<typeof MenuPrimitive.Group>;
293
318
  type MenuGroupProps = ComponentPropsWithoutRef<typeof MenuPrimitive.Group>;
294
- interface DropdownMenuGroupProps extends MenuGroupProps {}
319
+ type DropdownMenuGroupProps = MenuGroupProps;
295
320
 
296
321
  const DropdownMenuGroup = forwardRef<DropdownMenuGroupElement, DropdownMenuGroupProps>(
297
322
  (props: ScopedProps<DropdownMenuGroupProps>, forwardedRef) => {
@@ -303,15 +328,15 @@ const DropdownMenuGroup = forwardRef<DropdownMenuGroupElement, DropdownMenuGroup
303
328
 
304
329
  DropdownMenuGroup.displayName = GROUP_NAME;
305
330
 
306
- /* -------------------------------------------------------------------------------------------------
307
- * DropdownMenuLabel
308
- * ----------------------------------------------------------------------------------------------- */
331
+ //
332
+ // DropdownMenuLabel
333
+ //
309
334
 
310
335
  const LABEL_NAME = 'DropdownMenuLabel';
311
336
 
312
- type DropdownMenuLabelElement = ElementRef<typeof MenuPrimitive.Label>;
337
+ type DropdownMenuLabelElement = ComponentRef<typeof MenuPrimitive.Label>;
313
338
  type MenuLabelProps = ThemedClassName<ComponentPropsWithoutRef<typeof MenuPrimitive.Label>>;
314
- interface DropdownMenuLabelProps extends MenuLabelProps {}
339
+ type DropdownMenuLabelProps = MenuLabelProps;
315
340
 
316
341
  const DropdownMenuGroupLabel = forwardRef<DropdownMenuLabelElement, DropdownMenuLabelProps>(
317
342
  (props: ScopedProps<DropdownMenuLabelProps>, forwardedRef) => {
@@ -322,7 +347,7 @@ const DropdownMenuGroupLabel = forwardRef<DropdownMenuLabelElement, DropdownMenu
322
347
  <MenuPrimitive.Label
323
348
  {...menuScope}
324
349
  {...labelProps}
325
- className={tx('menu.groupLabel', 'menu__group__label', {}, classNames)}
350
+ className={tx('menu.groupLabel', {}, classNames)}
326
351
  ref={forwardedRef}
327
352
  />
328
353
  );
@@ -331,15 +356,15 @@ const DropdownMenuGroupLabel = forwardRef<DropdownMenuLabelElement, DropdownMenu
331
356
 
332
357
  DropdownMenuGroupLabel.displayName = LABEL_NAME;
333
358
 
334
- /* -------------------------------------------------------------------------------------------------
335
- * DropdownMenuItem
336
- * ----------------------------------------------------------------------------------------------- */
359
+ //
360
+ // DropdownMenuItem
361
+ //
337
362
 
338
363
  const ITEM_NAME = 'DropdownMenuItem';
339
364
 
340
- type DropdownMenuItemElement = ElementRef<typeof MenuPrimitive.Item>;
365
+ type DropdownMenuItemElement = ComponentRef<typeof MenuPrimitive.Item>;
341
366
  type MenuItemProps = ThemedClassName<ComponentPropsWithoutRef<typeof MenuPrimitive.Item>>;
342
- interface DropdownMenuItemProps extends MenuItemProps {}
367
+ type DropdownMenuItemProps = MenuItemProps;
343
368
 
344
369
  const DropdownMenuItem = forwardRef<DropdownMenuItemElement, DropdownMenuItemProps>(
345
370
  (props: ScopedProps<DropdownMenuItemProps>, forwardedRef) => {
@@ -350,7 +375,7 @@ const DropdownMenuItem = forwardRef<DropdownMenuItemElement, DropdownMenuItemPro
350
375
  <MenuPrimitive.Item
351
376
  {...menuScope}
352
377
  {...itemProps}
353
- className={tx('menu.item', 'menu__item', {}, classNames)}
378
+ className={tx('menu.item', {}, classNames)}
354
379
  ref={forwardedRef}
355
380
  />
356
381
  );
@@ -359,15 +384,15 @@ const DropdownMenuItem = forwardRef<DropdownMenuItemElement, DropdownMenuItemPro
359
384
 
360
385
  DropdownMenuItem.displayName = ITEM_NAME;
361
386
 
362
- /* -------------------------------------------------------------------------------------------------
363
- * DropdownMenuCheckboxItem
364
- * ----------------------------------------------------------------------------------------------- */
387
+ //
388
+ // DropdownMenuCheckboxItem
389
+ //
365
390
 
366
391
  const CHECKBOX_ITEM_NAME = 'DropdownMenuCheckboxItem';
367
392
 
368
- type DropdownMenuCheckboxItemElement = ElementRef<typeof MenuPrimitive.CheckboxItem>;
393
+ type DropdownMenuCheckboxItemElement = ComponentRef<typeof MenuPrimitive.CheckboxItem>;
369
394
  type MenuCheckboxItemProps = ThemedClassName<ComponentPropsWithoutRef<typeof MenuPrimitive.CheckboxItem>>;
370
- interface DropdownMenuCheckboxItemProps extends MenuCheckboxItemProps {}
395
+ type DropdownMenuCheckboxItemProps = MenuCheckboxItemProps;
371
396
 
372
397
  const DropdownMenuCheckboxItem = forwardRef<DropdownMenuCheckboxItemElement, DropdownMenuCheckboxItemProps>(
373
398
  (props: ScopedProps<DropdownMenuCheckboxItemProps>, forwardedRef) => {
@@ -378,7 +403,7 @@ const DropdownMenuCheckboxItem = forwardRef<DropdownMenuCheckboxItemElement, Dro
378
403
  <MenuPrimitive.CheckboxItem
379
404
  {...menuScope}
380
405
  {...checkboxItemProps}
381
- className={tx('menu.item', 'menu__item--checkbox', {}, classNames)}
406
+ className={tx('menu.item', {}, classNames)}
382
407
  ref={forwardedRef}
383
408
  />
384
409
  );
@@ -387,15 +412,15 @@ const DropdownMenuCheckboxItem = forwardRef<DropdownMenuCheckboxItemElement, Dro
387
412
 
388
413
  DropdownMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;
389
414
 
390
- /* -------------------------------------------------------------------------------------------------
391
- * DropdownMenuRadioGroup
392
- * ----------------------------------------------------------------------------------------------- */
415
+ //
416
+ // DropdownMenuRadioGroup
417
+ //
393
418
 
394
419
  const RADIO_GROUP_NAME = 'DropdownMenuRadioGroup';
395
420
 
396
- type DropdownMenuRadioGroupElement = ElementRef<typeof MenuPrimitive.RadioGroup>;
421
+ type DropdownMenuRadioGroupElement = ComponentRef<typeof MenuPrimitive.RadioGroup>;
397
422
  type MenuRadioGroupProps = ComponentPropsWithoutRef<typeof MenuPrimitive.RadioGroup>;
398
- interface DropdownMenuRadioGroupProps extends MenuRadioGroupProps {}
423
+ type DropdownMenuRadioGroupProps = MenuRadioGroupProps;
399
424
 
400
425
  const DropdownMenuRadioGroup = forwardRef<DropdownMenuRadioGroupElement, DropdownMenuRadioGroupProps>(
401
426
  (props: ScopedProps<DropdownMenuRadioGroupProps>, forwardedRef) => {
@@ -407,35 +432,43 @@ const DropdownMenuRadioGroup = forwardRef<DropdownMenuRadioGroupElement, Dropdow
407
432
 
408
433
  DropdownMenuRadioGroup.displayName = RADIO_GROUP_NAME;
409
434
 
410
- /* -------------------------------------------------------------------------------------------------
411
- * DropdownMenuRadioItem
412
- * ----------------------------------------------------------------------------------------------- */
435
+ //
436
+ // DropdownMenuRadioItem
437
+ //
413
438
 
414
439
  const RADIO_ITEM_NAME = 'DropdownMenuRadioItem';
415
440
 
416
- type DropdownMenuRadioItemElement = ElementRef<typeof MenuPrimitive.RadioItem>;
441
+ type DropdownMenuRadioItemElement = ComponentRef<typeof MenuPrimitive.RadioItem>;
417
442
  type MenuRadioItemProps = ComponentPropsWithoutRef<typeof MenuPrimitive.RadioItem>;
418
- interface DropdownMenuRadioItemProps extends MenuRadioItemProps {}
443
+ type DropdownMenuRadioItemProps = ThemedClassName<MenuRadioItemProps>;
419
444
 
420
445
  const DropdownMenuRadioItem = forwardRef<DropdownMenuRadioItemElement, DropdownMenuRadioItemProps>(
421
446
  (props: ScopedProps<DropdownMenuRadioItemProps>, forwardedRef) => {
422
- const { __scopeDropdownMenu, ...radioItemProps } = props;
447
+ const { __scopeDropdownMenu, classNames, ...itemProps } = props;
423
448
  const menuScope = useMenuScope(__scopeDropdownMenu);
424
- return <MenuPrimitive.RadioItem {...menuScope} {...radioItemProps} ref={forwardedRef} />;
449
+ const { tx } = useThemeContext();
450
+ return (
451
+ <MenuPrimitive.Item
452
+ {...menuScope}
453
+ {...itemProps}
454
+ className={tx('menu.item', {}, classNames)}
455
+ ref={forwardedRef}
456
+ />
457
+ );
425
458
  },
426
459
  );
427
460
 
428
461
  DropdownMenuRadioItem.displayName = RADIO_ITEM_NAME;
429
462
 
430
- /* -------------------------------------------------------------------------------------------------
431
- * DropdownMenuItemIndicator
432
- * ----------------------------------------------------------------------------------------------- */
463
+ //
464
+ // DropdownMenuItemIndicator
465
+ //
433
466
 
434
467
  const INDICATOR_NAME = 'DropdownMenuItemIndicator';
435
468
 
436
- type DropdownMenuItemIndicatorElement = ElementRef<typeof MenuPrimitive.ItemIndicator>;
469
+ type DropdownMenuItemIndicatorElement = ComponentRef<typeof MenuPrimitive.ItemIndicator>;
437
470
  type MenuItemIndicatorProps = ComponentPropsWithoutRef<typeof MenuPrimitive.ItemIndicator>;
438
- interface DropdownMenuItemIndicatorProps extends MenuItemIndicatorProps {}
471
+ type DropdownMenuItemIndicatorProps = MenuItemIndicatorProps;
439
472
 
440
473
  const DropdownMenuItemIndicator = forwardRef<DropdownMenuItemIndicatorElement, DropdownMenuItemIndicatorProps>(
441
474
  (props: ScopedProps<DropdownMenuItemIndicatorProps>, forwardedRef) => {
@@ -447,15 +480,15 @@ const DropdownMenuItemIndicator = forwardRef<DropdownMenuItemIndicatorElement, D
447
480
 
448
481
  DropdownMenuItemIndicator.displayName = INDICATOR_NAME;
449
482
 
450
- /* -------------------------------------------------------------------------------------------------
451
- * DropdownMenuSeparator
452
- * ----------------------------------------------------------------------------------------------- */
483
+ //
484
+ // DropdownMenuSeparator
485
+ //
453
486
 
454
487
  const SEPARATOR_NAME = 'DropdownMenuSeparator';
455
488
 
456
- type DropdownMenuSeparatorElement = ElementRef<typeof MenuPrimitive.Separator>;
489
+ type DropdownMenuSeparatorElement = ComponentRef<typeof MenuPrimitive.Separator>;
457
490
  type MenuSeparatorProps = ThemedClassName<ComponentPropsWithoutRef<typeof MenuPrimitive.Separator>>;
458
- interface DropdownMenuSeparatorProps extends MenuSeparatorProps {}
491
+ type DropdownMenuSeparatorProps = MenuSeparatorProps;
459
492
 
460
493
  const DropdownMenuSeparator = forwardRef<DropdownMenuSeparatorElement, DropdownMenuSeparatorProps>(
461
494
  (props: ScopedProps<DropdownMenuSeparatorProps>, forwardedRef) => {
@@ -466,7 +499,7 @@ const DropdownMenuSeparator = forwardRef<DropdownMenuSeparatorElement, DropdownM
466
499
  <MenuPrimitive.Separator
467
500
  {...menuScope}
468
501
  {...separatorProps}
469
- className={tx('menu.separator', 'menu__item', {}, classNames)}
502
+ className={tx('menu.separator', {}, classNames)}
470
503
  ref={forwardedRef}
471
504
  />
472
505
  );
@@ -475,15 +508,15 @@ const DropdownMenuSeparator = forwardRef<DropdownMenuSeparatorElement, DropdownM
475
508
 
476
509
  DropdownMenuSeparator.displayName = SEPARATOR_NAME;
477
510
 
478
- /* -------------------------------------------------------------------------------------------------
479
- * DropdownMenuArrow
480
- * ----------------------------------------------------------------------------------------------- */
511
+ //
512
+ // DropdownMenuArrow
513
+ //
481
514
 
482
515
  const ARROW_NAME = 'DropdownMenuArrow';
483
516
 
484
- type DropdownMenuArrowElement = ElementRef<typeof MenuPrimitive.Arrow>;
517
+ type DropdownMenuArrowElement = ComponentRef<typeof MenuPrimitive.Arrow>;
485
518
  type MenuArrowProps = ThemedClassName<ComponentPropsWithoutRef<typeof MenuPrimitive.Arrow>>;
486
- interface DropdownMenuArrowProps extends MenuArrowProps {}
519
+ type DropdownMenuArrowProps = MenuArrowProps;
487
520
 
488
521
  const DropdownMenuArrow = forwardRef<DropdownMenuArrowElement, DropdownMenuArrowProps>(
489
522
  (props: ScopedProps<DropdownMenuArrowProps>, forwardedRef) => {
@@ -494,7 +527,7 @@ const DropdownMenuArrow = forwardRef<DropdownMenuArrowElement, DropdownMenuArrow
494
527
  <MenuPrimitive.Arrow
495
528
  {...menuScope}
496
529
  {...arrowProps}
497
- className={tx('menu.arrow', 'menu__arrow', {}, classNames)}
530
+ className={tx('menu.arrow', {}, classNames)}
498
531
  ref={forwardedRef}
499
532
  />
500
533
  );
@@ -503,16 +536,16 @@ const DropdownMenuArrow = forwardRef<DropdownMenuArrowElement, DropdownMenuArrow
503
536
 
504
537
  DropdownMenuArrow.displayName = ARROW_NAME;
505
538
 
506
- /* -------------------------------------------------------------------------------------------------
507
- * DropdownMenuSub
508
- * ----------------------------------------------------------------------------------------------- */
539
+ //
540
+ // DropdownMenuSub
541
+ //
509
542
 
510
- interface DropdownMenuSubProps {
543
+ type DropdownMenuSubProps = {
511
544
  children?: ReactNode;
512
545
  open?: boolean;
513
546
  defaultOpen?: boolean;
514
547
  onOpenChange?(open: boolean): void;
515
- }
548
+ };
516
549
 
517
550
  const DropdownMenuSub: FC<DropdownMenuSubProps> = (props: ScopedProps<DropdownMenuSubProps>) => {
518
551
  const { __scopeDropdownMenu, children, open: openProp, onOpenChange, defaultOpen } = props;
@@ -530,15 +563,15 @@ const DropdownMenuSub: FC<DropdownMenuSubProps> = (props: ScopedProps<DropdownMe
530
563
  );
531
564
  };
532
565
 
533
- /* -------------------------------------------------------------------------------------------------
534
- * DropdownMenuSubTrigger
535
- * ----------------------------------------------------------------------------------------------- */
566
+ //
567
+ // DropdownMenuSubTrigger
568
+ //
536
569
 
537
570
  const SUB_TRIGGER_NAME = 'DropdownMenuSubTrigger';
538
571
 
539
- type DropdownMenuSubTriggerElement = ElementRef<typeof MenuPrimitive.SubTrigger>;
572
+ type DropdownMenuSubTriggerElement = ComponentRef<typeof MenuPrimitive.SubTrigger>;
540
573
  type MenuSubTriggerProps = ComponentPropsWithoutRef<typeof MenuPrimitive.SubTrigger>;
541
- interface DropdownMenuSubTriggerProps extends MenuSubTriggerProps {}
574
+ type DropdownMenuSubTriggerProps = MenuSubTriggerProps;
542
575
 
543
576
  const DropdownMenuSubTrigger = forwardRef<DropdownMenuSubTriggerElement, DropdownMenuSubTriggerProps>(
544
577
  (props: ScopedProps<DropdownMenuSubTriggerProps>, forwardedRef) => {
@@ -550,15 +583,15 @@ const DropdownMenuSubTrigger = forwardRef<DropdownMenuSubTriggerElement, Dropdow
550
583
 
551
584
  DropdownMenuSubTrigger.displayName = SUB_TRIGGER_NAME;
552
585
 
553
- /* -------------------------------------------------------------------------------------------------
554
- * DropdownMenuSubContent
555
- * ----------------------------------------------------------------------------------------------- */
586
+ //
587
+ // DropdownMenuSubContent
588
+ //
556
589
 
557
590
  const SUB_CONTENT_NAME = 'DropdownMenuSubContent';
558
591
 
559
- type DropdownMenuSubContentElement = ElementRef<typeof MenuPrimitive.Content>;
592
+ type DropdownMenuSubContentElement = ComponentRef<typeof MenuPrimitive.Content>;
560
593
  type MenuSubContentProps = ComponentPropsWithoutRef<typeof MenuPrimitive.SubContent>;
561
- interface DropdownMenuSubContentProps extends MenuSubContentProps {}
594
+ type DropdownMenuSubContentProps = MenuSubContentProps;
562
595
 
563
596
  const DropdownMenuSubContent = forwardRef<DropdownMenuSubContentElement, DropdownMenuSubContentProps>(
564
597
  (props: ScopedProps<DropdownMenuSubContentProps>, forwardedRef) => {
@@ -588,7 +621,9 @@ const DropdownMenuSubContent = forwardRef<DropdownMenuSubContentElement, Dropdow
588
621
 
589
622
  DropdownMenuSubContent.displayName = SUB_CONTENT_NAME;
590
623
 
591
- /* ----------------------------------------------------------------------------------------------- */
624
+ //
625
+ // DropdownMenu
626
+ //
592
627
 
593
628
  export const DropdownMenu = {
594
629
  Root: DropdownMenuRoot,
@@ -611,7 +646,9 @@ export const DropdownMenu = {
611
646
  SubContent: DropdownMenuSubContent,
612
647
  };
613
648
 
614
- const useDropdownMenuMenuScope = useMenuScope;
649
+ type DropdownMenuScope = Scope;
650
+
651
+ const useDropdownMenuMenuScope: (scope?: DropdownMenuScope) => any = useMenuScope;
615
652
 
616
653
  export { createDropdownMenuScope, useDropdownMenuContext, useDropdownMenuMenuScope };
617
654