@dxos/react-ui 0.8.4-main.dedc0f3 → 0.8.4-main.e00bdcdb52

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 (469) hide show
  1. package/dist/lib/browser/chunk-BDBC6H6V.mjs +848 -0
  2. package/dist/lib/browser/chunk-BDBC6H6V.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +4101 -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 -60
  7. package/dist/lib/browser/testing/index.mjs.map +4 -4
  8. package/dist/lib/browser/translations.mjs +18 -0
  9. package/dist/lib/browser/translations.mjs.map +7 -0
  10. package/dist/lib/node-esm/chunk-3JSJK2ZY.mjs +850 -0
  11. package/dist/lib/node-esm/chunk-3JSJK2ZY.mjs.map +7 -0
  12. package/dist/lib/node-esm/index.mjs +4101 -61
  13. package/dist/lib/node-esm/index.mjs.map +4 -4
  14. package/dist/lib/node-esm/meta.json +1 -1
  15. package/dist/lib/node-esm/testing/index.mjs +112 -60
  16. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  17. package/dist/lib/node-esm/translations.mjs +20 -0
  18. package/dist/lib/node-esm/translations.mjs.map +7 -0
  19. package/dist/types/src/components/Avatars/Avatar.d.ts +1 -1
  20. package/dist/types/src/components/Avatars/Avatar.d.ts.map +1 -1
  21. package/dist/types/src/components/Avatars/Avatar.stories.d.ts +0 -6
  22. package/dist/types/src/components/Avatars/Avatar.stories.d.ts.map +1 -1
  23. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts +0 -6
  24. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts.map +1 -1
  25. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
  26. package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts +0 -6
  27. package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts.map +1 -1
  28. package/dist/types/src/components/{Buttons → Button}/Button.d.ts +4 -4
  29. package/dist/types/src/components/Button/Button.d.ts.map +1 -0
  30. package/dist/types/src/components/{Buttons → Button}/Button.stories.d.ts +2 -8
  31. package/dist/types/src/components/Button/Button.stories.d.ts.map +1 -0
  32. package/dist/types/src/components/{Buttons → Button}/IconButton.d.ts +3 -2
  33. package/dist/types/src/components/Button/IconButton.d.ts.map +1 -0
  34. package/dist/types/src/components/{Buttons → Button}/IconButton.stories.d.ts +1 -4
  35. package/dist/types/src/components/Button/IconButton.stories.d.ts.map +1 -0
  36. package/dist/types/src/components/{Buttons → Button}/Toggle.d.ts +2 -2
  37. package/dist/types/src/components/Button/Toggle.d.ts.map +1 -0
  38. package/dist/types/src/components/Button/Toggle.stories.d.ts +16 -0
  39. package/dist/types/src/components/Button/Toggle.stories.d.ts.map +1 -0
  40. package/dist/types/src/components/Button/ToggleGroup.d.ts +27 -0
  41. package/dist/types/src/components/Button/ToggleGroup.d.ts.map +1 -0
  42. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts +27 -0
  43. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts.map +1 -0
  44. package/dist/types/src/components/Button/index.d.ts.map +1 -0
  45. package/dist/types/src/components/Card/Card.d.ts +127 -0
  46. package/dist/types/src/components/Card/Card.d.ts.map +1 -0
  47. package/dist/types/src/components/Card/Card.stories.d.ts +21 -0
  48. package/dist/types/src/components/Card/Card.stories.d.ts.map +1 -0
  49. package/dist/types/src/components/Card/index.d.ts +2 -0
  50. package/dist/types/src/components/Card/index.d.ts.map +1 -0
  51. package/dist/types/src/components/Clipboard/ClipboardProvider.d.ts.map +1 -1
  52. package/dist/types/src/components/Clipboard/CopyButton.d.ts +1 -1
  53. package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -1
  54. package/dist/types/src/components/Clipboard/index.d.ts +10 -1
  55. package/dist/types/src/components/Clipboard/index.d.ts.map +1 -1
  56. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts +1 -1
  57. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts.map +1 -1
  58. package/dist/types/src/components/Dialog/AlertDialog.d.ts +51 -0
  59. package/dist/types/src/components/Dialog/AlertDialog.d.ts.map +1 -0
  60. package/dist/types/src/components/{Dialogs → Dialog}/AlertDialog.stories.d.ts +0 -6
  61. package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts.map +1 -0
  62. package/dist/types/src/components/Dialog/Dialog.d.ts +64 -0
  63. package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -0
  64. package/dist/types/src/components/Dialog/Dialog.stories.d.ts +25 -0
  65. package/dist/types/src/components/Dialog/Dialog.stories.d.ts.map +1 -0
  66. package/dist/types/src/components/Dialog/index.d.ts.map +1 -0
  67. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts +1 -1
  68. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts.map +1 -1
  69. package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts +11 -0
  70. package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts.map +1 -0
  71. package/dist/types/src/components/ErrorFallback/ErrorFallback.stories.d.ts +7 -0
  72. package/dist/types/src/components/ErrorFallback/ErrorFallback.stories.d.ts.map +1 -0
  73. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts +19 -0
  74. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts.map +1 -0
  75. package/dist/types/src/components/ErrorFallback/ThrowError.d.ts +9 -0
  76. package/dist/types/src/components/ErrorFallback/ThrowError.d.ts.map +1 -0
  77. package/dist/types/src/components/ErrorFallback/index.d.ts +5 -0
  78. package/dist/types/src/components/ErrorFallback/index.d.ts.map +1 -0
  79. package/dist/types/src/components/Focus/Focus.d.ts +36 -0
  80. package/dist/types/src/components/Focus/Focus.d.ts.map +1 -0
  81. package/dist/types/src/components/Focus/Focus.stories.d.ts +9 -0
  82. package/dist/types/src/components/Focus/Focus.stories.d.ts.map +1 -0
  83. package/dist/types/src/components/Focus/index.d.ts +2 -0
  84. package/dist/types/src/components/Focus/index.d.ts.map +1 -0
  85. package/dist/types/src/components/Icon/Icon.d.ts +5 -2
  86. package/dist/types/src/components/Icon/Icon.d.ts.map +1 -1
  87. package/dist/types/src/components/Icon/Icon.stories.d.ts +25 -0
  88. package/dist/types/src/components/Icon/Icon.stories.d.ts.map +1 -0
  89. package/dist/types/src/components/Image/Image.d.ts +15 -0
  90. package/dist/types/src/components/Image/Image.d.ts.map +1 -0
  91. package/dist/types/src/components/Image/Image.stories.d.ts +34 -0
  92. package/dist/types/src/components/Image/Image.stories.d.ts.map +1 -0
  93. package/dist/types/src/components/Image/index.d.ts +2 -0
  94. package/dist/types/src/components/Image/index.d.ts.map +1 -0
  95. package/dist/types/src/components/Input/Input.d.ts +19 -24
  96. package/dist/types/src/components/Input/Input.d.ts.map +1 -1
  97. package/dist/types/src/components/Input/Input.stories.d.ts +8 -14
  98. package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
  99. package/dist/types/src/components/Link/Link.stories.d.ts +0 -6
  100. package/dist/types/src/components/Link/Link.stories.d.ts.map +1 -1
  101. package/dist/types/src/components/{Lists → List}/List.d.ts +6 -4
  102. package/dist/types/src/components/List/List.d.ts.map +1 -0
  103. package/dist/types/src/components/{Lists → List}/List.stories.d.ts +3 -7
  104. package/dist/types/src/components/List/List.stories.d.ts.map +1 -0
  105. package/dist/types/src/components/List/ListDropIndicator.d.ts.map +1 -0
  106. package/dist/types/src/components/{Lists → List}/Tree.d.ts +2 -2
  107. package/dist/types/src/components/List/Tree.d.ts.map +1 -0
  108. package/dist/types/src/components/{Lists → List}/Tree.stories.d.ts +0 -6
  109. package/dist/types/src/components/List/Tree.stories.d.ts.map +1 -0
  110. package/dist/types/src/components/List/TreeDropIndicator.d.ts.map +1 -0
  111. package/dist/types/src/components/{Lists → List}/Treegrid.d.ts +5 -9
  112. package/dist/types/src/components/List/Treegrid.d.ts.map +1 -0
  113. package/dist/types/src/components/List/Treegrid.stories.d.ts.map +1 -0
  114. package/dist/types/src/components/List/index.d.ts.map +1 -0
  115. package/dist/types/src/components/Main/Main.d.ts +24 -30
  116. package/dist/types/src/components/Main/Main.d.ts.map +1 -1
  117. package/dist/types/src/components/Main/Main.stories.d.ts +0 -4
  118. package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
  119. package/dist/types/src/components/Main/useSwipeToDismiss.d.ts.map +1 -1
  120. package/dist/types/src/components/{Menus → Menu}/ContextMenu.d.ts +6 -6
  121. package/dist/types/src/components/Menu/ContextMenu.d.ts.map +1 -0
  122. package/dist/types/src/components/{Menus → Menu}/ContextMenu.stories.d.ts +0 -6
  123. package/dist/types/src/components/Menu/ContextMenu.stories.d.ts.map +1 -0
  124. package/dist/types/src/components/Menu/DropdownMenu.d.ts +121 -0
  125. package/dist/types/src/components/Menu/DropdownMenu.d.ts.map +1 -0
  126. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts +28 -0
  127. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts.map +1 -0
  128. package/dist/types/src/components/Menu/index.d.ts.map +1 -0
  129. package/dist/types/src/components/Message/Message.d.ts +1 -1
  130. package/dist/types/src/components/Message/Message.d.ts.map +1 -1
  131. package/dist/types/src/components/Message/Message.stories.d.ts +5 -7
  132. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
  133. package/dist/types/src/components/Popover/Popover.d.ts +41 -24
  134. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  135. package/dist/types/src/components/Popover/Popover.stories.d.ts +0 -6
  136. package/dist/types/src/components/Popover/Popover.stories.d.ts.map +1 -1
  137. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +27 -27
  138. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  139. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +55 -12
  140. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
  141. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +68 -0
  142. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -0
  143. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts +23 -0
  144. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts.map +1 -0
  145. package/dist/types/src/components/ScrollContainer/index.d.ts +2 -0
  146. package/dist/types/src/components/ScrollContainer/index.d.ts.map +1 -0
  147. package/dist/types/src/components/Select/Select.d.ts +10 -10
  148. package/dist/types/src/components/Select/Select.d.ts.map +1 -1
  149. package/dist/types/src/components/Select/Select.stories.d.ts +2 -8
  150. package/dist/types/src/components/Select/Select.stories.d.ts.map +1 -1
  151. package/dist/types/src/components/Separator/Separator.d.ts +4 -4
  152. package/dist/types/src/components/Separator/Separator.d.ts.map +1 -1
  153. package/dist/types/src/components/Skeleton/Skeleton.d.ts +12 -0
  154. package/dist/types/src/components/Skeleton/Skeleton.d.ts.map +1 -0
  155. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts +17 -0
  156. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts.map +1 -0
  157. package/dist/types/src/components/Skeleton/index.d.ts +2 -0
  158. package/dist/types/src/components/Skeleton/index.d.ts.map +1 -0
  159. package/dist/types/src/components/Splitter/Splitter.d.ts +34 -0
  160. package/dist/types/src/components/Splitter/Splitter.d.ts.map +1 -0
  161. package/dist/types/src/components/Splitter/Splitter.stories.d.ts +7 -0
  162. package/dist/types/src/components/Splitter/Splitter.stories.d.ts.map +1 -0
  163. package/dist/types/src/components/Splitter/index.d.ts +2 -0
  164. package/dist/types/src/components/Splitter/index.d.ts.map +1 -0
  165. package/dist/types/src/components/Status/Status.d.ts +3 -4
  166. package/dist/types/src/components/Status/Status.d.ts.map +1 -1
  167. package/dist/types/src/components/Status/Status.stories.d.ts +4 -8
  168. package/dist/types/src/components/Status/Status.stories.d.ts.map +1 -1
  169. package/dist/types/src/components/Tag/Tag.d.ts +1 -1
  170. package/dist/types/src/components/Tag/Tag.d.ts.map +1 -1
  171. package/dist/types/src/components/Tag/Tag.stories.d.ts +5 -10
  172. package/dist/types/src/components/Tag/Tag.stories.d.ts.map +1 -1
  173. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts +3 -3
  174. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  175. package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts +12 -0
  176. package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts.map +1 -0
  177. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +55 -63
  178. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
  179. package/dist/types/src/components/ThemeProvider/index.d.ts +2 -1
  180. package/dist/types/src/components/ThemeProvider/index.d.ts.map +1 -1
  181. package/dist/types/src/components/Toast/Toast.d.ts +20 -20
  182. package/dist/types/src/components/Toast/Toast.d.ts.map +1 -1
  183. package/dist/types/src/components/Toast/Toast.stories.d.ts +0 -6
  184. package/dist/types/src/components/Toast/Toast.stories.d.ts.map +1 -1
  185. package/dist/types/src/components/Toolbar/Toolbar.d.ts +41 -23
  186. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  187. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts +0 -6
  188. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
  189. package/dist/types/src/components/Tooltip/Tooltip.d.ts +11 -13
  190. package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
  191. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts +2 -8
  192. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
  193. package/dist/types/src/components/index.d.ts +14 -8
  194. package/dist/types/src/components/index.d.ts.map +1 -1
  195. package/dist/types/src/exemplars/generics.stories.d.ts +19 -0
  196. package/dist/types/src/exemplars/generics.stories.d.ts.map +1 -0
  197. package/dist/types/src/exemplars/slot.stories.d.ts +15 -0
  198. package/dist/types/src/exemplars/slot.stories.d.ts.map +1 -0
  199. package/dist/types/src/exemplars/tabster.stories.d.ts +8 -0
  200. package/dist/types/src/exemplars/tabster.stories.d.ts.map +1 -0
  201. package/dist/types/src/exemplars/virtualizer.stories.d.ts +11 -0
  202. package/dist/types/src/exemplars/virtualizer.stories.d.ts.map +1 -0
  203. package/dist/types/src/hooks/index.d.ts +1 -0
  204. package/dist/types/src/hooks/index.d.ts.map +1 -1
  205. package/dist/types/src/hooks/useDensityContext.d.ts +2 -2
  206. package/dist/types/src/hooks/useDensityContext.d.ts.map +1 -1
  207. package/dist/types/src/hooks/useElevationContext.d.ts +1 -1
  208. package/dist/types/src/hooks/useElevationContext.d.ts.map +1 -1
  209. package/dist/types/src/hooks/useIconHref.d.ts.map +1 -1
  210. package/dist/types/src/hooks/useSafeArea.d.ts.map +1 -1
  211. package/dist/types/src/hooks/useSafeCollisionPadding.d.ts.map +1 -1
  212. package/dist/types/src/hooks/useVisualViewport.d.ts +2 -2
  213. package/dist/types/src/hooks/useVisualViewport.d.ts.map +1 -1
  214. package/dist/types/src/index.d.ts +2 -1
  215. package/dist/types/src/index.d.ts.map +1 -1
  216. package/dist/types/src/playground/Controls.stories.d.ts +0 -6
  217. package/dist/types/src/playground/Controls.stories.d.ts.map +1 -1
  218. package/dist/types/src/playground/Custom.stories.d.ts +2 -3
  219. package/dist/types/src/playground/Custom.stories.d.ts.map +1 -1
  220. package/dist/types/src/playground/Typography.stories.d.ts +0 -6
  221. package/dist/types/src/playground/Typography.stories.d.ts.map +1 -1
  222. package/dist/types/src/primitives/Column/Column.d.ts +33 -0
  223. package/dist/types/src/primitives/Column/Column.d.ts.map +1 -0
  224. package/dist/types/src/primitives/Column/Column.stories.d.ts +25 -0
  225. package/dist/types/src/primitives/Column/Column.stories.d.ts.map +1 -0
  226. package/dist/types/src/primitives/Column/index.d.ts +2 -0
  227. package/dist/types/src/primitives/Column/index.d.ts.map +1 -0
  228. package/dist/types/src/primitives/Container/Container.d.ts +7 -0
  229. package/dist/types/src/primitives/Container/Container.d.ts.map +1 -0
  230. package/dist/types/src/primitives/Container/Container.stories.d.ts +6 -0
  231. package/dist/types/src/primitives/Container/Container.stories.d.ts.map +1 -0
  232. package/dist/types/src/primitives/Container/index.d.ts +2 -0
  233. package/dist/types/src/primitives/Container/index.d.ts.map +1 -0
  234. package/dist/types/src/primitives/Flex/Flex.d.ts +11 -0
  235. package/dist/types/src/primitives/Flex/Flex.d.ts.map +1 -0
  236. package/dist/types/src/primitives/Flex/Flex.stories.d.ts +8 -0
  237. package/dist/types/src/primitives/Flex/Flex.stories.d.ts.map +1 -0
  238. package/dist/types/src/primitives/Flex/index.d.ts +2 -0
  239. package/dist/types/src/primitives/Flex/index.d.ts.map +1 -0
  240. package/dist/types/src/primitives/Grid/Grid.d.ts +10 -0
  241. package/dist/types/src/primitives/Grid/Grid.d.ts.map +1 -0
  242. package/dist/types/src/primitives/Grid/Grid.stories.d.ts +8 -0
  243. package/dist/types/src/primitives/Grid/Grid.stories.d.ts.map +1 -0
  244. package/dist/types/src/primitives/Grid/index.d.ts +2 -0
  245. package/dist/types/src/primitives/Grid/index.d.ts.map +1 -0
  246. package/dist/types/src/primitives/Panel/Panel.d.ts +35 -0
  247. package/dist/types/src/primitives/Panel/Panel.d.ts.map +1 -0
  248. package/dist/types/src/primitives/Panel/Panel.stories.d.ts +6 -0
  249. package/dist/types/src/primitives/Panel/Panel.stories.d.ts.map +1 -0
  250. package/dist/types/src/primitives/Panel/index.d.ts +2 -0
  251. package/dist/types/src/primitives/Panel/index.d.ts.map +1 -0
  252. package/dist/types/src/primitives/index.d.ts +6 -0
  253. package/dist/types/src/primitives/index.d.ts.map +1 -0
  254. package/dist/types/src/testing/Loading.d.ts +9 -0
  255. package/dist/types/src/testing/Loading.d.ts.map +1 -0
  256. package/dist/types/src/testing/decorators/index.d.ts +2 -1
  257. package/dist/types/src/testing/decorators/index.d.ts.map +1 -1
  258. package/dist/types/src/testing/decorators/withLayout.d.ts +15 -0
  259. package/dist/types/src/testing/decorators/withLayout.d.ts.map +1 -0
  260. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts +12 -0
  261. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts.map +1 -0
  262. package/dist/types/src/testing/decorators/withTheme.d.ts +5 -1
  263. package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
  264. package/dist/types/src/testing/index.d.ts +1 -0
  265. package/dist/types/src/testing/index.d.ts.map +1 -1
  266. package/dist/types/src/translations.d.ts +11 -0
  267. package/dist/types/src/translations.d.ts.map +1 -0
  268. package/dist/types/src/util/index.d.ts +2 -1
  269. package/dist/types/src/util/index.d.ts.map +1 -1
  270. package/dist/types/src/util/usePx.d.ts +8 -0
  271. package/dist/types/src/util/usePx.d.ts.map +1 -0
  272. package/dist/types/tsconfig.tsbuildinfo +1 -1
  273. package/package.json +52 -39
  274. package/src/components/Avatars/Avatar.stories.tsx +7 -11
  275. package/src/components/Avatars/Avatar.tsx +7 -15
  276. package/src/components/Avatars/AvatarGroup.stories.tsx +2 -6
  277. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +4 -8
  278. package/src/components/Breadcrumb/Breadcrumb.tsx +11 -37
  279. package/src/components/{Buttons → Button}/Button.stories.tsx +5 -8
  280. package/src/components/{Buttons → Button}/Button.tsx +12 -26
  281. package/src/components/{Buttons → Button}/IconButton.stories.tsx +8 -9
  282. package/src/components/{Buttons → Button}/IconButton.tsx +20 -15
  283. package/src/components/{Buttons → Button}/Toggle.stories.tsx +7 -10
  284. package/src/components/{Buttons → Button}/Toggle.tsx +4 -4
  285. package/src/components/{Buttons → Button}/ToggleGroup.stories.tsx +2 -6
  286. package/src/components/{Buttons → Button}/ToggleGroup.tsx +12 -16
  287. package/src/components/Card/Card.stories.tsx +151 -0
  288. package/src/components/Card/Card.tsx +505 -0
  289. package/src/components/Card/index.ts +5 -0
  290. package/src/components/Clipboard/CopyButton.tsx +8 -9
  291. package/src/components/DensityProvider/DensityProvider.tsx +1 -1
  292. package/src/components/Dialog/AlertDialog.stories.tsx +68 -0
  293. package/src/components/{Dialogs → Dialog}/AlertDialog.tsx +123 -82
  294. package/src/components/Dialog/Dialog.stories.tsx +177 -0
  295. package/src/components/Dialog/Dialog.tsx +285 -0
  296. package/src/components/ElevationProvider/ElevationProvider.tsx +1 -1
  297. package/src/components/ErrorFallback/ErrorFallback.stories.tsx +45 -0
  298. package/src/components/ErrorFallback/ErrorFallback.tsx +70 -0
  299. package/src/components/ErrorFallback/ErrorStack.tsx +114 -0
  300. package/src/components/ErrorFallback/ThrowError.tsx +37 -0
  301. package/src/components/ErrorFallback/index.ts +9 -0
  302. package/src/components/Focus/AUDIT.md +43 -0
  303. package/src/components/Focus/Focus.stories.tsx +230 -0
  304. package/src/components/Focus/Focus.tsx +201 -0
  305. package/src/components/Focus/index.ts +5 -0
  306. package/src/components/Icon/Icon.stories.tsx +143 -0
  307. package/src/components/Icon/Icon.tsx +6 -2
  308. package/src/components/Image/Image.stories.tsx +86 -0
  309. package/src/components/Image/Image.tsx +246 -0
  310. package/src/components/Image/index.ts +5 -0
  311. package/src/components/Input/Input.stories.tsx +21 -44
  312. package/src/components/Input/Input.tsx +40 -76
  313. package/src/components/Link/Link.stories.tsx +2 -6
  314. package/src/components/Link/Link.tsx +2 -2
  315. package/src/components/{Lists → List}/List.stories.tsx +30 -38
  316. package/src/components/{Lists → List}/List.tsx +17 -21
  317. package/src/components/{Lists → List}/ListDropIndicator.tsx +7 -7
  318. package/src/components/{Lists → List}/Tree.stories.tsx +5 -9
  319. package/src/components/{Lists → List}/Tree.tsx +0 -1
  320. package/src/components/{Lists → List}/TreeDropIndicator.tsx +6 -6
  321. package/src/components/{Lists → List}/Treegrid.stories.tsx +29 -30
  322. package/src/components/List/Treegrid.tsx +188 -0
  323. package/src/components/Main/Main.stories.tsx +41 -24
  324. package/src/components/Main/Main.tsx +163 -98
  325. package/src/components/{Menus → Menu}/ContextMenu.stories.tsx +2 -6
  326. package/src/components/{Menus → Menu}/ContextMenu.tsx +9 -33
  327. package/src/components/{Menus → Menu}/DropdownMenu.stories.tsx +3 -7
  328. package/src/components/{Menus → Menu}/DropdownMenu.tsx +139 -112
  329. package/src/components/Message/Message.stories.tsx +27 -15
  330. package/src/components/Message/Message.tsx +43 -34
  331. package/src/components/Popover/Popover.stories.tsx +8 -12
  332. package/src/components/Popover/Popover.tsx +118 -96
  333. package/src/components/ScrollArea/ScrollArea.stories.tsx +222 -36
  334. package/src/components/ScrollArea/ScrollArea.tsx +97 -79
  335. package/src/components/ScrollArea/index.ts +1 -1
  336. package/src/components/ScrollContainer/ScrollContainer.stories.tsx +91 -0
  337. package/src/components/ScrollContainer/ScrollContainer.tsx +347 -0
  338. package/src/components/ScrollContainer/index.ts +5 -0
  339. package/src/components/Select/Select.stories.tsx +9 -12
  340. package/src/components/Select/Select.tsx +11 -27
  341. package/src/components/Separator/Separator.tsx +5 -8
  342. package/src/components/Skeleton/Skeleton.stories.tsx +51 -0
  343. package/src/components/Skeleton/Skeleton.tsx +26 -0
  344. package/src/components/Skeleton/index.ts +5 -0
  345. package/src/components/Splitter/Splitter.stories.tsx +83 -0
  346. package/src/components/Splitter/Splitter.tsx +127 -0
  347. package/src/components/Splitter/index.ts +5 -0
  348. package/src/components/Status/Status.stories.tsx +21 -21
  349. package/src/components/Status/Status.tsx +10 -7
  350. package/src/components/Tag/Tag.stories.tsx +8 -13
  351. package/src/components/Tag/Tag.tsx +3 -8
  352. package/src/components/ThemeProvider/ThemeProvider.stories.tsx +31 -0
  353. package/src/components/ThemeProvider/ThemeProvider.tsx +10 -10
  354. package/src/components/ThemeProvider/TranslationsProvider.tsx +1 -16
  355. package/src/components/ThemeProvider/index.ts +3 -3
  356. package/src/components/Toast/Toast.stories.tsx +3 -7
  357. package/src/components/Toast/Toast.tsx +22 -41
  358. package/src/components/Toolbar/Toolbar.stories.tsx +4 -10
  359. package/src/components/Toolbar/Toolbar.tsx +186 -12
  360. package/src/components/Tooltip/Tooltip.stories.tsx +21 -23
  361. package/src/components/Tooltip/Tooltip.tsx +42 -39
  362. package/src/components/index.ts +15 -9
  363. package/src/exemplars/generics.stories.tsx +41 -0
  364. package/src/exemplars/slot.stories.tsx +117 -0
  365. package/src/exemplars/tabster.stories.tsx +127 -0
  366. package/src/exemplars/virtualizer.stories.tsx +137 -0
  367. package/src/hooks/index.ts +1 -0
  368. package/src/hooks/useDensityContext.ts +3 -3
  369. package/src/hooks/useElevationContext.ts +1 -1
  370. package/src/hooks/useSafeArea.ts +3 -2
  371. package/src/hooks/useVisualViewport.ts +4 -4
  372. package/src/index.ts +2 -1
  373. package/src/playground/Controls.stories.tsx +3 -12
  374. package/src/playground/Custom.stories.tsx +16 -30
  375. package/src/playground/Typography.stories.tsx +3 -6
  376. package/src/primitives/Column/AUDIT.md +148 -0
  377. package/src/primitives/Column/Column.stories.tsx +181 -0
  378. package/src/primitives/Column/Column.tsx +165 -0
  379. package/src/primitives/Column/index.ts +5 -0
  380. package/src/primitives/Container/Container.stories.tsx +29 -0
  381. package/src/primitives/Container/Container.tsx +19 -0
  382. package/src/primitives/Container/index.ts +5 -0
  383. package/src/primitives/Flex/Flex.stories.tsx +57 -0
  384. package/src/primitives/Flex/Flex.tsx +27 -0
  385. package/src/primitives/Flex/index.ts +5 -0
  386. package/src/primitives/Grid/Grid.stories.tsx +56 -0
  387. package/src/primitives/Grid/Grid.tsx +30 -0
  388. package/src/primitives/Grid/index.ts +5 -0
  389. package/src/primitives/Panel/Panel.stories.tsx +68 -0
  390. package/src/primitives/Panel/Panel.tsx +120 -0
  391. package/src/primitives/Panel/index.ts +5 -0
  392. package/src/primitives/index.ts +9 -0
  393. package/src/testing/Loading.tsx +47 -0
  394. package/src/testing/decorators/index.ts +2 -1
  395. package/src/testing/decorators/withLayout.tsx +77 -0
  396. package/src/testing/decorators/withLayoutVariants.tsx +48 -0
  397. package/src/testing/decorators/withTheme.tsx +37 -0
  398. package/src/testing/index.ts +2 -0
  399. package/src/translations.ts +19 -0
  400. package/src/util/index.ts +3 -1
  401. package/src/util/usePx.ts +62 -0
  402. package/dist/lib/browser/chunk-Y4PW3CX2.mjs +0 -4402
  403. package/dist/lib/browser/chunk-Y4PW3CX2.mjs.map +0 -7
  404. package/dist/lib/node-esm/chunk-L6LIOSFT.mjs +0 -4404
  405. package/dist/lib/node-esm/chunk-L6LIOSFT.mjs.map +0 -7
  406. package/dist/types/src/components/AnchoredOverflow/AnchoredOverflow.d.ts +0 -15
  407. package/dist/types/src/components/AnchoredOverflow/AnchoredOverflow.d.ts.map +0 -1
  408. package/dist/types/src/components/AnchoredOverflow/index.d.ts +0 -2
  409. package/dist/types/src/components/AnchoredOverflow/index.d.ts.map +0 -1
  410. package/dist/types/src/components/Buttons/Button.d.ts.map +0 -1
  411. package/dist/types/src/components/Buttons/Button.stories.d.ts.map +0 -1
  412. package/dist/types/src/components/Buttons/IconButton.d.ts.map +0 -1
  413. package/dist/types/src/components/Buttons/IconButton.stories.d.ts.map +0 -1
  414. package/dist/types/src/components/Buttons/Toggle.d.ts.map +0 -1
  415. package/dist/types/src/components/Buttons/Toggle.stories.d.ts +0 -19
  416. package/dist/types/src/components/Buttons/Toggle.stories.d.ts.map +0 -1
  417. package/dist/types/src/components/Buttons/ToggleGroup.d.ts +0 -31
  418. package/dist/types/src/components/Buttons/ToggleGroup.d.ts.map +0 -1
  419. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts +0 -37
  420. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts.map +0 -1
  421. package/dist/types/src/components/Buttons/index.d.ts.map +0 -1
  422. package/dist/types/src/components/Dialogs/AlertDialog.d.ts +0 -31
  423. package/dist/types/src/components/Dialogs/AlertDialog.d.ts.map +0 -1
  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 -26
  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.map +0 -1
  432. package/dist/types/src/components/Lists/ListDropIndicator.d.ts.map +0 -1
  433. package/dist/types/src/components/Lists/Tree.d.ts.map +0 -1
  434. package/dist/types/src/components/Lists/Tree.stories.d.ts.map +0 -1
  435. package/dist/types/src/components/Lists/TreeDropIndicator.d.ts.map +0 -1
  436. package/dist/types/src/components/Lists/Treegrid.d.ts.map +0 -1
  437. package/dist/types/src/components/Lists/Treegrid.stories.d.ts.map +0 -1
  438. package/dist/types/src/components/Lists/index.d.ts.map +0 -1
  439. package/dist/types/src/components/Menus/ContextMenu.d.ts.map +0 -1
  440. package/dist/types/src/components/Menus/ContextMenu.stories.d.ts.map +0 -1
  441. package/dist/types/src/components/Menus/DropdownMenu.d.ts +0 -113
  442. package/dist/types/src/components/Menus/DropdownMenu.d.ts.map +0 -1
  443. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts +0 -21
  444. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts.map +0 -1
  445. package/dist/types/src/components/Menus/index.d.ts.map +0 -1
  446. package/dist/types/src/testing/decorators/withSurfaceVariantsLayout.d.ts +0 -12
  447. package/dist/types/src/testing/decorators/withSurfaceVariantsLayout.d.ts.map +0 -1
  448. package/dist/types/src/util/ThemedClassName.d.ts +0 -5
  449. package/dist/types/src/util/ThemedClassName.d.ts.map +0 -1
  450. package/src/components/AnchoredOverflow/AnchoredOverflow.tsx +0 -59
  451. package/src/components/AnchoredOverflow/index.ts +0 -5
  452. package/src/components/Dialogs/AlertDialog.stories.tsx +0 -72
  453. package/src/components/Dialogs/Dialog.stories.tsx +0 -65
  454. package/src/components/Dialogs/Dialog.tsx +0 -159
  455. package/src/components/Lists/Treegrid.tsx +0 -152
  456. package/src/testing/decorators/withSurfaceVariantsLayout.tsx +0 -51
  457. package/src/testing/decorators/withTheme.ts +0 -25
  458. package/src/util/ThemedClassName.ts +0 -7
  459. /package/dist/types/src/components/{Buttons → Button}/index.d.ts +0 -0
  460. /package/dist/types/src/components/{Dialogs → Dialog}/index.d.ts +0 -0
  461. /package/dist/types/src/components/{Lists → List}/ListDropIndicator.d.ts +0 -0
  462. /package/dist/types/src/components/{Lists → List}/TreeDropIndicator.d.ts +0 -0
  463. /package/dist/types/src/components/{Lists → List}/Treegrid.stories.d.ts +0 -0
  464. /package/dist/types/src/components/{Lists → List}/index.d.ts +0 -0
  465. /package/dist/types/src/components/{Menus → Menu}/index.d.ts +0 -0
  466. /package/src/components/{Buttons → Button}/index.ts +0 -0
  467. /package/src/components/{Dialogs → Dialog}/index.ts +0 -0
  468. /package/src/components/{Lists → List}/index.ts +0 -0
  469. /package/src/components/{Menus → Menu}/index.ts +0 -0
@@ -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';
@@ -21,31 +22,30 @@ import React, {
21
22
  useState,
22
23
  } from 'react';
23
24
 
25
+ import { addEventListener } from '@dxos/async';
24
26
  import { log } from '@dxos/log';
25
27
  import { useForwardedRef, useMediaQuery } from '@dxos/react-hooks';
28
+ import { type MainStyleProps, osTranslations } from '@dxos/ui-theme';
26
29
 
27
30
  import { useThemeContext } from '../../hooks';
28
31
  import { type ThemedClassName } from '../../util';
29
32
  import { type Label, toLocalizedString, useTranslation } from '../ThemeProvider';
30
-
31
33
  import { useSwipeToDismiss } from './useSwipeToDismiss';
32
34
 
35
+ const MAIN_NAME = 'Main';
33
36
  const MAIN_ROOT_NAME = 'MainRoot';
37
+ const MAIN_OVERLAY_NAME = 'MainOverlay';
34
38
  const NAVIGATION_SIDEBAR_NAME = 'NavigationSidebar';
35
39
  const COMPLEMENTARY_SIDEBAR_NAME = 'ComplementarySidebar';
36
- const MAIN_NAME = 'Main';
37
- const GENERIC_CONSUMER_NAME = 'GenericConsumer';
38
-
39
- type SidebarState = 'expanded' | 'collapsed' | 'closed';
40
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>>;
41
+ const handleOpenAutoFocus = (event: Event) => {
42
+ !document.body.hasAttribute('data-w-keyboard') && event.preventDefault();
47
43
  };
48
44
 
45
+ //
46
+ // Landmark
47
+ //
48
+
49
49
  const landmarkAttr = 'data-main-landmark';
50
50
 
51
51
  /**
@@ -70,33 +70,60 @@ const useLandmarkMover = (propsOnKeyDown: ComponentPropsWithoutRef<'div'>['onKey
70
70
  },
71
71
  [propsOnKeyDown],
72
72
  );
73
- const focusableGroupAttrs = window ? {} : { tabBehavior: 'limited', ignoreDefaultKeydown: { Tab: true } };
73
+
74
+ // TODO(thure): This was disconnected once before in #8818;
75
+ // if this should change again to support the browser extension, please ensure the change doesn’t break web, desktop and mobile.
76
+ const focusableGroupAttrs = useFocusableGroup({ tabBehavior: 'limited', ignoreDefaultKeydown: { Tab: true } });
74
77
 
75
78
  return {
76
- onKeyDown: handleKeyDown,
77
79
  [landmarkAttr]: landmark,
78
80
  tabIndex: 0,
81
+ onKeyDown: handleKeyDown,
79
82
  ...focusableGroupAttrs,
80
83
  };
81
84
  };
82
85
 
86
+ //
87
+ // Context
88
+ //
89
+
90
+ // TODO(burdon): Define collapsed state.
91
+ type SidebarState = 'expanded' | 'collapsed' | 'closed';
92
+
93
+ type MainContextValue = {
94
+ resizing: boolean;
95
+
96
+ // Navigation
97
+ navigationSidebarState: SidebarState;
98
+ setNavigationSidebarState: Dispatch<SetStateAction<SidebarState | undefined>>;
99
+
100
+ // Complementary
101
+ complementarySidebarState: SidebarState;
102
+ setComplementarySidebarState: Dispatch<SetStateAction<SidebarState | undefined>>;
103
+ };
104
+
83
105
  const [MainProvider, useMainContext] = createContext<MainContextValue>(MAIN_NAME, {
84
106
  resizing: false,
107
+
85
108
  navigationSidebarState: 'closed',
86
109
  setNavigationSidebarState: (_nextState) => {
87
- // TODO(burdon): Standardize with other context missing errors using raise.
88
- log.warn('Attempt to set sidebar state without initializing `MainRoot`');
110
+ log.warn('Not initialized');
89
111
  },
112
+
90
113
  complementarySidebarState: 'closed',
91
114
  setComplementarySidebarState: (_nextState) => {
92
- // TODO(burdon): Standardize with other context missing errors using raise.
93
- log.warn('Attempt to set sidebar state without initializing `MainRoot`');
115
+ log.warn('Not initialized');
94
116
  },
95
117
  });
96
118
 
97
- const useSidebars = (consumerName = GENERIC_CONSUMER_NAME) => {
98
- const { setNavigationSidebarState, navigationSidebarState, setComplementarySidebarState, complementarySidebarState } =
99
- useMainContext(consumerName);
119
+ const useSidebars = (consumerName: string) => {
120
+ const {
121
+ navigationSidebarState,
122
+ setNavigationSidebarState,
123
+
124
+ complementarySidebarState,
125
+ setComplementarySidebarState,
126
+ } = useMainContext(consumerName);
100
127
 
101
128
  return {
102
129
  navigationSidebarState,
@@ -108,6 +135,7 @@ const useSidebars = (consumerName = GENERIC_CONSUMER_NAME) => {
108
135
  openNavigationSidebar: useCallback(() => setNavigationSidebarState('expanded'), []),
109
136
  collapseNavigationSidebar: useCallback(() => setNavigationSidebarState('collapsed'), []),
110
137
  closeNavigationSidebar: useCallback(() => setNavigationSidebarState('closed'), []),
138
+
111
139
  complementarySidebarState,
112
140
  setComplementarySidebarState,
113
141
  toggleComplementarySidebar: useCallback(
@@ -120,28 +148,33 @@ const useSidebars = (consumerName = GENERIC_CONSUMER_NAME) => {
120
148
  };
121
149
  };
122
150
 
151
+ //
152
+ // Root
153
+ //
154
+
123
155
  type MainRootProps = PropsWithChildren<{
124
156
  navigationSidebarState?: SidebarState;
125
157
  defaultNavigationSidebarState?: SidebarState;
126
158
  onNavigationSidebarStateChange?: (nextState: SidebarState) => void;
159
+
127
160
  complementarySidebarState?: SidebarState;
128
161
  defaultComplementarySidebarState?: SidebarState;
129
162
  onComplementarySidebarStateChange?: (nextState: SidebarState) => void;
130
163
  }>;
131
164
 
132
- const resizeDebounce = 3000;
133
-
134
165
  const MainRoot = ({
135
166
  navigationSidebarState: propsNavigationSidebarState,
136
- defaultNavigationSidebarState,
167
+ defaultNavigationSidebarState = 'closed',
137
168
  onNavigationSidebarStateChange,
169
+
138
170
  complementarySidebarState: propsComplementarySidebarState,
139
- defaultComplementarySidebarState,
171
+ defaultComplementarySidebarState = 'closed',
140
172
  onComplementarySidebarStateChange,
173
+
141
174
  children,
142
175
  ...props
143
176
  }: MainRootProps) => {
144
- const [isLg] = useMediaQuery('lg', { ssr: false });
177
+ const [isLg] = useMediaQuery('lg');
145
178
  const [navigationSidebarState = isLg ? 'expanded' : 'collapsed', setNavigationSidebarState] =
146
179
  useControllableState<SidebarState>({
147
180
  prop: propsNavigationSidebarState,
@@ -157,22 +190,21 @@ const MainRoot = ({
157
190
 
158
191
  const [resizing, setResizing] = useState(false);
159
192
  const resizeInterval = useRef<ReturnType<typeof setTimeout> | null>(null);
193
+ useEffect(
194
+ () =>
195
+ addEventListener(window, 'resize', () => {
196
+ setResizing(true);
197
+ if (resizeInterval.current) {
198
+ clearTimeout(resizeInterval.current);
199
+ }
160
200
 
161
- const handleResize = useCallback(() => {
162
- setResizing(true);
163
- if (resizeInterval.current) {
164
- clearTimeout(resizeInterval.current);
165
- }
166
- resizeInterval.current = setTimeout(() => {
167
- setResizing(false);
168
- resizeInterval.current = null;
169
- }, resizeDebounce);
170
- }, []);
171
-
172
- useEffect(() => {
173
- window.addEventListener('resize', handleResize);
174
- return () => window.removeEventListener('resize', handleResize);
175
- }, [handleResize]);
201
+ resizeInterval.current = setTimeout(() => {
202
+ setResizing(false);
203
+ resizeInterval.current = null;
204
+ }, 3_000);
205
+ }),
206
+ [],
207
+ );
176
208
 
177
209
  return (
178
210
  <MainProvider
@@ -192,16 +224,52 @@ const MainRoot = ({
192
224
 
193
225
  MainRoot.displayName = MAIN_ROOT_NAME;
194
226
 
195
- const handleOpenAutoFocus = (event: Event) => {
196
- !document.body.hasAttribute('data-is-keyboard') && event.preventDefault();
197
- };
227
+ //
228
+ // Overlay
229
+ //
230
+
231
+ type MainOverlayProps = ThemedClassName<Omit<ComponentPropsWithRef<typeof Primitive.div>, 'children' | 'onClick'>>;
232
+
233
+ const MainOverlay = forwardRef<HTMLDivElement, MainOverlayProps>(({ classNames, ...props }, forwardedRef) => {
234
+ const [isLg] = useMediaQuery('lg');
235
+ const { navigationSidebarState, setNavigationSidebarState, complementarySidebarState, setComplementarySidebarState } =
236
+ useMainContext(MAIN_OVERLAY_NAME);
237
+ const { tx } = useThemeContext();
238
+ return (
239
+ <div
240
+ {...props}
241
+ onClick={() => {
242
+ setNavigationSidebarState('collapsed');
243
+ setComplementarySidebarState('collapsed');
244
+ }}
245
+ className={tx(
246
+ 'main.overlay',
247
+ {
248
+ isLg,
249
+ inlineStartSidebarOpen: navigationSidebarState,
250
+ inlineEndSidebarOpen: complementarySidebarState,
251
+ },
252
+ classNames,
253
+ )}
254
+ data-state={navigationSidebarState === 'expanded' || complementarySidebarState === 'expanded' ? 'open' : 'closed'}
255
+ aria-hidden='true'
256
+ ref={forwardedRef}
257
+ />
258
+ );
259
+ });
260
+
261
+ MainOverlay.displayName = MAIN_OVERLAY_NAME;
262
+
263
+ //
264
+ // Sidebar
265
+ //
198
266
 
199
267
  type MainSidebarProps = ThemedClassName<ComponentPropsWithRef<typeof DialogContent>> & {
200
268
  swipeToDismiss?: boolean;
201
269
  state?: SidebarState;
202
270
  resizing?: boolean;
203
271
  onStateChange?: (nextState: SidebarState) => void;
204
- side: 'inline-start' | 'inline-end';
272
+ side: 'w-start' | 'w-end';
205
273
  label: Label;
206
274
  };
207
275
 
@@ -210,23 +278,31 @@ const MainSidebar = forwardRef<HTMLDivElement, MainSidebarProps>(
210
278
  { classNames, children, swipeToDismiss, onOpenAutoFocus, state, resizing, onStateChange, side, label, ...props },
211
279
  forwardedRef,
212
280
  ) => {
213
- const [isLg] = useMediaQuery('lg', { ssr: false });
281
+ const [isLg] = useMediaQuery('lg');
214
282
  const { tx } = useThemeContext();
215
- const { t } = useTranslation();
283
+ const { t } = useTranslation(osTranslations);
216
284
  const ref = useForwardedRef(forwardedRef);
217
285
  const noopRef = useRef(null);
286
+
218
287
  useSwipeToDismiss(swipeToDismiss ? ref : noopRef, {
219
288
  onDismiss: () => onStateChange?.('closed'),
220
289
  });
290
+
291
+ // NOTE(thure): This is a workaround for something further down the tree grabbing focus on Escape. Adding this
292
+ // intervention to `Tabs.Root` or `Tabs.Tabpenel` instances is somehow ineffectual.
221
293
  const handleKeyDown = useCallback(
222
294
  (event: KeyboardEvent<HTMLDivElement>) => {
223
- if (event.key === 'Escape') {
224
- ((event.target as HTMLDivElement).closest('[data-tabster]') as HTMLDivElement)?.focus();
295
+ const focusGroupParent = (event.target as HTMLElement).closest('[data-tabster]');
296
+ if (event.key === 'Escape' && focusGroupParent) {
297
+ event.preventDefault();
298
+ event.stopPropagation();
299
+ (focusGroupParent as HTMLElement).focus();
225
300
  }
226
301
  props.onKeyDown?.(event);
227
302
  },
228
303
  [props.onKeyDown],
229
304
  );
305
+
230
306
  const Root = isLg ? Primitive.div : DialogContent;
231
307
 
232
308
  return (
@@ -234,13 +310,13 @@ const MainSidebar = forwardRef<HTMLDivElement, MainSidebarProps>(
234
310
  {!isLg && <DialogTitle className='sr-only'>{toLocalizedString(label, t)}</DialogTitle>}
235
311
  <Root
236
312
  {...(!isLg && { forceMount: true, tabIndex: -1, onOpenAutoFocus: onOpenAutoFocus ?? handleOpenAutoFocus })}
313
+ {...(state === 'closed' && { inert: true })}
237
314
  {...props}
238
- data-side={side === 'inline-end' ? 'ie' : 'is'}
315
+ data-side={side === 'w-end' ? 'ie' : 'is'}
239
316
  data-state={state}
240
317
  data-resizing={resizing ? 'true' : 'false'}
241
- className={tx('main.sidebar', 'main__sidebar', {}, classNames)}
242
- onKeyDown={handleKeyDown}
243
- {...(state === 'closed' && { inert: 'true' })}
318
+ className={tx('main.sidebar', {}, classNames)}
319
+ onKeyDownCapture={handleKeyDown}
244
320
  ref={ref}
245
321
  >
246
322
  {children}
@@ -250,6 +326,10 @@ const MainSidebar = forwardRef<HTMLDivElement, MainSidebarProps>(
250
326
  },
251
327
  );
252
328
 
329
+ //
330
+ // Navigation Sidebar
331
+ //
332
+
253
333
  type MainNavigationSidebarProps = Omit<MainSidebarProps, 'expanded' | 'side'>;
254
334
 
255
335
  const MainNavigationSidebar = forwardRef<HTMLDivElement, MainNavigationSidebarProps>((props, forwardedRef) => {
@@ -263,7 +343,7 @@ const MainNavigationSidebar = forwardRef<HTMLDivElement, MainNavigationSidebarPr
263
343
  state={navigationSidebarState}
264
344
  onStateChange={setNavigationSidebarState}
265
345
  resizing={resizing}
266
- side='inline-start'
346
+ side='w-start'
267
347
  ref={forwardedRef}
268
348
  />
269
349
  );
@@ -271,6 +351,10 @@ const MainNavigationSidebar = forwardRef<HTMLDivElement, MainNavigationSidebarPr
271
351
 
272
352
  MainNavigationSidebar.displayName = NAVIGATION_SIDEBAR_NAME;
273
353
 
354
+ //
355
+ // Complementary Sidebar
356
+ //
357
+
274
358
  type MainComplementarySidebarProps = Omit<MainSidebarProps, 'expanded' | 'side'>;
275
359
 
276
360
  const MainComplementarySidebar = forwardRef<HTMLDivElement, MainComplementarySidebarProps>((props, forwardedRef) => {
@@ -285,82 +369,63 @@ const MainComplementarySidebar = forwardRef<HTMLDivElement, MainComplementarySid
285
369
  state={complementarySidebarState}
286
370
  onStateChange={setComplementarySidebarState}
287
371
  resizing={resizing}
288
- side='inline-end'
372
+ side='w-end'
289
373
  ref={forwardedRef}
290
374
  />
291
375
  );
292
376
  });
293
377
 
294
- MainNavigationSidebar.displayName = NAVIGATION_SIDEBAR_NAME;
378
+ MainComplementarySidebar.displayName = COMPLEMENTARY_SIDEBAR_NAME;
295
379
 
296
- type MainProps = ThemedClassName<ComponentPropsWithRef<typeof Primitive.div>> & {
297
- asChild?: boolean;
298
- bounce?: boolean;
299
- handlesFocus?: boolean;
300
- };
380
+ //
381
+ // Content
382
+ //
383
+
384
+ type MainContentProps = ThemedClassName<
385
+ ComponentPropsWithRef<typeof Primitive.div> &
386
+ MainStyleProps & {
387
+ asChild?: boolean;
388
+ }
389
+ >;
301
390
 
302
- const MainContent = forwardRef<HTMLDivElement, MainProps>(
303
- ({ asChild, classNames, bounce, handlesFocus, children, role, ...props }: MainProps, forwardedRef) => {
391
+ const MainContent = forwardRef<HTMLDivElement, MainContentProps>(
392
+ ({ asChild, classNames, bounce, handlesFocus, children, role, ...props }: MainContentProps, forwardedRef) => {
304
393
  const { navigationSidebarState, complementarySidebarState } = useMainContext(MAIN_NAME);
305
394
  const { tx } = useThemeContext();
306
- const Root = asChild ? Slot : role ? 'div' : 'main';
307
-
395
+ const Comp = asChild ? Slot : role ? Primitive.div : 'main';
308
396
  const mover = useLandmarkMover(props.onKeyDown, '1');
309
397
 
310
398
  return (
311
- <Root
312
- role={role}
399
+ <Comp
313
400
  {...(handlesFocus && { ...mover })}
314
401
  {...props}
315
- data-sidebar-inline-start-state={navigationSidebarState}
316
- data-sidebar-inline-end-state={complementarySidebarState}
402
+ role={role}
403
+ data-sidebar-left-state={navigationSidebarState}
404
+ data-sidebar-right-state={complementarySidebarState}
317
405
  data-handles-focus={handlesFocus}
318
- className={tx('main.content', 'main', { bounce, handlesFocus }, classNames)}
406
+ className={tx('main.content', { bounce, handlesFocus }, classNames)}
319
407
  ref={forwardedRef}
320
408
  >
321
409
  {children}
322
- </Root>
410
+ </Comp>
323
411
  );
324
412
  },
325
413
  );
326
414
 
327
415
  MainContent.displayName = MAIN_NAME;
328
416
 
329
- type MainOverlayProps = ThemedClassName<Omit<ComponentPropsWithRef<typeof Primitive.div>, 'children'>>;
330
-
331
- const MainOverlay = forwardRef<HTMLDivElement, MainOverlayProps>(({ classNames, ...props }, forwardedRef) => {
332
- const [isLg] = useMediaQuery('lg', { ssr: false });
333
- const { navigationSidebarState, setNavigationSidebarState, complementarySidebarState, setComplementarySidebarState } =
334
- useMainContext(MAIN_NAME);
335
- const { tx } = useThemeContext();
336
- return (
337
- <div
338
- onClick={() => {
339
- setNavigationSidebarState('collapsed');
340
- setComplementarySidebarState('collapsed');
341
- }}
342
- {...props}
343
- className={tx(
344
- 'main.overlay',
345
- 'main__overlay',
346
- { isLg, inlineStartSidebarOpen: navigationSidebarState, inlineEndSidebarOpen: complementarySidebarState },
347
- classNames,
348
- )}
349
- data-state={navigationSidebarState === 'expanded' || complementarySidebarState === 'expanded' ? 'open' : 'closed'}
350
- aria-hidden='true'
351
- ref={forwardedRef}
352
- />
353
- );
354
- });
417
+ //
418
+ // Main
419
+ //
355
420
 
356
421
  export const Main = {
357
422
  Root: MainRoot,
358
- Content: MainContent,
359
423
  Overlay: MainOverlay,
424
+ Content: MainContent,
360
425
  NavigationSidebar: MainNavigationSidebar,
361
426
  ComplementarySidebar: MainComplementarySidebar,
362
427
  };
363
428
 
364
429
  export { useMainContext, useSidebars, useLandmarkMover };
365
430
 
366
- export type { MainRootProps, MainProps, MainOverlayProps, MainNavigationSidebarProps, SidebarState };
431
+ export type { MainRootProps, MainOverlayProps, MainContentProps, MainNavigationSidebarProps, SidebarState };
@@ -2,13 +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
8
  import { withTheme } from '../../testing';
11
-
12
9
  import { ContextMenu } from './ContextMenu';
13
10
 
14
11
  const DefaultStory = () => {
@@ -94,11 +91,10 @@ const DefaultStory = () => {
94
91
  };
95
92
 
96
93
  const meta = {
97
- title: 'ui/react-ui-core/ContextMenu',
94
+ title: 'ui/react-ui-core/components/ContextMenu',
98
95
  component: ContextMenu.Root as any,
99
96
  render: DefaultStory,
100
- decorators: [withTheme],
101
- parameters: { chromatic: { disableSnapshot: false } },
97
+ decorators: [withTheme()],
102
98
  } satisfies Meta<typeof DefaultStory>;
103
99
 
104
100
  export default meta;
@@ -36,7 +36,7 @@ const ContextMenuContent = forwardRef<HTMLDivElement, ContextMenuContentProps>(
36
36
  {...props}
37
37
  data-arrow-keys='up down'
38
38
  collisionPadding={safeCollisionPadding}
39
- className={tx('menu.content', 'menu', { elevation }, classNames)}
39
+ className={tx('menu.content', { elevation }, classNames)}
40
40
  ref={forwardedRef}
41
41
  >
42
42
  {children}
@@ -52,11 +52,11 @@ type ContextMenuViewportProps = ThemedClassName<ComponentPropsWithRef<typeof Pri
52
52
  const ContextMenuViewport = forwardRef<HTMLDivElement, ContextMenuViewportProps>(
53
53
  ({ classNames, asChild, children, ...props }, forwardedRef) => {
54
54
  const { tx } = useThemeContext();
55
- const Root = asChild ? Slot : Primitive.div;
55
+ const Comp = asChild ? Slot : Primitive.div;
56
56
  return (
57
- <Root {...props} className={tx('menu.viewport', 'menu__viewport', {}, classNames)} ref={forwardedRef}>
57
+ <Comp {...props} className={tx('menu.viewport', {}, classNames)} ref={forwardedRef}>
58
58
  {children}
59
- </Root>
59
+ </Comp>
60
60
  );
61
61
  },
62
62
  );
@@ -65,13 +65,7 @@ type ContextMenuArrowProps = ThemedClassName<ContextMenuPrimitive.ContextMenuArr
65
65
 
66
66
  const ContextMenuArrow = forwardRef<SVGSVGElement, ContextMenuArrowProps>(({ classNames, ...props }, forwardedRef) => {
67
67
  const { tx } = useThemeContext();
68
- return (
69
- <ContextMenuPrimitive.Arrow
70
- {...props}
71
- className={tx('menu.arrow', 'menu__arrow', {}, classNames)}
72
- ref={forwardedRef}
73
- />
74
- );
68
+ return <ContextMenuPrimitive.Arrow {...props} className={tx('menu.arrow', {}, classNames)} ref={forwardedRef} />;
75
69
  });
76
70
 
77
71
  type ContextMenuGroupProps = ContextMenuPrimitive.ContextMenuGroupProps;
@@ -87,13 +81,7 @@ type ContextMenuItemProps = ThemedClassName<ContextMenuPrimitive.ContextMenuItem
87
81
  const ContextMenuItem = forwardRef<HTMLDivElement, ContextMenuItemProps>(
88
82
  ({ classNames, ...props }: ContextMenuItemProps, forwardedRef) => {
89
83
  const { tx } = useThemeContext();
90
- return (
91
- <ContextMenuPrimitive.Item
92
- {...props}
93
- className={tx('menu.item', 'menu__item', {}, classNames)}
94
- ref={forwardedRef}
95
- />
96
- );
84
+ return <ContextMenuPrimitive.Item {...props} className={tx('menu.item', {}, classNames)} ref={forwardedRef} />;
97
85
  },
98
86
  );
99
87
 
@@ -103,11 +91,7 @@ const ContextMenuCheckboxItem = forwardRef<HTMLDivElement, ContextMenuCheckboxIt
103
91
  ({ classNames, ...props }: ContextMenuItemProps, forwardedRef) => {
104
92
  const { tx } = useThemeContext();
105
93
  return (
106
- <ContextMenuPrimitive.CheckboxItem
107
- {...props}
108
- className={tx('menu.item', 'menu__item--checkbox', {}, classNames)}
109
- ref={forwardedRef}
110
- />
94
+ <ContextMenuPrimitive.CheckboxItem {...props} className={tx('menu.item', {}, classNames)} ref={forwardedRef} />
111
95
  );
112
96
  },
113
97
  );
@@ -118,11 +102,7 @@ const ContextMenuSeparator = forwardRef<HTMLDivElement, ContextMenuSeparatorProp
118
102
  ({ classNames, ...props }, forwardedRef) => {
119
103
  const { tx } = useThemeContext();
120
104
  return (
121
- <ContextMenuPrimitive.Separator
122
- {...props}
123
- className={tx('menu.separator', 'menu__item', {}, classNames)}
124
- ref={forwardedRef}
125
- />
105
+ <ContextMenuPrimitive.Separator {...props} className={tx('menu.separator', {}, classNames)} ref={forwardedRef} />
126
106
  );
127
107
  },
128
108
  );
@@ -133,11 +113,7 @@ const ContextMenuGroupLabel = forwardRef<HTMLDivElement, ContextMenuGroupLabelPr
133
113
  ({ classNames, ...props }, forwardedRef) => {
134
114
  const { tx } = useThemeContext();
135
115
  return (
136
- <ContextMenuPrimitive.Label
137
- {...props}
138
- className={tx('menu.groupLabel', 'menu__group__label', {}, classNames)}
139
- ref={forwardedRef}
140
- />
116
+ <ContextMenuPrimitive.Label {...props} className={tx('menu.groupLabel', {}, classNames)} ref={forwardedRef} />
141
117
  );
142
118
  },
143
119
  );
@@ -2,14 +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';
12
-
9
+ import { Button } from '../Button';
13
10
  import { DropdownMenu } from './DropdownMenu';
14
11
 
15
12
  const DefaultStory = () => {
@@ -94,11 +91,10 @@ const DefaultStory = () => {
94
91
  };
95
92
 
96
93
  const meta = {
97
- title: 'ui/react-ui-core/DropdownMenu',
94
+ title: 'ui/react-ui-core/components/DropdownMenu',
98
95
  component: DropdownMenu.Root,
99
96
  render: DefaultStory,
100
- decorators: [withTheme],
101
- parameters: { chromatic: { disableSnapshot: false } },
97
+ decorators: [withTheme()],
102
98
  } satisfies Meta<typeof DefaultStory>;
103
99
 
104
100
  export default meta;