@dxos/react-ui 0.8.4-main.84f28bd → 0.8.4-main.937b3ca

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 (314) 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 +3069 -60
  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 -50
  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 +3069 -60
  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 -50
  14. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  15. package/dist/types/src/components/Avatars/Avatar.d.ts +1 -1
  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 +2 -2
  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 +13 -0
  32. package/dist/types/src/components/Button/IconButton.stories.d.ts.map +1 -0
  33. package/dist/types/src/components/Button/Toggle.d.ts.map +1 -0
  34. package/dist/types/src/components/Button/Toggle.stories.d.ts +16 -0
  35. package/dist/types/src/components/Button/Toggle.stories.d.ts.map +1 -0
  36. package/dist/types/src/components/Button/ToggleGroup.d.ts +27 -0
  37. package/dist/types/src/components/Button/ToggleGroup.d.ts.map +1 -0
  38. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts +27 -0
  39. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts.map +1 -0
  40. package/dist/types/src/components/Button/index.d.ts.map +1 -0
  41. package/dist/types/src/components/Clipboard/ClipboardProvider.d.ts.map +1 -1
  42. package/dist/types/src/components/Clipboard/CopyButton.d.ts +1 -1
  43. package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -1
  44. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts +1 -1
  45. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts.map +1 -1
  46. package/dist/types/src/components/{Dialogs → Dialog}/AlertDialog.d.ts +1 -1
  47. package/dist/types/src/components/Dialog/AlertDialog.d.ts.map +1 -0
  48. package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts +11 -0
  49. package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts.map +1 -0
  50. package/dist/types/src/components/Dialog/Dialog.d.ts +40 -0
  51. package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -0
  52. package/dist/types/src/components/Dialog/Dialog.stories.d.ts +27 -0
  53. package/dist/types/src/components/Dialog/Dialog.stories.d.ts.map +1 -0
  54. package/dist/types/src/components/Dialog/index.d.ts.map +1 -0
  55. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts +1 -1
  56. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts.map +1 -1
  57. package/dist/types/src/components/Icon/Icon.d.ts +2 -2
  58. package/dist/types/src/components/Icon/Icon.d.ts.map +1 -1
  59. package/dist/types/src/components/Icon/Icon.stories.d.ts +17 -0
  60. package/dist/types/src/components/Icon/Icon.stories.d.ts.map +1 -0
  61. package/dist/types/src/components/Input/Input.d.ts +6 -5
  62. package/dist/types/src/components/Input/Input.d.ts.map +1 -1
  63. package/dist/types/src/components/Input/Input.stories.d.ts +11 -12
  64. package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
  65. package/dist/types/src/components/Link/Link.stories.d.ts +8 -8
  66. package/dist/types/src/components/Link/Link.stories.d.ts.map +1 -1
  67. package/dist/types/src/components/{Lists → List}/List.d.ts +3 -3
  68. package/dist/types/src/components/List/List.d.ts.map +1 -0
  69. package/dist/types/src/components/List/List.stories.d.ts +14 -0
  70. package/dist/types/src/components/List/List.stories.d.ts.map +1 -0
  71. package/dist/types/src/components/List/ListDropIndicator.d.ts.map +1 -0
  72. package/dist/types/src/components/{Lists → List}/Tree.d.ts +1 -1
  73. package/dist/types/src/components/List/Tree.d.ts.map +1 -0
  74. package/dist/types/src/components/List/Tree.stories.d.ts +15 -0
  75. package/dist/types/src/components/List/Tree.stories.d.ts.map +1 -0
  76. package/dist/types/src/components/List/TreeDropIndicator.d.ts.map +1 -0
  77. package/dist/types/src/components/{Lists → List}/Treegrid.d.ts +1 -1
  78. package/dist/types/src/components/{Lists → List}/Treegrid.d.ts.map +1 -1
  79. package/dist/types/src/components/List/Treegrid.stories.d.ts +12 -0
  80. package/dist/types/src/components/List/Treegrid.stories.d.ts.map +1 -0
  81. package/dist/types/src/components/List/index.d.ts.map +1 -0
  82. package/dist/types/src/components/Main/Main.d.ts +10 -19
  83. package/dist/types/src/components/Main/Main.d.ts.map +1 -1
  84. package/dist/types/src/components/Main/Main.stories.d.ts +6 -7
  85. package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
  86. package/dist/types/src/components/{Menus → Menu}/ContextMenu.d.ts +6 -6
  87. package/dist/types/src/components/Menu/ContextMenu.d.ts.map +1 -0
  88. package/dist/types/src/components/Menu/ContextMenu.stories.d.ts +12 -0
  89. package/dist/types/src/components/Menu/ContextMenu.stories.d.ts.map +1 -0
  90. package/dist/types/src/components/{Menus → Menu}/DropdownMenu.d.ts +8 -8
  91. package/dist/types/src/components/Menu/DropdownMenu.d.ts.map +1 -0
  92. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts +15 -0
  93. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts.map +1 -0
  94. package/dist/types/src/components/Menu/index.d.ts.map +1 -0
  95. package/dist/types/src/components/Message/Message.d.ts +1 -1
  96. package/dist/types/src/components/Message/Message.d.ts.map +1 -1
  97. package/dist/types/src/components/Message/Message.stories.d.ts +8 -17
  98. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
  99. package/dist/types/src/components/Popover/Popover.d.ts +3 -3
  100. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  101. package/dist/types/src/components/Popover/Popover.stories.d.ts +6 -34
  102. package/dist/types/src/components/Popover/Popover.stories.d.ts.map +1 -1
  103. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +10 -8
  104. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  105. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +8 -30
  106. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
  107. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +39 -0
  108. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -0
  109. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts +19 -0
  110. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts.map +1 -0
  111. package/dist/types/src/components/ScrollContainer/index.d.ts +2 -0
  112. package/dist/types/src/components/ScrollContainer/index.d.ts.map +1 -0
  113. package/dist/types/src/components/Select/Select.d.ts +10 -10
  114. package/dist/types/src/components/Select/Select.d.ts.map +1 -1
  115. package/dist/types/src/components/Select/Select.stories.d.ts +4 -9
  116. package/dist/types/src/components/Select/Select.stories.d.ts.map +1 -1
  117. package/dist/types/src/components/Separator/Separator.d.ts +1 -1
  118. package/dist/types/src/components/Status/Status.stories.d.ts +2 -8
  119. package/dist/types/src/components/Status/Status.stories.d.ts.map +1 -1
  120. package/dist/types/src/components/Tag/Tag.d.ts +1 -1
  121. package/dist/types/src/components/Tag/Tag.d.ts.map +1 -1
  122. package/dist/types/src/components/Tag/Tag.stories.d.ts +12 -12
  123. package/dist/types/src/components/Tag/Tag.stories.d.ts.map +1 -1
  124. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts +2 -3
  125. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  126. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +1 -8
  127. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
  128. package/dist/types/src/components/ThemeProvider/index.d.ts +2 -1
  129. package/dist/types/src/components/ThemeProvider/index.d.ts.map +1 -1
  130. package/dist/types/src/components/Toast/Toast.d.ts +5 -5
  131. package/dist/types/src/components/Toast/Toast.d.ts.map +1 -1
  132. package/dist/types/src/components/Toast/Toast.stories.d.ts +6 -44
  133. package/dist/types/src/components/Toast/Toast.stories.d.ts.map +1 -1
  134. package/dist/types/src/components/Toolbar/Toolbar.d.ts +17 -17
  135. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  136. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts +6 -50
  137. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
  138. package/dist/types/src/components/Tooltip/Tooltip.d.ts +2 -4
  139. package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
  140. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts +8 -61
  141. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
  142. package/dist/types/src/components/index.d.ts +5 -4
  143. package/dist/types/src/components/index.d.ts.map +1 -1
  144. package/dist/types/src/hooks/useDensityContext.d.ts +1 -1
  145. package/dist/types/src/hooks/useDensityContext.d.ts.map +1 -1
  146. package/dist/types/src/hooks/useElevationContext.d.ts +1 -1
  147. package/dist/types/src/hooks/useElevationContext.d.ts.map +1 -1
  148. package/dist/types/src/hooks/useSafeArea.d.ts.map +1 -1
  149. package/dist/types/src/hooks/useVisualViewport.d.ts +2 -2
  150. package/dist/types/src/hooks/useVisualViewport.d.ts.map +1 -1
  151. package/dist/types/src/index.d.ts +1 -1
  152. package/dist/types/src/index.d.ts.map +1 -1
  153. package/dist/types/src/playground/Controls.stories.d.ts +5 -9
  154. package/dist/types/src/playground/Controls.stories.d.ts.map +1 -1
  155. package/dist/types/src/playground/Custom.stories.d.ts +12 -4
  156. package/dist/types/src/playground/Custom.stories.d.ts.map +1 -1
  157. package/dist/types/src/playground/Typography.stories.d.ts +5 -11
  158. package/dist/types/src/playground/Typography.stories.d.ts.map +1 -1
  159. package/dist/types/src/testing/decorators/index.d.ts +2 -1
  160. package/dist/types/src/testing/decorators/index.d.ts.map +1 -1
  161. package/dist/types/src/testing/decorators/withLayout.d.ts +15 -0
  162. package/dist/types/src/testing/decorators/withLayout.d.ts.map +1 -0
  163. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts +12 -0
  164. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts.map +1 -0
  165. package/dist/types/src/testing/decorators/withTheme.d.ts +3 -0
  166. package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
  167. package/dist/types/src/util/index.d.ts +2 -1
  168. package/dist/types/src/util/index.d.ts.map +1 -1
  169. package/dist/types/src/util/usePx.d.ts +8 -0
  170. package/dist/types/src/util/usePx.d.ts.map +1 -0
  171. package/dist/types/tsconfig.tsbuildinfo +1 -1
  172. package/package.json +35 -27
  173. package/src/components/Avatars/Avatar.stories.tsx +21 -12
  174. package/src/components/Avatars/Avatar.tsx +4 -4
  175. package/src/components/Avatars/AvatarGroup.stories.tsx +10 -6
  176. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +17 -12
  177. package/src/components/Breadcrumb/Breadcrumb.tsx +3 -3
  178. package/src/components/{Buttons → Button}/Button.stories.tsx +10 -11
  179. package/src/components/{Buttons → Button}/Button.tsx +1 -1
  180. package/src/components/{Buttons → Button}/IconButton.stories.tsx +11 -8
  181. package/src/components/{Buttons → Button}/IconButton.tsx +22 -15
  182. package/src/components/Button/Toggle.stories.tsx +37 -0
  183. package/src/components/{Buttons → Button}/ToggleGroup.stories.tsx +13 -10
  184. package/src/components/{Buttons → Button}/ToggleGroup.tsx +17 -4
  185. package/src/components/Clipboard/ClipboardProvider.tsx +1 -1
  186. package/src/components/Clipboard/CopyButton.tsx +7 -6
  187. package/src/components/DensityProvider/DensityProvider.tsx +2 -2
  188. package/src/components/{Dialogs → Dialog}/AlertDialog.stories.tsx +15 -12
  189. package/src/components/{Dialogs → Dialog}/AlertDialog.tsx +13 -13
  190. package/src/components/Dialog/Dialog.stories.tsx +97 -0
  191. package/src/components/{Dialogs → Dialog}/Dialog.tsx +151 -51
  192. package/src/components/ElevationProvider/ElevationProvider.tsx +2 -2
  193. package/src/components/Icon/Icon.stories.tsx +113 -0
  194. package/src/components/Icon/Icon.tsx +2 -2
  195. package/src/components/Input/Input.stories.tsx +13 -15
  196. package/src/components/Input/Input.tsx +28 -19
  197. package/src/components/Link/Link.stories.tsx +10 -6
  198. package/src/components/{Lists → List}/List.stories.tsx +38 -32
  199. package/src/components/{Lists → List}/List.tsx +16 -17
  200. package/src/components/{Lists → List}/ListDropIndicator.tsx +1 -1
  201. package/src/components/{Lists → List}/Tree.stories.tsx +11 -8
  202. package/src/components/{Lists → List}/Tree.tsx +4 -3
  203. package/src/components/{Lists → List}/TreeDropIndicator.tsx +1 -1
  204. package/src/components/{Lists → List}/Treegrid.stories.tsx +12 -6
  205. package/src/components/{Lists → List}/Treegrid.tsx +58 -17
  206. package/src/components/Main/Main.stories.tsx +17 -9
  207. package/src/components/Main/Main.tsx +43 -28
  208. package/src/components/{Menus → Menu}/ContextMenu.stories.tsx +11 -8
  209. package/src/components/{Menus → Menu}/ContextMenu.tsx +1 -0
  210. package/src/components/{Menus → Menu}/DropdownMenu.stories.tsx +12 -9
  211. package/src/components/{Menus → Menu}/DropdownMenu.tsx +102 -71
  212. package/src/components/Message/Message.stories.tsx +12 -8
  213. package/src/components/Message/Message.tsx +30 -5
  214. package/src/components/Popover/Popover.stories.tsx +12 -9
  215. package/src/components/Popover/Popover.tsx +64 -45
  216. package/src/components/ScrollArea/ScrollArea.stories.tsx +64 -11
  217. package/src/components/ScrollArea/ScrollArea.tsx +54 -8
  218. package/src/components/ScrollContainer/ScrollContainer.stories.tsx +70 -0
  219. package/src/components/ScrollContainer/ScrollContainer.tsx +233 -0
  220. package/src/components/ScrollContainer/index.ts +5 -0
  221. package/src/components/Select/Select.stories.tsx +15 -12
  222. package/src/components/Select/Select.tsx +9 -9
  223. package/src/components/Status/Status.stories.tsx +9 -6
  224. package/src/components/Tag/Tag.stories.tsx +20 -11
  225. package/src/components/Tag/Tag.tsx +1 -1
  226. package/src/components/ThemeProvider/ThemeProvider.tsx +3 -4
  227. package/src/components/ThemeProvider/TranslationsProvider.tsx +3 -18
  228. package/src/components/ThemeProvider/index.ts +3 -3
  229. package/src/components/Toast/Toast.stories.tsx +12 -9
  230. package/src/components/Toast/Toast.tsx +9 -9
  231. package/src/components/Toolbar/Toolbar.stories.tsx +21 -19
  232. package/src/components/Toolbar/Toolbar.tsx +37 -10
  233. package/src/components/Tooltip/Tooltip.stories.tsx +16 -12
  234. package/src/components/Tooltip/Tooltip.tsx +27 -24
  235. package/src/components/index.ts +5 -4
  236. package/src/hooks/useDensityContext.ts +1 -1
  237. package/src/hooks/useElevationContext.ts +1 -1
  238. package/src/hooks/useSafeArea.ts +3 -2
  239. package/src/hooks/useSafeCollisionPadding.ts +1 -1
  240. package/src/hooks/useVisualViewport.ts +4 -4
  241. package/src/index.ts +1 -1
  242. package/src/playground/Controls.stories.tsx +20 -17
  243. package/src/playground/Custom.stories.tsx +13 -24
  244. package/src/playground/Typography.stories.tsx +8 -6
  245. package/src/testing/decorators/index.ts +2 -1
  246. package/src/testing/decorators/withLayout.tsx +63 -0
  247. package/src/testing/decorators/{withSurfaceVariantsLayout.tsx → withLayoutVariants.tsx} +5 -5
  248. package/src/testing/decorators/withTheme.tsx +32 -0
  249. package/src/util/index.ts +3 -1
  250. package/src/util/usePx.ts +61 -0
  251. package/dist/lib/browser/chunk-T6YPS45E.mjs +0 -4376
  252. package/dist/lib/browser/chunk-T6YPS45E.mjs.map +0 -7
  253. package/dist/lib/node-esm/chunk-TYVQJ4KW.mjs +0 -4378
  254. package/dist/lib/node-esm/chunk-TYVQJ4KW.mjs.map +0 -7
  255. package/dist/types/src/components/Buttons/Button.d.ts.map +0 -1
  256. package/dist/types/src/components/Buttons/Button.stories.d.ts +0 -12
  257. package/dist/types/src/components/Buttons/Button.stories.d.ts.map +0 -1
  258. package/dist/types/src/components/Buttons/IconButton.d.ts.map +0 -1
  259. package/dist/types/src/components/Buttons/IconButton.stories.d.ts +0 -22
  260. package/dist/types/src/components/Buttons/IconButton.stories.d.ts.map +0 -1
  261. package/dist/types/src/components/Buttons/Toggle.d.ts.map +0 -1
  262. package/dist/types/src/components/Buttons/Toggle.stories.d.ts +0 -19
  263. package/dist/types/src/components/Buttons/Toggle.stories.d.ts.map +0 -1
  264. package/dist/types/src/components/Buttons/ToggleGroup.d.ts +0 -28
  265. package/dist/types/src/components/Buttons/ToggleGroup.d.ts.map +0 -1
  266. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts +0 -39
  267. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts.map +0 -1
  268. package/dist/types/src/components/Buttons/index.d.ts.map +0 -1
  269. package/dist/types/src/components/Dialogs/AlertDialog.d.ts.map +0 -1
  270. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts +0 -43
  271. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts.map +0 -1
  272. package/dist/types/src/components/Dialogs/Dialog.d.ts +0 -31
  273. package/dist/types/src/components/Dialogs/Dialog.d.ts.map +0 -1
  274. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts +0 -48
  275. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts.map +0 -1
  276. package/dist/types/src/components/Dialogs/index.d.ts.map +0 -1
  277. package/dist/types/src/components/Lists/List.d.ts.map +0 -1
  278. package/dist/types/src/components/Lists/List.stories.d.ts +0 -37
  279. package/dist/types/src/components/Lists/List.stories.d.ts.map +0 -1
  280. package/dist/types/src/components/Lists/ListDropIndicator.d.ts.map +0 -1
  281. package/dist/types/src/components/Lists/Tree.d.ts.map +0 -1
  282. package/dist/types/src/components/Lists/Tree.stories.d.ts +0 -41
  283. package/dist/types/src/components/Lists/Tree.stories.d.ts.map +0 -1
  284. package/dist/types/src/components/Lists/TreeDropIndicator.d.ts.map +0 -1
  285. package/dist/types/src/components/Lists/Treegrid.stories.d.ts +0 -10
  286. package/dist/types/src/components/Lists/Treegrid.stories.d.ts.map +0 -1
  287. package/dist/types/src/components/Lists/index.d.ts.map +0 -1
  288. package/dist/types/src/components/Menus/ContextMenu.d.ts.map +0 -1
  289. package/dist/types/src/components/Menus/ContextMenu.stories.d.ts +0 -50
  290. package/dist/types/src/components/Menus/ContextMenu.stories.d.ts.map +0 -1
  291. package/dist/types/src/components/Menus/DropdownMenu.d.ts.map +0 -1
  292. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts +0 -50
  293. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts.map +0 -1
  294. package/dist/types/src/components/Menus/index.d.ts.map +0 -1
  295. package/dist/types/src/testing/decorators/withSurfaceVariantsLayout.d.ts +0 -12
  296. package/dist/types/src/testing/decorators/withSurfaceVariantsLayout.d.ts.map +0 -1
  297. package/dist/types/src/util/ThemedClassName.d.ts +0 -5
  298. package/dist/types/src/util/ThemedClassName.d.ts.map +0 -1
  299. package/src/components/Buttons/Toggle.stories.tsx +0 -33
  300. package/src/components/Dialogs/Dialog.stories.tsx +0 -65
  301. package/src/testing/decorators/withTheme.ts +0 -22
  302. package/src/util/ThemedClassName.ts +0 -7
  303. /package/dist/types/src/components/{Buttons → Button}/Toggle.d.ts +0 -0
  304. /package/dist/types/src/components/{Buttons → Button}/index.d.ts +0 -0
  305. /package/dist/types/src/components/{Dialogs → Dialog}/index.d.ts +0 -0
  306. /package/dist/types/src/components/{Lists → List}/ListDropIndicator.d.ts +0 -0
  307. /package/dist/types/src/components/{Lists → List}/TreeDropIndicator.d.ts +0 -0
  308. /package/dist/types/src/components/{Lists → List}/index.d.ts +0 -0
  309. /package/dist/types/src/components/{Menus → Menu}/index.d.ts +0 -0
  310. /package/src/components/{Buttons → Button}/Toggle.tsx +0 -0
  311. /package/src/components/{Buttons → Button}/index.ts +0 -0
  312. /package/src/components/{Dialogs → Dialog}/index.ts +0 -0
  313. /package/src/components/{Lists → List}/index.ts +0 -0
  314. /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';
6
- import { createContextScope, type Scope } from '@radix-ui/react-context';
5
+ import { useFocusFinders } from '@fluentui/react-tabster';
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 ComponentPropsWithRef, type CSSProperties, 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,13 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
6
-
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
7
6
  import React from 'react';
8
7
 
9
- import { Main, useSidebars } from './Main';
10
8
  import { withTheme } from '../../testing';
11
- import { Button } from '../Buttons';
9
+ import { Button } from '../Button';
10
+
11
+ import { Main, useSidebars } from './Main';
12
12
 
13
13
  type StoryMainArgs = {};
14
14
 
@@ -45,15 +45,23 @@ const DefaultStory = (_args: StoryMainArgs) => {
45
45
  );
46
46
  };
47
47
 
48
- export default {
48
+ const meta = {
49
49
  title: 'ui/react-ui-core/Main',
50
50
  component: Main.Root,
51
51
  render: DefaultStory,
52
52
  decorators: [withTheme],
53
- parameters: { chromatic: { disableSnapshot: false } },
54
- };
53
+ parameters: {
54
+ layout: 'fullscreen',
55
+ chromatic: {
56
+ disableSnapshot: false,
57
+ },
58
+ },
59
+ } satisfies Meta<typeof DefaultStory>;
60
+
61
+ export default meta;
62
+
63
+ type Story = StoryObj<typeof meta>;
55
64
 
56
- export const Default = {
65
+ export const Default: Story = {
57
66
  args: {},
58
- layout: 'fullscreen',
59
67
  };
@@ -2,49 +2,41 @@
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
- import { Root as DialogRoot, DialogContent, DialogTitle } from '@radix-ui/react-dialog';
7
+ import { DialogContent, Root as DialogRoot, DialogTitle } from '@radix-ui/react-dialog';
7
8
  import { Primitive } from '@radix-ui/react-primitive';
8
9
  import { Slot } from '@radix-ui/react-slot';
9
10
  import { useControllableState } from '@radix-ui/react-use-controllable-state';
10
11
  import React, {
11
12
  type ComponentPropsWithRef,
13
+ type ComponentPropsWithoutRef,
12
14
  type Dispatch,
13
- forwardRef,
15
+ type KeyboardEvent,
14
16
  type PropsWithChildren,
15
17
  type SetStateAction,
18
+ forwardRef,
16
19
  useCallback,
17
20
  useEffect,
18
21
  useRef,
19
22
  useState,
20
- type KeyboardEvent,
21
- type ComponentPropsWithoutRef,
22
23
  } from 'react';
23
24
 
24
25
  import { log } from '@dxos/log';
25
- import { useMediaQuery, useForwardedRef } from '@dxos/react-hooks';
26
+ import { useForwardedRef, useMediaQuery } from '@dxos/react-hooks';
26
27
 
27
- import { useSwipeToDismiss } from './useSwipeToDismiss';
28
28
  import { useThemeContext } from '../../hooks';
29
29
  import { type ThemedClassName } from '../../util';
30
30
  import { type Label, toLocalizedString, useTranslation } from '../ThemeProvider';
31
31
 
32
+ import { useSwipeToDismiss } from './useSwipeToDismiss';
33
+
34
+ const MAIN_NAME = 'Main';
32
35
  const MAIN_ROOT_NAME = 'MainRoot';
33
36
  const NAVIGATION_SIDEBAR_NAME = 'NavigationSidebar';
34
37
  const COMPLEMENTARY_SIDEBAR_NAME = 'ComplementarySidebar';
35
- const MAIN_NAME = 'Main';
36
38
  const GENERIC_CONSUMER_NAME = 'GenericConsumer';
37
39
 
38
- type SidebarState = 'expanded' | 'collapsed' | 'closed';
39
-
40
- type MainContextValue = {
41
- resizing: boolean;
42
- navigationSidebarState: SidebarState;
43
- setNavigationSidebarState: Dispatch<SetStateAction<SidebarState | undefined>>;
44
- complementarySidebarState: SidebarState;
45
- setComplementarySidebarState: Dispatch<SetStateAction<SidebarState | undefined>>;
46
- };
47
-
48
40
  const landmarkAttr = 'data-main-landmark';
49
41
 
50
42
  /**
@@ -69,20 +61,38 @@ const useLandmarkMover = (propsOnKeyDown: ComponentPropsWithoutRef<'div'>['onKey
69
61
  },
70
62
  [propsOnKeyDown],
71
63
  );
72
- const focusableGroupAttrs = window ? {} : { tabBehavior: 'limited', ignoreDefaultKeydown: { Tab: true } };
73
64
 
74
- return { onKeyDown: handleKeyDown, [landmarkAttr]: landmark, tabIndex: 0, ...focusableGroupAttrs };
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 } });
68
+
69
+ return {
70
+ onKeyDown: handleKeyDown,
71
+ [landmarkAttr]: landmark,
72
+ tabIndex: 0,
73
+ ...focusableGroupAttrs,
74
+ };
75
+ };
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>>;
75
85
  };
76
86
 
77
87
  const [MainProvider, useMainContext] = createContext<MainContextValue>(MAIN_NAME, {
78
88
  resizing: false,
79
89
  navigationSidebarState: 'closed',
80
- setNavigationSidebarState: (nextState) => {
90
+ setNavigationSidebarState: (_nextState) => {
81
91
  // TODO(burdon): Standardize with other context missing errors using raise.
82
92
  log.warn('Attempt to set sidebar state without initializing `MainRoot`');
83
93
  },
84
94
  complementarySidebarState: 'closed',
85
- setComplementarySidebarState: (nextState) => {
95
+ setComplementarySidebarState: (_nextState) => {
86
96
  // TODO(burdon): Standardize with other context missing errors using raise.
87
97
  log.warn('Attempt to set sidebar state without initializing `MainRoot`');
88
98
  },
@@ -135,7 +145,7 @@ const MainRoot = ({
135
145
  children,
136
146
  ...props
137
147
  }: MainRootProps) => {
138
- const [isLg] = useMediaQuery('lg', { ssr: false });
148
+ const [isLg] = useMediaQuery('lg');
139
149
  const [navigationSidebarState = isLg ? 'expanded' : 'collapsed', setNavigationSidebarState] =
140
150
  useControllableState<SidebarState>({
141
151
  prop: propsNavigationSidebarState,
@@ -204,7 +214,7 @@ const MainSidebar = forwardRef<HTMLDivElement, MainSidebarProps>(
204
214
  { classNames, children, swipeToDismiss, onOpenAutoFocus, state, resizing, onStateChange, side, label, ...props },
205
215
  forwardedRef,
206
216
  ) => {
207
- const [isLg] = useMediaQuery('lg', { ssr: false });
217
+ const [isLg] = useMediaQuery('lg');
208
218
  const { tx } = useThemeContext();
209
219
  const { t } = useTranslation();
210
220
  const ref = useForwardedRef(forwardedRef);
@@ -212,10 +222,15 @@ const MainSidebar = forwardRef<HTMLDivElement, MainSidebarProps>(
212
222
  useSwipeToDismiss(swipeToDismiss ? ref : noopRef, {
213
223
  onDismiss: () => onStateChange?.('closed'),
214
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.
215
227
  const handleKeyDown = useCallback(
216
228
  (event: KeyboardEvent<HTMLDivElement>) => {
217
- if (event.key === 'Escape') {
218
- ((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();
219
234
  }
220
235
  props.onKeyDown?.(event);
221
236
  },
@@ -233,8 +248,8 @@ const MainSidebar = forwardRef<HTMLDivElement, MainSidebarProps>(
233
248
  data-state={state}
234
249
  data-resizing={resizing ? 'true' : 'false'}
235
250
  className={tx('main.sidebar', 'main__sidebar', {}, classNames)}
236
- onKeyDown={handleKeyDown}
237
- {...(state === 'closed' && { inert: 'true' })}
251
+ onKeyDownCapture={handleKeyDown}
252
+ {...(state === 'closed' && { inert: true })}
238
253
  ref={ref}
239
254
  >
240
255
  {children}
@@ -323,7 +338,7 @@ MainContent.displayName = MAIN_NAME;
323
338
  type MainOverlayProps = ThemedClassName<Omit<ComponentPropsWithRef<typeof Primitive.div>, 'children'>>;
324
339
 
325
340
  const MainOverlay = forwardRef<HTMLDivElement, MainOverlayProps>(({ classNames, ...props }, forwardedRef) => {
326
- const [isLg] = useMediaQuery('lg', { ssr: false });
341
+ const [isLg] = useMediaQuery('lg');
327
342
  const { navigationSidebarState, setNavigationSidebarState, complementarySidebarState, setComplementarySidebarState } =
328
343
  useMainContext(MAIN_NAME);
329
344
  const { tx } = useThemeContext();
@@ -2,13 +2,13 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
6
-
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
7
6
  import React from 'react';
8
7
 
9
- import { ContextMenu } from './ContextMenu';
10
8
  import { withTheme } from '../../testing';
11
9
 
10
+ import { ContextMenu } from './ContextMenu';
11
+
12
12
  const DefaultStory = () => {
13
13
  // NOTE(thure): Since long-tap will select text in some OSs, apply `select-none` to `ContextMenu.Trigger` where possible.
14
14
  return (
@@ -91,15 +91,18 @@ const DefaultStory = () => {
91
91
  );
92
92
  };
93
93
 
94
- export default {
94
+ const meta = {
95
95
  title: 'ui/react-ui-core/ContextMenu',
96
- component: ContextMenu,
96
+ component: ContextMenu.Root as any,
97
97
  render: DefaultStory,
98
98
  decorators: [withTheme],
99
- parameters: { chromatic: { disableSnapshot: false } },
100
- };
99
+ } satisfies Meta<typeof DefaultStory>;
100
+
101
+ export default meta;
102
+
103
+ type Story = StoryObj<typeof meta>;
101
104
 
102
- export const Default = {
105
+ export const Default: Story = {
103
106
  args: {},
104
107
  parameters: {
105
108
  chromatic: { delay: 1600 },
@@ -34,6 +34,7 @@ const ContextMenuContent = forwardRef<HTMLDivElement, ContextMenuContentProps>(
34
34
  return (
35
35
  <ContextMenuPrimitive.Content
36
36
  {...props}
37
+ data-arrow-keys='up down'
37
38
  collisionPadding={safeCollisionPadding}
38
39
  className={tx('menu.content', 'menu', { elevation }, classNames)}
39
40
  ref={forwardedRef}
@@ -2,13 +2,13 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
6
-
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
7
6
  import React, { useRef, useState } from 'react';
8
7
 
9
- import { DropdownMenu } from './DropdownMenu';
10
8
  import { withTheme } from '../../testing';
11
- import { Button } from '../Buttons';
9
+ import { Button } from '../Button';
10
+
11
+ import { DropdownMenu } from './DropdownMenu';
12
12
 
13
13
  const DefaultStory = () => {
14
14
  return (
@@ -91,15 +91,18 @@ const DefaultStory = () => {
91
91
  );
92
92
  };
93
93
 
94
- export default {
94
+ const meta = {
95
95
  title: 'ui/react-ui-core/DropdownMenu',
96
- component: DropdownMenu,
96
+ component: DropdownMenu.Root,
97
97
  render: DefaultStory,
98
98
  decorators: [withTheme],
99
- parameters: { chromatic: { disableSnapshot: false } },
100
- };
99
+ } satisfies Meta<typeof DefaultStory>;
100
+
101
+ export default meta;
102
+
103
+ type Story = StoryObj<typeof meta>;
101
104
 
102
- export const Default = {
105
+ export const Default: Story = {
103
106
  args: {},
104
107
  parameters: {
105
108
  chromatic: { delay: 1600 },