@dxos/react-ui 0.8.4-main.c85a9c8dae → 0.8.4-main.d05539e30a

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 (325) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +1 -1
  3. package/dist/lib/browser/chunk-A5QCIG5R.mjs +24 -0
  4. package/dist/lib/browser/chunk-A5QCIG5R.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-2FKSMWNY.mjs → chunk-LY5XDQR5.mjs} +84 -12
  6. package/dist/lib/browser/chunk-LY5XDQR5.mjs.map +7 -0
  7. package/dist/lib/browser/index.mjs +1559 -1062
  8. package/dist/lib/browser/index.mjs.map +4 -4
  9. package/dist/lib/browser/meta.json +1 -1
  10. package/dist/lib/browser/testing/index.mjs +44 -20
  11. package/dist/lib/browser/testing/index.mjs.map +4 -4
  12. package/dist/lib/browser/translations.mjs +9 -0
  13. package/dist/lib/browser/translations.mjs.map +7 -0
  14. package/dist/lib/node-esm/{chunk-ZNBLTSHI.mjs → chunk-NGKLIKP3.mjs} +84 -12
  15. package/dist/lib/node-esm/chunk-NGKLIKP3.mjs.map +7 -0
  16. package/dist/lib/node-esm/chunk-XCFLA74M.mjs +26 -0
  17. package/dist/lib/node-esm/chunk-XCFLA74M.mjs.map +7 -0
  18. package/dist/lib/node-esm/index.mjs +1559 -1062
  19. package/dist/lib/node-esm/index.mjs.map +4 -4
  20. package/dist/lib/node-esm/meta.json +1 -1
  21. package/dist/lib/node-esm/testing/index.mjs +44 -20
  22. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  23. package/dist/lib/node-esm/translations.mjs +10 -0
  24. package/dist/lib/node-esm/translations.mjs.map +7 -0
  25. package/dist/types/src/components/Avatars/Avatar.d.ts +1 -1
  26. package/dist/types/src/components/Avatars/Avatar.d.ts.map +1 -1
  27. package/dist/types/src/components/Avatars/Avatar.stories.d.ts.map +1 -1
  28. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts.map +1 -1
  29. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
  30. package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts.map +1 -1
  31. package/dist/types/src/components/Button/Button.d.ts +2 -2
  32. package/dist/types/src/components/Button/Button.d.ts.map +1 -1
  33. package/dist/types/src/components/Button/Button.stories.d.ts +1 -1
  34. package/dist/types/src/components/Button/Button.stories.d.ts.map +1 -1
  35. package/dist/types/src/components/Button/IconButton.d.ts +1 -0
  36. package/dist/types/src/components/Button/IconButton.d.ts.map +1 -1
  37. package/dist/types/src/components/Button/IconButton.stories.d.ts +3 -0
  38. package/dist/types/src/components/Button/IconButton.stories.d.ts.map +1 -1
  39. package/dist/types/src/components/Button/Toggle.d.ts +2 -2
  40. package/dist/types/src/components/Button/Toggle.d.ts.map +1 -1
  41. package/dist/types/src/components/Button/Toggle.stories.d.ts.map +1 -1
  42. package/dist/types/src/components/Button/ToggleGroup.d.ts +6 -6
  43. package/dist/types/src/components/Button/ToggleGroup.d.ts.map +1 -1
  44. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts +2 -2
  45. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts.map +1 -1
  46. package/dist/types/src/components/Card/Card.d.ts +68 -65
  47. package/dist/types/src/components/Card/Card.d.ts.map +1 -1
  48. package/dist/types/src/components/Card/Card.stories.d.ts +2 -2
  49. package/dist/types/src/components/Card/Card.stories.d.ts.map +1 -1
  50. package/dist/types/src/components/Carousel/Carousel.d.ts +106 -0
  51. package/dist/types/src/components/Carousel/Carousel.d.ts.map +1 -0
  52. package/dist/types/src/components/Carousel/index.d.ts +2 -0
  53. package/dist/types/src/components/Carousel/index.d.ts.map +1 -0
  54. package/dist/types/src/components/Clipboard/ClipboardProvider.d.ts.map +1 -1
  55. package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -1
  56. package/dist/types/src/components/Clipboard/index.d.ts +10 -1
  57. package/dist/types/src/components/Clipboard/index.d.ts.map +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 +42 -31
  60. package/dist/types/src/components/Dialog/AlertDialog.d.ts.map +1 -1
  61. package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts.map +1 -1
  62. package/dist/types/src/components/Dialog/Dialog.d.ts +47 -30
  63. package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -1
  64. package/dist/types/src/components/Dialog/Dialog.stories.d.ts +3 -2
  65. package/dist/types/src/components/Dialog/Dialog.stories.d.ts.map +1 -1
  66. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts.map +1 -1
  67. package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts.map +1 -1
  68. package/dist/types/src/components/ErrorFallback/ErrorFallback.stories.d.ts.map +1 -1
  69. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts +14 -3
  70. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts.map +1 -1
  71. package/dist/types/src/components/ErrorFallback/ThrowError.d.ts.map +1 -1
  72. package/dist/types/src/components/Focus/Focus.d.ts +36 -0
  73. package/dist/types/src/components/Focus/Focus.d.ts.map +1 -0
  74. package/dist/types/src/components/Focus/Focus.stories.d.ts +9 -0
  75. package/dist/types/src/components/Focus/Focus.stories.d.ts.map +1 -0
  76. package/dist/types/src/components/Focus/index.d.ts +2 -0
  77. package/dist/types/src/components/Focus/index.d.ts.map +1 -0
  78. package/dist/types/src/components/Icon/Icon.d.ts +4 -0
  79. package/dist/types/src/components/Icon/Icon.d.ts.map +1 -1
  80. package/dist/types/src/components/Icon/Icon.stories.d.ts +11 -3
  81. package/dist/types/src/components/Icon/Icon.stories.d.ts.map +1 -1
  82. package/dist/types/src/components/Image/Image.d.ts +2 -1
  83. package/dist/types/src/components/Image/Image.d.ts.map +1 -1
  84. package/dist/types/src/components/Image/Image.stories.d.ts +3 -2
  85. package/dist/types/src/components/Image/Image.stories.d.ts.map +1 -1
  86. package/dist/types/src/components/Input/Input.d.ts +14 -17
  87. package/dist/types/src/components/Input/Input.d.ts.map +1 -1
  88. package/dist/types/src/components/Input/Input.stories.d.ts +3 -3
  89. package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
  90. package/dist/types/src/components/Link/Link.d.ts.map +1 -1
  91. package/dist/types/src/components/Link/Link.stories.d.ts.map +1 -1
  92. package/dist/types/src/components/List/List.d.ts +5 -3
  93. package/dist/types/src/components/List/List.d.ts.map +1 -1
  94. package/dist/types/src/components/List/List.stories.d.ts +3 -1
  95. package/dist/types/src/components/List/List.stories.d.ts.map +1 -1
  96. package/dist/types/src/components/List/ListDropIndicator.d.ts.map +1 -1
  97. package/dist/types/src/components/List/Tree.d.ts +2 -2
  98. package/dist/types/src/components/List/Tree.d.ts.map +1 -1
  99. package/dist/types/src/components/List/Tree.stories.d.ts.map +1 -1
  100. package/dist/types/src/components/List/TreeDropIndicator.d.ts.map +1 -1
  101. package/dist/types/src/components/List/Treegrid.d.ts +5 -9
  102. package/dist/types/src/components/List/Treegrid.d.ts.map +1 -1
  103. package/dist/types/src/components/List/Treegrid.stories.d.ts.map +1 -1
  104. package/dist/types/src/components/Main/Main.d.ts +7 -3
  105. package/dist/types/src/components/Main/Main.d.ts.map +1 -1
  106. package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
  107. package/dist/types/src/components/Main/useSwipeToDismiss.d.ts.map +1 -1
  108. package/dist/types/src/components/MediaPlayer/MediaPlayer.d.ts +46 -0
  109. package/dist/types/src/components/MediaPlayer/MediaPlayer.d.ts.map +1 -0
  110. package/dist/types/src/components/MediaPlayer/MediaPlayer.stories.d.ts +16 -0
  111. package/dist/types/src/components/MediaPlayer/MediaPlayer.stories.d.ts.map +1 -0
  112. package/dist/types/src/components/MediaPlayer/index.d.ts +2 -0
  113. package/dist/types/src/components/MediaPlayer/index.d.ts.map +1 -0
  114. package/dist/types/src/components/Menu/ContextMenu.d.ts.map +1 -1
  115. package/dist/types/src/components/Menu/ContextMenu.stories.d.ts.map +1 -1
  116. package/dist/types/src/components/Menu/DropdownMenu.d.ts +58 -49
  117. package/dist/types/src/components/Menu/DropdownMenu.d.ts.map +1 -1
  118. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts +14 -1
  119. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts.map +1 -1
  120. package/dist/types/src/components/Message/Message.d.ts +1 -1
  121. package/dist/types/src/components/Message/Message.d.ts.map +1 -1
  122. package/dist/types/src/components/Message/Message.stories.d.ts +2 -2
  123. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
  124. package/dist/types/src/components/Popover/Popover.d.ts +38 -22
  125. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  126. package/dist/types/src/components/Popover/Popover.stories.d.ts.map +1 -1
  127. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +12 -11
  128. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  129. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +21 -10
  130. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
  131. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +42 -13
  132. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -1
  133. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts +5 -6
  134. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts.map +1 -1
  135. package/dist/types/src/components/Select/Select.d.ts.map +1 -1
  136. package/dist/types/src/components/Select/Select.stories.d.ts +2 -2
  137. package/dist/types/src/components/Select/Select.stories.d.ts.map +1 -1
  138. package/dist/types/src/components/Separator/Separator.d.ts +3 -3
  139. package/dist/types/src/components/Separator/Separator.d.ts.map +1 -1
  140. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts.map +1 -1
  141. package/dist/types/src/components/Splitter/Splitter.d.ts +19 -21
  142. package/dist/types/src/components/Splitter/Splitter.d.ts.map +1 -1
  143. package/dist/types/src/components/Splitter/Splitter.stories.d.ts.map +1 -1
  144. package/dist/types/src/components/Status/Status.d.ts +3 -4
  145. package/dist/types/src/components/Status/Status.d.ts.map +1 -1
  146. package/dist/types/src/components/Status/Status.stories.d.ts.map +1 -1
  147. package/dist/types/src/components/Tag/Tag.stories.d.ts.map +1 -1
  148. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts +1 -1
  149. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  150. package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts +1 -1
  151. package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts.map +1 -1
  152. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +54 -55
  153. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
  154. package/dist/types/src/components/ThemeProvider/index.d.ts +1 -1
  155. package/dist/types/src/components/ThemeProvider/index.d.ts.map +1 -1
  156. package/dist/types/src/components/Toast/Toast.d.ts +16 -16
  157. package/dist/types/src/components/Toast/Toast.d.ts.map +1 -1
  158. package/dist/types/src/components/Toast/Toast.stories.d.ts.map +1 -1
  159. package/dist/types/src/components/Toolbar/Toolbar.d.ts +10 -20
  160. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  161. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
  162. package/dist/types/src/components/Tooltip/Tooltip.d.ts +16 -16
  163. package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
  164. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts +2 -2
  165. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
  166. package/dist/types/src/components/index.d.ts +3 -0
  167. package/dist/types/src/components/index.d.ts.map +1 -1
  168. package/dist/types/src/exemplars/generics.stories.d.ts +6 -5
  169. package/dist/types/src/exemplars/generics.stories.d.ts.map +1 -1
  170. package/dist/types/src/exemplars/slot.stories.d.ts +1 -0
  171. package/dist/types/src/exemplars/slot.stories.d.ts.map +1 -1
  172. package/dist/types/src/exemplars/tabster.stories.d.ts.map +1 -1
  173. package/dist/types/src/exemplars/virtualizer.stories.d.ts.map +1 -1
  174. package/dist/types/src/hooks/index.d.ts +1 -0
  175. package/dist/types/src/hooks/index.d.ts.map +1 -1
  176. package/dist/types/src/hooks/useDensityContext.d.ts +1 -1
  177. package/dist/types/src/hooks/useDensityContext.d.ts.map +1 -1
  178. package/dist/types/src/hooks/useElevationContext.d.ts.map +1 -1
  179. package/dist/types/src/hooks/useIconHref.d.ts.map +1 -1
  180. package/dist/types/src/hooks/useSafeArea.d.ts.map +1 -1
  181. package/dist/types/src/hooks/useSafeCollisionPadding.d.ts.map +1 -1
  182. package/dist/types/src/hooks/useVisualViewport.d.ts.map +1 -1
  183. package/dist/types/src/playground/Controls.stories.d.ts.map +1 -1
  184. package/dist/types/src/playground/Custom.stories.d.ts +1 -1
  185. package/dist/types/src/playground/Custom.stories.d.ts.map +1 -1
  186. package/dist/types/src/playground/Typography.stories.d.ts.map +1 -1
  187. package/dist/types/src/primitives/Column/Column.d.ts +20 -19
  188. package/dist/types/src/primitives/Column/Column.d.ts.map +1 -1
  189. package/dist/types/src/primitives/Column/Column.stories.d.ts +19 -0
  190. package/dist/types/src/primitives/Column/Column.stories.d.ts.map +1 -1
  191. package/dist/types/src/primitives/Container/Container.d.ts +7 -0
  192. package/dist/types/src/primitives/Container/Container.d.ts.map +1 -0
  193. package/dist/types/src/primitives/Container/Container.stories.d.ts +6 -0
  194. package/dist/types/src/primitives/Container/Container.stories.d.ts.map +1 -0
  195. package/dist/types/src/primitives/Container/index.d.ts +2 -0
  196. package/dist/types/src/primitives/Container/index.d.ts.map +1 -0
  197. package/dist/types/src/primitives/Flex/Flex.d.ts +8 -5
  198. package/dist/types/src/primitives/Flex/Flex.d.ts.map +1 -1
  199. package/dist/types/src/primitives/Flex/Flex.stories.d.ts.map +1 -1
  200. package/dist/types/src/primitives/Grid/Grid.d.ts +6 -5
  201. package/dist/types/src/primitives/Grid/Grid.d.ts.map +1 -1
  202. package/dist/types/src/primitives/Grid/Grid.stories.d.ts.map +1 -1
  203. package/dist/types/src/primitives/Panel/Panel.d.ts +23 -22
  204. package/dist/types/src/primitives/Panel/Panel.d.ts.map +1 -1
  205. package/dist/types/src/primitives/Panel/Panel.stories.d.ts.map +1 -1
  206. package/dist/types/src/primitives/index.d.ts +1 -0
  207. package/dist/types/src/primitives/index.d.ts.map +1 -1
  208. package/dist/types/src/testing/Loading.d.ts +9 -0
  209. package/dist/types/src/testing/Loading.d.ts.map +1 -0
  210. package/dist/types/src/testing/decorators/withLayout.d.ts.map +1 -1
  211. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts.map +1 -1
  212. package/dist/types/src/testing/decorators/withTheme.d.ts +1 -1
  213. package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
  214. package/dist/types/src/testing/index.d.ts +1 -0
  215. package/dist/types/src/testing/index.d.ts.map +1 -1
  216. package/dist/types/src/translations.d.ts +8 -3
  217. package/dist/types/src/translations.d.ts.map +1 -1
  218. package/dist/types/src/util/usePx.d.ts.map +1 -1
  219. package/dist/types/tsconfig.tsbuildinfo +1 -1
  220. package/package.json +29 -26
  221. package/src/components/Avatars/Avatar.stories.tsx +2 -3
  222. package/src/components/Avatars/Avatar.tsx +1 -2
  223. package/src/components/Avatars/AvatarGroup.stories.tsx +0 -1
  224. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +1 -2
  225. package/src/components/Button/Button.stories.tsx +0 -1
  226. package/src/components/Button/Button.tsx +5 -13
  227. package/src/components/Button/IconButton.stories.tsx +6 -4
  228. package/src/components/Button/IconButton.tsx +3 -4
  229. package/src/components/Button/Toggle.stories.tsx +0 -1
  230. package/src/components/Button/Toggle.tsx +4 -4
  231. package/src/components/Button/ToggleGroup.stories.tsx +0 -1
  232. package/src/components/Button/ToggleGroup.tsx +12 -16
  233. package/src/components/Card/Card.stories.tsx +15 -15
  234. package/src/components/Card/Card.tsx +294 -132
  235. package/src/components/Carousel/Carousel.tsx +379 -0
  236. package/src/components/Carousel/index.ts +5 -0
  237. package/src/components/Clipboard/CopyButton.tsx +5 -6
  238. package/src/components/Dialog/AlertDialog.stories.tsx +5 -6
  239. package/src/components/Dialog/AlertDialog.tsx +67 -126
  240. package/src/components/Dialog/Dialog.stories.tsx +64 -9
  241. package/src/components/Dialog/Dialog.tsx +84 -88
  242. package/src/components/ErrorFallback/ErrorFallback.stories.tsx +3 -8
  243. package/src/components/ErrorFallback/ErrorStack.tsx +36 -2
  244. package/src/components/Focus/AUDIT.md +43 -0
  245. package/src/components/Focus/Focus.stories.tsx +230 -0
  246. package/src/components/Focus/Focus.tsx +201 -0
  247. package/src/components/Focus/index.ts +5 -0
  248. package/src/components/Icon/Icon.stories.tsx +43 -13
  249. package/src/components/Icon/Icon.tsx +14 -3
  250. package/src/components/Image/Image.stories.tsx +3 -3
  251. package/src/components/Image/Image.tsx +31 -8
  252. package/src/components/Input/Input.stories.tsx +3 -4
  253. package/src/components/Input/Input.tsx +7 -7
  254. package/src/components/Link/Link.stories.tsx +0 -1
  255. package/src/components/Link/Link.tsx +10 -2
  256. package/src/components/List/List.stories.tsx +3 -4
  257. package/src/components/List/List.tsx +7 -6
  258. package/src/components/List/ListDropIndicator.tsx +0 -1
  259. package/src/components/List/Tree.stories.tsx +2 -3
  260. package/src/components/List/Tree.tsx +0 -1
  261. package/src/components/List/TreeDropIndicator.tsx +1 -1
  262. package/src/components/List/Treegrid.stories.tsx +26 -27
  263. package/src/components/List/Treegrid.tsx +14 -14
  264. package/src/components/Main/Main.stories.tsx +0 -1
  265. package/src/components/Main/Main.tsx +1 -2
  266. package/src/components/MediaPlayer/MediaPlayer.stories.tsx +50 -0
  267. package/src/components/MediaPlayer/MediaPlayer.tsx +153 -0
  268. package/src/components/MediaPlayer/index.ts +5 -0
  269. package/src/components/Menu/ContextMenu.stories.tsx +0 -1
  270. package/src/components/Menu/DropdownMenu.stories.tsx +0 -1
  271. package/src/components/Menu/DropdownMenu.tsx +48 -42
  272. package/src/components/Message/Message.stories.tsx +7 -8
  273. package/src/components/Message/Message.tsx +23 -10
  274. package/src/components/Popover/Popover.stories.tsx +4 -5
  275. package/src/components/Popover/Popover.tsx +42 -42
  276. package/src/components/ScrollArea/ScrollArea.stories.tsx +89 -30
  277. package/src/components/ScrollArea/ScrollArea.tsx +41 -25
  278. package/src/components/ScrollContainer/ScrollContainer.stories.tsx +20 -18
  279. package/src/components/ScrollContainer/ScrollContainer.tsx +199 -92
  280. package/src/components/Select/Select.stories.tsx +5 -6
  281. package/src/components/Separator/Separator.tsx +4 -7
  282. package/src/components/Skeleton/Skeleton.stories.tsx +0 -1
  283. package/src/components/Splitter/Splitter.stories.tsx +29 -29
  284. package/src/components/Splitter/Splitter.tsx +35 -46
  285. package/src/components/Status/Status.stories.tsx +0 -1
  286. package/src/components/Status/Status.tsx +8 -5
  287. package/src/components/Tag/Tag.stories.tsx +0 -1
  288. package/src/components/ThemeProvider/ThemeProvider.stories.tsx +0 -1
  289. package/src/components/ThemeProvider/ThemeProvider.tsx +5 -4
  290. package/src/components/ThemeProvider/index.ts +1 -1
  291. package/src/components/Toast/Toast.stories.tsx +0 -1
  292. package/src/components/Toast/Toast.tsx +16 -31
  293. package/src/components/Toolbar/Toolbar.stories.tsx +0 -1
  294. package/src/components/Toolbar/Toolbar.tsx +36 -48
  295. package/src/components/Tooltip/Tooltip.stories.tsx +7 -8
  296. package/src/components/Tooltip/Tooltip.tsx +29 -29
  297. package/src/components/index.ts +3 -0
  298. package/src/exemplars/generics.stories.tsx +7 -15
  299. package/src/exemplars/slot.stories.tsx +64 -68
  300. package/src/exemplars/tabster.stories.tsx +1 -1
  301. package/src/exemplars/virtualizer.stories.tsx +4 -5
  302. package/src/hooks/index.ts +1 -0
  303. package/src/hooks/useDensityContext.ts +2 -2
  304. package/src/playground/Custom.stories.tsx +6 -9
  305. package/src/primitives/Column/AUDIT.md +148 -0
  306. package/src/primitives/Column/Column.stories.tsx +128 -19
  307. package/src/primitives/Column/Column.tsx +89 -80
  308. package/src/primitives/Container/Container.stories.tsx +29 -0
  309. package/src/primitives/Container/Container.tsx +19 -0
  310. package/src/primitives/Container/index.ts +5 -0
  311. package/src/primitives/Flex/Flex.stories.tsx +0 -1
  312. package/src/primitives/Flex/Flex.tsx +20 -20
  313. package/src/primitives/Grid/Grid.stories.tsx +0 -1
  314. package/src/primitives/Grid/Grid.tsx +23 -36
  315. package/src/primitives/Panel/Panel.stories.tsx +9 -8
  316. package/src/primitives/Panel/Panel.tsx +43 -60
  317. package/src/primitives/index.ts +1 -0
  318. package/src/testing/Loading.tsx +47 -0
  319. package/src/testing/decorators/withLayout.tsx +7 -17
  320. package/src/testing/decorators/withTheme.tsx +10 -7
  321. package/src/testing/index.ts +2 -0
  322. package/src/translations.ts +8 -3
  323. package/src/util/usePx.ts +1 -0
  324. package/dist/lib/browser/chunk-2FKSMWNY.mjs.map +0 -7
  325. package/dist/lib/node-esm/chunk-ZNBLTSHI.mjs.map +0 -7
@@ -5,21 +5,21 @@
5
5
  import { createContextScope } from '@radix-ui/react-context';
6
6
  import { Primitive } from '@radix-ui/react-primitive';
7
7
  import { Slot } from '@radix-ui/react-slot';
8
- import React, { forwardRef } from 'react';
8
+ import React from 'react';
9
9
 
10
- import { type SlottableProps } from '@dxos/ui-types';
10
+ import { composableProps, slottable } from '@dxos/ui-theme';
11
11
 
12
12
  import { useThemeContext } from '../../hooks';
13
+ import { ThemedClassName } from '../../util';
13
14
 
14
15
  type ScopedProps<P> = P & { __scopeSplitter?: any };
15
16
 
16
- // TODO(burdon): Enable resize.
17
17
  // TODO(burdon): Generalize horizontal/vertical and change to start/end.
18
- type Mode = 'upper' | 'lower' | 'both';
18
+ type Mode = 'top' | 'bottom' | 'split';
19
19
 
20
20
  type SplitterContextValue = {
21
21
  mode: Mode;
22
- ratio: number;
22
+ ratio?: number;
23
23
  transition: number;
24
24
  };
25
25
 
@@ -35,33 +35,20 @@ const [SplitterProvider, useSplitterContext] = createSplitterContext<SplitterCon
35
35
 
36
36
  const ROOT_NAME = 'Splitter.Root';
37
37
 
38
- type RootProps = SlottableProps<HTMLDivElement> & Partial<SplitterContextValue>;
39
-
40
- const Root = forwardRef<HTMLDivElement, ScopedProps<RootProps>>(
41
- (
42
- {
43
- __scopeSplitter,
44
- classNames,
45
- className,
46
- asChild,
47
- mode = 'upper',
48
- ratio = 0.5,
49
- transition = 250,
50
- children,
51
- ...rootProps
52
- },
53
- forwardedRef,
54
- ) => {
38
+ type RootOwnProps = Partial<SplitterContextValue>;
39
+
40
+ type RootProps = RootOwnProps;
41
+
42
+ const Root = slottable<HTMLDivElement, RootOwnProps>(
43
+ ({ asChild, mode = 'top', ratio = 0.5, transition = 250, children, ...props }, forwardedRef) => {
55
44
  const { tx } = useThemeContext();
45
+ const { __scopeSplitter, ...rest } = props as ScopedProps<typeof props>;
46
+ const { className, ...restProps } = composableProps(rest);
56
47
  const Comp = asChild ? Slot : Primitive.div;
48
+
57
49
  return (
58
50
  <SplitterProvider scope={__scopeSplitter} mode={mode} ratio={ratio} transition={transition}>
59
- <Comp
60
- role='none'
61
- {...rootProps}
62
- ref={forwardedRef}
63
- className={tx('splitter.root', {}, [className, classNames])}
64
- >
51
+ <Comp {...restProps} ref={forwardedRef} className={tx('splitter.root', {}, className)}>
65
52
  {children}
66
53
  </Comp>
67
54
  </SplitterProvider>
@@ -77,40 +64,42 @@ Root.displayName = ROOT_NAME;
77
64
 
78
65
  const PANEL_NAME = 'Splitter.Panel';
79
66
 
80
- type PanelProps = SlottableProps<HTMLDivElement> & {
81
- position: 'upper' | 'lower';
82
- };
67
+ type PanelOwnProps = ThemedClassName<{
68
+ position: 'top' | 'bottom';
69
+ }>;
70
+
71
+ type PanelProps = PanelOwnProps;
83
72
 
84
- const Panel = forwardRef<HTMLDivElement, ScopedProps<PanelProps>>(
85
- ({ __scopeSplitter, classNames, className, asChild, children, position, style, ...props }, forwardedRef) => {
86
- const { mode, ratio, transition } = useSplitterContext(PANEL_NAME, __scopeSplitter);
73
+ const Panel = slottable<HTMLDivElement, PanelOwnProps>(
74
+ ({ classNames, asChild, children, position, style, ...props }, forwardedRef) => {
87
75
  const { tx } = useThemeContext();
76
+ const { __scopeSplitter, ...rest } = props as ScopedProps<typeof props>;
88
77
  const Comp = asChild ? Slot : Primitive.div;
78
+ const { mode, ratio = 0.5, transition } = useSplitterContext(PANEL_NAME, __scopeSplitter);
79
+ const { className, ...restProps } = composableProps(rest);
89
80
 
90
81
  // Calculate position and height based on mode and ratio.
91
- const isUpper = position === 'upper';
92
- const top = isUpper ? '0%' : mode === 'upper' ? '100%' : mode === 'lower' ? '0%' : `${ratio * 100}%`;
93
-
94
- const height = isUpper
95
- ? mode === 'upper'
82
+ const isTopPanel = position === 'top';
83
+ const topOffset = isTopPanel ? '0%' : mode === 'top' ? '100%' : mode === 'bottom' ? '0%' : `${ratio * 100}%`;
84
+ const height = isTopPanel
85
+ ? mode === 'top'
96
86
  ? '100%'
97
- : mode === 'lower'
87
+ : mode === 'bottom'
98
88
  ? '0%'
99
89
  : `${ratio * 100}%`
100
- : mode === 'lower'
90
+ : mode === 'bottom'
101
91
  ? '100%'
102
- : mode === 'upper'
92
+ : mode === 'top'
103
93
  ? '0%'
104
94
  : `${(1 - ratio) * 100}%`;
105
95
 
106
96
  return (
107
97
  <Comp
108
- role='none'
109
- {...props}
98
+ {...restProps}
110
99
  ref={forwardedRef}
111
- className={tx('splitter.panel', {}, [className, classNames])}
100
+ className={tx('splitter.panel', {}, className)}
112
101
  style={{
113
- top,
102
+ top: topOffset,
114
103
  height,
115
104
  transition: `top ${transition}ms, height ${transition}ms ease-out`,
116
105
  ...style,
@@ -6,7 +6,6 @@ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
6
  import React from 'react';
7
7
 
8
8
  import { withTheme } from '../../testing';
9
-
10
9
  import { Status } from './Status';
11
10
 
12
11
  const meta = {
@@ -4,14 +4,17 @@
4
4
 
5
5
  import React, { type ComponentPropsWithRef, forwardRef } from 'react';
6
6
 
7
+ import { type StatusStyleProps } from '@dxos/ui-theme';
8
+
7
9
  import { useThemeContext } from '../../hooks';
8
10
  import { type ThemedClassName } from '../../util';
9
11
 
10
- type StatusProps = ThemedClassName<ComponentPropsWithRef<'span'>> & {
11
- indeterminate?: boolean;
12
- variant?: 'default' | 'main-bottom';
13
- progress?: number;
14
- };
12
+ type StatusProps = ThemedClassName<
13
+ ComponentPropsWithRef<'span'> &
14
+ StatusStyleProps & {
15
+ progress?: number;
16
+ }
17
+ >;
15
18
 
16
19
  const Status = forwardRef<HTMLSpanElement, StatusProps>(
17
20
  ({ classNames, children, progress = 0, indeterminate, variant, ...props }, forwardedRef) => {
@@ -9,7 +9,6 @@ import { hues } from '@dxos/ui-theme';
9
9
  import { type ChromaticPalette, type MessageValence } from '@dxos/ui-types';
10
10
 
11
11
  import { withLayout, withTheme } from '../../testing';
12
-
13
12
  import { Tag } from './Tag';
14
13
 
15
14
  const palettes = ['neutral', 'success', 'info', 'warning', 'error', ...hues] as (ChromaticPalette | MessageValence)[];
@@ -7,7 +7,6 @@ import React from 'react';
7
7
 
8
8
  import { useThemeContext } from '../../hooks';
9
9
  import { withLayout, withTheme } from '../../testing';
10
-
11
10
  import { ThemeProvider } from './ThemeProvider';
12
11
 
13
12
  const meta = {
@@ -11,7 +11,6 @@ import { type SafeAreaPadding, useSafeArea } from '../../hooks';
11
11
  import { hasIosKeyboard } from '../../util';
12
12
  import { DensityProvider } from '../DensityProvider';
13
13
  import { ElevationProvider } from '../ElevationProvider';
14
-
15
14
  import { TranslationsProvider, type TranslationsProviderProps } from './TranslationsProvider';
16
15
 
17
16
  export type ThemeContextValue = {
@@ -43,7 +42,8 @@ export const ThemeProvider = ({
43
42
  tx = (_path, _styleProps, ..._options) => undefined,
44
43
  themeMode = 'dark',
45
44
  rootDensity = 'fine',
46
- ...rest
45
+ noCache,
46
+ platform,
47
47
  }: ThemeProviderProps) => {
48
48
  useEffect(() => {
49
49
  if (document.defaultView) {
@@ -54,9 +54,10 @@ export const ThemeProvider = ({
54
54
  }, []);
55
55
 
56
56
  const safeAreaPadding = useSafeArea();
57
+ // Destructure all props explicitly so useMemo deps are stable primitives, not a new `rest` object every render.
57
58
  const contextValue = useMemo(
58
- () => ({ tx, themeMode, hasIosKeyboard: hasIosKeyboard(), safeAreaPadding, ...rest }),
59
- [tx, themeMode, safeAreaPadding, rest],
59
+ () => ({ tx, themeMode, hasIosKeyboard: hasIosKeyboard(), safeAreaPadding, noCache, platform }),
60
+ [tx, themeMode, safeAreaPadding, noCache, platform],
60
61
  );
61
62
 
62
63
  return (
@@ -2,7 +2,7 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- export { type Label, isLabel, toLocalizedString } from '@dxos/ui-types';
5
+ export { type Label, isLabel, toLocalizedString } from '@dxos/ui-types/translations';
6
6
 
7
7
  export * from './ThemeProvider';
8
8
  export { useTranslation } from './TranslationsProvider';
@@ -7,7 +7,6 @@ import React, { type ReactNode, useState } from 'react';
7
7
 
8
8
  import { withTheme } from '../../testing';
9
9
  import { Button } from '../Button';
10
-
11
10
  import { Toast } from './Toast';
12
11
 
13
12
  type ActionTriggerProps = { altText: string; trigger: ReactNode };
@@ -4,47 +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
- ToastAction as ToastActionPrimitive,
9
- type ToastActionProps as ToastActionPrimitiveProps,
10
- ToastClose as ToastClosePrimitive,
11
- type ToastCloseProps as ToastClosePrimitiveProps,
12
- ToastDescription as ToastDescriptionPrimitive,
13
- type ToastDescriptionProps as ToastDescriptionPrimitiveProps,
14
- ToastProvider as ToastProviderPrimitive,
15
- type ToastProviderProps as ToastProviderPrimitiveProps,
16
- Root as ToastRootPrimitive,
17
- type ToastProps as ToastRootPrimitiveProps,
18
- ToastTitle as ToastTitlePrimitive,
19
- type ToastTitleProps as ToastTitlePrimitiveProps,
20
- ToastViewport as ToastViewportPrimitive,
21
- type ToastViewportProps as ToastViewportPrimitiveProps,
22
- } from '@radix-ui/react-toast';
7
+ import * as ToastPrimitive from '@radix-ui/react-toast';
23
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 <ToastViewportPrimitive className={tx('toast.viewport', {}, classNames)} ref={forwardedRef} />;
22
+ return <ToastPrimitive.Viewport {...props} className={tx('toast.viewport', {}, classNames)} ref={forwardedRef} />;
38
23
  });
39
24
 
40
- type ToastRootProps = ThemedClassName<ToastRootPrimitiveProps>;
25
+ type ToastRootProps = ThemedClassName<ToastPrimitive.ToastProps>;
41
26
 
42
27
  const ToastRoot = forwardRef<HTMLLIElement, ToastRootProps>(({ classNames, children, ...props }, forwardedRef) => {
43
28
  const { tx } = useThemeContext();
44
29
  return (
45
- <ToastRootPrimitive {...props} className={tx('toast.root', {}, classNames)} ref={forwardedRef}>
30
+ <ToastPrimitive.Root {...props} className={tx('toast.root', {}, classNames)} ref={forwardedRef}>
46
31
  <ElevationProvider elevation='toast'>{children}</ElevationProvider>
47
- </ToastRootPrimitive>
32
+ </ToastPrimitive.Root>
48
33
  );
49
34
  });
50
35
 
@@ -56,22 +41,22 @@ const ToastBody = forwardRef<HTMLDivElement, ToastBodyProps>(({ asChild, classNa
56
41
  return <Comp {...props} className={tx('toast.body', {}, classNames)} ref={forwardedRef} />;
57
42
  });
58
43
 
59
- type ToastTitleProps = ThemedClassName<ToastTitlePrimitiveProps>;
44
+ type ToastTitleProps = ThemedClassName<ToastPrimitive.ToastTitleProps>;
60
45
 
61
46
  const ToastTitle = forwardRef<HTMLHeadingElement, ToastTitleProps>(
62
47
  ({ asChild, classNames, ...props }, forwardedRef) => {
63
48
  const { tx } = useThemeContext();
64
- const Comp = asChild ? Slot : ToastTitlePrimitive;
49
+ const Comp = asChild ? Slot : ToastPrimitive.Title;
65
50
  return <Comp {...props} className={tx('toast.title', {}, classNames)} ref={forwardedRef} />;
66
51
  },
67
52
  );
68
53
 
69
- type ToastDescriptionProps = ThemedClassName<ToastDescriptionPrimitiveProps>;
54
+ type ToastDescriptionProps = ThemedClassName<ToastPrimitive.ToastDescriptionProps>;
70
55
 
71
56
  const ToastDescription = forwardRef<HTMLParagraphElement, ToastDescriptionProps>(
72
57
  ({ asChild, classNames, ...props }, forwardedRef) => {
73
58
  const { tx } = useThemeContext();
74
- const Comp = asChild ? Slot : ToastDescriptionPrimitive;
59
+ const Comp = asChild ? Slot : ToastPrimitive.Description;
75
60
  return <Comp {...props} className={tx('toast.description', {}, classNames)} ref={forwardedRef} />;
76
61
  },
77
62
  );
@@ -86,13 +71,13 @@ const ToastActions = forwardRef<HTMLDivElement, ToastActionsProps>(
86
71
  },
87
72
  );
88
73
 
89
- type ToastActionProps = ToastActionPrimitiveProps;
74
+ type ToastActionProps = ToastPrimitive.ToastActionProps;
90
75
 
91
- const ToastAction: FunctionComponent<ToastActionProps> = ToastActionPrimitive;
76
+ const ToastAction: FunctionComponent<ToastActionProps> = ToastPrimitive.Action;
92
77
 
93
- type ToastCloseProps = ToastClosePrimitiveProps;
78
+ type ToastCloseProps = ToastPrimitive.ToastCloseProps;
94
79
 
95
- const ToastClose: FunctionComponent<ToastCloseProps> = ToastClosePrimitive;
80
+ const ToastClose: FunctionComponent<ToastCloseProps> = ToastPrimitive.Close;
96
81
 
97
82
  export const Toast = {
98
83
  Provider: ToastProvider,
@@ -9,7 +9,6 @@ import { withTheme } from '../../testing';
9
9
  import { Toggle } from '../Button';
10
10
  import { Icon } from '../Icon';
11
11
  import { Select } from '../Select';
12
-
13
12
  import { Toolbar } from './Toolbar';
14
13
 
15
14
  type StorybookToolbarProps = {};
@@ -6,15 +6,15 @@ import { Primitive } from '@radix-ui/react-primitive';
6
6
  import { Slot } from '@radix-ui/react-slot';
7
7
  import type { ToggleGroupItemProps as ToggleGroupItemPrimitiveProps } from '@radix-ui/react-toggle-group';
8
8
  import * as ToolbarPrimitive from '@radix-ui/react-toolbar';
9
- import React, { Fragment, forwardRef } from 'react';
9
+ import React, { forwardRef } from 'react';
10
10
  import { useTranslation } from 'react-i18next';
11
11
 
12
- import { type ToolbarStyleProps } from '@dxos/ui-theme';
12
+ import { composable, composableProps, slottable, type ToolbarStyleProps } from '@dxos/ui-theme';
13
13
  import { type SlottableProps } from '@dxos/ui-types';
14
14
 
15
+ import { translationKey } from '#translations';
16
+
15
17
  import { useThemeContext } from '../../hooks';
16
- import { translationKey } from '../../translations';
17
- import { type ThemedClassName } from '../../util';
18
18
  import {
19
19
  Button,
20
20
  ButtonGroup,
@@ -34,36 +34,24 @@ import { Separator, type SeparatorProps } from '../Separator';
34
34
  // Root
35
35
  //
36
36
 
37
- type ToolbarRootProps = ThemedClassName<
38
- ToolbarPrimitive.ToolbarProps &
39
- ToolbarStyleProps & {
40
- textBlockWidth?: boolean;
41
- }
42
- >;
43
-
44
- // TODO(burdon): Implement asChild property.
45
- const ToolbarRoot = forwardRef<HTMLDivElement, ToolbarRootProps>(
46
- (
47
- { classNames, children, density, disabled, layoutManaged, textBlockWidth: textBlockWidthProp, ...props },
48
- forwardedRef,
49
- ) => {
37
+ type ToolbarRootProps = ToolbarPrimitive.ToolbarProps & ToolbarStyleProps;
38
+
39
+ const ToolbarRoot = composable<HTMLDivElement, ToolbarRootProps>(
40
+ ({ children, density, disabled, layoutManaged, orientation, ...props }, forwardedRef) => {
41
+ const { className, role, ...rest } = composableProps(props);
50
42
  const { tx } = useThemeContext();
51
- const InnerRoot = textBlockWidthProp ? 'div' : Fragment;
52
- const innerRootProps = textBlockWidthProp
53
- ? {
54
- role: 'none',
55
- className: tx('toolbar.inner', { layoutManaged }, classNames),
56
- }
57
- : {};
58
43
 
59
44
  return (
60
45
  <ToolbarPrimitive.Root
61
- {...props}
62
- data-arrow-keys={props.orientation === 'vertical' ? 'up down' : 'left right'}
63
- className={tx('toolbar.root', { density, disabled, 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)}
64
52
  ref={forwardedRef}
65
53
  >
66
- <InnerRoot {...innerRootProps}>{children}</InnerRoot>
54
+ {children}
67
55
  </ToolbarPrimitive.Root>
68
56
  );
69
57
  },
@@ -73,19 +61,18 @@ const ToolbarRoot = forwardRef<HTMLDivElement, ToolbarRootProps>(
73
61
  // Text
74
62
  //
75
63
 
76
- type ToolbarTextProps = SlottableProps<HTMLDivElement>;
64
+ type ToolbarTextProps = SlottableProps;
77
65
 
78
- const ToolbarText = forwardRef<HTMLDivElement, ToolbarTextProps>(
79
- ({ classNames, className, asChild, children, ...props }, forwardedRef) => {
80
- const { tx } = useThemeContext();
81
- const Comp = asChild ? Slot : Primitive.div;
82
- return (
83
- <Comp {...props} className={tx('toolbar.text', {}, [className, classNames])} ref={forwardedRef}>
84
- {children}
85
- </Comp>
86
- );
87
- },
88
- );
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
+ });
89
76
 
90
77
  //
91
78
  // Button
@@ -174,7 +161,7 @@ const ToolbarToggleGroupItem = forwardRef<HTMLButtonElement, ToolbarToggleGroupI
174
161
  type ToolbarToggleGroupIconItemProps = Omit<ToggleGroupItemPrimitiveProps, 'className'> & IconButtonProps;
175
162
 
176
163
  const ToolbarToggleGroupIconItem = forwardRef<HTMLButtonElement, ToolbarToggleGroupIconItemProps>(
177
- ({ variant, density, elevation, classNames, icon, label, iconOnly, ...props }, forwardedRef) => {
164
+ ({ variant, density, elevation, classNames, icon, label, iconOnly, iconClassNames, ...props }, forwardedRef) => {
178
165
  return (
179
166
  <ToolbarPrimitive.ToolbarToggleItem {...props} asChild>
180
167
  <IconButton
@@ -186,6 +173,7 @@ const ToolbarToggleGroupIconItem = forwardRef<HTMLButtonElement, ToolbarToggleGr
186
173
  icon,
187
174
  label,
188
175
  iconOnly,
176
+ iconClassNames,
189
177
  }}
190
178
  ref={forwardedRef}
191
179
  />
@@ -204,7 +192,7 @@ const ToolbarSeparator = forwardRef<HTMLDivElement, ToolbarSeparatorProps>(
204
192
  ({ variant = 'gap', ...props }, forwardedRef) => {
205
193
  return variant === 'line' ? (
206
194
  <ToolbarPrimitive.Separator asChild>
207
- <Separator {...props} ref={forwardedRef} />
195
+ <Separator orientation='vertical' {...props} ref={forwardedRef} />
208
196
  </ToolbarPrimitive.Separator>
209
197
  ) : (
210
198
  <ToolbarPrimitive.Separator className='grow' ref={forwardedRef} />
@@ -224,13 +212,13 @@ const ToolbarDragHandle = forwardRef<HTMLButtonElement, ToolbarDragHandleProps>(
224
212
  return (
225
213
  <ToolbarIconButton
226
214
  data-testid={testId}
215
+ tabIndex={-1}
227
216
  noTooltip
228
217
  iconOnly
229
218
  icon='ph--dots-six-vertical--regular'
230
219
  variant='ghost'
231
- label={label ?? t('toolbar drag handle label')}
232
- classNames='cursor-pointer'
233
- size={5}
220
+ label={label ?? t('toolbar-drag-handle.label')}
221
+ classNames='dx-focus-ring-none cursor-pointer'
234
222
  disabled={!forwardedRef}
235
223
  ref={forwardedRef}
236
224
  />
@@ -247,14 +235,14 @@ type ToolbarCloseIconButtonProps = { onClick?: () => void; label?: string };
247
235
  const ToolbarCloseIconButton = forwardRef<HTMLButtonElement, ToolbarCloseIconButtonProps>(
248
236
  ({ onClick, label }, forwardedRef) => {
249
237
  const { t } = useTranslation(translationKey);
238
+
250
239
  return (
251
240
  <ToolbarIconButton
252
241
  iconOnly
253
242
  icon='ph--x--regular'
254
243
  variant='ghost'
255
- label={label ?? t('toolbar close label')}
244
+ label={label ?? t('toolbar-close.label')}
256
245
  classNames='cursor-pointer'
257
- size={5}
258
246
  onClick={onClick}
259
247
  ref={forwardedRef}
260
248
  />
@@ -287,7 +275,7 @@ const ToolbarMenu = <T extends any | void = void>({ context, items }: ToolbarMen
287
275
  iconOnly
288
276
  variant='ghost'
289
277
  icon='ph--dots-three-vertical--regular'
290
- label={t('toolbar menu label')}
278
+ label={t('toolbar-menu.label')}
291
279
  />
292
280
  </DropdownMenu.Trigger>
293
281
  {(items?.length ?? 0) > 0 && (
@@ -5,22 +5,21 @@
5
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
10
  import { withTheme } from '../../testing';
11
11
  import { Button } from '../Button';
12
-
13
12
  import { Tooltip } from './Tooltip';
14
13
 
15
- type StoryProps = {
14
+ type DefaultStoryProps = {
16
15
  tooltips: { label: string; content: string }[];
17
16
  defaultOpen?: boolean;
18
17
  };
19
18
 
20
- const DefaultStory = ({ tooltips, defaultOpen }: StoryProps) => {
19
+ const DefaultStory = ({ tooltips, defaultOpen }: DefaultStoryProps) => {
21
20
  return (
22
21
  <Tooltip.Provider defaultOpen={defaultOpen}>
23
- <div role='none' className='w-32'>
22
+ <div className='w-32'>
24
23
  {tooltips.map(({ label, content }, i) => (
25
24
  <Tooltip.Trigger asChild key={i} content={content} side='right'>
26
25
  <Button classNames='block w-full'>{label}</Button>
@@ -74,10 +73,10 @@ export const DefaultOpen: Story = {
74
73
  export const StressTest: Story = {
75
74
  args: {
76
75
  defaultOpen: true,
77
- tooltips: faker.helpers.multiple(
76
+ tooltips: random.helpers.multiple(
78
77
  () => ({
79
- label: faker.lorem.words(2),
80
- content: faker.lorem.words(5),
78
+ label: random.lorem.words(2),
79
+ content: random.lorem.words(5),
81
80
  }),
82
81
  { count: 32 },
83
82
  ),