@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
@@ -54,7 +54,7 @@ type TooltipContextValue = {
54
54
  open: boolean;
55
55
  stateAttribute: 'closed' | 'delayed-open' | 'instant-open';
56
56
  trigger: TooltipTriggerElement | null;
57
- onTriggerChange(trigger: TooltipTriggerElement | null): void;
57
+ onTriggerChange(trigger: TooltipTriggerElement | null, content?: ReactNode, side?: TooltipSide): void;
58
58
  onTriggerEnter(): void;
59
59
  onTriggerLeave(): void;
60
60
  onOpen(): void;
@@ -111,15 +111,18 @@ const TooltipProvider: FC<TooltipProviderProps> = (props: TooltipScopedProps<Too
111
111
 
112
112
  const popperScope = usePopperScope(__scopeTooltip);
113
113
  const [trigger, setTrigger] = useState<HTMLButtonElement | null>(null);
114
- const [content, setContent] = useState<string>('');
114
+ const [content, setContent] = useState<ReactNode>(null);
115
115
  const [side, setSide] = useState<TooltipSide | undefined>(undefined);
116
116
  const triggerRef = useRef<HTMLButtonElement | null>(trigger);
117
- const handleTriggerChange = useCallback((nextTrigger: HTMLButtonElement | null) => {
118
- setTrigger(nextTrigger);
119
- triggerRef.current = nextTrigger;
120
- setContent(nextTrigger?.getAttribute('data-tooltip-content') ?? '');
121
- setSide((nextTrigger?.getAttribute('data-tooltip-side') as TooltipSide | null) ?? undefined);
122
- }, []);
117
+ const handleTriggerChange = useCallback(
118
+ (nextTrigger: HTMLButtonElement | null, nextContent?: ReactNode, nextSide?: TooltipSide) => {
119
+ setTrigger(nextTrigger);
120
+ triggerRef.current = nextTrigger;
121
+ setContent(nextContent ?? null);
122
+ setSide(nextSide);
123
+ },
124
+ [],
125
+ );
123
126
  const contentId = useId();
124
127
  const openTimerRef = useRef(0);
125
128
  const wasOpenDelayedRef = useRef(false);
@@ -244,13 +247,13 @@ const TooltipVirtualTrigger = ({
244
247
  // TooltipTrigger
245
248
  //
246
249
 
247
- const TRIGGER_NAME = 'TooltipTrigger';
250
+ const TRIGGER_NAME = 'Tooltip.Trigger';
248
251
 
249
252
  type TooltipTriggerElement = ComponentRef<typeof Primitive.button>;
250
253
  type PrimitiveButtonProps = ComponentPropsWithoutRef<typeof Primitive.button>;
251
- type TooltipTriggerProps = PrimitiveButtonProps &
254
+ type TooltipTriggerProps = Omit<PrimitiveButtonProps, 'content'> &
252
255
  Pick<TooltipProps, 'delayDuration'> & {
253
- content?: string;
256
+ content?: ReactNode;
254
257
  side?: TooltipSide;
255
258
  onInteract?: (event: SyntheticEvent) => void;
256
259
  };
@@ -283,8 +286,6 @@ const TooltipTrigger = forwardRef<TooltipTriggerElement, TooltipTriggerProps>(
283
286
  // commonly anchors and the anchor `type` attribute signifies MIME type.
284
287
  aria-describedby={context.open ? context.contentId : undefined}
285
288
  data-state={context.stateAttribute}
286
- data-tooltip-content={content}
287
- data-tooltip-side={side}
288
289
  {...triggerProps}
289
290
  ref={composedRefs}
290
291
  onPointerMove={composeEventHandlers(props.onPointerMove, (event) => {
@@ -296,7 +297,7 @@ const TooltipTrigger = forwardRef<TooltipTriggerElement, TooltipTriggerProps>(
296
297
  if (event.defaultPrevented) {
297
298
  return;
298
299
  }
299
- context.onTriggerChange(ref.current);
300
+ context.onTriggerChange(ref.current, content, side);
300
301
  context.onTriggerEnter();
301
302
  hasPointerMoveOpenedRef.current = true;
302
303
  }
@@ -326,7 +327,7 @@ TooltipTrigger.displayName = TRIGGER_NAME;
326
327
  // TooltipPortal
327
328
  //
328
329
 
329
- const PORTAL_NAME = 'TooltipPortal';
330
+ const PORTAL_NAME = 'Tooltip.Portal';
330
331
 
331
332
  type PortalContextValue = { forceMount?: true };
332
333
  const [PortalProvider, usePortalContext] = createTooltipContext<PortalContextValue>(PORTAL_NAME, {
@@ -367,7 +368,7 @@ TooltipPortal.displayName = PORTAL_NAME;
367
368
  // TooltipContent
368
369
  //
369
370
 
370
- const CONTENT_NAME = 'TooltipContent';
371
+ const CONTENT_NAME = 'Tooltip.Content';
371
372
 
372
373
  type TooltipContentElement = TooltipContentImplElement;
373
374
  type TooltipContentProps = TooltipContentImplProps & {
@@ -578,7 +579,7 @@ TooltipContent.displayName = CONTENT_NAME;
578
579
  // TooltipArrow
579
580
  //
580
581
 
581
- const ARROW_NAME = 'TooltipArrow';
582
+ const ARROW_NAME = 'Tooltip.Arrow';
582
583
 
583
584
  type TooltipArrowElement = ComponentRef<typeof PopperPrimitive.Arrow>;
584
585
  type PopperArrowProps = ComponentPropsWithoutRef<typeof PopperPrimitive.Arrow>;
@@ -3,3 +3,4 @@
3
3
  //
4
4
 
5
5
  export * from './Tooltip';
6
+ export * from './tooltipContent';
@@ -0,0 +1,16 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { mx, surfaceShadow, surfaceZIndex } from '@dxos/ui-theme';
6
+ import { type ComponentFunction } from '@dxos/ui-types';
7
+
8
+ import { type TooltipStyleProps } from './Tooltip.theme';
9
+
10
+ export const tooltipContent: ComponentFunction<TooltipStyleProps> = ({ elevation }, ...etc) =>
11
+ mx(
12
+ 'inline-flex items-center p-1 max-w-64 text-sm bg-inverse-surface text-inverse-fg rounded-sm',
13
+ surfaceShadow({ elevation: 'positioned' }),
14
+ surfaceZIndex({ elevation, level: 'tooltip' }),
15
+ ...etc,
16
+ );
@@ -2,15 +2,15 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- export * from './DensityProvider';
6
- export * from './ElevationProvider';
7
- export * from './ThemeProvider';
8
-
9
5
  export * from './Avatars';
10
6
  export * from './Breadcrumb';
11
7
  export * from './Button';
8
+ export * from './Calendar';
12
9
  export * from './Card';
10
+ export * from './Carousel';
13
11
  export * from './Clipboard';
12
+ export * from './Column';
13
+ export * from './DatePicker';
14
14
  export * from './Dialog';
15
15
  export * from './ErrorFallback';
16
16
  export * from './Focus';
@@ -20,16 +20,18 @@ export * from './Input';
20
20
  export * from './Link';
21
21
  export * from './List';
22
22
  export * from './Main';
23
+ export * from './MediaPlayer';
23
24
  export * from './Menu';
24
25
  export * from './Message';
26
+ export * from './Panel';
25
27
  export * from './Popover';
26
- export * from './Status';
27
28
  export * from './ScrollArea';
28
29
  export * from './ScrollContainer';
29
30
  export * from './Select';
30
31
  export * from './Separator';
31
32
  export * from './Skeleton';
32
33
  export * from './Splitter';
34
+ export * from './Status';
33
35
  export * from './Tag';
34
36
  export * from './Toast';
35
37
  export * from './Toolbar';
@@ -5,9 +5,8 @@
5
5
  import { type Meta, type StoryObj } from '@storybook/react-vite';
6
6
  import React from 'react';
7
7
 
8
- import { slottable } from '@dxos/ui-theme';
9
-
10
8
  import { withTheme } from '../testing';
9
+ import { slottable } from '../util';
11
10
 
12
11
  /**
13
12
  * Generic component pattern using the slottable factory.
@@ -7,9 +7,10 @@ import { Slot } from '@radix-ui/react-slot';
7
7
  import { type Meta, type StoryObj } from '@storybook/react-vite';
8
8
  import React, { PropsWithChildren } from 'react';
9
9
 
10
- import { composable, composableProps, mx, slottable } from '@dxos/ui-theme';
10
+ import { mx } from '@dxos/ui-theme';
11
11
 
12
12
  import { withTheme } from '../testing';
13
+ import { composable, composableProps, slottable } from '../util';
13
14
  import { ThemedClassName } from '../util';
14
15
 
15
16
  /**
@@ -59,9 +60,7 @@ const Leaf = composable<HTMLButtonElement>(({ children, ...props }, forwardedRef
59
60
 
60
61
  /** This isn't a valid child for a `slottable` component. */
61
62
  const Simple = ({ children, classNames }: ThemedClassName<PropsWithChildren>) => (
62
- <div role='none' className={mx(classNames)}>
63
- {children}
64
- </div>
63
+ <div className={mx(classNames)}>{children}</div>
65
64
  );
66
65
 
67
66
  const meta = {
@@ -99,7 +98,7 @@ export const Inner: Story = {
99
98
  <Outer asChild role='article' classNames='border-orange-500'>
100
99
  <Middle asChild>
101
100
  <Leaf>
102
- <div role='none'>Leaf</div>
101
+ <div>Leaf</div>
103
102
  </Leaf>
104
103
  </Middle>
105
104
  </Outer>
@@ -108,7 +107,7 @@ export const Inner: Story = {
108
107
 
109
108
  export const Error: Story = {
110
109
  render: () => (
111
- <Outer asChild role='none' classNames='p-2 border border-green-500 rounded'>
110
+ <Outer asChild classNames='p-2 border border-green-500 rounded'>
112
111
  <Middle asChild>
113
112
  <Simple>Simple</Simple>
114
113
  </Middle>
@@ -66,7 +66,6 @@ export const Default = {
66
66
  <ScrollArea.Root orientation='vertical' centered>
67
67
  <ScrollArea.Viewport classNames='p-2' ref={setViewport}>
68
68
  <div
69
- role='none'
70
69
  style={{
71
70
  position: 'relative',
72
71
  height: virtualizer.getTotalSize(),
@@ -6,7 +6,7 @@ import { useContext } from 'react';
6
6
 
7
7
  import { type Density } from '@dxos/ui-types';
8
8
 
9
- import { DensityContext } from '../components';
9
+ import { DensityContext } from '../primitives';
10
10
 
11
11
  export const useDensityContext = (densityProp?: Density): Density | undefined => {
12
12
  const { density } = useContext(DensityContext);
@@ -6,7 +6,7 @@ import { useContext } from 'react';
6
6
 
7
7
  import { type Elevation } from '@dxos/ui-types';
8
8
 
9
- import { ElevationContext } from '../components';
9
+ import { ElevationContext } from '../primitives';
10
10
 
11
11
  export const useElevationContext = (propsElevation?: Elevation) => {
12
12
  const { elevation } = useContext(ElevationContext);
@@ -6,6 +6,6 @@ import { useContext } from 'react';
6
6
 
7
7
  import { raise } from '@dxos/debug';
8
8
 
9
- import { ThemeContext } from '../components';
9
+ import { ThemeContext } from '../primitives';
10
10
 
11
11
  export const useThemeContext = () => useContext(ThemeContext) ?? raise(new Error('Missing ThemeContext'));
@@ -4,6 +4,6 @@
4
4
 
5
5
  import { useContext } from 'react';
6
6
 
7
- import { TranslationsContext } from '../components/ThemeProvider/TranslationsProvider';
7
+ import { TranslationsContext } from '../primitives';
8
8
 
9
9
  export const useTranslationsContext = () => useContext(TranslationsContext);
package/src/index.ts CHANGED
@@ -11,4 +11,5 @@ export * from '@dxos/ui-types';
11
11
  export * from './components';
12
12
  export * from './hooks';
13
13
  export * from './primitives';
14
+ export * from './theme';
14
15
  export * from './util';
@@ -12,37 +12,30 @@ const DefaultStory = ({ children, ...args }: Omit<ButtonProps, 'ref'>) => {
12
12
  return (
13
13
  <Tooltip.Provider>
14
14
  <div className='flex flex-col gap-6'>
15
- {/* Large */}
15
+ {/* Large (40px) */}
16
16
  <div className='grid grid-cols-3 gap-4'>
17
17
  <div className='flex justify-center'>
18
- <Button {...args} density='coarse'>
18
+ <Button {...args} density='lg'>
19
19
  {children}
20
20
  </Button>
21
21
  </div>
22
22
  <div className='flex justify-center'>
23
- <IconButton {...args} label='Test' icon='ph--circle--regular' density='coarse' />
23
+ <IconButton {...args} label='Test' icon='ph--circle--regular' density='lg' />
24
24
  </div>
25
25
  <div className='flex justify-center'>
26
- <IconButton
27
- {...args}
28
- label='Test'
29
- icon='ph--circle--regular'
30
- iconOnly
31
- density='coarse'
32
- classNames='px-1.5'
33
- />
26
+ <IconButton {...args} label='Test' icon='ph--circle--regular' iconOnly density='lg' classNames='px-1.5' />
34
27
  </div>
35
28
  </div>
36
29
 
37
- {/* Medium */}
30
+ {/* Medium (32px, default) */}
38
31
  <div className='grid grid-cols-3 gap-4'>
39
32
  <div className='flex justify-center'>
40
- <Button {...args} density='fine'>
33
+ <Button {...args} density='md'>
41
34
  {children}
42
35
  </Button>
43
36
  </div>
44
37
  <div className='flex justify-center'>
45
- <IconButton {...args} label='Test' icon='ph--circle--regular' density='fine' classNames='px-2' />
38
+ <IconButton {...args} label='Test' icon='ph--circle--regular' density='md' classNames='px-2' />
46
39
  </div>
47
40
  <div className='flex justify-center'>
48
41
  <IconButton
@@ -50,37 +43,24 @@ const DefaultStory = ({ children, ...args }: Omit<ButtonProps, 'ref'>) => {
50
43
  label='Test'
51
44
  icon='ph--circle--regular'
52
45
  iconOnly
53
- density='fine'
46
+ density='md'
54
47
  classNames='py-1 px-1.5'
55
48
  />
56
49
  </div>
57
50
  </div>
58
51
 
59
- {/* Small */}
52
+ {/* Small (28px) */}
60
53
  <div className='grid grid-cols-3 gap-4'>
61
54
  <div className='flex justify-center'>
62
- <Button {...args} density='fine' classNames={'!h-[24px] !text-[14px] p-0 px-1.5 min-h-0'}>
55
+ <Button {...args} density='sm'>
63
56
  {children}
64
57
  </Button>
65
58
  </div>
66
59
  <div className='flex justify-center'>
67
- <IconButton
68
- {...args}
69
- label='Test'
70
- icon='ph--circle--regular'
71
- density='fine'
72
- classNames={'!h-[24px] !text-[14px] p-1 min-h-0 gap-0.5'}
73
- />
60
+ <IconButton {...args} label='Test' icon='ph--circle--regular' density='sm' />
74
61
  </div>
75
62
  <div className='flex justify-center'>
76
- <IconButton
77
- {...args}
78
- label='Test'
79
- icon='ph--circle--regular'
80
- iconOnly
81
- density='fine'
82
- classNames={'!h-[24px] !text-[14px] p-1 min-h-0'}
83
- />
63
+ <IconButton {...args} label='Test' icon='ph--circle--regular' iconOnly density='sm' />
84
64
  </div>
85
65
  </div>
86
66
 
@@ -6,7 +6,9 @@ import { Primitive } from '@radix-ui/react-primitive';
6
6
  import { Slot } from '@radix-ui/react-slot';
7
7
  import React from 'react';
8
8
 
9
- import { composableProps, mx, slottable } from '@dxos/ui-theme';
9
+ import { mx } from '@dxos/ui-theme';
10
+
11
+ import { composableProps, slottable } from '../../util';
10
12
 
11
13
  export const Container = slottable<HTMLDivElement>(({ children, asChild, ...props }, forwardedRef) => {
12
14
  const { className, ...rest } = composableProps<HTMLDivElement>(props);
@@ -14,7 +14,7 @@ export type DensityProviderProps = PropsWithChildren<{
14
14
  density?: Density;
15
15
  }>;
16
16
 
17
- export const DensityContext = createContext<DensityContextValue>({ density: 'fine' });
17
+ export const DensityContext = createContext<DensityContextValue>({ density: 'md' });
18
18
 
19
19
  export const DensityProvider = ({ density, children }: DensityProviderProps) => (
20
20
  <DensityContext.Provider value={{ density }}>{children}</DensityContext.Provider>
@@ -6,7 +6,9 @@ import { Primitive } from '@radix-ui/react-primitive';
6
6
  import { Slot } from '@radix-ui/react-slot';
7
7
  import React from 'react';
8
8
 
9
- import { composableProps, mx, slottable } from '@dxos/ui-theme';
9
+ import { mx } from '@dxos/ui-theme';
10
+
11
+ import { composableProps, slottable } from '../../util';
10
12
 
11
13
  export type FlexProps = { column?: boolean; grow?: boolean };
12
14
 
@@ -4,7 +4,9 @@
4
4
 
5
5
  import React from 'react';
6
6
 
7
- import { composable, composableProps, mx } from '@dxos/ui-theme';
7
+ import { mx } from '@dxos/ui-theme';
8
+
9
+ import { composable, composableProps } from '../../util';
8
10
 
9
11
  export type GridProps = { cols?: number; rows?: number; grow?: boolean };
10
12
 
@@ -10,7 +10,7 @@ import { withLayout, withTheme } from '../../testing';
10
10
  import { ThemeProvider } from './ThemeProvider';
11
11
 
12
12
  const meta = {
13
- title: 'ui/react-ui-core/components/ThemeProvider',
13
+ title: 'ui/react-ui-core/primitives/ThemeProvider',
14
14
  component: ThemeProvider,
15
15
  render: () => {
16
16
  const { themeMode, platform } = useThemeContext();
@@ -41,7 +41,7 @@ export const ThemeProvider = ({
41
41
  appNs,
42
42
  tx = (_path, _styleProps, ..._options) => undefined,
43
43
  themeMode = 'dark',
44
- rootDensity = 'fine',
44
+ rootDensity = 'md',
45
45
  noCache,
46
46
  platform,
47
47
  }: ThemeProviderProps) => {
@@ -2,7 +2,7 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- export { type Label, isLabel, toLocalizedString } from '@dxos/ui-types';
5
+ export { type Label, isLabel, toLocalizedString } from '@dxos/ui-types/translations';
6
6
 
7
7
  export * from './ThemeProvider';
8
- export { useTranslation } from './TranslationsProvider';
8
+ export { TranslationsContext, useTranslation } from './TranslationsProvider';
@@ -2,8 +2,10 @@
2
2
  // Copyright 2026 DXOS.org
3
3
  //
4
4
 
5
- export * from './Column';
5
+ export * from './DensityProvider';
6
+ export * from './ElevationProvider';
7
+ export * from './ThemeProvider';
8
+
6
9
  export * from './Container';
7
10
  export * from './Flex';
8
11
  export * from './Grid';
9
- export * from './Panel';
@@ -39,7 +39,7 @@ export const withLayout =
39
39
  const { layout = 'default', classNames, scroll } = props;
40
40
  const Container = layouts[layout] ?? layouts.fullscreen;
41
41
  return (
42
- <Container classNames={mx(classNames, scroll ? 'overflow-y-auto' : 'overflow-hidden')}>
42
+ <Container classNames={mx(scroll ? 'overflow-y-auto' : 'overflow-hidden', classNames)}>
43
43
  <MemoizedStory />
44
44
  </Container>
45
45
  );
@@ -47,31 +47,21 @@ export const withLayout =
47
47
  };
48
48
 
49
49
  const layouts: Record<ContainerType, FC<ContainerProps>> = {
50
- default: ({ classNames, children }: ContainerProps) => (
51
- <div role='none' className={mx('p-4', classNames)}>
52
- {children}
53
- </div>
54
- ),
50
+ default: ({ classNames, children }: ContainerProps) => <div className={mx('p-4', classNames)}>{children}</div>,
55
51
 
56
52
  fullscreen: ({ classNames, children }: ContainerProps) => (
57
- <div role='none' className={mx('fixed inset-0 flex overflow-hidden bg-black', classNames)}>
58
- {children}
59
- </div>
53
+ <div className={mx('fixed inset-0 flex overflow-hidden bg-black', classNames)}>{children}</div>
60
54
  ),
61
55
 
62
56
  centered: ({ classNames, children }: ContainerProps) => (
63
- <div role='none' className={mx('fixed inset-0 grid overflow-hidden place-items-center bg-black')}>
64
- <div role='none' className={mx('flex flex-col bg-base-surface', classNames)}>
65
- {children}
66
- </div>
57
+ <div className={mx('fixed inset-0 grid overflow-hidden place-items-center bg-black')}>
58
+ <div className={mx('flex flex-col bg-base-surface', classNames)}>{children}</div>
67
59
  </div>
68
60
  ),
69
61
 
70
62
  column: ({ classNames, children }: ContainerProps) => (
71
- <div role='none' className='fixed inset-0 flex overflow-hidden justify-center bg-black'>
72
- <div role='none' className={mx('flex flex-col w-[40rem] bg-base-surface', classNames)}>
73
- {children}
74
- </div>
63
+ <div className='fixed inset-0 flex overflow-hidden justify-center bg-black'>
64
+ <div className={mx('flex flex-col w-[40rem] bg-base-surface', classNames)}>{children}</div>
75
65
  </div>
76
66
  ),
77
67
  };
@@ -42,7 +42,7 @@ export const withLayoutVariants = ({
42
42
  { elevation: 'positioned', surface: 'bg-card-surface' },
43
43
  { elevation: 'base', surface: 'bg-base-surface' },
44
44
  ],
45
- densities = ['coarse'],
45
+ densities = ['md'],
46
46
  }: Config = {}): Decorator => {
47
47
  return (Story) => <Panel Story={Story} elevations={elevations} densities={densities} />;
48
48
  };
@@ -4,14 +4,20 @@
4
4
 
5
5
  import { type Decorator } from '@storybook/react';
6
6
  import React from 'react';
7
+ import { I18nProvider } from 'react-aria-components';
7
8
 
8
- import { defaultTx } from '@dxos/ui-theme';
9
9
  import { type ThemeMode } from '@dxos/ui-types';
10
10
 
11
- import { type ThemeContextValue, ThemeProvider, Tooltip } from '../../components';
11
+ import { Tooltip } from '../../components';
12
+ import { type ThemeContextValue, ThemeProvider } from '../../primitives';
13
+ import { defaultTx } from '../../theme';
12
14
 
13
15
  /**
14
16
  * Adds theme decorator.
17
+ *
18
+ * `I18nProvider` is included so react-aria-components-backed widgets (DateField, Calendar, …)
19
+ * have a guaranteed locale in headless test environments where `navigator.language` may be
20
+ * empty.
15
21
  */
16
22
  export const withTheme =
17
23
  ({ tx = defaultTx, noCache, platform }: Partial<ThemeContextValue> = {}): Decorator =>
@@ -22,16 +28,18 @@ export const withTheme =
22
28
  } = context;
23
29
 
24
30
  return (
25
- <ThemeProvider
26
- tx={tx}
27
- themeMode={theme as ThemeMode}
28
- resourceExtensions={translations}
29
- noCache={noCache}
30
- platform={platform}
31
- >
32
- <Tooltip.Provider>
33
- <Story />
34
- </Tooltip.Provider>
35
- </ThemeProvider>
31
+ <I18nProvider locale='en-US'>
32
+ <ThemeProvider
33
+ tx={tx}
34
+ themeMode={(theme as ThemeMode) || 'dark'}
35
+ resourceExtensions={translations}
36
+ noCache={noCache}
37
+ platform={platform}
38
+ >
39
+ <Tooltip.Provider>
40
+ <Story />
41
+ </Tooltip.Provider>
42
+ </ThemeProvider>
43
+ </I18nProvider>
36
44
  );
37
45
  };
@@ -0,0 +1,13 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { type ClassNameArray, type ComponentFunction, type Theme, type ThemeFunction } from '@dxos/ui-types';
6
+ import { getDeep } from '@dxos/util';
7
+
8
+ export const bindTheme = <P extends Record<string, any>>(theme: Theme<Record<string, any>>): ThemeFunction<P> => {
9
+ return (path: string, styleProps?: P, ...etc: ClassNameArray) => {
10
+ const result = getDeep<Theme<P> | ComponentFunction<P>>(theme, path.split('.'));
11
+ return typeof result === 'function' ? result(styleProps ?? ({} as P), ...etc) : undefined;
12
+ };
13
+ };
@@ -0,0 +1,83 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { type Theme } from '@dxos/ui-types';
6
+
7
+ import { avatarTheme } from '../components/Avatars/Avatar.theme';
8
+ import { breadcrumbTheme } from '../components/Breadcrumb/Breadcrumb.theme';
9
+ import { buttonTheme } from '../components/Button/Button.theme';
10
+ import { iconButtonTheme } from '../components/Button/IconButton.theme';
11
+ import { calendarTheme } from '../components/Calendar/Calendar.theme';
12
+ import { cardTheme } from '../components/Card/Card.theme';
13
+ import { columnTheme } from '../components/Column/Column.theme';
14
+ import { datePickerTheme } from '../components/DatePicker/DatePicker.theme';
15
+ import { dialogTheme } from '../components/Dialog/Dialog.theme';
16
+ import { focusTheme } from '../components/Focus/Focus.theme';
17
+ import { iconTheme } from '../components/Icon/Icon.theme';
18
+ import { inputTheme } from '../components/Input/Input.theme';
19
+ import { linkTheme } from '../components/Link/Link.theme';
20
+ import { listTheme } from '../components/List/List.theme';
21
+ import { treegridTheme } from '../components/List/Treegrid.theme';
22
+ import { mainTheme } from '../components/Main/Main.theme';
23
+ import { menuTheme } from '../components/Menu/Menu.theme';
24
+ import { messageTheme } from '../components/Message/Message.theme';
25
+ import { panelTheme } from '../components/Panel/Panel.theme';
26
+ import { popoverTheme } from '../components/Popover/Popover.theme';
27
+ import { scrollAreaTheme } from '../components/ScrollArea/ScrollArea.theme';
28
+ import { selectTheme } from '../components/Select/Select.theme';
29
+ import { separatorTheme } from '../components/Separator/Separator.theme';
30
+ import { skeletonTheme } from '../components/Skeleton/Skeleton.theme';
31
+ import { splitterTheme } from '../components/Splitter/Splitter.theme';
32
+ import { statusTheme } from '../components/Status/Status.theme';
33
+ import { tagTheme } from '../components/Tag/Tag.theme';
34
+ import { toastTheme } from '../components/Toast/Toast.theme';
35
+ import { toolbarTheme } from '../components/Toolbar/Toolbar.theme';
36
+ import { tooltipTheme } from '../components/Tooltip/Tooltip.theme';
37
+ import { bindTheme } from './bindTheme';
38
+
39
+ export const defaultTheme: Theme<Record<string, any>> = {
40
+ themeName: () => 'default',
41
+
42
+ //
43
+ // Primitives
44
+ //
45
+
46
+ column: columnTheme,
47
+ panel: panelTheme,
48
+
49
+ //
50
+ // Components
51
+ //
52
+
53
+ avatar: avatarTheme,
54
+ breadcrumb: breadcrumbTheme,
55
+ button: buttonTheme,
56
+ calendar: calendarTheme,
57
+ card: cardTheme,
58
+ datePicker: datePickerTheme,
59
+ dialog: dialogTheme,
60
+ focus: focusTheme,
61
+ icon: iconTheme,
62
+ iconButton: iconButtonTheme,
63
+ input: inputTheme,
64
+ link: linkTheme,
65
+ list: listTheme,
66
+ main: mainTheme,
67
+ message: messageTheme,
68
+ menu: menuTheme,
69
+ popover: popoverTheme,
70
+ scrollArea: scrollAreaTheme,
71
+ select: selectTheme,
72
+ separator: separatorTheme,
73
+ skeleton: skeletonTheme,
74
+ splitter: splitterTheme,
75
+ status: statusTheme,
76
+ tag: tagTheme,
77
+ toast: toastTheme,
78
+ toolbar: toolbarTheme,
79
+ tooltip: tooltipTheme,
80
+ treegrid: treegridTheme,
81
+ };
82
+
83
+ export const defaultTx = bindTheme(defaultTheme);