@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
@@ -18,10 +18,10 @@ import React, {
18
18
  import { addEventListener, combine } from '@dxos/async';
19
19
  import { invariant } from '@dxos/invariant';
20
20
  import { useMergeRefs } from '@dxos/react-hooks';
21
- import { composable, composableProps, slottable } from '@dxos/ui-theme';
22
21
  import { mx } from '@dxos/ui-theme';
23
22
  import { type SlottableProps } from '@dxos/ui-types';
24
23
 
24
+ import { composable, composableProps, slottable } from '../../util';
25
25
  import { type ThemedClassName } from '../../util';
26
26
  import { IconButton } from '../Button';
27
27
  import { ScrollArea, type ScrollAreaRootProps } from '../ScrollArea';
@@ -55,7 +55,7 @@ const [ScrollContainerProvider, useScrollContainerContext] =
55
55
  // Root
56
56
  //
57
57
 
58
- type RootProps = PropsWithChildren<{
58
+ type ScrollContainerRootProps = PropsWithChildren<{
59
59
  pin?: boolean;
60
60
  behavior?: ScrollBehavior;
61
61
  }>;
@@ -64,7 +64,7 @@ type RootProps = PropsWithChildren<{
64
64
  * Headless scroll container that provides context for scroll state.
65
65
  * Render ScrollContainer.Content and ScrollContainer.Viewport as children.
66
66
  */
67
- const Root = forwardRef<ScrollController, RootProps>(
67
+ const ScrollContainerRoot = forwardRef<ScrollController, ScrollContainerRootProps>(
68
68
  ({ children, pin, behavior: behaviorProp = 'smooth' }, forwardedRef) => {
69
69
  const scrollerRef = useRef<HTMLDivElement | null>(null);
70
70
  const autoScrollRef = useRef(false);
@@ -139,23 +139,23 @@ const Root = forwardRef<ScrollController, RootProps>(
139
139
  },
140
140
  );
141
141
 
142
- Root.displayName = 'ScrollContainer.Root';
142
+ ScrollContainerRoot.displayName = 'ScrollContainer.Root';
143
143
 
144
144
  //
145
145
  // Content
146
146
  //
147
147
 
148
- type ContentProps = Pick<ScrollAreaRootProps, 'thin' | 'padding' | 'centered'>;
148
+ type ScrollContainerContentProps = Pick<ScrollAreaRootProps, 'thin' | 'padding' | 'centered'>;
149
149
 
150
150
  /**
151
151
  * Composable wrapper around ScrollArea.Root.
152
152
  * Provides the DOM structure for the scroll container.
153
153
  */
154
- const Content = composable<HTMLDivElement, ContentProps>(
154
+ const ScrollContainerContent = composable<HTMLDivElement, ScrollContainerContentProps>(
155
155
  ({ children, thin, padding, centered, ...props }, forwardedRef) => {
156
156
  return (
157
157
  <ScrollArea.Root
158
- {...composableProps(props, { classNames: 'relative' })}
158
+ {...composableProps(props, { classNames: 'relative isolate' })}
159
159
  thin={thin}
160
160
  padding={padding}
161
161
  centered={centered}
@@ -167,7 +167,7 @@ const Content = composable<HTMLDivElement, ContentProps>(
167
167
  },
168
168
  );
169
169
 
170
- Content.displayName = 'ScrollContainer.Content';
170
+ ScrollContainerContent.displayName = 'ScrollContainer.Content';
171
171
 
172
172
  //
173
173
  // Viewport
@@ -175,40 +175,42 @@ Content.displayName = 'ScrollContainer.Content';
175
175
 
176
176
  const VIEWPORT_NAME = 'ScrollContainer.Viewport';
177
177
 
178
- type ViewportProps = SlottableProps;
178
+ type ScrollContainerViewportProps = SlottableProps;
179
179
 
180
- const Viewport = slottable<HTMLDivElement, ViewportProps>(({ children, asChild, ...props }, forwardedRef) => {
181
- const scrollerRef = useRef<HTMLDivElement>(null);
182
- const mergedRef = useMergeRefs([forwardedRef, scrollerRef]);
183
- const { setViewport, setPinned, setOverflow } = useScrollContainerContext(VIEWPORT_NAME);
180
+ const ScrollContainerViewport = slottable<HTMLDivElement, ScrollContainerViewportProps>(
181
+ ({ children, asChild, ...props }, forwardedRef) => {
182
+ const scrollerRef = useRef<HTMLDivElement>(null);
183
+ const mergedRef = useMergeRefs([forwardedRef, scrollerRef]);
184
+ const { setViewport, setPinned, setOverflow } = useScrollContainerContext(VIEWPORT_NAME);
184
185
 
185
- // Register the scroll element with Root and set up wheel/scroll listeners.
186
- useEffect(() => {
187
- const el = scrollerRef.current;
188
- if (!el) {
189
- return;
190
- }
186
+ // Register the scroll element with Root and set up wheel/scroll listeners.
187
+ useEffect(() => {
188
+ const el = scrollerRef.current;
189
+ if (!el) {
190
+ return;
191
+ }
191
192
 
192
- setViewport(el);
193
+ setViewport(el);
193
194
 
194
- return combine(
195
- addEventListener(el, 'wheel', () => setPinned(isBottom(el))),
196
- addEventListener(el, 'scroll', () => setOverflow((el.scrollTop ?? 0) > 0)),
197
- () => setViewport(null),
198
- );
199
- }, [setViewport, setPinned, setOverflow]);
195
+ return combine(
196
+ addEventListener(el, 'wheel', () => setPinned(isBottom(el))),
197
+ addEventListener(el, 'scroll', () => setOverflow((el.scrollTop ?? 0) > 0)),
198
+ () => setViewport(null),
199
+ );
200
+ }, [setViewport, setPinned, setOverflow]);
200
201
 
201
- return (
202
- <>
203
- <ScrollArea.Viewport asChild={asChild} {...composableProps(props)} ref={mergedRef}>
204
- {children}
205
- </ScrollArea.Viewport>
206
- <PinEffect scrollerRef={scrollerRef} />
207
- </>
208
- );
209
- });
202
+ return (
203
+ <>
204
+ <ScrollArea.Viewport asChild={asChild} {...composableProps(props)} ref={mergedRef}>
205
+ {children}
206
+ </ScrollArea.Viewport>
207
+ <ScrollContainerPinEffect scrollerRef={scrollerRef} />
208
+ </>
209
+ );
210
+ },
211
+ );
210
212
 
211
- Viewport.displayName = VIEWPORT_NAME;
213
+ ScrollContainerViewport.displayName = VIEWPORT_NAME;
212
214
 
213
215
  /**
214
216
  * Isolated component that consumes pinned/controller from context.
@@ -216,7 +218,7 @@ Viewport.displayName = VIEWPORT_NAME;
216
218
  */
217
219
  const PIN_EFFECT_NAME = 'ScrollContainer.PinEffect';
218
220
 
219
- const PinEffect = ({ scrollerRef }: { scrollerRef: RefObject<HTMLDivElement | null> }) => {
221
+ const ScrollContainerPinEffect = ({ scrollerRef }: { scrollerRef: RefObject<HTMLDivElement | null> }) => {
220
222
  const { pinned, controller } = useScrollContainerContext(PIN_EFFECT_NAME);
221
223
 
222
224
  // Pin scroll to bottom when content changes.
@@ -269,26 +271,25 @@ const PinEffect = ({ scrollerRef }: { scrollerRef: RefObject<HTMLDivElement | nu
269
271
 
270
272
  const FADE_NAME = 'ScrollContainer.Fade';
271
273
 
272
- type FadeProps = {};
274
+ type ScrollContainerFadeProps = {};
273
275
 
274
- const Fade = () => {
276
+ function ScrollContainerFade() {
275
277
  const { overflow } = useScrollContainerContext(FADE_NAME);
276
278
 
277
279
  return (
278
280
  <div
279
- role='none'
280
281
  data-visible={overflow}
281
282
  className={mx(
282
283
  // NOTE: Gradients may not be visible with dark reader extensions.
283
284
  'z-10 absolute top-0 inset-x-0 h-24 w-full',
284
285
  'opacity-0 duration-200 transition-opacity data-[visible="true"]:opacity-100',
285
- 'bg-gradient-to-b from-(--surface-bg) to-transparent pointer-events-none',
286
+ 'bg-gradient-to-b from-(--color-base-surface) to-transparent pointer-events-none',
286
287
  )}
287
288
  />
288
289
  );
289
- };
290
+ }
290
291
 
291
- Fade.displayName = FADE_NAME;
292
+ ScrollContainerFade.displayName = FADE_NAME;
292
293
 
293
294
  //
294
295
  // ScrollDownButton
@@ -296,14 +297,13 @@ Fade.displayName = FADE_NAME;
296
297
 
297
298
  const SCROLL_DOWN_BUTTON_NAME = 'ScrollContainer.ScrollDownButton';
298
299
 
299
- type ScrollDownButtonProps = ThemedClassName;
300
+ type ScrollContainerScrollDownButtonProps = ThemedClassName;
300
301
 
301
- const ScrollDownButton = ({ classNames }: ScrollDownButtonProps) => {
302
+ function ScrollContainerScrollDownButton({ classNames }: ScrollContainerScrollDownButtonProps) {
302
303
  const { pinned, controller } = useScrollContainerContext(SCROLL_DOWN_BUTTON_NAME);
303
304
 
304
305
  return (
305
306
  <div
306
- role='none'
307
307
  className={mx(
308
308
  'absolute bottom-2 right-4 opacity-100 transition-opacity duration-300',
309
309
  pinned && 'opacity-0',
@@ -320,9 +320,9 @@ const ScrollDownButton = ({ classNames }: ScrollDownButtonProps) => {
320
320
  />
321
321
  </div>
322
322
  );
323
- };
323
+ }
324
324
 
325
- ScrollDownButton.displayName = SCROLL_DOWN_BUTTON_NAME;
325
+ ScrollContainerScrollDownButton.displayName = SCROLL_DOWN_BUTTON_NAME;
326
326
 
327
327
  //
328
328
  // ScrollContainer
@@ -331,17 +331,17 @@ ScrollDownButton.displayName = SCROLL_DOWN_BUTTON_NAME;
331
331
  export { useScrollContainerContext };
332
332
 
333
333
  export const ScrollContainer = {
334
- Root,
335
- Content,
336
- Viewport,
337
- Fade,
338
- ScrollDownButton,
334
+ Root: ScrollContainerRoot,
335
+ Content: ScrollContainerContent,
336
+ Viewport: ScrollContainerViewport,
337
+ Fade: ScrollContainerFade,
338
+ ScrollDownButton: ScrollContainerScrollDownButton,
339
339
  };
340
340
 
341
341
  export type {
342
- RootProps as ScrollContainerRootProps,
343
- ContentProps as ScrollContainerContentProps,
344
- ViewportProps as ScrollContainerViewportProps,
345
- FadeProps as ScrollContainerFadeProps,
346
- ScrollDownButtonProps as ScrollContainerScrollDownButtonProps,
342
+ ScrollContainerRootProps,
343
+ ScrollContainerContentProps,
344
+ ScrollContainerViewportProps,
345
+ ScrollContainerFadeProps,
346
+ ScrollContainerScrollDownButtonProps,
347
347
  };
@@ -0,0 +1,55 @@
1
+ //
2
+ // Copyright 2022 DXOS.org
3
+ //
4
+
5
+ import { mx, surfaceShadow, surfaceZIndex } from '@dxos/ui-theme';
6
+ import { type ComponentFunction, type Elevation, type Theme } from '@dxos/ui-types';
7
+
8
+ export type SelectStyleProps = Partial<{
9
+ elevation: Elevation;
10
+ }>;
11
+
12
+ const content: ComponentFunction<SelectStyleProps> = ({ elevation }, ...etc) => {
13
+ return mx(
14
+ 'dx-modal-surface rounded-sm border border-separator',
15
+ 'min-w-(--radix-select-trigger-width) max-h-(--radix-select-content-available-height)',
16
+ surfaceShadow({ elevation: 'positioned' }),
17
+ surfaceZIndex({ elevation, level: 'menu' }),
18
+ ...etc,
19
+ );
20
+ };
21
+
22
+ const triggerButton: ComponentFunction<SelectStyleProps> = (_props, ...etc) =>
23
+ mx('grid grid-cols-[1fr_auto] [&>span]:text-left', ...etc);
24
+
25
+ const viewport: ComponentFunction<SelectStyleProps> = (_props, ...etc) => mx(...etc);
26
+
27
+ const item: ComponentFunction<SelectStyleProps> = (_props, ...etc) =>
28
+ mx(
29
+ 'flex items-center min-h-[2rem] px-2.5 py-1 gap-2',
30
+ 'text-base-fg leading-none select-none outline-hidden',
31
+ '[&>svg]:invisible [&[data-state=checked]>svg]:visible',
32
+ 'dx-highlighted',
33
+ ...etc,
34
+ );
35
+
36
+ const itemIndicator: ComponentFunction<SelectStyleProps> = (_props, ...etc) => mx('items-center', ...etc);
37
+
38
+ const arrow: ComponentFunction<SelectStyleProps> = (_props, ...etc) => mx('fill-separator', ...etc);
39
+
40
+ const separator: ComponentFunction<SelectStyleProps> = (_props, ...etc) =>
41
+ mx('self-stretch border-b my-1 border-separator', ...etc);
42
+
43
+ const scrollButton: ComponentFunction<SelectStyleProps> = (_props, ...etc) =>
44
+ mx('dx-modal-surface flex items-center justify-center cursor-default h-6 w-full', ...etc);
45
+
46
+ export const selectTheme: Theme<SelectStyleProps> = {
47
+ content,
48
+ triggerButton,
49
+ viewport,
50
+ item,
51
+ itemIndicator,
52
+ arrow,
53
+ separator,
54
+ scrollButton,
55
+ };
@@ -5,8 +5,7 @@
5
5
  import * as SelectPrimitive from '@radix-ui/react-select';
6
6
  import React, { forwardRef } from 'react';
7
7
 
8
- import { useElevationContext, useThemeContext } from '../../hooks';
9
- import { useSafeCollisionPadding } from '../../hooks/useSafeCollisionPadding';
8
+ import { useSafeCollisionPadding, useElevationContext, useThemeContext } from '../../hooks';
10
9
  import { type ThemedClassName } from '../../util';
11
10
  import { Button, type ButtonProps } from '../Button';
12
11
  import { Icon } from '../Icon';
@@ -34,12 +33,12 @@ const SelectPortal = SelectPrimitive.Portal;
34
33
  type SelectTriggerButtonProps = Omit<ButtonProps, 'children'> & Pick<SelectValueProps, 'placeholder' | 'children'>;
35
34
 
36
35
  const SelectTriggerButton = forwardRef<HTMLButtonElement, SelectTriggerButtonProps>(
37
- ({ children, placeholder, ...props }, forwardedRef) => {
36
+ ({ children, placeholder, classNames, ...props }, forwardedRef) => {
37
+ const { tx } = useThemeContext();
38
38
  return (
39
39
  <SelectPrimitive.Trigger asChild ref={forwardedRef}>
40
- <Button {...props}>
40
+ <Button {...props} classNames={tx('select.triggerButton', {}, classNames)}>
41
41
  <SelectPrimitive.Value placeholder={placeholder}>{children}</SelectPrimitive.Value>
42
- <span className='w-1 flex-1' />
43
42
  <SelectPrimitive.Icon asChild>
44
43
  <Icon size={3} icon='ph--caret-down--bold' />
45
44
  </SelectPrimitive.Icon>
@@ -49,6 +48,8 @@ const SelectTriggerButton = forwardRef<HTMLButtonElement, SelectTriggerButtonPro
49
48
  },
50
49
  );
51
50
 
51
+ SelectTriggerButton.displayName = 'Select.TriggerButton';
52
+
52
53
  type SelectContentProps = ThemedClassName<SelectPrimitive.SelectContentProps>;
53
54
 
54
55
  const SelectContent = forwardRef<HTMLDivElement, SelectContentProps>(
@@ -71,6 +72,8 @@ const SelectContent = forwardRef<HTMLDivElement, SelectContentProps>(
71
72
  },
72
73
  );
73
74
 
75
+ SelectContent.displayName = 'Select.Content';
76
+
74
77
  type SelectScrollUpButtonProps = ThemedClassName<SelectPrimitive.SelectScrollUpButtonProps>;
75
78
 
76
79
  const SelectScrollUpButton = forwardRef<HTMLDivElement, SelectScrollUpButtonProps>(
@@ -88,6 +91,8 @@ const SelectScrollUpButton = forwardRef<HTMLDivElement, SelectScrollUpButtonProp
88
91
  },
89
92
  );
90
93
 
94
+ SelectScrollUpButton.displayName = 'Select.ScrollUpButton';
95
+
91
96
  type SelectScrollDownButtonProps = ThemedClassName<SelectPrimitive.SelectScrollDownButtonProps>;
92
97
 
93
98
  const SelectScrollDownButton = forwardRef<HTMLDivElement, SelectScrollDownButtonProps>(
@@ -105,6 +110,8 @@ const SelectScrollDownButton = forwardRef<HTMLDivElement, SelectScrollDownButton
105
110
  },
106
111
  );
107
112
 
113
+ SelectScrollDownButton.displayName = 'Select.ScrollDownButton';
114
+
108
115
  type SelectViewportProps = ThemedClassName<SelectPrimitive.SelectViewportProps>;
109
116
 
110
117
  const SelectViewport = forwardRef<HTMLDivElement, SelectViewportProps>(
@@ -118,6 +125,8 @@ const SelectViewport = forwardRef<HTMLDivElement, SelectViewportProps>(
118
125
  },
119
126
  );
120
127
 
128
+ SelectViewport.displayName = 'Select.Viewport';
129
+
121
130
  type SelectItemProps = ThemedClassName<SelectPrimitive.SelectItemProps>;
122
131
 
123
132
  const SelectItem = forwardRef<HTMLDivElement, SelectItemProps>(({ classNames, ...props }, forwardedRef) => {
@@ -125,6 +134,8 @@ const SelectItem = forwardRef<HTMLDivElement, SelectItemProps>(({ classNames, ..
125
134
  return <SelectPrimitive.Item {...props} className={tx('select.item', {}, classNames)} ref={forwardedRef} />;
126
135
  });
127
136
 
137
+ SelectItem.displayName = 'Select.Item';
138
+
128
139
  type SelectItemTextProps = SelectPrimitive.SelectItemTextProps;
129
140
 
130
141
  const SelectItemText = SelectPrimitive.ItemText;
@@ -146,22 +157,23 @@ const SelectItemIndicator = forwardRef<HTMLDivElement, SelectItemIndicatorProps>
146
157
  },
147
158
  );
148
159
 
160
+ SelectItemIndicator.displayName = 'Select.ItemIndicator';
161
+
149
162
  type SelectOptionProps = SelectItemProps;
150
163
 
151
- // TODO(burdon): Option to show icon on left/right.
152
164
  const SelectOption = forwardRef<HTMLDivElement, SelectItemProps>(({ children, classNames, ...props }, forwardedRef) => {
153
165
  const { tx } = useThemeContext();
154
166
  return (
155
167
  <SelectPrimitive.Item {...props} className={tx('select.item', {}, classNames)} ref={forwardedRef}>
156
168
  <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>
157
- <span className='grow w-1' />
158
- {/* <SelectPrimitive.ItemIndicator className={tx('select.itemIndicator', 'option__indicator', {})}> */}
159
- <Icon icon='ph--check--regular' />
160
- {/* </SelectPrimitive.ItemIndicator> */}
169
+ <span className='grow' />
170
+ <Icon size={3} icon='ph--check--regular' />
161
171
  </SelectPrimitive.Item>
162
172
  );
163
173
  });
164
174
 
175
+ SelectOption.displayName = 'Select.Option';
176
+
165
177
  type SelectGroupProps = SelectPrimitive.SelectGroupProps;
166
178
 
167
179
  const SelectGroup = SelectPrimitive.Group;
@@ -177,6 +189,8 @@ const SelectSeparator = forwardRef<HTMLDivElement, SelectSeparatorProps>(({ clas
177
189
  return <SelectPrimitive.Separator {...props} className={tx('select.separator', {}, classNames)} ref={forwardedRef} />;
178
190
  });
179
191
 
192
+ SelectSeparator.displayName = 'Select.Separator';
193
+
180
194
  type SelectArrowProps = ThemedClassName<SelectPrimitive.SelectArrowProps>;
181
195
 
182
196
  const SelectArrow = forwardRef<SVGSVGElement, SelectArrowProps>(({ classNames, ...props }, forwardedRef) => {
@@ -184,6 +198,8 @@ const SelectArrow = forwardRef<SVGSVGElement, SelectArrowProps>(({ classNames, .
184
198
  return <SelectPrimitive.Arrow {...props} className={tx('select.arrow', {}, classNames)} ref={forwardedRef} />;
185
199
  });
186
200
 
201
+ SelectArrow.displayName = 'Select.Arrow';
202
+
187
203
  export const Select = {
188
204
  Root: SelectRoot,
189
205
  Trigger: SelectTrigger,
@@ -0,0 +1,23 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { mx } from '@dxos/ui-theme';
6
+ import { type ComponentFunction, type Theme } from '@dxos/ui-types';
7
+
8
+ export type SeparatorStyleProps = {
9
+ orientation?: 'horizontal' | 'vertical';
10
+ subdued?: boolean;
11
+ };
12
+
13
+ const root: ComponentFunction<SeparatorStyleProps> = ({ orientation, subdued }, ...etc) =>
14
+ mx(
15
+ 'self-stretch',
16
+ orientation === 'vertical' ? 'border-e mx-1' : 'border-b my-1',
17
+ subdued ? 'border-subdued-separator' : 'border-separator',
18
+ ...etc,
19
+ );
20
+
21
+ export const separatorTheme: Theme<SeparatorStyleProps> = {
22
+ root,
23
+ };
@@ -0,0 +1,22 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import { mx } from '@dxos/ui-theme';
6
+ import type { ComponentFunction, Theme } from '@dxos/ui-types';
7
+
8
+ export type SkeletonStyleProps = {
9
+ variant?: 'default' | 'circle' | 'text';
10
+ };
11
+
12
+ const root: ComponentFunction<SkeletonStyleProps> = ({ variant = 'default' }, ...etc) =>
13
+ mx(
14
+ 'animate-pulse bg-neutral-300 dark:bg-neutral-700 rounded-md',
15
+ variant === 'circle' && 'rounded-full',
16
+ variant === 'text' && 'rounded-sm',
17
+ ...etc,
18
+ );
19
+
20
+ export const skeletonTheme: Theme<SkeletonStyleProps> = {
21
+ root,
22
+ };
@@ -5,8 +5,8 @@
5
5
  import { type Meta, type StoryObj } from '@storybook/react-vite';
6
6
  import React, { type ComponentPropsWithoutRef, forwardRef, useState } from 'react';
7
7
 
8
- import { Panel } from '../../primitives';
9
8
  import { withLayout, withTheme } from '../../testing';
9
+ import { Panel } from '../Panel';
10
10
  import { ScrollArea } from '../ScrollArea';
11
11
  import { Toolbar } from '../Toolbar';
12
12
  import { Splitter, type SplitterRootProps } from './Splitter';
@@ -0,0 +1,18 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import { mx } from '@dxos/ui-theme';
6
+ import { type ComponentFunction, type Theme } from '@dxos/ui-types';
7
+
8
+ export type SplitterStyleProps = {};
9
+
10
+ const root: ComponentFunction<SplitterStyleProps> = (_props, ...etc) => mx('relative h-full overflow-hidden', ...etc);
11
+
12
+ const panel: ComponentFunction<SplitterStyleProps> = (_props, ...etc) =>
13
+ mx('absolute inset-x-0 flex flex-col overflow-hidden', ...etc);
14
+
15
+ export const splitterTheme: Theme<SplitterStyleProps> = {
16
+ root,
17
+ panel,
18
+ };
@@ -7,9 +7,8 @@ import { Primitive } from '@radix-ui/react-primitive';
7
7
  import { Slot } from '@radix-ui/react-slot';
8
8
  import React from 'react';
9
9
 
10
- import { composableProps, slottable } from '@dxos/ui-theme';
11
-
12
10
  import { useThemeContext } from '../../hooks';
11
+ import { composableProps, slottable } from '../../util';
13
12
  import { ThemedClassName } from '../../util';
14
13
 
15
14
  type ScopedProps<P> = P & { __scopeSplitter?: any };
@@ -35,11 +34,9 @@ const [SplitterProvider, useSplitterContext] = createSplitterContext<SplitterCon
35
34
 
36
35
  const ROOT_NAME = 'Splitter.Root';
37
36
 
38
- type RootOwnProps = Partial<SplitterContextValue>;
39
-
40
- type RootProps = RootOwnProps;
37
+ type SplitterRootProps = Partial<SplitterContextValue>;
41
38
 
42
- const Root = slottable<HTMLDivElement, RootOwnProps>(
39
+ const SplitterRoot = slottable<HTMLDivElement, SplitterRootProps>(
43
40
  ({ asChild, mode = 'top', ratio = 0.5, transition = 250, children, ...props }, forwardedRef) => {
44
41
  const { tx } = useThemeContext();
45
42
  const { __scopeSplitter, ...rest } = props as ScopedProps<typeof props>;
@@ -56,7 +53,7 @@ const Root = slottable<HTMLDivElement, RootOwnProps>(
56
53
  },
57
54
  );
58
55
 
59
- Root.displayName = ROOT_NAME;
56
+ SplitterRoot.displayName = ROOT_NAME;
60
57
 
61
58
  //
62
59
  // Panel
@@ -64,13 +61,11 @@ Root.displayName = ROOT_NAME;
64
61
 
65
62
  const PANEL_NAME = 'Splitter.Panel';
66
63
 
67
- type PanelOwnProps = ThemedClassName<{
64
+ type SplitterPanelProps = ThemedClassName<{
68
65
  position: 'top' | 'bottom';
69
66
  }>;
70
67
 
71
- type PanelProps = PanelOwnProps;
72
-
73
- const Panel = slottable<HTMLDivElement, PanelOwnProps>(
68
+ const SplitterPanel = slottable<HTMLDivElement, SplitterPanelProps>(
74
69
  ({ classNames, asChild, children, position, style, ...props }, forwardedRef) => {
75
70
  const { tx } = useThemeContext();
76
71
  const { __scopeSplitter, ...rest } = props as ScopedProps<typeof props>;
@@ -111,17 +106,17 @@ const Panel = slottable<HTMLDivElement, PanelOwnProps>(
111
106
  },
112
107
  );
113
108
 
114
- Panel.displayName = PANEL_NAME;
109
+ SplitterPanel.displayName = PANEL_NAME;
115
110
 
116
111
  //
117
112
  // Splitter
118
113
  //
119
114
 
120
115
  const Splitter = {
121
- Root,
122
- Panel,
116
+ Root: SplitterRoot,
117
+ Panel: SplitterPanel,
123
118
  };
124
119
 
125
120
  export { Splitter, createSplitterScope };
126
121
 
127
- export type { Mode as SplitterMode, RootProps as SplitterRootProps, PanelProps as SplitterPanelProps };
122
+ export type { Mode as SplitterMode, SplitterRootProps, SplitterPanelProps };
@@ -0,0 +1,31 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { mx } from '@dxos/ui-theme';
6
+ import type { ComponentFunction, Theme } from '@dxos/ui-types';
7
+
8
+ export type StatusStyleProps = {
9
+ variant?: 'default' | 'main-bottom';
10
+ indeterminate?: boolean;
11
+ };
12
+
13
+ const root: ComponentFunction<StatusStyleProps> = ({ variant = 'default' }, ...etc) =>
14
+ mx(
15
+ 'h-1 relative rounded-full overflow-hidden',
16
+ variant === 'main-bottom' ? 'w-full block' : 'inline-20 inline-block bg-base-surface',
17
+ ...etc,
18
+ );
19
+
20
+ const bar: ComponentFunction<StatusStyleProps> = ({ variant = 'default', indeterminate }, ...etc) =>
21
+ mx(
22
+ 'absolute inset-y-0 block rounded-full',
23
+ variant === 'main-bottom' ? 'bg-composer-300' : 'bg-un-accent',
24
+ indeterminate ? 'animate-progress-indeterminate' : 'start-0',
25
+ ...etc,
26
+ );
27
+
28
+ export const statusTheme: Theme<StatusStyleProps> = {
29
+ root,
30
+ bar,
31
+ };
@@ -4,9 +4,8 @@
4
4
 
5
5
  import React, { type ComponentPropsWithRef, forwardRef } from 'react';
6
6
 
7
- import { type StatusStyleProps } from '@dxos/ui-theme';
8
-
9
7
  import { useThemeContext } from '../../hooks';
8
+ import { type StatusStyleProps } from '../../theme';
10
9
  import { type ThemedClassName } from '../../util';
11
10
 
12
11
  type StatusProps = ThemedClassName<
@@ -0,0 +1,22 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { mx } from '@dxos/ui-theme';
6
+ import {
7
+ type ChromaticPalette,
8
+ type ComponentFunction,
9
+ type MessageValence,
10
+ type NeutralPalette,
11
+ type Theme,
12
+ } from '@dxos/ui-types';
13
+
14
+ export type TagStyleProps = {
15
+ palette?: ChromaticPalette | NeutralPalette | MessageValence;
16
+ };
17
+
18
+ const root: ComponentFunction<TagStyleProps> = (_, ...etc) => mx('dx-tag', ...etc);
19
+
20
+ export const tagTheme: Theme<TagStyleProps> = {
21
+ root,
22
+ };