@dxos/react-ui 0.8.4-main.406dc2a → 0.8.4-main.4a85c3132b

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 (392) hide show
  1. package/dist/lib/browser/chunk-2FKSMWNY.mjs +774 -0
  2. package/dist/lib/browser/chunk-2FKSMWNY.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +3929 -66
  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 +58 -64
  7. package/dist/lib/browser/testing/index.mjs.map +4 -4
  8. package/dist/lib/node-esm/chunk-ZNBLTSHI.mjs +776 -0
  9. package/dist/lib/node-esm/chunk-ZNBLTSHI.mjs.map +7 -0
  10. package/dist/lib/node-esm/index.mjs +3929 -66
  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 +58 -64
  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/{Buttons → Button}/Button.d.ts +1 -1
  19. package/dist/types/src/components/Button/Button.d.ts.map +1 -0
  20. package/dist/types/src/components/Button/Button.stories.d.ts.map +1 -0
  21. package/dist/types/src/components/{Buttons → Button}/IconButton.d.ts +2 -2
  22. package/dist/types/src/components/Button/IconButton.d.ts.map +1 -0
  23. package/dist/types/src/components/Button/IconButton.stories.d.ts.map +1 -0
  24. package/dist/types/src/components/Button/Toggle.d.ts.map +1 -0
  25. package/dist/types/src/components/Button/Toggle.stories.d.ts +16 -0
  26. package/dist/types/src/components/Button/Toggle.stories.d.ts.map +1 -0
  27. package/dist/types/src/components/{Buttons → Button}/ToggleGroup.d.ts +4 -4
  28. package/dist/types/src/components/Button/ToggleGroup.d.ts.map +1 -0
  29. package/dist/types/src/components/{Buttons → Button}/ToggleGroup.stories.d.ts +4 -4
  30. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts.map +1 -0
  31. package/dist/types/src/components/Button/index.d.ts.map +1 -0
  32. package/dist/types/src/components/Card/Card.d.ts +121 -0
  33. package/dist/types/src/components/Card/Card.d.ts.map +1 -0
  34. package/dist/types/src/components/Card/Card.stories.d.ts +21 -0
  35. package/dist/types/src/components/Card/Card.stories.d.ts.map +1 -0
  36. package/dist/types/src/components/Card/index.d.ts +2 -0
  37. package/dist/types/src/components/Card/index.d.ts.map +1 -0
  38. package/dist/types/src/components/Clipboard/CopyButton.d.ts +1 -1
  39. package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -1
  40. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts +1 -1
  41. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts.map +1 -1
  42. package/dist/types/src/components/{Dialogs → Dialog}/AlertDialog.d.ts +12 -3
  43. package/dist/types/src/components/Dialog/AlertDialog.d.ts.map +1 -0
  44. package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts.map +1 -0
  45. package/dist/types/src/components/Dialog/Dialog.d.ts +47 -0
  46. package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -0
  47. package/dist/types/src/components/{Dialogs → Dialog}/Dialog.stories.d.ts +9 -10
  48. package/dist/types/src/components/Dialog/Dialog.stories.d.ts.map +1 -0
  49. package/dist/types/src/components/Dialog/index.d.ts.map +1 -0
  50. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts +1 -1
  51. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts.map +1 -1
  52. package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts +11 -0
  53. package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts.map +1 -0
  54. package/dist/types/src/components/ErrorFallback/ErrorFallback.stories.d.ts +7 -0
  55. package/dist/types/src/components/ErrorFallback/ErrorFallback.stories.d.ts.map +1 -0
  56. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts +8 -0
  57. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts.map +1 -0
  58. package/dist/types/src/components/ErrorFallback/ThrowError.d.ts +9 -0
  59. package/dist/types/src/components/ErrorFallback/ThrowError.d.ts.map +1 -0
  60. package/dist/types/src/components/ErrorFallback/index.d.ts +5 -0
  61. package/dist/types/src/components/ErrorFallback/index.d.ts.map +1 -0
  62. package/dist/types/src/components/Icon/Icon.d.ts +1 -1
  63. package/dist/types/src/components/Icon/Icon.d.ts.map +1 -1
  64. package/dist/types/src/components/Icon/Icon.stories.d.ts +17 -0
  65. package/dist/types/src/components/Icon/Icon.stories.d.ts.map +1 -0
  66. package/dist/types/src/components/Image/Image.d.ts +14 -0
  67. package/dist/types/src/components/Image/Image.d.ts.map +1 -0
  68. package/dist/types/src/components/Image/Image.stories.d.ts +33 -0
  69. package/dist/types/src/components/Image/Image.stories.d.ts.map +1 -0
  70. package/dist/types/src/components/Image/index.d.ts +2 -0
  71. package/dist/types/src/components/Image/index.d.ts.map +1 -0
  72. package/dist/types/src/components/Input/Input.d.ts +5 -5
  73. package/dist/types/src/components/Input/Input.d.ts.map +1 -1
  74. package/dist/types/src/components/Input/Input.stories.d.ts +8 -8
  75. package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
  76. package/dist/types/src/components/{Lists → List}/List.d.ts +1 -1
  77. package/dist/types/src/components/List/List.d.ts.map +1 -0
  78. package/dist/types/src/components/List/List.stories.d.ts.map +1 -0
  79. package/dist/types/src/components/List/ListDropIndicator.d.ts.map +1 -0
  80. package/dist/types/src/components/List/Tree.d.ts.map +1 -0
  81. package/dist/types/src/components/List/Tree.stories.d.ts.map +1 -0
  82. package/dist/types/src/components/List/TreeDropIndicator.d.ts.map +1 -0
  83. package/dist/types/src/components/List/Treegrid.d.ts.map +1 -0
  84. package/dist/types/src/components/List/Treegrid.stories.d.ts.map +1 -0
  85. package/dist/types/src/components/List/index.d.ts.map +1 -0
  86. package/dist/types/src/components/Main/Main.d.ts +17 -18
  87. package/dist/types/src/components/Main/Main.d.ts.map +1 -1
  88. package/dist/types/src/components/Main/Main.stories.d.ts +0 -3
  89. package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
  90. package/dist/types/src/components/{Menus → Menu}/ContextMenu.d.ts +6 -6
  91. package/dist/types/src/components/Menu/ContextMenu.d.ts.map +1 -0
  92. package/dist/types/src/components/Menu/ContextMenu.stories.d.ts.map +1 -0
  93. package/dist/types/src/components/{Menus → Menu}/DropdownMenu.d.ts +3 -4
  94. package/dist/types/src/components/Menu/DropdownMenu.d.ts.map +1 -0
  95. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts.map +1 -0
  96. package/dist/types/src/components/Menu/index.d.ts.map +1 -0
  97. package/dist/types/src/components/Message/Message.d.ts +1 -1
  98. package/dist/types/src/components/Message/Message.d.ts.map +1 -1
  99. package/dist/types/src/components/Message/Message.stories.d.ts +3 -4
  100. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
  101. package/dist/types/src/components/Popover/Popover.d.ts +2 -1
  102. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  103. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +25 -26
  104. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  105. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +46 -8
  106. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
  107. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +39 -0
  108. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -0
  109. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts +24 -0
  110. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts.map +1 -0
  111. package/dist/types/src/components/ScrollContainer/index.d.ts +2 -0
  112. package/dist/types/src/components/ScrollContainer/index.d.ts.map +1 -0
  113. package/dist/types/src/components/Select/Select.d.ts +10 -10
  114. package/dist/types/src/components/Select/Select.d.ts.map +1 -1
  115. package/dist/types/src/components/Separator/Separator.d.ts +1 -1
  116. package/dist/types/src/components/Skeleton/Skeleton.d.ts +12 -0
  117. package/dist/types/src/components/Skeleton/Skeleton.d.ts.map +1 -0
  118. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts +17 -0
  119. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts.map +1 -0
  120. package/dist/types/src/components/Skeleton/index.d.ts +2 -0
  121. package/dist/types/src/components/Skeleton/index.d.ts.map +1 -0
  122. package/dist/types/src/components/Splitter/Splitter.d.ts +36 -0
  123. package/dist/types/src/components/Splitter/Splitter.d.ts.map +1 -0
  124. package/dist/types/src/components/Splitter/Splitter.stories.d.ts +7 -0
  125. package/dist/types/src/components/Splitter/Splitter.stories.d.ts.map +1 -0
  126. package/dist/types/src/components/Splitter/index.d.ts +2 -0
  127. package/dist/types/src/components/Splitter/index.d.ts.map +1 -0
  128. package/dist/types/src/components/Status/Status.stories.d.ts +4 -2
  129. package/dist/types/src/components/Status/Status.stories.d.ts.map +1 -1
  130. package/dist/types/src/components/Tag/Tag.d.ts +1 -1
  131. package/dist/types/src/components/Tag/Tag.d.ts.map +1 -1
  132. package/dist/types/src/components/Tag/Tag.stories.d.ts +0 -5
  133. package/dist/types/src/components/Tag/Tag.stories.d.ts.map +1 -1
  134. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts +2 -2
  135. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  136. package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts +12 -0
  137. package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts.map +1 -0
  138. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +1 -8
  139. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
  140. package/dist/types/src/components/ThemeProvider/index.d.ts +2 -1
  141. package/dist/types/src/components/ThemeProvider/index.d.ts.map +1 -1
  142. package/dist/types/src/components/Toast/Toast.d.ts +4 -4
  143. package/dist/types/src/components/Toast/Toast.d.ts.map +1 -1
  144. package/dist/types/src/components/Toolbar/Toolbar.d.ts +42 -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.map +1 -1
  148. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
  149. package/dist/types/src/components/index.d.ts +13 -8
  150. package/dist/types/src/components/index.d.ts.map +1 -1
  151. package/dist/types/src/exemplars/generics.stories.d.ts +18 -0
  152. package/dist/types/src/exemplars/generics.stories.d.ts.map +1 -0
  153. package/dist/types/src/exemplars/slot.stories.d.ts +14 -0
  154. package/dist/types/src/exemplars/slot.stories.d.ts.map +1 -0
  155. package/dist/types/src/exemplars/tabster.stories.d.ts +8 -0
  156. package/dist/types/src/exemplars/tabster.stories.d.ts.map +1 -0
  157. package/dist/types/src/exemplars/virtualizer.stories.d.ts +11 -0
  158. package/dist/types/src/exemplars/virtualizer.stories.d.ts.map +1 -0
  159. package/dist/types/src/hooks/useDensityContext.d.ts +1 -1
  160. package/dist/types/src/hooks/useDensityContext.d.ts.map +1 -1
  161. package/dist/types/src/hooks/useElevationContext.d.ts +1 -1
  162. package/dist/types/src/hooks/useElevationContext.d.ts.map +1 -1
  163. package/dist/types/src/index.d.ts +2 -1
  164. package/dist/types/src/index.d.ts.map +1 -1
  165. package/dist/types/src/playground/Controls.stories.d.ts.map +1 -1
  166. package/dist/types/src/playground/Custom.stories.d.ts.map +1 -1
  167. package/dist/types/src/primitives/Column/Column.d.ts +32 -0
  168. package/dist/types/src/primitives/Column/Column.d.ts.map +1 -0
  169. package/dist/types/src/primitives/Column/Column.stories.d.ts +6 -0
  170. package/dist/types/src/primitives/Column/Column.stories.d.ts.map +1 -0
  171. package/dist/types/src/primitives/Column/index.d.ts +2 -0
  172. package/dist/types/src/primitives/Column/index.d.ts.map +1 -0
  173. package/dist/types/src/primitives/Flex/Flex.d.ts +8 -0
  174. package/dist/types/src/primitives/Flex/Flex.d.ts.map +1 -0
  175. package/dist/types/src/primitives/Flex/Flex.stories.d.ts +8 -0
  176. package/dist/types/src/primitives/Flex/Flex.stories.d.ts.map +1 -0
  177. package/dist/types/src/primitives/Flex/index.d.ts +2 -0
  178. package/dist/types/src/primitives/Flex/index.d.ts.map +1 -0
  179. package/dist/types/src/primitives/Grid/Grid.d.ts +9 -0
  180. package/dist/types/src/primitives/Grid/Grid.d.ts.map +1 -0
  181. package/dist/types/src/primitives/Grid/Grid.stories.d.ts +8 -0
  182. package/dist/types/src/primitives/Grid/Grid.stories.d.ts.map +1 -0
  183. package/dist/types/src/primitives/Grid/index.d.ts +2 -0
  184. package/dist/types/src/primitives/Grid/index.d.ts.map +1 -0
  185. package/dist/types/src/primitives/Panel/Panel.d.ts +34 -0
  186. package/dist/types/src/primitives/Panel/Panel.d.ts.map +1 -0
  187. package/dist/types/src/primitives/Panel/Panel.stories.d.ts +6 -0
  188. package/dist/types/src/primitives/Panel/Panel.stories.d.ts.map +1 -0
  189. package/dist/types/src/primitives/Panel/index.d.ts +2 -0
  190. package/dist/types/src/primitives/Panel/index.d.ts.map +1 -0
  191. package/dist/types/src/primitives/index.d.ts +5 -0
  192. package/dist/types/src/primitives/index.d.ts.map +1 -0
  193. package/dist/types/src/testing/decorators/index.d.ts +1 -1
  194. package/dist/types/src/testing/decorators/index.d.ts.map +1 -1
  195. package/dist/types/src/testing/decorators/withLayout.d.ts +3 -3
  196. package/dist/types/src/testing/decorators/withLayout.d.ts.map +1 -1
  197. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts +12 -0
  198. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts.map +1 -0
  199. package/dist/types/src/testing/decorators/withTheme.d.ts +3 -2
  200. package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
  201. package/dist/types/src/translations.d.ts +11 -0
  202. package/dist/types/src/translations.d.ts.map +1 -0
  203. package/dist/types/src/util/index.d.ts +1 -2
  204. package/dist/types/src/util/index.d.ts.map +1 -1
  205. package/dist/types/tsconfig.tsbuildinfo +1 -1
  206. package/package.json +41 -29
  207. package/src/components/Avatars/Avatar.stories.tsx +5 -6
  208. package/src/components/Avatars/Avatar.tsx +6 -13
  209. package/src/components/Avatars/AvatarGroup.stories.tsx +2 -2
  210. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +4 -4
  211. package/src/components/Breadcrumb/Breadcrumb.tsx +11 -37
  212. package/src/components/{Buttons → Button}/Button.stories.tsx +4 -4
  213. package/src/components/{Buttons → Button}/Button.tsx +7 -13
  214. package/src/components/{Buttons → Button}/IconButton.stories.tsx +4 -4
  215. package/src/components/{Buttons → Button}/IconButton.tsx +20 -14
  216. package/src/components/{Buttons → Button}/Toggle.stories.tsx +7 -6
  217. package/src/components/{Buttons → Button}/ToggleGroup.stories.tsx +2 -2
  218. package/src/components/Card/Card.stories.tsx +151 -0
  219. package/src/components/Card/Card.tsx +352 -0
  220. package/src/components/Card/index.ts +5 -0
  221. package/src/components/Clipboard/CopyButton.tsx +7 -7
  222. package/src/components/DensityProvider/DensityProvider.tsx +1 -1
  223. package/src/components/Dialog/AlertDialog.stories.tsx +69 -0
  224. package/src/components/{Dialogs → Dialog}/AlertDialog.tsx +116 -16
  225. package/src/components/Dialog/Dialog.stories.tsx +122 -0
  226. package/src/components/{Dialogs → Dialog}/Dialog.tsx +179 -49
  227. package/src/components/ElevationProvider/ElevationProvider.tsx +1 -1
  228. package/src/components/ErrorFallback/ErrorFallback.stories.tsx +50 -0
  229. package/src/components/ErrorFallback/ErrorFallback.tsx +70 -0
  230. package/src/components/ErrorFallback/ErrorStack.tsx +80 -0
  231. package/src/components/ErrorFallback/ThrowError.tsx +37 -0
  232. package/src/components/ErrorFallback/index.ts +9 -0
  233. package/src/components/Icon/Icon.stories.tsx +113 -0
  234. package/src/components/Icon/Icon.tsx +3 -3
  235. package/src/components/Image/Image.stories.tsx +86 -0
  236. package/src/components/Image/Image.tsx +223 -0
  237. package/src/components/Image/index.ts +5 -0
  238. package/src/components/Input/Input.stories.tsx +21 -40
  239. package/src/components/Input/Input.tsx +32 -68
  240. package/src/components/Link/Link.stories.tsx +2 -2
  241. package/src/components/Link/Link.tsx +2 -2
  242. package/src/components/{Lists → List}/List.stories.tsx +30 -33
  243. package/src/components/{Lists → List}/List.tsx +12 -17
  244. package/src/components/{Lists → List}/ListDropIndicator.tsx +7 -7
  245. package/src/components/{Lists → List}/Tree.stories.tsx +4 -4
  246. package/src/components/{Lists → List}/TreeDropIndicator.tsx +6 -6
  247. package/src/components/{Lists → List}/Treegrid.stories.tsx +3 -3
  248. package/src/components/{Lists → List}/Treegrid.tsx +10 -15
  249. package/src/components/Main/Main.stories.tsx +41 -23
  250. package/src/components/Main/Main.tsx +149 -92
  251. package/src/components/{Menus → Menu}/ContextMenu.stories.tsx +2 -2
  252. package/src/components/{Menus → Menu}/ContextMenu.tsx +9 -33
  253. package/src/components/{Menus → Menu}/DropdownMenu.stories.tsx +3 -3
  254. package/src/components/{Menus → Menu}/DropdownMenu.tsx +89 -68
  255. package/src/components/Message/Message.stories.tsx +26 -11
  256. package/src/components/Message/Message.tsx +46 -33
  257. package/src/components/Popover/Popover.stories.tsx +5 -5
  258. package/src/components/Popover/Popover.tsx +75 -53
  259. package/src/components/ScrollArea/ScrollArea.stories.tsx +166 -40
  260. package/src/components/ScrollArea/ScrollArea.tsx +84 -82
  261. package/src/components/ScrollArea/index.ts +1 -1
  262. package/src/components/ScrollContainer/ScrollContainer.stories.tsx +89 -0
  263. package/src/components/ScrollContainer/ScrollContainer.tsx +238 -0
  264. package/src/components/ScrollContainer/index.ts +5 -0
  265. package/src/components/Select/Select.stories.tsx +3 -3
  266. package/src/components/Select/Select.tsx +11 -27
  267. package/src/components/Separator/Separator.tsx +1 -1
  268. package/src/components/Skeleton/Skeleton.stories.tsx +52 -0
  269. package/src/components/Skeleton/Skeleton.tsx +26 -0
  270. package/src/components/Skeleton/index.ts +5 -0
  271. package/src/components/Splitter/Splitter.stories.tsx +83 -0
  272. package/src/components/Splitter/Splitter.tsx +138 -0
  273. package/src/components/Splitter/index.ts +5 -0
  274. package/src/components/Status/Status.stories.tsx +21 -17
  275. package/src/components/Status/Status.tsx +2 -2
  276. package/src/components/Tag/Tag.stories.tsx +6 -11
  277. package/src/components/Tag/Tag.tsx +3 -8
  278. package/src/components/ThemeProvider/ThemeProvider.stories.tsx +32 -0
  279. package/src/components/ThemeProvider/ThemeProvider.tsx +5 -6
  280. package/src/components/ThemeProvider/TranslationsProvider.tsx +1 -16
  281. package/src/components/ThemeProvider/index.ts +3 -3
  282. package/src/components/Toast/Toast.stories.tsx +3 -3
  283. package/src/components/Toast/Toast.tsx +10 -14
  284. package/src/components/Toolbar/Toolbar.stories.tsx +4 -6
  285. package/src/components/Toolbar/Toolbar.tsx +190 -13
  286. package/src/components/Tooltip/Tooltip.stories.tsx +16 -14
  287. package/src/components/Tooltip/Tooltip.tsx +25 -22
  288. package/src/components/index.ts +14 -9
  289. package/src/exemplars/generics.stories.tsx +49 -0
  290. package/src/exemplars/slot.stories.tsx +119 -0
  291. package/src/exemplars/tabster.stories.tsx +127 -0
  292. package/src/exemplars/virtualizer.stories.tsx +137 -0
  293. package/src/hooks/useDensityContext.ts +1 -1
  294. package/src/hooks/useElevationContext.ts +1 -1
  295. package/src/index.ts +2 -1
  296. package/src/playground/Controls.stories.tsx +3 -10
  297. package/src/playground/Custom.stories.tsx +8 -10
  298. package/src/playground/Typography.stories.tsx +3 -3
  299. package/src/primitives/Column/Column.stories.tsx +72 -0
  300. package/src/primitives/Column/Column.tsx +156 -0
  301. package/src/primitives/Column/index.ts +5 -0
  302. package/src/primitives/Flex/Flex.stories.tsx +58 -0
  303. package/src/primitives/Flex/Flex.tsx +27 -0
  304. package/src/primitives/Flex/index.ts +5 -0
  305. package/src/primitives/Grid/Grid.stories.tsx +57 -0
  306. package/src/primitives/Grid/Grid.tsx +43 -0
  307. package/src/primitives/Grid/index.ts +5 -0
  308. package/src/primitives/Panel/Panel.stories.tsx +67 -0
  309. package/src/primitives/Panel/Panel.tsx +137 -0
  310. package/src/primitives/Panel/index.ts +5 -0
  311. package/src/primitives/index.ts +8 -0
  312. package/src/testing/decorators/index.ts +1 -1
  313. package/src/testing/decorators/withLayout.tsx +39 -18
  314. package/src/testing/decorators/withLayoutVariants.tsx +48 -0
  315. package/src/testing/decorators/withTheme.tsx +21 -18
  316. package/src/translations.ts +19 -0
  317. package/src/util/index.ts +2 -2
  318. package/dist/lib/browser/chunk-KX5JDELJ.mjs +0 -4521
  319. package/dist/lib/browser/chunk-KX5JDELJ.mjs.map +0 -7
  320. package/dist/lib/node-esm/chunk-3HDQYL5S.mjs +0 -4523
  321. package/dist/lib/node-esm/chunk-3HDQYL5S.mjs.map +0 -7
  322. package/dist/types/src/components/AnchoredOverflow/AnchoredOverflow.d.ts +0 -15
  323. package/dist/types/src/components/AnchoredOverflow/AnchoredOverflow.d.ts.map +0 -1
  324. package/dist/types/src/components/AnchoredOverflow/index.d.ts +0 -2
  325. package/dist/types/src/components/AnchoredOverflow/index.d.ts.map +0 -1
  326. package/dist/types/src/components/Buttons/Button.d.ts.map +0 -1
  327. package/dist/types/src/components/Buttons/Button.stories.d.ts.map +0 -1
  328. package/dist/types/src/components/Buttons/IconButton.d.ts.map +0 -1
  329. package/dist/types/src/components/Buttons/IconButton.stories.d.ts.map +0 -1
  330. package/dist/types/src/components/Buttons/Toggle.d.ts.map +0 -1
  331. package/dist/types/src/components/Buttons/Toggle.stories.d.ts +0 -13
  332. package/dist/types/src/components/Buttons/Toggle.stories.d.ts.map +0 -1
  333. package/dist/types/src/components/Buttons/ToggleGroup.d.ts.map +0 -1
  334. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts.map +0 -1
  335. package/dist/types/src/components/Buttons/index.d.ts.map +0 -1
  336. package/dist/types/src/components/Dialogs/AlertDialog.d.ts.map +0 -1
  337. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts.map +0 -1
  338. package/dist/types/src/components/Dialogs/Dialog.d.ts +0 -31
  339. package/dist/types/src/components/Dialogs/Dialog.d.ts.map +0 -1
  340. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts.map +0 -1
  341. package/dist/types/src/components/Dialogs/index.d.ts.map +0 -1
  342. package/dist/types/src/components/Lists/List.d.ts.map +0 -1
  343. package/dist/types/src/components/Lists/List.stories.d.ts.map +0 -1
  344. package/dist/types/src/components/Lists/ListDropIndicator.d.ts.map +0 -1
  345. package/dist/types/src/components/Lists/Tree.d.ts.map +0 -1
  346. package/dist/types/src/components/Lists/Tree.stories.d.ts.map +0 -1
  347. package/dist/types/src/components/Lists/TreeDropIndicator.d.ts.map +0 -1
  348. package/dist/types/src/components/Lists/Treegrid.d.ts.map +0 -1
  349. package/dist/types/src/components/Lists/Treegrid.stories.d.ts.map +0 -1
  350. package/dist/types/src/components/Lists/index.d.ts.map +0 -1
  351. package/dist/types/src/components/Menus/ContextMenu.d.ts.map +0 -1
  352. package/dist/types/src/components/Menus/ContextMenu.stories.d.ts.map +0 -1
  353. package/dist/types/src/components/Menus/DropdownMenu.d.ts.map +0 -1
  354. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts.map +0 -1
  355. package/dist/types/src/components/Menus/index.d.ts.map +0 -1
  356. package/dist/types/src/testing/decorators/withSurfaceVariantsLayout.d.ts +0 -12
  357. package/dist/types/src/testing/decorators/withSurfaceVariantsLayout.d.ts.map +0 -1
  358. package/dist/types/src/util/ThemedClassName.d.ts +0 -5
  359. package/dist/types/src/util/ThemedClassName.d.ts.map +0 -1
  360. package/dist/types/src/util/domino.d.ts +0 -18
  361. package/dist/types/src/util/domino.d.ts.map +0 -1
  362. package/src/components/AnchoredOverflow/AnchoredOverflow.tsx +0 -59
  363. package/src/components/AnchoredOverflow/index.ts +0 -5
  364. package/src/components/Dialogs/AlertDialog.stories.tsx +0 -69
  365. package/src/components/Dialogs/Dialog.stories.tsx +0 -67
  366. package/src/testing/decorators/withSurfaceVariantsLayout.tsx +0 -51
  367. package/src/util/ThemedClassName.ts +0 -7
  368. package/src/util/domino.ts +0 -53
  369. /package/dist/types/src/components/{Buttons → Button}/Button.stories.d.ts +0 -0
  370. /package/dist/types/src/components/{Buttons → Button}/IconButton.stories.d.ts +0 -0
  371. /package/dist/types/src/components/{Buttons → Button}/Toggle.d.ts +0 -0
  372. /package/dist/types/src/components/{Buttons → Button}/index.d.ts +0 -0
  373. /package/dist/types/src/components/{Dialogs → Dialog}/AlertDialog.stories.d.ts +0 -0
  374. /package/dist/types/src/components/{Dialogs → Dialog}/index.d.ts +0 -0
  375. /package/dist/types/src/components/{Lists → List}/List.stories.d.ts +0 -0
  376. /package/dist/types/src/components/{Lists → List}/ListDropIndicator.d.ts +0 -0
  377. /package/dist/types/src/components/{Lists → List}/Tree.d.ts +0 -0
  378. /package/dist/types/src/components/{Lists → List}/Tree.stories.d.ts +0 -0
  379. /package/dist/types/src/components/{Lists → List}/TreeDropIndicator.d.ts +0 -0
  380. /package/dist/types/src/components/{Lists → List}/Treegrid.d.ts +0 -0
  381. /package/dist/types/src/components/{Lists → List}/Treegrid.stories.d.ts +0 -0
  382. /package/dist/types/src/components/{Lists → List}/index.d.ts +0 -0
  383. /package/dist/types/src/components/{Menus → Menu}/ContextMenu.stories.d.ts +0 -0
  384. /package/dist/types/src/components/{Menus → Menu}/DropdownMenu.stories.d.ts +0 -0
  385. /package/dist/types/src/components/{Menus → Menu}/index.d.ts +0 -0
  386. /package/src/components/{Buttons → Button}/Toggle.tsx +0 -0
  387. /package/src/components/{Buttons → Button}/ToggleGroup.tsx +0 -0
  388. /package/src/components/{Buttons → Button}/index.ts +0 -0
  389. /package/src/components/{Dialogs → Dialog}/index.ts +0 -0
  390. /package/src/components/{Lists → List}/Tree.tsx +0 -0
  391. /package/src/components/{Lists → List}/index.ts +0 -0
  392. /package/src/components/{Menus → Menu}/index.ts +0 -0
@@ -6,7 +6,7 @@ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
6
  import React from 'react';
7
7
 
8
8
  import { withTheme } from '../../testing';
9
- import { Toggle } from '../Buttons';
9
+ import { Toggle } from '../Button';
10
10
  import { Icon } from '../Icon';
11
11
  import { Select } from '../Select';
12
12
 
@@ -63,18 +63,16 @@ const DefaultStory = (props: StorybookToolbarProps) => {
63
63
  </Toolbar.Button>
64
64
  <Toolbar.Separator />
65
65
  <Toolbar.Button>Test</Toolbar.Button>
66
- <Toolbar.Button>
67
- <Icon icon='ph--arrow-clockwise--regular' />
68
- </Toolbar.Button>
66
+ <Toolbar.IconButton icon='ph--arrow-clockwise--regular' label='Refresh' iconOnly />
69
67
  </Toolbar.Root>
70
68
  );
71
69
  };
72
70
 
73
71
  const meta = {
74
- title: 'ui/react-ui-core/Toolbar',
72
+ title: 'ui/react-ui-core/components/Toolbar',
75
73
  component: Toolbar as any,
76
74
  render: DefaultStory,
77
- decorators: [withTheme],
75
+ decorators: [withTheme()],
78
76
  } satisfies Meta<typeof DefaultStory>;
79
77
 
80
78
  export default meta;
@@ -2,11 +2,18 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
+ import { Primitive } from '@radix-ui/react-primitive';
6
+ import { Slot } from '@radix-ui/react-slot';
5
7
  import type { ToggleGroupItemProps as ToggleGroupItemPrimitiveProps } from '@radix-ui/react-toggle-group';
6
8
  import * as ToolbarPrimitive from '@radix-ui/react-toolbar';
7
9
  import React, { Fragment, forwardRef } from 'react';
10
+ import { useTranslation } from 'react-i18next';
11
+
12
+ import { type ToolbarStyleProps } from '@dxos/ui-theme';
13
+ import { type SlottableProps } from '@dxos/ui-types';
8
14
 
9
15
  import { useThemeContext } from '../../hooks';
16
+ import { translationKey } from '../../translations';
10
17
  import { type ThemedClassName } from '../../util';
11
18
  import {
12
19
  Button,
@@ -18,30 +25,42 @@ import {
18
25
  Toggle,
19
26
  type ToggleGroupItemProps,
20
27
  type ToggleProps,
21
- } from '../Buttons';
28
+ } from '../Button';
22
29
  import { Link, type LinkProps } from '../Link';
30
+ import { DropdownMenu } from '../Menu';
23
31
  import { Separator, type SeparatorProps } from '../Separator';
24
32
 
33
+ //
34
+ // Root
35
+ //
36
+
25
37
  type ToolbarRootProps = ThemedClassName<
26
- ToolbarPrimitive.ToolbarProps & {
27
- layoutManaged?: boolean;
28
- textBlockWidth?: boolean;
29
- }
38
+ ToolbarPrimitive.ToolbarProps &
39
+ ToolbarStyleProps & {
40
+ textBlockWidth?: boolean;
41
+ }
30
42
  >;
31
43
 
44
+ // TODO(burdon): Implement asChild property.
32
45
  const ToolbarRoot = forwardRef<HTMLDivElement, ToolbarRootProps>(
33
- ({ classNames, children, layoutManaged, textBlockWidth: wrapContents, ...props }, forwardedRef) => {
46
+ (
47
+ { classNames, children, density, disabled, layoutManaged, textBlockWidth: textBlockWidthProp, ...props },
48
+ forwardedRef,
49
+ ) => {
34
50
  const { tx } = useThemeContext();
35
- const InnerRoot = wrapContents ? 'div' : Fragment;
36
- const innerRootProps = wrapContents
37
- ? { role: 'none', className: tx('toolbar.inner', 'toolbar', { layoutManaged }, classNames) }
51
+ const InnerRoot = textBlockWidthProp ? 'div' : Fragment;
52
+ const innerRootProps = textBlockWidthProp
53
+ ? {
54
+ role: 'none',
55
+ className: tx('toolbar.inner', { layoutManaged }, classNames),
56
+ }
38
57
  : {};
39
58
 
40
59
  return (
41
60
  <ToolbarPrimitive.Root
42
61
  {...props}
43
62
  data-arrow-keys={props.orientation === 'vertical' ? 'up down' : 'left right'}
44
- className={tx('toolbar.root', 'toolbar', { layoutManaged }, classNames)}
63
+ className={tx('toolbar.root', { density, disabled, layoutManaged }, classNames)}
45
64
  ref={forwardedRef}
46
65
  >
47
66
  <InnerRoot {...innerRootProps}>{children}</InnerRoot>
@@ -50,6 +69,28 @@ const ToolbarRoot = forwardRef<HTMLDivElement, ToolbarRootProps>(
50
69
  },
51
70
  );
52
71
 
72
+ //
73
+ // Text
74
+ //
75
+
76
+ type ToolbarTextProps = SlottableProps<HTMLDivElement>;
77
+
78
+ const ToolbarText = forwardRef<HTMLDivElement, ToolbarTextProps>(
79
+ ({ classNames, className, asChild, children, ...props }, forwardedRef) => {
80
+ const { tx } = useThemeContext();
81
+ const Comp = asChild ? Slot : Primitive.div;
82
+ return (
83
+ <Comp {...props} className={tx('toolbar.text', {}, [className, classNames])} ref={forwardedRef}>
84
+ {children}
85
+ </Comp>
86
+ );
87
+ },
88
+ );
89
+
90
+ //
91
+ // Button
92
+ //
93
+
53
94
  type ToolbarButtonProps = ButtonProps;
54
95
 
55
96
  const ToolbarButton = forwardRef<HTMLButtonElement, ToolbarButtonProps>((props, forwardedRef) => {
@@ -60,12 +101,16 @@ const ToolbarButton = forwardRef<HTMLButtonElement, ToolbarButtonProps>((props,
60
101
  );
61
102
  });
62
103
 
104
+ //
105
+ // IconButton
106
+ //
107
+
63
108
  type ToolbarIconButtonProps = IconButtonProps;
64
109
 
65
110
  const ToolbarIconButton = forwardRef<HTMLButtonElement, ToolbarIconButtonProps>((props, forwardedRef) => {
66
111
  return (
67
112
  <ToolbarPrimitive.Button asChild>
68
- <IconButton {...props} ref={forwardedRef} />
113
+ <IconButton {...props} noTooltip ref={forwardedRef} />
69
114
  </ToolbarPrimitive.Button>
70
115
  );
71
116
  });
@@ -80,6 +125,10 @@ const ToolbarToggle = forwardRef<HTMLButtonElement, ToolbarToggleProps>((props,
80
125
  );
81
126
  });
82
127
 
128
+ //
129
+ // Link
130
+ //
131
+
83
132
  type ToolbarLinkProps = LinkProps;
84
133
 
85
134
  const ToolbarLink = forwardRef<HTMLAnchorElement, ToolbarLinkProps>((props, forwardedRef) => {
@@ -96,6 +145,10 @@ type ToolbarToggleGroupProps = (
96
145
  ) &
97
146
  ButtonGroupProps;
98
147
 
148
+ //
149
+ // ToggleGroup
150
+ //
151
+
99
152
  const ToolbarToggleGroup = forwardRef<HTMLDivElement, ToolbarToggleGroupProps>(
100
153
  ({ classNames, children, elevation, ...props }, forwardedRef) => {
101
154
  return (
@@ -124,16 +177,31 @@ const ToolbarToggleGroupIconItem = forwardRef<HTMLButtonElement, ToolbarToggleGr
124
177
  ({ variant, density, elevation, classNames, icon, label, iconOnly, ...props }, forwardedRef) => {
125
178
  return (
126
179
  <ToolbarPrimitive.ToolbarToggleItem {...props} asChild>
127
- <IconButton {...{ variant, density, elevation, classNames, icon, label, iconOnly }} ref={forwardedRef} />
180
+ <IconButton
181
+ {...{
182
+ variant,
183
+ density,
184
+ elevation,
185
+ classNames,
186
+ icon,
187
+ label,
188
+ iconOnly,
189
+ }}
190
+ ref={forwardedRef}
191
+ />
128
192
  </ToolbarPrimitive.ToolbarToggleItem>
129
193
  );
130
194
  },
131
195
  );
132
196
 
197
+ //
198
+ // Separator
199
+ //
200
+
133
201
  type ToolbarSeparatorProps = SeparatorProps & { variant?: 'gap' | 'line' };
134
202
 
135
203
  const ToolbarSeparator = forwardRef<HTMLDivElement, ToolbarSeparatorProps>(
136
- ({ variant = 'line', ...props }, forwardedRef) => {
204
+ ({ variant = 'gap', ...props }, forwardedRef) => {
137
205
  return variant === 'line' ? (
138
206
  <ToolbarPrimitive.Separator asChild>
139
207
  <Separator {...props} ref={forwardedRef} />
@@ -144,8 +212,109 @@ const ToolbarSeparator = forwardRef<HTMLDivElement, ToolbarSeparatorProps>(
144
212
  },
145
213
  );
146
214
 
215
+ //
216
+ // DragHandle
217
+ //
218
+
219
+ type ToolbarDragHandleProps = { testId?: string; label?: string };
220
+
221
+ const ToolbarDragHandle = forwardRef<HTMLButtonElement, ToolbarDragHandleProps>(
222
+ ({ testId = 'drag-handle', label }, forwardedRef) => {
223
+ const { t } = useTranslation(translationKey);
224
+ return (
225
+ <ToolbarIconButton
226
+ data-testid={testId}
227
+ noTooltip
228
+ iconOnly
229
+ icon='ph--dots-six-vertical--regular'
230
+ variant='ghost'
231
+ label={label ?? t('toolbar drag handle label')}
232
+ classNames='cursor-pointer'
233
+ size={5}
234
+ disabled={!forwardedRef}
235
+ ref={forwardedRef}
236
+ />
237
+ );
238
+ },
239
+ );
240
+
241
+ //
242
+ // CloseIconButton
243
+ //
244
+
245
+ type ToolbarCloseIconButtonProps = { onClick?: () => void; label?: string };
246
+
247
+ const ToolbarCloseIconButton = forwardRef<HTMLButtonElement, ToolbarCloseIconButtonProps>(
248
+ ({ onClick, label }, forwardedRef) => {
249
+ const { t } = useTranslation(translationKey);
250
+ return (
251
+ <ToolbarIconButton
252
+ iconOnly
253
+ icon='ph--x--regular'
254
+ variant='ghost'
255
+ label={label ?? t('toolbar close label')}
256
+ classNames='cursor-pointer'
257
+ size={5}
258
+ onClick={onClick}
259
+ ref={forwardedRef}
260
+ />
261
+ );
262
+ },
263
+ );
264
+
265
+ //
266
+ // Menu
267
+ //
268
+
269
+ type ToolbarMenuItem<T extends any | void = void> = {
270
+ label: string;
271
+ onClick: (context: T) => void;
272
+ };
273
+
274
+ type ToolbarMenuProps<T extends any | void = void> = {
275
+ context?: T;
276
+ items?: ToolbarMenuItem<T>[];
277
+ };
278
+
279
+ // TODO(burdon): Make slottable.
280
+ const ToolbarMenu = <T extends any | void = void>({ context, items }: ToolbarMenuProps<T>) => {
281
+ const { t } = useTranslation(translationKey);
282
+
283
+ return (
284
+ <DropdownMenu.Root>
285
+ <DropdownMenu.Trigger disabled={!items?.length} asChild>
286
+ <ToolbarIconButton
287
+ iconOnly
288
+ variant='ghost'
289
+ icon='ph--dots-three-vertical--regular'
290
+ label={t('toolbar menu label')}
291
+ />
292
+ </DropdownMenu.Trigger>
293
+ {(items?.length ?? 0) > 0 && (
294
+ <DropdownMenu.Portal>
295
+ <DropdownMenu.Content>
296
+ <DropdownMenu.Viewport>
297
+ {items?.map(({ label, onClick: onSelect }, index) => (
298
+ <DropdownMenu.Item key={index} onSelect={() => onSelect(context as T)}>
299
+ {label}
300
+ </DropdownMenu.Item>
301
+ ))}
302
+ </DropdownMenu.Viewport>
303
+ <DropdownMenu.Arrow />
304
+ </DropdownMenu.Content>
305
+ </DropdownMenu.Portal>
306
+ )}
307
+ </DropdownMenu.Root>
308
+ );
309
+ };
310
+
311
+ //
312
+ // Toolbar
313
+ //
314
+
147
315
  export const Toolbar = {
148
316
  Root: ToolbarRoot,
317
+ Text: ToolbarText,
149
318
  Button: ToolbarButton,
150
319
  IconButton: ToolbarIconButton,
151
320
  Link: ToolbarLink,
@@ -154,10 +323,14 @@ export const Toolbar = {
154
323
  ToggleGroupItem: ToolbarToggleGroupItem,
155
324
  ToggleGroupIconItem: ToolbarToggleGroupIconItem,
156
325
  Separator: ToolbarSeparator,
326
+ DragHandle: ToolbarDragHandle,
327
+ CloseIconButton: ToolbarCloseIconButton,
328
+ Menu: ToolbarMenu,
157
329
  };
158
330
 
159
331
  export type {
160
332
  ToolbarRootProps,
333
+ ToolbarTextProps,
161
334
  ToolbarButtonProps,
162
335
  ToolbarIconButtonProps,
163
336
  ToolbarLinkProps,
@@ -166,4 +339,8 @@ export type {
166
339
  ToolbarToggleGroupItemProps,
167
340
  ToolbarToggleGroupIconItemProps,
168
341
  ToolbarSeparatorProps,
342
+ ToolbarDragHandleProps,
343
+ ToolbarCloseIconButtonProps,
344
+ ToolbarMenuItem,
345
+ ToolbarMenuProps,
169
346
  };
@@ -8,7 +8,7 @@ import React from 'react';
8
8
  import { faker } from '@dxos/random';
9
9
 
10
10
  import { withTheme } from '../../testing';
11
- import { Button } from '../Buttons';
11
+ import { Button } from '../Button';
12
12
 
13
13
  import { Tooltip } from './Tooltip';
14
14
 
@@ -17,23 +17,25 @@ type StoryProps = {
17
17
  defaultOpen?: boolean;
18
18
  };
19
19
 
20
- const DefaultStory = ({ tooltips, defaultOpen }: StoryProps) => (
21
- <Tooltip.Provider defaultOpen={defaultOpen}>
22
- <div role='none' className='is-32'>
23
- {tooltips.map(({ label, content }, i) => (
24
- <Tooltip.Trigger asChild key={i} content={content} side='right'>
25
- <Button classNames='block is-full'>{label}</Button>
26
- </Tooltip.Trigger>
27
- ))}
28
- </div>
29
- </Tooltip.Provider>
30
- );
20
+ const DefaultStory = ({ tooltips, defaultOpen }: StoryProps) => {
21
+ return (
22
+ <Tooltip.Provider defaultOpen={defaultOpen}>
23
+ <div role='none' className='w-32'>
24
+ {tooltips.map(({ label, content }, i) => (
25
+ <Tooltip.Trigger asChild key={i} content={content} side='right'>
26
+ <Button classNames='block w-full'>{label}</Button>
27
+ </Tooltip.Trigger>
28
+ ))}
29
+ </div>
30
+ </Tooltip.Provider>
31
+ );
32
+ };
31
33
 
32
34
  const meta = {
33
- title: 'ui/react-ui-core/Tooltip',
35
+ title: 'ui/react-ui-core/components/Tooltip',
34
36
  component: Tooltip as any,
35
37
  render: DefaultStory,
36
- decorators: [withTheme],
38
+ decorators: [withTheme()],
37
39
  } satisfies Meta<typeof DefaultStory>;
38
40
 
39
41
  export default meta;
@@ -3,6 +3,7 @@
3
3
  //
4
4
 
5
5
  // This is based upon `@radix-ui/react-tooltip` fetched 17 March 2025 at https://github.com/radix-ui/primitives at commit 6e75e11.
6
+ // TODO(burdon): Replace with https://ui.shadcn.com/docs/components/radix/tooltip
6
7
 
7
8
  import { composeEventHandlers } from '@radix-ui/primitive';
8
9
  import { useComposedRefs } from '@radix-ui/react-compose-refs';
@@ -41,9 +42,9 @@ type TooltipScopedProps<P = {}> = P & { __scopeTooltip?: Scope };
41
42
  const [createTooltipContext, createTooltipScope] = createContextScope('Tooltip', [createPopperScope]);
42
43
  const usePopperScope = createPopperScope();
43
44
 
44
- /* -------------------------------------------------------------------------------------------------
45
- * Tooltip
46
- * ----------------------------------------------------------------------------------------------- */
45
+ //
46
+ // Tooltip
47
+ //
47
48
 
48
49
  const DEFAULT_DELAY_DURATION = 700;
49
50
  const TOOLTIP_OPEN = 'tooltip.open';
@@ -215,9 +216,9 @@ const TooltipProvider: FC<TooltipProviderProps> = (props: TooltipScopedProps<Too
215
216
  isPointerInTransitRef.current = inTransit;
216
217
  }, [])}
217
218
  >
218
- <TooltipContent side={side} className={tx('tooltip.content', 'tooltip', { elevation })}>
219
+ <TooltipContent side={side} className={tx('tooltip.content', { elevation })}>
219
220
  {content}
220
- <TooltipArrow className={tx('tooltip.arrow', 'tooltip__arrow')} />
221
+ <TooltipArrow className={tx('tooltip.arrow')} />
221
222
  </TooltipContent>
222
223
  <TooltipVirtualTrigger virtualRef={triggerRef as RefObject<HTMLButtonElement>} />
223
224
  {children}
@@ -228,9 +229,9 @@ const TooltipProvider: FC<TooltipProviderProps> = (props: TooltipScopedProps<Too
228
229
 
229
230
  TooltipProvider.displayName = TOOLTIP_NAME;
230
231
 
231
- /* -------------------------------------------------------------------------------------------------
232
- * TooltipVirtualTrigger
233
- * ----------------------------------------------------------------------------------------------- */
232
+ //
233
+ // TooltipVirtualTrigger
234
+ //
234
235
 
235
236
  const TooltipVirtualTrigger = ({
236
237
  virtualRef,
@@ -240,9 +241,9 @@ const TooltipVirtualTrigger = ({
240
241
  return <PopperPrimitive.Anchor asChild {...popperScope} virtualRef={virtualRef} />;
241
242
  };
242
243
 
243
- /* -------------------------------------------------------------------------------------------------
244
- * TooltipTrigger
245
- * ----------------------------------------------------------------------------------------------- */
244
+ //
245
+ // TooltipTrigger
246
+ //
246
247
 
247
248
  const TRIGGER_NAME = 'TooltipTrigger';
248
249
 
@@ -322,9 +323,9 @@ const TooltipTrigger = forwardRef<TooltipTriggerElement, TooltipTriggerProps>(
322
323
 
323
324
  TooltipTrigger.displayName = TRIGGER_NAME;
324
325
 
325
- /* -------------------------------------------------------------------------------------------------
326
- * TooltipPortal
327
- * ----------------------------------------------------------------------------------------------- */
326
+ //
327
+ // TooltipPortal
328
+ //
328
329
 
329
330
  const PORTAL_NAME = 'TooltipPortal';
330
331
 
@@ -363,9 +364,9 @@ const TooltipPortal: FC<TooltipPortalProps> = (props: TooltipScopedProps<Tooltip
363
364
 
364
365
  TooltipPortal.displayName = PORTAL_NAME;
365
366
 
366
- /* -------------------------------------------------------------------------------------------------
367
- * TooltipContent
368
- * ----------------------------------------------------------------------------------------------- */
367
+ //
368
+ // TooltipContent
369
+ //
369
370
 
370
371
  const CONTENT_NAME = 'TooltipContent';
371
372
 
@@ -574,9 +575,9 @@ const TooltipContentImpl = forwardRef<TooltipContentImplElement, TooltipContentI
574
575
 
575
576
  TooltipContent.displayName = CONTENT_NAME;
576
577
 
577
- /* -------------------------------------------------------------------------------------------------
578
- * TooltipArrow
579
- * ----------------------------------------------------------------------------------------------- */
578
+ //
579
+ // TooltipArrow
580
+ //
580
581
 
581
582
  const ARROW_NAME = 'TooltipArrow';
582
583
 
@@ -599,8 +600,6 @@ const TooltipArrow = forwardRef<TooltipArrowElement, TooltipArrowProps>(
599
600
 
600
601
  TooltipArrow.displayName = ARROW_NAME;
601
602
 
602
- /* ----------------------------------------------------------------------------------------------- */
603
-
604
603
  type TooltipSide = NonNullable<TooltipContentProps['side']>;
605
604
 
606
605
  const getExitSideFromRect = (point: Point, rect: DOMRect): TooltipSide => {
@@ -755,6 +754,10 @@ const getHullPresorted = <P extends Point>(points: Readonly<Array<P>>): Array<P>
755
754
  }
756
755
  };
757
756
 
757
+ //
758
+ // Tooltip
759
+ //
760
+
758
761
  export const Tooltip = {
759
762
  Provider: TooltipProvider,
760
763
  Trigger: TooltipTrigger,
@@ -2,29 +2,34 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- export * from './AnchoredOverflow';
5
+ export * from './DensityProvider';
6
+ export * from './ElevationProvider';
7
+ export * from './ThemeProvider';
8
+
6
9
  export * from './Avatars';
7
10
  export * from './Breadcrumb';
8
- export * from './Buttons';
11
+ export * from './Button';
12
+ export * from './Card';
9
13
  export * from './Clipboard';
10
- export * from './Dialogs';
14
+ export * from './Dialog';
15
+ export * from './ErrorFallback';
11
16
  export * from './Icon';
17
+ export * from './Image';
12
18
  export * from './Input';
13
19
  export * from './Link';
14
- export * from './Lists';
20
+ export * from './List';
15
21
  export * from './Main';
16
- export * from './Menus';
22
+ export * from './Menu';
17
23
  export * from './Message';
18
24
  export * from './Popover';
19
25
  export * from './Status';
20
26
  export * from './ScrollArea';
27
+ export * from './ScrollContainer';
21
28
  export * from './Select';
22
29
  export * from './Separator';
30
+ export * from './Skeleton';
31
+ export * from './Splitter';
23
32
  export * from './Tag';
24
33
  export * from './Toast';
25
34
  export * from './Toolbar';
26
35
  export * from './Tooltip';
27
-
28
- export * from './DensityProvider';
29
- export * from './ElevationProvider';
30
- export * from './ThemeProvider';
@@ -0,0 +1,49 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
+ import React, { type ReactElement, type Ref, forwardRef } from 'react';
7
+
8
+ import { type SlottableProps } from '@dxos/ui-types';
9
+
10
+ import { withTheme } from '../testing';
11
+
12
+ const ComponentInner = forwardRef<HTMLDivElement, ComponentProps>(({ children, ...props }, forwardedRef) => {
13
+ return (
14
+ <div {...props} ref={forwardedRef}>
15
+ {children}
16
+ </div>
17
+ );
18
+ });
19
+
20
+ ComponentInner.displayName = 'Component';
21
+
22
+ /**
23
+ * Generic component pattern.
24
+ */
25
+ type ComponentProps<P extends HTMLElement = any> = SlottableProps<P>;
26
+
27
+ const Component = ComponentInner as <P extends HTMLElement>(
28
+ props: SlottableProps<P> & { ref?: Ref<P> },
29
+ ) => ReactElement;
30
+
31
+ const meta = {
32
+ title: 'ui/react-ui-core/exemplars/generics',
33
+ component: Component,
34
+ render: (props) => <Component<HTMLDivElement> {...props} />,
35
+ decorators: [withTheme()],
36
+ parameters: {
37
+ layout: 'centered',
38
+ },
39
+ } satisfies Meta;
40
+
41
+ export default meta;
42
+
43
+ type Story = StoryObj<typeof meta>;
44
+
45
+ export const Default: Story = {
46
+ args: {
47
+ children: 'Hello',
48
+ },
49
+ };