@dxos/react-ui 0.8.4-main.bc674ce → 0.8.4-main.bd9b33e6c8

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 (321) hide show
  1. package/dist/lib/browser/{chunk-CEKVHJ27.mjs → chunk-LUPEFGHJ.mjs} +119 -117
  2. package/dist/lib/browser/chunk-LUPEFGHJ.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +3021 -2087
  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 +59 -36
  7. package/dist/lib/browser/testing/index.mjs.map +4 -4
  8. package/dist/lib/node-esm/{chunk-2NHEX4AD.mjs → chunk-EQOBFLZC.mjs} +119 -117
  9. package/dist/lib/node-esm/chunk-EQOBFLZC.mjs.map +7 -0
  10. package/dist/lib/node-esm/index.mjs +3021 -2087
  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 +59 -36
  14. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  15. package/dist/types/src/components/Avatars/Avatar.d.ts.map +1 -1
  16. package/dist/types/src/components/Avatars/Avatar.stories.d.ts.map +1 -1
  17. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
  18. package/dist/types/src/components/Button/Button.d.ts +2 -2
  19. package/dist/types/src/components/Button/Button.d.ts.map +1 -1
  20. package/dist/types/src/components/Button/IconButton.d.ts.map +1 -1
  21. package/dist/types/src/components/Button/Toggle.d.ts +2 -2
  22. package/dist/types/src/components/Button/Toggle.d.ts.map +1 -1
  23. package/dist/types/src/components/Button/ToggleGroup.d.ts +6 -6
  24. package/dist/types/src/components/Button/ToggleGroup.d.ts.map +1 -1
  25. package/dist/types/src/components/Card/Card.d.ts +145 -0
  26. package/dist/types/src/components/Card/Card.d.ts.map +1 -0
  27. package/dist/types/src/components/Card/Card.stories.d.ts +21 -0
  28. package/dist/types/src/components/Card/Card.stories.d.ts.map +1 -0
  29. package/dist/types/src/components/Card/index.d.ts +2 -0
  30. package/dist/types/src/components/Card/index.d.ts.map +1 -0
  31. package/dist/types/src/components/Clipboard/index.d.ts +10 -1
  32. package/dist/types/src/components/Clipboard/index.d.ts.map +1 -1
  33. package/dist/types/src/components/Dialog/AlertDialog.d.ts +41 -19
  34. package/dist/types/src/components/Dialog/AlertDialog.d.ts.map +1 -1
  35. package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts.map +1 -1
  36. package/dist/types/src/components/Dialog/Dialog.d.ts +48 -22
  37. package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -1
  38. package/dist/types/src/components/Dialog/Dialog.stories.d.ts +6 -8
  39. package/dist/types/src/components/Dialog/Dialog.stories.d.ts.map +1 -1
  40. package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts +11 -0
  41. package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts.map +1 -0
  42. package/dist/types/src/components/ErrorFallback/ErrorFallback.stories.d.ts +7 -0
  43. package/dist/types/src/components/ErrorFallback/ErrorFallback.stories.d.ts.map +1 -0
  44. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts +8 -0
  45. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts.map +1 -0
  46. package/dist/types/src/components/ErrorFallback/ThrowError.d.ts +9 -0
  47. package/dist/types/src/components/ErrorFallback/ThrowError.d.ts.map +1 -0
  48. package/dist/types/src/components/ErrorFallback/index.d.ts +5 -0
  49. package/dist/types/src/components/ErrorFallback/index.d.ts.map +1 -0
  50. package/dist/types/src/components/Focus/Focus.d.ts +44 -0
  51. package/dist/types/src/components/Focus/Focus.d.ts.map +1 -0
  52. package/dist/types/src/components/Focus/Focus.stories.d.ts +9 -0
  53. package/dist/types/src/components/Focus/Focus.stories.d.ts.map +1 -0
  54. package/dist/types/src/components/Focus/index.d.ts +2 -0
  55. package/dist/types/src/components/Focus/index.d.ts.map +1 -0
  56. package/dist/types/src/components/Icon/Icon.d.ts +3 -0
  57. package/dist/types/src/components/Icon/Icon.d.ts.map +1 -1
  58. package/dist/types/src/components/Icon/Icon.stories.d.ts +11 -3
  59. package/dist/types/src/components/Icon/Icon.stories.d.ts.map +1 -1
  60. package/dist/types/src/components/Image/Image.d.ts +14 -0
  61. package/dist/types/src/components/Image/Image.d.ts.map +1 -0
  62. package/dist/types/src/components/Image/Image.stories.d.ts +33 -0
  63. package/dist/types/src/components/Image/Image.stories.d.ts.map +1 -0
  64. package/dist/types/src/components/Image/index.d.ts +2 -0
  65. package/dist/types/src/components/Image/index.d.ts.map +1 -0
  66. package/dist/types/src/components/Input/Input.d.ts +4 -7
  67. package/dist/types/src/components/Input/Input.d.ts.map +1 -1
  68. package/dist/types/src/components/Input/Input.stories.d.ts +7 -7
  69. package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
  70. package/dist/types/src/components/List/List.d.ts +9 -3
  71. package/dist/types/src/components/List/List.d.ts.map +1 -1
  72. package/dist/types/src/components/List/List.stories.d.ts +8 -2
  73. package/dist/types/src/components/List/List.stories.d.ts.map +1 -1
  74. package/dist/types/src/components/List/Treegrid.d.ts.map +1 -1
  75. package/dist/types/src/components/Main/Main.d.ts +6 -32
  76. package/dist/types/src/components/Main/Main.d.ts.map +1 -1
  77. package/dist/types/src/components/Main/Main.stories.d.ts +1 -5
  78. package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
  79. package/dist/types/src/components/Menu/ContextMenu.d.ts.map +1 -1
  80. package/dist/types/src/components/Menu/DropdownMenu.d.ts +51 -50
  81. package/dist/types/src/components/Menu/DropdownMenu.d.ts.map +1 -1
  82. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts +14 -1
  83. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts.map +1 -1
  84. package/dist/types/src/components/Message/Message.d.ts.map +1 -1
  85. package/dist/types/src/components/Message/Message.stories.d.ts +4 -5
  86. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
  87. package/dist/types/src/components/Popover/Popover.d.ts +32 -23
  88. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  89. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +31 -25
  90. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  91. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +62 -9
  92. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
  93. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +23 -7
  94. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -1
  95. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts +6 -2
  96. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts.map +1 -1
  97. package/dist/types/src/components/Select/Select.d.ts.map +1 -1
  98. package/dist/types/src/components/Select/Select.stories.d.ts +2 -2
  99. package/dist/types/src/components/Select/Select.stories.d.ts.map +1 -1
  100. package/dist/types/src/components/Separator/Separator.d.ts +3 -3
  101. package/dist/types/src/components/Separator/Separator.d.ts.map +1 -1
  102. package/dist/types/src/components/Skeleton/Skeleton.d.ts +12 -0
  103. package/dist/types/src/components/Skeleton/Skeleton.d.ts.map +1 -0
  104. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts +17 -0
  105. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts.map +1 -0
  106. package/dist/types/src/components/Skeleton/index.d.ts +2 -0
  107. package/dist/types/src/components/Skeleton/index.d.ts.map +1 -0
  108. package/dist/types/src/components/Splitter/Splitter.d.ts +37 -0
  109. package/dist/types/src/components/Splitter/Splitter.d.ts.map +1 -0
  110. package/dist/types/src/components/Splitter/Splitter.stories.d.ts +7 -0
  111. package/dist/types/src/components/Splitter/Splitter.stories.d.ts.map +1 -0
  112. package/dist/types/src/components/Splitter/index.d.ts +2 -0
  113. package/dist/types/src/components/Splitter/index.d.ts.map +1 -0
  114. package/dist/types/src/components/Status/Status.d.ts +3 -4
  115. package/dist/types/src/components/Status/Status.d.ts.map +1 -1
  116. package/dist/types/src/components/Status/Status.stories.d.ts +4 -2
  117. package/dist/types/src/components/Status/Status.stories.d.ts.map +1 -1
  118. package/dist/types/src/components/Tag/Tag.d.ts.map +1 -1
  119. package/dist/types/src/components/Tag/Tag.stories.d.ts +0 -5
  120. package/dist/types/src/components/Tag/Tag.stories.d.ts.map +1 -1
  121. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts +2 -1
  122. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  123. package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts +12 -0
  124. package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts.map +1 -0
  125. package/dist/types/src/components/Toast/Toast.d.ts +15 -15
  126. package/dist/types/src/components/Toast/Toast.d.ts.map +1 -1
  127. package/dist/types/src/components/Toolbar/Toolbar.d.ts +37 -11
  128. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  129. package/dist/types/src/components/Tooltip/Tooltip.d.ts +9 -9
  130. package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
  131. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts +2 -2
  132. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
  133. package/dist/types/src/components/index.d.ts +9 -4
  134. package/dist/types/src/components/index.d.ts.map +1 -1
  135. package/dist/types/src/exemplars/generics.stories.d.ts +23 -0
  136. package/dist/types/src/exemplars/generics.stories.d.ts.map +1 -0
  137. package/dist/types/src/exemplars/slot.stories.d.ts +15 -0
  138. package/dist/types/src/exemplars/slot.stories.d.ts.map +1 -0
  139. package/dist/types/src/exemplars/tabster.stories.d.ts +8 -0
  140. package/dist/types/src/exemplars/tabster.stories.d.ts.map +1 -0
  141. package/dist/types/src/exemplars/virtualizer.stories.d.ts +11 -0
  142. package/dist/types/src/exemplars/virtualizer.stories.d.ts.map +1 -0
  143. package/dist/types/src/hooks/index.d.ts +1 -0
  144. package/dist/types/src/hooks/index.d.ts.map +1 -1
  145. package/dist/types/src/hooks/useDensityContext.d.ts +1 -1
  146. package/dist/types/src/hooks/useDensityContext.d.ts.map +1 -1
  147. package/dist/types/src/index.d.ts +1 -0
  148. package/dist/types/src/index.d.ts.map +1 -1
  149. package/dist/types/src/playground/Controls.stories.d.ts.map +1 -1
  150. package/dist/types/src/playground/Custom.stories.d.ts.map +1 -1
  151. package/dist/types/src/primitives/Column/Column.d.ts +51 -0
  152. package/dist/types/src/primitives/Column/Column.d.ts.map +1 -0
  153. package/dist/types/src/primitives/Column/Column.stories.d.ts +25 -0
  154. package/dist/types/src/primitives/Column/Column.stories.d.ts.map +1 -0
  155. package/dist/types/src/primitives/Column/index.d.ts +2 -0
  156. package/dist/types/src/primitives/Column/index.d.ts.map +1 -0
  157. package/dist/types/src/primitives/Container/Container.d.ts +11 -0
  158. package/dist/types/src/primitives/Container/Container.d.ts.map +1 -0
  159. package/dist/types/src/primitives/Container/Container.stories.d.ts +6 -0
  160. package/dist/types/src/primitives/Container/Container.stories.d.ts.map +1 -0
  161. package/dist/types/src/primitives/Container/index.d.ts +2 -0
  162. package/dist/types/src/primitives/Container/index.d.ts.map +1 -0
  163. package/dist/types/src/primitives/Flex/Flex.d.ts +15 -0
  164. package/dist/types/src/primitives/Flex/Flex.d.ts.map +1 -0
  165. package/dist/types/src/primitives/Flex/Flex.stories.d.ts +8 -0
  166. package/dist/types/src/primitives/Flex/Flex.stories.d.ts.map +1 -0
  167. package/dist/types/src/primitives/Flex/index.d.ts +2 -0
  168. package/dist/types/src/primitives/Flex/index.d.ts.map +1 -0
  169. package/dist/types/src/primitives/Grid/Grid.d.ts +14 -0
  170. package/dist/types/src/primitives/Grid/Grid.d.ts.map +1 -0
  171. package/dist/types/src/primitives/Grid/Grid.stories.d.ts +8 -0
  172. package/dist/types/src/primitives/Grid/Grid.stories.d.ts.map +1 -0
  173. package/dist/types/src/primitives/Grid/index.d.ts +2 -0
  174. package/dist/types/src/primitives/Grid/index.d.ts.map +1 -0
  175. package/dist/types/src/primitives/Panel/Panel.d.ts +46 -0
  176. package/dist/types/src/primitives/Panel/Panel.d.ts.map +1 -0
  177. package/dist/types/src/primitives/Panel/Panel.stories.d.ts +6 -0
  178. package/dist/types/src/primitives/Panel/Panel.stories.d.ts.map +1 -0
  179. package/dist/types/src/primitives/Panel/index.d.ts +2 -0
  180. package/dist/types/src/primitives/Panel/index.d.ts.map +1 -0
  181. package/dist/types/src/primitives/index.d.ts +6 -0
  182. package/dist/types/src/primitives/index.d.ts.map +1 -0
  183. package/dist/types/src/testing/Loading.d.ts +9 -0
  184. package/dist/types/src/testing/Loading.d.ts.map +1 -0
  185. package/dist/types/src/testing/decorators/withLayout.d.ts +1 -1
  186. package/dist/types/src/testing/decorators/withLayout.d.ts.map +1 -1
  187. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts.map +1 -1
  188. package/dist/types/src/testing/decorators/withTheme.d.ts +3 -2
  189. package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
  190. package/dist/types/src/testing/index.d.ts +1 -0
  191. package/dist/types/src/testing/index.d.ts.map +1 -1
  192. package/dist/types/src/translations.d.ts +11 -0
  193. package/dist/types/src/translations.d.ts.map +1 -0
  194. package/dist/types/src/util/usePx.d.ts.map +1 -1
  195. package/dist/types/tsconfig.tsbuildinfo +1 -1
  196. package/package.json +25 -21
  197. package/src/components/Avatars/Avatar.stories.tsx +7 -8
  198. package/src/components/Avatars/Avatar.tsx +5 -12
  199. package/src/components/Avatars/AvatarGroup.stories.tsx +2 -2
  200. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +3 -3
  201. package/src/components/Breadcrumb/Breadcrumb.tsx +11 -37
  202. package/src/components/Button/Button.stories.tsx +3 -3
  203. package/src/components/Button/Button.tsx +11 -25
  204. package/src/components/Button/IconButton.stories.tsx +4 -4
  205. package/src/components/Button/IconButton.tsx +2 -3
  206. package/src/components/Button/Toggle.stories.tsx +2 -2
  207. package/src/components/Button/Toggle.tsx +4 -4
  208. package/src/components/Button/ToggleGroup.stories.tsx +2 -2
  209. package/src/components/Button/ToggleGroup.tsx +12 -16
  210. package/src/components/Card/Card.stories.tsx +151 -0
  211. package/src/components/Card/Card.tsx +394 -0
  212. package/src/components/Card/index.ts +5 -0
  213. package/src/components/Clipboard/CopyButton.tsx +3 -3
  214. package/src/components/Dialog/AlertDialog.stories.tsx +16 -16
  215. package/src/components/Dialog/AlertDialog.tsx +121 -82
  216. package/src/components/Dialog/Dialog.stories.tsx +98 -17
  217. package/src/components/Dialog/Dialog.tsx +108 -87
  218. package/src/components/ErrorFallback/ErrorFallback.stories.tsx +50 -0
  219. package/src/components/ErrorFallback/ErrorFallback.tsx +70 -0
  220. package/src/components/ErrorFallback/ErrorStack.tsx +80 -0
  221. package/src/components/ErrorFallback/ThrowError.tsx +37 -0
  222. package/src/components/ErrorFallback/index.ts +9 -0
  223. package/src/components/Focus/AUDIT.md +43 -0
  224. package/src/components/Focus/Focus.stories.tsx +230 -0
  225. package/src/components/Focus/Focus.tsx +201 -0
  226. package/src/components/Focus/index.ts +5 -0
  227. package/src/components/Icon/Icon.stories.tsx +45 -14
  228. package/src/components/Icon/Icon.tsx +6 -2
  229. package/src/components/Image/Image.stories.tsx +86 -0
  230. package/src/components/Image/Image.tsx +223 -0
  231. package/src/components/Image/index.ts +5 -0
  232. package/src/components/Input/Input.stories.tsx +20 -39
  233. package/src/components/Input/Input.tsx +24 -69
  234. package/src/components/Link/Link.stories.tsx +2 -2
  235. package/src/components/Link/Link.tsx +2 -2
  236. package/src/components/List/List.stories.tsx +15 -22
  237. package/src/components/List/List.tsx +15 -18
  238. package/src/components/List/ListDropIndicator.tsx +7 -7
  239. package/src/components/List/Tree.stories.tsx +5 -5
  240. package/src/components/List/TreeDropIndicator.tsx +6 -6
  241. package/src/components/List/Treegrid.stories.tsx +3 -3
  242. package/src/components/List/Treegrid.tsx +10 -15
  243. package/src/components/Main/Main.stories.tsx +6 -95
  244. package/src/components/Main/Main.tsx +61 -211
  245. package/src/components/Menu/ContextMenu.stories.tsx +2 -2
  246. package/src/components/Menu/ContextMenu.tsx +9 -33
  247. package/src/components/Menu/DropdownMenu.stories.tsx +2 -2
  248. package/src/components/Menu/DropdownMenu.tsx +58 -52
  249. package/src/components/Message/Message.stories.tsx +27 -12
  250. package/src/components/Message/Message.tsx +14 -30
  251. package/src/components/Popover/Popover.stories.tsx +4 -4
  252. package/src/components/Popover/Popover.tsx +62 -59
  253. package/src/components/ScrollArea/ScrollArea.stories.tsx +213 -73
  254. package/src/components/ScrollArea/ScrollArea.tsx +85 -113
  255. package/src/components/ScrollArea/index.ts +1 -1
  256. package/src/components/ScrollContainer/ScrollContainer.stories.tsx +43 -23
  257. package/src/components/ScrollContainer/ScrollContainer.tsx +174 -87
  258. package/src/components/Select/Select.stories.tsx +4 -4
  259. package/src/components/Select/Select.tsx +11 -27
  260. package/src/components/Separator/Separator.tsx +5 -8
  261. package/src/components/Skeleton/Skeleton.stories.tsx +52 -0
  262. package/src/components/Skeleton/Skeleton.tsx +26 -0
  263. package/src/components/Skeleton/index.ts +5 -0
  264. package/src/components/Splitter/Splitter.stories.tsx +83 -0
  265. package/src/components/Splitter/Splitter.tsx +140 -0
  266. package/src/components/Splitter/index.ts +5 -0
  267. package/src/components/Status/Status.stories.tsx +21 -17
  268. package/src/components/Status/Status.tsx +10 -7
  269. package/src/components/Tag/Tag.stories.tsx +4 -9
  270. package/src/components/Tag/Tag.tsx +2 -7
  271. package/src/components/ThemeProvider/ThemeProvider.stories.tsx +32 -0
  272. package/src/components/ThemeProvider/ThemeProvider.tsx +9 -6
  273. package/src/components/Toast/Toast.stories.tsx +2 -2
  274. package/src/components/Toast/Toast.tsx +22 -41
  275. package/src/components/Toolbar/Toolbar.stories.tsx +2 -2
  276. package/src/components/Toolbar/Toolbar.tsx +171 -25
  277. package/src/components/Tooltip/Tooltip.stories.tsx +16 -14
  278. package/src/components/Tooltip/Tooltip.tsx +18 -18
  279. package/src/components/index.ts +10 -5
  280. package/src/exemplars/generics.stories.tsx +41 -0
  281. package/src/exemplars/slot.stories.tsx +117 -0
  282. package/src/exemplars/tabster.stories.tsx +127 -0
  283. package/src/exemplars/virtualizer.stories.tsx +137 -0
  284. package/src/hooks/index.ts +1 -0
  285. package/src/hooks/useDensityContext.ts +2 -2
  286. package/src/index.ts +1 -0
  287. package/src/playground/Controls.stories.tsx +3 -10
  288. package/src/playground/Custom.stories.tsx +11 -21
  289. package/src/playground/Typography.stories.tsx +3 -3
  290. package/src/primitives/Column/AUDIT.md +354 -0
  291. package/src/primitives/Column/Column.stories.tsx +183 -0
  292. package/src/primitives/Column/Column.tsx +169 -0
  293. package/src/primitives/Column/index.ts +5 -0
  294. package/src/primitives/Container/Container.stories.tsx +30 -0
  295. package/src/primitives/Container/Container.tsx +19 -0
  296. package/src/primitives/Container/index.ts +5 -0
  297. package/src/primitives/Flex/Flex.stories.tsx +58 -0
  298. package/src/primitives/Flex/Flex.tsx +24 -0
  299. package/src/primitives/Flex/index.ts +5 -0
  300. package/src/primitives/Grid/Grid.stories.tsx +57 -0
  301. package/src/primitives/Grid/Grid.tsx +30 -0
  302. package/src/primitives/Grid/index.ts +5 -0
  303. package/src/primitives/Panel/Panel.stories.tsx +67 -0
  304. package/src/primitives/Panel/Panel.tsx +114 -0
  305. package/src/primitives/Panel/index.ts +5 -0
  306. package/src/primitives/index.ts +9 -0
  307. package/src/testing/Loading.tsx +26 -0
  308. package/src/testing/decorators/withLayout.tsx +21 -7
  309. package/src/testing/decorators/withLayoutVariants.tsx +18 -21
  310. package/src/testing/decorators/withTheme.tsx +24 -19
  311. package/src/testing/index.ts +2 -0
  312. package/src/translations.ts +19 -0
  313. package/src/util/usePx.ts +1 -0
  314. package/dist/lib/browser/chunk-CEKVHJ27.mjs.map +0 -7
  315. package/dist/lib/node-esm/chunk-2NHEX4AD.mjs.map +0 -7
  316. package/dist/types/src/components/AnchoredOverflow/AnchoredOverflow.d.ts +0 -15
  317. package/dist/types/src/components/AnchoredOverflow/AnchoredOverflow.d.ts.map +0 -1
  318. package/dist/types/src/components/AnchoredOverflow/index.d.ts +0 -2
  319. package/dist/types/src/components/AnchoredOverflow/index.d.ts.map +0 -1
  320. package/src/components/AnchoredOverflow/AnchoredOverflow.tsx +0 -59
  321. package/src/components/AnchoredOverflow/index.ts +0 -5
@@ -0,0 +1,169 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { Primitive } from '@radix-ui/react-primitive';
6
+ import { Slot } from '@radix-ui/react-slot';
7
+ import React, { type CSSProperties } from 'react';
8
+
9
+ import { type ColumnStyleProps, composableProps, slottable } from '@dxos/ui-theme';
10
+ import { type SlottableProps } from '@dxos/ui-types';
11
+
12
+ import { useThemeContext } from '../../hooks';
13
+ import { ScrollArea, type ScrollAreaRootProps } from '../../components';
14
+
15
+ //
16
+ // Root
17
+ //
18
+
19
+ const COLUMN_ROOT_NAME = 'Column.Root';
20
+
21
+ type GutterSize = 'xs' | 'sm' | 'md' | 'lg';
22
+
23
+ const gutterSizes: Record<GutterSize, string> = {
24
+ xs: 'var(--dx-gutter-xs)',
25
+ sm: 'var(--dx-gutter-sm)',
26
+ md: 'var(--dx-gutter-md)',
27
+ lg: 'var(--dx-gutter-lg)',
28
+ };
29
+
30
+ type ColumnRootProps = { gutter?: GutterSize };
31
+
32
+ /**
33
+ * Creates a 3-column CSS grid with left/right gutter columns and a center content column.
34
+ * Sets the `--gutter` CSS variable for nested components.
35
+ *
36
+ * Direct children participate in the grid in one of three ways:
37
+ * - **Column.Row** — 3-col subgrid row (icons in gutters, content in center).
38
+ * - **Column.Content** — spans full width; re-applies gutters as `px-[var(--gutter)]` padding.
39
+ * Sets `--gutter-offset` so nested ScrollAreas can break out of the padding.
40
+ * - **Column.Viewport** — spans full width; delegates gutters to ScrollArea.
41
+ *
42
+ * Gutter sizes: `'sm'` for compact layouts (Dialog); `'md'` (default); `'lg'` for wider spacing.
43
+ */
44
+ const ColumnRoot = slottable<HTMLDivElement, ColumnRootProps>(
45
+ ({ children, asChild, role, gutter = 'md', ...props }, forwardedRef) => {
46
+ const { className, ...rest } = composableProps(props);
47
+ const Comp = asChild ? Slot : Primitive.div;
48
+ const { tx } = useThemeContext();
49
+ const gutterSize = gutterSizes[gutter];
50
+ return (
51
+ <Comp
52
+ {...rest}
53
+ role={role ?? 'none'}
54
+ style={
55
+ {
56
+ '--gutter': gutterSize,
57
+ gridTemplateColumns: [gutterSize, 'minmax(0,1fr)', gutterSize].join(' '),
58
+ } as CSSProperties
59
+ }
60
+ className={tx('column.root', { gutter }, className)}
61
+ ref={forwardedRef}
62
+ >
63
+ {children}
64
+ </Comp>
65
+ );
66
+ },
67
+ );
68
+
69
+ ColumnRoot.displayName = COLUMN_ROOT_NAME;
70
+
71
+ //
72
+ // Row
73
+ //
74
+
75
+ const COLUMN_ROW_NAME = 'Column.Row';
76
+
77
+ type ColumnRowProps = ColumnStyleProps;
78
+
79
+ /**
80
+ * Spans all 3 columns of the parent Column.Root and uses CSS subgrid to inherit their sizing.
81
+ * Children map to: [col-1: icon/slot] [col-2: content] [col-3: icon/action].
82
+ * Must be a direct child of Column.Root.
83
+ */
84
+ const ColumnRow = slottable<HTMLDivElement, ColumnRowProps>(
85
+ ({ children, asChild, role, fullWidth, center, ...props }, forwardedRef) => {
86
+ const { className, ...rest } = composableProps(props);
87
+ const Comp = asChild ? Slot : Primitive.div;
88
+ const { tx } = useThemeContext();
89
+ return (
90
+ <Comp
91
+ {...rest}
92
+ role={role ?? 'none'}
93
+ className={tx('column.row', { fullWidth, center }, className)}
94
+ ref={forwardedRef}
95
+ >
96
+ {children}
97
+ </Comp>
98
+ );
99
+ },
100
+ );
101
+
102
+ ColumnRow.displayName = COLUMN_ROW_NAME;
103
+
104
+ //
105
+ // Content
106
+ //
107
+
108
+ const COLUMN_CONTENT_NAME = 'Column.Content';
109
+
110
+ type ColumnContentProps = SlottableProps;
111
+
112
+ /**
113
+ * Full-width content area that inherits Column.Root's 3-column grid via CSS subgrid.
114
+ * Non-scrolling children default to the center column (between gutters).
115
+ * ScrollArea children span all 3 columns via `[.dx-column_&]:col-span-full`.
116
+ */
117
+ const ColumnContent = slottable<HTMLDivElement>(({ children, asChild, ...props }, forwardedRef) => {
118
+ const { tx } = useThemeContext();
119
+ const { className, ...rest } = composableProps(props, { role: 'none' });
120
+ const Comp = asChild ? Slot : Primitive.div;
121
+ return (
122
+ <Comp {...rest} className={tx('column.content', {}, className)} ref={forwardedRef}>
123
+ {children}
124
+ </Comp>
125
+ );
126
+ });
127
+
128
+ ColumnContent.displayName = COLUMN_CONTENT_NAME;
129
+
130
+ //
131
+ // Viewport
132
+ //
133
+
134
+ const COLUMN_VIEWPORT_NAME = 'Column.Viewport';
135
+
136
+ type ColumnViewportProps = Pick<ScrollAreaRootProps, 'thin'>;
137
+
138
+ const ColumnViewport = slottable<HTMLDivElement, ColumnViewportProps>(
139
+ ({ children, asChild, role, ...props }, forwardedRef) => {
140
+ const { tx } = useThemeContext();
141
+ const { className, ...rest } = composableProps(props);
142
+ return (
143
+ <ScrollArea.Root
144
+ {...rest}
145
+ className={tx('column.viewport', {}, className)}
146
+ orientation='vertical'
147
+ padding
148
+ ref={forwardedRef}
149
+ >
150
+ <ScrollArea.Viewport>{children}</ScrollArea.Viewport>
151
+ </ScrollArea.Root>
152
+ );
153
+ },
154
+ );
155
+
156
+ ColumnViewport.displayName = COLUMN_VIEWPORT_NAME;
157
+
158
+ //
159
+ // Column
160
+ //
161
+
162
+ export const Column = {
163
+ Root: ColumnRoot,
164
+ Content: ColumnContent,
165
+ Viewport: ColumnViewport,
166
+ Row: ColumnRow,
167
+ };
168
+
169
+ export type { ColumnRootProps, ColumnContentProps, ColumnViewportProps, ColumnRowProps };
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ export * from './Column';
@@ -0,0 +1,30 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
+ import React from 'react';
7
+
8
+ import { withLayout, withTheme } from '../../testing';
9
+
10
+ import { Container } from './Container';
11
+
12
+ const DefaultStory = () => (
13
+ <Container asChild>
14
+ <div className='grid place-items-center border border-red-500'>Hello</div>
15
+ </Container>
16
+ );
17
+
18
+ const meta: Meta = {
19
+ title: 'ui/react-ui-core/primitives/Container',
20
+ component: Container,
21
+ render: DefaultStory,
22
+ decorators: [withTheme(), withLayout({ layout: 'column' })],
23
+ parameters: { layout: 'fullscreen' },
24
+ };
25
+
26
+ export default meta;
27
+
28
+ type Story = StoryObj<typeof meta>;
29
+
30
+ export const Default: Story = {};
@@ -0,0 +1,19 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import { Primitive } from '@radix-ui/react-primitive';
6
+ import { Slot } from '@radix-ui/react-slot';
7
+ import React from 'react';
8
+
9
+ import { composableProps, mx, slottable } from '@dxos/ui-theme';
10
+
11
+ export const Container = slottable<HTMLDivElement>(({ children, asChild, ...props }, forwardedRef) => {
12
+ const { className, ...rest } = composableProps<HTMLDivElement>(props, { role: 'none' });
13
+ const Comp = asChild ? Slot : Primitive.div;
14
+ return (
15
+ <Comp {...rest} className={mx('dx-container', className)} ref={forwardedRef}>
16
+ {children}
17
+ </Comp>
18
+ );
19
+ });
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ export * from './Container';
@@ -0,0 +1,58 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
+ import React from 'react';
7
+
8
+ import { type ChromaticPalette } from '@dxos/ui-types';
9
+
10
+ import { withLayout, withTheme } from '../../testing';
11
+
12
+ import { Flex } from './Flex';
13
+
14
+ const Cell = ({ label, hue }: { label: string; hue: ChromaticPalette }) => (
15
+ <div data-hue={hue} className='flex w-full dx-panel p-2 text-sm font-mono border rounded-sm'>
16
+ {label}
17
+ </div>
18
+ );
19
+
20
+ const RowStory = () => (
21
+ <Flex classNames='gap-2 p-2'>
22
+ <Cell label='A' hue='red' />
23
+ <Cell label='B' hue='green' />
24
+ <Cell label='C' hue='blue' />
25
+ </Flex>
26
+ );
27
+
28
+ const ColumnStory = () => (
29
+ <Flex column classNames='gap-2 p-2'>
30
+ <Cell label='A' hue='red' />
31
+ <Cell label='B' hue='green' />
32
+ <Cell label='C' hue='blue' />
33
+ </Flex>
34
+ );
35
+
36
+ const GrowStory = () => (
37
+ <Flex column grow classNames='gap-2 p-2'>
38
+ <Cell label='Header' hue='yellow' />
39
+ <Flex grow>
40
+ <Cell label='Content (grows)' hue='blue' />
41
+ </Flex>
42
+ <Cell label='Footer' hue='orange' />
43
+ </Flex>
44
+ );
45
+
46
+ const meta: Meta = {
47
+ title: 'ui/react-ui-core/primitives/Flex',
48
+ decorators: [withTheme(), withLayout({ layout: 'column' })],
49
+ parameters: { layout: 'fullscreen' },
50
+ };
51
+
52
+ export default meta;
53
+
54
+ type Story = StoryObj<typeof meta>;
55
+
56
+ export const Row: Story = { render: RowStory };
57
+ export const Column: Story = { render: ColumnStory };
58
+ export const Grow: Story = { render: GrowStory };
@@ -0,0 +1,24 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import React from 'react';
6
+
7
+ import { composable, composableProps, mx } from '@dxos/ui-theme';
8
+
9
+ type FlexOwnProps = { column?: boolean; grow?: boolean };
10
+
11
+ export type FlexProps = FlexOwnProps;
12
+
13
+ export const Flex = composable<HTMLDivElement, FlexOwnProps>(({ children, column, grow, ...props }, forwardedRef) => {
14
+ const { className, ...rest } = composableProps(props, { role: 'none' });
15
+ return (
16
+ <div
17
+ ref={forwardedRef}
18
+ {...rest}
19
+ className={mx('flex', column && 'flex-col', grow && 'flex-1 overflow-hidden', className)}
20
+ >
21
+ {children}
22
+ </div>
23
+ );
24
+ });
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ export * from './Flex';
@@ -0,0 +1,57 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
+ import React from 'react';
7
+
8
+ import { type ChromaticPalette } from '@dxos/ui-types';
9
+
10
+ import { withLayout, withTheme } from '../../testing';
11
+
12
+ import { Grid } from './Grid';
13
+
14
+ const Cell = ({ label, hue }: { label: string; hue: ChromaticPalette }) => (
15
+ <div data-hue={hue} className='dx-panel p-2 text-sm font-mono border rounded-sm'>
16
+ {label}
17
+ </div>
18
+ );
19
+
20
+ const ColsStory = () => (
21
+ <Grid cols={3} classNames='gap-2 p-2'>
22
+ <Cell label='Row 1' hue='red' />
23
+ <Cell label='Row 2' hue='green' />
24
+ <Cell label='Row 3' hue='blue' />
25
+ </Grid>
26
+ );
27
+
28
+ const RowsStory = () => (
29
+ <Grid rows={3} classNames='gap-2 p-2'>
30
+ <Cell label='Row 1' hue='red' />
31
+ <Cell label='Row 2' hue='green' />
32
+ <Cell label='Row 3' hue='blue' />
33
+ </Grid>
34
+ );
35
+
36
+ const MixedStory = () => (
37
+ <Grid cols={2} rows={2} classNames='gap-2 p-2'>
38
+ <Cell label='A' hue='red' />
39
+ <Cell label='B' hue='green' />
40
+ <Cell label='C' hue='blue' />
41
+ <Cell label='D' hue='yellow' />
42
+ </Grid>
43
+ );
44
+
45
+ const meta: Meta = {
46
+ title: 'ui/react-ui-core/primitives/Grid',
47
+ decorators: [withTheme(), withLayout({ layout: 'column' })],
48
+ parameters: { layout: 'fullscreen' },
49
+ };
50
+
51
+ export default meta;
52
+
53
+ type Story = StoryObj<typeof meta>;
54
+
55
+ export const Cols: Story = { render: ColsStory };
56
+ export const Rows: Story = { render: RowsStory };
57
+ export const Mixed: Story = { render: MixedStory };
@@ -0,0 +1,30 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import React from 'react';
6
+
7
+ import { composable, composableProps, mx } from '@dxos/ui-theme';
8
+
9
+ export type GridProps = { cols?: number; rows?: number; grow?: boolean };
10
+
11
+ export const Grid = composable<HTMLDivElement, GridProps>(
12
+ ({ children, style, role, cols, rows, grow = true, ...props }, forwardedRef) => {
13
+ const { className, ...rest } = composableProps(props);
14
+ return (
15
+ <div
16
+ ref={forwardedRef}
17
+ {...rest}
18
+ role={role ?? 'none'}
19
+ className={mx('grid overflow-hidden', grow && 'dx-container', className)}
20
+ style={{
21
+ gridTemplateColumns: cols ? `repeat(${cols}, 1fr)` : undefined,
22
+ gridTemplateRows: rows ? `repeat(${rows}, 1fr)` : undefined,
23
+ ...style,
24
+ }}
25
+ >
26
+ {children}
27
+ </div>
28
+ );
29
+ },
30
+ );
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ export * from './Grid';
@@ -0,0 +1,67 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
+ import React from 'react';
7
+
8
+ import { Input, ScrollArea, Toolbar } from '../../components';
9
+ import { withLayout, withTheme } from '../../testing';
10
+
11
+ import { Panel } from './Panel';
12
+
13
+ const List = () => {
14
+ return (
15
+ <ScrollArea.Root role='list' centered>
16
+ <ScrollArea.Viewport>
17
+ {Array.from({ length: 100 }).map((_, i) => (
18
+ <div key={i} role='listitem' className='p-1 hover:bg-hover-surface'>
19
+ Item {i}
20
+ </div>
21
+ ))}
22
+ </ScrollArea.Viewport>
23
+ </ScrollArea.Root>
24
+ );
25
+ };
26
+
27
+ const DefaultStory = () => {
28
+ return (
29
+ <Panel.Root className='dx-document'>
30
+ <Panel.Toolbar asChild>
31
+ <Toolbar.Root classNames='gap-2'>
32
+ <Toolbar.IconButton icon='ph--plus--regular' variant='primary' label='Add' />
33
+ <Input.Root>
34
+ <Input.TextInput placeholder='Search' />
35
+ </Input.Root>
36
+ <Toolbar.IconButton icon='ph--dots-three-vertical--regular' iconOnly label='Menu' />
37
+ </Toolbar.Root>
38
+ </Panel.Toolbar>
39
+
40
+ <Panel.Content asChild>
41
+ <List />
42
+ </Panel.Content>
43
+
44
+ <Panel.Statusbar asChild>
45
+ <Toolbar.Root classNames='justify-between'>
46
+ <Toolbar.IconButton variant='ghost' icon='ph--house--regular' iconOnly label='Add' />
47
+ <Toolbar.IconButton variant='ghost' icon='ph--alarm--regular' iconOnly label='Status' />
48
+ </Toolbar.Root>
49
+ </Panel.Statusbar>
50
+ </Panel.Root>
51
+ );
52
+ };
53
+
54
+ const meta: Meta = {
55
+ title: 'ui/react-ui-core/primitives/Panel',
56
+ render: DefaultStory,
57
+ decorators: [withTheme(), withLayout({ layout: 'fullscreen' })],
58
+ parameters: {
59
+ layout: 'fullscreen',
60
+ },
61
+ };
62
+
63
+ export default meta;
64
+
65
+ type Story = StoryObj<typeof meta>;
66
+
67
+ export const Default: Story = {};
@@ -0,0 +1,114 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import { Primitive } from '@radix-ui/react-primitive';
6
+ import { Slot } from '@radix-ui/react-slot';
7
+ import React from 'react';
8
+
9
+ import { composableProps, PanelStyleProps, slottable } from '@dxos/ui-theme';
10
+
11
+ import { useThemeContext } from '../../hooks';
12
+
13
+ //
14
+ // Root
15
+ //
16
+
17
+ const GRID_TEMPLATE_ROWS = 'auto 1fr auto';
18
+ const GRID_TEMPLATE_AREAS = '"toolbar" "content" "statusbar"';
19
+
20
+ const Root = slottable<HTMLDivElement>(({ children, asChild, role, style, ...props }, forwardedRef) => {
21
+ const { className, ...rest } = composableProps(props);
22
+ const Comp = asChild ? Slot : Primitive.div;
23
+ const { tx } = useThemeContext();
24
+ return (
25
+ <Comp
26
+ {...rest}
27
+ role={role ?? 'none'}
28
+ style={{
29
+ gridTemplateRows: GRID_TEMPLATE_ROWS,
30
+ gridTemplateAreas: GRID_TEMPLATE_AREAS,
31
+ ...style,
32
+ }}
33
+ className={tx('panel.root', {}, className)}
34
+ ref={forwardedRef}
35
+ >
36
+ {children}
37
+ </Comp>
38
+ );
39
+ });
40
+
41
+ Root.displayName = 'Panel.Root';
42
+
43
+ //
44
+ // Toolbar
45
+ //
46
+
47
+ const Toolbar = slottable<HTMLDivElement, Pick<PanelStyleProps, 'size'>>(
48
+ ({ children, asChild, size, ...props }, forwardedRef) => {
49
+ const { className, ...rest } = composableProps(props);
50
+ const Comp = asChild ? Slot : Primitive.div;
51
+ const { tx } = useThemeContext();
52
+ return (
53
+ <Comp {...rest} data-slot='toolbar' className={tx('panel.toolbar', { size }, className)} ref={forwardedRef}>
54
+ {children}
55
+ </Comp>
56
+ );
57
+ },
58
+ );
59
+
60
+ Toolbar.displayName = 'Panel.Toolbar';
61
+
62
+ //
63
+ // Content
64
+ //
65
+
66
+ const Content = slottable<HTMLDivElement>(({ children, asChild, ...props }, forwardedRef) => {
67
+ const { className, ...rest } = composableProps(props);
68
+ const Comp = asChild ? Slot : Primitive.div;
69
+ const { tx } = useThemeContext();
70
+ return (
71
+ <Comp {...rest} data-slot='content' className={tx('panel.content', {}, className)} ref={forwardedRef}>
72
+ {children}
73
+ </Comp>
74
+ );
75
+ });
76
+
77
+ Content.displayName = 'Panel.Content';
78
+
79
+ //
80
+ // Statusbar
81
+ //
82
+
83
+ const Statusbar = slottable<HTMLDivElement, Pick<PanelStyleProps, 'size'>>(
84
+ ({ children, asChild, size, ...props }, forwardedRef) => {
85
+ const { className, ...rest } = composableProps(props);
86
+ const Comp = asChild ? Slot : Primitive.div;
87
+ const { tx } = useThemeContext();
88
+ return (
89
+ <Comp {...rest} data-slot='statusbar' className={tx('panel.statusbar', { size }, className)} ref={forwardedRef}>
90
+ {children}
91
+ </Comp>
92
+ );
93
+ },
94
+ );
95
+
96
+ Statusbar.displayName = 'Panel.Statusbar';
97
+
98
+ //
99
+ // Panel
100
+ //
101
+
102
+ export const Panel = {
103
+ Root,
104
+ Toolbar,
105
+ Content,
106
+ Statusbar,
107
+ };
108
+
109
+ import { type SlottableProps } from '@dxos/ui-types';
110
+
111
+ export type PanelRootProps = SlottableProps;
112
+ export type PanelToolbarProps = SlottableProps & Pick<PanelStyleProps, 'size'>;
113
+ export type PanelContentProps = SlottableProps;
114
+ export type PanelStatusbarProps = SlottableProps & Pick<PanelStyleProps, 'size'>;
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ export * from './Panel';
@@ -0,0 +1,9 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ export * from './Column';
6
+ export * from './Container';
7
+ export * from './Flex';
8
+ export * from './Grid';
9
+ export * from './Panel';
@@ -0,0 +1,26 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { mx } from '@dxos/ui-theme';
6
+ import { safeStringify } from '@dxos/util';
7
+ import React, { useEffect, useState } from 'react';
8
+
9
+ export type LoadingProps = { data?: any };
10
+
11
+ /**
12
+ * Storybook loading component.
13
+ */
14
+ export const Loading = ({ data }: LoadingProps) => {
15
+ const [visible, setVisible] = useState(false);
16
+ useEffect(() => {
17
+ const t = setTimeout(() => setVisible(true), 500);
18
+ return () => clearTimeout(t);
19
+ }, []);
20
+ return (
21
+ <div className={mx('flex flex-col opacity-0 transition delay-1000 duration-1000', visible && 'opacity-100')}>
22
+ <h2 className='uppercase'>Loading</h2>
23
+ <pre>{safeStringify(data, undefined, 2)}</pre>
24
+ </div>
25
+ );
26
+ };