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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (375) hide show
  1. package/dist/lib/browser/chunk-5SPBSIWS.mjs +33 -0
  2. package/dist/lib/browser/chunk-5SPBSIWS.mjs.map +7 -0
  3. package/dist/lib/browser/chunk-KVJDKHLF.mjs +1613 -0
  4. package/dist/lib/browser/chunk-KVJDKHLF.mjs.map +7 -0
  5. package/dist/lib/browser/index.mjs +2403 -1562
  6. package/dist/lib/browser/index.mjs.map +4 -4
  7. package/dist/lib/browser/meta.json +1 -1
  8. package/dist/lib/browser/testing/index.mjs +9 -6
  9. package/dist/lib/browser/testing/index.mjs.map +3 -3
  10. package/dist/lib/browser/translations.mjs +1 -1
  11. package/dist/lib/node-esm/chunk-5JYHWJDZ.mjs +1615 -0
  12. package/dist/lib/node-esm/chunk-5JYHWJDZ.mjs.map +7 -0
  13. package/dist/lib/node-esm/{chunk-XCFLA74M.mjs → chunk-FPVTVXND.mjs} +11 -2
  14. package/dist/lib/node-esm/chunk-FPVTVXND.mjs.map +7 -0
  15. package/dist/lib/node-esm/index.mjs +2403 -1562
  16. package/dist/lib/node-esm/index.mjs.map +4 -4
  17. package/dist/lib/node-esm/meta.json +1 -1
  18. package/dist/lib/node-esm/testing/index.mjs +9 -6
  19. package/dist/lib/node-esm/testing/index.mjs.map +3 -3
  20. package/dist/lib/node-esm/translations.mjs +1 -1
  21. package/dist/types/src/components/Avatars/Avatar.theme.d.ts +11 -0
  22. package/dist/types/src/components/Avatars/Avatar.theme.d.ts.map +1 -0
  23. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts +5 -1
  24. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
  25. package/dist/types/src/components/Breadcrumb/Breadcrumb.theme.d.ts +4 -0
  26. package/dist/types/src/components/Breadcrumb/Breadcrumb.theme.d.ts.map +1 -0
  27. package/dist/types/src/components/Button/Button.d.ts +1 -1
  28. package/dist/types/src/components/Button/Button.d.ts.map +1 -1
  29. package/dist/types/src/components/Button/Button.theme.d.ts +11 -0
  30. package/dist/types/src/components/Button/Button.theme.d.ts.map +1 -0
  31. package/dist/types/src/components/Button/IconButton.stories.d.ts +1 -0
  32. package/dist/types/src/components/Button/IconButton.stories.d.ts.map +1 -1
  33. package/dist/types/src/components/Button/IconButton.theme.d.ts +8 -0
  34. package/dist/types/src/components/Button/IconButton.theme.d.ts.map +1 -0
  35. package/dist/types/src/components/Calendar/Calendar.d.ts +33 -0
  36. package/dist/types/src/components/Calendar/Calendar.d.ts.map +1 -0
  37. package/dist/types/src/components/Calendar/Calendar.stories.d.ts +9 -0
  38. package/dist/types/src/components/Calendar/Calendar.stories.d.ts.map +1 -0
  39. package/dist/types/src/components/Calendar/Calendar.theme.d.ts +4 -0
  40. package/dist/types/src/components/Calendar/Calendar.theme.d.ts.map +1 -0
  41. package/dist/types/src/components/Calendar/index.d.ts +2 -0
  42. package/dist/types/src/components/Calendar/index.d.ts.map +1 -0
  43. package/dist/types/src/components/Card/Card.d.ts +51 -44
  44. package/dist/types/src/components/Card/Card.d.ts.map +1 -1
  45. package/dist/types/src/components/Card/Card.stories.d.ts +1 -0
  46. package/dist/types/src/components/Card/Card.stories.d.ts.map +1 -1
  47. package/dist/types/src/components/Card/Card.theme.d.ts +12 -0
  48. package/dist/types/src/components/Card/Card.theme.d.ts.map +1 -0
  49. package/dist/types/src/components/Carousel/Carousel.d.ts +2 -6
  50. package/dist/types/src/components/Carousel/Carousel.d.ts.map +1 -1
  51. package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -1
  52. package/dist/types/src/components/Clipboard/index.d.ts +1 -1
  53. package/dist/types/src/{primitives → components}/Column/Column.d.ts.map +1 -1
  54. package/dist/types/src/{primitives → components}/Column/Column.stories.d.ts.map +1 -1
  55. package/dist/types/src/components/Column/Column.theme.d.ts +9 -0
  56. package/dist/types/src/components/Column/Column.theme.d.ts.map +1 -0
  57. package/dist/types/src/components/Column/index.d.ts +3 -0
  58. package/dist/types/src/components/Column/index.d.ts.map +1 -0
  59. package/dist/types/src/components/Column/withColumn.d.ts +21 -0
  60. package/dist/types/src/components/Column/withColumn.d.ts.map +1 -0
  61. package/dist/types/src/components/DatePicker/DatePicker.d.ts +72 -0
  62. package/dist/types/src/components/DatePicker/DatePicker.d.ts.map +1 -0
  63. package/dist/types/src/components/DatePicker/DatePicker.stories.d.ts +10 -0
  64. package/dist/types/src/components/DatePicker/DatePicker.stories.d.ts.map +1 -0
  65. package/dist/types/src/components/DatePicker/DatePicker.theme.d.ts +6 -0
  66. package/dist/types/src/components/DatePicker/DatePicker.theme.d.ts.map +1 -0
  67. package/dist/types/src/components/DatePicker/index.d.ts +2 -0
  68. package/dist/types/src/components/DatePicker/index.d.ts.map +1 -0
  69. package/dist/types/src/components/Dialog/AlertDialog.d.ts +8 -8
  70. package/dist/types/src/components/Dialog/AlertDialog.d.ts.map +1 -1
  71. package/dist/types/src/components/Dialog/Dialog.d.ts +9 -7
  72. package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -1
  73. package/dist/types/src/components/Dialog/Dialog.theme.d.ts +10 -0
  74. package/dist/types/src/components/Dialog/Dialog.theme.d.ts.map +1 -0
  75. package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts.map +1 -1
  76. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts.map +1 -1
  77. package/dist/types/src/components/Focus/Focus.d.ts.map +1 -1
  78. package/dist/types/src/components/Focus/Focus.theme.d.ts +6 -0
  79. package/dist/types/src/components/Focus/Focus.theme.d.ts.map +1 -0
  80. package/dist/types/src/components/Icon/Icon.theme.d.ts +11 -0
  81. package/dist/types/src/components/Icon/Icon.theme.d.ts.map +1 -0
  82. package/dist/types/src/components/Icon/IconBlock.d.ts +15 -0
  83. package/dist/types/src/components/Icon/IconBlock.d.ts.map +1 -0
  84. package/dist/types/src/components/Icon/index.d.ts +1 -0
  85. package/dist/types/src/components/Icon/index.d.ts.map +1 -1
  86. package/dist/types/src/components/Input/Input.d.ts +81 -3
  87. package/dist/types/src/components/Input/Input.d.ts.map +1 -1
  88. package/dist/types/src/components/Input/Input.stories.d.ts +14 -3
  89. package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
  90. package/dist/types/src/components/Input/Input.theme.d.ts +115 -0
  91. package/dist/types/src/components/Input/Input.theme.d.ts.map +1 -0
  92. package/dist/types/src/components/Input/SegmentedInput.d.ts +79 -0
  93. package/dist/types/src/components/Input/SegmentedInput.d.ts.map +1 -0
  94. package/dist/types/src/components/Input/constants.d.ts +2 -0
  95. package/dist/types/src/components/Input/constants.d.ts.map +1 -0
  96. package/dist/types/src/components/Input/index.d.ts +2 -0
  97. package/dist/types/src/components/Input/index.d.ts.map +1 -1
  98. package/dist/types/src/components/Link/Link.theme.d.ts +6 -0
  99. package/dist/types/src/components/Link/Link.theme.d.ts.map +1 -0
  100. package/dist/types/src/components/List/List.d.ts.map +1 -1
  101. package/dist/types/src/components/List/List.theme.d.ts +7 -0
  102. package/dist/types/src/components/List/List.theme.d.ts.map +1 -0
  103. package/dist/types/src/components/List/Treegrid.d.ts +1 -1
  104. package/dist/types/src/components/List/Treegrid.d.ts.map +1 -1
  105. package/dist/types/src/components/List/Treegrid.theme.d.ts +7 -0
  106. package/dist/types/src/components/List/Treegrid.theme.d.ts.map +1 -0
  107. package/dist/types/src/components/Main/Main.d.ts +2 -2
  108. package/dist/types/src/components/Main/Main.d.ts.map +1 -1
  109. package/dist/types/src/components/Main/Main.theme.d.ts +20 -0
  110. package/dist/types/src/components/Main/Main.theme.d.ts.map +1 -0
  111. package/dist/types/src/components/Main/constants.d.ts +3 -0
  112. package/dist/types/src/components/Main/constants.d.ts.map +1 -0
  113. package/dist/types/src/components/Main/index.d.ts +1 -0
  114. package/dist/types/src/components/Main/index.d.ts.map +1 -1
  115. package/dist/types/src/components/MediaPlayer/MediaPlayer.d.ts +9 -12
  116. package/dist/types/src/components/MediaPlayer/MediaPlayer.d.ts.map +1 -1
  117. package/dist/types/src/components/MediaPlayer/MediaPlayer.stories.d.ts +1 -1
  118. package/dist/types/src/components/Menu/ContextMenu.stories.d.ts.map +1 -1
  119. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts.map +1 -1
  120. package/dist/types/src/components/Menu/Menu.theme.d.ts +7 -0
  121. package/dist/types/src/components/Menu/Menu.theme.d.ts.map +1 -0
  122. package/dist/types/src/components/Message/Message.d.ts +2 -2
  123. package/dist/types/src/components/Message/Message.d.ts.map +1 -1
  124. package/dist/types/src/components/Message/Message.stories.d.ts +5 -1
  125. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
  126. package/dist/types/src/components/Message/Message.theme.d.ts +7 -0
  127. package/dist/types/src/components/Message/Message.theme.d.ts.map +1 -0
  128. package/dist/types/src/{primitives → components}/Panel/Panel.d.ts +1 -1
  129. package/dist/types/src/components/Panel/Panel.d.ts.map +1 -0
  130. package/dist/types/src/{primitives → components}/Panel/Panel.stories.d.ts.map +1 -1
  131. package/dist/types/src/components/Panel/Panel.theme.d.ts +13 -0
  132. package/dist/types/src/components/Panel/Panel.theme.d.ts.map +1 -0
  133. package/dist/types/src/components/Panel/index.d.ts.map +1 -0
  134. package/dist/types/src/components/Popover/Popover.theme.d.ts +8 -0
  135. package/dist/types/src/components/Popover/Popover.theme.d.ts.map +1 -0
  136. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  137. package/dist/types/src/components/ScrollArea/ScrollArea.theme.d.ts +17 -0
  138. package/dist/types/src/components/ScrollArea/ScrollArea.theme.d.ts.map +1 -0
  139. package/dist/types/src/components/ScrollArea/index.d.ts +1 -0
  140. package/dist/types/src/components/ScrollArea/index.d.ts.map +1 -1
  141. package/dist/types/src/components/ScrollArea/scrollbar.d.ts +18 -0
  142. package/dist/types/src/components/ScrollArea/scrollbar.d.ts.map +1 -0
  143. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +13 -19
  144. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -1
  145. package/dist/types/src/components/Select/Select.d.ts.map +1 -1
  146. package/dist/types/src/components/Select/Select.theme.d.ts +6 -0
  147. package/dist/types/src/components/Select/Select.theme.d.ts.map +1 -0
  148. package/dist/types/src/components/Separator/Separator.theme.d.ts +7 -0
  149. package/dist/types/src/components/Separator/Separator.theme.d.ts.map +1 -0
  150. package/dist/types/src/components/Skeleton/Skeleton.theme.d.ts +6 -0
  151. package/dist/types/src/components/Skeleton/Skeleton.theme.d.ts.map +1 -0
  152. package/dist/types/src/components/Splitter/Splitter.d.ts +3 -5
  153. package/dist/types/src/components/Splitter/Splitter.d.ts.map +1 -1
  154. package/dist/types/src/components/Splitter/Splitter.theme.d.ts +4 -0
  155. package/dist/types/src/components/Splitter/Splitter.theme.d.ts.map +1 -0
  156. package/dist/types/src/components/Status/Status.d.ts +1 -1
  157. package/dist/types/src/components/Status/Status.d.ts.map +1 -1
  158. package/dist/types/src/components/Status/Status.theme.d.ts +7 -0
  159. package/dist/types/src/components/Status/Status.theme.d.ts.map +1 -0
  160. package/dist/types/src/components/Tag/Tag.theme.d.ts +6 -0
  161. package/dist/types/src/components/Tag/Tag.theme.d.ts.map +1 -0
  162. package/dist/types/src/components/Toast/Toast.d.ts +13 -10
  163. package/dist/types/src/components/Toast/Toast.d.ts.map +1 -1
  164. package/dist/types/src/components/Toast/Toast.stories.d.ts +5 -2
  165. package/dist/types/src/components/Toast/Toast.stories.d.ts.map +1 -1
  166. package/dist/types/src/components/Toast/Toast.theme.d.ts +4 -0
  167. package/dist/types/src/components/Toast/Toast.theme.d.ts.map +1 -0
  168. package/dist/types/src/components/Toolbar/Toolbar.d.ts +19 -7
  169. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  170. package/dist/types/src/components/Toolbar/Toolbar.theme.d.ts +8 -0
  171. package/dist/types/src/components/Toolbar/Toolbar.theme.d.ts.map +1 -0
  172. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
  173. package/dist/types/src/components/Tooltip/Tooltip.theme.d.ts +6 -0
  174. package/dist/types/src/components/Tooltip/Tooltip.theme.d.ts.map +1 -0
  175. package/dist/types/src/components/Tooltip/index.d.ts +1 -0
  176. package/dist/types/src/components/Tooltip/index.d.ts.map +1 -1
  177. package/dist/types/src/components/Tooltip/tooltipContent.d.ts +4 -0
  178. package/dist/types/src/components/Tooltip/tooltipContent.d.ts.map +1 -0
  179. package/dist/types/src/components/index.d.ts +5 -4
  180. package/dist/types/src/components/index.d.ts.map +1 -1
  181. package/dist/types/src/exemplars/generics.stories.d.ts.map +1 -1
  182. package/dist/types/src/exemplars/slot.stories.d.ts.map +1 -1
  183. package/dist/types/src/hooks/useTranslationsContext.d.ts +1 -1
  184. package/dist/types/src/index.d.ts +1 -0
  185. package/dist/types/src/index.d.ts.map +1 -1
  186. package/dist/types/src/playground/Custom.stories.d.ts.map +1 -1
  187. package/dist/types/src/primitives/Container/Container.d.ts.map +1 -1
  188. package/dist/types/src/{components → primitives}/DensityProvider/DensityProvider.d.ts.map +1 -1
  189. package/dist/types/src/primitives/DensityProvider/index.d.ts.map +1 -0
  190. package/dist/types/src/{components → primitives}/ElevationProvider/ElevationProvider.d.ts.map +1 -1
  191. package/dist/types/src/primitives/ElevationProvider/index.d.ts.map +1 -0
  192. package/dist/types/src/primitives/Flex/Flex.d.ts.map +1 -1
  193. package/dist/types/src/primitives/Grid/Grid.d.ts.map +1 -1
  194. package/dist/types/src/{components → primitives}/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  195. package/dist/types/src/{components → primitives}/ThemeProvider/ThemeProvider.stories.d.ts.map +1 -1
  196. package/dist/types/src/{components → primitives}/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
  197. package/dist/types/src/{components → primitives}/ThemeProvider/index.d.ts +1 -1
  198. package/dist/types/src/primitives/ThemeProvider/index.d.ts.map +1 -0
  199. package/dist/types/src/primitives/index.d.ts +3 -2
  200. package/dist/types/src/primitives/index.d.ts.map +1 -1
  201. package/dist/types/src/testing/decorators/withTheme.d.ts +5 -1
  202. package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
  203. package/dist/types/src/theme/bindTheme.d.ts +3 -0
  204. package/dist/types/src/theme/bindTheme.d.ts.map +1 -0
  205. package/dist/types/src/theme/defaultTheme.d.ts +4 -0
  206. package/dist/types/src/theme/defaultTheme.d.ts.map +1 -0
  207. package/dist/types/src/theme/index.d.ts +31 -0
  208. package/dist/types/src/theme/index.d.ts.map +1 -0
  209. package/dist/types/src/translations.d.ts +9 -0
  210. package/dist/types/src/translations.d.ts.map +1 -1
  211. package/dist/types/src/util/index.d.ts +2 -1
  212. package/dist/types/src/util/index.d.ts.map +1 -1
  213. package/dist/types/src/util/mobile.d.ts +5 -0
  214. package/dist/types/src/util/mobile.d.ts.map +1 -0
  215. package/dist/types/src/util/slots.d.ts +57 -0
  216. package/dist/types/src/util/slots.d.ts.map +1 -0
  217. package/dist/types/src/util/usePx.d.ts.map +1 -1
  218. package/dist/types/tsconfig.tsbuildinfo +1 -1
  219. package/package.json +19 -17
  220. package/src/components/Avatars/Avatar.theme.ts +93 -0
  221. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +1 -1
  222. package/src/components/Breadcrumb/Breadcrumb.theme.ts +26 -0
  223. package/src/components/Breadcrumb/Breadcrumb.tsx +14 -2
  224. package/src/components/Button/Button.theme.ts +31 -0
  225. package/src/components/Button/Button.tsx +1 -1
  226. package/src/components/Button/IconButton.stories.tsx +50 -2
  227. package/src/components/Button/IconButton.theme.ts +21 -0
  228. package/src/components/Calendar/Calendar.stories.tsx +43 -0
  229. package/src/components/Calendar/Calendar.theme.ts +74 -0
  230. package/src/components/Calendar/Calendar.tsx +196 -0
  231. package/src/components/Calendar/index.ts +5 -0
  232. package/src/components/Card/Card.stories.tsx +40 -19
  233. package/src/components/Card/Card.theme.ts +93 -0
  234. package/src/components/Card/Card.tsx +121 -147
  235. package/src/components/Carousel/Carousel.tsx +2 -10
  236. package/src/components/Clipboard/CopyButton.tsx +1 -1
  237. package/src/{primitives → components}/Column/Column.stories.tsx +1 -1
  238. package/src/components/Column/Column.theme.ts +48 -0
  239. package/src/{primitives → components}/Column/Column.tsx +2 -1
  240. package/src/{primitives → components}/Column/index.ts +1 -0
  241. package/src/components/Column/withColumn.ts +27 -0
  242. package/src/components/DatePicker/DatePicker.stories.tsx +102 -0
  243. package/src/components/DatePicker/DatePicker.theme.ts +35 -0
  244. package/src/components/DatePicker/DatePicker.tsx +279 -0
  245. package/src/components/DatePicker/index.ts +5 -0
  246. package/src/components/Dialog/AlertDialog.tsx +12 -13
  247. package/src/components/Dialog/Dialog.stories.tsx +2 -2
  248. package/src/components/Dialog/Dialog.theme.ts +61 -0
  249. package/src/components/Dialog/Dialog.tsx +46 -17
  250. package/src/components/ErrorFallback/ErrorFallback.tsx +14 -8
  251. package/src/components/ErrorFallback/ErrorStack.tsx +12 -6
  252. package/src/components/Focus/Focus.theme.ts +32 -0
  253. package/src/components/Focus/Focus.tsx +1 -1
  254. package/src/components/Icon/Icon.theme.ts +45 -0
  255. package/src/components/Icon/IconBlock.tsx +38 -0
  256. package/src/components/Icon/index.ts +1 -0
  257. package/src/components/Image/Image.stories.tsx +1 -1
  258. package/src/components/Input/Input.stories.tsx +132 -29
  259. package/src/components/Input/Input.theme.ts +191 -0
  260. package/src/components/Input/Input.tsx +207 -2
  261. package/src/components/Input/SegmentedInput.tsx +454 -0
  262. package/src/components/Input/constants.ts +5 -0
  263. package/src/components/Input/index.ts +2 -0
  264. package/src/components/Link/Link.theme.ts +16 -0
  265. package/src/components/List/List.theme.ts +47 -0
  266. package/src/components/List/List.tsx +2 -2
  267. package/src/components/List/ListDropIndicator.tsx +1 -1
  268. package/src/components/List/TreeDropIndicator.tsx +3 -3
  269. package/src/components/List/Treegrid.theme.ts +35 -0
  270. package/src/components/List/Treegrid.tsx +3 -4
  271. package/src/components/Main/Main.theme.ts +29 -0
  272. package/src/components/Main/Main.tsx +9 -7
  273. package/src/components/Main/constants.ts +6 -0
  274. package/src/components/Main/index.ts +1 -0
  275. package/src/components/MediaPlayer/MediaPlayer.tsx +61 -36
  276. package/src/components/Menu/ContextMenu.stories.tsx +0 -3
  277. package/src/components/Menu/DropdownMenu.stories.tsx +0 -3
  278. package/src/components/Menu/DropdownMenu.tsx +15 -15
  279. package/src/components/Menu/Menu.theme.ts +48 -0
  280. package/src/components/Message/Message.stories.tsx +42 -4
  281. package/src/components/Message/Message.theme.ts +44 -0
  282. package/src/components/Message/Message.tsx +63 -20
  283. package/src/{primitives → components}/Panel/Panel.stories.tsx +2 -3
  284. package/src/components/Panel/Panel.theme.ts +42 -0
  285. package/src/{primitives → components}/Panel/Panel.tsx +2 -1
  286. package/src/components/Popover/Popover.theme.ts +40 -0
  287. package/src/components/Popover/Popover.tsx +7 -7
  288. package/src/components/ScrollArea/ScrollArea.stories.tsx +1 -1
  289. package/src/components/ScrollArea/ScrollArea.theme.ts +107 -0
  290. package/src/components/ScrollArea/ScrollArea.tsx +3 -2
  291. package/src/components/ScrollArea/index.ts +1 -0
  292. package/src/components/ScrollArea/scrollbar.ts +21 -0
  293. package/src/components/ScrollContainer/ScrollContainer.stories.tsx +1 -1
  294. package/src/components/ScrollContainer/ScrollContainer.tsx +57 -55
  295. package/src/components/Select/Select.theme.ts +55 -0
  296. package/src/components/Select/Select.tsx +26 -10
  297. package/src/components/Separator/Separator.theme.ts +23 -0
  298. package/src/components/Skeleton/Skeleton.theme.ts +22 -0
  299. package/src/components/Splitter/Splitter.stories.tsx +1 -1
  300. package/src/components/Splitter/Splitter.theme.ts +18 -0
  301. package/src/components/Splitter/Splitter.tsx +10 -15
  302. package/src/components/Status/Status.theme.ts +31 -0
  303. package/src/components/Status/Status.tsx +1 -2
  304. package/src/components/Tag/Tag.theme.ts +22 -0
  305. package/src/components/Toast/Toast.stories.tsx +41 -20
  306. package/src/components/Toast/Toast.theme.ts +56 -0
  307. package/src/components/Toast/Toast.tsx +95 -27
  308. package/src/components/Toolbar/Toolbar.theme.ts +36 -0
  309. package/src/components/Toolbar/Toolbar.tsx +63 -13
  310. package/src/components/Tooltip/Tooltip.stories.tsx +0 -9
  311. package/src/components/Tooltip/Tooltip.theme.ts +19 -0
  312. package/src/components/Tooltip/Tooltip.tsx +4 -4
  313. package/src/components/Tooltip/index.ts +1 -0
  314. package/src/components/Tooltip/tooltipContent.ts +16 -0
  315. package/src/components/index.ts +5 -5
  316. package/src/exemplars/generics.stories.tsx +1 -2
  317. package/src/exemplars/slot.stories.tsx +2 -1
  318. package/src/hooks/useDensityContext.ts +1 -1
  319. package/src/hooks/useElevationContext.ts +1 -1
  320. package/src/hooks/useThemeContext.ts +1 -1
  321. package/src/hooks/useTranslationsContext.ts +1 -1
  322. package/src/index.ts +1 -0
  323. package/src/playground/Custom.stories.tsx +12 -32
  324. package/src/primitives/Container/Container.tsx +3 -1
  325. package/src/{components → primitives}/DensityProvider/DensityProvider.tsx +1 -1
  326. package/src/primitives/Flex/Flex.tsx +3 -1
  327. package/src/primitives/Grid/Grid.tsx +3 -1
  328. package/src/{components → primitives}/ThemeProvider/ThemeProvider.stories.tsx +1 -1
  329. package/src/{components → primitives}/ThemeProvider/ThemeProvider.tsx +1 -1
  330. package/src/{components → primitives}/ThemeProvider/index.ts +1 -1
  331. package/src/primitives/index.ts +4 -2
  332. package/src/testing/decorators/withLayoutVariants.tsx +1 -1
  333. package/src/testing/decorators/withTheme.tsx +21 -13
  334. package/src/theme/bindTheme.ts +13 -0
  335. package/src/theme/defaultTheme.ts +83 -0
  336. package/src/theme/index.ts +37 -0
  337. package/src/translations.ts +9 -0
  338. package/src/util/index.ts +2 -1
  339. package/src/util/mobile.ts +11 -0
  340. package/src/util/slots.ts +129 -0
  341. package/src/util/usePx.ts +4 -1
  342. package/dist/lib/browser/chunk-A5QCIG5R.mjs +0 -24
  343. package/dist/lib/browser/chunk-A5QCIG5R.mjs.map +0 -7
  344. package/dist/lib/browser/chunk-LY5XDQR5.mjs +0 -846
  345. package/dist/lib/browser/chunk-LY5XDQR5.mjs.map +0 -7
  346. package/dist/lib/node-esm/chunk-NGKLIKP3.mjs +0 -848
  347. package/dist/lib/node-esm/chunk-NGKLIKP3.mjs.map +0 -7
  348. package/dist/lib/node-esm/chunk-XCFLA74M.mjs.map +0 -7
  349. package/dist/types/src/components/DensityProvider/index.d.ts.map +0 -1
  350. package/dist/types/src/components/ElevationProvider/index.d.ts.map +0 -1
  351. package/dist/types/src/components/ThemeProvider/index.d.ts.map +0 -1
  352. package/dist/types/src/primitives/Column/index.d.ts +0 -2
  353. package/dist/types/src/primitives/Column/index.d.ts.map +0 -1
  354. package/dist/types/src/primitives/Panel/Panel.d.ts.map +0 -1
  355. package/dist/types/src/primitives/Panel/index.d.ts.map +0 -1
  356. package/dist/types/src/util/hasIosKeyboard.d.ts +0 -2
  357. package/dist/types/src/util/hasIosKeyboard.d.ts.map +0 -1
  358. package/src/util/hasIosKeyboard.ts +0 -8
  359. /package/dist/types/src/{primitives → components}/Column/Column.d.ts +0 -0
  360. /package/dist/types/src/{primitives → components}/Column/Column.stories.d.ts +0 -0
  361. /package/dist/types/src/{primitives → components}/Panel/Panel.stories.d.ts +0 -0
  362. /package/dist/types/src/{primitives → components}/Panel/index.d.ts +0 -0
  363. /package/dist/types/src/{components → primitives}/DensityProvider/DensityProvider.d.ts +0 -0
  364. /package/dist/types/src/{components → primitives}/DensityProvider/index.d.ts +0 -0
  365. /package/dist/types/src/{components → primitives}/ElevationProvider/ElevationProvider.d.ts +0 -0
  366. /package/dist/types/src/{components → primitives}/ElevationProvider/index.d.ts +0 -0
  367. /package/dist/types/src/{components → primitives}/ThemeProvider/ThemeProvider.d.ts +0 -0
  368. /package/dist/types/src/{components → primitives}/ThemeProvider/ThemeProvider.stories.d.ts +0 -0
  369. /package/dist/types/src/{components → primitives}/ThemeProvider/TranslationsProvider.d.ts +0 -0
  370. /package/src/{primitives → components}/Column/AUDIT.md +0 -0
  371. /package/src/{primitives → components}/Panel/index.ts +0 -0
  372. /package/src/{components → primitives}/DensityProvider/index.ts +0 -0
  373. /package/src/{components → primitives}/ElevationProvider/ElevationProvider.tsx +0 -0
  374. /package/src/{components → primitives}/ElevationProvider/index.ts +0 -0
  375. /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,9 +271,9 @@ 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 (
@@ -285,9 +287,9 @@ const Fade = () => {
285
287
  )}
286
288
  />
287
289
  );
288
- };
290
+ }
289
291
 
290
- Fade.displayName = FADE_NAME;
292
+ ScrollContainerFade.displayName = FADE_NAME;
291
293
 
292
294
  //
293
295
  // ScrollDownButton
@@ -295,9 +297,9 @@ Fade.displayName = FADE_NAME;
295
297
 
296
298
  const SCROLL_DOWN_BUTTON_NAME = 'ScrollContainer.ScrollDownButton';
297
299
 
298
- type ScrollDownButtonProps = ThemedClassName;
300
+ type ScrollContainerScrollDownButtonProps = ThemedClassName;
299
301
 
300
- const ScrollDownButton = ({ classNames }: ScrollDownButtonProps) => {
302
+ function ScrollContainerScrollDownButton({ classNames }: ScrollContainerScrollDownButtonProps) {
301
303
  const { pinned, controller } = useScrollContainerContext(SCROLL_DOWN_BUTTON_NAME);
302
304
 
303
305
  return (
@@ -318,9 +320,9 @@ const ScrollDownButton = ({ classNames }: ScrollDownButtonProps) => {
318
320
  />
319
321
  </div>
320
322
  );
321
- };
323
+ }
322
324
 
323
- ScrollDownButton.displayName = SCROLL_DOWN_BUTTON_NAME;
325
+ ScrollContainerScrollDownButton.displayName = SCROLL_DOWN_BUTTON_NAME;
324
326
 
325
327
  //
326
328
  // ScrollContainer
@@ -329,17 +331,17 @@ ScrollDownButton.displayName = SCROLL_DOWN_BUTTON_NAME;
329
331
  export { useScrollContainerContext };
330
332
 
331
333
  export const ScrollContainer = {
332
- Root,
333
- Content,
334
- Viewport,
335
- Fade,
336
- ScrollDownButton,
334
+ Root: ScrollContainerRoot,
335
+ Content: ScrollContainerContent,
336
+ Viewport: ScrollContainerViewport,
337
+ Fade: ScrollContainerFade,
338
+ ScrollDownButton: ScrollContainerScrollDownButton,
337
339
  };
338
340
 
339
341
  export type {
340
- RootProps as ScrollContainerRootProps,
341
- ContentProps as ScrollContainerContentProps,
342
- ViewportProps as ScrollContainerViewportProps,
343
- FadeProps as ScrollContainerFadeProps,
344
- ScrollDownButtonProps as ScrollContainerScrollDownButtonProps,
342
+ ScrollContainerRootProps,
343
+ ScrollContainerContentProps,
344
+ ScrollContainerViewportProps,
345
+ ScrollContainerFadeProps,
346
+ ScrollContainerScrollDownButtonProps,
345
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
+ };