@dxos/react-ui 0.8.4-main.72ec0f3 → 0.8.4-main.7996785055

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 (365) hide show
  1. package/dist/lib/browser/chunk-LUPEFGHJ.mjs +776 -0
  2. package/dist/lib/browser/chunk-LUPEFGHJ.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +4097 -68
  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 +74 -63
  7. package/dist/lib/browser/testing/index.mjs.map +4 -4
  8. package/dist/lib/node-esm/chunk-EQOBFLZC.mjs +778 -0
  9. package/dist/lib/node-esm/chunk-EQOBFLZC.mjs.map +7 -0
  10. package/dist/lib/node-esm/index.mjs +4097 -68
  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 +74 -63
  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 +3 -3
  19. package/dist/types/src/components/Button/Button.d.ts.map +1 -1
  20. package/dist/types/src/components/Button/IconButton.d.ts +2 -1
  21. package/dist/types/src/components/Button/IconButton.d.ts.map +1 -1
  22. package/dist/types/src/components/Button/Toggle.d.ts +2 -2
  23. package/dist/types/src/components/Button/Toggle.d.ts.map +1 -1
  24. package/dist/types/src/components/Button/ToggleGroup.d.ts +10 -10
  25. package/dist/types/src/components/Button/ToggleGroup.d.ts.map +1 -1
  26. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts +4 -4
  27. package/dist/types/src/components/Card/Card.d.ts +145 -0
  28. package/dist/types/src/components/Card/Card.d.ts.map +1 -0
  29. package/dist/types/src/components/Card/Card.stories.d.ts +21 -0
  30. package/dist/types/src/components/Card/Card.stories.d.ts.map +1 -0
  31. package/dist/types/src/components/Card/index.d.ts +2 -0
  32. package/dist/types/src/components/Card/index.d.ts.map +1 -0
  33. package/dist/types/src/components/Clipboard/index.d.ts +10 -1
  34. package/dist/types/src/components/Clipboard/index.d.ts.map +1 -1
  35. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts +1 -1
  36. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts.map +1 -1
  37. package/dist/types/src/components/Dialog/AlertDialog.d.ts +41 -19
  38. package/dist/types/src/components/Dialog/AlertDialog.d.ts.map +1 -1
  39. package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts.map +1 -1
  40. package/dist/types/src/components/Dialog/Dialog.d.ts +56 -21
  41. package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -1
  42. package/dist/types/src/components/Dialog/Dialog.stories.d.ts +10 -10
  43. package/dist/types/src/components/Dialog/Dialog.stories.d.ts.map +1 -1
  44. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts +1 -1
  45. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts.map +1 -1
  46. package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts +11 -0
  47. package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts.map +1 -0
  48. package/dist/types/src/components/ErrorFallback/ErrorFallback.stories.d.ts +7 -0
  49. package/dist/types/src/components/ErrorFallback/ErrorFallback.stories.d.ts.map +1 -0
  50. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts +8 -0
  51. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts.map +1 -0
  52. package/dist/types/src/components/ErrorFallback/ThrowError.d.ts +9 -0
  53. package/dist/types/src/components/ErrorFallback/ThrowError.d.ts.map +1 -0
  54. package/dist/types/src/components/ErrorFallback/index.d.ts +5 -0
  55. package/dist/types/src/components/ErrorFallback/index.d.ts.map +1 -0
  56. package/dist/types/src/components/Focus/Focus.d.ts +44 -0
  57. package/dist/types/src/components/Focus/Focus.d.ts.map +1 -0
  58. package/dist/types/src/components/Focus/Focus.stories.d.ts +9 -0
  59. package/dist/types/src/components/Focus/Focus.stories.d.ts.map +1 -0
  60. package/dist/types/src/components/Focus/index.d.ts +2 -0
  61. package/dist/types/src/components/Focus/index.d.ts.map +1 -0
  62. package/dist/types/src/components/Icon/Icon.d.ts +4 -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 +11 -3
  65. package/dist/types/src/components/Icon/Icon.stories.d.ts.map +1 -1
  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 +7 -7
  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/List/List.d.ts +10 -4
  77. package/dist/types/src/components/List/List.d.ts.map +1 -1
  78. package/dist/types/src/components/List/List.stories.d.ts +8 -2
  79. package/dist/types/src/components/List/List.stories.d.ts.map +1 -1
  80. package/dist/types/src/components/List/Treegrid.d.ts.map +1 -1
  81. package/dist/types/src/components/Main/Main.d.ts +9 -10
  82. package/dist/types/src/components/Main/Main.d.ts.map +1 -1
  83. package/dist/types/src/components/Main/Main.stories.d.ts +0 -3
  84. package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
  85. package/dist/types/src/components/{Menus → Menu}/ContextMenu.d.ts +6 -6
  86. package/dist/types/src/components/Menu/ContextMenu.d.ts.map +1 -0
  87. package/dist/types/src/components/Menu/ContextMenu.stories.d.ts.map +1 -0
  88. package/dist/types/src/components/Menu/DropdownMenu.d.ts +113 -0
  89. package/dist/types/src/components/Menu/DropdownMenu.d.ts.map +1 -0
  90. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts +28 -0
  91. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts.map +1 -0
  92. package/dist/types/src/components/Menu/index.d.ts.map +1 -0
  93. package/dist/types/src/components/Message/Message.d.ts +1 -1
  94. package/dist/types/src/components/Message/Message.d.ts.map +1 -1
  95. package/dist/types/src/components/Message/Message.stories.d.ts +5 -6
  96. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
  97. package/dist/types/src/components/Popover/Popover.d.ts +33 -24
  98. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  99. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +32 -24
  100. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  101. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +65 -8
  102. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
  103. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +27 -9
  104. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -1
  105. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts +8 -3
  106. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts.map +1 -1
  107. package/dist/types/src/components/Select/Select.d.ts +9 -9
  108. package/dist/types/src/components/Select/Select.d.ts.map +1 -1
  109. package/dist/types/src/components/Select/Select.stories.d.ts +2 -2
  110. package/dist/types/src/components/Select/Select.stories.d.ts.map +1 -1
  111. package/dist/types/src/components/Separator/Separator.d.ts +4 -4
  112. package/dist/types/src/components/Separator/Separator.d.ts.map +1 -1
  113. package/dist/types/src/components/Skeleton/Skeleton.d.ts +12 -0
  114. package/dist/types/src/components/Skeleton/Skeleton.d.ts.map +1 -0
  115. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts +17 -0
  116. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts.map +1 -0
  117. package/dist/types/src/components/Skeleton/index.d.ts +2 -0
  118. package/dist/types/src/components/Skeleton/index.d.ts.map +1 -0
  119. package/dist/types/src/components/Splitter/Splitter.d.ts +37 -0
  120. package/dist/types/src/components/Splitter/Splitter.d.ts.map +1 -0
  121. package/dist/types/src/components/Splitter/Splitter.stories.d.ts +7 -0
  122. package/dist/types/src/components/Splitter/Splitter.stories.d.ts.map +1 -0
  123. package/dist/types/src/components/Splitter/index.d.ts +2 -0
  124. package/dist/types/src/components/Splitter/index.d.ts.map +1 -0
  125. package/dist/types/src/components/Status/Status.d.ts +3 -4
  126. package/dist/types/src/components/Status/Status.d.ts.map +1 -1
  127. package/dist/types/src/components/Status/Status.stories.d.ts +4 -2
  128. package/dist/types/src/components/Status/Status.stories.d.ts.map +1 -1
  129. package/dist/types/src/components/Tag/Tag.d.ts +1 -1
  130. package/dist/types/src/components/Tag/Tag.d.ts.map +1 -1
  131. package/dist/types/src/components/Tag/Tag.stories.d.ts +0 -5
  132. package/dist/types/src/components/Tag/Tag.stories.d.ts.map +1 -1
  133. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts +3 -3
  134. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  135. package/dist/types/src/components/{Menus/DropdownMenu.stories.d.ts → ThemeProvider/ThemeProvider.stories.d.ts} +2 -5
  136. package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts.map +1 -0
  137. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +1 -8
  138. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
  139. package/dist/types/src/components/ThemeProvider/index.d.ts +2 -1
  140. package/dist/types/src/components/ThemeProvider/index.d.ts.map +1 -1
  141. package/dist/types/src/components/Toast/Toast.d.ts +19 -19
  142. package/dist/types/src/components/Toast/Toast.d.ts.map +1 -1
  143. package/dist/types/src/components/Toolbar/Toolbar.d.ts +43 -17
  144. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  145. package/dist/types/src/components/Tooltip/Tooltip.d.ts +9 -9
  146. package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
  147. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts +2 -2
  148. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
  149. package/dist/types/src/components/index.d.ts +10 -5
  150. package/dist/types/src/components/index.d.ts.map +1 -1
  151. package/dist/types/src/exemplars/generics.stories.d.ts +23 -0
  152. package/dist/types/src/exemplars/generics.stories.d.ts.map +1 -0
  153. package/dist/types/src/exemplars/slot.stories.d.ts +15 -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/index.d.ts +1 -0
  160. package/dist/types/src/hooks/index.d.ts.map +1 -1
  161. package/dist/types/src/hooks/useDensityContext.d.ts +2 -2
  162. package/dist/types/src/hooks/useDensityContext.d.ts.map +1 -1
  163. package/dist/types/src/hooks/useElevationContext.d.ts +1 -1
  164. package/dist/types/src/hooks/useElevationContext.d.ts.map +1 -1
  165. package/dist/types/src/index.d.ts +2 -1
  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 +51 -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 +11 -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 +15 -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 +14 -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 +46 -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 +3 -3
  204. package/dist/types/src/testing/decorators/withLayout.d.ts.map +1 -1
  205. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts +1 -1
  206. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts.map +1 -1
  207. package/dist/types/src/testing/decorators/withTheme.d.ts +3 -2
  208. package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
  209. package/dist/types/src/testing/index.d.ts +1 -0
  210. package/dist/types/src/testing/index.d.ts.map +1 -1
  211. package/dist/types/src/translations.d.ts +11 -0
  212. package/dist/types/src/translations.d.ts.map +1 -0
  213. package/dist/types/src/util/index.d.ts +1 -2
  214. package/dist/types/src/util/index.d.ts.map +1 -1
  215. package/dist/types/src/util/usePx.d.ts.map +1 -1
  216. package/dist/types/tsconfig.tsbuildinfo +1 -1
  217. package/package.json +40 -31
  218. package/src/components/Avatars/Avatar.stories.tsx +7 -8
  219. package/src/components/Avatars/Avatar.tsx +6 -13
  220. package/src/components/Avatars/AvatarGroup.stories.tsx +2 -2
  221. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +3 -3
  222. package/src/components/Breadcrumb/Breadcrumb.tsx +11 -37
  223. package/src/components/Button/Button.stories.tsx +3 -3
  224. package/src/components/Button/Button.tsx +12 -26
  225. package/src/components/Button/IconButton.stories.tsx +4 -4
  226. package/src/components/Button/IconButton.tsx +9 -5
  227. package/src/components/Button/Toggle.stories.tsx +2 -2
  228. package/src/components/Button/Toggle.tsx +4 -4
  229. package/src/components/Button/ToggleGroup.stories.tsx +2 -2
  230. package/src/components/Button/ToggleGroup.tsx +12 -16
  231. package/src/components/Card/Card.stories.tsx +151 -0
  232. package/src/components/Card/Card.tsx +394 -0
  233. package/src/components/Card/index.ts +5 -0
  234. package/src/components/Clipboard/CopyButton.tsx +6 -6
  235. package/src/components/DensityProvider/DensityProvider.tsx +1 -1
  236. package/src/components/Dialog/AlertDialog.stories.tsx +16 -16
  237. package/src/components/Dialog/AlertDialog.tsx +121 -82
  238. package/src/components/Dialog/Dialog.stories.tsx +139 -28
  239. package/src/components/Dialog/Dialog.tsx +192 -71
  240. package/src/components/ElevationProvider/ElevationProvider.tsx +1 -1
  241. package/src/components/ErrorFallback/ErrorFallback.stories.tsx +50 -0
  242. package/src/components/ErrorFallback/ErrorFallback.tsx +70 -0
  243. package/src/components/ErrorFallback/ErrorStack.tsx +80 -0
  244. package/src/components/ErrorFallback/ThrowError.tsx +37 -0
  245. package/src/components/ErrorFallback/index.ts +9 -0
  246. package/src/components/Focus/AUDIT.md +43 -0
  247. package/src/components/Focus/Focus.stories.tsx +230 -0
  248. package/src/components/Focus/Focus.tsx +201 -0
  249. package/src/components/Focus/index.ts +5 -0
  250. package/src/components/Icon/Icon.stories.tsx +45 -14
  251. package/src/components/Icon/Icon.tsx +7 -3
  252. package/src/components/Image/Image.stories.tsx +86 -0
  253. package/src/components/Image/Image.tsx +223 -0
  254. package/src/components/Image/index.ts +5 -0
  255. package/src/components/Input/Input.stories.tsx +21 -40
  256. package/src/components/Input/Input.tsx +36 -72
  257. package/src/components/Link/Link.stories.tsx +2 -2
  258. package/src/components/Link/Link.tsx +2 -2
  259. package/src/components/List/List.stories.tsx +30 -33
  260. package/src/components/List/List.tsx +16 -19
  261. package/src/components/List/ListDropIndicator.tsx +7 -7
  262. package/src/components/List/Tree.stories.tsx +5 -5
  263. package/src/components/List/TreeDropIndicator.tsx +6 -6
  264. package/src/components/List/Treegrid.stories.tsx +3 -3
  265. package/src/components/List/Treegrid.tsx +10 -15
  266. package/src/components/Main/Main.stories.tsx +41 -23
  267. package/src/components/Main/Main.tsx +139 -82
  268. package/src/components/{Menus → Menu}/ContextMenu.stories.tsx +2 -2
  269. package/src/components/{Menus → Menu}/ContextMenu.tsx +9 -33
  270. package/src/components/{Menus → Menu}/DropdownMenu.stories.tsx +2 -2
  271. package/src/components/{Menus → Menu}/DropdownMenu.tsx +119 -109
  272. package/src/components/Message/Message.stories.tsx +28 -13
  273. package/src/components/Message/Message.tsx +43 -34
  274. package/src/components/Popover/Popover.stories.tsx +4 -4
  275. package/src/components/Popover/Popover.tsx +97 -92
  276. package/src/components/ScrollArea/ScrollArea.stories.tsx +222 -32
  277. package/src/components/ScrollArea/ScrollArea.tsx +97 -79
  278. package/src/components/ScrollArea/index.ts +1 -1
  279. package/src/components/ScrollContainer/ScrollContainer.stories.tsx +43 -22
  280. package/src/components/ScrollContainer/ScrollContainer.tsx +193 -104
  281. package/src/components/Select/Select.stories.tsx +4 -4
  282. package/src/components/Select/Select.tsx +11 -27
  283. package/src/components/Separator/Separator.tsx +5 -8
  284. package/src/components/Skeleton/Skeleton.stories.tsx +52 -0
  285. package/src/components/Skeleton/Skeleton.tsx +26 -0
  286. package/src/components/Skeleton/index.ts +5 -0
  287. package/src/components/Splitter/Splitter.stories.tsx +83 -0
  288. package/src/components/Splitter/Splitter.tsx +140 -0
  289. package/src/components/Splitter/index.ts +5 -0
  290. package/src/components/Status/Status.stories.tsx +21 -17
  291. package/src/components/Status/Status.tsx +10 -7
  292. package/src/components/Tag/Tag.stories.tsx +6 -11
  293. package/src/components/Tag/Tag.tsx +3 -8
  294. package/src/components/ThemeProvider/ThemeProvider.stories.tsx +32 -0
  295. package/src/components/ThemeProvider/ThemeProvider.tsx +10 -9
  296. package/src/components/ThemeProvider/TranslationsProvider.tsx +1 -16
  297. package/src/components/ThemeProvider/index.ts +3 -3
  298. package/src/components/Toast/Toast.stories.tsx +2 -2
  299. package/src/components/Toast/Toast.tsx +22 -41
  300. package/src/components/Toolbar/Toolbar.stories.tsx +2 -2
  301. package/src/components/Toolbar/Toolbar.tsx +183 -22
  302. package/src/components/Tooltip/Tooltip.stories.tsx +16 -14
  303. package/src/components/Tooltip/Tooltip.tsx +40 -38
  304. package/src/components/index.ts +11 -6
  305. package/src/exemplars/generics.stories.tsx +41 -0
  306. package/src/exemplars/slot.stories.tsx +117 -0
  307. package/src/exemplars/tabster.stories.tsx +127 -0
  308. package/src/exemplars/virtualizer.stories.tsx +137 -0
  309. package/src/hooks/index.ts +1 -0
  310. package/src/hooks/useDensityContext.ts +3 -3
  311. package/src/hooks/useElevationContext.ts +1 -1
  312. package/src/index.ts +2 -1
  313. package/src/playground/Controls.stories.tsx +3 -10
  314. package/src/playground/Custom.stories.tsx +11 -21
  315. package/src/playground/Typography.stories.tsx +3 -3
  316. package/src/primitives/Column/AUDIT.md +354 -0
  317. package/src/primitives/Column/Column.stories.tsx +183 -0
  318. package/src/primitives/Column/Column.tsx +169 -0
  319. package/src/primitives/Column/index.ts +5 -0
  320. package/src/primitives/Container/Container.stories.tsx +30 -0
  321. package/src/primitives/Container/Container.tsx +19 -0
  322. package/src/primitives/Container/index.ts +5 -0
  323. package/src/primitives/Flex/Flex.stories.tsx +58 -0
  324. package/src/primitives/Flex/Flex.tsx +24 -0
  325. package/src/primitives/Flex/index.ts +5 -0
  326. package/src/primitives/Grid/Grid.stories.tsx +57 -0
  327. package/src/primitives/Grid/Grid.tsx +30 -0
  328. package/src/primitives/Grid/index.ts +5 -0
  329. package/src/primitives/Panel/Panel.stories.tsx +67 -0
  330. package/src/primitives/Panel/Panel.tsx +114 -0
  331. package/src/primitives/Panel/index.ts +5 -0
  332. package/src/primitives/index.ts +9 -0
  333. package/src/testing/Loading.tsx +26 -0
  334. package/src/testing/decorators/withLayout.tsx +39 -18
  335. package/src/testing/decorators/withLayoutVariants.tsx +20 -23
  336. package/src/testing/decorators/withTheme.tsx +26 -20
  337. package/src/testing/index.ts +2 -0
  338. package/src/translations.ts +19 -0
  339. package/src/util/index.ts +2 -2
  340. package/src/util/usePx.ts +1 -0
  341. package/dist/lib/browser/chunk-53MI2QCM.mjs +0 -4707
  342. package/dist/lib/browser/chunk-53MI2QCM.mjs.map +0 -7
  343. package/dist/lib/node-esm/chunk-ID67AFFF.mjs +0 -4709
  344. package/dist/lib/node-esm/chunk-ID67AFFF.mjs.map +0 -7
  345. package/dist/types/src/components/AnchoredOverflow/AnchoredOverflow.d.ts +0 -15
  346. package/dist/types/src/components/AnchoredOverflow/AnchoredOverflow.d.ts.map +0 -1
  347. package/dist/types/src/components/AnchoredOverflow/index.d.ts +0 -2
  348. package/dist/types/src/components/AnchoredOverflow/index.d.ts.map +0 -1
  349. package/dist/types/src/components/Menus/ContextMenu.d.ts.map +0 -1
  350. package/dist/types/src/components/Menus/ContextMenu.stories.d.ts.map +0 -1
  351. package/dist/types/src/components/Menus/DropdownMenu.d.ts +0 -113
  352. package/dist/types/src/components/Menus/DropdownMenu.d.ts.map +0 -1
  353. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts.map +0 -1
  354. package/dist/types/src/components/Menus/index.d.ts.map +0 -1
  355. package/dist/types/src/util/ThemedClassName.d.ts +0 -5
  356. package/dist/types/src/util/ThemedClassName.d.ts.map +0 -1
  357. package/dist/types/src/util/domino.d.ts +0 -18
  358. package/dist/types/src/util/domino.d.ts.map +0 -1
  359. package/src/components/AnchoredOverflow/AnchoredOverflow.tsx +0 -59
  360. package/src/components/AnchoredOverflow/index.ts +0 -5
  361. package/src/util/ThemedClassName.ts +0 -7
  362. package/src/util/domino.ts +0 -53
  363. /package/dist/types/src/components/{Menus → Menu}/ContextMenu.stories.d.ts +0 -0
  364. /package/dist/types/src/components/{Menus → Menu}/index.d.ts +0 -0
  365. /package/src/components/{Menus → Menu}/index.ts +0 -0
@@ -69,10 +69,10 @@ const DefaultStory = (props: StorybookToolbarProps) => {
69
69
  };
70
70
 
71
71
  const meta = {
72
- title: 'ui/react-ui-core/Toolbar',
72
+ title: 'ui/react-ui-core/components/Toolbar',
73
73
  component: Toolbar as any,
74
74
  render: DefaultStory,
75
- decorators: [withTheme],
75
+ decorators: [withTheme()],
76
76
  } satisfies Meta<typeof DefaultStory>;
77
77
 
78
78
  export default meta;
@@ -2,12 +2,19 @@
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
- import React, { Fragment, forwardRef } from 'react';
9
+ import React, { forwardRef } from 'react';
10
+ import { useTranslation } from 'react-i18next';
11
+
12
+ import { composable, composableProps, slottable, type ToolbarStyleProps } from '@dxos/ui-theme';
13
+ import { type SlottableProps } from '@dxos/ui-types';
8
14
 
9
15
  import { useThemeContext } from '../../hooks';
10
- import { type ThemedClassName } from '../../util';
16
+ import { translationKey } from '../../translations';
17
+
11
18
  import {
12
19
  Button,
13
20
  ButtonGroup,
@@ -20,37 +27,55 @@ import {
20
27
  type ToggleProps,
21
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
 
25
- type ToolbarRootProps = ThemedClassName<
26
- ToolbarPrimitive.ToolbarProps & {
27
- textBlockWidth?: boolean;
28
- layoutManaged?: boolean;
29
- disabled?: boolean;
30
- }
31
- >;
33
+ //
34
+ // Root
35
+ //
36
+
37
+ type ToolbarRootProps = ToolbarPrimitive.ToolbarProps & ToolbarStyleProps;
32
38
 
33
- const ToolbarRoot = forwardRef<HTMLDivElement, ToolbarRootProps>(
34
- ({ classNames, children, layoutManaged, textBlockWidth: textBlockWidthParam, disabled, ...props }, forwardedRef) => {
39
+ const ToolbarRoot = composable<HTMLDivElement, ToolbarRootProps>(
40
+ ({ children, density, disabled, layoutManaged, orientation, ...props }, forwardedRef) => {
41
+ const { className, ...rest } = composableProps(props);
35
42
  const { tx } = useThemeContext();
36
- const InnerRoot = textBlockWidthParam ? 'div' : Fragment;
37
- const innerRootProps = textBlockWidthParam
38
- ? { role: 'none', className: tx('toolbar.inner', 'toolbar', { layoutManaged }, classNames) }
39
- : {};
40
43
 
41
44
  return (
42
45
  <ToolbarPrimitive.Root
43
- {...props}
44
- data-arrow-keys={props.orientation === 'vertical' ? 'up down' : 'left right'}
45
- className={tx('toolbar.root', 'toolbar', { layoutManaged, disabled }, classNames)}
46
+ {...rest}
47
+ orientation={orientation}
48
+ data-arrow-keys={orientation === 'vertical' ? 'up down' : 'left right'}
49
+ className={tx('toolbar.root', { density, disabled, layoutManaged }, className)}
46
50
  ref={forwardedRef}
47
51
  >
48
- <InnerRoot {...innerRootProps}>{children}</InnerRoot>
52
+ {children}
49
53
  </ToolbarPrimitive.Root>
50
54
  );
51
55
  },
52
56
  );
53
57
 
58
+ //
59
+ // Text
60
+ //
61
+
62
+ type ToolbarTextProps = SlottableProps;
63
+
64
+ const ToolbarText = slottable<HTMLDivElement>(({ children, asChild, ...props }, forwardedRef) => {
65
+ const { className, ...rest } = composableProps(props);
66
+ const Comp = asChild ? Slot : Primitive.div;
67
+ const { tx } = useThemeContext();
68
+ return (
69
+ <Comp {...rest} className={tx('toolbar.text', {}, className)} ref={forwardedRef}>
70
+ {children}
71
+ </Comp>
72
+ );
73
+ });
74
+
75
+ //
76
+ // Button
77
+ //
78
+
54
79
  type ToolbarButtonProps = ButtonProps;
55
80
 
56
81
  const ToolbarButton = forwardRef<HTMLButtonElement, ToolbarButtonProps>((props, forwardedRef) => {
@@ -61,12 +86,16 @@ const ToolbarButton = forwardRef<HTMLButtonElement, ToolbarButtonProps>((props,
61
86
  );
62
87
  });
63
88
 
89
+ //
90
+ // IconButton
91
+ //
92
+
64
93
  type ToolbarIconButtonProps = IconButtonProps;
65
94
 
66
95
  const ToolbarIconButton = forwardRef<HTMLButtonElement, ToolbarIconButtonProps>((props, forwardedRef) => {
67
96
  return (
68
97
  <ToolbarPrimitive.Button asChild>
69
- <IconButton {...props} ref={forwardedRef} />
98
+ <IconButton {...props} noTooltip ref={forwardedRef} />
70
99
  </ToolbarPrimitive.Button>
71
100
  );
72
101
  });
@@ -81,6 +110,10 @@ const ToolbarToggle = forwardRef<HTMLButtonElement, ToolbarToggleProps>((props,
81
110
  );
82
111
  });
83
112
 
113
+ //
114
+ // Link
115
+ //
116
+
84
117
  type ToolbarLinkProps = LinkProps;
85
118
 
86
119
  const ToolbarLink = forwardRef<HTMLAnchorElement, ToolbarLinkProps>((props, forwardedRef) => {
@@ -97,6 +130,10 @@ type ToolbarToggleGroupProps = (
97
130
  ) &
98
131
  ButtonGroupProps;
99
132
 
133
+ //
134
+ // ToggleGroup
135
+ //
136
+
100
137
  const ToolbarToggleGroup = forwardRef<HTMLDivElement, ToolbarToggleGroupProps>(
101
138
  ({ classNames, children, elevation, ...props }, forwardedRef) => {
102
139
  return (
@@ -125,16 +162,31 @@ const ToolbarToggleGroupIconItem = forwardRef<HTMLButtonElement, ToolbarToggleGr
125
162
  ({ variant, density, elevation, classNames, icon, label, iconOnly, ...props }, forwardedRef) => {
126
163
  return (
127
164
  <ToolbarPrimitive.ToolbarToggleItem {...props} asChild>
128
- <IconButton {...{ variant, density, elevation, classNames, icon, label, iconOnly }} ref={forwardedRef} />
165
+ <IconButton
166
+ {...{
167
+ variant,
168
+ density,
169
+ elevation,
170
+ classNames,
171
+ icon,
172
+ label,
173
+ iconOnly,
174
+ }}
175
+ ref={forwardedRef}
176
+ />
129
177
  </ToolbarPrimitive.ToolbarToggleItem>
130
178
  );
131
179
  },
132
180
  );
133
181
 
182
+ //
183
+ // Separator
184
+ //
185
+
134
186
  type ToolbarSeparatorProps = SeparatorProps & { variant?: 'gap' | 'line' };
135
187
 
136
188
  const ToolbarSeparator = forwardRef<HTMLDivElement, ToolbarSeparatorProps>(
137
- ({ variant = 'line', ...props }, forwardedRef) => {
189
+ ({ variant = 'gap', ...props }, forwardedRef) => {
138
190
  return variant === 'line' ? (
139
191
  <ToolbarPrimitive.Separator asChild>
140
192
  <Separator {...props} ref={forwardedRef} />
@@ -145,8 +197,109 @@ const ToolbarSeparator = forwardRef<HTMLDivElement, ToolbarSeparatorProps>(
145
197
  },
146
198
  );
147
199
 
200
+ //
201
+ // DragHandle
202
+ //
203
+
204
+ type ToolbarDragHandleProps = { testId?: string; label?: string };
205
+
206
+ const ToolbarDragHandle = forwardRef<HTMLButtonElement, ToolbarDragHandleProps>(
207
+ ({ testId = 'drag-handle', label }, forwardedRef) => {
208
+ const { t } = useTranslation(translationKey);
209
+ return (
210
+ <ToolbarIconButton
211
+ data-testid={testId}
212
+ tabIndex={-1}
213
+ noTooltip
214
+ iconOnly
215
+ icon='ph--dots-six-vertical--regular'
216
+ variant='ghost'
217
+ label={label ?? t('toolbar drag handle label')}
218
+ classNames='dx-focus-ring-none cursor-pointer'
219
+ disabled={!forwardedRef}
220
+ ref={forwardedRef}
221
+ />
222
+ );
223
+ },
224
+ );
225
+
226
+ //
227
+ // CloseIconButton
228
+ //
229
+
230
+ type ToolbarCloseIconButtonProps = { onClick?: () => void; label?: string };
231
+
232
+ const ToolbarCloseIconButton = forwardRef<HTMLButtonElement, ToolbarCloseIconButtonProps>(
233
+ ({ onClick, label }, forwardedRef) => {
234
+ const { t } = useTranslation(translationKey);
235
+
236
+ return (
237
+ <ToolbarIconButton
238
+ iconOnly
239
+ icon='ph--x--regular'
240
+ variant='ghost'
241
+ label={label ?? t('toolbar close label')}
242
+ classNames='cursor-pointer'
243
+ onClick={onClick}
244
+ ref={forwardedRef}
245
+ />
246
+ );
247
+ },
248
+ );
249
+
250
+ //
251
+ // Menu
252
+ //
253
+
254
+ type ToolbarMenuItem<T extends any | void = void> = {
255
+ label: string;
256
+ onClick: (context: T) => void;
257
+ };
258
+
259
+ type ToolbarMenuProps<T extends any | void = void> = {
260
+ context?: T;
261
+ items?: ToolbarMenuItem<T>[];
262
+ };
263
+
264
+ // TODO(burdon): Make slottable.
265
+ const ToolbarMenu = <T extends any | void = void>({ context, items }: ToolbarMenuProps<T>) => {
266
+ const { t } = useTranslation(translationKey);
267
+
268
+ return (
269
+ <DropdownMenu.Root>
270
+ <DropdownMenu.Trigger disabled={!items?.length} asChild>
271
+ <ToolbarIconButton
272
+ iconOnly
273
+ variant='ghost'
274
+ icon='ph--dots-three-vertical--regular'
275
+ label={t('toolbar menu label')}
276
+ />
277
+ </DropdownMenu.Trigger>
278
+ {(items?.length ?? 0) > 0 && (
279
+ <DropdownMenu.Portal>
280
+ <DropdownMenu.Content>
281
+ <DropdownMenu.Viewport>
282
+ {items?.map(({ label, onClick: onSelect }, index) => (
283
+ <DropdownMenu.Item key={index} onSelect={() => onSelect(context as T)}>
284
+ {label}
285
+ </DropdownMenu.Item>
286
+ ))}
287
+ </DropdownMenu.Viewport>
288
+ <DropdownMenu.Arrow />
289
+ </DropdownMenu.Content>
290
+ </DropdownMenu.Portal>
291
+ )}
292
+ </DropdownMenu.Root>
293
+ );
294
+ };
295
+
296
+ //
297
+ // Toolbar
298
+ //
299
+
148
300
  export const Toolbar = {
149
301
  Root: ToolbarRoot,
302
+ Text: ToolbarText,
150
303
  Button: ToolbarButton,
151
304
  IconButton: ToolbarIconButton,
152
305
  Link: ToolbarLink,
@@ -155,10 +308,14 @@ export const Toolbar = {
155
308
  ToggleGroupItem: ToolbarToggleGroupItem,
156
309
  ToggleGroupIconItem: ToolbarToggleGroupIconItem,
157
310
  Separator: ToolbarSeparator,
311
+ DragHandle: ToolbarDragHandle,
312
+ CloseIconButton: ToolbarCloseIconButton,
313
+ Menu: ToolbarMenu,
158
314
  };
159
315
 
160
316
  export type {
161
317
  ToolbarRootProps,
318
+ ToolbarTextProps,
162
319
  ToolbarButtonProps,
163
320
  ToolbarIconButtonProps,
164
321
  ToolbarLinkProps,
@@ -167,4 +324,8 @@ export type {
167
324
  ToolbarToggleGroupItemProps,
168
325
  ToolbarToggleGroupIconItemProps,
169
326
  ToolbarSeparatorProps,
327
+ ToolbarDragHandleProps,
328
+ ToolbarCloseIconButtonProps,
329
+ ToolbarMenuItem,
330
+ ToolbarMenuProps,
170
331
  };
@@ -12,28 +12,30 @@ import { Button } from '../Button';
12
12
 
13
13
  import { Tooltip } from './Tooltip';
14
14
 
15
- type StoryProps = {
15
+ type DefaultStoryProps = {
16
16
  tooltips: { label: string; content: string }[];
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 }: DefaultStoryProps) => {
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';
@@ -21,9 +22,8 @@ import { useControllableState } from '@radix-ui/react-use-controllable-state';
21
22
  import * as VisuallyHiddenPrimitive from '@radix-ui/react-visually-hidden';
22
23
  import React, {
23
24
  type ComponentPropsWithoutRef,
24
- type ElementRef,
25
+ type ComponentRef,
25
26
  type FC,
26
- type MutableRefObject,
27
27
  type ReactNode,
28
28
  type RefObject,
29
29
  type SyntheticEvent,
@@ -41,9 +41,9 @@ type TooltipScopedProps<P = {}> = P & { __scopeTooltip?: Scope };
41
41
  const [createTooltipContext, createTooltipScope] = createContextScope('Tooltip', [createPopperScope]);
42
42
  const usePopperScope = createPopperScope();
43
43
 
44
- /* -------------------------------------------------------------------------------------------------
45
- * Tooltip
46
- * ----------------------------------------------------------------------------------------------- */
44
+ //
45
+ // Tooltip
46
+ //
47
47
 
48
48
  const DEFAULT_DELAY_DURATION = 700;
49
49
  const TOOLTIP_OPEN = 'tooltip.open';
@@ -60,13 +60,13 @@ type TooltipContextValue = {
60
60
  onOpen(): void;
61
61
  onClose(): void;
62
62
  onPointerInTransitChange(inTransit: boolean): void;
63
- isPointerInTransitRef: MutableRefObject<boolean>;
63
+ isPointerInTransitRef: RefObject<boolean>;
64
64
  disableHoverableContent: boolean;
65
65
  };
66
66
 
67
67
  const [TooltipContextProvider, useTooltipContext] = createTooltipContext<TooltipContextValue>(TOOLTIP_NAME);
68
68
 
69
- interface TooltipProviderProps {
69
+ type TooltipProviderProps = {
70
70
  children?: ReactNode;
71
71
  open?: boolean;
72
72
  defaultOpen?: boolean;
@@ -87,7 +87,7 @@ interface TooltipProviderProps {
87
87
  * @defaultValue 300
88
88
  */
89
89
  skipDelayDuration?: number;
90
- }
90
+ };
91
91
 
92
92
  const TooltipProvider: FC<TooltipProviderProps> = (props: TooltipScopedProps<TooltipProviderProps>) => {
93
93
  const {
@@ -215,9 +215,9 @@ const TooltipProvider: FC<TooltipProviderProps> = (props: TooltipScopedProps<Too
215
215
  isPointerInTransitRef.current = inTransit;
216
216
  }, [])}
217
217
  >
218
- <TooltipContent side={side} className={tx('tooltip.content', 'tooltip', { elevation })}>
218
+ <TooltipContent side={side} className={tx('tooltip.content', { elevation })}>
219
219
  {content}
220
- <TooltipArrow className={tx('tooltip.arrow', 'tooltip__arrow')} />
220
+ <TooltipArrow className={tx('tooltip.arrow')} />
221
221
  </TooltipContent>
222
222
  <TooltipVirtualTrigger virtualRef={triggerRef as RefObject<HTMLButtonElement>} />
223
223
  {children}
@@ -228,9 +228,9 @@ const TooltipProvider: FC<TooltipProviderProps> = (props: TooltipScopedProps<Too
228
228
 
229
229
  TooltipProvider.displayName = TOOLTIP_NAME;
230
230
 
231
- /* -------------------------------------------------------------------------------------------------
232
- * TooltipVirtualTrigger
233
- * ----------------------------------------------------------------------------------------------- */
231
+ //
232
+ // TooltipVirtualTrigger
233
+ //
234
234
 
235
235
  const TooltipVirtualTrigger = ({
236
236
  virtualRef,
@@ -240,13 +240,13 @@ const TooltipVirtualTrigger = ({
240
240
  return <PopperPrimitive.Anchor asChild {...popperScope} virtualRef={virtualRef} />;
241
241
  };
242
242
 
243
- /* -------------------------------------------------------------------------------------------------
244
- * TooltipTrigger
245
- * ----------------------------------------------------------------------------------------------- */
243
+ //
244
+ // TooltipTrigger
245
+ //
246
246
 
247
247
  const TRIGGER_NAME = 'TooltipTrigger';
248
248
 
249
- type TooltipTriggerElement = ElementRef<typeof Primitive.button>;
249
+ type TooltipTriggerElement = ComponentRef<typeof Primitive.button>;
250
250
  type PrimitiveButtonProps = ComponentPropsWithoutRef<typeof Primitive.button>;
251
251
  type TooltipTriggerProps = PrimitiveButtonProps &
252
252
  Pick<TooltipProps, 'delayDuration'> & {
@@ -322,9 +322,9 @@ const TooltipTrigger = forwardRef<TooltipTriggerElement, TooltipTriggerProps>(
322
322
 
323
323
  TooltipTrigger.displayName = TRIGGER_NAME;
324
324
 
325
- /* -------------------------------------------------------------------------------------------------
326
- * TooltipPortal
327
- * ----------------------------------------------------------------------------------------------- */
325
+ //
326
+ // TooltipPortal
327
+ //
328
328
 
329
329
  const PORTAL_NAME = 'TooltipPortal';
330
330
 
@@ -334,7 +334,7 @@ const [PortalProvider, usePortalContext] = createTooltipContext<PortalContextVal
334
334
  });
335
335
 
336
336
  type PortalProps = ComponentPropsWithoutRef<typeof PortalPrimitive>;
337
- interface TooltipPortalProps {
337
+ type TooltipPortalProps = {
338
338
  children?: ReactNode;
339
339
  /**
340
340
  * Specify a container element to portal the content into.
@@ -345,7 +345,7 @@ interface TooltipPortalProps {
345
345
  * controlling animation with React animation libraries.
346
346
  */
347
347
  forceMount?: true;
348
- }
348
+ };
349
349
 
350
350
  const TooltipPortal: FC<TooltipPortalProps> = (props: TooltipScopedProps<TooltipPortalProps>) => {
351
351
  const { __scopeTooltip, forceMount, children, container } = props;
@@ -363,20 +363,20 @@ const TooltipPortal: FC<TooltipPortalProps> = (props: TooltipScopedProps<Tooltip
363
363
 
364
364
  TooltipPortal.displayName = PORTAL_NAME;
365
365
 
366
- /* -------------------------------------------------------------------------------------------------
367
- * TooltipContent
368
- * ----------------------------------------------------------------------------------------------- */
366
+ //
367
+ // TooltipContent
368
+ //
369
369
 
370
370
  const CONTENT_NAME = 'TooltipContent';
371
371
 
372
372
  type TooltipContentElement = TooltipContentImplElement;
373
- interface TooltipContentProps extends TooltipContentImplProps {
373
+ type TooltipContentProps = TooltipContentImplProps & {
374
374
  /**
375
375
  * Used to force mounting when more control is needed. Useful when
376
376
  * controlling animation with React animation libraries.
377
377
  */
378
378
  forceMount?: true;
379
- }
379
+ };
380
380
 
381
381
  const TooltipContent = forwardRef<TooltipContentElement, TooltipContentProps>(
382
382
  (props: TooltipScopedProps<TooltipContentProps>, forwardedRef) => {
@@ -400,7 +400,7 @@ type Point = { x: number; y: number };
400
400
  type Polygon = Point[];
401
401
 
402
402
  type TooltipContentHoverableElement = TooltipContentImplElement;
403
- interface TooltipContentHoverableProps extends TooltipContentImplProps {}
403
+ type TooltipContentHoverableProps = TooltipContentImplProps;
404
404
 
405
405
  const TooltipContentHoverable = forwardRef<TooltipContentHoverableElement, TooltipContentHoverableProps>(
406
406
  (props: TooltipScopedProps<TooltipContentHoverableProps>, forwardedRef) => {
@@ -479,10 +479,10 @@ const [VisuallyHiddenContentContextProvider, useVisuallyHiddenContentContext] =
479
479
  isInside: false,
480
480
  });
481
481
 
482
- type TooltipContentImplElement = ElementRef<typeof PopperPrimitive.Content>;
482
+ type TooltipContentImplElement = ComponentRef<typeof PopperPrimitive.Content>;
483
483
  type DismissableLayerProps = ComponentPropsWithoutRef<typeof DismissableLayer>;
484
484
  type PopperContentProps = ComponentPropsWithoutRef<typeof PopperPrimitive.Content>;
485
- interface TooltipContentImplProps extends Omit<PopperContentProps, 'onPlaced'> {
485
+ type TooltipContentImplProps = Omit<PopperContentProps, 'onPlaced'> & {
486
486
  /**
487
487
  * A more descriptive label for accessibility purpose
488
488
  */
@@ -498,7 +498,7 @@ interface TooltipContentImplProps extends Omit<PopperContentProps, 'onPlaced'> {
498
498
  * Can be prevented.
499
499
  */
500
500
  onPointerDownOutside?: DismissableLayerProps['onPointerDownOutside'];
501
- }
501
+ };
502
502
 
503
503
  const TooltipContentImpl = forwardRef<TooltipContentImplElement, TooltipContentImplProps>(
504
504
  (props: TooltipScopedProps<TooltipContentImplProps>, forwardedRef) => {
@@ -574,15 +574,15 @@ const TooltipContentImpl = forwardRef<TooltipContentImplElement, TooltipContentI
574
574
 
575
575
  TooltipContent.displayName = CONTENT_NAME;
576
576
 
577
- /* -------------------------------------------------------------------------------------------------
578
- * TooltipArrow
579
- * ----------------------------------------------------------------------------------------------- */
577
+ //
578
+ // TooltipArrow
579
+ //
580
580
 
581
581
  const ARROW_NAME = 'TooltipArrow';
582
582
 
583
- type TooltipArrowElement = ElementRef<typeof PopperPrimitive.Arrow>;
583
+ type TooltipArrowElement = ComponentRef<typeof PopperPrimitive.Arrow>;
584
584
  type PopperArrowProps = ComponentPropsWithoutRef<typeof PopperPrimitive.Arrow>;
585
- interface TooltipArrowProps extends PopperArrowProps {}
585
+ type TooltipArrowProps = PopperArrowProps;
586
586
 
587
587
  const TooltipArrow = forwardRef<TooltipArrowElement, TooltipArrowProps>(
588
588
  (props: TooltipScopedProps<TooltipArrowProps>, forwardedRef) => {
@@ -599,8 +599,6 @@ const TooltipArrow = forwardRef<TooltipArrowElement, TooltipArrowProps>(
599
599
 
600
600
  TooltipArrow.displayName = ARROW_NAME;
601
601
 
602
- /* ----------------------------------------------------------------------------------------------- */
603
-
604
602
  type TooltipSide = NonNullable<TooltipContentProps['side']>;
605
603
 
606
604
  const getExitSideFromRect = (point: Point, rect: DOMRect): TooltipSide => {
@@ -755,6 +753,10 @@ const getHullPresorted = <P extends Point>(points: Readonly<Array<P>>): Array<P>
755
753
  }
756
754
  };
757
755
 
756
+ //
757
+ // Tooltip
758
+ //
759
+
758
760
  export const Tooltip = {
759
761
  Provider: TooltipProvider,
760
762
  Trigger: TooltipTrigger,
@@ -2,18 +2,25 @@
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
11
  export * from './Button';
12
+ export * from './Card';
9
13
  export * from './Clipboard';
10
14
  export * from './Dialog';
15
+ export * from './ErrorFallback';
16
+ export * from './Focus';
11
17
  export * from './Icon';
18
+ export * from './Image';
12
19
  export * from './Input';
13
20
  export * from './Link';
14
21
  export * from './List';
15
22
  export * from './Main';
16
- export * from './Menus';
23
+ export * from './Menu';
17
24
  export * from './Message';
18
25
  export * from './Popover';
19
26
  export * from './Status';
@@ -21,11 +28,9 @@ export * from './ScrollArea';
21
28
  export * from './ScrollContainer';
22
29
  export * from './Select';
23
30
  export * from './Separator';
31
+ export * from './Skeleton';
32
+ export * from './Splitter';
24
33
  export * from './Tag';
25
34
  export * from './Toast';
26
35
  export * from './Toolbar';
27
36
  export * from './Tooltip';
28
-
29
- export * from './DensityProvider';
30
- export * from './ElevationProvider';
31
- export * from './ThemeProvider';
@@ -0,0 +1,41 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
+ import React from 'react';
7
+
8
+ import { slottable } from '@dxos/ui-theme';
9
+
10
+ import { withTheme } from '../testing';
11
+
12
+ /**
13
+ * Generic component pattern using the slottable factory.
14
+ */
15
+ const Component = slottable<HTMLDivElement>(({ children, ...props }, forwardedRef) => {
16
+ return (
17
+ <div {...props} ref={forwardedRef}>
18
+ {children}
19
+ </div>
20
+ );
21
+ });
22
+
23
+ const meta = {
24
+ title: 'ui/react-ui-core/exemplars/generics',
25
+ component: Component,
26
+ render: (props) => <Component {...props} />,
27
+ decorators: [withTheme()],
28
+ parameters: {
29
+ layout: 'centered',
30
+ },
31
+ } satisfies Meta;
32
+
33
+ export default meta;
34
+
35
+ type Story = StoryObj<typeof meta>;
36
+
37
+ export const Default: Story = {
38
+ args: {
39
+ children: 'Hello',
40
+ },
41
+ };