@dxos/react-ui 0.8.4-main.1da679c → 0.8.4-main.21d9917

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 (293) hide show
  1. package/dist/lib/browser/chunk-CEKVHJ27.mjs +774 -0
  2. package/dist/lib/browser/chunk-CEKVHJ27.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +3068 -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 +65 -49
  7. package/dist/lib/browser/testing/index.mjs.map +4 -4
  8. package/dist/lib/node-esm/chunk-2NHEX4AD.mjs +776 -0
  9. package/dist/lib/node-esm/chunk-2NHEX4AD.mjs.map +7 -0
  10. package/dist/lib/node-esm/index.mjs +3068 -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 +65 -49
  14. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  15. package/dist/types/src/components/Avatars/Avatar.stories.d.ts +0 -6
  16. package/dist/types/src/components/Avatars/Avatar.stories.d.ts.map +1 -1
  17. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts +0 -6
  18. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts.map +1 -1
  19. package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts +0 -6
  20. package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts.map +1 -1
  21. package/dist/types/src/components/{Buttons → Button}/Button.d.ts +2 -2
  22. package/dist/types/src/components/Button/Button.d.ts.map +1 -0
  23. package/dist/types/src/components/{Buttons → Button}/Button.stories.d.ts +1 -7
  24. package/dist/types/src/components/Button/Button.stories.d.ts.map +1 -0
  25. package/dist/types/src/components/{Buttons → Button}/IconButton.d.ts +2 -2
  26. package/dist/types/src/components/Button/IconButton.d.ts.map +1 -0
  27. package/dist/types/src/components/{Buttons → Button}/IconButton.stories.d.ts +0 -6
  28. package/dist/types/src/components/Button/IconButton.stories.d.ts.map +1 -0
  29. package/dist/types/src/components/Button/Toggle.d.ts.map +1 -0
  30. package/dist/types/src/components/Button/Toggle.stories.d.ts +16 -0
  31. package/dist/types/src/components/Button/Toggle.stories.d.ts.map +1 -0
  32. package/dist/types/src/components/{Buttons → Button}/ToggleGroup.d.ts +6 -10
  33. package/dist/types/src/components/Button/ToggleGroup.d.ts.map +1 -0
  34. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts +27 -0
  35. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts.map +1 -0
  36. package/dist/types/src/components/Button/index.d.ts.map +1 -0
  37. package/dist/types/src/components/Clipboard/CopyButton.d.ts +1 -1
  38. package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -1
  39. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts +1 -1
  40. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts.map +1 -1
  41. package/dist/types/src/components/Dialog/AlertDialog.d.ts.map +1 -0
  42. package/dist/types/src/components/{Dialogs → Dialog}/AlertDialog.stories.d.ts +0 -6
  43. package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts.map +1 -0
  44. package/dist/types/src/components/Dialog/Dialog.d.ts +40 -0
  45. package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -0
  46. package/dist/types/src/components/{Dialogs → Dialog}/Dialog.stories.d.ts +7 -6
  47. package/dist/types/src/components/Dialog/Dialog.stories.d.ts.map +1 -0
  48. package/dist/types/src/components/Dialog/index.d.ts.map +1 -0
  49. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts +1 -1
  50. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts.map +1 -1
  51. package/dist/types/src/components/Icon/Icon.d.ts +2 -2
  52. package/dist/types/src/components/Icon/Icon.d.ts.map +1 -1
  53. package/dist/types/src/components/Icon/Icon.stories.d.ts +17 -0
  54. package/dist/types/src/components/Icon/Icon.stories.d.ts.map +1 -0
  55. package/dist/types/src/components/Input/Input.d.ts +5 -4
  56. package/dist/types/src/components/Input/Input.d.ts.map +1 -1
  57. package/dist/types/src/components/Input/Input.stories.d.ts +1 -7
  58. package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
  59. package/dist/types/src/components/Link/Link.stories.d.ts +0 -6
  60. package/dist/types/src/components/Link/Link.stories.d.ts.map +1 -1
  61. package/dist/types/src/components/{Lists → List}/List.d.ts +1 -1
  62. package/dist/types/src/components/List/List.d.ts.map +1 -0
  63. package/dist/types/src/components/{Lists → List}/List.stories.d.ts +0 -6
  64. package/dist/types/src/components/List/List.stories.d.ts.map +1 -0
  65. package/dist/types/src/components/List/ListDropIndicator.d.ts.map +1 -0
  66. package/dist/types/src/components/List/Tree.d.ts.map +1 -0
  67. package/dist/types/src/components/{Lists → List}/Tree.stories.d.ts +0 -6
  68. package/dist/types/src/components/List/Tree.stories.d.ts.map +1 -0
  69. package/dist/types/src/components/List/TreeDropIndicator.d.ts.map +1 -0
  70. package/dist/types/src/components/{Lists → List}/Treegrid.d.ts.map +1 -1
  71. package/dist/types/src/components/List/Treegrid.stories.d.ts.map +1 -0
  72. package/dist/types/src/components/List/index.d.ts.map +1 -0
  73. package/dist/types/src/components/Main/Main.d.ts +9 -18
  74. package/dist/types/src/components/Main/Main.d.ts.map +1 -1
  75. package/dist/types/src/components/Main/Main.stories.d.ts +1 -2
  76. package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
  77. package/dist/types/src/components/{Menus → Menu}/ContextMenu.d.ts +6 -6
  78. package/dist/types/src/components/Menu/ContextMenu.d.ts.map +1 -0
  79. package/dist/types/src/components/{Menus → Menu}/ContextMenu.stories.d.ts +0 -6
  80. package/dist/types/src/components/Menu/ContextMenu.stories.d.ts.map +1 -0
  81. package/dist/types/src/components/{Menus → Menu}/DropdownMenu.d.ts +4 -5
  82. package/dist/types/src/components/Menu/DropdownMenu.d.ts.map +1 -0
  83. package/dist/types/src/components/{Menus → Menu}/DropdownMenu.stories.d.ts +0 -6
  84. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts.map +1 -0
  85. package/dist/types/src/components/Menu/index.d.ts.map +1 -0
  86. package/dist/types/src/components/Message/Message.d.ts +1 -1
  87. package/dist/types/src/components/Message/Message.d.ts.map +1 -1
  88. package/dist/types/src/components/Message/Message.stories.d.ts +1 -2
  89. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
  90. package/dist/types/src/components/Popover/Popover.d.ts +2 -2
  91. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  92. package/dist/types/src/components/Popover/Popover.stories.d.ts +0 -6
  93. package/dist/types/src/components/Popover/Popover.stories.d.ts.map +1 -1
  94. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +9 -7
  95. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  96. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +2 -4
  97. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
  98. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +39 -0
  99. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -0
  100. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts +19 -0
  101. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts.map +1 -0
  102. package/dist/types/src/components/ScrollContainer/index.d.ts +2 -0
  103. package/dist/types/src/components/ScrollContainer/index.d.ts.map +1 -0
  104. package/dist/types/src/components/Select/Select.d.ts +10 -10
  105. package/dist/types/src/components/Select/Select.d.ts.map +1 -1
  106. package/dist/types/src/components/Select/Select.stories.d.ts +0 -6
  107. package/dist/types/src/components/Select/Select.stories.d.ts.map +1 -1
  108. package/dist/types/src/components/Separator/Separator.d.ts +1 -1
  109. package/dist/types/src/components/Status/Status.stories.d.ts +0 -6
  110. package/dist/types/src/components/Status/Status.stories.d.ts.map +1 -1
  111. package/dist/types/src/components/Tag/Tag.d.ts +1 -1
  112. package/dist/types/src/components/Tag/Tag.d.ts.map +1 -1
  113. package/dist/types/src/components/Tag/Tag.stories.d.ts +8 -8
  114. package/dist/types/src/components/Tag/Tag.stories.d.ts.map +1 -1
  115. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts +1 -2
  116. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  117. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +1 -8
  118. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
  119. package/dist/types/src/components/ThemeProvider/index.d.ts +2 -1
  120. package/dist/types/src/components/ThemeProvider/index.d.ts.map +1 -1
  121. package/dist/types/src/components/Toast/Toast.d.ts +4 -4
  122. package/dist/types/src/components/Toast/Toast.stories.d.ts +0 -6
  123. package/dist/types/src/components/Toast/Toast.stories.d.ts.map +1 -1
  124. package/dist/types/src/components/Toolbar/Toolbar.d.ts +17 -17
  125. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  126. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts +0 -6
  127. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
  128. package/dist/types/src/components/Tooltip/Tooltip.d.ts +1 -3
  129. package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
  130. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts +0 -6
  131. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
  132. package/dist/types/src/components/index.d.ts +5 -4
  133. package/dist/types/src/components/index.d.ts.map +1 -1
  134. package/dist/types/src/hooks/useDensityContext.d.ts +1 -1
  135. package/dist/types/src/hooks/useDensityContext.d.ts.map +1 -1
  136. package/dist/types/src/hooks/useElevationContext.d.ts +1 -1
  137. package/dist/types/src/hooks/useElevationContext.d.ts.map +1 -1
  138. package/dist/types/src/hooks/useSafeArea.d.ts.map +1 -1
  139. package/dist/types/src/hooks/useVisualViewport.d.ts +2 -2
  140. package/dist/types/src/hooks/useVisualViewport.d.ts.map +1 -1
  141. package/dist/types/src/index.d.ts +1 -1
  142. package/dist/types/src/index.d.ts.map +1 -1
  143. package/dist/types/src/playground/Controls.stories.d.ts +0 -6
  144. package/dist/types/src/playground/Controls.stories.d.ts.map +1 -1
  145. package/dist/types/src/playground/Custom.stories.d.ts +1 -2
  146. package/dist/types/src/playground/Custom.stories.d.ts.map +1 -1
  147. package/dist/types/src/playground/Typography.stories.d.ts +0 -6
  148. package/dist/types/src/playground/Typography.stories.d.ts.map +1 -1
  149. package/dist/types/src/testing/decorators/index.d.ts +2 -1
  150. package/dist/types/src/testing/decorators/index.d.ts.map +1 -1
  151. package/dist/types/src/testing/decorators/withLayout.d.ts +15 -0
  152. package/dist/types/src/testing/decorators/withLayout.d.ts.map +1 -0
  153. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts +12 -0
  154. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts.map +1 -0
  155. package/dist/types/src/testing/decorators/withTheme.d.ts +3 -0
  156. package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
  157. package/dist/types/src/util/index.d.ts +2 -1
  158. package/dist/types/src/util/index.d.ts.map +1 -1
  159. package/dist/types/src/util/usePx.d.ts +8 -0
  160. package/dist/types/src/util/usePx.d.ts.map +1 -0
  161. package/dist/types/tsconfig.tsbuildinfo +1 -1
  162. package/package.json +33 -27
  163. package/src/components/Avatars/Avatar.stories.tsx +2 -4
  164. package/src/components/Avatars/Avatar.tsx +1 -1
  165. package/src/components/Avatars/AvatarGroup.stories.tsx +0 -3
  166. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +1 -4
  167. package/src/components/{Buttons → Button}/Button.stories.tsx +3 -5
  168. package/src/components/{Buttons → Button}/Button.tsx +1 -1
  169. package/src/components/{Buttons → Button}/IconButton.stories.tsx +0 -3
  170. package/src/components/{Buttons → Button}/IconButton.tsx +19 -13
  171. package/src/components/{Buttons → Button}/Toggle.stories.tsx +5 -7
  172. package/src/components/{Buttons → Button}/ToggleGroup.stories.tsx +0 -3
  173. package/src/components/Clipboard/CopyButton.tsx +4 -4
  174. package/src/components/DensityProvider/DensityProvider.tsx +1 -1
  175. package/src/components/{Dialogs → Dialog}/AlertDialog.stories.tsx +1 -4
  176. package/src/components/Dialog/Dialog.stories.tsx +97 -0
  177. package/src/components/{Dialogs → Dialog}/Dialog.tsx +140 -40
  178. package/src/components/ElevationProvider/ElevationProvider.tsx +1 -1
  179. package/src/components/Icon/Icon.stories.tsx +113 -0
  180. package/src/components/Icon/Icon.tsx +2 -2
  181. package/src/components/Input/Input.stories.tsx +2 -5
  182. package/src/components/Input/Input.tsx +16 -7
  183. package/src/components/Link/Link.stories.tsx +0 -3
  184. package/src/components/{Lists → List}/List.stories.tsx +18 -18
  185. package/src/components/{Lists → List}/List.tsx +1 -1
  186. package/src/components/{Lists → List}/ListDropIndicator.tsx +1 -1
  187. package/src/components/{Lists → List}/Tree.stories.tsx +0 -3
  188. package/src/components/{Lists → List}/Treegrid.tsx +57 -16
  189. package/src/components/Main/Main.stories.tsx +4 -4
  190. package/src/components/Main/Main.tsx +28 -19
  191. package/src/components/{Menus → Menu}/ContextMenu.stories.tsx +0 -3
  192. package/src/components/{Menus → Menu}/DropdownMenu.stories.tsx +1 -4
  193. package/src/components/{Menus → Menu}/DropdownMenu.tsx +81 -60
  194. package/src/components/Message/Message.stories.tsx +1 -3
  195. package/src/components/Message/Message.tsx +30 -5
  196. package/src/components/Popover/Popover.stories.tsx +1 -4
  197. package/src/components/Popover/Popover.tsx +57 -38
  198. package/src/components/ScrollArea/ScrollArea.stories.tsx +54 -7
  199. package/src/components/ScrollArea/ScrollArea.tsx +50 -4
  200. package/src/components/ScrollContainer/ScrollContainer.stories.tsx +70 -0
  201. package/src/components/ScrollContainer/ScrollContainer.tsx +233 -0
  202. package/src/components/ScrollContainer/index.ts +5 -0
  203. package/src/components/Select/Select.stories.tsx +3 -5
  204. package/src/components/Select/Select.tsx +4 -4
  205. package/src/components/Status/Status.stories.tsx +0 -3
  206. package/src/components/Tag/Tag.stories.tsx +10 -9
  207. package/src/components/Tag/Tag.tsx +1 -1
  208. package/src/components/ThemeProvider/ThemeProvider.tsx +1 -3
  209. package/src/components/ThemeProvider/TranslationsProvider.tsx +1 -16
  210. package/src/components/ThemeProvider/index.ts +3 -3
  211. package/src/components/Toast/Toast.stories.tsx +1 -4
  212. package/src/components/Toolbar/Toolbar.stories.tsx +2 -7
  213. package/src/components/Toolbar/Toolbar.tsx +34 -8
  214. package/src/components/Tooltip/Tooltip.stories.tsx +1 -4
  215. package/src/components/Tooltip/Tooltip.tsx +24 -21
  216. package/src/components/index.ts +5 -4
  217. package/src/hooks/useDensityContext.ts +1 -1
  218. package/src/hooks/useElevationContext.ts +1 -1
  219. package/src/hooks/useSafeArea.ts +3 -2
  220. package/src/hooks/useVisualViewport.ts +4 -4
  221. package/src/index.ts +1 -1
  222. package/src/playground/Controls.stories.tsx +3 -5
  223. package/src/playground/Custom.stories.tsx +9 -20
  224. package/src/playground/Typography.stories.tsx +0 -3
  225. package/src/testing/decorators/index.ts +2 -1
  226. package/src/testing/decorators/withLayout.tsx +63 -0
  227. package/src/testing/decorators/{withSurfaceVariantsLayout.tsx → withLayoutVariants.tsx} +5 -5
  228. package/src/testing/decorators/withTheme.tsx +32 -0
  229. package/src/util/index.ts +3 -1
  230. package/src/util/usePx.ts +61 -0
  231. package/dist/lib/browser/chunk-Y4PW3CX2.mjs +0 -4402
  232. package/dist/lib/browser/chunk-Y4PW3CX2.mjs.map +0 -7
  233. package/dist/lib/node-esm/chunk-L6LIOSFT.mjs +0 -4404
  234. package/dist/lib/node-esm/chunk-L6LIOSFT.mjs.map +0 -7
  235. package/dist/types/src/components/Buttons/Button.d.ts.map +0 -1
  236. package/dist/types/src/components/Buttons/Button.stories.d.ts.map +0 -1
  237. package/dist/types/src/components/Buttons/IconButton.d.ts.map +0 -1
  238. package/dist/types/src/components/Buttons/IconButton.stories.d.ts.map +0 -1
  239. package/dist/types/src/components/Buttons/Toggle.d.ts.map +0 -1
  240. package/dist/types/src/components/Buttons/Toggle.stories.d.ts +0 -19
  241. package/dist/types/src/components/Buttons/Toggle.stories.d.ts.map +0 -1
  242. package/dist/types/src/components/Buttons/ToggleGroup.d.ts.map +0 -1
  243. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts +0 -37
  244. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts.map +0 -1
  245. package/dist/types/src/components/Buttons/index.d.ts.map +0 -1
  246. package/dist/types/src/components/Dialogs/AlertDialog.d.ts.map +0 -1
  247. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts.map +0 -1
  248. package/dist/types/src/components/Dialogs/Dialog.d.ts +0 -31
  249. package/dist/types/src/components/Dialogs/Dialog.d.ts.map +0 -1
  250. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts.map +0 -1
  251. package/dist/types/src/components/Dialogs/index.d.ts.map +0 -1
  252. package/dist/types/src/components/Lists/List.d.ts.map +0 -1
  253. package/dist/types/src/components/Lists/List.stories.d.ts.map +0 -1
  254. package/dist/types/src/components/Lists/ListDropIndicator.d.ts.map +0 -1
  255. package/dist/types/src/components/Lists/Tree.d.ts.map +0 -1
  256. package/dist/types/src/components/Lists/Tree.stories.d.ts.map +0 -1
  257. package/dist/types/src/components/Lists/TreeDropIndicator.d.ts.map +0 -1
  258. package/dist/types/src/components/Lists/Treegrid.stories.d.ts.map +0 -1
  259. package/dist/types/src/components/Lists/index.d.ts.map +0 -1
  260. package/dist/types/src/components/Menus/ContextMenu.d.ts.map +0 -1
  261. package/dist/types/src/components/Menus/ContextMenu.stories.d.ts.map +0 -1
  262. package/dist/types/src/components/Menus/DropdownMenu.d.ts.map +0 -1
  263. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts.map +0 -1
  264. package/dist/types/src/components/Menus/index.d.ts.map +0 -1
  265. package/dist/types/src/testing/decorators/withSurfaceVariantsLayout.d.ts +0 -12
  266. package/dist/types/src/testing/decorators/withSurfaceVariantsLayout.d.ts.map +0 -1
  267. package/dist/types/src/util/ThemedClassName.d.ts +0 -5
  268. package/dist/types/src/util/ThemedClassName.d.ts.map +0 -1
  269. package/src/components/Dialogs/Dialog.stories.tsx +0 -65
  270. package/src/testing/decorators/withTheme.ts +0 -25
  271. package/src/util/ThemedClassName.ts +0 -7
  272. /package/dist/types/src/components/{Buttons → Button}/Toggle.d.ts +0 -0
  273. /package/dist/types/src/components/{Buttons → Button}/index.d.ts +0 -0
  274. /package/dist/types/src/components/{Dialogs → Dialog}/AlertDialog.d.ts +0 -0
  275. /package/dist/types/src/components/{Dialogs → Dialog}/index.d.ts +0 -0
  276. /package/dist/types/src/components/{Lists → List}/ListDropIndicator.d.ts +0 -0
  277. /package/dist/types/src/components/{Lists → List}/Tree.d.ts +0 -0
  278. /package/dist/types/src/components/{Lists → List}/TreeDropIndicator.d.ts +0 -0
  279. /package/dist/types/src/components/{Lists → List}/Treegrid.d.ts +0 -0
  280. /package/dist/types/src/components/{Lists → List}/Treegrid.stories.d.ts +0 -0
  281. /package/dist/types/src/components/{Lists → List}/index.d.ts +0 -0
  282. /package/dist/types/src/components/{Menus → Menu}/index.d.ts +0 -0
  283. /package/src/components/{Buttons → Button}/Toggle.tsx +0 -0
  284. /package/src/components/{Buttons → Button}/ToggleGroup.tsx +0 -0
  285. /package/src/components/{Buttons → Button}/index.ts +0 -0
  286. /package/src/components/{Dialogs → Dialog}/AlertDialog.tsx +0 -0
  287. /package/src/components/{Dialogs → Dialog}/index.ts +0 -0
  288. /package/src/components/{Lists → List}/Tree.tsx +0 -0
  289. /package/src/components/{Lists → List}/TreeDropIndicator.tsx +0 -0
  290. /package/src/components/{Lists → List}/Treegrid.stories.tsx +0 -0
  291. /package/src/components/{Lists → List}/index.ts +0 -0
  292. /package/src/components/{Menus → Menu}/ContextMenu.tsx +0 -0
  293. /package/src/components/{Menus → Menu}/index.ts +0 -0
@@ -2,12 +2,18 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import { useArrowNavigationGroup, useFocusableGroup } from '@fluentui/react-tabster';
5
+ import { useFocusFinders } from '@fluentui/react-tabster';
6
6
  import { type Scope, createContextScope } from '@radix-ui/react-context';
7
7
  import { Primitive } from '@radix-ui/react-primitive';
8
8
  import { Slot } from '@radix-ui/react-slot';
9
9
  import { useControllableState } from '@radix-ui/react-use-controllable-state';
10
- import React, { type CSSProperties, type ComponentPropsWithRef, forwardRef } from 'react';
10
+ import React, {
11
+ type CSSProperties,
12
+ type ComponentPropsWithRef,
13
+ type KeyboardEvent,
14
+ forwardRef,
15
+ useCallback,
16
+ } from 'react';
11
17
 
12
18
  import { useThemeContext } from '../../hooks';
13
19
  import { type ThemedClassName } from '../../util';
@@ -40,12 +46,58 @@ const TreegridRoot = forwardRef<HTMLDivElement, TreegridRootProps>(
40
46
  ({ asChild, classNames, children, style, gridTemplateColumns, ...props }, forwardedRef) => {
41
47
  const { tx } = useThemeContext();
42
48
  const Root = asChild ? Slot : Primitive.div;
43
- const arrowNavigationAttrs = useArrowNavigationGroup({ axis: 'vertical', tabbable: false, circular: true });
49
+ const { findFirstFocusable } = useFocusFinders();
50
+
51
+ const handleKeyDown = useCallback(
52
+ (event: KeyboardEvent<HTMLDivElement>) => {
53
+ switch (event.key) {
54
+ case 'ArrowDown':
55
+ case 'ArrowUp': {
56
+ const direction = event.key === 'ArrowDown' ? 'down' : 'up';
57
+ const target = event.target as HTMLElement;
58
+
59
+ // Find ancestor with data-arrow-keys containing the relevant direction.
60
+ const ancestorWithArrowKeys = target.closest(`[data-arrow-keys*="${direction}"], [data-arrow-keys="all"]`);
61
+
62
+ // If no ancestor with data-arrow-keys found, proceed with row navigation.
63
+ if (!ancestorWithArrowKeys) {
64
+ // Find the closest row
65
+ const currentRow = target.closest('[role="row"]');
66
+ if (currentRow) {
67
+ // Find the treegrid container.
68
+ const treegrid = currentRow.closest('[role="treegrid"]');
69
+ if (treegrid) {
70
+ // Get all rows in the treegrid.
71
+ const rows = Array.from(treegrid.querySelectorAll('[role="row"]'));
72
+ const currentIndex = rows.indexOf(currentRow as Element);
73
+
74
+ // Find next or previous row.
75
+ const nextIndex = direction === 'down' ? currentIndex + 1 : currentIndex - 1;
76
+ const targetRow = rows[nextIndex];
77
+
78
+ if (targetRow) {
79
+ // Focus the first focusable element in the target row.
80
+ const firstFocusable = findFirstFocusable(targetRow as HTMLElement);
81
+ if (firstFocusable) {
82
+ event.preventDefault();
83
+ firstFocusable.focus();
84
+ }
85
+ }
86
+ }
87
+ }
88
+ }
89
+ break;
90
+ }
91
+ }
92
+ props.onKeyDown?.(event);
93
+ },
94
+ [findFirstFocusable],
95
+ );
44
96
 
45
97
  return (
46
98
  <Root
47
99
  role='treegrid'
48
- {...arrowNavigationAttrs}
100
+ onKeyDown={handleKeyDown}
49
101
  {...props}
50
102
  className={tx('treegrid.root', 'treegrid', {}, classNames)}
51
103
  style={{ ...style, gridTemplateColumns }}
@@ -91,13 +143,6 @@ const TreegridRow = forwardRef<HTMLDivElement, TreegridRowScopedProps<TreegridRo
91
143
  onChange: propsOnOpenChange,
92
144
  defaultProp: defaultOpen,
93
145
  });
94
- const focusableGroupAttrs = useFocusableGroup({ tabBehavior: 'limited' });
95
- const arrowGroupAttrs = useArrowNavigationGroup({
96
- axis: 'horizontal',
97
- tabbable: false,
98
- circular: false,
99
- memorizeCurrent: false,
100
- });
101
146
 
102
147
  return (
103
148
  <TreegridRowProvider open={open} onOpenChange={onOpenChange} scope={__treegridRowScope}>
@@ -106,15 +151,11 @@ const TreegridRow = forwardRef<HTMLDivElement, TreegridRowScopedProps<TreegridRo
106
151
  aria-level={level}
107
152
  className={tx('treegrid.row', 'treegrid__row', { level }, classNames)}
108
153
  {...(parentOf && { 'aria-expanded': open, 'aria-owns': parentOf })}
109
- tabIndex={0}
110
- {...focusableGroupAttrs}
111
154
  {...props}
112
155
  id={id}
113
156
  ref={forwardedRef}
114
157
  >
115
- <div role='none' className='contents' {...arrowGroupAttrs}>
116
- {children}
117
- </div>
158
+ {children}
118
159
  </Root>
119
160
  </TreegridRowProvider>
120
161
  );
@@ -2,13 +2,11 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
6
-
7
5
  import { type Meta, type StoryObj } from '@storybook/react-vite';
8
6
  import React from 'react';
9
7
 
10
8
  import { withTheme } from '../../testing';
11
- import { Button } from '../Buttons';
9
+ import { Button } from '../Button';
12
10
 
13
11
  import { Main, useSidebars } from './Main';
14
12
 
@@ -53,8 +51,10 @@ const meta = {
53
51
  render: DefaultStory,
54
52
  decorators: [withTheme],
55
53
  parameters: {
56
- chromatic: { disableSnapshot: false },
57
54
  layout: 'fullscreen',
55
+ chromatic: {
56
+ disableSnapshot: false,
57
+ },
58
58
  },
59
59
  } satisfies Meta<typeof DefaultStory>;
60
60
 
@@ -2,6 +2,7 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
+ import { useFocusableGroup } from '@fluentui/react-tabster';
5
6
  import { createContext } from '@radix-ui/react-context';
6
7
  import { DialogContent, Root as DialogRoot, DialogTitle } from '@radix-ui/react-dialog';
7
8
  import { Primitive } from '@radix-ui/react-primitive';
@@ -30,22 +31,12 @@ import { type Label, toLocalizedString, useTranslation } from '../ThemeProvider'
30
31
 
31
32
  import { useSwipeToDismiss } from './useSwipeToDismiss';
32
33
 
34
+ const MAIN_NAME = 'Main';
33
35
  const MAIN_ROOT_NAME = 'MainRoot';
34
36
  const NAVIGATION_SIDEBAR_NAME = 'NavigationSidebar';
35
37
  const COMPLEMENTARY_SIDEBAR_NAME = 'ComplementarySidebar';
36
- const MAIN_NAME = 'Main';
37
38
  const GENERIC_CONSUMER_NAME = 'GenericConsumer';
38
39
 
39
- type SidebarState = 'expanded' | 'collapsed' | 'closed';
40
-
41
- type MainContextValue = {
42
- resizing: boolean;
43
- navigationSidebarState: SidebarState;
44
- setNavigationSidebarState: Dispatch<SetStateAction<SidebarState | undefined>>;
45
- complementarySidebarState: SidebarState;
46
- setComplementarySidebarState: Dispatch<SetStateAction<SidebarState | undefined>>;
47
- };
48
-
49
40
  const landmarkAttr = 'data-main-landmark';
50
41
 
51
42
  /**
@@ -70,7 +61,10 @@ const useLandmarkMover = (propsOnKeyDown: ComponentPropsWithoutRef<'div'>['onKey
70
61
  },
71
62
  [propsOnKeyDown],
72
63
  );
73
- const focusableGroupAttrs = window ? {} : { tabBehavior: 'limited', ignoreDefaultKeydown: { Tab: true } };
64
+
65
+ // TODO(thure): This was disconnected once before in #8818;
66
+ // if this should change again to support the browser extension, please ensure the change doesn’t break web, desktop and mobile.
67
+ const focusableGroupAttrs = useFocusableGroup({ tabBehavior: 'limited', ignoreDefaultKeydown: { Tab: true } });
74
68
 
75
69
  return {
76
70
  onKeyDown: handleKeyDown,
@@ -80,6 +74,16 @@ const useLandmarkMover = (propsOnKeyDown: ComponentPropsWithoutRef<'div'>['onKey
80
74
  };
81
75
  };
82
76
 
77
+ type SidebarState = 'expanded' | 'collapsed' | 'closed';
78
+
79
+ type MainContextValue = {
80
+ resizing: boolean;
81
+ navigationSidebarState: SidebarState;
82
+ setNavigationSidebarState: Dispatch<SetStateAction<SidebarState | undefined>>;
83
+ complementarySidebarState: SidebarState;
84
+ setComplementarySidebarState: Dispatch<SetStateAction<SidebarState | undefined>>;
85
+ };
86
+
83
87
  const [MainProvider, useMainContext] = createContext<MainContextValue>(MAIN_NAME, {
84
88
  resizing: false,
85
89
  navigationSidebarState: 'closed',
@@ -141,7 +145,7 @@ const MainRoot = ({
141
145
  children,
142
146
  ...props
143
147
  }: MainRootProps) => {
144
- const [isLg] = useMediaQuery('lg', { ssr: false });
148
+ const [isLg] = useMediaQuery('lg');
145
149
  const [navigationSidebarState = isLg ? 'expanded' : 'collapsed', setNavigationSidebarState] =
146
150
  useControllableState<SidebarState>({
147
151
  prop: propsNavigationSidebarState,
@@ -210,7 +214,7 @@ const MainSidebar = forwardRef<HTMLDivElement, MainSidebarProps>(
210
214
  { classNames, children, swipeToDismiss, onOpenAutoFocus, state, resizing, onStateChange, side, label, ...props },
211
215
  forwardedRef,
212
216
  ) => {
213
- const [isLg] = useMediaQuery('lg', { ssr: false });
217
+ const [isLg] = useMediaQuery('lg');
214
218
  const { tx } = useThemeContext();
215
219
  const { t } = useTranslation();
216
220
  const ref = useForwardedRef(forwardedRef);
@@ -218,10 +222,15 @@ const MainSidebar = forwardRef<HTMLDivElement, MainSidebarProps>(
218
222
  useSwipeToDismiss(swipeToDismiss ? ref : noopRef, {
219
223
  onDismiss: () => onStateChange?.('closed'),
220
224
  });
225
+ // NOTE(thure): This is a workaround for something further down the tree grabbing focus on Escape. Adding this
226
+ // intervention to `Tabs.Root` or `Tabs.Tabpenel` instances is somehow ineffectual.
221
227
  const handleKeyDown = useCallback(
222
228
  (event: KeyboardEvent<HTMLDivElement>) => {
223
- if (event.key === 'Escape') {
224
- ((event.target as HTMLDivElement).closest('[data-tabster]') as HTMLDivElement)?.focus();
229
+ const focusGroupParent = (event.target as HTMLElement).closest('[data-tabster]');
230
+ if (event.key === 'Escape' && focusGroupParent) {
231
+ event.preventDefault();
232
+ event.stopPropagation();
233
+ (focusGroupParent as HTMLElement).focus();
225
234
  }
226
235
  props.onKeyDown?.(event);
227
236
  },
@@ -239,8 +248,8 @@ const MainSidebar = forwardRef<HTMLDivElement, MainSidebarProps>(
239
248
  data-state={state}
240
249
  data-resizing={resizing ? 'true' : 'false'}
241
250
  className={tx('main.sidebar', 'main__sidebar', {}, classNames)}
242
- onKeyDown={handleKeyDown}
243
- {...(state === 'closed' && { inert: 'true' })}
251
+ onKeyDownCapture={handleKeyDown}
252
+ {...(state === 'closed' && { inert: true })}
244
253
  ref={ref}
245
254
  >
246
255
  {children}
@@ -329,7 +338,7 @@ MainContent.displayName = MAIN_NAME;
329
338
  type MainOverlayProps = ThemedClassName<Omit<ComponentPropsWithRef<typeof Primitive.div>, 'children'>>;
330
339
 
331
340
  const MainOverlay = forwardRef<HTMLDivElement, MainOverlayProps>(({ classNames, ...props }, forwardedRef) => {
332
- const [isLg] = useMediaQuery('lg', { ssr: false });
341
+ const [isLg] = useMediaQuery('lg');
333
342
  const { navigationSidebarState, setNavigationSidebarState, complementarySidebarState, setComplementarySidebarState } =
334
343
  useMainContext(MAIN_NAME);
335
344
  const { tx } = useThemeContext();
@@ -2,8 +2,6 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
6
-
7
5
  import { type Meta, type StoryObj } from '@storybook/react-vite';
8
6
  import React from 'react';
9
7
 
@@ -98,7 +96,6 @@ const meta = {
98
96
  component: ContextMenu.Root as any,
99
97
  render: DefaultStory,
100
98
  decorators: [withTheme],
101
- parameters: { chromatic: { disableSnapshot: false } },
102
99
  } satisfies Meta<typeof DefaultStory>;
103
100
 
104
101
  export default meta;
@@ -2,13 +2,11 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
6
-
7
5
  import { type Meta, type StoryObj } from '@storybook/react-vite';
8
6
  import React, { useRef, useState } from 'react';
9
7
 
10
8
  import { withTheme } from '../../testing';
11
- import { Button } from '../Buttons';
9
+ import { Button } from '../Button';
12
10
 
13
11
  import { DropdownMenu } from './DropdownMenu';
14
12
 
@@ -98,7 +96,6 @@ const meta = {
98
96
  component: DropdownMenu.Root,
99
97
  render: DefaultStory,
100
98
  decorators: [withTheme],
101
- parameters: { chromatic: { disableSnapshot: false } },
102
99
  } satisfies Meta<typeof DefaultStory>;
103
100
 
104
101
  export default meta;
@@ -25,6 +25,7 @@ import React, {
25
25
  forwardRef,
26
26
  useCallback,
27
27
  useEffect,
28
+ useMemo,
28
29
  useRef,
29
30
  } from 'react';
30
31
 
@@ -34,15 +35,15 @@ import { type ThemedClassName } from '../../util';
34
35
 
35
36
  type Direction = 'ltr' | 'rtl';
36
37
 
37
- /* -------------------------------------------------------------------------------------------------
38
- * DropdownMenu
39
- * ----------------------------------------------------------------------------------------------- */
38
+ //
39
+ // DropdownMenu
40
+ //
40
41
 
41
42
  const DROPDOWN_MENU_NAME = 'DropdownMenu';
42
43
 
43
44
  type ScopedProps<P> = P & { __scopeDropdownMenu?: Scope };
44
45
  const [createDropdownMenuContext, createDropdownMenuScope] = createContextScope(DROPDOWN_MENU_NAME, [createMenuScope]);
45
- const useMenuScope = createMenuScope();
46
+ const useMenuScope: (scope?: Scope) => any = createMenuScope();
46
47
 
47
48
  type DropdownMenuContextValue = {
48
49
  triggerId: string;
@@ -96,9 +97,9 @@ const DropdownMenuRoot: FC<DropdownMenuRootProps> = (props: ScopedProps<Dropdown
96
97
 
97
98
  DropdownMenuRoot.displayName = DROPDOWN_MENU_NAME;
98
99
 
99
- /* -------------------------------------------------------------------------------------------------
100
- * DropdownMenuTrigger
101
- * ----------------------------------------------------------------------------------------------- */
100
+ //
101
+ // DropdownMenuTrigger
102
+ //
102
103
 
103
104
  const TRIGGER_NAME = 'DropdownMenuTrigger';
104
105
 
@@ -161,14 +162,14 @@ const DropdownMenuTrigger = forwardRef<DropdownMenuTriggerElement, DropdownMenuT
161
162
 
162
163
  DropdownMenuTrigger.displayName = TRIGGER_NAME;
163
164
 
164
- /* -------------------------------------------------------------------------------------------------
165
- * DropdownMenuVirtualTrigger
166
- * ----------------------------------------------------------------------------------------------- */
165
+ //
166
+ // DropdownMenuVirtualTrigger
167
+ //
167
168
 
168
169
  const VIRTUAL_TRIGGER_NAME = 'DropdownMenuVirtualTrigger';
169
170
 
170
171
  interface DropdownMenuVirtualTriggerProps {
171
- virtualRef: RefObject<DropdownMenuTriggerElement>;
172
+ virtualRef: RefObject<DropdownMenuTriggerElement | null>;
172
173
  }
173
174
 
174
175
  const DropdownMenuVirtualTrigger = (props: ScopedProps<DropdownMenuVirtualTriggerProps>) => {
@@ -180,14 +181,14 @@ const DropdownMenuVirtualTrigger = (props: ScopedProps<DropdownMenuVirtualTrigge
180
181
  context.triggerRef.current = virtualRef.current;
181
182
  }
182
183
  });
183
- return <MenuPrimitive.Anchor {...menuScope} virtualRef={virtualRef} />;
184
+ return <MenuPrimitive.Anchor {...menuScope} virtualRef={virtualRef as RefObject<DropdownMenuTriggerElement>} />;
184
185
  };
185
186
 
186
187
  DropdownMenuVirtualTrigger.displayName = VIRTUAL_TRIGGER_NAME;
187
188
 
188
- /* -------------------------------------------------------------------------------------------------
189
- * DropdownMenuPortal
190
- * ----------------------------------------------------------------------------------------------- */
189
+ //
190
+ // DropdownMenuPortal
191
+ //
191
192
 
192
193
  const PORTAL_NAME = 'DropdownMenuPortal';
193
194
 
@@ -202,9 +203,9 @@ const DropdownMenuPortal: FC<DropdownMenuPortalProps> = (props: ScopedProps<Drop
202
203
 
203
204
  DropdownMenuPortal.displayName = PORTAL_NAME;
204
205
 
205
- /* -------------------------------------------------------------------------------------------------
206
- * DropdownMenuViewport
207
- * ----------------------------------------------------------------------------------------------- */
206
+ //
207
+ // DropdownMenuViewport
208
+ //
208
209
 
209
210
  type DropdownMenuViewportProps = ThemedClassName<ComponentPropsWithRef<typeof Primitive.div>> & {
210
211
  asChild?: boolean;
@@ -222,9 +223,9 @@ const DropdownMenuViewport = forwardRef<HTMLDivElement, DropdownMenuViewportProp
222
223
  },
223
224
  );
224
225
 
225
- /* -------------------------------------------------------------------------------------------------
226
- * DropdownMenuContent
227
- * ----------------------------------------------------------------------------------------------- */
226
+ //
227
+ // DropdownMenuContent
228
+ //
228
229
 
229
230
  const CONTENT_NAME = 'DropdownMenuContent';
230
231
 
@@ -234,19 +235,35 @@ interface DropdownMenuContentProps extends Omit<MenuContentProps, 'onEntryFocus'
234
235
 
235
236
  const DropdownMenuContent = forwardRef<DropdownMenuContentElement, DropdownMenuContentProps>(
236
237
  (props: ScopedProps<DropdownMenuContentProps>, forwardedRef) => {
237
- const { __scopeDropdownMenu, classNames, collisionPadding = 8, ...contentProps } = props;
238
+ const { __scopeDropdownMenu, classNames, collisionPadding = 8, collisionBoundary, ...contentProps } = props;
238
239
  const { tx } = useThemeContext();
239
240
  const context = useDropdownMenuContext(CONTENT_NAME, __scopeDropdownMenu);
240
241
  const elevation = useElevationContext();
241
242
  const menuScope = useMenuScope(__scopeDropdownMenu);
242
243
  const hasInteractedOutsideRef = useRef(false);
243
244
  const safeCollisionPadding = useSafeCollisionPadding(collisionPadding);
245
+
246
+ // Check for the closest annotated collision boundary in the DOM tree.
247
+ const computedCollisionBoundary = useMemo(() => {
248
+ const closestBoundary = context.triggerRef.current?.closest(
249
+ '[data-popover-collision-boundary]',
250
+ ) as HTMLElement | null;
251
+ return closestBoundary
252
+ ? Array.isArray(collisionBoundary)
253
+ ? [closestBoundary, ...collisionBoundary]
254
+ : collisionBoundary
255
+ ? [closestBoundary, collisionBoundary]
256
+ : [closestBoundary]
257
+ : collisionBoundary;
258
+ }, [context.open, collisionBoundary, context.triggerRef.current]);
259
+
244
260
  return (
245
261
  <MenuPrimitive.Content
246
262
  id={context.contentId}
247
263
  aria-labelledby={context.triggerId}
248
264
  {...menuScope}
249
265
  {...contentProps}
266
+ collisionBoundary={computedCollisionBoundary}
250
267
  collisionPadding={safeCollisionPadding}
251
268
  ref={forwardedRef}
252
269
  onCloseAutoFocus={composeEventHandlers(props.onCloseAutoFocus, (event) => {
@@ -285,9 +302,9 @@ const DropdownMenuContent = forwardRef<DropdownMenuContentElement, DropdownMenuC
285
302
 
286
303
  DropdownMenuContent.displayName = CONTENT_NAME;
287
304
 
288
- /* -------------------------------------------------------------------------------------------------
289
- * DropdownMenuGroup
290
- * ----------------------------------------------------------------------------------------------- */
305
+ //
306
+ // DropdownMenuGroup
307
+ //
291
308
 
292
309
  const GROUP_NAME = 'DropdownMenuGroup';
293
310
 
@@ -305,9 +322,9 @@ const DropdownMenuGroup = forwardRef<DropdownMenuGroupElement, DropdownMenuGroup
305
322
 
306
323
  DropdownMenuGroup.displayName = GROUP_NAME;
307
324
 
308
- /* -------------------------------------------------------------------------------------------------
309
- * DropdownMenuLabel
310
- * ----------------------------------------------------------------------------------------------- */
325
+ //
326
+ // DropdownMenuLabel
327
+ //
311
328
 
312
329
  const LABEL_NAME = 'DropdownMenuLabel';
313
330
 
@@ -333,9 +350,9 @@ const DropdownMenuGroupLabel = forwardRef<DropdownMenuLabelElement, DropdownMenu
333
350
 
334
351
  DropdownMenuGroupLabel.displayName = LABEL_NAME;
335
352
 
336
- /* -------------------------------------------------------------------------------------------------
337
- * DropdownMenuItem
338
- * ----------------------------------------------------------------------------------------------- */
353
+ //
354
+ // DropdownMenuItem
355
+ //
339
356
 
340
357
  const ITEM_NAME = 'DropdownMenuItem';
341
358
 
@@ -361,9 +378,9 @@ const DropdownMenuItem = forwardRef<DropdownMenuItemElement, DropdownMenuItemPro
361
378
 
362
379
  DropdownMenuItem.displayName = ITEM_NAME;
363
380
 
364
- /* -------------------------------------------------------------------------------------------------
365
- * DropdownMenuCheckboxItem
366
- * ----------------------------------------------------------------------------------------------- */
381
+ //
382
+ // DropdownMenuCheckboxItem
383
+ //
367
384
 
368
385
  const CHECKBOX_ITEM_NAME = 'DropdownMenuCheckboxItem';
369
386
 
@@ -389,9 +406,9 @@ const DropdownMenuCheckboxItem = forwardRef<DropdownMenuCheckboxItemElement, Dro
389
406
 
390
407
  DropdownMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;
391
408
 
392
- /* -------------------------------------------------------------------------------------------------
393
- * DropdownMenuRadioGroup
394
- * ----------------------------------------------------------------------------------------------- */
409
+ //
410
+ // DropdownMenuRadioGroup
411
+ //
395
412
 
396
413
  const RADIO_GROUP_NAME = 'DropdownMenuRadioGroup';
397
414
 
@@ -409,9 +426,9 @@ const DropdownMenuRadioGroup = forwardRef<DropdownMenuRadioGroupElement, Dropdow
409
426
 
410
427
  DropdownMenuRadioGroup.displayName = RADIO_GROUP_NAME;
411
428
 
412
- /* -------------------------------------------------------------------------------------------------
413
- * DropdownMenuRadioItem
414
- * ----------------------------------------------------------------------------------------------- */
429
+ //
430
+ // DropdownMenuRadioItem
431
+ //
415
432
 
416
433
  const RADIO_ITEM_NAME = 'DropdownMenuRadioItem';
417
434
 
@@ -437,9 +454,9 @@ const DropdownMenuRadioItem = forwardRef<DropdownMenuRadioItemElement, DropdownM
437
454
 
438
455
  DropdownMenuRadioItem.displayName = RADIO_ITEM_NAME;
439
456
 
440
- /* -------------------------------------------------------------------------------------------------
441
- * DropdownMenuItemIndicator
442
- * ----------------------------------------------------------------------------------------------- */
457
+ //
458
+ // DropdownMenuItemIndicator
459
+ //
443
460
 
444
461
  const INDICATOR_NAME = 'DropdownMenuItemIndicator';
445
462
 
@@ -457,9 +474,9 @@ const DropdownMenuItemIndicator = forwardRef<DropdownMenuItemIndicatorElement, D
457
474
 
458
475
  DropdownMenuItemIndicator.displayName = INDICATOR_NAME;
459
476
 
460
- /* -------------------------------------------------------------------------------------------------
461
- * DropdownMenuSeparator
462
- * ----------------------------------------------------------------------------------------------- */
477
+ //
478
+ // DropdownMenuSeparator
479
+ //
463
480
 
464
481
  const SEPARATOR_NAME = 'DropdownMenuSeparator';
465
482
 
@@ -485,9 +502,9 @@ const DropdownMenuSeparator = forwardRef<DropdownMenuSeparatorElement, DropdownM
485
502
 
486
503
  DropdownMenuSeparator.displayName = SEPARATOR_NAME;
487
504
 
488
- /* -------------------------------------------------------------------------------------------------
489
- * DropdownMenuArrow
490
- * ----------------------------------------------------------------------------------------------- */
505
+ //
506
+ // DropdownMenuArrow
507
+ //
491
508
 
492
509
  const ARROW_NAME = 'DropdownMenuArrow';
493
510
 
@@ -513,9 +530,9 @@ const DropdownMenuArrow = forwardRef<DropdownMenuArrowElement, DropdownMenuArrow
513
530
 
514
531
  DropdownMenuArrow.displayName = ARROW_NAME;
515
532
 
516
- /* -------------------------------------------------------------------------------------------------
517
- * DropdownMenuSub
518
- * ----------------------------------------------------------------------------------------------- */
533
+ //
534
+ // DropdownMenuSub
535
+ //
519
536
 
520
537
  interface DropdownMenuSubProps {
521
538
  children?: ReactNode;
@@ -540,9 +557,9 @@ const DropdownMenuSub: FC<DropdownMenuSubProps> = (props: ScopedProps<DropdownMe
540
557
  );
541
558
  };
542
559
 
543
- /* -------------------------------------------------------------------------------------------------
544
- * DropdownMenuSubTrigger
545
- * ----------------------------------------------------------------------------------------------- */
560
+ //
561
+ // DropdownMenuSubTrigger
562
+ //
546
563
 
547
564
  const SUB_TRIGGER_NAME = 'DropdownMenuSubTrigger';
548
565
 
@@ -560,9 +577,9 @@ const DropdownMenuSubTrigger = forwardRef<DropdownMenuSubTriggerElement, Dropdow
560
577
 
561
578
  DropdownMenuSubTrigger.displayName = SUB_TRIGGER_NAME;
562
579
 
563
- /* -------------------------------------------------------------------------------------------------
564
- * DropdownMenuSubContent
565
- * ----------------------------------------------------------------------------------------------- */
580
+ //
581
+ // DropdownMenuSubContent
582
+ //
566
583
 
567
584
  const SUB_CONTENT_NAME = 'DropdownMenuSubContent';
568
585
 
@@ -598,7 +615,9 @@ const DropdownMenuSubContent = forwardRef<DropdownMenuSubContentElement, Dropdow
598
615
 
599
616
  DropdownMenuSubContent.displayName = SUB_CONTENT_NAME;
600
617
 
601
- /* ----------------------------------------------------------------------------------------------- */
618
+ //
619
+ // DropdownMenu
620
+ //
602
621
 
603
622
  export const DropdownMenu = {
604
623
  Root: DropdownMenuRoot,
@@ -621,7 +640,9 @@ export const DropdownMenu = {
621
640
  SubContent: DropdownMenuSubContent,
622
641
  };
623
642
 
624
- const useDropdownMenuMenuScope = useMenuScope;
643
+ type DropdownMenuScope = Scope;
644
+
645
+ const useDropdownMenuMenuScope: (scope?: DropdownMenuScope) => any = useMenuScope;
625
646
 
626
647
  export { createDropdownMenuScope, useDropdownMenuContext, useDropdownMenuMenuScope };
627
648
 
@@ -2,12 +2,10 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
6
-
7
5
  import { type Meta, type StoryObj } from '@storybook/react-vite';
8
6
  import React from 'react';
9
7
 
10
- import { type MessageValence } from '@dxos/react-ui-types';
8
+ import { type MessageValence } from '@dxos/ui-types';
11
9
 
12
10
  import { withTheme } from '../../testing';
13
11