@dxos/react-ui 0.8.4-main.f9ba587 → 0.8.4-main.fcc0d83b33

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 (482) hide show
  1. package/dist/lib/browser/chunk-BDBC6H6V.mjs +848 -0
  2. package/dist/lib/browser/chunk-BDBC6H6V.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +4102 -61
  4. package/dist/lib/browser/index.mjs.map +4 -4
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/testing/index.mjs +112 -61
  7. package/dist/lib/browser/testing/index.mjs.map +4 -4
  8. package/dist/lib/browser/translations.mjs +18 -0
  9. package/dist/lib/browser/translations.mjs.map +7 -0
  10. package/dist/lib/node-esm/chunk-3JSJK2ZY.mjs +850 -0
  11. package/dist/lib/node-esm/chunk-3JSJK2ZY.mjs.map +7 -0
  12. package/dist/lib/node-esm/index.mjs +4102 -61
  13. package/dist/lib/node-esm/index.mjs.map +4 -4
  14. package/dist/lib/node-esm/meta.json +1 -1
  15. package/dist/lib/node-esm/testing/index.mjs +112 -61
  16. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  17. package/dist/lib/node-esm/translations.mjs +20 -0
  18. package/dist/lib/node-esm/translations.mjs.map +7 -0
  19. package/dist/types/src/components/Avatars/Avatar.d.ts +2 -2
  20. package/dist/types/src/components/Avatars/Avatar.d.ts.map +1 -1
  21. package/dist/types/src/components/Avatars/Avatar.stories.d.ts +5 -31
  22. package/dist/types/src/components/Avatars/Avatar.stories.d.ts.map +1 -1
  23. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts +5 -11
  24. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts.map +1 -1
  25. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts +1 -1
  26. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
  27. package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts +8 -20
  28. package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts.map +1 -1
  29. package/dist/types/src/components/{Buttons → Button}/Button.d.ts +4 -4
  30. package/dist/types/src/components/Button/Button.d.ts.map +1 -0
  31. package/dist/types/src/components/Button/Button.stories.d.ts +17 -0
  32. package/dist/types/src/components/Button/Button.stories.d.ts.map +1 -0
  33. package/dist/types/src/components/{Buttons → Button}/IconButton.d.ts +5 -4
  34. package/dist/types/src/components/Button/IconButton.d.ts.map +1 -0
  35. package/dist/types/src/components/Button/IconButton.stories.d.ts +16 -0
  36. package/dist/types/src/components/Button/IconButton.stories.d.ts.map +1 -0
  37. package/dist/types/src/components/{Buttons → Button}/Toggle.d.ts +2 -2
  38. package/dist/types/src/components/Button/Toggle.d.ts.map +1 -0
  39. package/dist/types/src/components/Button/Toggle.stories.d.ts +16 -0
  40. package/dist/types/src/components/Button/Toggle.stories.d.ts.map +1 -0
  41. package/dist/types/src/components/Button/ToggleGroup.d.ts +27 -0
  42. package/dist/types/src/components/Button/ToggleGroup.d.ts.map +1 -0
  43. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts +27 -0
  44. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts.map +1 -0
  45. package/dist/types/src/components/Button/index.d.ts.map +1 -0
  46. package/dist/types/src/components/Card/Card.d.ts +127 -0
  47. package/dist/types/src/components/Card/Card.d.ts.map +1 -0
  48. package/dist/types/src/components/Card/Card.stories.d.ts +21 -0
  49. package/dist/types/src/components/Card/Card.stories.d.ts.map +1 -0
  50. package/dist/types/src/components/Card/index.d.ts +2 -0
  51. package/dist/types/src/components/Card/index.d.ts.map +1 -0
  52. package/dist/types/src/components/Clipboard/ClipboardProvider.d.ts.map +1 -1
  53. package/dist/types/src/components/Clipboard/CopyButton.d.ts +1 -1
  54. package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -1
  55. package/dist/types/src/components/Clipboard/index.d.ts +10 -1
  56. package/dist/types/src/components/Clipboard/index.d.ts.map +1 -1
  57. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts +1 -1
  58. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts.map +1 -1
  59. package/dist/types/src/components/Dialog/AlertDialog.d.ts +51 -0
  60. package/dist/types/src/components/Dialog/AlertDialog.d.ts.map +1 -0
  61. package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts +11 -0
  62. package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts.map +1 -0
  63. package/dist/types/src/components/Dialog/Dialog.d.ts +64 -0
  64. package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -0
  65. package/dist/types/src/components/Dialog/Dialog.stories.d.ts +25 -0
  66. package/dist/types/src/components/Dialog/Dialog.stories.d.ts.map +1 -0
  67. package/dist/types/src/components/Dialog/index.d.ts.map +1 -0
  68. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts +1 -1
  69. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts.map +1 -1
  70. package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts +11 -0
  71. package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts.map +1 -0
  72. package/dist/types/src/components/ErrorFallback/ErrorFallback.stories.d.ts +7 -0
  73. package/dist/types/src/components/ErrorFallback/ErrorFallback.stories.d.ts.map +1 -0
  74. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts +19 -0
  75. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts.map +1 -0
  76. package/dist/types/src/components/ErrorFallback/ThrowError.d.ts +9 -0
  77. package/dist/types/src/components/ErrorFallback/ThrowError.d.ts.map +1 -0
  78. package/dist/types/src/components/ErrorFallback/index.d.ts +5 -0
  79. package/dist/types/src/components/ErrorFallback/index.d.ts.map +1 -0
  80. package/dist/types/src/components/Focus/Focus.d.ts +36 -0
  81. package/dist/types/src/components/Focus/Focus.d.ts.map +1 -0
  82. package/dist/types/src/components/Focus/Focus.stories.d.ts +9 -0
  83. package/dist/types/src/components/Focus/Focus.stories.d.ts.map +1 -0
  84. package/dist/types/src/components/Focus/index.d.ts +2 -0
  85. package/dist/types/src/components/Focus/index.d.ts.map +1 -0
  86. package/dist/types/src/components/Icon/Icon.d.ts +5 -2
  87. package/dist/types/src/components/Icon/Icon.d.ts.map +1 -1
  88. package/dist/types/src/components/Icon/Icon.stories.d.ts +25 -0
  89. package/dist/types/src/components/Icon/Icon.stories.d.ts.map +1 -0
  90. package/dist/types/src/components/Image/Image.d.ts +15 -0
  91. package/dist/types/src/components/Image/Image.d.ts.map +1 -0
  92. package/dist/types/src/components/Image/Image.stories.d.ts +34 -0
  93. package/dist/types/src/components/Image/Image.stories.d.ts.map +1 -0
  94. package/dist/types/src/components/Image/index.d.ts +2 -0
  95. package/dist/types/src/components/Image/index.d.ts.map +1 -0
  96. package/dist/types/src/components/Input/Input.d.ts +19 -24
  97. package/dist/types/src/components/Input/Input.d.ts.map +1 -1
  98. package/dist/types/src/components/Input/Input.stories.d.ts +17 -18
  99. package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
  100. package/dist/types/src/components/Link/Link.stories.d.ts +8 -8
  101. package/dist/types/src/components/Link/Link.stories.d.ts.map +1 -1
  102. package/dist/types/src/components/{Lists → List}/List.d.ts +8 -6
  103. package/dist/types/src/components/List/List.d.ts.map +1 -0
  104. package/dist/types/src/components/List/List.stories.d.ts +16 -0
  105. package/dist/types/src/components/List/List.stories.d.ts.map +1 -0
  106. package/dist/types/src/components/List/ListDropIndicator.d.ts.map +1 -0
  107. package/dist/types/src/components/{Lists → List}/Tree.d.ts +3 -3
  108. package/dist/types/src/components/List/Tree.d.ts.map +1 -0
  109. package/dist/types/src/components/List/Tree.stories.d.ts +15 -0
  110. package/dist/types/src/components/List/Tree.stories.d.ts.map +1 -0
  111. package/dist/types/src/components/List/TreeDropIndicator.d.ts.map +1 -0
  112. package/dist/types/src/components/{Lists → List}/Treegrid.d.ts +6 -10
  113. package/dist/types/src/components/List/Treegrid.d.ts.map +1 -0
  114. package/dist/types/src/components/List/Treegrid.stories.d.ts +12 -0
  115. package/dist/types/src/components/List/Treegrid.stories.d.ts.map +1 -0
  116. package/dist/types/src/components/List/index.d.ts.map +1 -0
  117. package/dist/types/src/components/Main/Main.d.ts +25 -31
  118. package/dist/types/src/components/Main/Main.d.ts.map +1 -1
  119. package/dist/types/src/components/Main/Main.stories.d.ts +6 -10
  120. package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
  121. package/dist/types/src/components/Main/useSwipeToDismiss.d.ts.map +1 -1
  122. package/dist/types/src/components/{Menus → Menu}/ContextMenu.d.ts +6 -6
  123. package/dist/types/src/components/Menu/ContextMenu.d.ts.map +1 -0
  124. package/dist/types/src/components/Menu/ContextMenu.stories.d.ts +12 -0
  125. package/dist/types/src/components/Menu/ContextMenu.stories.d.ts.map +1 -0
  126. package/dist/types/src/components/Menu/DropdownMenu.d.ts +121 -0
  127. package/dist/types/src/components/Menu/DropdownMenu.d.ts.map +1 -0
  128. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts +28 -0
  129. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts.map +1 -0
  130. package/dist/types/src/components/Menu/index.d.ts.map +1 -0
  131. package/dist/types/src/components/Message/Message.d.ts +1 -1
  132. package/dist/types/src/components/Message/Message.d.ts.map +1 -1
  133. package/dist/types/src/components/Message/Message.stories.d.ts +12 -22
  134. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
  135. package/dist/types/src/components/Popover/Popover.d.ts +41 -24
  136. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  137. package/dist/types/src/components/Popover/Popover.stories.d.ts +6 -34
  138. package/dist/types/src/components/Popover/Popover.stories.d.ts.map +1 -1
  139. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +27 -27
  140. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  141. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +50 -27
  142. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
  143. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +68 -0
  144. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -0
  145. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts +23 -0
  146. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts.map +1 -0
  147. package/dist/types/src/components/ScrollContainer/index.d.ts +2 -0
  148. package/dist/types/src/components/ScrollContainer/index.d.ts.map +1 -0
  149. package/dist/types/src/components/Select/Select.d.ts +10 -10
  150. package/dist/types/src/components/Select/Select.d.ts.map +1 -1
  151. package/dist/types/src/components/Select/Select.stories.d.ts +6 -11
  152. package/dist/types/src/components/Select/Select.stories.d.ts.map +1 -1
  153. package/dist/types/src/components/Separator/Separator.d.ts +4 -4
  154. package/dist/types/src/components/Separator/Separator.d.ts.map +1 -1
  155. package/dist/types/src/components/Skeleton/Skeleton.d.ts +12 -0
  156. package/dist/types/src/components/Skeleton/Skeleton.d.ts.map +1 -0
  157. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts +17 -0
  158. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts.map +1 -0
  159. package/dist/types/src/components/Skeleton/index.d.ts +2 -0
  160. package/dist/types/src/components/Skeleton/index.d.ts.map +1 -0
  161. package/dist/types/src/components/Splitter/Splitter.d.ts +34 -0
  162. package/dist/types/src/components/Splitter/Splitter.d.ts.map +1 -0
  163. package/dist/types/src/components/Splitter/Splitter.stories.d.ts +7 -0
  164. package/dist/types/src/components/Splitter/Splitter.stories.d.ts.map +1 -0
  165. package/dist/types/src/components/Splitter/index.d.ts +2 -0
  166. package/dist/types/src/components/Splitter/index.d.ts.map +1 -0
  167. package/dist/types/src/components/Status/Status.d.ts +3 -4
  168. package/dist/types/src/components/Status/Status.d.ts.map +1 -1
  169. package/dist/types/src/components/Status/Status.stories.d.ts +6 -10
  170. package/dist/types/src/components/Status/Status.stories.d.ts.map +1 -1
  171. package/dist/types/src/components/Tag/Tag.d.ts +1 -1
  172. package/dist/types/src/components/Tag/Tag.d.ts.map +1 -1
  173. package/dist/types/src/components/Tag/Tag.stories.d.ts +8 -13
  174. package/dist/types/src/components/Tag/Tag.stories.d.ts.map +1 -1
  175. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts +4 -4
  176. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  177. package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts +12 -0
  178. package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts.map +1 -0
  179. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +55 -63
  180. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
  181. package/dist/types/src/components/ThemeProvider/index.d.ts +2 -1
  182. package/dist/types/src/components/ThemeProvider/index.d.ts.map +1 -1
  183. package/dist/types/src/components/Toast/Toast.d.ts +20 -20
  184. package/dist/types/src/components/Toast/Toast.d.ts.map +1 -1
  185. package/dist/types/src/components/Toast/Toast.stories.d.ts +6 -44
  186. package/dist/types/src/components/Toast/Toast.stories.d.ts.map +1 -1
  187. package/dist/types/src/components/Toolbar/Toolbar.d.ts +41 -23
  188. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  189. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts +6 -50
  190. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
  191. package/dist/types/src/components/Tooltip/Tooltip.d.ts +11 -13
  192. package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
  193. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts +10 -63
  194. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
  195. package/dist/types/src/components/index.d.ts +14 -8
  196. package/dist/types/src/components/index.d.ts.map +1 -1
  197. package/dist/types/src/exemplars/generics.stories.d.ts +19 -0
  198. package/dist/types/src/exemplars/generics.stories.d.ts.map +1 -0
  199. package/dist/types/src/exemplars/slot.stories.d.ts +15 -0
  200. package/dist/types/src/exemplars/slot.stories.d.ts.map +1 -0
  201. package/dist/types/src/exemplars/tabster.stories.d.ts +8 -0
  202. package/dist/types/src/exemplars/tabster.stories.d.ts.map +1 -0
  203. package/dist/types/src/exemplars/virtualizer.stories.d.ts +11 -0
  204. package/dist/types/src/exemplars/virtualizer.stories.d.ts.map +1 -0
  205. package/dist/types/src/hooks/index.d.ts +1 -0
  206. package/dist/types/src/hooks/index.d.ts.map +1 -1
  207. package/dist/types/src/hooks/useDensityContext.d.ts +2 -2
  208. package/dist/types/src/hooks/useDensityContext.d.ts.map +1 -1
  209. package/dist/types/src/hooks/useElevationContext.d.ts +1 -1
  210. package/dist/types/src/hooks/useElevationContext.d.ts.map +1 -1
  211. package/dist/types/src/hooks/useIconHref.d.ts.map +1 -1
  212. package/dist/types/src/hooks/useSafeArea.d.ts.map +1 -1
  213. package/dist/types/src/hooks/useSafeCollisionPadding.d.ts.map +1 -1
  214. package/dist/types/src/hooks/useVisualViewport.d.ts +2 -2
  215. package/dist/types/src/hooks/useVisualViewport.d.ts.map +1 -1
  216. package/dist/types/src/index.d.ts +2 -1
  217. package/dist/types/src/index.d.ts.map +1 -1
  218. package/dist/types/src/playground/Controls.stories.d.ts +5 -9
  219. package/dist/types/src/playground/Controls.stories.d.ts.map +1 -1
  220. package/dist/types/src/playground/Custom.stories.d.ts +12 -4
  221. package/dist/types/src/playground/Custom.stories.d.ts.map +1 -1
  222. package/dist/types/src/playground/Typography.stories.d.ts +5 -11
  223. package/dist/types/src/playground/Typography.stories.d.ts.map +1 -1
  224. package/dist/types/src/primitives/Column/Column.d.ts +33 -0
  225. package/dist/types/src/primitives/Column/Column.d.ts.map +1 -0
  226. package/dist/types/src/primitives/Column/Column.stories.d.ts +25 -0
  227. package/dist/types/src/primitives/Column/Column.stories.d.ts.map +1 -0
  228. package/dist/types/src/primitives/Column/index.d.ts +2 -0
  229. package/dist/types/src/primitives/Column/index.d.ts.map +1 -0
  230. package/dist/types/src/primitives/Container/Container.d.ts +7 -0
  231. package/dist/types/src/primitives/Container/Container.d.ts.map +1 -0
  232. package/dist/types/src/primitives/Container/Container.stories.d.ts +6 -0
  233. package/dist/types/src/primitives/Container/Container.stories.d.ts.map +1 -0
  234. package/dist/types/src/primitives/Container/index.d.ts +2 -0
  235. package/dist/types/src/primitives/Container/index.d.ts.map +1 -0
  236. package/dist/types/src/primitives/Flex/Flex.d.ts +11 -0
  237. package/dist/types/src/primitives/Flex/Flex.d.ts.map +1 -0
  238. package/dist/types/src/primitives/Flex/Flex.stories.d.ts +8 -0
  239. package/dist/types/src/primitives/Flex/Flex.stories.d.ts.map +1 -0
  240. package/dist/types/src/primitives/Flex/index.d.ts +2 -0
  241. package/dist/types/src/primitives/Flex/index.d.ts.map +1 -0
  242. package/dist/types/src/primitives/Grid/Grid.d.ts +10 -0
  243. package/dist/types/src/primitives/Grid/Grid.d.ts.map +1 -0
  244. package/dist/types/src/primitives/Grid/Grid.stories.d.ts +8 -0
  245. package/dist/types/src/primitives/Grid/Grid.stories.d.ts.map +1 -0
  246. package/dist/types/src/primitives/Grid/index.d.ts +2 -0
  247. package/dist/types/src/primitives/Grid/index.d.ts.map +1 -0
  248. package/dist/types/src/primitives/Panel/Panel.d.ts +35 -0
  249. package/dist/types/src/primitives/Panel/Panel.d.ts.map +1 -0
  250. package/dist/types/src/primitives/Panel/Panel.stories.d.ts +6 -0
  251. package/dist/types/src/primitives/Panel/Panel.stories.d.ts.map +1 -0
  252. package/dist/types/src/primitives/Panel/index.d.ts +2 -0
  253. package/dist/types/src/primitives/Panel/index.d.ts.map +1 -0
  254. package/dist/types/src/primitives/index.d.ts +6 -0
  255. package/dist/types/src/primitives/index.d.ts.map +1 -0
  256. package/dist/types/src/testing/Loading.d.ts +9 -0
  257. package/dist/types/src/testing/Loading.d.ts.map +1 -0
  258. package/dist/types/src/testing/decorators/index.d.ts +2 -1
  259. package/dist/types/src/testing/decorators/index.d.ts.map +1 -1
  260. package/dist/types/src/testing/decorators/withLayout.d.ts +15 -0
  261. package/dist/types/src/testing/decorators/withLayout.d.ts.map +1 -0
  262. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts +12 -0
  263. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts.map +1 -0
  264. package/dist/types/src/testing/decorators/withTheme.d.ts +5 -1
  265. package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
  266. package/dist/types/src/testing/index.d.ts +1 -0
  267. package/dist/types/src/testing/index.d.ts.map +1 -1
  268. package/dist/types/src/translations.d.ts +11 -0
  269. package/dist/types/src/translations.d.ts.map +1 -0
  270. package/dist/types/src/util/index.d.ts +2 -1
  271. package/dist/types/src/util/index.d.ts.map +1 -1
  272. package/dist/types/src/util/usePx.d.ts +8 -0
  273. package/dist/types/src/util/usePx.d.ts.map +1 -0
  274. package/dist/types/tsconfig.tsbuildinfo +1 -1
  275. package/package.json +54 -39
  276. package/src/components/Avatars/Avatar.stories.tsx +23 -16
  277. package/src/components/Avatars/Avatar.tsx +10 -18
  278. package/src/components/Avatars/AvatarGroup.stories.tsx +11 -8
  279. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +19 -15
  280. package/src/components/Breadcrumb/Breadcrumb.tsx +14 -40
  281. package/src/components/{Buttons → Button}/Button.stories.tsx +11 -13
  282. package/src/components/{Buttons → Button}/Button.tsx +12 -26
  283. package/src/components/{Buttons → Button}/IconButton.stories.tsx +18 -13
  284. package/src/components/{Buttons → Button}/IconButton.tsx +22 -16
  285. package/src/components/Button/Toggle.stories.tsx +36 -0
  286. package/src/components/{Buttons → Button}/Toggle.tsx +4 -4
  287. package/src/components/{Buttons → Button}/ToggleGroup.stories.tsx +14 -12
  288. package/src/components/Button/ToggleGroup.tsx +50 -0
  289. package/src/components/Card/Card.stories.tsx +151 -0
  290. package/src/components/Card/Card.tsx +505 -0
  291. package/src/components/Card/index.ts +5 -0
  292. package/src/components/Clipboard/ClipboardProvider.tsx +1 -1
  293. package/src/components/Clipboard/CopyButton.tsx +9 -9
  294. package/src/components/DensityProvider/DensityProvider.tsx +2 -2
  295. package/src/components/Dialog/AlertDialog.stories.tsx +68 -0
  296. package/src/components/Dialog/AlertDialog.tsx +213 -0
  297. package/src/components/Dialog/Dialog.stories.tsx +177 -0
  298. package/src/components/Dialog/Dialog.tsx +285 -0
  299. package/src/components/ElevationProvider/ElevationProvider.tsx +2 -2
  300. package/src/components/ErrorFallback/ErrorFallback.stories.tsx +45 -0
  301. package/src/components/ErrorFallback/ErrorFallback.tsx +70 -0
  302. package/src/components/ErrorFallback/ErrorStack.tsx +114 -0
  303. package/src/components/ErrorFallback/ThrowError.tsx +37 -0
  304. package/src/components/ErrorFallback/index.ts +9 -0
  305. package/src/components/Focus/AUDIT.md +43 -0
  306. package/src/components/Focus/Focus.stories.tsx +230 -0
  307. package/src/components/Focus/Focus.tsx +201 -0
  308. package/src/components/Focus/index.ts +5 -0
  309. package/src/components/Icon/Icon.stories.tsx +143 -0
  310. package/src/components/Icon/Icon.tsx +6 -2
  311. package/src/components/Image/Image.stories.tsx +86 -0
  312. package/src/components/Image/Image.tsx +246 -0
  313. package/src/components/Image/index.ts +5 -0
  314. package/src/components/Input/Input.stories.tsx +27 -49
  315. package/src/components/Input/Input.tsx +51 -87
  316. package/src/components/Link/Link.stories.tsx +11 -8
  317. package/src/components/Link/Link.tsx +2 -2
  318. package/src/components/{Lists → List}/List.stories.tsx +45 -47
  319. package/src/components/{Lists → List}/List.tsx +30 -35
  320. package/src/components/{Lists → List}/ListDropIndicator.tsx +7 -7
  321. package/src/components/{Lists → List}/Tree.stories.tsx +15 -13
  322. package/src/components/{Lists → List}/Tree.tsx +3 -3
  323. package/src/components/{Lists → List}/TreeDropIndicator.tsx +7 -7
  324. package/src/components/{Lists → List}/Treegrid.stories.tsx +39 -34
  325. package/src/components/List/Treegrid.tsx +188 -0
  326. package/src/components/Main/Main.stories.tsx +52 -27
  327. package/src/components/Main/Main.tsx +176 -105
  328. package/src/components/{Menus → Menu}/ContextMenu.stories.tsx +12 -10
  329. package/src/components/{Menus → Menu}/ContextMenu.tsx +10 -33
  330. package/src/components/{Menus → Menu}/DropdownMenu.stories.tsx +13 -11
  331. package/src/components/{Menus → Menu}/DropdownMenu.tsx +157 -120
  332. package/src/components/Message/Message.stories.tsx +36 -18
  333. package/src/components/Message/Message.tsx +43 -34
  334. package/src/components/Popover/Popover.stories.tsx +18 -16
  335. package/src/components/Popover/Popover.tsx +124 -102
  336. package/src/components/ScrollArea/ScrollArea.stories.tsx +224 -32
  337. package/src/components/ScrollArea/ScrollArea.tsx +97 -79
  338. package/src/components/ScrollArea/index.ts +1 -1
  339. package/src/components/ScrollContainer/ScrollContainer.stories.tsx +91 -0
  340. package/src/components/ScrollContainer/ScrollContainer.tsx +347 -0
  341. package/src/components/ScrollContainer/index.ts +5 -0
  342. package/src/components/Select/Select.stories.tsx +19 -17
  343. package/src/components/Select/Select.tsx +16 -32
  344. package/src/components/Separator/Separator.tsx +5 -8
  345. package/src/components/Skeleton/Skeleton.stories.tsx +51 -0
  346. package/src/components/Skeleton/Skeleton.tsx +26 -0
  347. package/src/components/Skeleton/index.ts +5 -0
  348. package/src/components/Splitter/Splitter.stories.tsx +83 -0
  349. package/src/components/Splitter/Splitter.tsx +127 -0
  350. package/src/components/Splitter/index.ts +5 -0
  351. package/src/components/Status/Status.stories.tsx +29 -23
  352. package/src/components/Status/Status.tsx +10 -7
  353. package/src/components/Tag/Tag.stories.tsx +16 -13
  354. package/src/components/Tag/Tag.tsx +3 -8
  355. package/src/components/ThemeProvider/ThemeProvider.stories.tsx +31 -0
  356. package/src/components/ThemeProvider/ThemeProvider.tsx +12 -11
  357. package/src/components/ThemeProvider/TranslationsProvider.tsx +3 -18
  358. package/src/components/ThemeProvider/index.ts +3 -3
  359. package/src/components/Toast/Toast.stories.tsx +13 -11
  360. package/src/components/Toast/Toast.tsx +23 -42
  361. package/src/components/Toolbar/Toolbar.stories.tsx +22 -21
  362. package/src/components/Toolbar/Toolbar.tsx +188 -13
  363. package/src/components/Tooltip/Tooltip.stories.tsx +35 -30
  364. package/src/components/Tooltip/Tooltip.tsx +44 -41
  365. package/src/components/index.ts +15 -9
  366. package/src/exemplars/generics.stories.tsx +41 -0
  367. package/src/exemplars/slot.stories.tsx +117 -0
  368. package/src/exemplars/tabster.stories.tsx +127 -0
  369. package/src/exemplars/virtualizer.stories.tsx +137 -0
  370. package/src/hooks/index.ts +1 -0
  371. package/src/hooks/useDensityContext.ts +3 -3
  372. package/src/hooks/useElevationContext.ts +1 -1
  373. package/src/hooks/useSafeArea.ts +3 -2
  374. package/src/hooks/useSafeCollisionPadding.ts +1 -1
  375. package/src/hooks/useVisualViewport.ts +4 -4
  376. package/src/index.ts +2 -1
  377. package/src/playground/Controls.stories.tsx +20 -24
  378. package/src/playground/Custom.stories.tsx +20 -34
  379. package/src/playground/Typography.stories.tsx +11 -9
  380. package/src/primitives/Column/AUDIT.md +148 -0
  381. package/src/primitives/Column/Column.stories.tsx +181 -0
  382. package/src/primitives/Column/Column.tsx +165 -0
  383. package/src/primitives/Column/index.ts +5 -0
  384. package/src/primitives/Container/Container.stories.tsx +29 -0
  385. package/src/primitives/Container/Container.tsx +19 -0
  386. package/src/primitives/Container/index.ts +5 -0
  387. package/src/primitives/Flex/Flex.stories.tsx +57 -0
  388. package/src/primitives/Flex/Flex.tsx +27 -0
  389. package/src/primitives/Flex/index.ts +5 -0
  390. package/src/primitives/Grid/Grid.stories.tsx +56 -0
  391. package/src/primitives/Grid/Grid.tsx +30 -0
  392. package/src/primitives/Grid/index.ts +5 -0
  393. package/src/primitives/Panel/Panel.stories.tsx +68 -0
  394. package/src/primitives/Panel/Panel.tsx +120 -0
  395. package/src/primitives/Panel/index.ts +5 -0
  396. package/src/primitives/index.ts +9 -0
  397. package/src/testing/Loading.tsx +47 -0
  398. package/src/testing/decorators/index.ts +2 -1
  399. package/src/testing/decorators/withLayout.tsx +77 -0
  400. package/src/testing/decorators/withLayoutVariants.tsx +48 -0
  401. package/src/testing/decorators/withTheme.tsx +37 -0
  402. package/src/testing/index.ts +2 -0
  403. package/src/translations.ts +19 -0
  404. package/src/util/index.ts +3 -1
  405. package/src/util/usePx.ts +62 -0
  406. package/dist/lib/browser/chunk-T6YPS45E.mjs +0 -4376
  407. package/dist/lib/browser/chunk-T6YPS45E.mjs.map +0 -7
  408. package/dist/lib/node-esm/chunk-TYVQJ4KW.mjs +0 -4378
  409. package/dist/lib/node-esm/chunk-TYVQJ4KW.mjs.map +0 -7
  410. package/dist/types/src/components/AnchoredOverflow/AnchoredOverflow.d.ts +0 -15
  411. package/dist/types/src/components/AnchoredOverflow/AnchoredOverflow.d.ts.map +0 -1
  412. package/dist/types/src/components/AnchoredOverflow/index.d.ts +0 -2
  413. package/dist/types/src/components/AnchoredOverflow/index.d.ts.map +0 -1
  414. package/dist/types/src/components/Buttons/Button.d.ts.map +0 -1
  415. package/dist/types/src/components/Buttons/Button.stories.d.ts +0 -12
  416. package/dist/types/src/components/Buttons/Button.stories.d.ts.map +0 -1
  417. package/dist/types/src/components/Buttons/IconButton.d.ts.map +0 -1
  418. package/dist/types/src/components/Buttons/IconButton.stories.d.ts +0 -22
  419. package/dist/types/src/components/Buttons/IconButton.stories.d.ts.map +0 -1
  420. package/dist/types/src/components/Buttons/Toggle.d.ts.map +0 -1
  421. package/dist/types/src/components/Buttons/Toggle.stories.d.ts +0 -19
  422. package/dist/types/src/components/Buttons/Toggle.stories.d.ts.map +0 -1
  423. package/dist/types/src/components/Buttons/ToggleGroup.d.ts +0 -28
  424. package/dist/types/src/components/Buttons/ToggleGroup.d.ts.map +0 -1
  425. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts +0 -39
  426. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts.map +0 -1
  427. package/dist/types/src/components/Buttons/index.d.ts.map +0 -1
  428. package/dist/types/src/components/Dialogs/AlertDialog.d.ts +0 -31
  429. package/dist/types/src/components/Dialogs/AlertDialog.d.ts.map +0 -1
  430. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts +0 -43
  431. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts.map +0 -1
  432. package/dist/types/src/components/Dialogs/Dialog.d.ts +0 -31
  433. package/dist/types/src/components/Dialogs/Dialog.d.ts.map +0 -1
  434. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts +0 -48
  435. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts.map +0 -1
  436. package/dist/types/src/components/Dialogs/index.d.ts.map +0 -1
  437. package/dist/types/src/components/Lists/List.d.ts.map +0 -1
  438. package/dist/types/src/components/Lists/List.stories.d.ts +0 -37
  439. package/dist/types/src/components/Lists/List.stories.d.ts.map +0 -1
  440. package/dist/types/src/components/Lists/ListDropIndicator.d.ts.map +0 -1
  441. package/dist/types/src/components/Lists/Tree.d.ts.map +0 -1
  442. package/dist/types/src/components/Lists/Tree.stories.d.ts +0 -41
  443. package/dist/types/src/components/Lists/Tree.stories.d.ts.map +0 -1
  444. package/dist/types/src/components/Lists/TreeDropIndicator.d.ts.map +0 -1
  445. package/dist/types/src/components/Lists/Treegrid.d.ts.map +0 -1
  446. package/dist/types/src/components/Lists/Treegrid.stories.d.ts +0 -10
  447. package/dist/types/src/components/Lists/Treegrid.stories.d.ts.map +0 -1
  448. package/dist/types/src/components/Lists/index.d.ts.map +0 -1
  449. package/dist/types/src/components/Menus/ContextMenu.d.ts.map +0 -1
  450. package/dist/types/src/components/Menus/ContextMenu.stories.d.ts +0 -50
  451. package/dist/types/src/components/Menus/ContextMenu.stories.d.ts.map +0 -1
  452. package/dist/types/src/components/Menus/DropdownMenu.d.ts +0 -112
  453. package/dist/types/src/components/Menus/DropdownMenu.d.ts.map +0 -1
  454. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts +0 -50
  455. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts.map +0 -1
  456. package/dist/types/src/components/Menus/index.d.ts.map +0 -1
  457. package/dist/types/src/testing/decorators/withSurfaceVariantsLayout.d.ts +0 -12
  458. package/dist/types/src/testing/decorators/withSurfaceVariantsLayout.d.ts.map +0 -1
  459. package/dist/types/src/util/ThemedClassName.d.ts +0 -5
  460. package/dist/types/src/util/ThemedClassName.d.ts.map +0 -1
  461. package/src/components/AnchoredOverflow/AnchoredOverflow.tsx +0 -59
  462. package/src/components/AnchoredOverflow/index.ts +0 -5
  463. package/src/components/Buttons/Toggle.stories.tsx +0 -33
  464. package/src/components/Buttons/ToggleGroup.tsx +0 -41
  465. package/src/components/Dialogs/AlertDialog.stories.tsx +0 -66
  466. package/src/components/Dialogs/AlertDialog.tsx +0 -172
  467. package/src/components/Dialogs/Dialog.stories.tsx +0 -65
  468. package/src/components/Dialogs/Dialog.tsx +0 -159
  469. package/src/components/Lists/Treegrid.tsx +0 -152
  470. package/src/testing/decorators/withSurfaceVariantsLayout.tsx +0 -51
  471. package/src/testing/decorators/withTheme.ts +0 -22
  472. package/src/util/ThemedClassName.ts +0 -7
  473. /package/dist/types/src/components/{Buttons → Button}/index.d.ts +0 -0
  474. /package/dist/types/src/components/{Dialogs → Dialog}/index.d.ts +0 -0
  475. /package/dist/types/src/components/{Lists → List}/ListDropIndicator.d.ts +0 -0
  476. /package/dist/types/src/components/{Lists → List}/TreeDropIndicator.d.ts +0 -0
  477. /package/dist/types/src/components/{Lists → List}/index.d.ts +0 -0
  478. /package/dist/types/src/components/{Menus → Menu}/index.d.ts +0 -0
  479. /package/src/components/{Buttons → Button}/index.ts +0 -0
  480. /package/src/components/{Dialogs → Dialog}/index.ts +0 -0
  481. /package/src/components/{Lists → List}/index.ts +0 -0
  482. /package/src/components/{Menus → Menu}/index.ts +0 -0
@@ -4,49 +4,32 @@
4
4
 
5
5
  import { Primitive } from '@radix-ui/react-primitive';
6
6
  import { Slot } from '@radix-ui/react-slot';
7
- import {
8
- ToastProvider as ToastProviderPrimitive,
9
- type ToastProviderProps as ToastProviderPrimitiveProps,
10
- ToastViewport as ToastViewportPrimitive,
11
- type ToastViewportProps as ToastViewportPrimitiveProps,
12
- Root as ToastRootPrimitive,
13
- type ToastProps as ToastRootPrimitiveProps,
14
- ToastTitle as ToastTitlePrimitive,
15
- type ToastTitleProps as ToastTitlePrimitiveProps,
16
- ToastDescription as ToastDescriptionPrimitive,
17
- type ToastDescriptionProps as ToastDescriptionPrimitiveProps,
18
- ToastAction as ToastActionPrimitive,
19
- type ToastActionProps as ToastActionPrimitiveProps,
20
- ToastClose as ToastClosePrimitive,
21
- type ToastCloseProps as ToastClosePrimitiveProps,
22
- } from '@radix-ui/react-toast';
23
- import React, { type ComponentPropsWithRef, forwardRef, type FunctionComponent } from 'react';
7
+ import * as ToastPrimitive from '@radix-ui/react-toast';
8
+ import React, { type ComponentPropsWithRef, type FunctionComponent, forwardRef } from 'react';
24
9
 
25
10
  import { useThemeContext } from '../../hooks';
26
11
  import { type ThemedClassName } from '../../util';
27
12
  import { ElevationProvider } from '../ElevationProvider';
28
13
 
29
- type ToastProviderProps = ToastProviderPrimitiveProps;
14
+ type ToastProviderProps = ToastPrimitive.ToastProviderProps;
30
15
 
31
- const ToastProvider: FunctionComponent<ToastProviderProps> = ToastProviderPrimitive;
16
+ const ToastProvider: FunctionComponent<ToastProviderProps> = ToastPrimitive.Provider;
32
17
 
33
- type ToastViewportProps = ThemedClassName<ToastViewportPrimitiveProps>;
18
+ type ToastViewportProps = ThemedClassName<ToastPrimitive.ToastViewportProps>;
34
19
 
35
20
  const ToastViewport = forwardRef<HTMLOListElement, ToastViewportProps>(({ classNames, ...props }, forwardedRef) => {
36
21
  const { tx } = useThemeContext();
37
- return (
38
- <ToastViewportPrimitive className={tx('toast.viewport', 'toast-viewport', {}, classNames)} ref={forwardedRef} />
39
- );
22
+ return <ToastPrimitive.Viewport {...props} className={tx('toast.viewport', {}, classNames)} ref={forwardedRef} />;
40
23
  });
41
24
 
42
- type ToastRootProps = ThemedClassName<ToastRootPrimitiveProps>;
25
+ type ToastRootProps = ThemedClassName<ToastPrimitive.ToastProps>;
43
26
 
44
27
  const ToastRoot = forwardRef<HTMLLIElement, ToastRootProps>(({ classNames, children, ...props }, forwardedRef) => {
45
28
  const { tx } = useThemeContext();
46
29
  return (
47
- <ToastRootPrimitive {...props} className={tx('toast.root', 'toast', {}, classNames)} ref={forwardedRef}>
30
+ <ToastPrimitive.Root {...props} className={tx('toast.root', {}, classNames)} ref={forwardedRef}>
48
31
  <ElevationProvider elevation='toast'>{children}</ElevationProvider>
49
- </ToastRootPrimitive>
32
+ </ToastPrimitive.Root>
50
33
  );
51
34
  });
52
35
 
@@ -54,29 +37,27 @@ type ToastBodyProps = ThemedClassName<ComponentPropsWithRef<typeof Primitive.div
54
37
 
55
38
  const ToastBody = forwardRef<HTMLDivElement, ToastBodyProps>(({ asChild, classNames, ...props }, forwardedRef) => {
56
39
  const { tx } = useThemeContext();
57
- const Root = asChild ? Slot : Primitive.div;
58
- return <Root {...props} className={tx('toast.body', 'toast__body', {}, classNames)} ref={forwardedRef} />;
40
+ const Comp = asChild ? Slot : Primitive.div;
41
+ return <Comp {...props} className={tx('toast.body', {}, classNames)} ref={forwardedRef} />;
59
42
  });
60
43
 
61
- type ToastTitleProps = ThemedClassName<ToastTitlePrimitiveProps>;
44
+ type ToastTitleProps = ThemedClassName<ToastPrimitive.ToastTitleProps>;
62
45
 
63
46
  const ToastTitle = forwardRef<HTMLHeadingElement, ToastTitleProps>(
64
47
  ({ asChild, classNames, ...props }, forwardedRef) => {
65
48
  const { tx } = useThemeContext();
66
- const Root = asChild ? Slot : ToastTitlePrimitive;
67
- return <Root {...props} className={tx('toast.title', 'toast__title', {}, classNames)} ref={forwardedRef} />;
49
+ const Comp = asChild ? Slot : ToastPrimitive.Title;
50
+ return <Comp {...props} className={tx('toast.title', {}, classNames)} ref={forwardedRef} />;
68
51
  },
69
52
  );
70
53
 
71
- type ToastDescriptionProps = ThemedClassName<ToastDescriptionPrimitiveProps>;
54
+ type ToastDescriptionProps = ThemedClassName<ToastPrimitive.ToastDescriptionProps>;
72
55
 
73
56
  const ToastDescription = forwardRef<HTMLParagraphElement, ToastDescriptionProps>(
74
57
  ({ asChild, classNames, ...props }, forwardedRef) => {
75
58
  const { tx } = useThemeContext();
76
- const Root = asChild ? Slot : ToastDescriptionPrimitive;
77
- return (
78
- <Root {...props} className={tx('toast.description', 'toast__description', {}, classNames)} ref={forwardedRef} />
79
- );
59
+ const Comp = asChild ? Slot : ToastPrimitive.Description;
60
+ return <Comp {...props} className={tx('toast.description', {}, classNames)} ref={forwardedRef} />;
80
61
  },
81
62
  );
82
63
 
@@ -85,18 +66,18 @@ type ToastActionsProps = ThemedClassName<ComponentPropsWithRef<typeof Primitive.
85
66
  const ToastActions = forwardRef<HTMLDivElement, ToastActionsProps>(
86
67
  ({ asChild, classNames, ...props }, forwardedRef) => {
87
68
  const { tx } = useThemeContext();
88
- const Root = asChild ? Slot : Primitive.div;
89
- return <Root {...props} className={tx('toast.actions', 'toast__actions', {}, classNames)} ref={forwardedRef} />;
69
+ const Comp = asChild ? Slot : Primitive.div;
70
+ return <Comp {...props} className={tx('toast.actions', {}, classNames)} ref={forwardedRef} />;
90
71
  },
91
72
  );
92
73
 
93
- type ToastActionProps = ToastActionPrimitiveProps;
74
+ type ToastActionProps = ToastPrimitive.ToastActionProps;
94
75
 
95
- const ToastAction: FunctionComponent<ToastActionProps> = ToastActionPrimitive;
76
+ const ToastAction: FunctionComponent<ToastActionProps> = ToastPrimitive.Action;
96
77
 
97
- type ToastCloseProps = ToastClosePrimitiveProps;
78
+ type ToastCloseProps = ToastPrimitive.ToastCloseProps;
98
79
 
99
- const ToastClose: FunctionComponent<ToastCloseProps> = ToastClosePrimitive;
80
+ const ToastClose: FunctionComponent<ToastCloseProps> = ToastPrimitive.Close;
100
81
 
101
82
  export const Toast = {
102
83
  Provider: ToastProvider,
@@ -2,15 +2,14 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
6
-
7
- import { ArrowClockwise, Bug, FileJs, FileTs, TextB, TextItalic, TextUnderline } from '@phosphor-icons/react';
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
8
6
  import React from 'react';
9
7
 
10
- import { Toolbar } from './Toolbar';
11
8
  import { withTheme } from '../../testing';
12
- import { Toggle } from '../Buttons';
9
+ import { Toggle } from '../Button';
10
+ import { Icon } from '../Icon';
13
11
  import { Select } from '../Select';
12
+ import { Toolbar } from './Toolbar';
14
13
 
15
14
  type StorybookToolbarProps = {};
16
15
 
@@ -29,6 +28,7 @@ const DefaultStory = (props: StorybookToolbarProps) => {
29
28
  <Select.Option value={'b'}>B</Select.Option>
30
29
  <Select.Option value={'c'}>C</Select.Option>
31
30
  </Select.Viewport>
31
+ <Select.Arrow />
32
32
  </Select.Content>
33
33
  </Select.Portal>
34
34
  </Select.Root>
@@ -37,46 +37,47 @@ const DefaultStory = (props: StorybookToolbarProps) => {
37
37
  {/* TODO(burdon): Icon sizes should adapt to density. */}
38
38
  <Toolbar.ToggleGroup type='multiple'>
39
39
  <Toolbar.ToggleGroupItem value='a'>
40
- <TextB />
40
+ <Icon icon='ph--text-b--regular' />
41
41
  </Toolbar.ToggleGroupItem>
42
42
  <Toolbar.ToggleGroupItem value='b'>
43
- <TextItalic />
43
+ <Icon icon='ph--text-italic--regular' />
44
44
  </Toolbar.ToggleGroupItem>
45
45
  <Toolbar.ToggleGroupItem value='c'>
46
- <TextUnderline />
46
+ <Icon icon='ph--text-underline--regular' />
47
47
  </Toolbar.ToggleGroupItem>
48
48
  </Toolbar.ToggleGroup>
49
49
  {/* TODO(burdon): Highlight isn't shown. */}
50
50
  <Toolbar.ToggleGroup type='single' defaultValue='a'>
51
51
  <Toolbar.ToggleGroupItem value='a'>
52
- <FileTs />
52
+ <Icon icon='ph--file-ts--regular' />
53
53
  </Toolbar.ToggleGroupItem>
54
54
  <Toolbar.ToggleGroupItem value='b'>
55
- <FileJs />
55
+ <Icon icon='ph--file-js--regular' />
56
56
  </Toolbar.ToggleGroupItem>
57
57
  </Toolbar.ToggleGroup>
58
58
  <Toolbar.Button asChild>
59
59
  <Toggle>
60
- <Bug />
60
+ <Icon icon='ph--bug--regular' />
61
61
  </Toggle>
62
62
  </Toolbar.Button>
63
63
  <Toolbar.Separator />
64
64
  <Toolbar.Button>Test</Toolbar.Button>
65
- <Toolbar.Button>
66
- <ArrowClockwise />
67
- </Toolbar.Button>
65
+ <Toolbar.IconButton icon='ph--arrow-clockwise--regular' label='Refresh' iconOnly />
68
66
  </Toolbar.Root>
69
67
  );
70
68
  };
71
69
 
72
- export default {
73
- title: 'ui/react-ui-core/Toolbar',
74
- component: Toolbar,
70
+ const meta = {
71
+ title: 'ui/react-ui-core/components/Toolbar',
72
+ component: Toolbar as any,
75
73
  render: DefaultStory,
76
- decorators: [withTheme],
77
- parameters: { chromatic: { disableSnapshot: false } },
78
- };
74
+ decorators: [withTheme()],
75
+ } satisfies Meta<typeof DefaultStory>;
76
+
77
+ export default meta;
78
+
79
+ type Story = StoryObj<typeof meta>;
79
80
 
80
- export const Default = {
81
+ export const Default: Story = {
81
82
  args: {},
82
83
  };
@@ -2,35 +2,53 @@
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, { 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';
14
+
15
+ import { translationKey } from '#translations';
8
16
 
9
17
  import { useThemeContext } from '../../hooks';
10
- import { type ThemedClassName } from '../../util';
11
18
  import {
12
19
  Button,
13
20
  ButtonGroup,
14
21
  type ButtonGroupProps,
15
22
  type ButtonProps,
23
+ IconButton,
24
+ type IconButtonProps,
16
25
  Toggle,
17
26
  type ToggleGroupItemProps,
18
27
  type ToggleProps,
19
- IconButton,
20
- type IconButtonProps,
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
 
25
- type ToolbarRootProps = ThemedClassName<ToolbarPrimitive.ToolbarProps> & { layoutManaged?: boolean };
33
+ //
34
+ // Root
35
+ //
36
+
37
+ type ToolbarRootProps = ToolbarPrimitive.ToolbarProps & ToolbarStyleProps;
26
38
 
27
- const ToolbarRoot = forwardRef<HTMLDivElement, ToolbarRootProps>(
28
- ({ classNames, children, layoutManaged, ...props }, forwardedRef) => {
39
+ const ToolbarRoot = composable<HTMLDivElement, ToolbarRootProps>(
40
+ ({ children, density, disabled, layoutManaged, orientation, ...props }, forwardedRef) => {
41
+ const { className, role, ...rest } = composableProps(props);
29
42
  const { tx } = useThemeContext();
43
+
30
44
  return (
31
45
  <ToolbarPrimitive.Root
32
- {...props}
33
- className={tx('toolbar.root', 'toolbar', { layoutManaged }, classNames)}
46
+ {...rest}
47
+ // Only pass role when explicitly set; radix provides role="toolbar" by default.
48
+ {...(role !== 'none' && { role })}
49
+ orientation={orientation}
50
+ data-arrow-keys={orientation === 'vertical' ? 'up down' : 'left right'}
51
+ className={tx('toolbar.root', { density, disabled, layoutManaged }, className)}
34
52
  ref={forwardedRef}
35
53
  >
36
54
  {children}
@@ -39,6 +57,27 @@ const ToolbarRoot = forwardRef<HTMLDivElement, ToolbarRootProps>(
39
57
  },
40
58
  );
41
59
 
60
+ //
61
+ // Text
62
+ //
63
+
64
+ type ToolbarTextProps = SlottableProps;
65
+
66
+ const ToolbarText = slottable<HTMLDivElement>(({ children, asChild, ...props }, forwardedRef) => {
67
+ const { className, ...rest } = composableProps(props);
68
+ const Comp = asChild ? Slot : Primitive.div;
69
+ const { tx } = useThemeContext();
70
+ return (
71
+ <Comp {...rest} className={tx('toolbar.text', {}, className)} ref={forwardedRef}>
72
+ {children}
73
+ </Comp>
74
+ );
75
+ });
76
+
77
+ //
78
+ // Button
79
+ //
80
+
42
81
  type ToolbarButtonProps = ButtonProps;
43
82
 
44
83
  const ToolbarButton = forwardRef<HTMLButtonElement, ToolbarButtonProps>((props, forwardedRef) => {
@@ -49,12 +88,16 @@ const ToolbarButton = forwardRef<HTMLButtonElement, ToolbarButtonProps>((props,
49
88
  );
50
89
  });
51
90
 
91
+ //
92
+ // IconButton
93
+ //
94
+
52
95
  type ToolbarIconButtonProps = IconButtonProps;
53
96
 
54
97
  const ToolbarIconButton = forwardRef<HTMLButtonElement, ToolbarIconButtonProps>((props, forwardedRef) => {
55
98
  return (
56
99
  <ToolbarPrimitive.Button asChild>
57
- <IconButton {...props} ref={forwardedRef} />
100
+ <IconButton {...props} noTooltip ref={forwardedRef} />
58
101
  </ToolbarPrimitive.Button>
59
102
  );
60
103
  });
@@ -69,6 +112,10 @@ const ToolbarToggle = forwardRef<HTMLButtonElement, ToolbarToggleProps>((props,
69
112
  );
70
113
  });
71
114
 
115
+ //
116
+ // Link
117
+ //
118
+
72
119
  type ToolbarLinkProps = LinkProps;
73
120
 
74
121
  const ToolbarLink = forwardRef<HTMLAnchorElement, ToolbarLinkProps>((props, forwardedRef) => {
@@ -85,6 +132,10 @@ type ToolbarToggleGroupProps = (
85
132
  ) &
86
133
  ButtonGroupProps;
87
134
 
135
+ //
136
+ // ToggleGroup
137
+ //
138
+
88
139
  const ToolbarToggleGroup = forwardRef<HTMLDivElement, ToolbarToggleGroupProps>(
89
140
  ({ classNames, children, elevation, ...props }, forwardedRef) => {
90
141
  return (
@@ -113,19 +164,34 @@ const ToolbarToggleGroupIconItem = forwardRef<HTMLButtonElement, ToolbarToggleGr
113
164
  ({ variant, density, elevation, classNames, icon, label, iconOnly, ...props }, forwardedRef) => {
114
165
  return (
115
166
  <ToolbarPrimitive.ToolbarToggleItem {...props} asChild>
116
- <IconButton {...{ variant, density, elevation, classNames, icon, label, iconOnly }} ref={forwardedRef} />
167
+ <IconButton
168
+ {...{
169
+ variant,
170
+ density,
171
+ elevation,
172
+ classNames,
173
+ icon,
174
+ label,
175
+ iconOnly,
176
+ }}
177
+ ref={forwardedRef}
178
+ />
117
179
  </ToolbarPrimitive.ToolbarToggleItem>
118
180
  );
119
181
  },
120
182
  );
121
183
 
184
+ //
185
+ // Separator
186
+ //
187
+
122
188
  type ToolbarSeparatorProps = SeparatorProps & { variant?: 'gap' | 'line' };
123
189
 
124
190
  const ToolbarSeparator = forwardRef<HTMLDivElement, ToolbarSeparatorProps>(
125
- ({ variant = 'line', ...props }, forwardedRef) => {
191
+ ({ variant = 'gap', ...props }, forwardedRef) => {
126
192
  return variant === 'line' ? (
127
193
  <ToolbarPrimitive.Separator asChild>
128
- <Separator {...props} ref={forwardedRef} />
194
+ <Separator orientation='vertical' {...props} ref={forwardedRef} />
129
195
  </ToolbarPrimitive.Separator>
130
196
  ) : (
131
197
  <ToolbarPrimitive.Separator className='grow' ref={forwardedRef} />
@@ -133,8 +199,109 @@ const ToolbarSeparator = forwardRef<HTMLDivElement, ToolbarSeparatorProps>(
133
199
  },
134
200
  );
135
201
 
202
+ //
203
+ // DragHandle
204
+ //
205
+
206
+ type ToolbarDragHandleProps = { testId?: string; label?: string };
207
+
208
+ const ToolbarDragHandle = forwardRef<HTMLButtonElement, ToolbarDragHandleProps>(
209
+ ({ testId = 'drag-handle', label }, forwardedRef) => {
210
+ const { t } = useTranslation(translationKey);
211
+ return (
212
+ <ToolbarIconButton
213
+ data-testid={testId}
214
+ tabIndex={-1}
215
+ noTooltip
216
+ iconOnly
217
+ icon='ph--dots-six-vertical--regular'
218
+ variant='ghost'
219
+ label={label ?? t('toolbar-drag-handle.label')}
220
+ classNames='dx-focus-ring-none cursor-pointer'
221
+ disabled={!forwardedRef}
222
+ ref={forwardedRef}
223
+ />
224
+ );
225
+ },
226
+ );
227
+
228
+ //
229
+ // CloseIconButton
230
+ //
231
+
232
+ type ToolbarCloseIconButtonProps = { onClick?: () => void; label?: string };
233
+
234
+ const ToolbarCloseIconButton = forwardRef<HTMLButtonElement, ToolbarCloseIconButtonProps>(
235
+ ({ onClick, label }, forwardedRef) => {
236
+ const { t } = useTranslation(translationKey);
237
+
238
+ return (
239
+ <ToolbarIconButton
240
+ iconOnly
241
+ icon='ph--x--regular'
242
+ variant='ghost'
243
+ label={label ?? t('toolbar-close.label')}
244
+ classNames='cursor-pointer'
245
+ onClick={onClick}
246
+ ref={forwardedRef}
247
+ />
248
+ );
249
+ },
250
+ );
251
+
252
+ //
253
+ // Menu
254
+ //
255
+
256
+ type ToolbarMenuItem<T extends any | void = void> = {
257
+ label: string;
258
+ onClick: (context: T) => void;
259
+ };
260
+
261
+ type ToolbarMenuProps<T extends any | void = void> = {
262
+ context?: T;
263
+ items?: ToolbarMenuItem<T>[];
264
+ };
265
+
266
+ // TODO(burdon): Make slottable.
267
+ const ToolbarMenu = <T extends any | void = void>({ context, items }: ToolbarMenuProps<T>) => {
268
+ const { t } = useTranslation(translationKey);
269
+
270
+ return (
271
+ <DropdownMenu.Root>
272
+ <DropdownMenu.Trigger disabled={!items?.length} asChild>
273
+ <ToolbarIconButton
274
+ iconOnly
275
+ variant='ghost'
276
+ icon='ph--dots-three-vertical--regular'
277
+ label={t('toolbar-menu.label')}
278
+ />
279
+ </DropdownMenu.Trigger>
280
+ {(items?.length ?? 0) > 0 && (
281
+ <DropdownMenu.Portal>
282
+ <DropdownMenu.Content>
283
+ <DropdownMenu.Viewport>
284
+ {items?.map(({ label, onClick: onSelect }, index) => (
285
+ <DropdownMenu.Item key={index} onSelect={() => onSelect(context as T)}>
286
+ {label}
287
+ </DropdownMenu.Item>
288
+ ))}
289
+ </DropdownMenu.Viewport>
290
+ <DropdownMenu.Arrow />
291
+ </DropdownMenu.Content>
292
+ </DropdownMenu.Portal>
293
+ )}
294
+ </DropdownMenu.Root>
295
+ );
296
+ };
297
+
298
+ //
299
+ // Toolbar
300
+ //
301
+
136
302
  export const Toolbar = {
137
303
  Root: ToolbarRoot,
304
+ Text: ToolbarText,
138
305
  Button: ToolbarButton,
139
306
  IconButton: ToolbarIconButton,
140
307
  Link: ToolbarLink,
@@ -143,10 +310,14 @@ export const Toolbar = {
143
310
  ToggleGroupItem: ToolbarToggleGroupItem,
144
311
  ToggleGroupIconItem: ToolbarToggleGroupIconItem,
145
312
  Separator: ToolbarSeparator,
313
+ DragHandle: ToolbarDragHandle,
314
+ CloseIconButton: ToolbarCloseIconButton,
315
+ Menu: ToolbarMenu,
146
316
  };
147
317
 
148
318
  export type {
149
319
  ToolbarRootProps,
320
+ ToolbarTextProps,
150
321
  ToolbarButtonProps,
151
322
  ToolbarIconButtonProps,
152
323
  ToolbarLinkProps,
@@ -155,4 +326,8 @@ export type {
155
326
  ToolbarToggleGroupItemProps,
156
327
  ToolbarToggleGroupIconItemProps,
157
328
  ToolbarSeparatorProps,
329
+ ToolbarDragHandleProps,
330
+ ToolbarCloseIconButtonProps,
331
+ ToolbarMenuItem,
332
+ ToolbarMenuProps,
158
333
  };
@@ -2,41 +2,46 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
6
  import React from 'react';
7
7
 
8
- import { faker } from '@dxos/random';
8
+ import { random } from '@dxos/random';
9
9
 
10
- import { Tooltip } from './Tooltip';
11
10
  import { withTheme } from '../../testing';
12
- import { Button } from '../Buttons';
11
+ import { Button } from '../Button';
12
+ import { Tooltip } from './Tooltip';
13
13
 
14
- type StoryProps = {
14
+ type DefaultStoryProps = {
15
15
  tooltips: { label: string; content: string }[];
16
16
  defaultOpen?: boolean;
17
17
  };
18
18
 
19
- const DefaultStory = ({ tooltips, defaultOpen }: StoryProps) => (
20
- <Tooltip.Provider defaultOpen={defaultOpen}>
21
- <div role='none' className='is-32'>
22
- {tooltips.map(({ label, content }, i) => (
23
- <Tooltip.Trigger asChild key={i} content={content} side='right'>
24
- <Button classNames='block is-full'>{label}</Button>
25
- </Tooltip.Trigger>
26
- ))}
27
- </div>
28
- </Tooltip.Provider>
29
- );
19
+ const DefaultStory = ({ tooltips, defaultOpen }: DefaultStoryProps) => {
20
+ return (
21
+ <Tooltip.Provider defaultOpen={defaultOpen}>
22
+ <div role='none' className='w-32'>
23
+ {tooltips.map(({ label, content }, i) => (
24
+ <Tooltip.Trigger asChild key={i} content={content} side='right'>
25
+ <Button classNames='block w-full'>{label}</Button>
26
+ </Tooltip.Trigger>
27
+ ))}
28
+ </div>
29
+ </Tooltip.Provider>
30
+ );
31
+ };
30
32
 
31
- export default {
32
- title: 'ui/react-ui-core/Tooltip',
33
- component: Tooltip,
33
+ const meta = {
34
+ title: 'ui/react-ui-core/components/Tooltip',
35
+ component: Tooltip as any,
34
36
  render: DefaultStory,
35
- decorators: [withTheme],
36
- parameters: { chromatic: { disableSnapshot: false } },
37
- };
37
+ decorators: [withTheme()],
38
+ } satisfies Meta<typeof DefaultStory>;
39
+
40
+ export default meta;
41
+
42
+ type Story = StoryObj<typeof meta>;
38
43
 
39
- export const Default = {
44
+ export const Default: Story = {
40
45
  args: {
41
46
  tooltips: [
42
47
  {
@@ -50,9 +55,9 @@ export const Default = {
50
55
  },
51
56
  };
52
57
 
53
- export const DefaultOpen = {
58
+ export const DefaultOpen: Story = {
54
59
  args: {
55
- defaultOption: true,
60
+ defaultOpen: true,
56
61
  tooltips: [
57
62
  {
58
63
  label: 'Tooltip trigger',
@@ -65,13 +70,13 @@ export const DefaultOpen = {
65
70
  },
66
71
  };
67
72
 
68
- export const StressTest = {
73
+ export const StressTest: Story = {
69
74
  args: {
70
- defaultOption: true,
71
- tooltips: faker.helpers.multiple(
75
+ defaultOpen: true,
76
+ tooltips: random.helpers.multiple(
72
77
  () => ({
73
- label: faker.lorem.words(2),
74
- content: faker.lorem.words(5),
78
+ label: random.lorem.words(2),
79
+ content: random.lorem.words(5),
75
80
  }),
76
81
  { count: 32 },
77
82
  ),