@dxos/react-ui 0.8.4-staging.ac66bdf99f → 0.9.0

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/LICENSE +102 -5
  2. package/README.md +1 -1
  3. package/dist/lib/browser/chunk-5SPBSIWS.mjs +33 -0
  4. package/dist/lib/browser/chunk-5SPBSIWS.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-7JFD5ZHZ.mjs +1612 -0
  6. package/dist/lib/browser/chunk-7JFD5ZHZ.mjs.map +7 -0
  7. package/dist/lib/browser/index.mjs +3039 -1891
  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 +10 -13
  11. package/dist/lib/browser/testing/index.mjs.map +3 -3
  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-FPVTVXND.mjs +35 -0
  15. package/dist/lib/node-esm/chunk-FPVTVXND.mjs.map +7 -0
  16. package/dist/lib/node-esm/chunk-TTEL2FP2.mjs +1614 -0
  17. package/dist/lib/node-esm/chunk-TTEL2FP2.mjs.map +7 -0
  18. package/dist/lib/node-esm/index.mjs +3039 -1891
  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 +10 -13
  22. package/dist/lib/node-esm/testing/index.mjs.map +3 -3
  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.map +1 -1
  26. package/dist/types/src/components/Avatars/Avatar.stories.d.ts.map +1 -1
  27. package/dist/types/src/components/Avatars/Avatar.theme.d.ts +11 -0
  28. package/dist/types/src/components/Avatars/Avatar.theme.d.ts.map +1 -0
  29. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts.map +1 -1
  30. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts +5 -1
  31. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
  32. package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts.map +1 -1
  33. package/dist/types/src/components/Breadcrumb/Breadcrumb.theme.d.ts +4 -0
  34. package/dist/types/src/components/Breadcrumb/Breadcrumb.theme.d.ts.map +1 -0
  35. package/dist/types/src/components/Button/Button.d.ts +1 -1
  36. package/dist/types/src/components/Button/Button.d.ts.map +1 -1
  37. package/dist/types/src/components/Button/Button.stories.d.ts +1 -1
  38. package/dist/types/src/components/Button/Button.stories.d.ts.map +1 -1
  39. package/dist/types/src/components/Button/Button.theme.d.ts +11 -0
  40. package/dist/types/src/components/Button/Button.theme.d.ts.map +1 -0
  41. package/dist/types/src/components/Button/IconButton.d.ts +1 -0
  42. package/dist/types/src/components/Button/IconButton.d.ts.map +1 -1
  43. package/dist/types/src/components/Button/IconButton.stories.d.ts +1 -0
  44. package/dist/types/src/components/Button/IconButton.stories.d.ts.map +1 -1
  45. package/dist/types/src/components/Button/IconButton.theme.d.ts +8 -0
  46. package/dist/types/src/components/Button/IconButton.theme.d.ts.map +1 -0
  47. package/dist/types/src/components/Button/Toggle.stories.d.ts.map +1 -1
  48. package/dist/types/src/components/Button/ToggleGroup.d.ts +2 -2
  49. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts +2 -2
  50. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts.map +1 -1
  51. package/dist/types/src/components/Calendar/Calendar.d.ts +33 -0
  52. package/dist/types/src/components/Calendar/Calendar.d.ts.map +1 -0
  53. package/dist/types/src/components/Calendar/Calendar.stories.d.ts +9 -0
  54. package/dist/types/src/components/Calendar/Calendar.stories.d.ts.map +1 -0
  55. package/dist/types/src/components/Calendar/Calendar.theme.d.ts +4 -0
  56. package/dist/types/src/components/Calendar/Calendar.theme.d.ts.map +1 -0
  57. package/dist/types/src/components/Calendar/index.d.ts +2 -0
  58. package/dist/types/src/components/Calendar/index.d.ts.map +1 -0
  59. package/dist/types/src/components/Card/Card.d.ts +63 -57
  60. package/dist/types/src/components/Card/Card.d.ts.map +1 -1
  61. package/dist/types/src/components/Card/Card.stories.d.ts +1 -0
  62. package/dist/types/src/components/Card/Card.stories.d.ts.map +1 -1
  63. package/dist/types/src/components/Card/Card.theme.d.ts +12 -0
  64. package/dist/types/src/components/Card/Card.theme.d.ts.map +1 -0
  65. package/dist/types/src/components/Carousel/Carousel.d.ts +106 -0
  66. package/dist/types/src/components/Carousel/Carousel.d.ts.map +1 -0
  67. package/dist/types/src/components/Carousel/Carousel.stories.d.ts +14 -0
  68. package/dist/types/src/components/Carousel/Carousel.stories.d.ts.map +1 -0
  69. package/dist/types/src/components/Carousel/index.d.ts +2 -0
  70. package/dist/types/src/components/Carousel/index.d.ts.map +1 -0
  71. package/dist/types/src/components/Clipboard/ClipboardProvider.d.ts.map +1 -1
  72. package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -1
  73. package/dist/types/src/components/Clipboard/index.d.ts +1 -1
  74. package/dist/types/src/components/Clipboard/index.d.ts.map +1 -1
  75. package/dist/types/src/{primitives → components}/Column/Column.d.ts +4 -4
  76. package/dist/types/src/components/Column/Column.d.ts.map +1 -0
  77. package/dist/types/src/components/Column/Column.stories.d.ts.map +1 -0
  78. package/dist/types/src/components/Column/Column.theme.d.ts +9 -0
  79. package/dist/types/src/components/Column/Column.theme.d.ts.map +1 -0
  80. package/dist/types/src/components/Column/index.d.ts +3 -0
  81. package/dist/types/src/components/Column/index.d.ts.map +1 -0
  82. package/dist/types/src/components/Column/withColumn.d.ts +21 -0
  83. package/dist/types/src/components/Column/withColumn.d.ts.map +1 -0
  84. package/dist/types/src/components/DatePicker/DatePicker.d.ts +72 -0
  85. package/dist/types/src/components/DatePicker/DatePicker.d.ts.map +1 -0
  86. package/dist/types/src/components/DatePicker/DatePicker.stories.d.ts +10 -0
  87. package/dist/types/src/components/DatePicker/DatePicker.stories.d.ts.map +1 -0
  88. package/dist/types/src/components/DatePicker/DatePicker.theme.d.ts +6 -0
  89. package/dist/types/src/components/DatePicker/DatePicker.theme.d.ts.map +1 -0
  90. package/dist/types/src/components/DatePicker/index.d.ts +2 -0
  91. package/dist/types/src/components/DatePicker/index.d.ts.map +1 -0
  92. package/dist/types/src/components/Dialog/AlertDialog.d.ts +20 -20
  93. package/dist/types/src/components/Dialog/AlertDialog.d.ts.map +1 -1
  94. package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts.map +1 -1
  95. package/dist/types/src/components/Dialog/Dialog.d.ts +21 -19
  96. package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -1
  97. package/dist/types/src/components/Dialog/Dialog.stories.d.ts.map +1 -1
  98. package/dist/types/src/components/Dialog/Dialog.theme.d.ts +10 -0
  99. package/dist/types/src/components/Dialog/Dialog.theme.d.ts.map +1 -0
  100. package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts.map +1 -1
  101. package/dist/types/src/components/ErrorFallback/ErrorFallback.stories.d.ts.map +1 -1
  102. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts.map +1 -1
  103. package/dist/types/src/components/ErrorFallback/ThrowError.d.ts.map +1 -1
  104. package/dist/types/src/components/Focus/Focus.d.ts +2 -2
  105. package/dist/types/src/components/Focus/Focus.d.ts.map +1 -1
  106. package/dist/types/src/components/Focus/Focus.stories.d.ts.map +1 -1
  107. package/dist/types/src/components/Focus/Focus.theme.d.ts +6 -0
  108. package/dist/types/src/components/Focus/Focus.theme.d.ts.map +1 -0
  109. package/dist/types/src/components/Icon/Icon.d.ts +1 -0
  110. package/dist/types/src/components/Icon/Icon.d.ts.map +1 -1
  111. package/dist/types/src/components/Icon/Icon.stories.d.ts +1 -1
  112. package/dist/types/src/components/Icon/Icon.stories.d.ts.map +1 -1
  113. package/dist/types/src/components/Icon/Icon.theme.d.ts +11 -0
  114. package/dist/types/src/components/Icon/Icon.theme.d.ts.map +1 -0
  115. package/dist/types/src/components/Icon/IconBlock.d.ts +15 -0
  116. package/dist/types/src/components/Icon/IconBlock.d.ts.map +1 -0
  117. package/dist/types/src/components/Icon/index.d.ts +1 -0
  118. package/dist/types/src/components/Icon/index.d.ts.map +1 -1
  119. package/dist/types/src/components/Image/Image.d.ts +8 -1
  120. package/dist/types/src/components/Image/Image.d.ts.map +1 -1
  121. package/dist/types/src/components/Image/Image.stories.d.ts +3 -2
  122. package/dist/types/src/components/Image/Image.stories.d.ts.map +1 -1
  123. package/dist/types/src/components/Input/Input.d.ts +88 -13
  124. package/dist/types/src/components/Input/Input.d.ts.map +1 -1
  125. package/dist/types/src/components/Input/Input.stories.d.ts +14 -3
  126. package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
  127. package/dist/types/src/components/Input/Input.theme.d.ts +115 -0
  128. package/dist/types/src/components/Input/Input.theme.d.ts.map +1 -0
  129. package/dist/types/src/components/Input/SegmentedInput.d.ts +79 -0
  130. package/dist/types/src/components/Input/SegmentedInput.d.ts.map +1 -0
  131. package/dist/types/src/components/Input/constants.d.ts +2 -0
  132. package/dist/types/src/components/Input/constants.d.ts.map +1 -0
  133. package/dist/types/src/components/Input/index.d.ts +2 -0
  134. package/dist/types/src/components/Input/index.d.ts.map +1 -1
  135. package/dist/types/src/components/Link/Link.d.ts.map +1 -1
  136. package/dist/types/src/components/Link/Link.stories.d.ts.map +1 -1
  137. package/dist/types/src/components/Link/Link.theme.d.ts +6 -0
  138. package/dist/types/src/components/Link/Link.theme.d.ts.map +1 -0
  139. package/dist/types/src/components/List/List.d.ts +2 -2
  140. package/dist/types/src/components/List/List.d.ts.map +1 -1
  141. package/dist/types/src/components/List/List.stories.d.ts +1 -1
  142. package/dist/types/src/components/List/List.stories.d.ts.map +1 -1
  143. package/dist/types/src/components/List/List.theme.d.ts +7 -0
  144. package/dist/types/src/components/List/List.theme.d.ts.map +1 -0
  145. package/dist/types/src/components/List/ListDropIndicator.d.ts.map +1 -1
  146. package/dist/types/src/components/List/Tree.d.ts +2 -2
  147. package/dist/types/src/components/List/Tree.d.ts.map +1 -1
  148. package/dist/types/src/components/List/Tree.stories.d.ts.map +1 -1
  149. package/dist/types/src/components/List/TreeDropIndicator.d.ts.map +1 -1
  150. package/dist/types/src/components/List/Treegrid.d.ts +2 -2
  151. package/dist/types/src/components/List/Treegrid.d.ts.map +1 -1
  152. package/dist/types/src/components/List/Treegrid.stories.d.ts.map +1 -1
  153. package/dist/types/src/components/List/Treegrid.theme.d.ts +7 -0
  154. package/dist/types/src/components/List/Treegrid.theme.d.ts.map +1 -0
  155. package/dist/types/src/components/Main/Main.d.ts +9 -5
  156. package/dist/types/src/components/Main/Main.d.ts.map +1 -1
  157. package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
  158. package/dist/types/src/components/Main/Main.theme.d.ts +20 -0
  159. package/dist/types/src/components/Main/Main.theme.d.ts.map +1 -0
  160. package/dist/types/src/components/Main/constants.d.ts +3 -0
  161. package/dist/types/src/components/Main/constants.d.ts.map +1 -0
  162. package/dist/types/src/components/Main/index.d.ts +1 -0
  163. package/dist/types/src/components/Main/index.d.ts.map +1 -1
  164. package/dist/types/src/components/Main/useSwipeToDismiss.d.ts.map +1 -1
  165. package/dist/types/src/components/MediaPlayer/MediaPlayer.d.ts +47 -0
  166. package/dist/types/src/components/MediaPlayer/MediaPlayer.d.ts.map +1 -0
  167. package/dist/types/src/components/MediaPlayer/MediaPlayer.stories.d.ts +16 -0
  168. package/dist/types/src/components/MediaPlayer/MediaPlayer.stories.d.ts.map +1 -0
  169. package/dist/types/src/components/MediaPlayer/index.d.ts +2 -0
  170. package/dist/types/src/components/MediaPlayer/index.d.ts.map +1 -0
  171. package/dist/types/src/components/Menu/ContextMenu.d.ts.map +1 -1
  172. package/dist/types/src/components/Menu/ContextMenu.stories.d.ts.map +1 -1
  173. package/dist/types/src/components/Menu/DropdownMenu.d.ts +11 -3
  174. package/dist/types/src/components/Menu/DropdownMenu.d.ts.map +1 -1
  175. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts.map +1 -1
  176. package/dist/types/src/components/Menu/Menu.theme.d.ts +7 -0
  177. package/dist/types/src/components/Menu/Menu.theme.d.ts.map +1 -0
  178. package/dist/types/src/components/Message/Message.d.ts +3 -3
  179. package/dist/types/src/components/Message/Message.d.ts.map +1 -1
  180. package/dist/types/src/components/Message/Message.stories.d.ts +5 -1
  181. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
  182. package/dist/types/src/components/Message/Message.theme.d.ts +7 -0
  183. package/dist/types/src/components/Message/Message.theme.d.ts.map +1 -0
  184. package/dist/types/src/{primitives → components}/Panel/Panel.d.ts +5 -5
  185. package/dist/types/src/components/Panel/Panel.d.ts.map +1 -0
  186. package/dist/types/src/components/Panel/Panel.stories.d.ts.map +1 -0
  187. package/dist/types/src/components/Panel/Panel.theme.d.ts +13 -0
  188. package/dist/types/src/components/Panel/Panel.theme.d.ts.map +1 -0
  189. package/dist/types/src/components/Panel/index.d.ts.map +1 -0
  190. package/dist/types/src/components/Popover/Popover.d.ts +10 -2
  191. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  192. package/dist/types/src/components/Popover/Popover.stories.d.ts.map +1 -1
  193. package/dist/types/src/components/Popover/Popover.theme.d.ts +8 -0
  194. package/dist/types/src/components/Popover/Popover.theme.d.ts.map +1 -0
  195. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +2 -2
  196. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  197. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +2 -2
  198. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
  199. package/dist/types/src/components/ScrollArea/ScrollArea.theme.d.ts +17 -0
  200. package/dist/types/src/components/ScrollArea/ScrollArea.theme.d.ts.map +1 -0
  201. package/dist/types/src/components/ScrollArea/index.d.ts +1 -0
  202. package/dist/types/src/components/ScrollArea/index.d.ts.map +1 -1
  203. package/dist/types/src/components/ScrollArea/scrollbar.d.ts +18 -0
  204. package/dist/types/src/components/ScrollArea/scrollbar.d.ts.map +1 -0
  205. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +20 -18
  206. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -1
  207. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts.map +1 -1
  208. package/dist/types/src/components/Select/Select.d.ts.map +1 -1
  209. package/dist/types/src/components/Select/Select.stories.d.ts.map +1 -1
  210. package/dist/types/src/components/Select/Select.theme.d.ts +6 -0
  211. package/dist/types/src/components/Select/Select.theme.d.ts.map +1 -0
  212. package/dist/types/src/components/Separator/Separator.theme.d.ts +7 -0
  213. package/dist/types/src/components/Separator/Separator.theme.d.ts.map +1 -0
  214. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts.map +1 -1
  215. package/dist/types/src/components/Skeleton/Skeleton.theme.d.ts +6 -0
  216. package/dist/types/src/components/Skeleton/Skeleton.theme.d.ts.map +1 -0
  217. package/dist/types/src/components/Splitter/Splitter.d.ts +6 -8
  218. package/dist/types/src/components/Splitter/Splitter.d.ts.map +1 -1
  219. package/dist/types/src/components/Splitter/Splitter.stories.d.ts.map +1 -1
  220. package/dist/types/src/components/Splitter/Splitter.theme.d.ts +4 -0
  221. package/dist/types/src/components/Splitter/Splitter.theme.d.ts.map +1 -0
  222. package/dist/types/src/components/Status/Status.d.ts +1 -1
  223. package/dist/types/src/components/Status/Status.d.ts.map +1 -1
  224. package/dist/types/src/components/Status/Status.stories.d.ts.map +1 -1
  225. package/dist/types/src/components/Status/Status.theme.d.ts +7 -0
  226. package/dist/types/src/components/Status/Status.theme.d.ts.map +1 -0
  227. package/dist/types/src/components/Tag/Tag.stories.d.ts.map +1 -1
  228. package/dist/types/src/components/Tag/Tag.theme.d.ts +6 -0
  229. package/dist/types/src/components/Tag/Tag.theme.d.ts.map +1 -0
  230. package/dist/types/src/components/Toast/Toast.d.ts +12 -9
  231. package/dist/types/src/components/Toast/Toast.d.ts.map +1 -1
  232. package/dist/types/src/components/Toast/Toast.stories.d.ts +5 -2
  233. package/dist/types/src/components/Toast/Toast.stories.d.ts.map +1 -1
  234. package/dist/types/src/components/Toast/Toast.theme.d.ts +4 -0
  235. package/dist/types/src/components/Toast/Toast.theme.d.ts.map +1 -0
  236. package/dist/types/src/components/Toolbar/Toolbar.d.ts +24 -12
  237. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  238. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
  239. package/dist/types/src/components/Toolbar/Toolbar.theme.d.ts +8 -0
  240. package/dist/types/src/components/Toolbar/Toolbar.theme.d.ts.map +1 -0
  241. package/dist/types/src/components/Tooltip/Tooltip.d.ts +8 -8
  242. package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
  243. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
  244. package/dist/types/src/components/Tooltip/Tooltip.theme.d.ts +6 -0
  245. package/dist/types/src/components/Tooltip/Tooltip.theme.d.ts.map +1 -0
  246. package/dist/types/src/components/Tooltip/index.d.ts +1 -0
  247. package/dist/types/src/components/Tooltip/index.d.ts.map +1 -1
  248. package/dist/types/src/components/Tooltip/tooltipContent.d.ts +4 -0
  249. package/dist/types/src/components/Tooltip/tooltipContent.d.ts.map +1 -0
  250. package/dist/types/src/components/index.d.ts +7 -4
  251. package/dist/types/src/components/index.d.ts.map +1 -1
  252. package/dist/types/src/exemplars/generics.stories.d.ts +1 -1
  253. package/dist/types/src/exemplars/generics.stories.d.ts.map +1 -1
  254. package/dist/types/src/exemplars/slot.stories.d.ts.map +1 -1
  255. package/dist/types/src/exemplars/tabster.stories.d.ts.map +1 -1
  256. package/dist/types/src/exemplars/virtualizer.stories.d.ts.map +1 -1
  257. package/dist/types/src/hooks/useDensityContext.d.ts.map +1 -1
  258. package/dist/types/src/hooks/useElevationContext.d.ts.map +1 -1
  259. package/dist/types/src/hooks/useIconHref.d.ts.map +1 -1
  260. package/dist/types/src/hooks/useSafeArea.d.ts.map +1 -1
  261. package/dist/types/src/hooks/useSafeCollisionPadding.d.ts.map +1 -1
  262. package/dist/types/src/hooks/useTranslationsContext.d.ts +1 -1
  263. package/dist/types/src/hooks/useVisualViewport.d.ts.map +1 -1
  264. package/dist/types/src/index.d.ts +1 -0
  265. package/dist/types/src/index.d.ts.map +1 -1
  266. package/dist/types/src/playground/Controls.stories.d.ts.map +1 -1
  267. package/dist/types/src/playground/Custom.stories.d.ts +1 -1
  268. package/dist/types/src/playground/Custom.stories.d.ts.map +1 -1
  269. package/dist/types/src/playground/Typography.stories.d.ts.map +1 -1
  270. package/dist/types/src/primitives/Container/Container.d.ts +1 -1
  271. package/dist/types/src/primitives/Container/Container.d.ts.map +1 -1
  272. package/dist/types/src/primitives/Container/Container.stories.d.ts.map +1 -1
  273. package/dist/types/src/{components → primitives}/DensityProvider/DensityProvider.d.ts.map +1 -1
  274. package/dist/types/src/primitives/DensityProvider/index.d.ts.map +1 -0
  275. package/dist/types/src/{components → primitives}/ElevationProvider/ElevationProvider.d.ts.map +1 -1
  276. package/dist/types/src/primitives/ElevationProvider/index.d.ts.map +1 -0
  277. package/dist/types/src/primitives/Flex/Flex.d.ts +1 -1
  278. package/dist/types/src/primitives/Flex/Flex.d.ts.map +1 -1
  279. package/dist/types/src/primitives/Flex/Flex.stories.d.ts.map +1 -1
  280. package/dist/types/src/primitives/Grid/Grid.d.ts +1 -1
  281. package/dist/types/src/primitives/Grid/Grid.d.ts.map +1 -1
  282. package/dist/types/src/primitives/Grid/Grid.stories.d.ts.map +1 -1
  283. package/dist/types/src/{components → primitives}/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  284. package/dist/types/src/primitives/ThemeProvider/ThemeProvider.stories.d.ts.map +1 -0
  285. package/dist/types/src/primitives/ThemeProvider/TranslationsProvider.d.ts +128 -0
  286. package/dist/types/src/primitives/ThemeProvider/TranslationsProvider.d.ts.map +1 -0
  287. package/dist/types/src/primitives/ThemeProvider/index.d.ts +4 -0
  288. package/dist/types/src/primitives/ThemeProvider/index.d.ts.map +1 -0
  289. package/dist/types/src/primitives/index.d.ts +3 -2
  290. package/dist/types/src/primitives/index.d.ts.map +1 -1
  291. package/dist/types/src/testing/Loading.d.ts.map +1 -1
  292. package/dist/types/src/testing/decorators/withLayout.d.ts.map +1 -1
  293. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts.map +1 -1
  294. package/dist/types/src/testing/decorators/withTheme.d.ts +5 -1
  295. package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
  296. package/dist/types/src/theme/bindTheme.d.ts +3 -0
  297. package/dist/types/src/theme/bindTheme.d.ts.map +1 -0
  298. package/dist/types/src/theme/defaultTheme.d.ts +4 -0
  299. package/dist/types/src/theme/defaultTheme.d.ts.map +1 -0
  300. package/dist/types/src/theme/index.d.ts +31 -0
  301. package/dist/types/src/theme/index.d.ts.map +1 -0
  302. package/dist/types/src/translations.d.ts +17 -3
  303. package/dist/types/src/translations.d.ts.map +1 -1
  304. package/dist/types/src/util/index.d.ts +2 -1
  305. package/dist/types/src/util/index.d.ts.map +1 -1
  306. package/dist/types/src/util/mobile.d.ts +5 -0
  307. package/dist/types/src/util/mobile.d.ts.map +1 -0
  308. package/dist/types/src/util/slots.d.ts +57 -0
  309. package/dist/types/src/util/slots.d.ts.map +1 -0
  310. package/dist/types/src/util/usePx.d.ts.map +1 -1
  311. package/dist/types/tsconfig.tsbuildinfo +1 -1
  312. package/package.json +29 -25
  313. package/src/components/Avatars/Avatar.theme.ts +93 -0
  314. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +1 -1
  315. package/src/components/Breadcrumb/Breadcrumb.theme.ts +26 -0
  316. package/src/components/Breadcrumb/Breadcrumb.tsx +14 -2
  317. package/src/components/Button/Button.theme.ts +31 -0
  318. package/src/components/Button/Button.tsx +2 -2
  319. package/src/components/Button/IconButton.stories.tsx +51 -3
  320. package/src/components/Button/IconButton.theme.ts +21 -0
  321. package/src/components/Button/IconButton.tsx +3 -2
  322. package/src/components/Calendar/Calendar.stories.tsx +43 -0
  323. package/src/components/Calendar/Calendar.theme.ts +74 -0
  324. package/src/components/Calendar/Calendar.tsx +196 -0
  325. package/src/components/Calendar/index.ts +5 -0
  326. package/src/components/Card/Card.stories.tsx +43 -22
  327. package/src/components/Card/Card.theme.ts +93 -0
  328. package/src/components/Card/Card.tsx +161 -169
  329. package/src/components/Carousel/Carousel.stories.tsx +47 -0
  330. package/src/components/Carousel/Carousel.tsx +373 -0
  331. package/src/components/Carousel/index.ts +5 -0
  332. package/src/components/Clipboard/CopyButton.tsx +3 -3
  333. package/src/{primitives → components}/Column/Column.stories.tsx +1 -1
  334. package/src/components/Column/Column.theme.ts +48 -0
  335. package/src/{primitives → components}/Column/Column.tsx +2 -1
  336. package/src/{primitives → components}/Column/index.ts +1 -0
  337. package/src/components/Column/withColumn.ts +27 -0
  338. package/src/components/DatePicker/DatePicker.stories.tsx +102 -0
  339. package/src/components/DatePicker/DatePicker.theme.ts +35 -0
  340. package/src/components/DatePicker/DatePicker.tsx +279 -0
  341. package/src/components/DatePicker/index.ts +5 -0
  342. package/src/components/Dialog/AlertDialog.tsx +12 -16
  343. package/src/components/Dialog/Dialog.stories.tsx +2 -2
  344. package/src/components/Dialog/Dialog.theme.ts +61 -0
  345. package/src/components/Dialog/Dialog.tsx +46 -17
  346. package/src/components/ErrorFallback/ErrorFallback.tsx +14 -8
  347. package/src/components/ErrorFallback/ErrorStack.tsx +12 -6
  348. package/src/components/Focus/Focus.theme.ts +32 -0
  349. package/src/components/Focus/Focus.tsx +1 -1
  350. package/src/components/Icon/Icon.theme.ts +45 -0
  351. package/src/components/Icon/Icon.tsx +10 -3
  352. package/src/components/Icon/IconBlock.tsx +38 -0
  353. package/src/components/Icon/index.ts +1 -0
  354. package/src/components/Image/Image.stories.tsx +1 -1
  355. package/src/components/Image/Image.tsx +38 -9
  356. package/src/components/Input/Input.stories.tsx +132 -29
  357. package/src/components/Input/Input.theme.ts +191 -0
  358. package/src/components/Input/Input.tsx +208 -2
  359. package/src/components/Input/SegmentedInput.tsx +454 -0
  360. package/src/components/Input/constants.ts +5 -0
  361. package/src/components/Input/index.ts +2 -0
  362. package/src/components/Link/Link.theme.ts +16 -0
  363. package/src/components/Link/Link.tsx +10 -2
  364. package/src/components/List/List.stories.tsx +1 -1
  365. package/src/components/List/List.theme.ts +47 -0
  366. package/src/components/List/List.tsx +3 -3
  367. package/src/components/List/ListDropIndicator.tsx +1 -2
  368. package/src/components/List/Tree.stories.tsx +1 -1
  369. package/src/components/List/TreeDropIndicator.tsx +3 -3
  370. package/src/components/List/Treegrid.theme.ts +35 -0
  371. package/src/components/List/Treegrid.tsx +3 -4
  372. package/src/components/Main/Main.theme.ts +29 -0
  373. package/src/components/Main/Main.tsx +9 -7
  374. package/src/components/Main/constants.ts +6 -0
  375. package/src/components/Main/index.ts +1 -0
  376. package/src/components/MediaPlayer/MediaPlayer.stories.tsx +50 -0
  377. package/src/components/MediaPlayer/MediaPlayer.tsx +182 -0
  378. package/src/components/MediaPlayer/index.ts +5 -0
  379. package/src/components/Menu/ContextMenu.stories.tsx +0 -3
  380. package/src/components/Menu/DropdownMenu.stories.tsx +0 -3
  381. package/src/components/Menu/DropdownMenu.tsx +15 -15
  382. package/src/components/Menu/Menu.theme.ts +48 -0
  383. package/src/components/Message/Message.stories.tsx +43 -5
  384. package/src/components/Message/Message.theme.ts +44 -0
  385. package/src/components/Message/Message.tsx +76 -16
  386. package/src/{primitives → components}/Panel/Panel.stories.tsx +2 -3
  387. package/src/components/Panel/Panel.theme.ts +41 -0
  388. package/src/{primitives → components}/Panel/Panel.tsx +2 -1
  389. package/src/components/Popover/Popover.theme.ts +40 -0
  390. package/src/components/Popover/Popover.tsx +7 -7
  391. package/src/components/ScrollArea/ScrollArea.stories.tsx +2 -6
  392. package/src/components/ScrollArea/ScrollArea.theme.ts +107 -0
  393. package/src/components/ScrollArea/ScrollArea.tsx +3 -2
  394. package/src/components/ScrollArea/index.ts +1 -0
  395. package/src/components/ScrollArea/scrollbar.ts +21 -0
  396. package/src/components/ScrollContainer/ScrollContainer.stories.tsx +1 -1
  397. package/src/components/ScrollContainer/ScrollContainer.tsx +58 -58
  398. package/src/components/Select/Select.theme.ts +55 -0
  399. package/src/components/Select/Select.tsx +26 -10
  400. package/src/components/Separator/Separator.theme.ts +23 -0
  401. package/src/components/Skeleton/Skeleton.theme.ts +22 -0
  402. package/src/components/Splitter/Splitter.stories.tsx +1 -1
  403. package/src/components/Splitter/Splitter.theme.ts +18 -0
  404. package/src/components/Splitter/Splitter.tsx +10 -15
  405. package/src/components/Status/Status.theme.ts +31 -0
  406. package/src/components/Status/Status.tsx +1 -2
  407. package/src/components/Tag/Tag.theme.ts +22 -0
  408. package/src/components/Toast/Toast.stories.tsx +41 -20
  409. package/src/components/Toast/Toast.theme.ts +56 -0
  410. package/src/components/Toast/Toast.tsx +95 -27
  411. package/src/components/Toolbar/Toolbar.theme.ts +36 -0
  412. package/src/components/Toolbar/Toolbar.tsx +67 -15
  413. package/src/components/Tooltip/Tooltip.stories.tsx +1 -10
  414. package/src/components/Tooltip/Tooltip.theme.ts +19 -0
  415. package/src/components/Tooltip/Tooltip.tsx +18 -17
  416. package/src/components/Tooltip/index.ts +1 -0
  417. package/src/components/Tooltip/tooltipContent.ts +16 -0
  418. package/src/components/index.ts +7 -5
  419. package/src/exemplars/generics.stories.tsx +1 -2
  420. package/src/exemplars/slot.stories.tsx +5 -6
  421. package/src/exemplars/virtualizer.stories.tsx +0 -1
  422. package/src/hooks/useDensityContext.ts +1 -1
  423. package/src/hooks/useElevationContext.ts +1 -1
  424. package/src/hooks/useThemeContext.ts +1 -1
  425. package/src/hooks/useTranslationsContext.ts +1 -1
  426. package/src/index.ts +1 -0
  427. package/src/playground/Custom.stories.tsx +12 -32
  428. package/src/primitives/Container/Container.tsx +3 -1
  429. package/src/{components → primitives}/DensityProvider/DensityProvider.tsx +1 -1
  430. package/src/primitives/Flex/Flex.tsx +3 -1
  431. package/src/primitives/Grid/Grid.tsx +3 -1
  432. package/src/{components → primitives}/ThemeProvider/ThemeProvider.stories.tsx +1 -1
  433. package/src/{components → primitives}/ThemeProvider/ThemeProvider.tsx +1 -1
  434. package/src/{components → primitives}/ThemeProvider/index.ts +2 -2
  435. package/src/primitives/index.ts +4 -2
  436. package/src/testing/decorators/withLayout.tsx +7 -17
  437. package/src/testing/decorators/withLayoutVariants.tsx +1 -1
  438. package/src/testing/decorators/withTheme.tsx +21 -13
  439. package/src/theme/bindTheme.ts +13 -0
  440. package/src/theme/defaultTheme.ts +83 -0
  441. package/src/theme/index.ts +37 -0
  442. package/src/translations.ts +14 -0
  443. package/src/util/index.ts +2 -1
  444. package/src/util/mobile.ts +11 -0
  445. package/src/util/slots.ts +129 -0
  446. package/src/util/usePx.ts +4 -1
  447. package/dist/lib/browser/chunk-OCVRIJCH.mjs +0 -848
  448. package/dist/lib/browser/chunk-OCVRIJCH.mjs.map +0 -7
  449. package/dist/lib/node-esm/chunk-QUD5P3RU.mjs +0 -850
  450. package/dist/lib/node-esm/chunk-QUD5P3RU.mjs.map +0 -7
  451. package/dist/types/src/components/DensityProvider/index.d.ts.map +0 -1
  452. package/dist/types/src/components/ElevationProvider/index.d.ts.map +0 -1
  453. package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts.map +0 -1
  454. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +0 -129
  455. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +0 -1
  456. package/dist/types/src/components/ThemeProvider/index.d.ts +0 -4
  457. package/dist/types/src/components/ThemeProvider/index.d.ts.map +0 -1
  458. package/dist/types/src/primitives/Column/Column.d.ts.map +0 -1
  459. package/dist/types/src/primitives/Column/Column.stories.d.ts.map +0 -1
  460. package/dist/types/src/primitives/Column/index.d.ts +0 -2
  461. package/dist/types/src/primitives/Column/index.d.ts.map +0 -1
  462. package/dist/types/src/primitives/Panel/Panel.d.ts.map +0 -1
  463. package/dist/types/src/primitives/Panel/Panel.stories.d.ts.map +0 -1
  464. package/dist/types/src/primitives/Panel/index.d.ts.map +0 -1
  465. package/dist/types/src/util/hasIosKeyboard.d.ts +0 -2
  466. package/dist/types/src/util/hasIosKeyboard.d.ts.map +0 -1
  467. package/src/util/hasIosKeyboard.ts +0 -8
  468. /package/dist/types/src/{primitives → components}/Column/Column.stories.d.ts +0 -0
  469. /package/dist/types/src/{primitives → components}/Panel/Panel.stories.d.ts +0 -0
  470. /package/dist/types/src/{primitives → components}/Panel/index.d.ts +0 -0
  471. /package/dist/types/src/{components → primitives}/DensityProvider/DensityProvider.d.ts +0 -0
  472. /package/dist/types/src/{components → primitives}/DensityProvider/index.d.ts +0 -0
  473. /package/dist/types/src/{components → primitives}/ElevationProvider/ElevationProvider.d.ts +0 -0
  474. /package/dist/types/src/{components → primitives}/ElevationProvider/index.d.ts +0 -0
  475. /package/dist/types/src/{components → primitives}/ThemeProvider/ThemeProvider.d.ts +0 -0
  476. /package/dist/types/src/{components → primitives}/ThemeProvider/ThemeProvider.stories.d.ts +0 -0
  477. /package/src/{primitives → components}/Column/AUDIT.md +0 -0
  478. /package/src/{primitives → components}/Panel/index.ts +0 -0
  479. /package/src/{components → primitives}/DensityProvider/index.ts +0 -0
  480. /package/src/{components → primitives}/ElevationProvider/ElevationProvider.tsx +0 -0
  481. /package/src/{components → primitives}/ElevationProvider/index.ts +0 -0
  482. /package/src/{components → primitives}/ThemeProvider/TranslationsProvider.tsx +0 -0
@@ -12,32 +12,43 @@ import { Toast } from './Toast';
12
12
  type ActionTriggerProps = { altText: string; trigger: ReactNode };
13
13
 
14
14
  type StorybookToastProps = Partial<{
15
+ icon: string;
15
16
  title: string;
16
17
  description: string;
18
+ duration: number;
17
19
  actionTriggers: ActionTriggerProps[];
18
20
  openTrigger: string;
19
- closeTrigger: ReactNode;
21
+ defaultOpen: boolean;
20
22
  }>;
21
23
 
22
- const DefaultStory = ({ title, description, actionTriggers, openTrigger, closeTrigger }: StorybookToastProps) => {
23
- const [open, setOpen] = useState(true);
24
+ const DefaultStory = ({
25
+ icon,
26
+ title,
27
+ description,
28
+ duration,
29
+ actionTriggers,
30
+ openTrigger,
31
+ defaultOpen = true,
32
+ }: StorybookToastProps) => {
33
+ const [open, setOpen] = useState(defaultOpen);
24
34
  return (
25
35
  <Toast.Provider>
26
36
  <Button onClick={() => setOpen(true)}>{openTrigger}</Button>
27
37
  <Toast.Viewport />
28
- <Toast.Root open={open} onOpenChange={setOpen}>
29
- <Toast.Body>
30
- <Toast.Title>{title}</Toast.Title>
31
- <Toast.Description>{description}</Toast.Description>
32
- </Toast.Body>
33
- <Toast.Actions>
34
- <Toast.Close asChild={typeof closeTrigger !== 'string'}>{closeTrigger}</Toast.Close>
35
- {(actionTriggers || []).map(({ altText, trigger }: ActionTriggerProps, index: number) => (
36
- <Toast.Action key={index} altText={altText} asChild={typeof trigger !== 'string'}>
37
- {trigger}
38
- </Toast.Action>
39
- ))}
40
- </Toast.Actions>
38
+ <Toast.Root open={open} onOpenChange={setOpen} defaultOpen={defaultOpen} duration={duration}>
39
+ <Toast.Title icon={icon} onClose={() => setOpen(false)}>
40
+ {title}
41
+ </Toast.Title>
42
+ <Toast.Description>{description}</Toast.Description>
43
+ {actionTriggers && actionTriggers.length > 0 && (
44
+ <Toast.Actions>
45
+ {actionTriggers.map(({ altText, trigger }: ActionTriggerProps, index: number) => (
46
+ <Toast.Action key={index} altText={altText} asChild={typeof trigger !== 'string'}>
47
+ {trigger}
48
+ </Toast.Action>
49
+ ))}
50
+ </Toast.Actions>
51
+ )}
41
52
  </Toast.Root>
42
53
  </Toast.Provider>
43
54
  );
@@ -56,18 +67,28 @@ type Story = StoryObj<typeof meta>;
56
67
 
57
68
  export const Default: Story = {
58
69
  args: {
70
+ defaultOpen: true,
59
71
  openTrigger: 'Open toast',
72
+ icon: 'ph--sparkle--regular',
60
73
  title: 'This is a toast',
61
74
  description: 'This goes away on its own with a timer.',
75
+ duration: 100_000,
76
+ },
77
+ };
78
+
79
+ export const WithAction: Story = {
80
+ args: {
81
+ defaultOpen: true,
82
+ openTrigger: 'Open toast',
83
+ icon: 'ph--sparkle--regular',
84
+ title: 'This is a toast',
85
+ description: 'This goes away on its own with a timer.',
86
+ duration: 100_000,
62
87
  actionTriggers: [
63
88
  {
64
89
  altText: 'Press F5 to reload the page',
65
90
  trigger: <Button variant='primary'>Reload</Button>,
66
91
  },
67
92
  ],
68
- closeTrigger: <Button>Close</Button>,
69
- },
70
- parameters: {
71
- chromatic: { delay: 800 },
72
93
  },
73
94
  };
@@ -0,0 +1,56 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { mx, surfaceShadow } from '@dxos/ui-theme';
6
+ import { type ComponentFunction, type Theme } from '@dxos/ui-types';
7
+
8
+ export type ToastStyleProps = {};
9
+
10
+ const viewport: ComponentFunction<ToastStyleProps> = (_props, ...etc) =>
11
+ mx(
12
+ // TODO(burdon): block-end should take into account status bar.
13
+ 'z-40 fixed bottom-[calc(env(safe-area-inset-bottom)+1rem)] inset-start-[calc(env(safe-area-inset-left)+1rem)] inset-end-[calc(env(safe-area-inset-right)+1rem)] w-auto md:end-[calc(env(safe-area-inset-right)+1rem)] md:left-auto md:w-full md:max-w-sm',
14
+ 'rounded-md flex flex-col gap-2',
15
+ ...etc,
16
+ );
17
+
18
+ const root: ComponentFunction<ToastStyleProps> = (_props, ...etc) =>
19
+ mx(
20
+ 'dx-popover-surface rounded-md p-1',
21
+ surfaceShadow({ elevation: 'toast' }),
22
+ 'radix-state-open:animate-toast-slide-in-bottom md:radix-state-open:animate-toast-slide-in-right',
23
+ 'radix-state-closed:animate-toast-hide',
24
+ 'radix-swipe-end:animate-toast-swipe-out',
25
+ 'translate-x-radix-toast-swipe-move-x',
26
+ 'radix-swipe-cancel:translate-x-0 radix-swipe-cancel:duration-200 radix-swipe-cancel:ease-[ease]',
27
+ 'dx-focus-ring',
28
+ ...etc,
29
+ );
30
+
31
+ const grid: ComponentFunction<ToastStyleProps> = (_props, ...etc) => mx('gap-y-1 pbe-1', ...etc);
32
+
33
+ const header: ComponentFunction<ToastStyleProps> = (_props, ...etc) => mx('items-center', ...etc);
34
+
35
+ const icon: ComponentFunction<ToastStyleProps> = (_props, ...etc) => mx('col-start-1 grid place-items-center', ...etc);
36
+
37
+ const title: ComponentFunction<ToastStyleProps> = (_props, ...etc) => mx('col-start-2 truncate font-medium', ...etc);
38
+
39
+ const close: ComponentFunction<ToastStyleProps> = (_props, ...etc) => mx('col-start-3', ...etc);
40
+
41
+ const description: ComponentFunction<ToastStyleProps> = (_props, ...etc) =>
42
+ mx('col-start-2 overflow-hidden text-description', ...etc);
43
+
44
+ const actions: ComponentFunction<ToastStyleProps> = (_props, ...etc) => mx('flex gap-2 mbs-1', ...etc);
45
+
46
+ export const toastTheme: Theme<ToastStyleProps> = {
47
+ viewport,
48
+ root,
49
+ grid,
50
+ header,
51
+ icon,
52
+ title,
53
+ close,
54
+ description,
55
+ actions,
56
+ };
@@ -2,18 +2,30 @@
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';
7
5
  import * as ToastPrimitive from '@radix-ui/react-toast';
8
- import React, { type ComponentPropsWithRef, type FunctionComponent, forwardRef } from 'react';
6
+ import React, { type ComponentPropsWithRef, forwardRef } from 'react';
7
+ import { useTranslation } from 'react-i18next';
8
+
9
+ import { translationKey } from '#translations';
9
10
 
10
11
  import { useThemeContext } from '../../hooks';
12
+ import { DensityProvider, ElevationProvider } from '../../primitives';
11
13
  import { type ThemedClassName } from '../../util';
12
- import { ElevationProvider } from '../ElevationProvider';
14
+ import { IconButton } from '../Button';
15
+ import { Column } from '../Column';
16
+ import { Icon } from '../Icon';
17
+
18
+ //
19
+ // Provider
20
+ //
13
21
 
14
22
  type ToastProviderProps = ToastPrimitive.ToastProviderProps;
15
23
 
16
- const ToastProvider: FunctionComponent<ToastProviderProps> = ToastPrimitive.Provider;
24
+ const ToastProvider = ToastPrimitive.Provider;
25
+
26
+ //
27
+ // Viewport
28
+ //
17
29
 
18
30
  type ToastViewportProps = ThemedClassName<ToastPrimitive.ToastViewportProps>;
19
31
 
@@ -22,68 +34,125 @@ const ToastViewport = forwardRef<HTMLOListElement, ToastViewportProps>(({ classN
22
34
  return <ToastPrimitive.Viewport {...props} className={tx('toast.viewport', {}, classNames)} ref={forwardedRef} />;
23
35
  });
24
36
 
37
+ ToastViewport.displayName = 'Toast.Viewport';
38
+
39
+ //
40
+ // Root
41
+ //
42
+
25
43
  type ToastRootProps = ThemedClassName<ToastPrimitive.ToastProps>;
26
44
 
27
45
  const ToastRoot = forwardRef<HTMLLIElement, ToastRootProps>(({ classNames, children, ...props }, forwardedRef) => {
28
46
  const { tx } = useThemeContext();
29
47
  return (
30
48
  <ToastPrimitive.Root {...props} className={tx('toast.root', {}, classNames)} ref={forwardedRef}>
31
- <ElevationProvider elevation='toast'>{children}</ElevationProvider>
49
+ <ElevationProvider elevation='toast'>
50
+ <Column.Root classNames={tx('toast.grid', {})}>{children}</Column.Root>
51
+ </ElevationProvider>
32
52
  </ToastPrimitive.Root>
33
53
  );
34
54
  });
35
55
 
36
- type ToastBodyProps = ThemedClassName<ComponentPropsWithRef<typeof Primitive.div>>;
56
+ ToastRoot.displayName = 'Toast.Root';
37
57
 
38
- const ToastBody = forwardRef<HTMLDivElement, ToastBodyProps>(({ asChild, classNames, ...props }, forwardedRef) => {
39
- const { tx } = useThemeContext();
40
- const Comp = asChild ? Slot : Primitive.div;
41
- return <Comp {...props} className={tx('toast.body', {}, classNames)} ref={forwardedRef} />;
42
- });
58
+ //
59
+ // Title
60
+ //
43
61
 
44
- type ToastTitleProps = ThemedClassName<ToastPrimitive.ToastTitleProps>;
62
+ type ToastTitleProps = ThemedClassName<ToastPrimitive.ToastTitleProps> & {
63
+ icon?: string;
64
+ onClose?: () => void;
65
+ };
45
66
 
46
67
  const ToastTitle = forwardRef<HTMLHeadingElement, ToastTitleProps>(
47
- ({ asChild, classNames, ...props }, forwardedRef) => {
68
+ ({ classNames, children, icon, onClose, ...props }, forwardedRef) => {
69
+ const { t } = useTranslation(translationKey);
48
70
  const { tx } = useThemeContext();
49
- const Comp = asChild ? Slot : ToastPrimitive.Title;
50
- return <Comp {...props} className={tx('toast.title', {}, classNames)} ref={forwardedRef} />;
71
+ return (
72
+ <Column.Row classNames={tx('toast.header', {})}>
73
+ {icon && (
74
+ <div className={tx('toast.icon', {})}>
75
+ <Icon icon={icon} size={5} />
76
+ </div>
77
+ )}
78
+ <ToastPrimitive.Title {...props} className={tx('toast.title', {}, classNames)} ref={forwardedRef}>
79
+ {children}
80
+ </ToastPrimitive.Title>
81
+ {onClose && (
82
+ <IconButton
83
+ variant='ghost'
84
+ icon='ph--x--regular'
85
+ iconOnly
86
+ label={t('toolbar-close.label')}
87
+ classNames={tx('toast.close', {})}
88
+ onClick={onClose}
89
+ />
90
+ )}
91
+ </Column.Row>
92
+ );
51
93
  },
52
94
  );
53
95
 
96
+ ToastTitle.displayName = 'Toast.Title';
97
+
98
+ //
99
+ // Description
100
+ //
101
+
54
102
  type ToastDescriptionProps = ThemedClassName<ToastPrimitive.ToastDescriptionProps>;
55
103
 
56
104
  const ToastDescription = forwardRef<HTMLParagraphElement, ToastDescriptionProps>(
57
- ({ asChild, classNames, ...props }, forwardedRef) => {
105
+ ({ classNames, children, ...props }, forwardedRef) => {
58
106
  const { tx } = useThemeContext();
59
- const Comp = asChild ? Slot : ToastPrimitive.Description;
60
- return <Comp {...props} className={tx('toast.description', {}, classNames)} ref={forwardedRef} />;
107
+ return (
108
+ <ToastPrimitive.Description {...props} className={tx('toast.description', {}, classNames)} ref={forwardedRef}>
109
+ {children}
110
+ </ToastPrimitive.Description>
111
+ );
61
112
  },
62
113
  );
63
114
 
64
- type ToastActionsProps = ThemedClassName<ComponentPropsWithRef<typeof Primitive.div>>;
115
+ ToastDescription.displayName = 'Toast.Description';
116
+
117
+ //
118
+ // Actions
119
+ //
120
+
121
+ type ToastActionsProps = ThemedClassName<ComponentPropsWithRef<'div'>>;
65
122
 
66
123
  const ToastActions = forwardRef<HTMLDivElement, ToastActionsProps>(
67
- ({ asChild, classNames, ...props }, forwardedRef) => {
124
+ ({ classNames, children, ...props }, forwardedRef) => {
68
125
  const { tx } = useThemeContext();
69
- const Comp = asChild ? Slot : Primitive.div;
70
- return <Comp {...props} className={tx('toast.actions', {}, classNames)} ref={forwardedRef} />;
126
+ return (
127
+ <Column.Center classNames={tx('toast.actions', {}, classNames)} ref={forwardedRef} {...props}>
128
+ <DensityProvider density='sm'>{children}</DensityProvider>
129
+ </Column.Center>
130
+ );
71
131
  },
72
132
  );
73
133
 
134
+ ToastActions.displayName = 'Toast.Actions';
135
+
136
+ //
137
+ // Action / Close
138
+ //
139
+
74
140
  type ToastActionProps = ToastPrimitive.ToastActionProps;
75
141
 
76
- const ToastAction: FunctionComponent<ToastActionProps> = ToastPrimitive.Action;
142
+ const ToastAction = ToastPrimitive.Action;
77
143
 
78
144
  type ToastCloseProps = ToastPrimitive.ToastCloseProps;
79
145
 
80
- const ToastClose: FunctionComponent<ToastCloseProps> = ToastPrimitive.Close;
146
+ const ToastClose = ToastPrimitive.Close;
147
+
148
+ //
149
+ // Toast
150
+ //
81
151
 
82
152
  export const Toast = {
83
153
  Provider: ToastProvider,
84
154
  Viewport: ToastViewport,
85
155
  Root: ToastRoot,
86
- Body: ToastBody,
87
156
  Title: ToastTitle,
88
157
  Description: ToastDescription,
89
158
  Actions: ToastActions,
@@ -95,7 +164,6 @@ export type {
95
164
  ToastProviderProps,
96
165
  ToastViewportProps,
97
166
  ToastRootProps,
98
- ToastBodyProps,
99
167
  ToastTitleProps,
100
168
  ToastDescriptionProps,
101
169
  ToastActionsProps,
@@ -0,0 +1,36 @@
1
+ //
2
+ // Copyright 2022 DXOS.org
3
+ //
4
+
5
+ import { mx } from '@dxos/ui-theme';
6
+ import { type ComponentFunction, type Density, type Theme } from '@dxos/ui-types';
7
+
8
+ export type ToolbarStyleProps = Partial<{
9
+ density: Density;
10
+ disabled: boolean;
11
+ layoutManaged: boolean;
12
+ }>;
13
+
14
+ const layout =
15
+ 'w-full shrink-0 flex flex-nowrap p-1 gap-1 items-center overflow-x-auto scrollbar-none dx-contain-layout';
16
+
17
+ const root: ComponentFunction<ToolbarStyleProps> = ({ density, disabled, layoutManaged }, ...etc) => {
18
+ return mx(
19
+ 'bg-toolbar-surface dx-toolbar shadow-sm',
20
+ density === 'lg' && 'h-(--dx-rail-size) px-3!',
21
+ density === 'sm' && 'h-7 px-2!',
22
+ density === 'xs' && 'h-6 px-1!',
23
+ disabled && '*:opacity-20',
24
+ !layoutManaged && layout,
25
+ ...etc,
26
+ );
27
+ };
28
+
29
+ const text: ComponentFunction<ToolbarStyleProps> = (_, ...etc) => {
30
+ return mx('px-2 grow truncate items-center', ...etc);
31
+ };
32
+
33
+ export const toolbarTheme: Theme<ToolbarStyleProps> = {
34
+ root,
35
+ text,
36
+ };
@@ -6,14 +6,16 @@ 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, { forwardRef } from 'react';
9
+ import React, { type MouseEventHandler, forwardRef } from 'react';
10
10
  import { useTranslation } from 'react-i18next';
11
11
 
12
- import { composable, composableProps, slottable, type ToolbarStyleProps } from '@dxos/ui-theme';
13
12
  import { type SlottableProps } from '@dxos/ui-types';
14
13
 
14
+ import { translationKey } from '#translations';
15
+
15
16
  import { useThemeContext } from '../../hooks';
16
- import { translationKey } from '../../translations';
17
+ import { type ToolbarStyleProps } from '../../theme';
18
+ import { composable, composableProps, slottable } from '../../util';
17
19
  import {
18
20
  Button,
19
21
  ButtonGroup,
@@ -56,6 +58,8 @@ const ToolbarRoot = composable<HTMLDivElement, ToolbarRootProps>(
56
58
  },
57
59
  );
58
60
 
61
+ ToolbarRoot.displayName = 'Toolbar.Root';
62
+
59
63
  //
60
64
  // Text
61
65
  //
@@ -73,6 +77,8 @@ const ToolbarText = slottable<HTMLDivElement>(({ children, asChild, ...props },
73
77
  );
74
78
  });
75
79
 
80
+ ToolbarText.displayName = 'Toolbar.Text';
81
+
76
82
  //
77
83
  // Button
78
84
  //
@@ -87,6 +93,8 @@ const ToolbarButton = forwardRef<HTMLButtonElement, ToolbarButtonProps>((props,
87
93
  );
88
94
  });
89
95
 
96
+ ToolbarButton.displayName = 'Toolbar.Button';
97
+
90
98
  //
91
99
  // IconButton
92
100
  //
@@ -96,11 +104,13 @@ type ToolbarIconButtonProps = IconButtonProps;
96
104
  const ToolbarIconButton = forwardRef<HTMLButtonElement, ToolbarIconButtonProps>((props, forwardedRef) => {
97
105
  return (
98
106
  <ToolbarPrimitive.Button asChild>
99
- <IconButton {...props} noTooltip ref={forwardedRef} />
107
+ <IconButton {...props} ref={forwardedRef} />
100
108
  </ToolbarPrimitive.Button>
101
109
  );
102
110
  });
103
111
 
112
+ ToolbarIconButton.displayName = 'Toolbar.IconButton';
113
+
104
114
  type ToolbarToggleProps = ToggleProps;
105
115
 
106
116
  const ToolbarToggle = forwardRef<HTMLButtonElement, ToolbarToggleProps>((props, forwardedRef) => {
@@ -111,6 +121,8 @@ const ToolbarToggle = forwardRef<HTMLButtonElement, ToolbarToggleProps>((props,
111
121
  );
112
122
  });
113
123
 
124
+ ToolbarToggle.displayName = 'Toolbar.Toggle';
125
+
114
126
  //
115
127
  // Link
116
128
  //
@@ -125,6 +137,8 @@ const ToolbarLink = forwardRef<HTMLAnchorElement, ToolbarLinkProps>((props, forw
125
137
  );
126
138
  });
127
139
 
140
+ ToolbarLink.displayName = 'Toolbar.Link';
141
+
128
142
  type ToolbarToggleGroupProps = (
129
143
  | Omit<ToolbarPrimitive.ToolbarToggleGroupSingleProps, 'className'>
130
144
  | Omit<ToolbarPrimitive.ToolbarToggleGroupMultipleProps, 'className'>
@@ -145,6 +159,8 @@ const ToolbarToggleGroup = forwardRef<HTMLDivElement, ToolbarToggleGroupProps>(
145
159
  },
146
160
  );
147
161
 
162
+ ToolbarToggleGroup.displayName = 'Toolbar.ToggleGroup';
163
+
148
164
  type ToolbarToggleGroupItemProps = ToggleGroupItemProps;
149
165
 
150
166
  const ToolbarToggleGroupItem = forwardRef<HTMLButtonElement, ToolbarToggleGroupItemProps>(
@@ -157,10 +173,12 @@ const ToolbarToggleGroupItem = forwardRef<HTMLButtonElement, ToolbarToggleGroupI
157
173
  },
158
174
  );
159
175
 
176
+ ToolbarToggleGroupItem.displayName = 'Toolbar.ToggleGroupItem';
177
+
160
178
  type ToolbarToggleGroupIconItemProps = Omit<ToggleGroupItemPrimitiveProps, 'className'> & IconButtonProps;
161
179
 
162
180
  const ToolbarToggleGroupIconItem = forwardRef<HTMLButtonElement, ToolbarToggleGroupIconItemProps>(
163
- ({ variant, density, elevation, classNames, icon, label, iconOnly, ...props }, forwardedRef) => {
181
+ ({ variant, density, elevation, classNames, icon, label, iconOnly, iconClassNames, ...props }, forwardedRef) => {
164
182
  return (
165
183
  <ToolbarPrimitive.ToolbarToggleItem {...props} asChild>
166
184
  <IconButton
@@ -172,6 +190,7 @@ const ToolbarToggleGroupIconItem = forwardRef<HTMLButtonElement, ToolbarToggleGr
172
190
  icon,
173
191
  label,
174
192
  iconOnly,
193
+ iconClassNames,
175
194
  }}
176
195
  ref={forwardedRef}
177
196
  />
@@ -180,6 +199,8 @@ const ToolbarToggleGroupIconItem = forwardRef<HTMLButtonElement, ToolbarToggleGr
180
199
  },
181
200
  );
182
201
 
202
+ ToolbarToggleGroupIconItem.displayName = 'Toolbar.ToggleGroupIconItem';
203
+
183
204
  //
184
205
  // Separator
185
206
  //
@@ -198,6 +219,8 @@ const ToolbarSeparator = forwardRef<HTMLDivElement, ToolbarSeparatorProps>(
198
219
  },
199
220
  );
200
221
 
222
+ ToolbarSeparator.displayName = 'Toolbar.Separator';
223
+
201
224
  //
202
225
  // DragHandle
203
226
  //
@@ -224,22 +247,46 @@ const ToolbarDragHandle = forwardRef<HTMLButtonElement, ToolbarDragHandleProps>(
224
247
  },
225
248
  );
226
249
 
250
+ ToolbarDragHandle.displayName = 'Toolbar.DragHandle';
251
+
227
252
  //
228
- // CloseIconButton
253
+ // ActionIconButton
229
254
  //
230
255
 
231
- type ToolbarCloseIconButtonProps = { onClick?: () => void; label?: string };
256
+ /**
257
+ * Known semantic actions a toolbar icon-button can represent. Each action
258
+ * picks its own phosphor icon + default translation key so call sites just
259
+ * declare intent (`action='delete'`) rather than re-specifying the icon /
260
+ * label every time.
261
+ */
262
+ type ToolbarActionIconButtonAction = 'close' | 'delete';
263
+
264
+ type ToolbarActionIconButtonProps = {
265
+ action: ToolbarActionIconButtonAction;
266
+ onClick?: MouseEventHandler<HTMLButtonElement>;
267
+ label?: string;
268
+ };
269
+
270
+ const TOOLBAR_ACTION_ICONS: Record<ToolbarActionIconButtonAction, string> = {
271
+ close: 'ph--x--regular',
272
+ delete: 'ph--trash--regular',
273
+ };
274
+
275
+ const TOOLBAR_ACTION_LABEL_KEYS: Record<ToolbarActionIconButtonAction, string> = {
276
+ close: 'toolbar-close.label',
277
+ delete: 'toolbar-delete.label',
278
+ };
232
279
 
233
- const ToolbarCloseIconButton = forwardRef<HTMLButtonElement, ToolbarCloseIconButtonProps>(
234
- ({ onClick, label }, forwardedRef) => {
280
+ const ToolbarActionIconButton = forwardRef<HTMLButtonElement, ToolbarActionIconButtonProps>(
281
+ ({ action, onClick, label }, forwardedRef) => {
235
282
  const { t } = useTranslation(translationKey);
236
283
 
237
284
  return (
238
285
  <ToolbarIconButton
239
286
  iconOnly
240
- icon='ph--x--regular'
287
+ icon={TOOLBAR_ACTION_ICONS[action]}
241
288
  variant='ghost'
242
- label={label ?? t('toolbar-close.label')}
289
+ label={label ?? t(TOOLBAR_ACTION_LABEL_KEYS[action])}
243
290
  classNames='cursor-pointer'
244
291
  onClick={onClick}
245
292
  ref={forwardedRef}
@@ -248,6 +295,8 @@ const ToolbarCloseIconButton = forwardRef<HTMLButtonElement, ToolbarCloseIconBut
248
295
  },
249
296
  );
250
297
 
298
+ ToolbarActionIconButton.displayName = 'Toolbar.ActionIconButton';
299
+
251
300
  //
252
301
  // Menu
253
302
  //
@@ -263,7 +312,7 @@ type ToolbarMenuProps<T extends any | void = void> = {
263
312
  };
264
313
 
265
314
  // TODO(burdon): Make slottable.
266
- const ToolbarMenu = <T extends any | void = void>({ context, items }: ToolbarMenuProps<T>) => {
315
+ function ToolbarMenu<T extends any | void = void>({ context, items }: ToolbarMenuProps<T>) {
267
316
  const { t } = useTranslation(translationKey);
268
317
 
269
318
  return (
@@ -292,7 +341,9 @@ const ToolbarMenu = <T extends any | void = void>({ context, items }: ToolbarMen
292
341
  )}
293
342
  </DropdownMenu.Root>
294
343
  );
295
- };
344
+ }
345
+
346
+ ToolbarMenu.displayName = 'Toolbar.Menu';
296
347
 
297
348
  //
298
349
  // Toolbar
@@ -310,7 +361,7 @@ export const Toolbar = {
310
361
  ToggleGroupIconItem: ToolbarToggleGroupIconItem,
311
362
  Separator: ToolbarSeparator,
312
363
  DragHandle: ToolbarDragHandle,
313
- CloseIconButton: ToolbarCloseIconButton,
364
+ ActionIconButton: ToolbarActionIconButton,
314
365
  Menu: ToolbarMenu,
315
366
  };
316
367
 
@@ -326,7 +377,8 @@ export type {
326
377
  ToolbarToggleGroupIconItemProps,
327
378
  ToolbarSeparatorProps,
328
379
  ToolbarDragHandleProps,
329
- ToolbarCloseIconButtonProps,
380
+ ToolbarActionIconButtonAction,
381
+ ToolbarActionIconButtonProps,
330
382
  ToolbarMenuItem,
331
383
  ToolbarMenuProps,
332
384
  };
@@ -19,7 +19,7 @@ type DefaultStoryProps = {
19
19
  const DefaultStory = ({ tooltips, defaultOpen }: DefaultStoryProps) => {
20
20
  return (
21
21
  <Tooltip.Provider defaultOpen={defaultOpen}>
22
- <div role='none' className='w-32'>
22
+ <div className='w-32'>
23
23
  {tooltips.map(({ label, content }, i) => (
24
24
  <Tooltip.Trigger asChild key={i} content={content} side='right'>
25
25
  <Button classNames='block w-full'>{label}</Button>
@@ -50,9 +50,6 @@ export const Default: Story = {
50
50
  },
51
51
  ],
52
52
  },
53
- parameters: {
54
- chromatic: { delay: 500 },
55
- },
56
53
  };
57
54
 
58
55
  export const DefaultOpen: Story = {
@@ -65,9 +62,6 @@ export const DefaultOpen: Story = {
65
62
  },
66
63
  ],
67
64
  },
68
- parameters: {
69
- chromatic: { delay: 500 },
70
- },
71
65
  };
72
66
 
73
67
  export const StressTest: Story = {
@@ -81,7 +75,4 @@ export const StressTest: Story = {
81
75
  { count: 32 },
82
76
  ),
83
77
  },
84
- parameters: {
85
- chromatic: { disableSnapshot: true },
86
- },
87
78
  };
@@ -0,0 +1,19 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { mx } from '@dxos/ui-theme';
6
+ import { type ComponentFunction, type Elevation, type Theme } from '@dxos/ui-types';
7
+
8
+ import { tooltipContent } from './tooltipContent';
9
+
10
+ export type TooltipStyleProps = Partial<{
11
+ elevation: Elevation;
12
+ }>;
13
+
14
+ const arrow: ComponentFunction<TooltipStyleProps> = (_props, ...etc) => mx('fill-inverse-surface', ...etc);
15
+
16
+ export const tooltipTheme: Theme<TooltipStyleProps> = {
17
+ content: tooltipContent,
18
+ arrow,
19
+ };