@dxos/react-ui 0.8.4-main.d05673bc65 → 0.8.4-main.d9fc60f731

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 (534) 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-KVJDKHLF.mjs +1613 -0
  6. package/dist/lib/browser/chunk-KVJDKHLF.mjs.map +7 -0
  7. package/dist/lib/browser/index.mjs +2982 -1631
  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 +37 -28
  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-5JYHWJDZ.mjs +1615 -0
  15. package/dist/lib/node-esm/chunk-5JYHWJDZ.mjs.map +7 -0
  16. package/dist/lib/node-esm/chunk-FPVTVXND.mjs +35 -0
  17. package/dist/lib/node-esm/chunk-FPVTVXND.mjs.map +7 -0
  18. package/dist/lib/node-esm/index.mjs +2982 -1631
  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 +37 -28
  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 +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/Avatar.theme.d.ts +11 -0
  29. package/dist/types/src/components/Avatars/Avatar.theme.d.ts.map +1 -0
  30. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts.map +1 -1
  31. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts +5 -1
  32. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
  33. package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts.map +1 -1
  34. package/dist/types/src/components/Breadcrumb/Breadcrumb.theme.d.ts +4 -0
  35. package/dist/types/src/components/Breadcrumb/Breadcrumb.theme.d.ts.map +1 -0
  36. package/dist/types/src/components/Button/Button.d.ts +3 -3
  37. package/dist/types/src/components/Button/Button.d.ts.map +1 -1
  38. package/dist/types/src/components/Button/Button.stories.d.ts +1 -1
  39. package/dist/types/src/components/Button/Button.stories.d.ts.map +1 -1
  40. package/dist/types/src/components/Button/Button.theme.d.ts +11 -0
  41. package/dist/types/src/components/Button/Button.theme.d.ts.map +1 -0
  42. package/dist/types/src/components/Button/IconButton.d.ts +1 -0
  43. package/dist/types/src/components/Button/IconButton.d.ts.map +1 -1
  44. package/dist/types/src/components/Button/IconButton.stories.d.ts +4 -0
  45. package/dist/types/src/components/Button/IconButton.stories.d.ts.map +1 -1
  46. package/dist/types/src/components/Button/IconButton.theme.d.ts +8 -0
  47. package/dist/types/src/components/Button/IconButton.theme.d.ts.map +1 -0
  48. package/dist/types/src/components/Button/Toggle.d.ts +2 -2
  49. package/dist/types/src/components/Button/Toggle.d.ts.map +1 -1
  50. package/dist/types/src/components/Button/Toggle.stories.d.ts.map +1 -1
  51. package/dist/types/src/components/Button/ToggleGroup.d.ts +6 -6
  52. package/dist/types/src/components/Button/ToggleGroup.d.ts.map +1 -1
  53. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts +2 -2
  54. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts.map +1 -1
  55. package/dist/types/src/components/Calendar/Calendar.d.ts +33 -0
  56. package/dist/types/src/components/Calendar/Calendar.d.ts.map +1 -0
  57. package/dist/types/src/components/Calendar/Calendar.stories.d.ts +9 -0
  58. package/dist/types/src/components/Calendar/Calendar.stories.d.ts.map +1 -0
  59. package/dist/types/src/components/Calendar/Calendar.theme.d.ts +4 -0
  60. package/dist/types/src/components/Calendar/Calendar.theme.d.ts.map +1 -0
  61. package/dist/types/src/components/Calendar/index.d.ts +2 -0
  62. package/dist/types/src/components/Calendar/index.d.ts.map +1 -0
  63. package/dist/types/src/components/Card/Card.d.ts +92 -68
  64. package/dist/types/src/components/Card/Card.d.ts.map +1 -1
  65. package/dist/types/src/components/Card/Card.stories.d.ts +3 -2
  66. package/dist/types/src/components/Card/Card.stories.d.ts.map +1 -1
  67. package/dist/types/src/components/Card/Card.theme.d.ts +12 -0
  68. package/dist/types/src/components/Card/Card.theme.d.ts.map +1 -0
  69. package/dist/types/src/components/Carousel/Carousel.d.ts +102 -0
  70. package/dist/types/src/components/Carousel/Carousel.d.ts.map +1 -0
  71. package/dist/types/src/components/Carousel/index.d.ts +2 -0
  72. package/dist/types/src/components/Carousel/index.d.ts.map +1 -0
  73. package/dist/types/src/components/Clipboard/ClipboardProvider.d.ts.map +1 -1
  74. package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -1
  75. package/dist/types/src/components/Clipboard/index.d.ts +10 -1
  76. package/dist/types/src/components/Clipboard/index.d.ts.map +1 -1
  77. package/dist/types/src/components/Column/Column.d.ts +33 -0
  78. package/dist/types/src/components/Column/Column.d.ts.map +1 -0
  79. package/dist/types/src/components/Column/Column.stories.d.ts +25 -0
  80. package/dist/types/src/components/Column/Column.stories.d.ts.map +1 -0
  81. package/dist/types/src/components/Column/Column.theme.d.ts +9 -0
  82. package/dist/types/src/components/Column/Column.theme.d.ts.map +1 -0
  83. package/dist/types/src/components/Column/index.d.ts +3 -0
  84. package/dist/types/src/components/Column/index.d.ts.map +1 -0
  85. package/dist/types/src/components/Column/withColumn.d.ts +21 -0
  86. package/dist/types/src/components/Column/withColumn.d.ts.map +1 -0
  87. package/dist/types/src/components/DatePicker/DatePicker.d.ts +72 -0
  88. package/dist/types/src/components/DatePicker/DatePicker.d.ts.map +1 -0
  89. package/dist/types/src/components/DatePicker/DatePicker.stories.d.ts +10 -0
  90. package/dist/types/src/components/DatePicker/DatePicker.stories.d.ts.map +1 -0
  91. package/dist/types/src/components/DatePicker/DatePicker.theme.d.ts +6 -0
  92. package/dist/types/src/components/DatePicker/DatePicker.theme.d.ts.map +1 -0
  93. package/dist/types/src/components/DatePicker/index.d.ts +2 -0
  94. package/dist/types/src/components/DatePicker/index.d.ts.map +1 -0
  95. package/dist/types/src/components/Dialog/AlertDialog.d.ts +43 -32
  96. package/dist/types/src/components/Dialog/AlertDialog.d.ts.map +1 -1
  97. package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts.map +1 -1
  98. package/dist/types/src/components/Dialog/Dialog.d.ts +51 -32
  99. package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -1
  100. package/dist/types/src/components/Dialog/Dialog.stories.d.ts +3 -2
  101. package/dist/types/src/components/Dialog/Dialog.stories.d.ts.map +1 -1
  102. package/dist/types/src/components/Dialog/Dialog.theme.d.ts +10 -0
  103. package/dist/types/src/components/Dialog/Dialog.theme.d.ts.map +1 -0
  104. package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts.map +1 -1
  105. package/dist/types/src/components/ErrorFallback/ErrorFallback.stories.d.ts.map +1 -1
  106. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts +14 -3
  107. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts.map +1 -1
  108. package/dist/types/src/components/ErrorFallback/ThrowError.d.ts.map +1 -1
  109. package/dist/types/src/components/Focus/Focus.d.ts +36 -0
  110. package/dist/types/src/components/Focus/Focus.d.ts.map +1 -0
  111. package/dist/types/src/{primitives/Column/Column.stories.d.ts → components/Focus/Focus.stories.d.ts} +4 -1
  112. package/dist/types/src/components/Focus/Focus.stories.d.ts.map +1 -0
  113. package/dist/types/src/components/Focus/Focus.theme.d.ts +6 -0
  114. package/dist/types/src/components/Focus/Focus.theme.d.ts.map +1 -0
  115. package/dist/types/src/components/Focus/index.d.ts +2 -0
  116. package/dist/types/src/components/Focus/index.d.ts.map +1 -0
  117. package/dist/types/src/components/Icon/Icon.d.ts +4 -0
  118. package/dist/types/src/components/Icon/Icon.d.ts.map +1 -1
  119. package/dist/types/src/components/Icon/Icon.stories.d.ts +11 -3
  120. package/dist/types/src/components/Icon/Icon.stories.d.ts.map +1 -1
  121. package/dist/types/src/components/Icon/Icon.theme.d.ts +11 -0
  122. package/dist/types/src/components/Icon/Icon.theme.d.ts.map +1 -0
  123. package/dist/types/src/components/Icon/IconBlock.d.ts +15 -0
  124. package/dist/types/src/components/Icon/IconBlock.d.ts.map +1 -0
  125. package/dist/types/src/components/Icon/index.d.ts +1 -0
  126. package/dist/types/src/components/Icon/index.d.ts.map +1 -1
  127. package/dist/types/src/components/Image/Image.d.ts +2 -1
  128. package/dist/types/src/components/Image/Image.d.ts.map +1 -1
  129. package/dist/types/src/components/Image/Image.stories.d.ts +3 -2
  130. package/dist/types/src/components/Image/Image.stories.d.ts.map +1 -1
  131. package/dist/types/src/components/Input/Input.d.ts +90 -15
  132. package/dist/types/src/components/Input/Input.d.ts.map +1 -1
  133. package/dist/types/src/components/Input/Input.stories.d.ts +17 -6
  134. package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
  135. package/dist/types/src/components/Input/Input.theme.d.ts +115 -0
  136. package/dist/types/src/components/Input/Input.theme.d.ts.map +1 -0
  137. package/dist/types/src/components/Input/SegmentedInput.d.ts +79 -0
  138. package/dist/types/src/components/Input/SegmentedInput.d.ts.map +1 -0
  139. package/dist/types/src/components/Input/constants.d.ts +2 -0
  140. package/dist/types/src/components/Input/constants.d.ts.map +1 -0
  141. package/dist/types/src/components/Input/index.d.ts +2 -0
  142. package/dist/types/src/components/Input/index.d.ts.map +1 -1
  143. package/dist/types/src/components/Link/Link.d.ts.map +1 -1
  144. package/dist/types/src/components/Link/Link.stories.d.ts.map +1 -1
  145. package/dist/types/src/components/Link/Link.theme.d.ts +6 -0
  146. package/dist/types/src/components/Link/Link.theme.d.ts.map +1 -0
  147. package/dist/types/src/components/List/List.d.ts +5 -3
  148. package/dist/types/src/components/List/List.d.ts.map +1 -1
  149. package/dist/types/src/components/List/List.stories.d.ts +3 -1
  150. package/dist/types/src/components/List/List.stories.d.ts.map +1 -1
  151. package/dist/types/src/components/List/List.theme.d.ts +7 -0
  152. package/dist/types/src/components/List/List.theme.d.ts.map +1 -0
  153. package/dist/types/src/components/List/ListDropIndicator.d.ts.map +1 -1
  154. package/dist/types/src/components/List/Tree.d.ts +2 -2
  155. package/dist/types/src/components/List/Tree.d.ts.map +1 -1
  156. package/dist/types/src/components/List/Tree.stories.d.ts.map +1 -1
  157. package/dist/types/src/components/List/TreeDropIndicator.d.ts.map +1 -1
  158. package/dist/types/src/components/List/Treegrid.d.ts +6 -10
  159. package/dist/types/src/components/List/Treegrid.d.ts.map +1 -1
  160. package/dist/types/src/components/List/Treegrid.stories.d.ts.map +1 -1
  161. package/dist/types/src/components/List/Treegrid.theme.d.ts +7 -0
  162. package/dist/types/src/components/List/Treegrid.theme.d.ts.map +1 -0
  163. package/dist/types/src/components/Main/Main.d.ts +9 -5
  164. package/dist/types/src/components/Main/Main.d.ts.map +1 -1
  165. package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
  166. package/dist/types/src/components/Main/Main.theme.d.ts +20 -0
  167. package/dist/types/src/components/Main/Main.theme.d.ts.map +1 -0
  168. package/dist/types/src/components/Main/constants.d.ts +3 -0
  169. package/dist/types/src/components/Main/constants.d.ts.map +1 -0
  170. package/dist/types/src/components/Main/index.d.ts +1 -0
  171. package/dist/types/src/components/Main/index.d.ts.map +1 -1
  172. package/dist/types/src/components/Main/useSwipeToDismiss.d.ts.map +1 -1
  173. package/dist/types/src/components/MediaPlayer/MediaPlayer.d.ts +43 -0
  174. package/dist/types/src/components/MediaPlayer/MediaPlayer.d.ts.map +1 -0
  175. package/dist/types/src/components/MediaPlayer/MediaPlayer.stories.d.ts +16 -0
  176. package/dist/types/src/components/MediaPlayer/MediaPlayer.stories.d.ts.map +1 -0
  177. package/dist/types/src/components/MediaPlayer/index.d.ts +2 -0
  178. package/dist/types/src/components/MediaPlayer/index.d.ts.map +1 -0
  179. package/dist/types/src/components/Menu/ContextMenu.d.ts.map +1 -1
  180. package/dist/types/src/components/Menu/ContextMenu.stories.d.ts.map +1 -1
  181. package/dist/types/src/components/Menu/DropdownMenu.d.ts +58 -49
  182. package/dist/types/src/components/Menu/DropdownMenu.d.ts.map +1 -1
  183. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts +14 -1
  184. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts.map +1 -1
  185. package/dist/types/src/components/Menu/Menu.theme.d.ts +7 -0
  186. package/dist/types/src/components/Menu/Menu.theme.d.ts.map +1 -0
  187. package/dist/types/src/components/Message/Message.d.ts +3 -3
  188. package/dist/types/src/components/Message/Message.d.ts.map +1 -1
  189. package/dist/types/src/components/Message/Message.stories.d.ts +6 -2
  190. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
  191. package/dist/types/src/components/Message/Message.theme.d.ts +7 -0
  192. package/dist/types/src/components/Message/Message.theme.d.ts.map +1 -0
  193. package/dist/types/src/components/Panel/Panel.d.ts +35 -0
  194. package/dist/types/src/components/Panel/Panel.d.ts.map +1 -0
  195. package/dist/types/src/components/Panel/Panel.stories.d.ts.map +1 -0
  196. package/dist/types/src/components/Panel/Panel.theme.d.ts +13 -0
  197. package/dist/types/src/components/Panel/Panel.theme.d.ts.map +1 -0
  198. package/dist/types/src/components/Panel/index.d.ts.map +1 -0
  199. package/dist/types/src/components/Popover/Popover.d.ts +38 -22
  200. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  201. package/dist/types/src/components/Popover/Popover.stories.d.ts.map +1 -1
  202. package/dist/types/src/components/Popover/Popover.theme.d.ts +8 -0
  203. package/dist/types/src/components/Popover/Popover.theme.d.ts.map +1 -0
  204. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +12 -9
  205. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  206. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +18 -5
  207. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
  208. package/dist/types/src/components/ScrollArea/ScrollArea.theme.d.ts +17 -0
  209. package/dist/types/src/components/ScrollArea/ScrollArea.theme.d.ts.map +1 -0
  210. package/dist/types/src/components/ScrollArea/index.d.ts +1 -0
  211. package/dist/types/src/components/ScrollArea/index.d.ts.map +1 -1
  212. package/dist/types/src/components/ScrollArea/scrollbar.d.ts +18 -0
  213. package/dist/types/src/components/ScrollArea/scrollbar.d.ts.map +1 -0
  214. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +41 -18
  215. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -1
  216. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts +5 -6
  217. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts.map +1 -1
  218. package/dist/types/src/components/Select/Select.d.ts.map +1 -1
  219. package/dist/types/src/components/Select/Select.stories.d.ts +2 -2
  220. package/dist/types/src/components/Select/Select.stories.d.ts.map +1 -1
  221. package/dist/types/src/components/Select/Select.theme.d.ts +6 -0
  222. package/dist/types/src/components/Select/Select.theme.d.ts.map +1 -0
  223. package/dist/types/src/components/Separator/Separator.d.ts +3 -3
  224. package/dist/types/src/components/Separator/Separator.d.ts.map +1 -1
  225. package/dist/types/src/components/Separator/Separator.theme.d.ts +7 -0
  226. package/dist/types/src/components/Separator/Separator.theme.d.ts.map +1 -0
  227. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts.map +1 -1
  228. package/dist/types/src/components/Skeleton/Skeleton.theme.d.ts +6 -0
  229. package/dist/types/src/components/Skeleton/Skeleton.theme.d.ts.map +1 -0
  230. package/dist/types/src/components/Splitter/Splitter.d.ts +18 -18
  231. package/dist/types/src/components/Splitter/Splitter.d.ts.map +1 -1
  232. package/dist/types/src/components/Splitter/Splitter.stories.d.ts.map +1 -1
  233. package/dist/types/src/components/Splitter/Splitter.theme.d.ts +4 -0
  234. package/dist/types/src/components/Splitter/Splitter.theme.d.ts.map +1 -0
  235. package/dist/types/src/components/Status/Status.d.ts +3 -4
  236. package/dist/types/src/components/Status/Status.d.ts.map +1 -1
  237. package/dist/types/src/components/Status/Status.stories.d.ts.map +1 -1
  238. package/dist/types/src/components/Status/Status.theme.d.ts +7 -0
  239. package/dist/types/src/components/Status/Status.theme.d.ts.map +1 -0
  240. package/dist/types/src/components/Tag/Tag.stories.d.ts.map +1 -1
  241. package/dist/types/src/components/Tag/Tag.theme.d.ts +6 -0
  242. package/dist/types/src/components/Tag/Tag.theme.d.ts.map +1 -0
  243. package/dist/types/src/components/Toast/Toast.d.ts +23 -20
  244. package/dist/types/src/components/Toast/Toast.d.ts.map +1 -1
  245. package/dist/types/src/components/Toast/Toast.stories.d.ts +5 -2
  246. package/dist/types/src/components/Toast/Toast.stories.d.ts.map +1 -1
  247. package/dist/types/src/components/Toast/Toast.theme.d.ts +4 -0
  248. package/dist/types/src/components/Toast/Toast.theme.d.ts.map +1 -0
  249. package/dist/types/src/components/Toolbar/Toolbar.d.ts +30 -26
  250. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  251. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
  252. package/dist/types/src/components/Toolbar/Toolbar.theme.d.ts +8 -0
  253. package/dist/types/src/components/Toolbar/Toolbar.theme.d.ts.map +1 -0
  254. package/dist/types/src/components/Tooltip/Tooltip.d.ts +16 -16
  255. package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
  256. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts +2 -2
  257. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
  258. package/dist/types/src/components/Tooltip/Tooltip.theme.d.ts +6 -0
  259. package/dist/types/src/components/Tooltip/Tooltip.theme.d.ts.map +1 -0
  260. package/dist/types/src/components/Tooltip/index.d.ts +1 -0
  261. package/dist/types/src/components/Tooltip/index.d.ts.map +1 -1
  262. package/dist/types/src/components/Tooltip/tooltipContent.d.ts +4 -0
  263. package/dist/types/src/components/Tooltip/tooltipContent.d.ts.map +1 -0
  264. package/dist/types/src/components/index.d.ts +8 -4
  265. package/dist/types/src/components/index.d.ts.map +1 -1
  266. package/dist/types/src/exemplars/generics.stories.d.ts +6 -5
  267. package/dist/types/src/exemplars/generics.stories.d.ts.map +1 -1
  268. package/dist/types/src/exemplars/slot.stories.d.ts +1 -0
  269. package/dist/types/src/exemplars/slot.stories.d.ts.map +1 -1
  270. package/dist/types/src/exemplars/tabster.stories.d.ts.map +1 -1
  271. package/dist/types/src/exemplars/virtualizer.stories.d.ts.map +1 -1
  272. package/dist/types/src/hooks/index.d.ts +1 -0
  273. package/dist/types/src/hooks/index.d.ts.map +1 -1
  274. package/dist/types/src/hooks/useDensityContext.d.ts +1 -1
  275. package/dist/types/src/hooks/useDensityContext.d.ts.map +1 -1
  276. package/dist/types/src/hooks/useElevationContext.d.ts.map +1 -1
  277. package/dist/types/src/hooks/useIconHref.d.ts.map +1 -1
  278. package/dist/types/src/hooks/useSafeArea.d.ts.map +1 -1
  279. package/dist/types/src/hooks/useSafeCollisionPadding.d.ts.map +1 -1
  280. package/dist/types/src/hooks/useTranslationsContext.d.ts +1 -1
  281. package/dist/types/src/hooks/useVisualViewport.d.ts.map +1 -1
  282. package/dist/types/src/index.d.ts +1 -0
  283. package/dist/types/src/index.d.ts.map +1 -1
  284. package/dist/types/src/playground/Controls.stories.d.ts.map +1 -1
  285. package/dist/types/src/playground/Custom.stories.d.ts +1 -1
  286. package/dist/types/src/playground/Custom.stories.d.ts.map +1 -1
  287. package/dist/types/src/playground/Typography.stories.d.ts.map +1 -1
  288. package/dist/types/src/primitives/Container/Container.d.ts +4 -5
  289. package/dist/types/src/primitives/Container/Container.d.ts.map +1 -1
  290. package/dist/types/src/primitives/Container/Container.stories.d.ts.map +1 -1
  291. package/dist/types/src/{components → primitives}/DensityProvider/DensityProvider.d.ts.map +1 -1
  292. package/dist/types/src/primitives/DensityProvider/index.d.ts.map +1 -0
  293. package/dist/types/src/{components → primitives}/ElevationProvider/ElevationProvider.d.ts.map +1 -1
  294. package/dist/types/src/primitives/ElevationProvider/index.d.ts.map +1 -0
  295. package/dist/types/src/primitives/Flex/Flex.d.ts +5 -7
  296. package/dist/types/src/primitives/Flex/Flex.d.ts.map +1 -1
  297. package/dist/types/src/primitives/Flex/Flex.stories.d.ts.map +1 -1
  298. package/dist/types/src/primitives/Grid/Grid.d.ts +3 -8
  299. package/dist/types/src/primitives/Grid/Grid.d.ts.map +1 -1
  300. package/dist/types/src/primitives/Grid/Grid.stories.d.ts.map +1 -1
  301. package/dist/types/src/{components → primitives}/ThemeProvider/ThemeProvider.d.ts +1 -1
  302. package/dist/types/src/{components → primitives}/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  303. package/dist/types/src/{components → primitives}/ThemeProvider/ThemeProvider.stories.d.ts +1 -1
  304. package/dist/types/src/primitives/ThemeProvider/ThemeProvider.stories.d.ts.map +1 -0
  305. package/dist/types/src/primitives/ThemeProvider/TranslationsProvider.d.ts +128 -0
  306. package/dist/types/src/primitives/ThemeProvider/TranslationsProvider.d.ts.map +1 -0
  307. package/dist/types/src/primitives/ThemeProvider/index.d.ts +4 -0
  308. package/dist/types/src/primitives/ThemeProvider/index.d.ts.map +1 -0
  309. package/dist/types/src/primitives/index.d.ts +3 -2
  310. package/dist/types/src/primitives/index.d.ts.map +1 -1
  311. package/dist/types/src/testing/Loading.d.ts.map +1 -1
  312. package/dist/types/src/testing/decorators/withLayout.d.ts.map +1 -1
  313. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts.map +1 -1
  314. package/dist/types/src/testing/decorators/withTheme.d.ts +6 -2
  315. package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
  316. package/dist/types/src/theme/bindTheme.d.ts +3 -0
  317. package/dist/types/src/theme/bindTheme.d.ts.map +1 -0
  318. package/dist/types/src/theme/defaultTheme.d.ts +4 -0
  319. package/dist/types/src/theme/defaultTheme.d.ts.map +1 -0
  320. package/dist/types/src/theme/index.d.ts +31 -0
  321. package/dist/types/src/theme/index.d.ts.map +1 -0
  322. package/dist/types/src/translations.d.ts +17 -3
  323. package/dist/types/src/translations.d.ts.map +1 -1
  324. package/dist/types/src/util/index.d.ts +2 -1
  325. package/dist/types/src/util/index.d.ts.map +1 -1
  326. package/dist/types/src/util/mobile.d.ts +5 -0
  327. package/dist/types/src/util/mobile.d.ts.map +1 -0
  328. package/dist/types/src/util/slots.d.ts +57 -0
  329. package/dist/types/src/util/slots.d.ts.map +1 -0
  330. package/dist/types/src/util/usePx.d.ts.map +1 -1
  331. package/dist/types/tsconfig.tsbuildinfo +1 -1
  332. package/package.json +31 -26
  333. package/src/components/Avatars/Avatar.stories.tsx +2 -3
  334. package/src/components/Avatars/Avatar.theme.ts +93 -0
  335. package/src/components/Avatars/Avatar.tsx +1 -2
  336. package/src/components/Avatars/AvatarGroup.stories.tsx +0 -1
  337. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +1 -2
  338. package/src/components/Breadcrumb/Breadcrumb.theme.ts +26 -0
  339. package/src/components/Breadcrumb/Breadcrumb.tsx +14 -2
  340. package/src/components/Button/Button.stories.tsx +0 -1
  341. package/src/components/Button/Button.theme.ts +31 -0
  342. package/src/components/Button/Button.tsx +6 -14
  343. package/src/components/Button/IconButton.stories.tsx +56 -6
  344. package/src/components/Button/IconButton.theme.ts +21 -0
  345. package/src/components/Button/IconButton.tsx +3 -4
  346. package/src/components/Button/Toggle.stories.tsx +0 -1
  347. package/src/components/Button/Toggle.tsx +4 -4
  348. package/src/components/Button/ToggleGroup.stories.tsx +0 -1
  349. package/src/components/Button/ToggleGroup.tsx +12 -16
  350. package/src/components/Calendar/Calendar.stories.tsx +43 -0
  351. package/src/components/Calendar/Calendar.theme.ts +74 -0
  352. package/src/components/Calendar/Calendar.tsx +196 -0
  353. package/src/components/Calendar/index.ts +5 -0
  354. package/src/components/Card/Card.stories.tsx +55 -34
  355. package/src/components/Card/Card.theme.ts +93 -0
  356. package/src/components/Card/Card.tsx +297 -156
  357. package/src/components/Carousel/Carousel.tsx +371 -0
  358. package/src/components/Carousel/index.ts +5 -0
  359. package/src/components/Clipboard/CopyButton.tsx +6 -7
  360. package/src/components/Column/AUDIT.md +148 -0
  361. package/src/components/Column/Column.stories.tsx +181 -0
  362. package/src/components/Column/Column.theme.ts +48 -0
  363. package/src/components/Column/Column.tsx +166 -0
  364. package/src/{primitives → components}/Column/index.ts +1 -0
  365. package/src/components/Column/withColumn.ts +27 -0
  366. package/src/components/DatePicker/DatePicker.stories.tsx +102 -0
  367. package/src/components/DatePicker/DatePicker.theme.ts +35 -0
  368. package/src/components/DatePicker/DatePicker.tsx +279 -0
  369. package/src/components/DatePicker/index.ts +5 -0
  370. package/src/components/Dialog/AlertDialog.stories.tsx +5 -6
  371. package/src/components/Dialog/AlertDialog.tsx +72 -132
  372. package/src/components/Dialog/Dialog.stories.tsx +65 -10
  373. package/src/components/Dialog/Dialog.theme.ts +61 -0
  374. package/src/components/Dialog/Dialog.tsx +124 -99
  375. package/src/components/ErrorFallback/ErrorFallback.stories.tsx +3 -8
  376. package/src/components/ErrorFallback/ErrorFallback.tsx +14 -8
  377. package/src/components/ErrorFallback/ErrorStack.tsx +48 -8
  378. package/src/components/Focus/AUDIT.md +43 -0
  379. package/src/components/Focus/Focus.stories.tsx +230 -0
  380. package/src/components/Focus/Focus.theme.ts +32 -0
  381. package/src/components/Focus/Focus.tsx +201 -0
  382. package/src/components/Focus/index.ts +5 -0
  383. package/src/components/Icon/Icon.stories.tsx +43 -13
  384. package/src/components/Icon/Icon.theme.ts +45 -0
  385. package/src/components/Icon/Icon.tsx +14 -3
  386. package/src/components/Icon/IconBlock.tsx +38 -0
  387. package/src/components/Icon/index.ts +1 -0
  388. package/src/components/Image/Image.stories.tsx +4 -4
  389. package/src/components/Image/Image.tsx +31 -8
  390. package/src/components/Input/Input.stories.tsx +135 -33
  391. package/src/components/Input/Input.theme.ts +191 -0
  392. package/src/components/Input/Input.tsx +214 -9
  393. package/src/components/Input/SegmentedInput.tsx +454 -0
  394. package/src/components/Input/constants.ts +5 -0
  395. package/src/components/Input/index.ts +2 -0
  396. package/src/components/Link/Link.stories.tsx +0 -1
  397. package/src/components/Link/Link.theme.ts +16 -0
  398. package/src/components/Link/Link.tsx +10 -2
  399. package/src/components/List/List.stories.tsx +1 -2
  400. package/src/components/List/List.theme.ts +47 -0
  401. package/src/components/List/List.tsx +8 -7
  402. package/src/components/List/ListDropIndicator.tsx +1 -2
  403. package/src/components/List/Tree.stories.tsx +2 -3
  404. package/src/components/List/Tree.tsx +0 -1
  405. package/src/components/List/TreeDropIndicator.tsx +3 -3
  406. package/src/components/List/Treegrid.stories.tsx +26 -27
  407. package/src/components/List/Treegrid.theme.ts +35 -0
  408. package/src/components/List/Treegrid.tsx +15 -16
  409. package/src/components/Main/Main.stories.tsx +0 -1
  410. package/src/components/Main/Main.theme.ts +29 -0
  411. package/src/components/Main/Main.tsx +10 -9
  412. package/src/components/Main/constants.ts +6 -0
  413. package/src/components/Main/index.ts +1 -0
  414. package/src/components/MediaPlayer/MediaPlayer.stories.tsx +50 -0
  415. package/src/components/MediaPlayer/MediaPlayer.tsx +178 -0
  416. package/src/components/MediaPlayer/index.ts +5 -0
  417. package/src/components/Menu/ContextMenu.stories.tsx +0 -4
  418. package/src/components/Menu/DropdownMenu.stories.tsx +0 -4
  419. package/src/components/Menu/DropdownMenu.tsx +63 -57
  420. package/src/components/Menu/Menu.theme.ts +48 -0
  421. package/src/components/Message/Message.stories.tsx +48 -11
  422. package/src/components/Message/Message.theme.ts +44 -0
  423. package/src/components/Message/Message.tsx +75 -19
  424. package/src/{primitives → components}/Panel/Panel.stories.tsx +9 -9
  425. package/src/components/Panel/Panel.theme.ts +42 -0
  426. package/src/components/Panel/Panel.tsx +121 -0
  427. package/src/components/Popover/Popover.stories.tsx +4 -5
  428. package/src/components/Popover/Popover.theme.ts +40 -0
  429. package/src/components/Popover/Popover.tsx +49 -49
  430. package/src/components/ScrollArea/ScrollArea.stories.tsx +89 -30
  431. package/src/components/ScrollArea/ScrollArea.theme.ts +107 -0
  432. package/src/components/ScrollArea/ScrollArea.tsx +40 -23
  433. package/src/components/ScrollArea/index.ts +1 -0
  434. package/src/components/ScrollArea/scrollbar.ts +21 -0
  435. package/src/components/ScrollContainer/ScrollContainer.stories.tsx +21 -19
  436. package/src/components/ScrollContainer/ScrollContainer.tsx +215 -106
  437. package/src/components/Select/Select.stories.tsx +5 -6
  438. package/src/components/Select/Select.theme.ts +55 -0
  439. package/src/components/Select/Select.tsx +26 -10
  440. package/src/components/Separator/Separator.theme.ts +23 -0
  441. package/src/components/Separator/Separator.tsx +4 -7
  442. package/src/components/Skeleton/Skeleton.stories.tsx +0 -1
  443. package/src/components/Skeleton/Skeleton.theme.ts +22 -0
  444. package/src/components/Splitter/Splitter.stories.tsx +30 -30
  445. package/src/components/Splitter/Splitter.theme.ts +18 -0
  446. package/src/components/Splitter/Splitter.tsx +36 -40
  447. package/src/components/Status/Status.stories.tsx +0 -1
  448. package/src/components/Status/Status.theme.ts +31 -0
  449. package/src/components/Status/Status.tsx +7 -5
  450. package/src/components/Tag/Tag.stories.tsx +0 -1
  451. package/src/components/Tag/Tag.theme.ts +22 -0
  452. package/src/components/Toast/Toast.stories.tsx +41 -21
  453. package/src/components/Toast/Toast.theme.ts +56 -0
  454. package/src/components/Toast/Toast.tsx +105 -52
  455. package/src/components/Toolbar/Toolbar.stories.tsx +0 -1
  456. package/src/components/Toolbar/Toolbar.theme.ts +36 -0
  457. package/src/components/Toolbar/Toolbar.tsx +83 -46
  458. package/src/components/Tooltip/Tooltip.stories.tsx +7 -17
  459. package/src/components/Tooltip/Tooltip.theme.ts +19 -0
  460. package/src/components/Tooltip/Tooltip.tsx +33 -33
  461. package/src/components/Tooltip/index.ts +1 -0
  462. package/src/components/Tooltip/tooltipContent.ts +16 -0
  463. package/src/components/index.ts +8 -5
  464. package/src/exemplars/generics.stories.tsx +7 -16
  465. package/src/exemplars/slot.stories.tsx +66 -57
  466. package/src/exemplars/tabster.stories.tsx +1 -1
  467. package/src/exemplars/virtualizer.stories.tsx +4 -5
  468. package/src/hooks/index.ts +1 -0
  469. package/src/hooks/useDensityContext.ts +3 -3
  470. package/src/hooks/useElevationContext.ts +1 -1
  471. package/src/hooks/useThemeContext.ts +1 -1
  472. package/src/hooks/useTranslationsContext.ts +1 -1
  473. package/src/index.ts +1 -0
  474. package/src/playground/Custom.stories.tsx +13 -36
  475. package/src/primitives/Container/Container.stories.tsx +0 -1
  476. package/src/primitives/Container/Container.tsx +7 -8
  477. package/src/{components → primitives}/DensityProvider/DensityProvider.tsx +1 -1
  478. package/src/primitives/Flex/Flex.stories.tsx +0 -1
  479. package/src/primitives/Flex/Flex.tsx +12 -12
  480. package/src/primitives/Grid/Grid.stories.tsx +0 -1
  481. package/src/primitives/Grid/Grid.tsx +6 -9
  482. package/src/{components → primitives}/ThemeProvider/ThemeProvider.stories.tsx +1 -2
  483. package/src/{components → primitives}/ThemeProvider/ThemeProvider.tsx +6 -5
  484. package/src/{components → primitives}/ThemeProvider/index.ts +2 -2
  485. package/src/primitives/index.ts +4 -2
  486. package/src/testing/Loading.tsx +25 -4
  487. package/src/testing/decorators/withLayout.tsx +7 -17
  488. package/src/testing/decorators/withLayoutVariants.tsx +1 -1
  489. package/src/testing/decorators/withTheme.tsx +23 -12
  490. package/src/theme/bindTheme.ts +13 -0
  491. package/src/theme/defaultTheme.ts +83 -0
  492. package/src/theme/index.ts +37 -0
  493. package/src/translations.ts +17 -3
  494. package/src/util/index.ts +2 -1
  495. package/src/util/mobile.ts +11 -0
  496. package/src/util/slots.ts +129 -0
  497. package/src/util/usePx.ts +5 -1
  498. package/dist/lib/browser/chunk-2FKSMWNY.mjs +0 -774
  499. package/dist/lib/browser/chunk-2FKSMWNY.mjs.map +0 -7
  500. package/dist/lib/node-esm/chunk-ZNBLTSHI.mjs +0 -776
  501. package/dist/lib/node-esm/chunk-ZNBLTSHI.mjs.map +0 -7
  502. package/dist/types/src/components/DensityProvider/index.d.ts.map +0 -1
  503. package/dist/types/src/components/ElevationProvider/index.d.ts.map +0 -1
  504. package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts.map +0 -1
  505. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +0 -129
  506. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +0 -1
  507. package/dist/types/src/components/ThemeProvider/index.d.ts +0 -4
  508. package/dist/types/src/components/ThemeProvider/index.d.ts.map +0 -1
  509. package/dist/types/src/primitives/Column/Column.d.ts +0 -26
  510. package/dist/types/src/primitives/Column/Column.d.ts.map +0 -1
  511. package/dist/types/src/primitives/Column/Column.stories.d.ts.map +0 -1
  512. package/dist/types/src/primitives/Column/index.d.ts +0 -2
  513. package/dist/types/src/primitives/Column/index.d.ts.map +0 -1
  514. package/dist/types/src/primitives/Panel/Panel.d.ts +0 -26
  515. package/dist/types/src/primitives/Panel/Panel.d.ts.map +0 -1
  516. package/dist/types/src/primitives/Panel/Panel.stories.d.ts.map +0 -1
  517. package/dist/types/src/primitives/Panel/index.d.ts.map +0 -1
  518. package/dist/types/src/util/hasIosKeyboard.d.ts +0 -2
  519. package/dist/types/src/util/hasIosKeyboard.d.ts.map +0 -1
  520. package/src/primitives/Column/Column.stories.tsx +0 -78
  521. package/src/primitives/Column/Column.tsx +0 -134
  522. package/src/primitives/Panel/Panel.tsx +0 -119
  523. package/src/util/hasIosKeyboard.ts +0 -8
  524. /package/dist/types/src/{primitives → components}/Panel/Panel.stories.d.ts +0 -0
  525. /package/dist/types/src/{primitives → components}/Panel/index.d.ts +0 -0
  526. /package/dist/types/src/{components → primitives}/DensityProvider/DensityProvider.d.ts +0 -0
  527. /package/dist/types/src/{components → primitives}/DensityProvider/index.d.ts +0 -0
  528. /package/dist/types/src/{components → primitives}/ElevationProvider/ElevationProvider.d.ts +0 -0
  529. /package/dist/types/src/{components → primitives}/ElevationProvider/index.d.ts +0 -0
  530. /package/src/{primitives → components}/Panel/index.ts +0 -0
  531. /package/src/{components → primitives}/DensityProvider/index.ts +0 -0
  532. /package/src/{components → primitives}/ElevationProvider/ElevationProvider.tsx +0 -0
  533. /package/src/{components → primitives}/ElevationProvider/index.ts +0 -0
  534. /package/src/{components → primitives}/ThemeProvider/TranslationsProvider.tsx +0 -0
@@ -2,103 +2,157 @@
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
- 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';
23
- import React, { type ComponentPropsWithRef, type FunctionComponent, forwardRef } from 'react';
5
+ import * as ToastPrimitive from '@radix-ui/react-toast';
6
+ import React, { type ComponentPropsWithRef, forwardRef } from 'react';
7
+ import { useTranslation } from 'react-i18next';
8
+
9
+ import { translationKey } from '#translations';
24
10
 
25
11
  import { useThemeContext } from '../../hooks';
12
+ import { DensityProvider, ElevationProvider } from '../../primitives';
26
13
  import { type ThemedClassName } from '../../util';
27
- import { ElevationProvider } from '../ElevationProvider';
14
+ import { IconButton } from '../Button';
15
+ import { Column } from '../Column';
16
+ import { Icon } from '../Icon';
17
+
18
+ //
19
+ // Provider
20
+ //
28
21
 
29
- type ToastProviderProps = ToastProviderPrimitiveProps;
22
+ type ToastProviderProps = ToastPrimitive.ToastProviderProps;
30
23
 
31
- const ToastProvider: FunctionComponent<ToastProviderProps> = ToastProviderPrimitive;
24
+ const ToastProvider = ToastPrimitive.Provider;
32
25
 
33
- type ToastViewportProps = ThemedClassName<ToastViewportPrimitiveProps>;
26
+ //
27
+ // Viewport
28
+ //
29
+
30
+ type ToastViewportProps = ThemedClassName<ToastPrimitive.ToastViewportProps>;
34
31
 
35
32
  const ToastViewport = forwardRef<HTMLOListElement, ToastViewportProps>(({ classNames, ...props }, forwardedRef) => {
36
33
  const { tx } = useThemeContext();
37
- return <ToastViewportPrimitive className={tx('toast.viewport', {}, classNames)} ref={forwardedRef} />;
34
+ return <ToastPrimitive.Viewport {...props} className={tx('toast.viewport', {}, classNames)} ref={forwardedRef} />;
38
35
  });
39
36
 
40
- type ToastRootProps = ThemedClassName<ToastRootPrimitiveProps>;
37
+ ToastViewport.displayName = 'Toast.Viewport';
38
+
39
+ //
40
+ // Root
41
+ //
42
+
43
+ type ToastRootProps = ThemedClassName<ToastPrimitive.ToastProps>;
41
44
 
42
45
  const ToastRoot = forwardRef<HTMLLIElement, ToastRootProps>(({ classNames, children, ...props }, forwardedRef) => {
43
46
  const { tx } = useThemeContext();
44
47
  return (
45
- <ToastRootPrimitive {...props} className={tx('toast.root', {}, classNames)} ref={forwardedRef}>
46
- <ElevationProvider elevation='toast'>{children}</ElevationProvider>
47
- </ToastRootPrimitive>
48
+ <ToastPrimitive.Root {...props} className={tx('toast.root', {}, classNames)} ref={forwardedRef}>
49
+ <ElevationProvider elevation='toast'>
50
+ <Column.Root classNames={tx('toast.grid', {})}>{children}</Column.Root>
51
+ </ElevationProvider>
52
+ </ToastPrimitive.Root>
48
53
  );
49
54
  });
50
55
 
51
- type ToastBodyProps = ThemedClassName<ComponentPropsWithRef<typeof Primitive.div>>;
56
+ ToastRoot.displayName = 'Toast.Root';
52
57
 
53
- const ToastBody = forwardRef<HTMLDivElement, ToastBodyProps>(({ asChild, classNames, ...props }, forwardedRef) => {
54
- const { tx } = useThemeContext();
55
- const Comp = asChild ? Slot : Primitive.div;
56
- return <Comp {...props} className={tx('toast.body', {}, classNames)} ref={forwardedRef} />;
57
- });
58
+ //
59
+ // Title
60
+ //
58
61
 
59
- type ToastTitleProps = ThemedClassName<ToastTitlePrimitiveProps>;
62
+ type ToastTitleProps = ThemedClassName<ToastPrimitive.ToastTitleProps> & {
63
+ icon?: string;
64
+ onClose?: () => void;
65
+ };
60
66
 
61
67
  const ToastTitle = forwardRef<HTMLHeadingElement, ToastTitleProps>(
62
- ({ asChild, classNames, ...props }, forwardedRef) => {
68
+ ({ classNames, children, icon, onClose, ...props }, forwardedRef) => {
69
+ const { t } = useTranslation(translationKey);
63
70
  const { tx } = useThemeContext();
64
- const Comp = asChild ? Slot : ToastTitlePrimitive;
65
- 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
+ );
66
93
  },
67
94
  );
68
95
 
69
- type ToastDescriptionProps = ThemedClassName<ToastDescriptionPrimitiveProps>;
96
+ ToastTitle.displayName = 'Toast.Title';
97
+
98
+ //
99
+ // Description
100
+ //
101
+
102
+ type ToastDescriptionProps = ThemedClassName<ToastPrimitive.ToastDescriptionProps>;
70
103
 
71
104
  const ToastDescription = forwardRef<HTMLParagraphElement, ToastDescriptionProps>(
72
- ({ asChild, classNames, ...props }, forwardedRef) => {
105
+ ({ classNames, children, ...props }, forwardedRef) => {
73
106
  const { tx } = useThemeContext();
74
- const Comp = asChild ? Slot : ToastDescriptionPrimitive;
75
- 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
+ );
76
112
  },
77
113
  );
78
114
 
79
- type ToastActionsProps = ThemedClassName<ComponentPropsWithRef<typeof Primitive.div>>;
115
+ ToastDescription.displayName = 'Toast.Description';
116
+
117
+ //
118
+ // Actions
119
+ //
120
+
121
+ type ToastActionsProps = ThemedClassName<ComponentPropsWithRef<'div'>>;
80
122
 
81
123
  const ToastActions = forwardRef<HTMLDivElement, ToastActionsProps>(
82
- ({ asChild, classNames, ...props }, forwardedRef) => {
124
+ ({ classNames, children, ...props }, forwardedRef) => {
83
125
  const { tx } = useThemeContext();
84
- const Comp = asChild ? Slot : Primitive.div;
85
- 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
+ );
86
131
  },
87
132
  );
88
133
 
89
- type ToastActionProps = ToastActionPrimitiveProps;
134
+ ToastActions.displayName = 'Toast.Actions';
90
135
 
91
- const ToastAction: FunctionComponent<ToastActionProps> = ToastActionPrimitive;
136
+ //
137
+ // Action / Close
138
+ //
139
+
140
+ type ToastActionProps = ToastPrimitive.ToastActionProps;
141
+
142
+ const ToastAction = ToastPrimitive.Action;
92
143
 
93
- type ToastCloseProps = ToastClosePrimitiveProps;
144
+ type ToastCloseProps = ToastPrimitive.ToastCloseProps;
94
145
 
95
- const ToastClose: FunctionComponent<ToastCloseProps> = ToastClosePrimitive;
146
+ const ToastClose = ToastPrimitive.Close;
147
+
148
+ //
149
+ // Toast
150
+ //
96
151
 
97
152
  export const Toast = {
98
153
  Provider: ToastProvider,
99
154
  Viewport: ToastViewport,
100
155
  Root: ToastRoot,
101
- Body: ToastBody,
102
156
  Title: ToastTitle,
103
157
  Description: ToastDescription,
104
158
  Actions: ToastActions,
@@ -110,7 +164,6 @@ export type {
110
164
  ToastProviderProps,
111
165
  ToastViewportProps,
112
166
  ToastRootProps,
113
- ToastBodyProps,
114
167
  ToastTitleProps,
115
168
  ToastDescriptionProps,
116
169
  ToastActionsProps,
@@ -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 = {};
@@ -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,15 +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, { Fragment, forwardRef } from 'react';
9
+ import React, { type MouseEventHandler, forwardRef } from 'react';
10
10
  import { useTranslation } from 'react-i18next';
11
11
 
12
- import { composableProps, 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 ThemedClassName } from '../../util';
17
+ import { type ToolbarStyleProps } from '../../theme';
18
+ import { composable, composableProps, slottable } from '../../util';
18
19
  import {
19
20
  Button,
20
21
  ButtonGroup,
@@ -34,50 +35,38 @@ import { Separator, type SeparatorProps } from '../Separator';
34
35
  // Root
35
36
  //
36
37
 
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
- { children, density, disabled, layoutManaged, textBlockWidth: textBlockWidthProp, orientation, ...props },
48
- forwardedRef,
49
- ) => {
50
- const { className, dir: _, ...rest } = composableProps(props);
38
+ type ToolbarRootProps = ToolbarPrimitive.ToolbarProps & ToolbarStyleProps;
39
+
40
+ const ToolbarRoot = composable<HTMLDivElement, ToolbarRootProps>(
41
+ ({ children, density, disabled, layoutManaged, orientation, ...props }, forwardedRef) => {
42
+ const { className, role, ...rest } = composableProps(props);
51
43
  const { tx } = useThemeContext();
52
- const InnerRoot = textBlockWidthProp ? 'div' : Fragment;
53
- const innerRootProps = textBlockWidthProp
54
- ? {
55
- role: 'none',
56
- className: tx('toolbar.inner', { layoutManaged }, className),
57
- }
58
- : {};
59
44
 
60
45
  return (
61
46
  <ToolbarPrimitive.Root
62
47
  {...rest}
48
+ // Only pass role when explicitly set; radix provides role="toolbar" by default.
49
+ {...(role !== 'none' && { role })}
63
50
  orientation={orientation}
64
51
  data-arrow-keys={orientation === 'vertical' ? 'up down' : 'left right'}
65
52
  className={tx('toolbar.root', { density, disabled, layoutManaged }, className)}
66
53
  ref={forwardedRef}
67
54
  >
68
- <InnerRoot {...innerRootProps}>{children}</InnerRoot>
55
+ {children}
69
56
  </ToolbarPrimitive.Root>
70
57
  );
71
58
  },
72
59
  );
73
60
 
61
+ ToolbarRoot.displayName = 'Toolbar.Root';
62
+
74
63
  //
75
64
  // Text
76
65
  //
77
66
 
78
- type ToolbarTextProps = SlottableProps<HTMLDivElement>;
67
+ type ToolbarTextProps = SlottableProps;
79
68
 
80
- const ToolbarText = forwardRef<HTMLDivElement, ToolbarTextProps>(({ children, asChild, ...props }, forwardedRef) => {
69
+ const ToolbarText = slottable<HTMLDivElement>(({ children, asChild, ...props }, forwardedRef) => {
81
70
  const { className, ...rest } = composableProps(props);
82
71
  const Comp = asChild ? Slot : Primitive.div;
83
72
  const { tx } = useThemeContext();
@@ -88,6 +77,8 @@ const ToolbarText = forwardRef<HTMLDivElement, ToolbarTextProps>(({ children, as
88
77
  );
89
78
  });
90
79
 
80
+ ToolbarText.displayName = 'Toolbar.Text';
81
+
91
82
  //
92
83
  // Button
93
84
  //
@@ -102,6 +93,8 @@ const ToolbarButton = forwardRef<HTMLButtonElement, ToolbarButtonProps>((props,
102
93
  );
103
94
  });
104
95
 
96
+ ToolbarButton.displayName = 'Toolbar.Button';
97
+
105
98
  //
106
99
  // IconButton
107
100
  //
@@ -111,11 +104,13 @@ type ToolbarIconButtonProps = IconButtonProps;
111
104
  const ToolbarIconButton = forwardRef<HTMLButtonElement, ToolbarIconButtonProps>((props, forwardedRef) => {
112
105
  return (
113
106
  <ToolbarPrimitive.Button asChild>
114
- <IconButton {...props} noTooltip ref={forwardedRef} />
107
+ <IconButton {...props} ref={forwardedRef} />
115
108
  </ToolbarPrimitive.Button>
116
109
  );
117
110
  });
118
111
 
112
+ ToolbarIconButton.displayName = 'Toolbar.IconButton';
113
+
119
114
  type ToolbarToggleProps = ToggleProps;
120
115
 
121
116
  const ToolbarToggle = forwardRef<HTMLButtonElement, ToolbarToggleProps>((props, forwardedRef) => {
@@ -126,6 +121,8 @@ const ToolbarToggle = forwardRef<HTMLButtonElement, ToolbarToggleProps>((props,
126
121
  );
127
122
  });
128
123
 
124
+ ToolbarToggle.displayName = 'Toolbar.Toggle';
125
+
129
126
  //
130
127
  // Link
131
128
  //
@@ -140,6 +137,8 @@ const ToolbarLink = forwardRef<HTMLAnchorElement, ToolbarLinkProps>((props, forw
140
137
  );
141
138
  });
142
139
 
140
+ ToolbarLink.displayName = 'Toolbar.Link';
141
+
143
142
  type ToolbarToggleGroupProps = (
144
143
  | Omit<ToolbarPrimitive.ToolbarToggleGroupSingleProps, 'className'>
145
144
  | Omit<ToolbarPrimitive.ToolbarToggleGroupMultipleProps, 'className'>
@@ -160,6 +159,8 @@ const ToolbarToggleGroup = forwardRef<HTMLDivElement, ToolbarToggleGroupProps>(
160
159
  },
161
160
  );
162
161
 
162
+ ToolbarToggleGroup.displayName = 'Toolbar.ToggleGroup';
163
+
163
164
  type ToolbarToggleGroupItemProps = ToggleGroupItemProps;
164
165
 
165
166
  const ToolbarToggleGroupItem = forwardRef<HTMLButtonElement, ToolbarToggleGroupItemProps>(
@@ -172,10 +173,12 @@ const ToolbarToggleGroupItem = forwardRef<HTMLButtonElement, ToolbarToggleGroupI
172
173
  },
173
174
  );
174
175
 
176
+ ToolbarToggleGroupItem.displayName = 'Toolbar.ToggleGroupItem';
177
+
175
178
  type ToolbarToggleGroupIconItemProps = Omit<ToggleGroupItemPrimitiveProps, 'className'> & IconButtonProps;
176
179
 
177
180
  const ToolbarToggleGroupIconItem = forwardRef<HTMLButtonElement, ToolbarToggleGroupIconItemProps>(
178
- ({ variant, density, elevation, classNames, icon, label, iconOnly, ...props }, forwardedRef) => {
181
+ ({ variant, density, elevation, classNames, icon, label, iconOnly, iconClassNames, ...props }, forwardedRef) => {
179
182
  return (
180
183
  <ToolbarPrimitive.ToolbarToggleItem {...props} asChild>
181
184
  <IconButton
@@ -187,6 +190,7 @@ const ToolbarToggleGroupIconItem = forwardRef<HTMLButtonElement, ToolbarToggleGr
187
190
  icon,
188
191
  label,
189
192
  iconOnly,
193
+ iconClassNames,
190
194
  }}
191
195
  ref={forwardedRef}
192
196
  />
@@ -195,6 +199,8 @@ const ToolbarToggleGroupIconItem = forwardRef<HTMLButtonElement, ToolbarToggleGr
195
199
  },
196
200
  );
197
201
 
202
+ ToolbarToggleGroupIconItem.displayName = 'Toolbar.ToggleGroupIconItem';
203
+
198
204
  //
199
205
  // Separator
200
206
  //
@@ -205,7 +211,7 @@ const ToolbarSeparator = forwardRef<HTMLDivElement, ToolbarSeparatorProps>(
205
211
  ({ variant = 'gap', ...props }, forwardedRef) => {
206
212
  return variant === 'line' ? (
207
213
  <ToolbarPrimitive.Separator asChild>
208
- <Separator {...props} ref={forwardedRef} />
214
+ <Separator orientation='vertical' {...props} ref={forwardedRef} />
209
215
  </ToolbarPrimitive.Separator>
210
216
  ) : (
211
217
  <ToolbarPrimitive.Separator className='grow' ref={forwardedRef} />
@@ -213,6 +219,8 @@ const ToolbarSeparator = forwardRef<HTMLDivElement, ToolbarSeparatorProps>(
213
219
  },
214
220
  );
215
221
 
222
+ ToolbarSeparator.displayName = 'Toolbar.Separator';
223
+
216
224
  //
217
225
  // DragHandle
218
226
  //
@@ -225,13 +233,13 @@ const ToolbarDragHandle = forwardRef<HTMLButtonElement, ToolbarDragHandleProps>(
225
233
  return (
226
234
  <ToolbarIconButton
227
235
  data-testid={testId}
236
+ tabIndex={-1}
228
237
  noTooltip
229
238
  iconOnly
230
239
  icon='ph--dots-six-vertical--regular'
231
240
  variant='ghost'
232
- label={label ?? t('toolbar drag handle label')}
233
- classNames='cursor-pointer'
234
- size={5}
241
+ label={label ?? t('toolbar-drag-handle.label')}
242
+ classNames='dx-focus-ring-none cursor-pointer'
235
243
  disabled={!forwardedRef}
236
244
  ref={forwardedRef}
237
245
  />
@@ -239,23 +247,47 @@ const ToolbarDragHandle = forwardRef<HTMLButtonElement, ToolbarDragHandleProps>(
239
247
  },
240
248
  );
241
249
 
250
+ ToolbarDragHandle.displayName = 'Toolbar.DragHandle';
251
+
242
252
  //
243
- // CloseIconButton
253
+ // ActionIconButton
244
254
  //
245
255
 
246
- 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
+ };
247
274
 
248
- const ToolbarCloseIconButton = forwardRef<HTMLButtonElement, ToolbarCloseIconButtonProps>(
249
- ({ onClick, label }, forwardedRef) => {
275
+ const TOOLBAR_ACTION_LABEL_KEYS: Record<ToolbarActionIconButtonAction, string> = {
276
+ close: 'toolbar-close.label',
277
+ delete: 'toolbar-delete.label',
278
+ };
279
+
280
+ const ToolbarActionIconButton = forwardRef<HTMLButtonElement, ToolbarActionIconButtonProps>(
281
+ ({ action, onClick, label }, forwardedRef) => {
250
282
  const { t } = useTranslation(translationKey);
283
+
251
284
  return (
252
285
  <ToolbarIconButton
253
286
  iconOnly
254
- icon='ph--x--regular'
287
+ icon={TOOLBAR_ACTION_ICONS[action]}
255
288
  variant='ghost'
256
- label={label ?? t('toolbar close label')}
289
+ label={label ?? t(TOOLBAR_ACTION_LABEL_KEYS[action])}
257
290
  classNames='cursor-pointer'
258
- size={5}
259
291
  onClick={onClick}
260
292
  ref={forwardedRef}
261
293
  />
@@ -263,6 +295,8 @@ const ToolbarCloseIconButton = forwardRef<HTMLButtonElement, ToolbarCloseIconBut
263
295
  },
264
296
  );
265
297
 
298
+ ToolbarActionIconButton.displayName = 'Toolbar.ActionIconButton';
299
+
266
300
  //
267
301
  // Menu
268
302
  //
@@ -278,7 +312,7 @@ type ToolbarMenuProps<T extends any | void = void> = {
278
312
  };
279
313
 
280
314
  // TODO(burdon): Make slottable.
281
- const ToolbarMenu = <T extends any | void = void>({ context, items }: ToolbarMenuProps<T>) => {
315
+ function ToolbarMenu<T extends any | void = void>({ context, items }: ToolbarMenuProps<T>) {
282
316
  const { t } = useTranslation(translationKey);
283
317
 
284
318
  return (
@@ -288,7 +322,7 @@ const ToolbarMenu = <T extends any | void = void>({ context, items }: ToolbarMen
288
322
  iconOnly
289
323
  variant='ghost'
290
324
  icon='ph--dots-three-vertical--regular'
291
- label={t('toolbar menu label')}
325
+ label={t('toolbar-menu.label')}
292
326
  />
293
327
  </DropdownMenu.Trigger>
294
328
  {(items?.length ?? 0) > 0 && (
@@ -307,7 +341,9 @@ const ToolbarMenu = <T extends any | void = void>({ context, items }: ToolbarMen
307
341
  )}
308
342
  </DropdownMenu.Root>
309
343
  );
310
- };
344
+ }
345
+
346
+ ToolbarMenu.displayName = 'Toolbar.Menu';
311
347
 
312
348
  //
313
349
  // Toolbar
@@ -325,7 +361,7 @@ export const Toolbar = {
325
361
  ToggleGroupIconItem: ToolbarToggleGroupIconItem,
326
362
  Separator: ToolbarSeparator,
327
363
  DragHandle: ToolbarDragHandle,
328
- CloseIconButton: ToolbarCloseIconButton,
364
+ ActionIconButton: ToolbarActionIconButton,
329
365
  Menu: ToolbarMenu,
330
366
  };
331
367
 
@@ -341,7 +377,8 @@ export type {
341
377
  ToolbarToggleGroupIconItemProps,
342
378
  ToolbarSeparatorProps,
343
379
  ToolbarDragHandleProps,
344
- ToolbarCloseIconButtonProps,
380
+ ToolbarActionIconButtonAction,
381
+ ToolbarActionIconButtonProps,
345
382
  ToolbarMenuItem,
346
383
  ToolbarMenuProps,
347
384
  };
@@ -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>
@@ -51,9 +50,6 @@ export const Default: Story = {
51
50
  },
52
51
  ],
53
52
  },
54
- parameters: {
55
- chromatic: { delay: 500 },
56
- },
57
53
  };
58
54
 
59
55
  export const DefaultOpen: Story = {
@@ -66,23 +62,17 @@ export const DefaultOpen: Story = {
66
62
  },
67
63
  ],
68
64
  },
69
- parameters: {
70
- chromatic: { delay: 500 },
71
- },
72
65
  };
73
66
 
74
67
  export const StressTest: Story = {
75
68
  args: {
76
69
  defaultOpen: true,
77
- tooltips: faker.helpers.multiple(
70
+ tooltips: random.helpers.multiple(
78
71
  () => ({
79
- label: faker.lorem.words(2),
80
- content: faker.lorem.words(5),
72
+ label: random.lorem.words(2),
73
+ content: random.lorem.words(5),
81
74
  }),
82
75
  { count: 32 },
83
76
  ),
84
77
  },
85
- parameters: {
86
- chromatic: { disableSnapshot: true },
87
- },
88
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
+ };