@dxos/react-ui 0.8.4-main.9735255 → 0.8.4-main.9be5663bfe

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 (340) hide show
  1. package/dist/lib/browser/{chunk-CEKVHJ27.mjs → chunk-OCVRIJCH.mjs} +184 -110
  2. package/dist/lib/browser/chunk-OCVRIJCH.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +3025 -2078
  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 +73 -37
  7. package/dist/lib/browser/testing/index.mjs.map +4 -4
  8. package/dist/lib/node-esm/{chunk-2NHEX4AD.mjs → chunk-QUD5P3RU.mjs} +184 -110
  9. package/dist/lib/node-esm/chunk-QUD5P3RU.mjs.map +7 -0
  10. package/dist/lib/node-esm/index.mjs +3025 -2078
  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 +73 -37
  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.map +1 -1
  18. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts.map +1 -1
  19. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
  20. package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts.map +1 -1
  21. package/dist/types/src/components/Button/Button.d.ts +2 -2
  22. package/dist/types/src/components/Button/Button.d.ts.map +1 -1
  23. package/dist/types/src/components/Button/Button.stories.d.ts.map +1 -1
  24. package/dist/types/src/components/Button/IconButton.d.ts.map +1 -1
  25. package/dist/types/src/components/Button/IconButton.stories.d.ts +3 -0
  26. package/dist/types/src/components/Button/IconButton.stories.d.ts.map +1 -1
  27. package/dist/types/src/components/Button/Toggle.d.ts +2 -2
  28. package/dist/types/src/components/Button/Toggle.d.ts.map +1 -1
  29. package/dist/types/src/components/Button/Toggle.stories.d.ts.map +1 -1
  30. package/dist/types/src/components/Button/ToggleGroup.d.ts +6 -6
  31. package/dist/types/src/components/Button/ToggleGroup.d.ts.map +1 -1
  32. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts.map +1 -1
  33. package/dist/types/src/components/Card/Card.d.ts +118 -0
  34. package/dist/types/src/components/Card/Card.d.ts.map +1 -0
  35. package/dist/types/src/components/Card/Card.stories.d.ts +21 -0
  36. package/dist/types/src/components/Card/Card.stories.d.ts.map +1 -0
  37. package/dist/types/src/components/Card/index.d.ts +2 -0
  38. package/dist/types/src/components/Card/index.d.ts.map +1 -0
  39. package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -1
  40. package/dist/types/src/components/Clipboard/index.d.ts +10 -1
  41. package/dist/types/src/components/Clipboard/index.d.ts.map +1 -1
  42. package/dist/types/src/components/Dialog/AlertDialog.d.ts +37 -19
  43. package/dist/types/src/components/Dialog/AlertDialog.d.ts.map +1 -1
  44. package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts.map +1 -1
  45. package/dist/types/src/components/Dialog/Dialog.d.ts +44 -22
  46. package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -1
  47. package/dist/types/src/components/Dialog/Dialog.stories.d.ts +6 -8
  48. package/dist/types/src/components/Dialog/Dialog.stories.d.ts.map +1 -1
  49. package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts +11 -0
  50. package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts.map +1 -0
  51. package/dist/types/src/components/ErrorFallback/ErrorFallback.stories.d.ts +7 -0
  52. package/dist/types/src/components/ErrorFallback/ErrorFallback.stories.d.ts.map +1 -0
  53. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts +19 -0
  54. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts.map +1 -0
  55. package/dist/types/src/components/ErrorFallback/ThrowError.d.ts +9 -0
  56. package/dist/types/src/components/ErrorFallback/ThrowError.d.ts.map +1 -0
  57. package/dist/types/src/components/ErrorFallback/index.d.ts +5 -0
  58. package/dist/types/src/components/ErrorFallback/index.d.ts.map +1 -0
  59. package/dist/types/src/components/Focus/Focus.d.ts +36 -0
  60. package/dist/types/src/components/Focus/Focus.d.ts.map +1 -0
  61. package/dist/types/src/components/Focus/Focus.stories.d.ts +9 -0
  62. package/dist/types/src/components/Focus/Focus.stories.d.ts.map +1 -0
  63. package/dist/types/src/components/Focus/index.d.ts +2 -0
  64. package/dist/types/src/components/Focus/index.d.ts.map +1 -0
  65. package/dist/types/src/components/Icon/Icon.d.ts +3 -0
  66. package/dist/types/src/components/Icon/Icon.d.ts.map +1 -1
  67. package/dist/types/src/components/Icon/Icon.stories.d.ts +11 -3
  68. package/dist/types/src/components/Icon/Icon.stories.d.ts.map +1 -1
  69. package/dist/types/src/components/Image/Image.d.ts +14 -0
  70. package/dist/types/src/components/Image/Image.d.ts.map +1 -0
  71. package/dist/types/src/components/Image/Image.stories.d.ts +33 -0
  72. package/dist/types/src/components/Image/Image.stories.d.ts.map +1 -0
  73. package/dist/types/src/components/Image/index.d.ts +2 -0
  74. package/dist/types/src/components/Image/index.d.ts.map +1 -0
  75. package/dist/types/src/components/Input/Input.d.ts +4 -7
  76. package/dist/types/src/components/Input/Input.d.ts.map +1 -1
  77. package/dist/types/src/components/Input/Input.stories.d.ts +7 -7
  78. package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
  79. package/dist/types/src/components/Link/Link.stories.d.ts.map +1 -1
  80. package/dist/types/src/components/List/List.d.ts +5 -3
  81. package/dist/types/src/components/List/List.d.ts.map +1 -1
  82. package/dist/types/src/components/List/List.stories.d.ts +3 -1
  83. package/dist/types/src/components/List/List.stories.d.ts.map +1 -1
  84. package/dist/types/src/components/List/Tree.d.ts.map +1 -1
  85. package/dist/types/src/components/List/Tree.stories.d.ts.map +1 -1
  86. package/dist/types/src/components/List/Treegrid.d.ts +5 -9
  87. package/dist/types/src/components/List/Treegrid.d.ts.map +1 -1
  88. package/dist/types/src/components/List/Treegrid.stories.d.ts.map +1 -1
  89. package/dist/types/src/components/Main/Main.d.ts +6 -32
  90. package/dist/types/src/components/Main/Main.d.ts.map +1 -1
  91. package/dist/types/src/components/Main/Main.stories.d.ts +1 -5
  92. package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
  93. package/dist/types/src/components/Menu/ContextMenu.d.ts.map +1 -1
  94. package/dist/types/src/components/Menu/ContextMenu.stories.d.ts.map +1 -1
  95. package/dist/types/src/components/Menu/DropdownMenu.d.ts +51 -50
  96. package/dist/types/src/components/Menu/DropdownMenu.d.ts.map +1 -1
  97. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts +14 -1
  98. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts.map +1 -1
  99. package/dist/types/src/components/Message/Message.d.ts.map +1 -1
  100. package/dist/types/src/components/Message/Message.stories.d.ts +4 -5
  101. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
  102. package/dist/types/src/components/Popover/Popover.d.ts +32 -23
  103. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  104. package/dist/types/src/components/Popover/Popover.stories.d.ts.map +1 -1
  105. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +26 -28
  106. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  107. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +54 -9
  108. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
  109. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +34 -13
  110. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -1
  111. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts +9 -5
  112. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts.map +1 -1
  113. package/dist/types/src/components/Select/Select.d.ts.map +1 -1
  114. package/dist/types/src/components/Select/Select.stories.d.ts +2 -2
  115. package/dist/types/src/components/Select/Select.stories.d.ts.map +1 -1
  116. package/dist/types/src/components/Separator/Separator.d.ts +3 -3
  117. package/dist/types/src/components/Separator/Separator.d.ts.map +1 -1
  118. package/dist/types/src/components/Skeleton/Skeleton.d.ts +12 -0
  119. package/dist/types/src/components/Skeleton/Skeleton.d.ts.map +1 -0
  120. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts +17 -0
  121. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts.map +1 -0
  122. package/dist/types/src/components/Skeleton/index.d.ts +2 -0
  123. package/dist/types/src/components/Skeleton/index.d.ts.map +1 -0
  124. package/dist/types/src/components/Splitter/Splitter.d.ts +34 -0
  125. package/dist/types/src/components/Splitter/Splitter.d.ts.map +1 -0
  126. package/dist/types/src/components/Splitter/Splitter.stories.d.ts +7 -0
  127. package/dist/types/src/components/Splitter/Splitter.stories.d.ts.map +1 -0
  128. package/dist/types/src/components/Splitter/index.d.ts +2 -0
  129. package/dist/types/src/components/Splitter/index.d.ts.map +1 -0
  130. package/dist/types/src/components/Status/Status.d.ts +3 -4
  131. package/dist/types/src/components/Status/Status.d.ts.map +1 -1
  132. package/dist/types/src/components/Status/Status.stories.d.ts +4 -2
  133. package/dist/types/src/components/Status/Status.stories.d.ts.map +1 -1
  134. package/dist/types/src/components/Tag/Tag.d.ts.map +1 -1
  135. package/dist/types/src/components/Tag/Tag.stories.d.ts +0 -5
  136. package/dist/types/src/components/Tag/Tag.stories.d.ts.map +1 -1
  137. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts +2 -1
  138. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  139. package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts +12 -0
  140. package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts.map +1 -0
  141. package/dist/types/src/components/Toast/Toast.d.ts +15 -15
  142. package/dist/types/src/components/Toast/Toast.d.ts.map +1 -1
  143. package/dist/types/src/components/Toast/Toast.stories.d.ts.map +1 -1
  144. package/dist/types/src/components/Toolbar/Toolbar.d.ts +30 -12
  145. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  146. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
  147. package/dist/types/src/components/Tooltip/Tooltip.d.ts +9 -9
  148. package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
  149. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts +2 -2
  150. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
  151. package/dist/types/src/components/index.d.ts +9 -4
  152. package/dist/types/src/components/index.d.ts.map +1 -1
  153. package/dist/types/src/exemplars/generics.stories.d.ts +19 -0
  154. package/dist/types/src/exemplars/generics.stories.d.ts.map +1 -0
  155. package/dist/types/src/exemplars/slot.stories.d.ts +15 -0
  156. package/dist/types/src/exemplars/slot.stories.d.ts.map +1 -0
  157. package/dist/types/src/exemplars/tabster.stories.d.ts +8 -0
  158. package/dist/types/src/exemplars/tabster.stories.d.ts.map +1 -0
  159. package/dist/types/src/exemplars/virtualizer.stories.d.ts +11 -0
  160. package/dist/types/src/exemplars/virtualizer.stories.d.ts.map +1 -0
  161. package/dist/types/src/hooks/index.d.ts +1 -0
  162. package/dist/types/src/hooks/index.d.ts.map +1 -1
  163. package/dist/types/src/hooks/useDensityContext.d.ts +1 -1
  164. package/dist/types/src/hooks/useDensityContext.d.ts.map +1 -1
  165. package/dist/types/src/index.d.ts +1 -0
  166. package/dist/types/src/index.d.ts.map +1 -1
  167. package/dist/types/src/playground/Controls.stories.d.ts.map +1 -1
  168. package/dist/types/src/playground/Custom.stories.d.ts.map +1 -1
  169. package/dist/types/src/primitives/Column/Column.d.ts +35 -0
  170. package/dist/types/src/primitives/Column/Column.d.ts.map +1 -0
  171. package/dist/types/src/primitives/Column/Column.stories.d.ts +25 -0
  172. package/dist/types/src/primitives/Column/Column.stories.d.ts.map +1 -0
  173. package/dist/types/src/primitives/Column/index.d.ts +2 -0
  174. package/dist/types/src/primitives/Column/index.d.ts.map +1 -0
  175. package/dist/types/src/primitives/Container/Container.d.ts +7 -0
  176. package/dist/types/src/primitives/Container/Container.d.ts.map +1 -0
  177. package/dist/types/src/primitives/Container/Container.stories.d.ts +6 -0
  178. package/dist/types/src/primitives/Container/Container.stories.d.ts.map +1 -0
  179. package/dist/types/src/primitives/Container/index.d.ts +2 -0
  180. package/dist/types/src/primitives/Container/index.d.ts.map +1 -0
  181. package/dist/types/src/primitives/Flex/Flex.d.ts +11 -0
  182. package/dist/types/src/primitives/Flex/Flex.d.ts.map +1 -0
  183. package/dist/types/src/primitives/Flex/Flex.stories.d.ts +8 -0
  184. package/dist/types/src/primitives/Flex/Flex.stories.d.ts.map +1 -0
  185. package/dist/types/src/primitives/Flex/index.d.ts +2 -0
  186. package/dist/types/src/primitives/Flex/index.d.ts.map +1 -0
  187. package/dist/types/src/primitives/Grid/Grid.d.ts +10 -0
  188. package/dist/types/src/primitives/Grid/Grid.d.ts.map +1 -0
  189. package/dist/types/src/primitives/Grid/Grid.stories.d.ts +8 -0
  190. package/dist/types/src/primitives/Grid/Grid.stories.d.ts.map +1 -0
  191. package/dist/types/src/primitives/Grid/index.d.ts +2 -0
  192. package/dist/types/src/primitives/Grid/index.d.ts.map +1 -0
  193. package/dist/types/src/primitives/Panel/Panel.d.ts +35 -0
  194. package/dist/types/src/primitives/Panel/Panel.d.ts.map +1 -0
  195. package/dist/types/src/primitives/Panel/Panel.stories.d.ts +6 -0
  196. package/dist/types/src/primitives/Panel/Panel.stories.d.ts.map +1 -0
  197. package/dist/types/src/primitives/Panel/index.d.ts +2 -0
  198. package/dist/types/src/primitives/Panel/index.d.ts.map +1 -0
  199. package/dist/types/src/primitives/index.d.ts +6 -0
  200. package/dist/types/src/primitives/index.d.ts.map +1 -0
  201. package/dist/types/src/testing/Loading.d.ts +9 -0
  202. package/dist/types/src/testing/Loading.d.ts.map +1 -0
  203. package/dist/types/src/testing/decorators/withLayout.d.ts +1 -1
  204. package/dist/types/src/testing/decorators/withLayout.d.ts.map +1 -1
  205. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts.map +1 -1
  206. package/dist/types/src/testing/decorators/withTheme.d.ts +3 -2
  207. package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
  208. package/dist/types/src/testing/index.d.ts +1 -0
  209. package/dist/types/src/testing/index.d.ts.map +1 -1
  210. package/dist/types/src/translations.d.ts +11 -0
  211. package/dist/types/src/translations.d.ts.map +1 -0
  212. package/dist/types/src/util/usePx.d.ts.map +1 -1
  213. package/dist/types/tsconfig.tsbuildinfo +1 -1
  214. package/package.json +27 -22
  215. package/src/components/Avatars/Avatar.stories.tsx +7 -9
  216. package/src/components/Avatars/Avatar.tsx +6 -14
  217. package/src/components/Avatars/AvatarGroup.stories.tsx +2 -3
  218. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +3 -4
  219. package/src/components/Breadcrumb/Breadcrumb.tsx +11 -37
  220. package/src/components/Button/Button.stories.tsx +3 -4
  221. package/src/components/Button/Button.tsx +11 -25
  222. package/src/components/Button/IconButton.stories.tsx +8 -6
  223. package/src/components/Button/IconButton.tsx +2 -4
  224. package/src/components/Button/Toggle.stories.tsx +2 -3
  225. package/src/components/Button/Toggle.tsx +4 -4
  226. package/src/components/Button/ToggleGroup.stories.tsx +2 -3
  227. package/src/components/Button/ToggleGroup.tsx +12 -16
  228. package/src/components/Card/Card.stories.tsx +151 -0
  229. package/src/components/Card/Card.tsx +492 -0
  230. package/src/components/Card/index.ts +5 -0
  231. package/src/components/Clipboard/CopyButton.tsx +4 -5
  232. package/src/components/Dialog/AlertDialog.stories.tsx +16 -17
  233. package/src/components/Dialog/AlertDialog.tsx +123 -82
  234. package/src/components/Dialog/Dialog.stories.tsx +100 -20
  235. package/src/components/Dialog/Dialog.tsx +113 -87
  236. package/src/components/ErrorFallback/ErrorFallback.stories.tsx +45 -0
  237. package/src/components/ErrorFallback/ErrorFallback.tsx +70 -0
  238. package/src/components/ErrorFallback/ErrorStack.tsx +114 -0
  239. package/src/components/ErrorFallback/ThrowError.tsx +37 -0
  240. package/src/components/ErrorFallback/index.ts +9 -0
  241. package/src/components/Focus/AUDIT.md +43 -0
  242. package/src/components/Focus/Focus.stories.tsx +230 -0
  243. package/src/components/Focus/Focus.tsx +201 -0
  244. package/src/components/Focus/index.ts +5 -0
  245. package/src/components/Icon/Icon.stories.tsx +45 -15
  246. package/src/components/Icon/Icon.tsx +6 -2
  247. package/src/components/Image/Image.stories.tsx +86 -0
  248. package/src/components/Image/Image.tsx +223 -0
  249. package/src/components/Image/index.ts +5 -0
  250. package/src/components/Input/Input.stories.tsx +20 -40
  251. package/src/components/Input/Input.tsx +24 -69
  252. package/src/components/Link/Link.stories.tsx +2 -3
  253. package/src/components/Link/Link.tsx +2 -2
  254. package/src/components/List/List.stories.tsx +15 -23
  255. package/src/components/List/List.tsx +16 -20
  256. package/src/components/List/ListDropIndicator.tsx +7 -7
  257. package/src/components/List/Tree.stories.tsx +5 -6
  258. package/src/components/List/Tree.tsx +0 -1
  259. package/src/components/List/TreeDropIndicator.tsx +6 -6
  260. package/src/components/List/Treegrid.stories.tsx +29 -30
  261. package/src/components/List/Treegrid.tsx +23 -28
  262. package/src/components/Main/Main.stories.tsx +6 -96
  263. package/src/components/Main/Main.tsx +61 -212
  264. package/src/components/Menu/ContextMenu.stories.tsx +2 -3
  265. package/src/components/Menu/ContextMenu.tsx +9 -33
  266. package/src/components/Menu/DropdownMenu.stories.tsx +2 -3
  267. package/src/components/Menu/DropdownMenu.tsx +58 -52
  268. package/src/components/Message/Message.stories.tsx +26 -12
  269. package/src/components/Message/Message.tsx +14 -30
  270. package/src/components/Popover/Popover.stories.tsx +7 -8
  271. package/src/components/Popover/Popover.tsx +62 -59
  272. package/src/components/ScrollArea/ScrollArea.stories.tsx +214 -75
  273. package/src/components/ScrollArea/ScrollArea.tsx +85 -113
  274. package/src/components/ScrollArea/index.ts +1 -1
  275. package/src/components/ScrollContainer/ScrollContainer.stories.tsx +47 -26
  276. package/src/components/ScrollContainer/ScrollContainer.tsx +206 -92
  277. package/src/components/Select/Select.stories.tsx +7 -8
  278. package/src/components/Select/Select.tsx +11 -27
  279. package/src/components/Separator/Separator.tsx +5 -8
  280. package/src/components/Skeleton/Skeleton.stories.tsx +51 -0
  281. package/src/components/Skeleton/Skeleton.tsx +26 -0
  282. package/src/components/Skeleton/index.ts +5 -0
  283. package/src/components/Splitter/Splitter.stories.tsx +83 -0
  284. package/src/components/Splitter/Splitter.tsx +127 -0
  285. package/src/components/Splitter/index.ts +5 -0
  286. package/src/components/Status/Status.stories.tsx +21 -18
  287. package/src/components/Status/Status.tsx +10 -7
  288. package/src/components/Tag/Tag.stories.tsx +4 -10
  289. package/src/components/Tag/Tag.tsx +2 -7
  290. package/src/components/ThemeProvider/ThemeProvider.stories.tsx +31 -0
  291. package/src/components/ThemeProvider/ThemeProvider.tsx +9 -7
  292. package/src/components/Toast/Toast.stories.tsx +2 -3
  293. package/src/components/Toast/Toast.tsx +22 -41
  294. package/src/components/Toolbar/Toolbar.stories.tsx +2 -3
  295. package/src/components/Toolbar/Toolbar.tsx +173 -26
  296. package/src/components/Tooltip/Tooltip.stories.tsx +20 -19
  297. package/src/components/Tooltip/Tooltip.tsx +18 -18
  298. package/src/components/index.ts +10 -5
  299. package/src/exemplars/generics.stories.tsx +41 -0
  300. package/src/exemplars/slot.stories.tsx +117 -0
  301. package/src/exemplars/tabster.stories.tsx +127 -0
  302. package/src/exemplars/virtualizer.stories.tsx +137 -0
  303. package/src/hooks/index.ts +1 -0
  304. package/src/hooks/useDensityContext.ts +2 -2
  305. package/src/index.ts +1 -0
  306. package/src/playground/Controls.stories.tsx +3 -10
  307. package/src/playground/Custom.stories.tsx +15 -18
  308. package/src/playground/Typography.stories.tsx +3 -3
  309. package/src/primitives/Column/AUDIT.md +354 -0
  310. package/src/primitives/Column/Column.stories.tsx +183 -0
  311. package/src/primitives/Column/Column.tsx +169 -0
  312. package/src/primitives/Column/index.ts +5 -0
  313. package/src/primitives/Container/Container.stories.tsx +29 -0
  314. package/src/primitives/Container/Container.tsx +19 -0
  315. package/src/primitives/Container/index.ts +5 -0
  316. package/src/primitives/Flex/Flex.stories.tsx +57 -0
  317. package/src/primitives/Flex/Flex.tsx +27 -0
  318. package/src/primitives/Flex/index.ts +5 -0
  319. package/src/primitives/Grid/Grid.stories.tsx +56 -0
  320. package/src/primitives/Grid/Grid.tsx +30 -0
  321. package/src/primitives/Grid/index.ts +5 -0
  322. package/src/primitives/Panel/Panel.stories.tsx +68 -0
  323. package/src/primitives/Panel/Panel.tsx +120 -0
  324. package/src/primitives/Panel/index.ts +5 -0
  325. package/src/primitives/index.ts +9 -0
  326. package/src/testing/Loading.tsx +47 -0
  327. package/src/testing/decorators/withLayout.tsx +21 -7
  328. package/src/testing/decorators/withLayoutVariants.tsx +18 -21
  329. package/src/testing/decorators/withTheme.tsx +24 -19
  330. package/src/testing/index.ts +2 -0
  331. package/src/translations.ts +19 -0
  332. package/src/util/usePx.ts +1 -0
  333. package/dist/lib/browser/chunk-CEKVHJ27.mjs.map +0 -7
  334. package/dist/lib/node-esm/chunk-2NHEX4AD.mjs.map +0 -7
  335. package/dist/types/src/components/AnchoredOverflow/AnchoredOverflow.d.ts +0 -15
  336. package/dist/types/src/components/AnchoredOverflow/AnchoredOverflow.d.ts.map +0 -1
  337. package/dist/types/src/components/AnchoredOverflow/index.d.ts +0 -2
  338. package/dist/types/src/components/AnchoredOverflow/index.d.ts.map +0 -1
  339. package/src/components/AnchoredOverflow/AnchoredOverflow.tsx +0 -59
  340. package/src/components/AnchoredOverflow/index.ts +0 -5
@@ -7,10 +7,8 @@ import React from 'react';
7
7
 
8
8
  import { withLayout, withTheme } from '../../testing';
9
9
  import { IconButton } from '../Button';
10
- import { Input } from '../Input';
11
10
  import { Toolbar } from '../Toolbar';
12
-
13
- import { Main, useDynamicDrawer, useSidebars } from './Main';
11
+ import { Main, useSidebars } from './Main';
14
12
 
15
13
  type StoryMainArgs = {};
16
14
 
@@ -38,29 +36,6 @@ const ComplementarySidebarToggle = ({ close }: { close?: boolean }) => {
38
36
  );
39
37
  };
40
38
 
41
- const DrawerToggle = ({ close }: { close?: boolean }) => {
42
- const { toggleDrawer } = useSidebars('StoryMain__DrawerToggle');
43
- return (
44
- <IconButton
45
- icon={close ? 'ph--caret-down--regular' : 'ph--caret-up--regular'}
46
- iconOnly
47
- label='Toggle drawer'
48
- onClick={toggleDrawer}
49
- />
50
- );
51
- };
52
-
53
- const DrawerState = () => {
54
- const { drawerState } = useSidebars('StoryMain__DrawerStateDisplay');
55
- return (
56
- <div className='flex items-center gap-2'>
57
- <span>Drawer</span>
58
- <span>({drawerState})</span>
59
- <span>[{window.innerHeight}]</span>
60
- </div>
61
- );
62
- };
63
-
64
39
  const DefaultStory = (_args: StoryMainArgs) => {
65
40
  return (
66
41
  <Main.Root defaultComplementarySidebarState='closed' defaultNavigationSidebarState='closed'>
@@ -68,11 +43,11 @@ const DefaultStory = (_args: StoryMainArgs) => {
68
43
  <Main.NavigationSidebar label='Navigation'>
69
44
  <Toolbar.Root>
70
45
  <h1>Navigation</h1>
71
- <Toolbar.Separator variant='gap' classNames='grow' />
46
+ <Toolbar.Separator />
72
47
  <NavigationSidebarToggle close />
73
48
  </Toolbar.Root>
74
49
  </Main.NavigationSidebar>
75
- <Main.Content classNames='is-full'>
50
+ <Main.Content classNames='w-full'>
76
51
  <Toolbar.Root>
77
52
  <NavigationSidebarToggle />
78
53
  <div className='flex items-center grow justify-center'>Main</div>
@@ -82,7 +57,7 @@ const DefaultStory = (_args: StoryMainArgs) => {
82
57
  <Main.ComplementarySidebar label='Complementary'>
83
58
  <Toolbar.Root>
84
59
  <ComplementarySidebarToggle close />
85
- <Toolbar.Separator variant='gap' classNames='grow' />
60
+ <Toolbar.Separator />
86
61
  <h1>Complementary</h1>
87
62
  </Toolbar.Root>
88
63
  </Main.ComplementarySidebar>
@@ -91,15 +66,12 @@ const DefaultStory = (_args: StoryMainArgs) => {
91
66
  };
92
67
 
93
68
  const meta = {
94
- title: 'ui/react-ui-core/Main',
69
+ title: 'ui/react-ui-core/components/Main',
95
70
  component: Main.Root,
96
71
  render: DefaultStory,
97
- decorators: [withTheme, withLayout({ layout: 'fullscreen' })],
72
+ decorators: [withTheme(), withLayout({ layout: 'fullscreen' })],
98
73
  parameters: {
99
74
  layout: 'fullscreen',
100
- chromatic: {
101
- disableSnapshot: false,
102
- },
103
75
  },
104
76
  } satisfies Meta<typeof DefaultStory>;
105
77
 
@@ -110,65 +82,3 @@ type Story = StoryObj<typeof meta>;
110
82
  export const Default: Story = {
111
83
  args: {},
112
84
  };
113
-
114
- const DrawerStory = (_args: StoryMainArgs) => {
115
- return (
116
- <Main.Root>
117
- <Main.Overlay />
118
- <DrawerStoryInner />
119
- </Main.Root>
120
- );
121
- };
122
-
123
- const DrawerStoryInner = () => {
124
- useDynamicDrawer('DrawerStoryInner');
125
-
126
- return (
127
- <>
128
- <Main.Content classNames='flex flex-col is-full overflow-hidden'>
129
- <Toolbar.Root classNames='pli-2'>
130
- <h1>Main Content</h1>
131
- <Toolbar.Separator variant='gap' classNames='grow' />
132
- <DrawerToggle />
133
- </Toolbar.Root>
134
- <div className='flex flex-col bs-full overflow-y-auto p-2'>
135
- <p className='text-sm text-description'>
136
- The drawer is mutually exclusive with sidebars and is intended for mobile apps.
137
- </p>
138
- <div className='plb-2 space-y-2'>
139
- {Array.from({ length: 50 }).map((_, i) => (
140
- <p key={i}>Line {i + 1}</p>
141
- ))}
142
- </div>
143
- </div>
144
- </Main.Content>
145
- <Main.Drawer label='Drawer' classNames='grid grid-rows-[min-content_1fr_min-content]'>
146
- <Toolbar.Root classNames='pli-2'>
147
- <DrawerState />
148
- <Toolbar.Separator variant='gap' classNames='grow' />
149
- <DrawerToggle close />
150
- </Toolbar.Root>
151
- <div className='p-2 overflow-y-auto'>
152
- <p className='text-sm text-description'>
153
- On mobile devices, the drawer automatically switches to fullscreenwhen the keyboard appears.
154
- </p>
155
- <div className='plb-2 space-y-2'>
156
- {Array.from({ length: 50 }).map((_, i) => (
157
- <p key={i}>Line {i + 1}</p>
158
- ))}
159
- </div>
160
- </div>
161
- <div className='p-2 border-bs border-separator'>
162
- <Input.Root>
163
- <Input.TextInput autoFocus placeholder='Search' />
164
- </Input.Root>
165
- </div>
166
- </Main.Drawer>
167
- </>
168
- );
169
- };
170
-
171
- export const WithDrawer: Story = {
172
- render: DrawerStory,
173
- args: {},
174
- };
@@ -24,23 +24,22 @@ import React, {
24
24
 
25
25
  import { addEventListener } from '@dxos/async';
26
26
  import { log } from '@dxos/log';
27
- import { useDynamicRef, useForwardedRef, useMediaQuery, useViewportResize } from '@dxos/react-hooks';
28
- import { type MainStyleProps } from '@dxos/ui-theme';
27
+ import { useForwardedRef, useMediaQuery } from '@dxos/react-hooks';
28
+ import { type MainStyleProps, osTranslations } from '@dxos/ui-theme';
29
29
 
30
30
  import { useThemeContext } from '../../hooks';
31
31
  import { type ThemedClassName } from '../../util';
32
32
  import { type Label, toLocalizedString, useTranslation } from '../ThemeProvider';
33
-
34
33
  import { useSwipeToDismiss } from './useSwipeToDismiss';
35
34
 
36
35
  const MAIN_NAME = 'Main';
37
36
  const MAIN_ROOT_NAME = 'MainRoot';
37
+ const MAIN_OVERLAY_NAME = 'MainOverlay';
38
38
  const NAVIGATION_SIDEBAR_NAME = 'NavigationSidebar';
39
39
  const COMPLEMENTARY_SIDEBAR_NAME = 'ComplementarySidebar';
40
- const DRAWER_NAME = 'Drawer';
41
40
 
42
41
  const handleOpenAutoFocus = (event: Event) => {
43
- !document.body.hasAttribute('data-is-keyboard') && event.preventDefault();
42
+ !document.body.hasAttribute('data-w-keyboard') && event.preventDefault();
44
43
  };
45
44
 
46
45
  //
@@ -84,47 +83,12 @@ const useLandmarkMover = (propsOnKeyDown: ComponentPropsWithoutRef<'div'>['onKey
84
83
  };
85
84
  };
86
85
 
87
- // TODO(burdon): Better way to detect software keyboard on mobile?
88
- const isFullscreen = () => {
89
- const isMobile = window.innerHeight <= 1000;
90
- return window.visualViewport && isMobile ? window.visualViewport.height < 700 : false;
91
- };
92
-
93
- /**
94
- * Detects if drawer should be in full mode based on:
95
- * - Device is mobile (width)
96
- * - Visual viewport is constrained (keyboard visible)
97
- */
98
- const useDynamicDrawer = (consumerName: string) => {
99
- const { drawerState, setDrawerState } = useSidebars(consumerName);
100
- const drawersStateRef = useDynamicRef(drawerState);
101
-
102
- const checkViewport = useCallback(() => {
103
- if (window.visualViewport) {
104
- document.documentElement.style.setProperty('--visual-viewport-height', `${window.visualViewport.height}px`);
105
- }
106
-
107
- if (drawersStateRef.current !== 'closed') {
108
- setDrawerState(isFullscreen() ? 'full' : 'expanded');
109
- }
110
- }, [setDrawerState]);
111
-
112
- // Check resize.
113
- useViewportResize(checkViewport, [], 100);
114
-
115
- // Check on window resize (for device orientation changes).
116
- useEffect(() => addEventListener(window, 'resize', checkViewport), [checkViewport]);
117
-
118
- return drawerState;
119
- };
120
-
121
86
  //
122
87
  // Context
123
88
  //
124
89
 
125
90
  // TODO(burdon): Define collapsed state.
126
91
  type SidebarState = 'expanded' | 'collapsed' | 'closed';
127
- type DrawerState = 'expanded' | 'full' | 'closed';
128
92
 
129
93
  type MainContextValue = {
130
94
  resizing: boolean;
@@ -136,10 +100,6 @@ type MainContextValue = {
136
100
  // Complementary
137
101
  complementarySidebarState: SidebarState;
138
102
  setComplementarySidebarState: Dispatch<SetStateAction<SidebarState | undefined>>;
139
-
140
- // Drawer
141
- drawerState: DrawerState;
142
- setDrawerState: Dispatch<SetStateAction<DrawerState | undefined>>;
143
103
  };
144
104
 
145
105
  const [MainProvider, useMainContext] = createContext<MainContextValue>(MAIN_NAME, {
@@ -154,21 +114,15 @@ const [MainProvider, useMainContext] = createContext<MainContextValue>(MAIN_NAME
154
114
  setComplementarySidebarState: (_nextState) => {
155
115
  log.warn('Not initialized');
156
116
  },
157
-
158
- drawerState: 'closed',
159
- setDrawerState: (_nextState) => {
160
- log.warn('Not initialized');
161
- },
162
117
  });
163
118
 
164
119
  const useSidebars = (consumerName: string) => {
165
120
  const {
166
121
  navigationSidebarState,
167
122
  setNavigationSidebarState,
123
+
168
124
  complementarySidebarState,
169
125
  setComplementarySidebarState,
170
- drawerState,
171
- setDrawerState,
172
126
  } = useMainContext(consumerName);
173
127
 
174
128
  return {
@@ -191,15 +145,6 @@ const useSidebars = (consumerName: string) => {
191
145
  openComplementarySidebar: useCallback(() => setComplementarySidebarState('expanded'), []),
192
146
  collapseComplementarySidebar: useCallback(() => setComplementarySidebarState('collapsed'), []),
193
147
  closeComplementarySidebar: useCallback(() => setComplementarySidebarState('closed'), []),
194
-
195
- drawerState,
196
- setDrawerState,
197
- toggleDrawer: useCallback(
198
- () => setDrawerState(drawerState === 'closed' ? (isFullscreen() ? 'full' : 'expanded') : 'closed'),
199
- [drawerState, setDrawerState],
200
- ),
201
- openDrawer: useCallback(() => setDrawerState('expanded'), []),
202
- closeDrawer: useCallback(() => setDrawerState('closed'), []),
203
148
  };
204
149
  };
205
150
 
@@ -215,10 +160,6 @@ type MainRootProps = PropsWithChildren<{
215
160
  complementarySidebarState?: SidebarState;
216
161
  defaultComplementarySidebarState?: SidebarState;
217
162
  onComplementarySidebarStateChange?: (nextState: SidebarState) => void;
218
-
219
- drawerState?: DrawerState;
220
- defaultDrawerState?: DrawerState;
221
- onDrawerStateChange?: (nextState: DrawerState) => void;
222
163
  }>;
223
164
 
224
165
  const MainRoot = ({
@@ -230,10 +171,6 @@ const MainRoot = ({
230
171
  defaultComplementarySidebarState = 'closed',
231
172
  onComplementarySidebarStateChange,
232
173
 
233
- drawerState: propsDrawerState,
234
- defaultDrawerState = 'closed',
235
- onDrawerStateChange,
236
-
237
174
  children,
238
175
  ...props
239
176
  }: MainRootProps) => {
@@ -250,11 +187,6 @@ const MainRoot = ({
250
187
  defaultProp: defaultComplementarySidebarState,
251
188
  onChange: onComplementarySidebarStateChange,
252
189
  });
253
- const [drawerState = 'closed', setDrawerState] = useControllableState<DrawerState>({
254
- prop: propsDrawerState,
255
- defaultProp: defaultDrawerState,
256
- onChange: onDrawerStateChange,
257
- });
258
190
 
259
191
  const [resizing, setResizing] = useState(false);
260
192
  const resizeInterval = useRef<ReturnType<typeof setTimeout> | null>(null);
@@ -282,8 +214,6 @@ const MainRoot = ({
282
214
  setNavigationSidebarState,
283
215
  complementarySidebarState,
284
216
  setComplementarySidebarState,
285
- drawerState,
286
- setDrawerState,
287
217
  }}
288
218
  resizing={resizing}
289
219
  >
@@ -294,6 +224,42 @@ const MainRoot = ({
294
224
 
295
225
  MainRoot.displayName = MAIN_ROOT_NAME;
296
226
 
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
+
297
263
  //
298
264
  // Sidebar
299
265
  //
@@ -303,7 +269,7 @@ type MainSidebarProps = ThemedClassName<ComponentPropsWithRef<typeof DialogConte
303
269
  state?: SidebarState;
304
270
  resizing?: boolean;
305
271
  onStateChange?: (nextState: SidebarState) => void;
306
- side: 'inline-start' | 'inline-end';
272
+ side: 'w-start' | 'w-end';
307
273
  label: Label;
308
274
  };
309
275
 
@@ -314,7 +280,7 @@ const MainSidebar = forwardRef<HTMLDivElement, MainSidebarProps>(
314
280
  ) => {
315
281
  const [isLg] = useMediaQuery('lg');
316
282
  const { tx } = useThemeContext();
317
- const { t } = useTranslation();
283
+ const { t } = useTranslation(osTranslations);
318
284
  const ref = useForwardedRef(forwardedRef);
319
285
  const noopRef = useRef(null);
320
286
 
@@ -346,10 +312,10 @@ const MainSidebar = forwardRef<HTMLDivElement, MainSidebarProps>(
346
312
  {...(!isLg && { forceMount: true, tabIndex: -1, onOpenAutoFocus: onOpenAutoFocus ?? handleOpenAutoFocus })}
347
313
  {...(state === 'closed' && { inert: true })}
348
314
  {...props}
349
- data-side={side === 'inline-end' ? 'ie' : 'is'}
315
+ data-side={side === 'w-end' ? 'ie' : 'is'}
350
316
  data-state={state}
351
317
  data-resizing={resizing ? 'true' : 'false'}
352
- className={tx('main.sidebar', 'main__sidebar', {}, classNames)}
318
+ className={tx('main.sidebar', {}, classNames)}
353
319
  onKeyDownCapture={handleKeyDown}
354
320
  ref={ref}
355
321
  >
@@ -377,7 +343,7 @@ const MainNavigationSidebar = forwardRef<HTMLDivElement, MainNavigationSidebarPr
377
343
  state={navigationSidebarState}
378
344
  onStateChange={setNavigationSidebarState}
379
345
  resizing={resizing}
380
- side='inline-start'
346
+ side='w-start'
381
347
  ref={forwardedRef}
382
348
  />
383
349
  );
@@ -403,7 +369,7 @@ const MainComplementarySidebar = forwardRef<HTMLDivElement, MainComplementarySid
403
369
  state={complementarySidebarState}
404
370
  onStateChange={setComplementarySidebarState}
405
371
  resizing={resizing}
406
- side='inline-end'
372
+ side='w-end'
407
373
  ref={forwardedRef}
408
374
  />
409
375
  );
@@ -411,86 +377,6 @@ const MainComplementarySidebar = forwardRef<HTMLDivElement, MainComplementarySid
411
377
 
412
378
  MainComplementarySidebar.displayName = COMPLEMENTARY_SIDEBAR_NAME;
413
379
 
414
- //
415
- // Drawer
416
- //
417
-
418
- type MainDrawerProps = ThemedClassName<ComponentPropsWithRef<typeof DialogContent>> & {
419
- swipeToDismiss?: boolean;
420
- state?: DrawerState;
421
- resizing?: boolean;
422
- onStateChange?: (nextState: DrawerState) => void;
423
- label: Label;
424
- };
425
-
426
- const MainDrawer = forwardRef<HTMLDivElement, MainDrawerProps>(
427
- (
428
- { classNames, children, swipeToDismiss, onOpenAutoFocus, state, resizing, onStateChange, label, ...props },
429
- forwardedRef,
430
- ) => {
431
- const [isLg] = useMediaQuery('lg');
432
- const { tx } = useThemeContext();
433
- const { t } = useTranslation();
434
- const ref = useForwardedRef(forwardedRef);
435
- const noopRef = useRef(null);
436
-
437
- // TODO(burdon): Implement vertical swipe-to-dismiss for drawer.
438
- useSwipeToDismiss(swipeToDismiss ? ref : noopRef, {
439
- onDismiss: () => onStateChange?.('closed'),
440
- });
441
-
442
- const handleKeyDown = useCallback(
443
- (event: KeyboardEvent<HTMLDivElement>) => {
444
- const focusGroupParent = (event.target as HTMLElement).closest('[data-tabster]');
445
- if (event.key === 'Escape' && focusGroupParent) {
446
- event.preventDefault();
447
- event.stopPropagation();
448
- (focusGroupParent as HTMLElement).focus();
449
- }
450
- props.onKeyDown?.(event);
451
- },
452
- [props.onKeyDown],
453
- );
454
-
455
- return (
456
- <Primitive.div
457
- {...(state === 'closed' && { inert: true })}
458
- {...(!isLg && { forceMount: true, tabIndex: -1, onOpenAutoFocus: onOpenAutoFocus ?? handleOpenAutoFocus })}
459
- {...props}
460
- role='region'
461
- aria-label={toLocalizedString(label, t)}
462
- data-state={state}
463
- data-resizing={resizing ? 'true' : 'false'}
464
- className={tx('main.drawer', 'main__drawer', {}, classNames)}
465
- onKeyDownCapture={handleKeyDown}
466
- ref={ref}
467
- >
468
- {children}
469
- </Primitive.div>
470
- );
471
- },
472
- );
473
-
474
- type MainDrawerRootProps = Omit<MainDrawerProps, 'state' | 'resizing' | 'onStateChange'>;
475
-
476
- const MainDrawerRoot = forwardRef<HTMLDivElement, MainDrawerRootProps>((props, forwardedRef) => {
477
- const { drawerState, setDrawerState, resizing } = useMainContext(DRAWER_NAME);
478
- const mover = useLandmarkMover(props.onKeyDown, '3');
479
-
480
- return (
481
- <MainDrawer
482
- {...mover}
483
- {...props}
484
- resizing={resizing}
485
- state={drawerState}
486
- onStateChange={setDrawerState}
487
- ref={forwardedRef}
488
- />
489
- );
490
- });
491
-
492
- MainDrawerRoot.displayName = DRAWER_NAME;
493
-
494
380
  //
495
381
  // Content
496
382
  //
@@ -504,79 +390,42 @@ type MainContentProps = ThemedClassName<
504
390
 
505
391
  const MainContent = forwardRef<HTMLDivElement, MainContentProps>(
506
392
  ({ asChild, classNames, bounce, handlesFocus, children, role, ...props }: MainContentProps, forwardedRef) => {
507
- const { navigationSidebarState, complementarySidebarState, drawerState } = useMainContext(MAIN_NAME);
393
+ const { navigationSidebarState, complementarySidebarState } = useMainContext(MAIN_NAME);
508
394
  const { tx } = useThemeContext();
509
- const Root = asChild ? Slot : role ? 'div' : 'main';
395
+ const Comp = asChild ? Slot : role ? Primitive.div : 'main';
510
396
  const mover = useLandmarkMover(props.onKeyDown, '1');
511
397
 
512
398
  return (
513
- <Root
514
- role={role}
399
+ <Comp
515
400
  {...(handlesFocus && { ...mover })}
516
401
  {...props}
517
- data-sidebar-inline-start-state={navigationSidebarState}
518
- data-sidebar-inline-end-state={complementarySidebarState}
519
- data-drawer-state={drawerState}
402
+ role={role}
403
+ data-sidebar-left-state={navigationSidebarState}
404
+ data-sidebar-right-state={complementarySidebarState}
520
405
  data-handles-focus={handlesFocus}
521
- className={tx('main.content', 'main', { bounce, handlesFocus }, classNames)}
406
+ className={tx('main.content', { bounce, handlesFocus }, classNames)}
522
407
  ref={forwardedRef}
523
408
  >
524
409
  {children}
525
- </Root>
410
+ </Comp>
526
411
  );
527
412
  },
528
413
  );
529
414
 
530
415
  MainContent.displayName = MAIN_NAME;
531
416
 
532
- type MainOverlayProps = ThemedClassName<Omit<ComponentPropsWithRef<typeof Primitive.div>, 'children' | 'onClick'>>;
533
-
534
- const MainOverlay = forwardRef<HTMLDivElement, MainOverlayProps>(({ classNames, ...props }, forwardedRef) => {
535
- const [isLg] = useMediaQuery('lg');
536
- const { navigationSidebarState, setNavigationSidebarState, complementarySidebarState, setComplementarySidebarState } =
537
- useMainContext(MAIN_NAME);
538
- const { tx } = useThemeContext();
539
- return (
540
- <div
541
- {...props}
542
- onClick={() => {
543
- setNavigationSidebarState('collapsed');
544
- setComplementarySidebarState('collapsed');
545
- }}
546
- className={tx(
547
- 'main.overlay',
548
- 'main__overlay',
549
- {
550
- isLg,
551
- inlineStartSidebarOpen: navigationSidebarState,
552
- inlineEndSidebarOpen: complementarySidebarState,
553
- },
554
- classNames,
555
- )}
556
- data-state={navigationSidebarState === 'expanded' || complementarySidebarState === 'expanded' ? 'open' : 'closed'}
557
- aria-hidden='true'
558
- ref={forwardedRef}
559
- />
560
- );
561
- });
417
+ //
418
+ // Main
419
+ //
562
420
 
563
421
  export const Main = {
564
422
  Root: MainRoot,
565
- Content: MainContent,
566
423
  Overlay: MainOverlay,
424
+ Content: MainContent,
567
425
  NavigationSidebar: MainNavigationSidebar,
568
426
  ComplementarySidebar: MainComplementarySidebar,
569
- Drawer: MainDrawerRoot,
570
427
  };
571
428
 
572
- export { useMainContext, useSidebars, useLandmarkMover, useDynamicDrawer };
429
+ export { useMainContext, useSidebars, useLandmarkMover };
573
430
 
574
- export type {
575
- MainRootProps,
576
- MainContentProps,
577
- MainOverlayProps,
578
- MainNavigationSidebarProps,
579
- MainDrawerRootProps,
580
- SidebarState,
581
- DrawerState,
582
- };
431
+ export type { MainRootProps, MainOverlayProps, MainContentProps, MainNavigationSidebarProps, SidebarState };
@@ -6,7 +6,6 @@ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
6
  import React from 'react';
7
7
 
8
8
  import { withTheme } from '../../testing';
9
-
10
9
  import { ContextMenu } from './ContextMenu';
11
10
 
12
11
  const DefaultStory = () => {
@@ -92,10 +91,10 @@ const DefaultStory = () => {
92
91
  };
93
92
 
94
93
  const meta = {
95
- title: 'ui/react-ui-core/ContextMenu',
94
+ title: 'ui/react-ui-core/components/ContextMenu',
96
95
  component: ContextMenu.Root as any,
97
96
  render: DefaultStory,
98
- decorators: [withTheme],
97
+ decorators: [withTheme()],
99
98
  } satisfies Meta<typeof DefaultStory>;
100
99
 
101
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
  );