@dxos/ui-theme 0.8.4-main.ef1bc66f44 → 0.8.4-main.fcfe5033a5

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 (390) hide show
  1. package/dist/lib/browser/index.mjs +770 -2901
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/node-esm/index.mjs +770 -2901
  5. package/dist/lib/node-esm/index.mjs.map +4 -4
  6. package/dist/lib/node-esm/meta.json +1 -1
  7. package/dist/plugin/node-cjs/main.css +1529 -0
  8. package/dist/plugin/node-cjs/main.css.map +7 -0
  9. package/dist/plugin/node-cjs/meta.json +1 -1
  10. package/dist/plugin/node-cjs/plugins/ThemePlugin.cjs +137 -0
  11. package/dist/plugin/node-cjs/plugins/ThemePlugin.cjs.map +7 -0
  12. package/dist/plugin/node-esm/main.css +1529 -0
  13. package/dist/plugin/node-esm/main.css.map +7 -0
  14. package/dist/plugin/node-esm/meta.json +1 -1
  15. package/dist/plugin/node-esm/plugins/ThemePlugin.mjs +105 -0
  16. package/dist/plugin/node-esm/plugins/ThemePlugin.mjs.map +7 -0
  17. package/dist/types/src/Theme.stories.d.ts +27 -0
  18. package/dist/types/src/Theme.stories.d.ts.map +1 -0
  19. package/dist/types/src/defs.d.ts +21 -0
  20. package/dist/types/src/defs.d.ts.map +1 -0
  21. package/dist/types/src/fragments/density.d.ts +4 -0
  22. package/dist/types/src/fragments/density.d.ts.map +1 -0
  23. package/dist/types/src/fragments/disabled.d.ts.map +1 -0
  24. package/dist/types/src/fragments/hover.d.ts +10 -0
  25. package/dist/types/src/fragments/hover.d.ts.map +1 -0
  26. package/dist/types/src/fragments/index.d.ts +5 -0
  27. package/dist/types/src/fragments/index.d.ts.map +1 -0
  28. package/dist/types/src/fragments/text.d.ts +2 -0
  29. package/dist/types/src/fragments/text.d.ts.map +1 -0
  30. package/dist/types/src/index.d.ts +3 -11
  31. package/dist/types/src/index.d.ts.map +1 -1
  32. package/dist/types/src/plugins/ThemePlugin.d.ts +16 -0
  33. package/dist/types/src/plugins/ThemePlugin.d.ts.map +1 -0
  34. package/dist/types/src/plugins/dark-mode.d.ts +1 -0
  35. package/dist/types/src/plugins/dark-mode.d.ts.map +1 -0
  36. package/dist/types/src/theme/components/avatar.d.ts.map +1 -0
  37. package/dist/types/src/theme/components/breadcrumb.d.ts.map +1 -0
  38. package/dist/types/src/theme/components/button.d.ts +15 -0
  39. package/dist/types/src/theme/components/button.d.ts.map +1 -0
  40. package/dist/types/src/theme/components/card.d.ts +12 -0
  41. package/dist/types/src/theme/components/card.d.ts.map +1 -0
  42. package/dist/types/src/theme/components/dialog.d.ts.map +1 -0
  43. package/dist/types/src/theme/components/focus.d.ts +6 -0
  44. package/dist/types/src/theme/components/focus.d.ts.map +1 -0
  45. package/dist/types/src/theme/components/icon-button.d.ts.map +1 -0
  46. package/dist/types/src/{styles → theme}/components/icon.d.ts +3 -0
  47. package/dist/types/src/theme/components/icon.d.ts.map +1 -0
  48. package/dist/types/src/{styles → theme}/components/index.d.ts +3 -1
  49. package/dist/types/src/theme/components/index.d.ts.map +1 -0
  50. package/dist/types/src/{styles → theme}/components/input.d.ts +25 -21
  51. package/dist/types/src/theme/components/input.d.ts.map +1 -0
  52. package/dist/types/src/theme/components/link.d.ts.map +1 -0
  53. package/dist/types/src/theme/components/list.d.ts.map +1 -0
  54. package/dist/types/src/{styles → theme}/components/main.d.ts +2 -2
  55. package/dist/types/src/theme/components/main.d.ts.map +1 -0
  56. package/dist/types/src/{styles → theme}/components/menu.d.ts +1 -1
  57. package/dist/types/src/theme/components/menu.d.ts.map +1 -0
  58. package/dist/types/src/{styles → theme}/components/message.d.ts +1 -0
  59. package/dist/types/src/theme/components/message.d.ts.map +1 -0
  60. package/dist/types/src/{styles → theme}/components/popover.d.ts +1 -1
  61. package/dist/types/src/theme/components/popover.d.ts.map +1 -0
  62. package/dist/types/src/{styles → theme}/components/scroll-area.d.ts +17 -1
  63. package/dist/types/src/theme/components/scroll-area.d.ts.map +1 -0
  64. package/dist/types/src/theme/components/select.d.ts.map +1 -0
  65. package/dist/types/src/theme/components/separator.d.ts.map +1 -0
  66. package/dist/types/src/theme/components/skeleton.d.ts.map +1 -0
  67. package/dist/types/src/theme/components/splitter.d.ts +4 -0
  68. package/dist/types/src/theme/components/splitter.d.ts.map +1 -0
  69. package/dist/types/src/{styles → theme}/components/status.d.ts +1 -1
  70. package/dist/types/src/theme/components/status.d.ts.map +1 -0
  71. package/dist/types/src/theme/components/tag.d.ts.map +1 -0
  72. package/dist/types/src/theme/components/toast.d.ts.map +1 -0
  73. package/dist/types/src/{styles → theme}/components/toolbar.d.ts +2 -2
  74. package/dist/types/src/theme/components/toolbar.d.ts.map +1 -0
  75. package/dist/types/src/theme/components/tooltip.d.ts.map +1 -0
  76. package/dist/types/src/theme/components/treegrid.d.ts.map +1 -0
  77. package/dist/types/src/{styles → theme}/index.d.ts +0 -1
  78. package/dist/types/src/theme/index.d.ts.map +1 -0
  79. package/dist/types/src/theme/primitives/column.d.ts +29 -0
  80. package/dist/types/src/theme/primitives/column.d.ts.map +1 -0
  81. package/dist/types/src/theme/primitives/index.d.ts +3 -0
  82. package/dist/types/src/theme/primitives/index.d.ts.map +1 -0
  83. package/dist/types/src/theme/primitives/panel.d.ts +13 -0
  84. package/dist/types/src/theme/primitives/panel.d.ts.map +1 -0
  85. package/dist/types/src/theme/theme.d.ts.map +1 -0
  86. package/dist/types/src/{styles/fragments → util}/elevation.d.ts +0 -6
  87. package/dist/types/src/util/elevation.d.ts.map +1 -0
  88. package/dist/types/src/util/hash-styles.d.ts +8 -5
  89. package/dist/types/src/util/hash-styles.d.ts.map +1 -1
  90. package/dist/types/src/util/index.d.ts +3 -0
  91. package/dist/types/src/util/index.d.ts.map +1 -1
  92. package/dist/types/src/util/mx.d.ts +36 -0
  93. package/dist/types/src/util/mx.d.ts.map +1 -1
  94. package/dist/types/src/util/size.d.ts +27 -0
  95. package/dist/types/src/util/size.d.ts.map +1 -0
  96. package/dist/types/src/util/valence.d.ts +4 -0
  97. package/dist/types/src/util/valence.d.ts.map +1 -0
  98. package/dist/types/tsconfig.tsbuildinfo +1 -1
  99. package/package.json +23 -26
  100. package/src/Theme.stories.tsx +224 -0
  101. package/src/css/base/base.css +43 -0
  102. package/src/{styles/layers → css/base}/typography.css +3 -5
  103. package/src/{styles/layers → css/components}/button.css +23 -14
  104. package/src/{styles/layers → css/components}/checkbox.css +12 -8
  105. package/src/{styles/layers → css/components}/dialog.css +16 -11
  106. package/src/{styles/layers/focus-ring.css → css/components/focus.css} +60 -41
  107. package/src/css/components/icon.css +9 -0
  108. package/src/css/components/link.css +9 -0
  109. package/src/css/components/panel.css +117 -0
  110. package/src/css/components/scrollbar.css +24 -0
  111. package/src/css/components/selected.css +30 -0
  112. package/src/css/components/surface.css +34 -0
  113. package/src/css/components/tag.css +130 -0
  114. package/src/css/components/text.css +124 -0
  115. package/src/css/integrations/codemirror.css +34 -0
  116. package/src/css/integrations/tldraw.css +14 -0
  117. package/src/css/layout/main.css +205 -0
  118. package/src/{styles/layers → css/layout}/native.css +6 -4
  119. package/src/css/layout/positioning.css +19 -0
  120. package/src/{styles/layers → css/layout}/size.css +117 -107
  121. package/src/css/theme/animation.css +229 -0
  122. package/src/css/theme/border.css +23 -0
  123. package/src/css/theme/palette.css +36 -0
  124. package/src/css/theme/semantic.css +116 -0
  125. package/src/css/theme/spacing.css +147 -0
  126. package/src/css/theme/styles.css +145 -0
  127. package/src/css/theme/text.css +37 -0
  128. package/src/css/utilities.css +76 -0
  129. package/src/defs.ts +48 -0
  130. package/src/fragments/AUDIT.md +57 -0
  131. package/src/fragments/density.ts +16 -0
  132. package/src/fragments/hover.ts +18 -0
  133. package/src/fragments/index.ts +10 -0
  134. package/src/fragments/text.ts +6 -0
  135. package/src/index.ts +3 -15
  136. package/src/main.css +87 -0
  137. package/src/plugins/ThemePlugin.ts +125 -0
  138. package/src/plugins/dark-mode.ts +22 -0
  139. package/src/plugins/main.css +45 -0
  140. package/src/{styles → theme}/components/avatar.ts +12 -13
  141. package/src/theme/components/button.ts +48 -0
  142. package/src/theme/components/card.ts +102 -0
  143. package/src/{styles → theme}/components/dialog.ts +13 -12
  144. package/src/theme/components/focus.ts +33 -0
  145. package/src/{styles → theme}/components/icon-button.ts +1 -3
  146. package/src/theme/components/icon.ts +28 -0
  147. package/src/{styles → theme}/components/index.ts +3 -1
  148. package/src/theme/components/input.ts +171 -0
  149. package/src/{styles → theme}/components/link.ts +3 -4
  150. package/src/{styles → theme}/components/list.ts +5 -5
  151. package/src/{styles → theme}/components/main.ts +2 -2
  152. package/src/{styles → theme}/components/menu.ts +11 -13
  153. package/src/{styles → theme}/components/message.ts +11 -7
  154. package/src/{styles → theme}/components/popover.ts +13 -12
  155. package/src/theme/components/scroll-area.ts +115 -0
  156. package/src/{styles → theme}/components/select.ts +8 -16
  157. package/src/{styles → theme}/components/separator.ts +3 -3
  158. package/src/{styles → theme}/components/skeleton.ts +2 -2
  159. package/src/theme/components/splitter.ts +20 -0
  160. package/src/{styles → theme}/components/status.ts +7 -7
  161. package/src/{styles → theme}/components/tag.ts +1 -1
  162. package/src/{styles → theme}/components/toast.ts +6 -8
  163. package/src/{styles → theme}/components/toolbar.ts +6 -7
  164. package/src/{styles → theme}/components/tooltip.ts +4 -6
  165. package/src/{styles → theme}/components/treegrid.ts +9 -9
  166. package/src/{styles → theme}/index.ts +1 -2
  167. package/src/theme/primitives/column.ts +71 -0
  168. package/src/theme/primitives/index.ts +6 -0
  169. package/src/theme/primitives/panel.ts +43 -0
  170. package/src/{styles → theme}/theme.ts +13 -19
  171. package/src/typings.d.ts +3 -1
  172. package/src/{styles/fragments → util}/elevation.ts +6 -8
  173. package/src/util/hash-styles.ts +118 -98
  174. package/src/util/index.ts +3 -0
  175. package/src/util/mx.ts +165 -43
  176. package/src/util/size.ts +103 -0
  177. package/src/util/valence.ts +33 -0
  178. package/dist/plugin/node-cjs/chunk-UUMDOU7E.cjs +0 -79
  179. package/dist/plugin/node-cjs/chunk-UUMDOU7E.cjs.map +0 -7
  180. package/dist/plugin/node-cjs/chunk-YBWOZKXY.cjs +0 -1634
  181. package/dist/plugin/node-cjs/chunk-YBWOZKXY.cjs.map +0 -7
  182. package/dist/plugin/node-cjs/config/tailwind.cjs +0 -29
  183. package/dist/plugin/node-cjs/config/tailwind.cjs.map +0 -7
  184. package/dist/plugin/node-cjs/plugins/esbuild-plugin.cjs +0 -90
  185. package/dist/plugin/node-cjs/plugins/esbuild-plugin.cjs.map +0 -7
  186. package/dist/plugin/node-cjs/plugins/plugin.cjs +0 -124
  187. package/dist/plugin/node-cjs/plugins/plugin.cjs.map +0 -7
  188. package/dist/plugin/node-cjs/theme.css +0 -1378
  189. package/dist/plugin/node-cjs/theme.css.map +0 -7
  190. package/dist/plugin/node-esm/chunk-AFRHJHP4.mjs +0 -49
  191. package/dist/plugin/node-esm/chunk-AFRHJHP4.mjs.map +0 -7
  192. package/dist/plugin/node-esm/chunk-LTGUAP22.mjs +0 -1629
  193. package/dist/plugin/node-esm/chunk-LTGUAP22.mjs.map +0 -7
  194. package/dist/plugin/node-esm/config/tailwind.mjs +0 -8
  195. package/dist/plugin/node-esm/config/tailwind.mjs.map +0 -7
  196. package/dist/plugin/node-esm/plugins/esbuild-plugin.mjs +0 -63
  197. package/dist/plugin/node-esm/plugins/esbuild-plugin.mjs.map +0 -7
  198. package/dist/plugin/node-esm/plugins/plugin.mjs +0 -98
  199. package/dist/plugin/node-esm/plugins/plugin.mjs.map +0 -7
  200. package/dist/plugin/node-esm/theme.css +0 -1378
  201. package/dist/plugin/node-esm/theme.css.map +0 -7
  202. package/dist/types/src/Tokens.stories.d.ts +0 -10
  203. package/dist/types/src/Tokens.stories.d.ts.map +0 -1
  204. package/dist/types/src/config/index.d.ts +0 -3
  205. package/dist/types/src/config/index.d.ts.map +0 -1
  206. package/dist/types/src/config/tailwind.d.ts +0 -9
  207. package/dist/types/src/config/tailwind.d.ts.map +0 -1
  208. package/dist/types/src/config/tokens/alias-colors.d.ts +0 -21
  209. package/dist/types/src/config/tokens/alias-colors.d.ts.map +0 -1
  210. package/dist/types/src/config/tokens/index.d.ts +0 -3
  211. package/dist/types/src/config/tokens/index.d.ts.map +0 -1
  212. package/dist/types/src/config/tokens/lengths.d.ts +0 -142
  213. package/dist/types/src/config/tokens/lengths.d.ts.map +0 -1
  214. package/dist/types/src/config/tokens/physical-colors.d.ts +0 -23
  215. package/dist/types/src/config/tokens/physical-colors.d.ts.map +0 -1
  216. package/dist/types/src/config/tokens/semantic-colors.d.ts +0 -192
  217. package/dist/types/src/config/tokens/semantic-colors.d.ts.map +0 -1
  218. package/dist/types/src/config/tokens/sememes-calls.d.ts +0 -3
  219. package/dist/types/src/config/tokens/sememes-calls.d.ts.map +0 -1
  220. package/dist/types/src/config/tokens/sememes-codemirror.d.ts +0 -43
  221. package/dist/types/src/config/tokens/sememes-codemirror.d.ts.map +0 -1
  222. package/dist/types/src/config/tokens/sememes-hue.d.ts +0 -4
  223. package/dist/types/src/config/tokens/sememes-hue.d.ts.map +0 -1
  224. package/dist/types/src/config/tokens/sememes-sheet.d.ts +0 -58
  225. package/dist/types/src/config/tokens/sememes-sheet.d.ts.map +0 -1
  226. package/dist/types/src/config/tokens/sememes-system.d.ts +0 -104
  227. package/dist/types/src/config/tokens/sememes-system.d.ts.map +0 -1
  228. package/dist/types/src/config/tokens/sizes.d.ts +0 -9
  229. package/dist/types/src/config/tokens/sizes.d.ts.map +0 -1
  230. package/dist/types/src/config/tokens/tokens.d.ts +0 -498
  231. package/dist/types/src/config/tokens/tokens.d.ts.map +0 -1
  232. package/dist/types/src/config/tokens/types.d.ts +0 -5
  233. package/dist/types/src/config/tokens/types.d.ts.map +0 -1
  234. package/dist/types/src/plugins/esbuild-plugin.d.ts +0 -9
  235. package/dist/types/src/plugins/esbuild-plugin.d.ts.map +0 -1
  236. package/dist/types/src/plugins/plugin.d.ts +0 -20
  237. package/dist/types/src/plugins/plugin.d.ts.map +0 -1
  238. package/dist/types/src/plugins/resolveContent.d.ts +0 -2
  239. package/dist/types/src/plugins/resolveContent.d.ts.map +0 -1
  240. package/dist/types/src/styles/components/anchored-overflow.d.ts +0 -6
  241. package/dist/types/src/styles/components/anchored-overflow.d.ts.map +0 -1
  242. package/dist/types/src/styles/components/avatar.d.ts.map +0 -1
  243. package/dist/types/src/styles/components/breadcrumb.d.ts.map +0 -1
  244. package/dist/types/src/styles/components/button.d.ts +0 -19
  245. package/dist/types/src/styles/components/button.d.ts.map +0 -1
  246. package/dist/types/src/styles/components/dialog.d.ts.map +0 -1
  247. package/dist/types/src/styles/components/icon-button.d.ts.map +0 -1
  248. package/dist/types/src/styles/components/icon.d.ts.map +0 -1
  249. package/dist/types/src/styles/components/index.d.ts.map +0 -1
  250. package/dist/types/src/styles/components/input.d.ts.map +0 -1
  251. package/dist/types/src/styles/components/link.d.ts.map +0 -1
  252. package/dist/types/src/styles/components/list.d.ts.map +0 -1
  253. package/dist/types/src/styles/components/main.d.ts.map +0 -1
  254. package/dist/types/src/styles/components/menu.d.ts.map +0 -1
  255. package/dist/types/src/styles/components/message.d.ts.map +0 -1
  256. package/dist/types/src/styles/components/popover.d.ts.map +0 -1
  257. package/dist/types/src/styles/components/scroll-area.d.ts.map +0 -1
  258. package/dist/types/src/styles/components/select.d.ts.map +0 -1
  259. package/dist/types/src/styles/components/separator.d.ts.map +0 -1
  260. package/dist/types/src/styles/components/skeleton.d.ts.map +0 -1
  261. package/dist/types/src/styles/components/status.d.ts.map +0 -1
  262. package/dist/types/src/styles/components/tag.d.ts.map +0 -1
  263. package/dist/types/src/styles/components/toast.d.ts.map +0 -1
  264. package/dist/types/src/styles/components/toolbar.d.ts.map +0 -1
  265. package/dist/types/src/styles/components/tooltip.d.ts.map +0 -1
  266. package/dist/types/src/styles/components/treegrid.d.ts.map +0 -1
  267. package/dist/types/src/styles/fragments/density.d.ts +0 -13
  268. package/dist/types/src/styles/fragments/density.d.ts.map +0 -1
  269. package/dist/types/src/styles/fragments/dimension.d.ts +0 -5
  270. package/dist/types/src/styles/fragments/dimension.d.ts.map +0 -1
  271. package/dist/types/src/styles/fragments/disabled.d.ts.map +0 -1
  272. package/dist/types/src/styles/fragments/elevation.d.ts.map +0 -1
  273. package/dist/types/src/styles/fragments/focus.d.ts +0 -6
  274. package/dist/types/src/styles/fragments/focus.d.ts.map +0 -1
  275. package/dist/types/src/styles/fragments/group.d.ts +0 -5
  276. package/dist/types/src/styles/fragments/group.d.ts.map +0 -1
  277. package/dist/types/src/styles/fragments/hover.d.ts +0 -17
  278. package/dist/types/src/styles/fragments/hover.d.ts.map +0 -1
  279. package/dist/types/src/styles/fragments/index.d.ts +0 -17
  280. package/dist/types/src/styles/fragments/index.d.ts.map +0 -1
  281. package/dist/types/src/styles/fragments/layout.d.ts +0 -3
  282. package/dist/types/src/styles/fragments/layout.d.ts.map +0 -1
  283. package/dist/types/src/styles/fragments/motion.d.ts +0 -2
  284. package/dist/types/src/styles/fragments/motion.d.ts.map +0 -1
  285. package/dist/types/src/styles/fragments/ornament.d.ts +0 -5
  286. package/dist/types/src/styles/fragments/ornament.d.ts.map +0 -1
  287. package/dist/types/src/styles/fragments/selected.d.ts +0 -13
  288. package/dist/types/src/styles/fragments/selected.d.ts.map +0 -1
  289. package/dist/types/src/styles/fragments/shimmer.d.ts +0 -3
  290. package/dist/types/src/styles/fragments/shimmer.d.ts.map +0 -1
  291. package/dist/types/src/styles/fragments/size.d.ts +0 -9
  292. package/dist/types/src/styles/fragments/size.d.ts.map +0 -1
  293. package/dist/types/src/styles/fragments/surface.d.ts +0 -9
  294. package/dist/types/src/styles/fragments/surface.d.ts.map +0 -1
  295. package/dist/types/src/styles/fragments/text.d.ts +0 -7
  296. package/dist/types/src/styles/fragments/text.d.ts.map +0 -1
  297. package/dist/types/src/styles/fragments/valence.d.ts +0 -13
  298. package/dist/types/src/styles/fragments/valence.d.ts.map +0 -1
  299. package/dist/types/src/styles/index.d.ts.map +0 -1
  300. package/dist/types/src/styles/primitives/container.d.ts +0 -15
  301. package/dist/types/src/styles/primitives/container.d.ts.map +0 -1
  302. package/dist/types/src/styles/primitives/index.d.ts +0 -2
  303. package/dist/types/src/styles/primitives/index.d.ts.map +0 -1
  304. package/dist/types/src/styles/theme.d.ts.map +0 -1
  305. package/dist/types/src/tailwind.d.ts +0 -3
  306. package/dist/types/src/tailwind.d.ts.map +0 -1
  307. package/dist/types/src/types.d.ts +0 -3
  308. package/dist/types/src/types.d.ts.map +0 -1
  309. package/dist/types/src/util/withLogical.d.ts +0 -164
  310. package/dist/types/src/util/withLogical.d.ts.map +0 -1
  311. package/src/Tokens.stories.tsx +0 -88
  312. package/src/config/index.ts +0 -6
  313. package/src/config/tailwind.ts +0 -265
  314. package/src/config/tokens/alias-colors.ts +0 -39
  315. package/src/config/tokens/index.ts +0 -6
  316. package/src/config/tokens/lengths.ts +0 -106
  317. package/src/config/tokens/physical-colors.ts +0 -125
  318. package/src/config/tokens/semantic-colors.ts +0 -27
  319. package/src/config/tokens/sememes-calls.ts +0 -17
  320. package/src/config/tokens/sememes-codemirror.ts +0 -50
  321. package/src/config/tokens/sememes-hue.ts +0 -54
  322. package/src/config/tokens/sememes-sheet.ts +0 -62
  323. package/src/config/tokens/sememes-system.ts +0 -307
  324. package/src/config/tokens/sizes.ts +0 -12
  325. package/src/config/tokens/tokens.ts +0 -90
  326. package/src/config/tokens/types.ts +0 -9
  327. package/src/docs/theme.drawio.svg +0 -635
  328. package/src/plugins/esbuild-plugin.ts +0 -65
  329. package/src/plugins/plugin.ts +0 -130
  330. package/src/plugins/resolveContent.ts +0 -51
  331. package/src/styles/components/README.md +0 -6
  332. package/src/styles/components/anchored-overflow.ts +0 -20
  333. package/src/styles/components/button.ts +0 -48
  334. package/src/styles/components/icon.ts +0 -19
  335. package/src/styles/components/input.ts +0 -177
  336. package/src/styles/components/scroll-area.ts +0 -90
  337. package/src/styles/fragments/density.ts +0 -17
  338. package/src/styles/fragments/dimension.ts +0 -8
  339. package/src/styles/fragments/focus.ts +0 -16
  340. package/src/styles/fragments/group.ts +0 -12
  341. package/src/styles/fragments/hover.ts +0 -25
  342. package/src/styles/fragments/index.ts +0 -20
  343. package/src/styles/fragments/layout.ts +0 -7
  344. package/src/styles/fragments/motion.ts +0 -6
  345. package/src/styles/fragments/ornament.ts +0 -10
  346. package/src/styles/fragments/selected.ts +0 -45
  347. package/src/styles/fragments/shimmer.ts +0 -9
  348. package/src/styles/fragments/size.ts +0 -117
  349. package/src/styles/fragments/surface.ts +0 -29
  350. package/src/styles/fragments/text.ts +0 -12
  351. package/src/styles/fragments/valence.ts +0 -46
  352. package/src/styles/layers/README.md +0 -15
  353. package/src/styles/layers/anchored-overflow.css +0 -9
  354. package/src/styles/layers/animation.css +0 -17
  355. package/src/styles/layers/attention.css +0 -8
  356. package/src/styles/layers/base.css +0 -25
  357. package/src/styles/layers/can-scroll.css +0 -26
  358. package/src/styles/layers/drag-preview.css +0 -18
  359. package/src/styles/layers/hues.css +0 -110
  360. package/src/styles/layers/index.css +0 -27
  361. package/src/styles/layers/main.css +0 -183
  362. package/src/styles/layers/positioning.css +0 -23
  363. package/src/styles/layers/scrollbar.css +0 -10
  364. package/src/styles/layers/surfaces.css +0 -31
  365. package/src/styles/layers/tag.css +0 -132
  366. package/src/styles/layers/tldraw.css +0 -91
  367. package/src/styles/layers/tokens.css +0 -47
  368. package/src/styles/primitives/container.ts +0 -33
  369. package/src/styles/primitives/index.ts +0 -5
  370. package/src/tailwind.ts +0 -7
  371. package/src/theme.css +0 -9
  372. package/src/types.ts +0 -7
  373. package/src/util/withLogical.ts +0 -114
  374. /package/dist/types/src/{styles/fragments → fragments}/disabled.d.ts +0 -0
  375. /package/dist/types/src/{styles → theme}/components/avatar.d.ts +0 -0
  376. /package/dist/types/src/{styles → theme}/components/breadcrumb.d.ts +0 -0
  377. /package/dist/types/src/{styles → theme}/components/dialog.d.ts +0 -0
  378. /package/dist/types/src/{styles → theme}/components/icon-button.d.ts +0 -0
  379. /package/dist/types/src/{styles → theme}/components/link.d.ts +0 -0
  380. /package/dist/types/src/{styles → theme}/components/list.d.ts +0 -0
  381. /package/dist/types/src/{styles → theme}/components/select.d.ts +0 -0
  382. /package/dist/types/src/{styles → theme}/components/separator.d.ts +0 -0
  383. /package/dist/types/src/{styles → theme}/components/skeleton.d.ts +0 -0
  384. /package/dist/types/src/{styles → theme}/components/tag.d.ts +0 -0
  385. /package/dist/types/src/{styles → theme}/components/toast.d.ts +0 -0
  386. /package/dist/types/src/{styles → theme}/components/tooltip.d.ts +0 -0
  387. /package/dist/types/src/{styles → theme}/components/treegrid.d.ts +0 -0
  388. /package/dist/types/src/{styles → theme}/theme.d.ts +0 -0
  389. /package/src/{styles/fragments → fragments}/disabled.ts +0 -0
  390. /package/src/{styles → theme}/components/breadcrumb.ts +0 -0
@@ -1,2180 +1,276 @@
1
- // src/config/tailwind.ts
2
- import tailwindcssContainerQueries from "@tailwindcss/container-queries";
3
- import tailwindcssForms from "@tailwindcss/forms";
4
- import merge from "lodash.merge";
5
- import tailwindScrollbar from "tailwind-scrollbar";
6
- import defaultConfig from "tailwindcss/stubs/config.full.js";
7
- import tailwindcssLogical from "tailwindcss-logical";
8
- import tailwindcssRadix from "tailwindcss-radix";
9
-
10
- // src/config/tokens/sizes.ts
1
+ // src/defs.ts
2
+ var osTranslations = "org.dxos.i18n.os";
3
+ var hues = [
4
+ "red",
5
+ "orange",
6
+ "amber",
7
+ "yellow",
8
+ "lime",
9
+ "green",
10
+ "emerald",
11
+ "teal",
12
+ "cyan",
13
+ "sky",
14
+ "blue",
15
+ "indigo",
16
+ "violet",
17
+ "purple",
18
+ "fuchsia",
19
+ "pink",
20
+ "rose"
21
+ ];
22
+ var hueShades = [
23
+ 50,
24
+ 100,
25
+ 200,
26
+ 300,
27
+ 400,
28
+ 500,
29
+ 600,
30
+ 700,
31
+ 800,
32
+ 900,
33
+ 950
34
+ ];
35
+ var roles = [
36
+ "fill",
37
+ "surface",
38
+ "surface-text",
39
+ "text",
40
+ "border"
41
+ ];
11
42
  var cardMinInlineSize = 18;
12
43
  var cardDefaultInlineSize = 20;
13
44
  var cardMaxInlineSize = 22;
14
45
  var cardMinBlockSize = 18;
15
46
  var cardMaxBlockSize = 30;
16
47
 
17
- // src/config/tokens/tokens.ts
18
- import adapter from "@ch-ui/tailwind-tokens";
48
+ // src/fragments/density.ts
49
+ var fineBlockSize = "min-h-[2.5rem] pointer-fine:min-h-[2rem]";
50
+ var coarseBlockSize = "min-h-[2.5rem]";
51
+ var fineDimensions = `${fineBlockSize} px-2`;
52
+ var coarseDimensions = `${coarseBlockSize} px-3`;
53
+ var densityDimensions = (density = "fine") => density === "fine" ? fineDimensions : coarseDimensions;
54
+ var densityBlockSize = (density = "fine") => density === "fine" ? fineBlockSize : coarseBlockSize;
19
55
 
20
- // src/config/tokens/physical-colors.ts
21
- var reflectiveRelation = {
22
- initial: 1e3,
23
- slope: -1e3,
24
- method: "floor"
25
- };
26
- var gamuts = [
27
- "srgb",
28
- "p3",
29
- "rec2020"
30
- ];
31
- var DEG_RAD = Math.PI / 180;
32
- var hueKeyPoint = (hue) => {
33
- const hueDeg = (360 * (hue / 17) + 26) % 360;
34
- return {
35
- keyPoint: [
36
- 0.5,
37
- 0.13 + 0.024 * Math.sin((hueDeg - 15) * DEG_RAD),
38
- hueDeg
39
- ],
40
- lowerCp: 1,
41
- upperCp: 1,
42
- torsion: 0
43
- };
44
- };
45
- var huePalettes = {
46
- red: hueKeyPoint(0),
47
- orange: hueKeyPoint(1),
48
- amber: hueKeyPoint(2),
49
- yellow: hueKeyPoint(3),
50
- lime: hueKeyPoint(4),
51
- green: hueKeyPoint(5),
52
- emerald: hueKeyPoint(6),
53
- teal: hueKeyPoint(7),
54
- cyan: hueKeyPoint(8),
55
- sky: hueKeyPoint(9),
56
- blue: hueKeyPoint(10),
57
- indigo: hueKeyPoint(11),
58
- violet: hueKeyPoint(12),
59
- purple: hueKeyPoint(13),
60
- fuchsia: hueKeyPoint(14),
61
- pink: hueKeyPoint(15),
62
- rose: hueKeyPoint(16)
63
- };
64
- var systemPalettes = {
65
- neutral: {
66
- keyPoint: [
67
- 0.5,
68
- 1e-3,
69
- 260
70
- ],
71
- lowerCp: 0,
72
- upperCp: 0,
73
- torsion: 0,
74
- // Values used directly.
75
- // TODO(burdon): Audit.
76
- values: [
77
- 25,
78
- 50,
79
- 75,
80
- 100,
81
- 150,
82
- 200,
83
- 250,
84
- 300,
85
- 400,
86
- 500,
87
- 600,
88
- 700,
89
- 750,
90
- 800,
91
- 850,
92
- 900
93
- ]
94
- },
95
- // https://oklch.com/#0.5,0.2,260,100 (#0559d2)
96
- primary: {
97
- keyPoint: [
98
- 0.5,
99
- 0.2,
100
- 260
101
- ],
102
- lowerCp: 0.86,
103
- upperCp: 1,
104
- torsion: -30,
105
- // Values used directly.
106
- // TODO(burdon): Audit.
107
- values: [
108
- 100,
109
- 150,
110
- 200,
111
- 350,
112
- 400,
113
- 450,
114
- 500,
115
- 750,
116
- 800,
117
- 850
118
- ]
119
- }
120
- };
121
- var physicalSeries = {
122
- ...huePalettes,
123
- ...systemPalettes
124
- };
125
- var physicalColors = {
126
- namespace: "dx-",
127
- definitions: {
128
- // @ts-ignore
129
- series: physicalSeries,
130
- accompanyingSeries: {
131
- reflectiveRelation
132
- }
133
- },
134
- conditions: {
135
- srgb: [
136
- ":root, .dark"
137
- ],
138
- p3: [
139
- "@media (color-gamut: p3)",
140
- ":root, .dark"
141
- ],
142
- rec2020: [
143
- "@media (color-gamut: rec2020)",
144
- ":root, .dark"
145
- ]
146
- },
147
- series: Object.entries(physicalSeries).reduce((acc, [id]) => {
148
- acc[id] = gamuts.reduce((acc2, gamut) => {
149
- acc2[gamut] = {
150
- extends: id,
151
- physicalValueRelation: {
152
- extends: "reflectiveRelation"
153
- }
154
- };
155
- return acc2;
156
- }, {});
157
- return acc;
158
- }, {})
159
- };
56
+ // src/fragments/disabled.ts
57
+ var staticDisabled = "opacity-40 cursor-not-allowed shadow-none";
58
+ var dataDisabled = "data-[disabled]:opacity-40 data-[disabled]:cursor-not-allowed";
160
59
 
161
- // src/config/tokens/sememes-hue.ts
162
- var hueSememes = [
163
- ...Object.keys(huePalettes),
164
- "neutral",
165
- "primary"
166
- ].reduce((acc, palette) => {
167
- acc[`${palette}Cursor`] = {
168
- light: [
169
- palette,
170
- 400
171
- ],
172
- dark: [
173
- palette,
174
- 300
175
- ]
176
- };
177
- acc[`${palette}Text`] = {
178
- light: [
179
- palette,
180
- 550
181
- ],
182
- dark: [
183
- palette,
184
- 300
185
- ]
186
- };
187
- acc[`${palette}Fill`] = {
188
- light: [
189
- palette,
190
- 500
191
- ],
192
- dark: [
193
- palette,
194
- 500
195
- ]
196
- };
197
- acc[`${palette}Surface`] = {
198
- light: [
199
- palette,
200
- 200
201
- ],
202
- dark: [
203
- palette,
204
- 700
205
- ]
206
- };
207
- acc[`${palette}SurfaceText`] = {
208
- light: [
209
- palette,
210
- 700
211
- ],
212
- dark: [
213
- palette,
214
- 200
215
- ]
216
- };
217
- acc[`${palette}Screen`] = {
218
- light: [
219
- palette,
220
- 100
221
- ],
222
- dark: [
223
- palette,
224
- 800
225
- ]
226
- };
227
- return acc;
228
- }, {});
229
- var valenceAliasSememeStems = [
230
- "Text",
231
- "Surface",
232
- "SurfaceText",
233
- "Fill",
234
- "Cursor"
235
- ];
236
- var valenceMapping = {
237
- emerald: [
238
- "success"
239
- ],
240
- cyan: [
241
- "info"
242
- ],
243
- amber: [
244
- "warning"
245
- ],
246
- rose: [
247
- "error"
248
- ],
249
- primary: [
250
- "current"
251
- ],
252
- fuchsia: [
253
- "internal"
254
- ]
255
- };
256
- var valenceAliases = valenceAliasSememeStems.reduce((acc, stem) => {
257
- return Object.entries(valenceMapping).reduce((acc2, [hue, valences]) => {
258
- acc2[`${hue}${stem}`] = {
259
- root: valences.map((valence) => `${valence}${stem}`)
260
- };
261
- return acc2;
262
- }, acc);
263
- }, {});
60
+ // src/fragments/hover.ts
61
+ var subtleHover = "hover:bg-hover-overlay";
62
+ var ghostHover = "hover:bg-hover-surface";
63
+ var ghostFocusWithin = "focus-within:bg-hover-surface";
64
+ var hoverableControls = "[--controls-opacity:1] hover-hover:[--controls-opacity:0] hover-hover:hover:[--controls-opacity:1]";
65
+ var groupHoverControlItemWithTransition = "transition-opacity duration-200 opacity-0 group-hover:opacity-100";
66
+ var hoverableFocusedKeyboardControls = "focus-visible:[--controls-opacity:1]";
67
+ var hoverableFocusedWithinControls = "focus-within:[--controls-opacity:1]";
68
+ var hoverableOpenControlItem = "hover-hover:aria-[expanded=true]:[--controls-opacity:1]";
69
+ var hoverableControlItem = "opacity-(--controls-opacity)";
264
70
 
265
- // src/config/tokens/sememes-sheet.ts
266
- var sheetSememes = {
267
- // NOTE: background styles for the main content area must have transparency otherwise they will mask the selection.
268
- axisSurface: {
269
- light: [
270
- "neutral",
271
- 50
272
- ],
273
- dark: [
274
- "neutral",
275
- 800
276
- ]
277
- },
278
- axisText: {
279
- light: [
280
- "neutral",
281
- 800
282
- ],
283
- dark: [
284
- "neutral",
285
- 200
286
- ]
287
- },
288
- axisSelectedSurface: {
289
- light: [
290
- "neutral",
291
- 100
292
- ],
293
- dark: [
294
- "neutral",
295
- 900
296
- ]
297
- },
298
- axisSelectedText: {
299
- light: [
300
- "neutral",
301
- 100
302
- ],
303
- dark: [
304
- "neutral",
305
- 900
306
- ]
307
- },
308
- gridCell: {
309
- // TODO(thure): Why override only dark?
310
- light: [
311
- "neutral",
312
- "50/0"
313
- ],
314
- dark: [
315
- "neutral",
316
- 850
317
- ]
318
- },
319
- gridCellSelected: {
320
- // TODO(thure): Can this not just use `attention`?
321
- light: [
322
- "neutral",
323
- 50
324
- ],
325
- dark: [
326
- "neutral",
327
- 800
328
- ]
329
- },
330
- gridOverlay: {
331
- light: [
332
- "primary",
333
- "500/.5"
334
- ],
335
- dark: [
336
- "primary",
337
- "500/.5"
338
- ]
339
- },
340
- gridSelectionOverlay: {
341
- light: [
342
- "primary",
343
- "500/.2"
344
- ],
345
- dark: [
346
- "primary",
347
- "500/.2"
348
- ]
349
- },
350
- gridHighlight: {
351
- light: [
352
- "emerald",
353
- "500/.5"
354
- ],
355
- dark: [
356
- "emerald",
357
- "500/.5"
358
- ]
359
- },
360
- // TODO(burdon): Factor out def (in common with editor).
361
- gridCommented: {
362
- light: [
363
- "green",
364
- 200
365
- ],
366
- dark: [
367
- "green",
368
- 600
369
- ]
370
- },
371
- gridCommentedActive: {
372
- light: [
373
- "green",
374
- "200/.5"
375
- ],
376
- dark: [
377
- "green",
378
- "600/.5"
379
- ]
380
- }
381
- };
382
- var sheetAliases = {
383
- activeSurface: {
384
- root: [
385
- "gridLine"
386
- ]
387
- },
388
- accentFocusIndicator: {
389
- root: [
390
- "gridFocusIndicatorColor"
391
- ]
392
- },
393
- neutralFocusIndicator: {
394
- gridFocusStack: [
395
- "gridFocusIndicatorColor"
396
- ]
397
- }
398
- };
71
+ // src/fragments/text.ts
72
+ var descriptionMessage = "text-description border border-dashed border-separator rounded-sm p-4";
399
73
 
400
- // src/config/tokens/sememes-system.ts
401
- var getMapValue = (map, key, defaultValue) => {
402
- let value = map[key];
403
- if (!value) {
404
- value = defaultValue();
405
- map[key] = value;
406
- }
407
- return value;
408
- };
409
- var applyAlpha = (sememe, alpha) => {
410
- if (alpha >= 1) {
411
- return sememe;
412
- } else {
413
- return {
414
- light: [
415
- sememe.light[0],
416
- `${sememe.light[1]}/${alpha}`
417
- ],
418
- dark: [
419
- sememe.dark[0],
420
- `${sememe.dark[1]}/${alpha}`
421
- ]
422
- };
423
- }
424
- };
425
- var DARK_ELEVATION_MIN = 855;
426
- var DARK_ELEVATION_MAX = 731;
427
- var DARK_CONTRAST_MIN = 750;
428
- var DARK_CONTRAST_MAX = 665;
429
- var LIGHT_ELEVATION_MIN = 0;
430
- var LIGHT_ELEVATION_MAX = 0;
431
- var LIGHT_CONTRAST_MIN = 82;
432
- var LIGHT_CONTRAST_MAX = 24;
433
- var ELEVATION_SCALE = 2;
434
- var CONTRAST_SCALE = 3;
435
- var darkElevationCadence = (depth) => Math.round(DARK_ELEVATION_MAX + (DARK_ELEVATION_MIN - DARK_ELEVATION_MAX) * ((ELEVATION_SCALE - depth) / ELEVATION_SCALE));
436
- var darkContrastCadence = (depth) => Math.round(DARK_CONTRAST_MAX + (DARK_CONTRAST_MIN - DARK_CONTRAST_MAX) * ((ELEVATION_SCALE - depth) / ELEVATION_SCALE));
437
- var lightElevationCadence = (depth) => Math.round(LIGHT_ELEVATION_MIN + (LIGHT_ELEVATION_MAX - LIGHT_ELEVATION_MIN) * ((CONTRAST_SCALE - depth) / CONTRAST_SCALE));
438
- var lightContrastCadence = (depth) => Math.round(LIGHT_CONTRAST_MAX + (LIGHT_CONTRAST_MIN - LIGHT_CONTRAST_MAX) * (depth / CONTRAST_SCALE));
439
- var elevationCadence = (lightDepth, darkDepth = lightDepth, alpha = 1) => applyAlpha({
440
- light: [
441
- "neutral",
442
- lightElevationCadence(lightDepth)
443
- ],
444
- dark: [
445
- "neutral",
446
- darkElevationCadence(darkDepth)
447
- ]
448
- }, alpha);
449
- var contrastCadence = (lightDepth, darkDepth = lightDepth, alpha = 1) => applyAlpha({
450
- light: [
451
- "neutral",
452
- lightContrastCadence(lightDepth)
453
- ],
454
- dark: [
455
- "neutral",
456
- darkContrastCadence(darkDepth)
457
- ]
458
- }, alpha);
459
- var systemSememes = {
460
- //
461
- // Elevation cadence tokens
462
- //
463
- baseSurface: elevationCadence(0),
464
- groupSurface: elevationCadence(1),
465
- modalSurface: elevationCadence(2, 1.7),
466
- //
467
- // Contrast cadence tokens
468
- //
469
- textInputSurfaceBase: contrastCadence(0, 0),
470
- textInputSurfaceGroup: contrastCadence(0, 0.5),
471
- textInputSurfaceModal: contrastCadence(0, 1),
472
- inputSurfaceBase: contrastCadence(0.8, 0.33),
473
- inputSurfaceGroup: contrastCadence(0.8, 0.66),
474
- inputSurfaceModal: contrastCadence(0.8, 1),
475
- hoverSurfaceBase: contrastCadence(2, 1.5),
476
- hoverSurfaceGroup: contrastCadence(2, 2),
477
- hoverSurfaceModal: contrastCadence(2, 2.5),
478
- separatorBase: contrastCadence(3, 2),
479
- separatorGroup: contrastCadence(3, 2.5),
480
- separatorModal: contrastCadence(3, 3),
481
- subduedSeparator: contrastCadence(3, 1),
482
- scrollbarTrack: contrastCadence(0),
483
- scrollbarThumbSubdued: contrastCadence(1, 1),
484
- scrollbarThumb: contrastCadence(2.5, 2.5),
485
- scrollbarThumbHover: contrastCadence(3.5, 3.5),
486
- scrollbarThumbActive: contrastCadence(4.5, 4.5),
487
- unAccent: {
488
- light: [
489
- "neutral",
490
- 400
491
- ],
492
- dark: [
493
- "neutral",
494
- 400
495
- ]
496
- },
497
- unAccentHover: {
498
- light: [
499
- "neutral",
500
- 450
501
- ],
502
- dark: [
503
- "neutral",
504
- 450
505
- ]
506
- },
507
- hoverOverlay: {
508
- light: [
509
- "neutral",
510
- "450/.1"
511
- ],
512
- dark: [
513
- "neutral",
514
- "450/.1"
515
- ]
516
- },
517
- //
518
- // Special surfaces.
519
- //
520
- // Screen overlay for modal dialogs.
521
- scrimSurface: applyAlpha({
522
- light: [
523
- "neutral",
524
- LIGHT_CONTRAST_MAX
525
- ],
526
- dark: [
527
- "neutral",
528
- DARK_ELEVATION_MIN
529
- ]
530
- }, 0.65),
531
- // High contrast for focused interactive elements. (Technically this is part of the surface cadence, but the contrast cadence is on the opposite side of the elevation cadence as this point.)
532
- focusSurface: {
533
- light: [
534
- "neutral",
535
- 0
536
- ],
537
- dark: [
538
- "neutral",
539
- 1e3
540
- ]
541
- },
542
- deckSurface: {
543
- light: [
544
- "neutral",
545
- 50
546
- ],
547
- dark: [
548
- "neutral",
549
- 950
550
- ]
551
- },
552
- // For tooltips only; the highest elevation from the opposite theme
553
- inverseSurface: {
554
- light: [
555
- "neutral",
556
- DARK_ELEVATION_MIN
557
- ],
558
- dark: [
559
- "neutral",
560
- LIGHT_ELEVATION_MIN
561
- ]
562
- },
563
- //
564
- // Accent surfaces
565
- //
566
- accentSurfaceRelated: {
567
- light: [
568
- "primary",
569
- "300/.1"
570
- ],
571
- dark: [
572
- "primary",
573
- "400/.1"
574
- ]
575
- },
576
- accentSurfaceHover: {
577
- light: [
578
- "primary",
579
- 600
580
- ],
581
- dark: [
582
- "primary",
583
- 475
584
- ]
585
- },
586
- accentSurface: {
587
- light: [
588
- "primary",
589
- 500
590
- ],
591
- dark: [
592
- "primary",
593
- 500
594
- ]
595
- },
596
- //
597
- // Text (text-) and other foregrounds
598
- // TODO(thure): Establish contrast-order cadence for text.
599
- //
600
- baseText: {
601
- light: [
602
- "neutral",
603
- 1e3
604
- ],
605
- dark: [
606
- "neutral",
607
- 50
608
- ]
609
- },
610
- inverseSurfaceText: {
611
- light: [
612
- "neutral",
613
- 50
614
- ],
615
- dark: [
616
- "neutral",
617
- 1e3
618
- ]
619
- },
620
- description: {
621
- light: [
622
- "neutral",
623
- 550
624
- ],
625
- dark: [
626
- "neutral",
627
- 350
628
- ]
629
- },
630
- subdued: {
631
- light: [
632
- "neutral",
633
- 700
634
- ],
635
- dark: [
636
- "neutral",
637
- 300
638
- ]
639
- },
640
- placeholder: {
641
- light: [
642
- "neutral",
643
- 500
644
- ],
645
- dark: [
646
- "neutral",
647
- 500
648
- ]
649
- },
650
- accentText: {
651
- light: [
652
- "primary",
653
- 550
654
- ],
655
- dark: [
656
- "primary",
657
- 400
658
- ]
659
- },
660
- accentSurfaceText: {
661
- light: [
662
- "neutral",
663
- 0
664
- ],
665
- dark: [
666
- "neutral",
667
- 0
668
- ]
669
- },
670
- accentTextHover: {
671
- light: [
672
- "primary",
673
- 500
674
- ],
675
- dark: [
676
- "primary",
677
- 350
678
- ]
679
- },
680
- accentFocusIndicator: {
681
- light: [
682
- "primary",
683
- 300
684
- ],
685
- dark: [
686
- "primary",
687
- 450
688
- ]
689
- },
690
- neutralFocusIndicator: {
691
- light: [
692
- "neutral",
693
- 300
694
- ],
695
- dark: [
696
- "neutral",
697
- 550
698
- ]
699
- }
700
- };
701
- var aliasDefs = {
702
- // Selected items, current items, other surfaces needing special contrast against baseSurface.
703
- activeSurface: {
704
- root: "inputSurfaceBase"
705
- },
706
- // Main sidebar panel.
707
- sidebarSurface: {
708
- root: "groupSurface"
709
- },
710
- // Plank header.
711
- headerSurface: {
712
- root: "groupSurface"
713
- },
714
- // Toolbars, table/sheet headers, etc.
715
- toolbarSurface: {
716
- root: "groupSurface"
717
- },
718
- // Forms, cards, etc.
719
- cardSurface: {
720
- root: "groupSurface"
721
- },
722
- // Secondary aliases.
723
- textInputSurface: {
724
- root: "textInputSurfaceBase",
725
- group: "textInputSurfaceGroup",
726
- modal: "textInputSurfaceModal"
727
- },
728
- inputSurface: {
729
- root: "inputSurfaceBase",
730
- group: "inputSurfaceGroup",
731
- modal: "inputSurfaceModal"
732
- },
733
- hoverSurface: {
734
- root: "hoverSurfaceBase",
735
- group: "hoverSurfaceGroup",
736
- modal: "hoverSurfaceModal"
737
- },
738
- // TODO(thure): Rename uses of this token to `focusSurface` and remove this alias.
739
- attention: {
740
- root: "focusSurface"
741
- },
742
- // In “master-detail” patterns, the background of the item in the list which is enumerated in the adjacent view.
743
- // TODO(burdon): Review tokens.
744
- currentRelated: {
745
- root: "modalSurface"
746
- },
747
- // Borders and dividers.
748
- separator: {
749
- root: "separatorBase",
750
- group: "separatorGroup",
751
- modal: "separatorModal"
752
- }
753
- };
754
- var systemAliases = Object.entries(aliasDefs).reduce((aliases, [alias, values]) => {
755
- Object.entries(values).forEach(([key, sememe]) => {
756
- const record = getMapValue(aliases, sememe, () => ({}));
757
- const list = getMapValue(record, key, () => []);
758
- list.push(alias);
759
- });
760
- return aliases;
761
- }, {});
762
-
763
- // src/config/tokens/alias-colors.ts
764
- var groupAliases = [
765
- "groupSurface",
766
- ...systemAliases.groupSurface?.root ?? []
767
- ];
768
- var modalAliases = [
769
- "modalSurface",
770
- ...systemAliases.modalSurface?.root ?? []
74
+ // src/util/elevation.ts
75
+ var surfaceShadow = ({ elevation }) => [
76
+ elevation === "positioned" ? "shadow-sm" : elevation === "dialog" || elevation === "toast" ? "shadow-md" : "shadow-none"
771
77
  ];
772
- var aliasColors = {
773
- conditions: {
774
- root: [
775
- ":root, .dark"
776
- ],
777
- group: [
778
- [
779
- ".sidebar-surface, .dark .sidebar-surface",
780
- ...groupAliases.map((alias) => `.bg-${alias}, .dark .bg-${alias}`)
781
- ].join(", ")
782
- ],
783
- modal: [
784
- [
785
- ".modal-surface, .dark .modal-surface",
786
- ...modalAliases.map((alias) => `.bg-${alias}, .dark .bg-${alias}`)
787
- ].join(", ")
788
- ],
789
- gridFocusStack: [
790
- '[data-grid-focus-indicator-variant="stack"]'
791
- ]
792
- },
793
- aliases: {
794
- // TODO(thure): Aliases should be merged more elegantly, this causes overwrites.
795
- ...sheetAliases,
796
- ...systemAliases,
797
- ...valenceAliases
798
- },
799
- namespace: "dx-"
800
- };
801
-
802
- // src/config/tokens/lengths.ts
803
- var lengthsFacet = {
804
- physical: {
805
- namespace: "dx-",
806
- conditions: {
807
- root: [
808
- ":root"
809
- ]
810
- },
811
- series: {
812
- line: {
813
- root: {
814
- unit: "px",
815
- initial: 0,
816
- slope: 1
817
- }
818
- },
819
- // "gap"
820
- lacuna: {
821
- root: {
822
- unit: "rem",
823
- initial: 0,
824
- slope: 0.125
825
- }
826
- }
827
- }
828
- },
829
- semantic: {
830
- namespace: "dx-",
831
- conditions: {
832
- root: [
833
- ":root"
834
- ]
835
- },
836
- sememes: {
837
- noLine: {
838
- root: [
839
- "line",
840
- 0
841
- ]
842
- },
843
- hairLine: {
844
- root: [
845
- "line",
846
- 1
847
- ]
848
- },
849
- thickLine: {
850
- root: [
851
- "line",
852
- 2
853
- ]
854
- },
855
- trimXs: {
856
- root: [
857
- "lacuna",
858
- 3
859
- ]
860
- },
861
- trimSm: {
862
- root: [
863
- "lacuna",
864
- 4
865
- ]
866
- },
867
- trimMd: {
868
- root: [
869
- "lacuna",
870
- 6
871
- ]
872
- },
873
- trimLg: {
874
- root: [
875
- "lacuna",
876
- 12
877
- ]
878
- },
879
- inputFine: {
880
- root: [
881
- "lacuna",
882
- 3
883
- ]
884
- },
885
- inputCoarse: {
886
- root: [
887
- "lacuna",
888
- 4
889
- ]
890
- }
891
- }
892
- },
893
- alias: {
894
- namespace: "dx-",
895
- conditions: {
896
- fine: [
897
- ":root, .density-fine"
898
- ],
899
- coarse: [
900
- ".density-coarse"
901
- ],
902
- flush: [
903
- ".density-flush"
904
- ],
905
- gridFocusStack: [
906
- '[data-grid-focus-indicator-variant="stack"]'
907
- ]
908
- },
909
- aliases: {
910
- noLine: {
911
- fine: [
912
- "focusOffset"
913
- ]
914
- },
915
- hairLine: {
916
- fine: [
917
- "modalLine",
918
- "landmarkLine",
919
- "positionedLine",
920
- "gridGap",
921
- "gridFocusIndicatorWidth"
922
- ]
923
- },
924
- thickLine: {
925
- fine: [
926
- "focusLine"
927
- ],
928
- gridFocusStack: [
929
- "gridFocusIndicatorWidth"
930
- ]
931
- },
932
- inputFine: {
933
- fine: [
934
- "iconButtonPadding"
935
- ]
936
- },
937
- inputCoarse: {
938
- coarse: [
939
- "iconButtonPadding"
940
- ]
941
- },
942
- trimXs: {
943
- fine: [
944
- "cardSpacingChrome",
945
- "labelSpacingBlock",
946
- "inputSpacingBlock"
947
- ]
948
- },
949
- // TODO(burdon): Remove?
950
- trimSm: {
951
- fine: [
952
- "cardSpacingInline",
953
- "cardSpacingBlock",
954
- "cardSpacingGap"
955
- ]
956
- },
957
- trimMd: {
958
- coarse: [
959
- "cardSpacingInline",
960
- "cardSpacingBlock",
961
- "cardSpacingGap"
962
- ]
963
- }
964
- }
965
- }
966
- };
967
- var maxSizesFacet = {
968
- physical: {
969
- namespace: "dx-",
970
- conditions: {
971
- root: [
972
- ":root"
973
- ]
974
- },
975
- series: {
976
- size: {
977
- root: {
978
- unit: "rem",
979
- initial: 0,
980
- slope: 1
981
- }
982
- }
983
- }
984
- },
985
- semantic: {
986
- namespace: "dx-",
987
- conditions: {
988
- root: [
989
- ":root"
990
- ]
991
- },
992
- sememes: {
993
- "prose-max-width": {
994
- root: [
995
- "size",
996
- 50
997
- ]
998
- },
999
- "container-max-width": {
1000
- root: [
1001
- "size",
1002
- 50
1003
- ]
1004
- },
1005
- "card-default-width": {
1006
- root: [
1007
- "size",
1008
- cardDefaultInlineSize
1009
- ]
1010
- },
1011
- "card-min-width": {
1012
- root: [
1013
- "size",
1014
- cardMinInlineSize
1015
- ]
1016
- },
1017
- "card-max-width": {
1018
- root: [
1019
- "size",
1020
- cardMaxInlineSize
1021
- ]
1022
- },
1023
- "card-min-height": {
1024
- root: [
1025
- "size",
1026
- cardMinBlockSize
1027
- ]
1028
- },
1029
- "card-max-height": {
1030
- root: [
1031
- "size",
1032
- cardMaxBlockSize
1033
- ]
1034
- }
1035
- }
1036
- }
1037
- };
1038
-
1039
- // src/config/tokens/sememes-calls.ts
1040
- var callsSememes = {
1041
- callActive: {
1042
- light: [
1043
- "green",
1044
- "500"
1045
- ],
1046
- dark: [
1047
- "green",
1048
- "500"
1049
- ]
1050
- },
1051
- callAlert: {
1052
- light: [
1053
- "rose",
1054
- "500"
1055
- ],
1056
- dark: [
1057
- "rose",
1058
- "500"
1059
- ]
1060
- }
1061
- };
1062
-
1063
- // src/config/tokens/sememes-codemirror.ts
1064
- var codemirrorSememes = {
1065
- // NOTE: background styles for the main content area must have transparency otherwise they will mask the selection.
1066
- cmCodeblock: {
1067
- light: [
1068
- "neutral",
1069
- "500/.1"
1070
- ],
1071
- dark: [
1072
- "neutral",
1073
- "500/.1"
1074
- ]
1075
- },
1076
- cmActiveLine: {
1077
- light: [
1078
- "neutral",
1079
- "200/.5"
1080
- ],
1081
- dark: [
1082
- "neutral",
1083
- "800/.5"
1084
- ]
1085
- },
1086
- cmSeparator: {
1087
- light: [
1088
- "primary",
1089
- 500
1090
- ],
1091
- dark: [
1092
- "primary",
1093
- 500
1094
- ]
1095
- },
1096
- cmCursor: {
1097
- light: [
1098
- "neutral",
1099
- 900
1100
- ],
1101
- dark: [
1102
- "neutral",
1103
- 100
1104
- ]
1105
- },
1106
- cmSelection: {
1107
- light: [
1108
- "primary",
1109
- "400/.5"
1110
- ],
1111
- dark: [
1112
- "primary",
1113
- "600/.5"
1114
- ]
1115
- },
1116
- cmFocusedSelection: {
1117
- light: [
1118
- "primary",
1119
- 400
1120
- ],
1121
- dark: [
1122
- "primary",
1123
- 600
1124
- ]
1125
- },
1126
- cmHighlight: {
1127
- light: [
1128
- "neutral",
1129
- 950
1130
- ],
1131
- dark: [
1132
- "neutral",
1133
- 50
1134
- ]
1135
- },
1136
- cmHighlightSurface: {
1137
- light: [
1138
- "sky",
1139
- 200
1140
- ],
1141
- dark: [
1142
- "cyan",
1143
- 600
1144
- ]
1145
- },
1146
- // TODO(burdon): Factor out defs in common with sheet.
1147
- cmCommentText: {
1148
- light: [
1149
- "neutral",
1150
- 50
1151
- ],
1152
- dark: [
1153
- "neutral",
1154
- 950
1155
- ]
1156
- },
1157
- cmCommentSurface: {
1158
- light: [
1159
- "amber",
1160
- 700
1161
- ],
1162
- dark: [
1163
- "amber",
1164
- 200
1165
- ]
1166
- }
1167
- };
1168
-
1169
- // src/config/tokens/semantic-colors.ts
1170
- var semanticColors = {
1171
- conditions: {
1172
- light: [
1173
- ":root"
1174
- ],
1175
- dark: [
1176
- ".dark"
1177
- ]
1178
- },
1179
- sememes: {
1180
- // Define each set of sememes in its own file.
1181
- ...callsSememes,
1182
- ...codemirrorSememes,
1183
- ...hueSememes,
1184
- ...sheetSememes,
1185
- ...systemSememes
1186
- },
1187
- namespace: "dx-"
1188
- };
1189
-
1190
- // src/config/tokens/tokens.ts
1191
- var hues = Object.keys(huePalettes);
1192
- var tokenSet = {
1193
- colors: {
1194
- physical: physicalColors,
1195
- semantic: semanticColors,
1196
- alias: aliasColors
1197
- },
1198
- lengths: lengthsFacet,
1199
- maxSizes: maxSizesFacet
1200
- };
1201
- var adapterConfig = {
1202
- colors: {
1203
- facet: "colors",
1204
- disposition: "overwrite",
1205
- tokenization: "recursive"
1206
- },
1207
- borderWidth: {
1208
- facet: "lengths",
1209
- disposition: "extend",
1210
- tokenization: "omit-series"
1211
- },
1212
- ringWidth: {
1213
- facet: "lengths",
1214
- disposition: "extend",
1215
- tokenization: "omit-series"
1216
- },
1217
- ringOffsetWidth: {
1218
- facet: "lengths",
1219
- disposition: "extend",
1220
- tokenization: "omit-series"
1221
- },
1222
- outlineWidth: {
1223
- facet: "lengths",
1224
- disposition: "extend",
1225
- tokenization: "omit-series"
1226
- },
1227
- spacing: {
1228
- facet: "lengths",
1229
- disposition: "extend",
1230
- tokenization: "keep-series"
1231
- }
1232
- };
1233
- var userDefaultTokenSet = {
1234
- colors: {
1235
- physical: {
1236
- definitions: {
1237
- series: {
1238
- neutral: physicalColors.definitions.series.neutral,
1239
- primary: physicalColors.definitions.series.primary
1240
- },
1241
- accompanyingSeries: physicalColors.definitions.accompanyingSeries
1242
- },
1243
- conditions: physicalColors.conditions,
1244
- series: {
1245
- neutral: physicalColors.series.neutral,
1246
- primary: physicalColors.series.primary
1247
- },
1248
- namespace: physicalColors.namespace
1249
- },
1250
- semantic: {
1251
- conditions: semanticColors.conditions,
1252
- sememes: systemSememes,
1253
- namespace: semanticColors.namespace
1254
- },
1255
- alias: {
1256
- conditions: aliasColors.conditions,
1257
- aliases: systemAliases,
1258
- namespace: aliasColors.namespace
1259
- }
78
+ var surfaceZIndex = ({ level, elevation }) => {
79
+ switch (level) {
80
+ case "tooltip":
81
+ return elevation === "dialog" ? [
82
+ "z-[53]"
83
+ ] : elevation === "toast" ? [
84
+ "z-[43]"
85
+ ] : [
86
+ "z-50"
87
+ ];
88
+ case "menu":
89
+ return elevation === "dialog" ? [
90
+ "z-[52]"
91
+ ] : elevation === "toast" ? [
92
+ "z-[42]"
93
+ ] : [
94
+ "z-20"
95
+ ];
96
+ default:
97
+ return elevation === "dialog" ? [
98
+ "z-[51]"
99
+ ] : elevation === "toast" ? [
100
+ "z-[41]"
101
+ ] : [
102
+ "z-[1]"
103
+ ];
1260
104
  }
1261
105
  };
1262
- var tokensTailwindConfig = adapter(tokenSet, adapterConfig);
1263
-
1264
- // src/config/tailwind.ts
1265
- var { extend: extendTokens, ...overrideTokens } = tokensTailwindConfig;
1266
- var tailwindConfig = ({ env = "production", content = [], extensions = [] }) => ({
1267
- darkMode: "class",
1268
- theme: {
1269
- // Configure fonts in theme.css and package.json.
1270
- fontFamily: {
1271
- body: [
1272
- "Inter Variable",
1273
- ...defaultConfig.theme.fontFamily.sans
1274
- ],
1275
- mono: [
1276
- "JetBrains Mono Variable",
1277
- ...defaultConfig.theme.fontFamily.mono
1278
- ]
1279
- },
1280
- extend: merge({
1281
- // Generates is-card-default-width, is-card-min-width, etc.
1282
- spacing: {
1283
- "prose-max-width": "var(--dx-prose-max-width)",
1284
- "container-max-width": "var(--dx-container-max-width)",
1285
- "card-default-width": "var(--dx-card-default-width)",
1286
- "card-min-width": "var(--dx-card-min-width)",
1287
- "card-max-width": "var(--dx-card-max-width)",
1288
- "card-min-height": "var(--dx-card-min-height)",
1289
- "card-max-height": "var(--dx-card-max-height)"
1290
- },
1291
- backgroundImage: {
1292
- "gradient-radial": "radial-gradient(var(--tw-gradient-stops))",
1293
- "gradient-conic": "conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))"
1294
- },
1295
- borderRadius: {
1296
- none: "0",
1297
- sm: "0.25rem",
1298
- DEFAULT: "0.5rem",
1299
- md: "0.75rem",
1300
- lg: "1rem"
1301
- },
1302
- screens: {
1303
- "pointer-fine": {
1304
- raw: "(pointer: fine)"
1305
- },
1306
- "hover-hover": {
1307
- raw: "(hover: hover)"
1308
- },
1309
- "md": "768px",
1310
- "lg": "1024px"
1311
- },
1312
- fontSize: {
1313
- // Base size 16px
1314
- // Scale 1.125
1315
- "xs": [
1316
- "0.790rem",
1317
- {
1318
- lineHeight: "1rem"
1319
- }
1320
- ],
1321
- "sm": [
1322
- "0.889rem",
1323
- {
1324
- lineHeight: "1.25rem"
1325
- }
1326
- ],
1327
- "base": [
1328
- "1rem",
1329
- {
1330
- lineHeight: "1.5rem"
1331
- }
1332
- ],
1333
- "lg": [
1334
- "1.125rem",
1335
- {
1336
- lineHeight: "1.75rem"
1337
- }
1338
- ],
1339
- "xl": [
1340
- "1.266rem",
1341
- {
1342
- lineHeight: "1.75rem"
1343
- }
1344
- ],
1345
- "2xl": [
1346
- "1.424rem",
1347
- {
1348
- lineHeight: "2rem"
1349
- }
1350
- ],
1351
- "3xl": [
1352
- "1.602rem",
1353
- {
1354
- lineHeight: "2.25rem"
1355
- }
1356
- ],
1357
- "4xl": [
1358
- "1.802rem",
1359
- {
1360
- lineHeight: "2.5rem"
1361
- }
1362
- ],
1363
- "5xl": [
1364
- "2.027rem",
1365
- {
1366
- lineHeight: "2.5rem"
1367
- }
1368
- ],
1369
- "6xl": [
1370
- "2.281rem",
1371
- {
1372
- lineHeight: "2.5rem"
1373
- }
1374
- ],
1375
- "7xl": [
1376
- "2.566rem",
1377
- {
1378
- lineHeight: "2.75rem"
1379
- }
1380
- ],
1381
- "8xl": [
1382
- "2.887rem",
1383
- {
1384
- lineHeight: "3rem"
1385
- }
1386
- ],
1387
- "9xl": [
1388
- "3.247rem",
1389
- {
1390
- lineHeight: "3.25rem"
1391
- }
1392
- ]
1393
- },
1394
- boxShadow: {
1395
- "slider": "0 0 0 5px rgba(0, 0, 0, 0.3)"
1396
- },
1397
- transitionProperty: {
1398
- "max-height": "max-height"
1399
- },
1400
- transitionTimingFunction: {
1401
- "in-out-symmetric": "cubic-bezier(0.5, 0, 0.5, 1)"
1402
- },
1403
- keyframes: {
1404
- // Fade
1405
- "fade-in": {
1406
- from: {
1407
- opacity: 0
1408
- },
1409
- to: {
1410
- opacity: 1
1411
- }
1412
- },
1413
- "fade-out": {
1414
- from: {
1415
- opacity: 1
1416
- },
1417
- to: {
1418
- opacity: 0
1419
- }
1420
- },
1421
- // Popper chrome
1422
- "slide-down-and-fade": {
1423
- from: {
1424
- opacity: 1,
1425
- transform: "translateY(0)"
1426
- },
1427
- to: {
1428
- opacity: 0,
1429
- transform: "translateY(16px)"
1430
- }
1431
- },
1432
- "slide-left-and-fade": {
1433
- from: {
1434
- opacity: 0,
1435
- transform: "translateX(-16px)"
1436
- },
1437
- to: {
1438
- opacity: 1,
1439
- transform: "translateX(0)"
1440
- }
1441
- },
1442
- "slide-up-and-fade": {
1443
- from: {
1444
- opacity: 0,
1445
- transform: "translateY(16px)"
1446
- },
1447
- to: {
1448
- opacity: 1,
1449
- transform: "translateY(0)"
1450
- }
1451
- },
1452
- "slide-right-and-fade": {
1453
- from: {
1454
- opacity: 0,
1455
- transform: "translateX(16px)"
1456
- },
1457
- to: {
1458
- opacity: 1,
1459
- transform: "translateX(0)"
1460
- }
1461
- },
1462
- // Toast
1463
- "toast-hide": {
1464
- "0%": {
1465
- opacity: "1"
1466
- },
1467
- "100%": {
1468
- opacity: "0"
1469
- }
1470
- },
1471
- "toast-slide-in-right": {
1472
- "0%": {
1473
- transform: "translateX(calc(100% + 1rem))"
1474
- },
1475
- "100%": {
1476
- transform: "translateX(0)"
1477
- }
1478
- },
1479
- "toast-slide-in-bottom": {
1480
- "0%": {
1481
- transform: "translateY(calc(100% + 1rem))"
1482
- },
1483
- "100%": {
1484
- transform: "translateY(0)"
1485
- }
1486
- },
1487
- "toast-swipe-out": {
1488
- "0%": {
1489
- transform: "translateX(var(--radix-toast-swipe-end-x))"
1490
- },
1491
- "100%": {
1492
- transform: "translateX(calc(100% + 1rem))"
1493
- }
1494
- },
1495
- // Accordion
1496
- "slide-down": {
1497
- from: {
1498
- height: "0px"
1499
- },
1500
- to: {
1501
- height: "var(--radix-accordion-content-height)"
1502
- }
1503
- },
1504
- "slide-up": {
1505
- from: {
1506
- height: "var(--radix-accordion-content-height)"
1507
- },
1508
- to: {
1509
- height: "0px"
1510
- }
1511
- },
1512
- // Shimmer
1513
- "shimmer-loop": {
1514
- "100%": {
1515
- transform: "translateX(100%)"
1516
- }
1517
- },
1518
- // HALO
1519
- "halo-pulse": {
1520
- "0%": {
1521
- opacity: 0.3
1522
- },
1523
- "5%": {
1524
- opacity: 1
1525
- },
1526
- "100%": {
1527
- opacity: 0.3
1528
- }
1529
- },
1530
- // Progress
1531
- "progress-indeterminate": {
1532
- "0%": {
1533
- left: 0,
1534
- width: "0%"
1535
- },
1536
- "25%": {
1537
- left: "25%",
1538
- width: "50%"
1539
- },
1540
- "75%": {
1541
- left: "50%",
1542
- width: "100%"
1543
- },
1544
- "100%": {
1545
- left: "100%",
1546
- width: "0%"
1547
- }
1548
- },
1549
- // Border trail effect
1550
- "trail": {
1551
- to: {
1552
- "offset-distance": "100%"
1553
- }
1554
- },
1555
- "trail-offset": {
1556
- "0%": {
1557
- "offset-distance": "50%"
1558
- },
1559
- "100%": {
1560
- "offset-distance": "150%"
1561
- }
1562
- }
1563
- },
1564
- animation: {
1565
- // Fade
1566
- "fade-in": "fade-in 200ms ease-out",
1567
- "fade-out": "fade-out 400ms ease-out",
1568
- // Popper chrome
1569
- "slide-down-and-fade": "slide-down-and-fade 400ms cubic-bezier(0.16, 1, 0.3, 1)",
1570
- "slide-left-and-fade": "slide-left-and-fade 400ms cubic-bezier(0.16, 1, 0.3, 1)",
1571
- "slide-up-and-fade": "slide-up-and-fade 400ms cubic-bezier(0.16, 1, 0.3, 1)",
1572
- "slide-right-and-fade": "slide-right-and-fade 400ms cubic-bezier(0.16, 1, 0.3, 1)",
1573
- // Toast
1574
- "toast-hide": "toast-hide 100ms ease-in forwards",
1575
- "toast-slide-in-right": "toast-slide-in-right 150ms cubic-bezier(0.16, 1, 0.3, 1)",
1576
- "toast-slide-in-bottom": "toast-slide-in-bottom 150ms cubic-bezier(0.16, 1, 0.3, 1)",
1577
- "toast-swipe-out": "toast-swipe-out 100ms ease-out forwards",
1578
- // Accordion
1579
- "slide-down": "slide-down 300ms cubic-bezier(0.87, 0, 0.13, 1)",
1580
- "slide-up": "slide-up 300ms cubic-bezier(0.87, 0, 0.13, 1)",
1581
- // Border trail effect
1582
- "trail": "trail 6s linear infinite",
1583
- "trail-offset": "trail-offset 6s linear infinite",
1584
- // Progress effects
1585
- "spin": "spin 1.5s linear infinite",
1586
- "spin-slow": "spin 3s linear infinite",
1587
- "shimmer": "shimmer-loop 2s infinite",
1588
- "halo-pulse": "halo-pulse 2s ease-out infinite",
1589
- "progress-indeterminate": "progress-indeterminate 2s ease-out infinite",
1590
- "progress-linear": "progress-linear 2s ease-out infinite"
1591
- }
1592
- }, extendTokens, ...extensions),
1593
- ...overrideTokens,
1594
- colors: {
1595
- ...overrideTokens.colors,
1596
- inherit: "inherit",
1597
- current: "currentColor",
1598
- transparent: "transparent",
1599
- black: "black",
1600
- white: "white"
1601
- }
1602
- },
1603
- plugins: [
1604
- tailwindcssContainerQueries,
1605
- tailwindcssForms,
1606
- tailwindcssLogical,
1607
- tailwindcssRadix(),
1608
- // https://adoxography.github.io/tailwind-scrollbar/utilities
1609
- tailwindScrollbar({
1610
- nocompatible: true,
1611
- preferredStrategy: "pseudoelements"
1612
- })
1613
- ],
1614
- ...env === "development" && {
1615
- mode: "jit"
1616
- },
1617
- content,
1618
- future: {
1619
- hoverOnlyWhenSupported: true
1620
- }
1621
- });
1622
106
 
1623
107
  // src/util/hash-styles.ts
1624
- var neutralColor = {
108
+ var neutral = {
1625
109
  hue: "neutral",
1626
- text: "text-neutralFill",
1627
- icon: "text-neutralSurfaceText",
1628
- bg: "bg-neutralFill",
1629
- surface: "bg-neutralSurface",
1630
- border: "border-neutralFill"
110
+ fill: "bg-neutral-fill",
111
+ surface: "bg-neutral-surface",
112
+ surfaceText: "text-neutral-surface-text",
113
+ text: "text-neutral-text",
114
+ border: "border-neutral-border"
1631
115
  };
1632
116
  var styles = [
117
+ {
118
+ hue: "red",
119
+ fill: "bg-red-fill",
120
+ surface: "bg-red-surface",
121
+ surfaceText: "text-red-surface-text",
122
+ text: "text-red-text",
123
+ border: "border-red-border"
124
+ },
1633
125
  {
1634
126
  hue: "orange",
1635
- text: "text-orangeFill",
1636
- icon: "text-orangeSurfaceText",
1637
- bg: "bg-orangeFill",
1638
- surface: "bg-orangeSurface",
1639
- border: "border-orangeFill"
127
+ fill: "bg-orange-fill",
128
+ surface: "bg-orange-surface",
129
+ surfaceText: "text-orange-surface-text",
130
+ text: "text-orange-text",
131
+ border: "border-orange-border"
1640
132
  },
1641
133
  {
1642
134
  hue: "amber",
1643
- text: "text-amberFill",
1644
- icon: "text-amberSurfaceText",
1645
- bg: "bg-amberFill",
1646
- surface: "bg-amberSurface",
1647
- border: "border-amberFill"
135
+ fill: "bg-amber-fill",
136
+ surface: "bg-amber-surface",
137
+ surfaceText: "text-amber-surface-text",
138
+ text: "text-amber-text",
139
+ border: "border-amber-border"
1648
140
  },
1649
141
  {
1650
142
  hue: "yellow",
1651
- text: "text-yellowFill",
1652
- icon: "text-yellowSurfaceText",
1653
- bg: "bg-yellowFill",
1654
- surface: "bg-yellowSurface",
1655
- border: "border-yellowFill"
143
+ fill: "bg-yellow-fill",
144
+ surface: "bg-yellow-surface",
145
+ surfaceText: "text-yellow-surface-text",
146
+ text: "text-yellow-text",
147
+ border: "border-yellow-border"
1656
148
  },
1657
149
  {
1658
150
  hue: "lime",
1659
- text: "text-limeFill",
1660
- icon: "text-limeSurfaceText",
1661
- bg: "bg-limeFill",
1662
- surface: "bg-limeSurface",
1663
- border: "border-limeFill"
151
+ fill: "bg-lime-fill",
152
+ surface: "bg-lime-surface",
153
+ surfaceText: "text-lime-surface-text",
154
+ text: "text-lime-text",
155
+ border: "border-lime-border"
1664
156
  },
1665
157
  {
1666
158
  hue: "green",
1667
- text: "text-greenFill",
1668
- icon: "text-greenSurfaceText",
1669
- bg: "bg-greenFill",
1670
- surface: "bg-greenSurface",
1671
- border: "border-greenFill"
159
+ fill: "bg-green-fill",
160
+ surface: "bg-green-surface",
161
+ surfaceText: "text-green-surface-text",
162
+ text: "text-green-text",
163
+ border: "border-green-border"
1672
164
  },
1673
165
  {
1674
166
  hue: "emerald",
1675
- text: "text-emeraldFill",
1676
- icon: "text-emeraldSurfaceText",
1677
- bg: "bg-emeraldFill",
1678
- surface: "bg-emeraldSurface",
1679
- border: "border-emeraldFill"
167
+ fill: "bg-emerald-fill",
168
+ surface: "bg-emerald-surface",
169
+ surfaceText: "text-emerald-surface-text",
170
+ text: "text-emerald-text",
171
+ border: "border-emerald-border"
1680
172
  },
1681
173
  {
1682
174
  hue: "teal",
1683
- text: "text-tealFill",
1684
- icon: "text-tealSurfaceText",
1685
- bg: "bg-tealFill",
1686
- surface: "bg-tealSurface",
1687
- border: "border-tealFill"
175
+ fill: "bg-teal-fill",
176
+ surface: "bg-teal-surface",
177
+ surfaceText: "text-teal-surface-text",
178
+ text: "text-teal-text",
179
+ border: "border-teal-border"
1688
180
  },
1689
181
  {
1690
182
  hue: "cyan",
1691
- text: "text-cyanFill",
1692
- icon: "text-cyanSurfaceText",
1693
- bg: "bg-cyanFill",
1694
- surface: "bg-cyanSurface",
1695
- border: "border-cyanFill"
183
+ fill: "bg-cyan-fill",
184
+ surface: "bg-cyan-surface",
185
+ surfaceText: "text-cyan-surface-text",
186
+ text: "text-cyan-text",
187
+ border: "border-cyan-border"
1696
188
  },
1697
189
  {
1698
190
  hue: "sky",
1699
- text: "text-skyFill",
1700
- icon: "text-skySurfaceText",
1701
- bg: "bg-skyFill",
1702
- surface: "bg-skySurface",
1703
- border: "border-skyFill"
191
+ fill: "bg-sky-fill",
192
+ surface: "bg-sky-surface",
193
+ surfaceText: "text-sky-surface-text",
194
+ text: "text-sky-text",
195
+ border: "border-sky-border"
196
+ },
197
+ {
198
+ hue: "blue",
199
+ fill: "bg-blue-fill",
200
+ surface: "bg-blue-surface",
201
+ surfaceText: "text-blue-surface-text",
202
+ text: "text-blue-text",
203
+ border: "border-blue-border"
1704
204
  },
1705
205
  {
1706
206
  hue: "indigo",
1707
- text: "text-indigoFill",
1708
- icon: "text-indigoSurfaceText",
1709
- bg: "bg-indigoFill",
1710
- surface: "bg-indigoSurface",
1711
- border: "border-indigoFill"
207
+ fill: "bg-indigo-fill",
208
+ surface: "bg-indigo-surface",
209
+ surfaceText: "text-indigo-surface-text",
210
+ text: "text-indigo-text",
211
+ border: "border-indigo-border"
1712
212
  },
1713
213
  {
1714
214
  hue: "violet",
1715
- text: "text-violetFill",
1716
- icon: "text-violetSurfaceText",
1717
- bg: "bg-violetFill",
1718
- surface: "bg-violetSurface",
1719
- border: "border-violetFill"
215
+ fill: "bg-violet-fill",
216
+ surface: "bg-violet-surface",
217
+ surfaceText: "text-violet-surface-text",
218
+ text: "text-violet-text",
219
+ border: "border-violet-border"
1720
220
  },
1721
221
  {
1722
222
  hue: "purple",
1723
- text: "text-purpleFill",
1724
- icon: "text-purpleSurfaceText",
1725
- bg: "bg-purpleFill",
1726
- surface: "bg-purpleSurface",
1727
- border: "border-purpleFill"
223
+ fill: "bg-purple-fill",
224
+ surface: "bg-purple-surface",
225
+ surfaceText: "text-purple-surface-text",
226
+ text: "text-purple-text",
227
+ border: "border-purple-border"
1728
228
  },
1729
229
  {
1730
230
  hue: "fuchsia",
1731
- text: "text-fuchsiaFill",
1732
- icon: "text-fuchsiaSurfaceText",
1733
- bg: "bg-fuchsiaFill",
1734
- surface: "bg-fuchsiaSurface",
1735
- border: "border-fuchsiaFill"
231
+ fill: "bg-fuchsia-fill",
232
+ surface: "bg-fuchsia-surface",
233
+ surfaceText: "text-fuchsia-surface-text",
234
+ text: "text-fuchsia-text",
235
+ border: "border-fuchsia-border"
1736
236
  },
1737
237
  {
1738
- hue: "rose",
1739
- text: "text-roseFill",
1740
- icon: "text-roseSurfaceText",
1741
- bg: "bg-roseFill",
1742
- surface: "bg-roseSurface",
1743
- border: "border-roseFill"
238
+ hue: "pink",
239
+ fill: "bg-pink-fill",
240
+ surface: "bg-pink-surface",
241
+ surfaceText: "text-pink-surface-text",
242
+ text: "text-pink-text",
243
+ border: "border-pink-border"
1744
244
  },
1745
245
  {
1746
- hue: "pink",
1747
- text: "text-pinkFill",
1748
- icon: "text-pinkSurfaceText",
1749
- bg: "bg-pinkFill",
1750
- surface: "bg-pinkSurface",
1751
- border: "border-pinkFill"
246
+ hue: "rose",
247
+ fill: "bg-rose-fill",
248
+ surface: "bg-rose-surface",
249
+ surfaceText: "text-rose-surface-text",
250
+ text: "text-rose-text",
251
+ border: "border-rose-border"
1752
252
  }
1753
253
  ];
254
+ var palette = {
255
+ neutral,
256
+ hues: styles
257
+ };
1754
258
  var getStyles = (hue) => {
1755
- return styles.find((color) => color.hue === hue) || neutralColor;
259
+ return styles.find((color) => color.hue === hue) || neutral;
260
+ };
261
+ var getHashStyles = (id) => {
262
+ return getStyles(getHashHue(id));
1756
263
  };
1757
264
  var getHashHue = (id) => {
1758
265
  return id ? styles[getHash(id) % styles.length].hue : "neutral";
1759
266
  };
1760
- var getHashStyles = (id) => {
1761
- const hue = getHashHue(id);
1762
- return getStyles(hue);
1763
- };
1764
267
  var getHash = (id) => id.split("").reduce((acc, char) => acc + char.charCodeAt(0), 0);
1765
268
 
1766
269
  // src/util/mx.ts
1767
- import { extendTailwindMerge, validators as validators2 } from "tailwind-merge";
1768
-
1769
- // src/util/withLogical.ts
1770
- import { mergeConfigs, validators } from "tailwind-merge";
1771
- var getLength = () => [
1772
- validators.isLength,
1773
- validators.isArbitraryLength
1774
- ];
1775
- var getLengthWithAuto = () => [
1776
- "auto",
1777
- validators.isLength,
1778
- validators.isArbitraryLength
1779
- ];
1780
- var getLengthWithEmpty = () => [
1781
- "",
1782
- validators.isLength,
1783
- validators.isArbitraryLength
1784
- ];
1785
- var getAny = () => [
1786
- validators.isAny
1787
- ];
1788
- var getRounded = () => [
1789
- "none",
1790
- "",
1791
- validators.isTshirtSize,
1792
- "full",
1793
- validators.isArbitraryLength
1794
- ];
1795
- var classGroupsConfig = {
1796
- float: [
1797
- {
1798
- float: [
1799
- "start",
1800
- "end"
1801
- ]
1802
- }
1803
- ],
1804
- clear: [
1805
- {
1806
- clear: [
1807
- "start",
1808
- "end"
1809
- ]
1810
- }
1811
- ],
1812
- resize: [
1813
- {
1814
- resize: [
1815
- "block ",
1816
- "inline"
1817
- ]
1818
- }
1819
- ],
1820
- "text-alignment": [
1821
- {
1822
- text: [
1823
- "start",
1824
- "end"
1825
- ]
1826
- }
1827
- ],
1828
- "logical.overscroll-b": [
1829
- {
1830
- "overscroll-b": [
1831
- "auto ",
1832
- "contain",
1833
- "auto"
1834
- ]
1835
- }
1836
- ],
1837
- "logical.overscroll-i": [
1838
- {
1839
- "overscroll-b": [
1840
- "auto ",
1841
- "contain",
1842
- "auto"
1843
- ]
1844
- }
1845
- ],
1846
- "logical.bs": [
1847
- {
1848
- bs: getLength()
1849
- }
1850
- ],
1851
- "logical.min-bs": [
1852
- {
1853
- "min-bs": getAny()
1854
- }
1855
- ],
1856
- "logical.max-bs": [
1857
- {
1858
- "max-bs": getAny()
1859
- }
1860
- ],
1861
- "logical.is": [
1862
- {
1863
- is: getLength()
1864
- }
1865
- ],
1866
- "logical.min-is": [
1867
- {
1868
- "min-is": getAny()
1869
- }
1870
- ],
1871
- "logical.max-is": [
1872
- {
1873
- "max-is": getAny()
1874
- }
1875
- ],
1876
- "logical.mlb": [
1877
- {
1878
- mlb: getAny()
1879
- }
1880
- ],
1881
- "logical.mli": [
1882
- {
1883
- mli: getAny()
1884
- }
1885
- ],
1886
- "logical.mbs": [
1887
- {
1888
- mbs: getAny()
1889
- }
1890
- ],
1891
- "logical.mbe": [
1892
- {
1893
- mbe: getAny()
1894
- }
1895
- ],
1896
- "logical.mis": [
1897
- {
1898
- mis: getAny()
1899
- }
1900
- ],
1901
- "logical.mie": [
1902
- {
1903
- mie: getAny()
1904
- }
1905
- ],
1906
- "logical.plb": [
1907
- {
1908
- plb: getAny()
1909
- }
1910
- ],
1911
- "logical.pli": [
1912
- {
1913
- pli: getAny()
1914
- }
1915
- ],
1916
- "logical.pbs": [
1917
- {
1918
- pbs: getAny()
1919
- }
1920
- ],
1921
- "logical.pbe": [
1922
- {
1923
- pbe: getAny()
1924
- }
1925
- ],
1926
- "logical.pis": [
1927
- {
1928
- pis: getAny()
1929
- }
1930
- ],
1931
- "logical.pie": [
1932
- {
1933
- pie: getAny()
1934
- }
1935
- ],
1936
- "logical.space-b": [
1937
- {
1938
- "space-b": getLength()
1939
- }
1940
- ],
1941
- "logical.space-i": [
1942
- {
1943
- "space-i": getLength()
1944
- }
1945
- ],
1946
- "logical.inset-block": [
1947
- {
1948
- "inset-block": getLengthWithAuto()
1949
- }
1950
- ],
1951
- "logical.inset-inline": [
1952
- {
1953
- "inset-inline": getLengthWithAuto()
1954
- }
1955
- ],
1956
- "logical.block-start": [
1957
- {
1958
- "block-start": getLengthWithAuto()
1959
- }
1960
- ],
1961
- "logical.block-end": [
1962
- {
1963
- "block-end": getLengthWithAuto()
1964
- }
1965
- ],
1966
- "logical.inline-start": [
1967
- {
1968
- "inline-start": getLengthWithAuto()
1969
- }
1970
- ],
1971
- "logical.inline-end": [
1972
- {
1973
- "inline-end": getLengthWithAuto()
1974
- }
1975
- ],
1976
- "logical.border-li": [
1977
- {
1978
- "border-li": getLengthWithEmpty()
1979
- }
1980
- ],
1981
- "logical.border-lb": [
1982
- {
1983
- "border-lb": getLengthWithEmpty()
1984
- }
1985
- ],
1986
- "logical.border-bs": [
1987
- {
1988
- "border-bs": getLengthWithEmpty()
1989
- }
1990
- ],
1991
- "logical.border-be": [
1992
- {
1993
- "border-be": getLengthWithEmpty()
1994
- }
1995
- ],
1996
- "logical.border-is": [
1997
- {
1998
- "border-is": getLengthWithEmpty()
1999
- }
2000
- ],
2001
- "logical.border-ie": [
2002
- {
2003
- "border-ie": getLengthWithEmpty()
2004
- }
2005
- ],
2006
- "logical.border-color-bs": [
2007
- {
2008
- "border-bs": getAny()
2009
- }
2010
- ],
2011
- "logical.border-color-be": [
2012
- {
2013
- "border-be": getAny()
2014
- }
2015
- ],
2016
- "logical.border-color-is": [
2017
- {
2018
- "border-is": getAny()
2019
- }
2020
- ],
2021
- "logical.border-color-ie": [
2022
- {
2023
- "border-ie": getAny()
2024
- }
2025
- ],
2026
- "logical.rounded-bs": [
2027
- {
2028
- "rounded-bs": getRounded()
2029
- }
2030
- ],
2031
- "logical.rounded-be": [
2032
- {
2033
- "rounded-be": getRounded()
2034
- }
2035
- ],
2036
- "logical.rounded-is": [
2037
- {
2038
- "rounded-is": getRounded()
2039
- }
2040
- ],
2041
- "logical.rounded-ie": [
2042
- {
2043
- "rounded-ie": getRounded()
2044
- }
2045
- ],
2046
- "logical.rounded-ss": [
2047
- {
2048
- "rounded-ss": getRounded()
2049
- }
2050
- ],
2051
- "logical.rounded-se": [
2052
- {
2053
- "rounded-se": getRounded()
2054
- }
2055
- ],
2056
- "logical.rounded-es": [
2057
- {
2058
- "rounded-es": getRounded()
2059
- }
2060
- ],
2061
- "logical.rounded-ee": [
2062
- {
2063
- "rounded-ee": getRounded()
2064
- }
2065
- ],
2066
- "logical.divide-b": [
2067
- {
2068
- "divide-b": getLengthWithEmpty()
2069
- }
2070
- ],
2071
- "logical.divide-i": [
2072
- {
2073
- "divide-i": getLengthWithEmpty()
2074
- }
2075
- ]
2076
- };
2077
- var withLogical = (prevConfig) => {
2078
- return mergeConfigs(prevConfig, {
2079
- extend: {
2080
- classGroups: classGroupsConfig,
2081
- conflictingClassGroups: {
2082
- "inset-block": [
2083
- "logical.block-start",
2084
- "logical.block-end"
2085
- ],
2086
- "inset-inline": [
2087
- "logical.inline-start",
2088
- "logical.inline-end"
2089
- ],
2090
- p: [
2091
- "logical.plb",
2092
- "logical.pli",
2093
- "logical.pbs",
2094
- "logical.pbe",
2095
- "logical.pis",
2096
- "logical.pie"
2097
- ],
2098
- pli: [
2099
- "logical.pis",
2100
- "logical.pie"
2101
- ],
2102
- plb: [
2103
- "logical.pbs",
2104
- "logical.pbe"
2105
- ],
2106
- m: [
2107
- "logical.mlb",
2108
- "logical.mli",
2109
- "logical.mbs",
2110
- "logical.mbe",
2111
- "logical.mis",
2112
- "logical.mie"
2113
- ],
2114
- mli: [
2115
- "logical.mis",
2116
- "logical.mie"
2117
- ],
2118
- mlb: [
2119
- "logical.mbs",
2120
- "logical.mbe"
2121
- ],
2122
- overscroll: [
2123
- "overscroll-i",
2124
- "overscroll-b"
2125
- ],
2126
- rounded: [
2127
- "logical.rounded-bs",
2128
- "logical.rounded-be",
2129
- "logical.rounded-is",
2130
- "logical.rounded-ie",
2131
- "logical.rounded-ss",
2132
- "logical.rounded-se",
2133
- "logical.rounded-es",
2134
- "logical.rounded-ee"
2135
- ],
2136
- "logical.rounded-bs": [
2137
- "logical.rounded-ss",
2138
- "logical.rounded-se"
2139
- ],
2140
- "logical.rounded-be": [
2141
- "logical.rounded-es",
2142
- "logical.rounded-ee"
2143
- ],
2144
- "logical.rounded-is": [
2145
- "logical.rounded-ss",
2146
- "logical.rounded-es"
2147
- ],
2148
- "logical.rounded-ie": [
2149
- "logical.rounded-ee",
2150
- "logical.rounded-se"
2151
- ],
2152
- "logical.border-li": [
2153
- "logical.border-is",
2154
- "logical.border-ie"
2155
- ],
2156
- "logical.border-lb": [
2157
- "logical.border-bs",
2158
- "logical.border-be"
2159
- ],
2160
- "border-color": [
2161
- "logical.border-color-bs",
2162
- "logical.border-color-be",
2163
- "logical.border-color-is",
2164
- "logical.border-color-ie"
2165
- ],
2166
- border: [
2167
- "logical.border-bs",
2168
- "logical.border-be",
2169
- "logical.border-is",
2170
- "logical.border-ie"
2171
- ]
2172
- }
2173
- }
2174
- });
2175
- };
2176
-
2177
- // src/util/mx.ts
270
+ import { Children, createElement, forwardRef, isValidElement } from "react";
271
+ import { extendTailwindMerge, validators } from "tailwind-merge";
272
+ import { log } from "@dxos/log";
273
+ var __dxlog_file = "/__w/dxos/dxos/packages/ui/ui-theme/src/util/mx.ts";
2178
274
  var mx = extendTailwindMerge({
2179
275
  extend: {
2180
276
  classGroups: {
@@ -2194,11 +290,11 @@ var mx = extendTailwindMerge({
2194
290
  "font-extrabold",
2195
291
  "font-black",
2196
292
  // Arbitrary numbers
2197
- validators2.isArbitraryNumber
293
+ validators.isArbitraryNumber
2198
294
  ],
2199
295
  density: [
2200
- "density-fine",
2201
- "density-coarse"
296
+ "dx-density-fine",
297
+ "dx-density-coarse"
2202
298
  ],
2203
299
  "dx-focus-ring": [
2204
300
  "dx-focus-ring",
@@ -2218,522 +314,279 @@ var mx = extendTailwindMerge({
2218
314
  ]
2219
315
  }
2220
316
  }
2221
- }, withLogical);
2222
-
2223
- // src/styles/components/anchored-overflow.ts
2224
- var anchoredOverflowRoot = (_props, ...etc) => mx("overflow-anchored overflow-auto", ...etc);
2225
- var anchoredOverflowAnchor = (_props, ...etc) => mx("overflow-anchor is-px bs-px", ...etc);
2226
- var anchoredOverflowTheme = {
2227
- root: anchoredOverflowRoot,
2228
- anchor: anchoredOverflowAnchor
2229
- };
2230
-
2231
- // src/styles/fragments/density.ts
2232
- var coarseBlockSize = "min-bs-[2.5rem]";
2233
- var coarseTextPadding = "pli-3";
2234
- var coarseButtonPadding = "pli-4";
2235
- var coarseDimensions = `${coarseBlockSize} ${coarseTextPadding}`;
2236
- var coarseButtonDimensions = `${coarseBlockSize} ${coarseButtonPadding}`;
2237
- var fineBlockSize = "min-bs-[2.5rem] pointer-fine:min-bs-[2rem]";
2238
- var fineTextPadding = "pli-2";
2239
- var fineButtonPadding = "pli-2.5";
2240
- var fineDimensions = `${fineBlockSize} ${fineTextPadding}`;
2241
- var fineButtonDimensions = `${fineBlockSize} ${fineButtonPadding}`;
2242
- var densityBlockSize = (density = "coarse") => density === "fine" ? fineBlockSize : coarseBlockSize;
2243
-
2244
- // src/styles/fragments/disabled.ts
2245
- var staticDisabled = "opacity-40 cursor-not-allowed shadow-none";
2246
- var dataDisabled = "data-[disabled]:opacity-40 data-[disabled]:cursor-not-allowed";
2247
-
2248
- // src/styles/fragments/dimension.ts
2249
- var textBlockWidth = "is-full mli-auto max-is-[--text-content]";
317
+ });
318
+ var composableProps = ({ className, classNames, role, style, ...props }, { classNames: defaultClassNames, ...defaults } = {}) => ({
319
+ // Default props.
320
+ ...defaults,
321
+ // Spread supplied props.
322
+ ...props,
323
+ // Prefer explicit role, then defaults role, then 'none'.
324
+ role: role ?? defaults.role ?? "none",
325
+ // Merge styles.
326
+ style: {
327
+ ...defaults.style,
328
+ ...style
329
+ },
330
+ // Compose classnames.
331
+ className: mx(defaultClassNames, className, classNames)
332
+ });
333
+ var COMPOSABLE = /* @__PURE__ */ Symbol.for("dxos.composable");
334
+ function slottable(render) {
335
+ const wrapped = (props, forwardedRef) => {
336
+ let warn = false;
337
+ if (props.asChild) {
338
+ try {
339
+ const child = Children.only(props.children);
340
+ if (isValidElement(child) && typeof child.type !== "string" && !child.type[COMPOSABLE]) {
341
+ warn = true;
342
+ log.warn("slot child is not composable; create it with composable() or slottable()", {
343
+ child: child.type.displayName ?? child.type.name
344
+ }, {
345
+ F: __dxlog_file,
346
+ L: 125,
347
+ S: this,
348
+ C: (f, a) => f(...a)
349
+ });
350
+ }
351
+ } catch {
352
+ }
353
+ }
354
+ const result = render(props, forwardedRef);
355
+ if (warn) {
356
+ return createElement("div", {
357
+ role: "none",
358
+ className: "dx-slot-warning"
359
+ }, result);
360
+ }
361
+ return result;
362
+ };
363
+ const component = forwardRef(wrapped);
364
+ component[COMPOSABLE] = true;
365
+ return component;
366
+ }
367
+ function composable(render) {
368
+ const component = forwardRef(render);
369
+ component[COMPOSABLE] = true;
370
+ return component;
371
+ }
2250
372
 
2251
- // src/styles/fragments/elevation.ts
2252
- var contentShadow = (_) => [
2253
- "shadow-none"
2254
- ];
2255
- var surfaceShadow = ({ elevation }) => [
2256
- elevation === "positioned" ? "shadow" : elevation === "dialog" || elevation === "toast" ? "shadow-md" : "shadow-none"
2257
- ];
2258
- var surfaceZIndex = ({ level, elevation }) => {
2259
- switch (level) {
2260
- case "tooltip":
2261
- return elevation === "dialog" ? [
2262
- "z-[53]"
2263
- ] : elevation === "toast" ? [
2264
- "z-[43]"
2265
- ] : [
2266
- "z-30"
2267
- ];
2268
- case "menu":
2269
- return elevation === "dialog" ? [
2270
- "z-[52]"
2271
- ] : elevation === "toast" ? [
2272
- "z-[42]"
2273
- ] : [
2274
- "z-20"
2275
- ];
2276
- default:
2277
- return elevation === "dialog" ? [
2278
- "z-[51]"
2279
- ] : elevation === "toast" ? [
2280
- "z-[41]"
2281
- ] : [
2282
- "z-[1]"
2283
- ];
373
+ // src/util/size.ts
374
+ var sizeMap = {
375
+ 0: {
376
+ w: "w-0",
377
+ h: "h-0"
378
+ },
379
+ px: {
380
+ w: "w-px",
381
+ h: "h-px"
382
+ },
383
+ 0.5: {
384
+ w: "w-0.5",
385
+ h: "h-0.5"
386
+ },
387
+ 1: {
388
+ w: "w-1",
389
+ h: "h-1"
390
+ },
391
+ 1.5: {
392
+ w: "w-1.5",
393
+ h: "h-1.5"
394
+ },
395
+ 2: {
396
+ w: "w-2",
397
+ h: "h-2"
398
+ },
399
+ 2.5: {
400
+ w: "w-2.5",
401
+ h: "h-2.5"
402
+ },
403
+ 3: {
404
+ w: "w-3",
405
+ h: "h-3"
406
+ },
407
+ 3.5: {
408
+ w: "w-3.5",
409
+ h: "h-3.5"
410
+ },
411
+ 4: {
412
+ w: "w-4",
413
+ h: "h-4"
414
+ },
415
+ 5: {
416
+ w: "w-5",
417
+ h: "h-5"
418
+ },
419
+ 6: {
420
+ w: "w-6",
421
+ h: "h-6"
422
+ },
423
+ 7: {
424
+ w: "w-7",
425
+ h: "h-7"
426
+ },
427
+ 8: {
428
+ w: "w-8",
429
+ h: "h-8"
430
+ },
431
+ 9: {
432
+ w: "w-9",
433
+ h: "h-9"
434
+ },
435
+ 10: {
436
+ w: "w-10",
437
+ h: "h-10"
438
+ },
439
+ 11: {
440
+ w: "w-11",
441
+ h: "h-11"
442
+ },
443
+ 12: {
444
+ w: "w-12",
445
+ h: "h-12"
446
+ },
447
+ 14: {
448
+ w: "w-14",
449
+ h: "h-14"
450
+ },
451
+ 16: {
452
+ w: "w-16",
453
+ h: "h-16"
454
+ },
455
+ 20: {
456
+ w: "w-20",
457
+ h: "h-20"
458
+ },
459
+ 24: {
460
+ w: "w-24",
461
+ h: "h-24"
462
+ },
463
+ 28: {
464
+ w: "w-28",
465
+ h: "h-28"
466
+ },
467
+ 32: {
468
+ w: "w-32",
469
+ h: "h-32"
470
+ },
471
+ 36: {
472
+ w: "w-36",
473
+ h: "h-36"
474
+ },
475
+ 40: {
476
+ w: "w-40",
477
+ h: "h-40"
478
+ },
479
+ 44: {
480
+ w: "w-44",
481
+ h: "h-44"
482
+ },
483
+ 48: {
484
+ w: "w-48",
485
+ h: "h-48"
486
+ },
487
+ 52: {
488
+ w: "w-52",
489
+ h: "h-52"
490
+ },
491
+ 56: {
492
+ w: "w-56",
493
+ h: "h-56"
494
+ },
495
+ 60: {
496
+ w: "w-60",
497
+ h: "h-60"
498
+ },
499
+ 64: {
500
+ w: "w-64",
501
+ h: "h-64"
502
+ },
503
+ 72: {
504
+ w: "w-72",
505
+ h: "h-72"
506
+ },
507
+ 80: {
508
+ w: "w-80",
509
+ h: "h-80"
510
+ },
511
+ 96: {
512
+ w: "w-96",
513
+ h: "h-96"
2284
514
  }
2285
515
  };
2286
-
2287
- // src/styles/fragments/focus.ts
2288
- var focusRing = "dx-focus-ring";
2289
- var dropRing = "ring-1 ring-offset-0 ring-primary-350 ring-offset-white dark:ring-primary-450 dark:ring-offset-black";
2290
- var dropRingInner = "before:z-[1] before:absolute before:inset-0 before:ring-1 before:ring-inset before:ring-primary-350 before:dark:ring-primary-450";
2291
- var subduedFocus = "focus:outline-none focus-visible:outline-none focus:ring-0 ring-0 focus:border-0 border-0";
2292
- var staticFocusRing = "ring-2 ring-offset-0 ring-primary-350 ring-offset-white dark:ring-primary-450 dark:ring-offset-black";
2293
-
2294
- // src/styles/fragments/group.ts
2295
- var group = (props) => [
2296
- props.elevation === "base" ? "bg-transparent border border-separator" : "bg-modalSurface",
2297
- surfaceShadow(props)
2298
- ];
2299
-
2300
- // src/styles/fragments/hover.ts
2301
- var hoverColors = "transition-colors duration-100 linear hover:bg-hoverSurface";
2302
- var ghostHover = "hover:bg-hoverSurface";
2303
- var ghostFocusWithin = "focus-within:bg-hoverSurface";
2304
- var subtleHover = "hover:bg-hoverOverlay";
2305
- var hoverableControls = "[--controls-opacity:1] hover-hover:[--controls-opacity:0] hover-hover:hover:[--controls-opacity:1]";
2306
- var groupHoverControlItemWithTransition = "transition-opacity duration-200 opacity-0 group-hover:opacity-100";
2307
- var hoverableFocusedKeyboardControls = "focus-visible:[--controls-opacity:1]";
2308
- var hoverableFocusedWithinControls = "focus-within:[--controls-opacity:1]";
2309
- var hoverableFocusedControls = "focus:[--controls-opacity:1]";
2310
- var hoverableOpenControlItem = "hover-hover:aria-[expanded=true]:[--controls-opacity:1]";
2311
- var hoverableControlItem = "opacity-[--controls-opacity]";
2312
- var hoverableControlItemTransition = "transition-opacity duration-200";
2313
- var staticHoverableControls = "hover-hover:[--controls-opacity:1]";
2314
-
2315
- // src/styles/fragments/layout.ts
2316
- var bounceLayout = "fixed inset-0 z-0 overflow-auto overscroll-auto";
2317
- var fixedInsetFlexLayout = "flex flex-col fixed inset-0 overflow-hidden overscroll-none";
2318
-
2319
- // src/styles/fragments/motion.ts
2320
- var popperMotion = "will-change-[opacity,transform] data-[side=top]:animate-slide-down-and-fade data-[side=right]:animate-slide-left-and-fade data-[side=bottom]:animate-slide-up-and-fade data-[side=left]:animate-slide-right-and-fade";
2321
-
2322
- // src/styles/fragments/ornament.ts
2323
- var separatorBorderColor = "border-separator";
2324
- var subduedSeparatorBorderColor = "border-subduedSeparator";
2325
- var inlineSeparator = "self-stretch border-ie mli-1";
2326
- var blockSeparator = "self-stretch border-be mlb-1";
2327
-
2328
- // src/styles/fragments/selected.ts
2329
- var ghostSelectedCurrent = [
2330
- ghostHover,
2331
- "aria-[current]:bg-inputSurface hover:aria-[current]:bg-hoverSurface",
2332
- "aria-selected:bg-primary-100 dark:aria-selected:bg-primary-850 hover:aria-selected:bg-primary-150 hover:dark:aria-selected:bg-primary-800",
2333
- "aria-[current]:aria-selected:bg-primary-200 dark:aria-[current]:aria-selected:bg-primary-750 hover:aria-[current]:aria-selected:bg-primary-200 hover:dark:aria-[current]:aria-selected:bg-primary-750"
2334
- ];
2335
- var ghostHighlighted = "data-[highlighted]:bg-primary-100 dark:data-[highlighted]:bg-primary-600 hover:data-[highlighted]:bg-primary-150 hover:dark:data-[highlighted]:bg-primary-500";
2336
- var ghostSelectedTrackingInterFromNormal = "tracking-[0.0092em]";
2337
- var ghostSelected = "aria-selected:bg-baseSurface aria-selected:text-accentText hover:aria-selected:text-accentTextHover aria-selected:font-semibold aria-selected:tracking-normal transition-[color,font-variation-settings,letter-spacing]";
2338
- var ghostSelectedContainerMd = "@md:aria-selected:bg-baseSurface @md:aria-selected:text-accentText @md:hover:aria-selected:text-accentTextHover @md:aria-selected:font-semibold @md:aria-selected:tracking-normal @md:transition-[color,font-variation-settings,letter-spacing]";
2339
- var staticGhostSelectedCurrent = ({ current, selected }) => [
2340
- current && selected ? "bg-primary-200 dark:bg-primary-750 hover:bg-primary-200 hover:dark:bg-primary-750" : current ? "bg-inputSurface hover:bg-hoverSurface" : selected ? "bg-primary-100 dark:bg-primary-850 hover:bg-primary-150 hover:dark:bg-primary-800" : ghostHover
2341
- ];
2342
- var staticGhostSelected = ({ selected }) => selected ? [
2343
- "bg-primary-200 dark:bg-primary-750"
2344
- ] : [];
2345
-
2346
- // src/styles/fragments/shimmer.ts
2347
- var shimmer = "relative before:absolute before:inset-0 before:-translate-x-full before:animate-shimmer before:bg-gradient-to-r before:from-transparent before:via-neutral-100/10 before:to-transparent isolate overflow-hidden";
2348
- var strongShimmer = "relative before:absolute before:inset-0 before:-translate-x-full before:animate-shimmer before:bg-gradient-to-r before:from-transparent before:via-primary-100/80 before:to-transparent isolate overflow-hidden";
2349
-
2350
- // src/styles/fragments/surface.ts
2351
- var baseSurface = "base-surface";
2352
- var sidebarSurface = "sidebar-surface backdrop-blur-md dark:backdrop-blur-lg";
2353
- var sidebarBorder = "border-separator";
2354
- var activeSurface = "base-surface";
2355
- var groupBorder = "border-separator";
2356
- var modalSurface = "modal-surface backdrop-blur-md";
2357
- var attentionSurface = "attention-surface";
2358
- var accentSurface = "bg-accentSurface text-accentSurfaceText";
2359
-
2360
- // src/styles/fragments/size.ts
2361
- var sizeWidthMap = /* @__PURE__ */ new Map([
2362
- [
2363
- 0,
2364
- "is-0"
2365
- ],
2366
- [
2367
- "px",
2368
- "is-px"
2369
- ],
2370
- [
2371
- 0.5,
2372
- "is-0.5"
2373
- ],
2374
- [
2375
- 1,
2376
- "is-1"
2377
- ],
2378
- [
2379
- 1.5,
2380
- "is-1.5"
2381
- ],
2382
- [
2383
- 2,
2384
- "is-2"
2385
- ],
2386
- [
2387
- 2.5,
2388
- "is-2.5"
2389
- ],
2390
- [
2391
- 3,
2392
- "is-3"
2393
- ],
2394
- [
2395
- 3.5,
2396
- "is-3.5"
2397
- ],
2398
- [
2399
- 4,
2400
- "is-4"
2401
- ],
2402
- [
2403
- 5,
2404
- "is-5"
2405
- ],
2406
- [
2407
- 6,
2408
- "is-6"
2409
- ],
2410
- [
2411
- 7,
2412
- "is-7"
2413
- ],
2414
- [
2415
- 8,
2416
- "is-8"
2417
- ],
2418
- [
2419
- 9,
2420
- "is-9"
2421
- ],
2422
- [
2423
- 10,
2424
- "is-10"
2425
- ],
2426
- [
2427
- 11,
2428
- "is-11"
2429
- ],
2430
- [
2431
- 12,
2432
- "is-12"
2433
- ],
2434
- [
2435
- 14,
2436
- "is-14"
2437
- ],
2438
- [
2439
- 16,
2440
- "is-16"
2441
- ],
2442
- [
2443
- 20,
2444
- "is-20"
2445
- ],
2446
- [
2447
- 24,
2448
- "is-24"
2449
- ],
2450
- [
2451
- 28,
2452
- "is-28"
2453
- ],
2454
- [
2455
- 32,
2456
- "is-32"
2457
- ],
2458
- [
2459
- 36,
2460
- "is-36"
2461
- ],
2462
- [
2463
- 40,
2464
- "is-40"
2465
- ],
2466
- [
2467
- 44,
2468
- "is-44"
2469
- ],
2470
- [
2471
- 48,
2472
- "is-48"
2473
- ],
2474
- [
2475
- 52,
2476
- "is-52"
2477
- ],
2478
- [
2479
- 56,
2480
- "is-56"
2481
- ],
2482
- [
2483
- 60,
2484
- "is-60"
2485
- ],
2486
- [
2487
- 64,
2488
- "is-64"
2489
- ],
2490
- [
2491
- 72,
2492
- "is-72"
2493
- ],
2494
- [
2495
- 80,
2496
- "is-80"
2497
- ],
2498
- [
2499
- 96,
2500
- "is-96"
2501
- ]
2502
- ]);
2503
- var sizeHeightMap = /* @__PURE__ */ new Map([
2504
- [
2505
- 0,
2506
- "bs-0"
2507
- ],
2508
- [
2509
- "px",
2510
- "bs-px"
2511
- ],
2512
- [
2513
- 0.5,
2514
- "bs-0.5"
2515
- ],
2516
- [
2517
- 1,
2518
- "bs-1"
2519
- ],
2520
- [
2521
- 1.5,
2522
- "bs-1.5"
2523
- ],
2524
- [
2525
- 2,
2526
- "bs-2"
2527
- ],
2528
- [
2529
- 2.5,
2530
- "bs-2.5"
2531
- ],
2532
- [
2533
- 3,
2534
- "bs-3"
2535
- ],
2536
- [
2537
- 3.5,
2538
- "bs-3.5"
2539
- ],
2540
- [
2541
- 4,
2542
- "bs-4"
2543
- ],
2544
- [
2545
- 5,
2546
- "bs-5"
2547
- ],
2548
- [
2549
- 6,
2550
- "bs-6"
2551
- ],
2552
- [
2553
- 7,
2554
- "bs-7"
2555
- ],
2556
- [
2557
- 8,
2558
- "bs-8"
2559
- ],
2560
- [
2561
- 9,
2562
- "bs-9"
2563
- ],
2564
- [
2565
- 10,
2566
- "bs-10"
2567
- ],
2568
- [
2569
- 11,
2570
- "bs-11"
2571
- ],
2572
- [
2573
- 12,
2574
- "bs-12"
2575
- ],
2576
- [
2577
- 14,
2578
- "bs-14"
2579
- ],
2580
- [
2581
- 16,
2582
- "bs-16"
2583
- ],
2584
- [
2585
- 20,
2586
- "bs-20"
2587
- ],
2588
- [
2589
- 24,
2590
- "bs-24"
2591
- ],
2592
- [
2593
- 28,
2594
- "bs-28"
2595
- ],
2596
- [
2597
- 32,
2598
- "bs-32"
2599
- ],
2600
- [
2601
- 36,
2602
- "bs-36"
2603
- ],
2604
- [
2605
- 40,
2606
- "bs-40"
2607
- ],
2608
- [
2609
- 44,
2610
- "bs-44"
2611
- ],
2612
- [
2613
- 48,
2614
- "bs-48"
2615
- ],
2616
- [
2617
- 52,
2618
- "bs-52"
2619
- ],
2620
- [
2621
- 56,
2622
- "bs-56"
2623
- ],
2624
- [
2625
- 60,
2626
- "bs-60"
2627
- ],
2628
- [
2629
- 64,
2630
- "bs-64"
2631
- ],
2632
- [
2633
- 72,
2634
- "bs-72"
2635
- ],
2636
- [
2637
- 80,
2638
- "bs-80"
2639
- ],
2640
- [
2641
- 96,
2642
- "bs-96"
2643
- ]
2644
- ]);
2645
- var sizes = new Set(sizeWidthMap.keys());
2646
- var getSizeHeight = sizeHeightMap.get.bind(sizeHeightMap);
2647
- var getSizeWidth = sizeWidthMap.get.bind(sizeWidthMap);
2648
- var getSize = (size) => mx(getSizeHeight(size), getSizeWidth(size));
2649
- var computeSize = (value, defaultSize) => {
2650
- if (sizes.has(value)) {
516
+ var SIZE_VALUES = Object.keys(sizeMap).map((key) => key === "px" ? "px" : Number(key));
517
+ var getHeight = (size) => sizeMap[size]?.h;
518
+ var getWidth = (size) => sizeMap[size]?.w;
519
+ var getSize = (size) => mx(getHeight(size), getWidth(size));
520
+ var sizeValue = (size) => size === "px" ? 1 : size;
521
+ var sizeToRem = (size) => size === "px" ? "1px" : `${size * 0.25}rem`;
522
+ var iconSize = (size) => ({
523
+ "--icon-size": size ? sizeToRem(size) : "initial"
524
+ });
525
+ var snapSize = (value, defaultSize) => {
526
+ if (SIZE_VALUES.includes(value)) {
2651
527
  return value;
2652
528
  } else if (value <= 0) {
2653
529
  return 0;
2654
- } else if (value === 1) {
530
+ } else if (value < 0.5) {
2655
531
  return "px";
2656
532
  } else {
2657
533
  const wholeSeries = Math.floor(value);
2658
534
  const halfSeries = Math.floor(value * 2) / 2;
2659
535
  const doubleSeries = Math.floor(value / 2) * 2;
2660
536
  const quadrupleSeries = Math.floor(value / 4) * 4;
2661
- if (sizes.has(halfSeries)) {
537
+ if (SIZE_VALUES.includes(halfSeries)) {
2662
538
  return halfSeries;
2663
- } else if (sizes.has(wholeSeries)) {
539
+ } else if (SIZE_VALUES.includes(wholeSeries)) {
2664
540
  return wholeSeries;
2665
- } else if (sizes.has(doubleSeries)) {
541
+ } else if (SIZE_VALUES.includes(doubleSeries)) {
2666
542
  return doubleSeries;
2667
- } else if (sizes.has(quadrupleSeries)) {
543
+ } else if (SIZE_VALUES.includes(quadrupleSeries)) {
2668
544
  return quadrupleSeries;
2669
545
  } else {
2670
546
  return defaultSize;
2671
547
  }
2672
548
  }
2673
549
  };
2674
- var sizeValue = (size) => size === "px" ? 1 : size;
2675
-
2676
- // src/styles/fragments/text.ts
2677
- var placeholderText = "placeholder-neutral-300 dark:placeholder-neutral-500";
2678
- var staticPlaceholderText = "text-neutral-300 dark:text-neutral-500";
2679
- var descriptionText = "text-sm font-normal text-description";
2680
- var descriptionTextPrimary = "text-sm font-normal text-baseText";
2681
- var descriptionMessage = [
2682
- descriptionText,
2683
- "border border-dashed border-separator rounded p-4"
2684
- ];
2685
- var chromeText = "text-sm font-normal";
2686
550
 
2687
- // src/styles/fragments/valence.ts
2688
- var successText = "text-xs font-medium text-successText";
2689
- var infoText = "text-xs font-medium text-infoText";
2690
- var warningText = "text-xs font-medium text-warningText";
2691
- var errorText = "text-xs font-medium text-errorText";
2692
- var valenceColorText = (valence) => {
551
+ // src/util/valence.ts
552
+ var textValence = (valence) => {
2693
553
  switch (valence) {
2694
554
  case "success":
2695
- return successText;
555
+ return "font-medium text-success-text";
2696
556
  case "info":
2697
- return infoText;
557
+ return "font-medium text-info-text";
2698
558
  case "warning":
2699
- return warningText;
559
+ return "font-medium text-warning-text";
2700
560
  case "error":
2701
- return errorText;
2702
- default:
2703
- return void 0;
561
+ return "font-medium text-error-text";
2704
562
  }
2705
563
  };
2706
- var neutralMessageColors = "border border-dashed border-separator text-subdued";
2707
- var successMessageColors = "text-successSurfaceText bg-successSurface";
2708
- var infoMessageColors = "text-infoSurfaceText bg-infoSurface";
2709
- var warningMessageColors = "text-warningSurfaceText bg-warningSurface";
2710
- var errorMessageColors = "text-errorSurfaceText bg-errorSurface";
2711
564
  var messageValence = (valence) => {
2712
565
  switch (valence) {
2713
566
  case "success":
2714
- return successMessageColors;
567
+ return "font-medium text-success-text border-success-text bg-success-surface";
2715
568
  case "info":
2716
- return infoMessageColors;
569
+ return "font-medium text-info-text border-info-text bg-info-surface";
2717
570
  case "warning":
2718
- return warningMessageColors;
571
+ return "font-medium text-warning-text border-warning-text bg-warning-surface";
2719
572
  case "error":
2720
- return errorMessageColors;
573
+ return "font-medium text-error-text border-error-text bg-error-surface";
2721
574
  default:
2722
- return neutralMessageColors;
575
+ return "font-medium text-neutral-text border-neutral-text bg-neutral-surface";
2723
576
  }
2724
577
  };
2725
578
 
2726
- // src/styles/components/avatar.ts
2727
- var avatarRoot = ({ size = 10, inGroup }, ...etc) => mx("relative inline-flex shrink-0", getSize(size), inGroup && (size === "px" || size <= 3 ? "-mie-1" : "-mie-2"), ...etc);
579
+ // src/theme/components/avatar.ts
580
+ var avatarRoot = ({ size = 10, inGroup }, ...etc) => mx("relative inline-flex shrink-0", getSize(size), inGroup && (size === "px" || size <= 3 ? "-mr-1" : "-mr-2"), ...etc);
2728
581
  var avatarLabel = ({ srOnly }, ...etc) => mx(srOnly && "sr-only", ...etc);
2729
- var avatarDescription = ({ srOnly }, ...etc) => mx(descriptionText, srOnly && "sr-only", ...etc);
2730
- var avatarFrame = ({ variant }, ...etc) => mx("is-full bs-full bg-[--surface-bg]", variant === "circle" ? "rounded-full" : "rounded", ...etc);
2731
- var avatarStatusIcon = ({ status, size = 3 }, ...etc) => mx("absolute block-end-0 inline-end-0", getSize(size), status === "inactive" ? "text-amber-350 dark:text-amber-250" : status === "active" ? "text-emerald-350 dark:text-emerald-250" : "text-neutral-350 dark:text-neutral-250", ...etc);
2732
- var avatarRing = ({ status, variant, animation }, ...etc) => mx("absolute inset-0 border-2", variant === "circle" ? "rounded-full" : "rounded", status === "current" ? "border-primary-400 dark:border-primary-500" : status === "active" ? "border-emerald-400 dark:border-emerald-400" : status === "error" ? "border-rose-400 dark:border-rose-500" : status === "warning" ? "border-amber-400 dark:border-amber-500" : status === "inactive" ? "border-separator" : status === "internal" ? "border-fuchsia-600" : "border-[color:var(--surface-bg)]", animation === "pulse" ? "animate-halo-pulse" : "", ...etc);
582
+ var avatarDescription = ({ srOnly }, ...etc) => mx("text-description", srOnly && "sr-only", ...etc);
583
+ var avatarFrame = ({ variant }, ...etc) => mx("h-full w-full bg-(--surface-bg)", variant === "circle" ? "rounded-full" : "rounded-sm", ...etc);
584
+ var avatarStatusIcon = ({ status, size = 3 }, ...etc) => mx("absolute bottom-0 end-0", getSize(size), status === "inactive" ? "text-amber-400 dark:text-amber-300" : status === "active" ? "text-emerald-400 dark:text-emerald-300" : "text-neutral-400 dark:text-neutral-300", ...etc);
585
+ var avatarRing = ({ status, variant, animation }, ...etc) => mx("absolute inset-0 border-2", variant === "circle" ? "rounded-full" : "rounded-sm", status === "current" ? "border-primary-400 dark:border-primary-500" : status === "active" ? "border-emerald-400 dark:border-emerald-400" : status === "error" ? "border-rose-400 dark:border-rose-500" : status === "warning" ? "border-amber-400 dark:border-amber-500" : status === "inactive" ? "border-separator" : status === "internal" ? "border-fuchsia-600" : "border-[color:var(--surface-bg)]", animation === "pulse" ? "animate-halo-pulse" : "", ...etc);
2733
586
  var avatarFallbackText = (_props, ...etc) => mx("fill-white", ...etc);
2734
587
  var avatarGroup = (_props, ...etc) => mx("inline-flex items-center", ...etc);
2735
- var avatarGroupLabel = ({ size, srOnly }, ...etc) => mx(srOnly ? "sr-only" : "rounded-full truncate text-sm leading-none plb-1 pli-2 relative z-[1] flex items-center justify-center", size && getSizeHeight(size), ...etc);
2736
- var avatarGroupDescription = ({ srOnly }, ...etc) => mx(srOnly ? "sr-only" : descriptionText, ...etc);
588
+ var avatarGroupLabel = ({ size, srOnly }, ...etc) => mx(srOnly ? "sr-only" : "rounded-full truncate text-sm leading-none py-1 px-2 relative z-[1] flex items-center justify-center", size && getHeight(size), ...etc);
589
+ var avatarGroupDescription = ({ srOnly }, ...etc) => mx(srOnly ? "sr-only" : "text-description", ...etc);
2737
590
  var avatarTheme = {
2738
591
  root: avatarRoot,
2739
592
  label: avatarLabel,
@@ -2747,7 +600,7 @@ var avatarTheme = {
2747
600
  groupDescription: avatarGroupDescription
2748
601
  };
2749
602
 
2750
- // src/styles/components/breadcrumb.ts
603
+ // src/theme/components/breadcrumb.ts
2751
604
  var breadcrumbRoot = (_props, ...etc) => mx("shrink-0 flex items-center", ...etc);
2752
605
  var breadcrumbList = (_props, ...etc) => mx("contents", ...etc);
2753
606
  var breadcrumbListItem = (_props, ...etc) => mx("contents", ...etc);
@@ -2761,38 +614,101 @@ var breadcrumbTheme = {
2761
614
  separator: breadcrumbSeparator
2762
615
  };
2763
616
 
2764
- // src/styles/components/button.ts
2765
- var primaryButtonColors = "text-accentSurfaceText bg-accentSurface hover:bg-accentSurfaceHover aria-pressed:bg-primary-500 dark:aria-pressed:bg-primary-500 data-[state=open]:bg-primary-500 dark:data-[state=open]:bg-primary-500 aria-checked:bg-primary-500 dark:aria-checked:bg-primary-500 aria-checked:text-primary-100";
2766
- var staticDefaultButtonColors = "bg-inputSurface";
2767
- var defaultButtonColors = mx(staticDefaultButtonColors, "data-[state=open]:bg-inputSurface aria-pressed:text-accentText aria-pressed:bg-baseSurface aria-checked:text-accentText aria-checked:bg-baseSurface");
2768
- var ghostButtonColors = mx(ghostHover, "hover:text-inherit data-[state=open]:bg-inputSurface aria-pressed:text-accentText aria-pressed:bg-baseSurface aria-checked:text-accentText aria-checked:bg-baseSurface");
617
+ // src/theme/components/card.ts
618
+ var cardRoot = ({ border, fullWidth }, ...etc) => mx("dx-card dx-card-min-width dx-card-max-width min-h-(--dx-rail-item) group/card relative overflow-hidden", border && "bg-card-surface border border-separator dark:border-subdued-separator rounded-xs dx-focus-ring-group-y-indicator", fullWidth && "max-w-none!", ...etc);
619
+ var cardToolbar = (_, ...etc) => mx("dx-card__toolbar dx-density-fine bg-transparent p-0! gap-0! col-span-3 grid! grid-cols-subgrid! [contain:none]", ...etc);
620
+ var cardTitle = (_props, ...etc) => mx("dx-card__title grow truncate", ...etc);
621
+ var cardContent = (_props, ...etc) => mx("dx-card__content contents pb-1 last:pb-0", ...etc);
622
+ var cardHeading = ({ variant = "default" }, ...etc) => mx("dx-card__heading", variant === "default" && "py-1", variant === "subtitle" && "py-2 text-xs text-description font-medium uppercase", ...etc);
623
+ var cardText = ({ variant = "default", truncate: _truncate }, ...etc) => mx("dx-card__text items-center overflow-hidden", variant === "default" && "py-1", variant === "description" && "py-1.5 text-description", ...etc);
624
+ var cardTextSpan = ({ variant = "default", truncate }, ...etc) => mx(variant === "description" && "text-sm text-description line-clamp-3", truncate && "truncate", ...etc);
625
+ var cardPoster = (_props, ...etc) => mx("dx-card__poster col-span-3 max-h-[200px]", ...etc);
626
+ var cardPosterIcon = (_props, ...etc) => mx("dx-card__poster-icon col-span-3 grid place-items-center bg-input-surface text-subdued max-h-[200px]", ...etc);
627
+ var cardAction = (_props, ...etc) => mx("dx-card__acztion col-span-3 !grid grid-cols-subgrid p-0! w-full text-start overflow-hidden", ...etc);
628
+ var cardActionLabel = (_props, ...etc) => mx("dx-card__action-label min-w-0 flex-1 truncate", ...etc);
629
+ var cardLink = (_props, ...etc) => mx("dx-card__link col-span-3 !grid grid-cols-subgrid group p-0! dx-button dx-focus-ring min-h-1!", ...etc);
630
+ var cardLinkLabel = (_props, ...etc) => mx("dx-card__link-label min-w-0 flex-1 truncate", ...etc);
631
+ var cardRow = (_, ...etc) => mx("dx-card__row col-span-3 grid grid-cols-subgrid", ...etc);
632
+ var cardIconBlock = ({ padding }, ...etc) => mx("dx-card__icon-block grid h-[var(--dx-rail-item)] w-[var(--dx-rail-item)] place-items-center", padding && "[&>*]:p-1", ...etc);
633
+ var cardTheme = {
634
+ root: cardRoot,
635
+ toolbar: cardToolbar,
636
+ title: cardTitle,
637
+ content: cardContent,
638
+ row: cardRow,
639
+ heading: cardHeading,
640
+ text: cardText,
641
+ "text-span": cardTextSpan,
642
+ poster: cardPoster,
643
+ "poster-icon": cardPosterIcon,
644
+ action: cardAction,
645
+ "action-label": cardActionLabel,
646
+ link: cardLink,
647
+ "link-label": cardLinkLabel,
648
+ "icon-block": cardIconBlock
649
+ };
650
+
651
+ // src/theme/components/button.ts
652
+ var primaryButtonColors = "text-accent-surface-text bg-accent-surface hover:bg-accent-surface-hover aria-pressed:bg-primary-500 dark:aria-pressed:bg-primary-500 data-[state=open]:bg-primary-500 dark:data-[state=open]:bg-primary-500 aria-checked:bg-primary-500 dark:aria-checked:bg-primary-500 aria-checked:text-primary-100";
653
+ var staticDefaultButtonColors = "bg-input-surface text-input-surface-text";
654
+ var defaultButtonColors = mx(staticDefaultButtonColors, "data-[state=open]:bg-input-surface aria-pressed:text-accent-text aria-pressed:bg-base-surface aria-checked:text-accent-text aria-checked:bg-base-surface");
655
+ var ghostButtonColors = mx(ghostHover, "hover:text-inherit data-[state=open]:bg-input-surface aria-pressed:text-accent-text aria-pressed:bg-base-surface aria-checked:text-accent-text aria-checked:bg-base-surface");
2769
656
  var buttonRoot = (_props, ...etc) => {
2770
- return mx("dx-button dx-focus-ring group max-is-full [&_span]:truncate", ...etc);
657
+ return mx("dx-button dx-focus-ring group [&_span]:truncate", ...etc);
2771
658
  };
2772
659
  var buttonGroup = (_props, ...etc) => {
2773
- return mx("inline-flex rounded-sm [&>:first-child]:rounded-is-sm [&>:last-child]:rounded-ie-sm [&>button]:relative", ...etc);
660
+ return mx("inline-flex rounded-xs [&>:first-child]:rounded-w-sm [&>:last-child]:rounded-ie-sm [&>button]:relative", ...etc);
2774
661
  };
2775
662
  var buttonTheme = {
2776
663
  root: buttonRoot,
2777
664
  group: buttonGroup
2778
665
  };
2779
666
 
2780
- // src/styles/components/dialog.ts
2781
- var sizeMap = {
2782
- sm: "md:!max-is-[24rem]",
2783
- md: "md:!max-is-[32rem]",
2784
- lg: "md:!max-is-[40rem]",
2785
- xl: "md:!max-is-[60rem]"
667
+ // src/theme/primitives/column.ts
668
+ var withColumn = {
669
+ /** Centers element in the Column grid via --dx-col. No-op outside Column or inside ScrollArea. */
670
+ center: () => "[grid-column:var(--dx-col,auto)]",
671
+ /** Propagates the Column grid to children via subgrid. No-op outside Column.
672
+ * Direct children default to center column unless they are a dx-container (ScrollArea). */
673
+ propagate: () => "[.dx-column-root_&]:col-span-full [.dx-column-root_&]:grid [.dx-column-root_&]:grid-cols-subgrid [.dx-column-root_&]:[&>*:not(.dx-container)]:[grid-column:var(--dx-col,auto)]",
674
+ /** Resets --dx-col after consuming --gutter. Applied by ScrollArea.Viewport. */
675
+ consumed: () => "[--dx-col:auto]"
676
+ };
677
+ var columnRoot = (_, ...etc) => {
678
+ return mx("dx-column-root grid", ...etc);
679
+ };
680
+ var columnRow = (_, ...etc) => {
681
+ return mx("col-span-3 grid grid-cols-subgrid", ...etc);
682
+ };
683
+ var columnBleed = (_, ...etc) => {
684
+ return mx("col-span-full grid grid-cols-subgrid min-h-0", ...etc);
685
+ };
686
+ var columnCenter = (_, ...etc) => {
687
+ return mx(withColumn.center(), "min-h-0", ...etc);
688
+ };
689
+ var columnTheme = {
690
+ root: columnRoot,
691
+ row: columnRow,
692
+ bleed: columnBleed,
693
+ center: columnCenter
694
+ };
695
+
696
+ // src/theme/components/dialog.ts
697
+ var sizeMap2 = {
698
+ sm: "md:max-w-[24rem]",
699
+ md: "md:max-w-[32rem]!",
700
+ lg: "md:max-w-[40rem]!",
701
+ xl: "md:max-w-[60rem]!"
2786
702
  };
2787
703
  var dialogOverlay = (_props, ...etc) => mx("dx-dialog__overlay", ...etc);
2788
- var dialogContent = ({ inOverlayLayout, size }, ...etc) => {
2789
- return mx("@container dx-dialog__content dx-focus-ring modal-surface density-coarse is-full gap-4", !inOverlayLayout && "fixed z-50 top-[50%] left-[50%] -translate-x-[50%] -translate-y-[50%]", size && sizeMap[size], ...etc);
704
+ var dialogContent = ({ inOverlayLayout, size = "md" }, ...etc) => {
705
+ return mx("@container", "dx-dialog__content dx-focus-ring dx-modal-surface dx-density-coarse py-4", !inOverlayLayout && "fixed z-50 top-[50%] left-[50%] -translate-x-[50%] -translate-y-[50%]", sizeMap2[size], ...etc);
2790
706
  };
2791
- var dialogHeader = (_props, ...etc) => mx("dx-dialog__header flex items-center justify-between", ...etc);
2792
- var dialogBody = (_props, ...etc) => mx("dx-dialog__body flex flex-col gap-4 bs-full overflow-hidden", ...etc);
2793
- var dialogActionBar = (_props, ...etc) => mx("dx-dialog__actionbar flex items-center density-coarse", ...etc);
707
+ var dialogHeader = (_props, ...etc) => mx("dx-dialog__header flex pb-4 items-center justify-between", withColumn.center(), ...etc);
708
+ var dialogBody = (_props, ...etc) => mx("dx-dialog__body dx-expander", withColumn.propagate(), ...etc);
709
+ var dialogActionBar = (_props, ...etc) => mx("dx-dialog__actionbar flex items-center pt-4 gap-2 dx-density-coarse", withColumn.center(), ...etc);
2794
710
  var dialogTitle = ({ srOnly }, ...etc) => mx("dx-dialog__title", srOnly && "sr-only", ...etc);
2795
- var dialogDescription = ({ srOnly }, ...etc) => mx("dx-dialog__description", descriptionText, srOnly && "sr-only", ...etc);
711
+ var dialogDescription = ({ srOnly }, ...etc) => mx("dx-dialog__description", "text-description", srOnly && "sr-only", ...etc);
2796
712
  var dialogTheme = {
2797
713
  overlay: dialogOverlay,
2798
714
  content: dialogContent,
@@ -2803,114 +719,120 @@ var dialogTheme = {
2803
719
  description: dialogDescription
2804
720
  };
2805
721
 
2806
- // src/styles/components/icon.ts
2807
- var iconRoot = ({ size }, etc) => mx("shrink-0 bs-[1em] is-[1em] text-[var(--icons-color,currentColor)]", size && getSize(size), etc);
722
+ // src/theme/components/focus.ts
723
+ var focusRing = ({ border }, ...etc) => mx("dx-ring-pseudo outline-hidden", "focus:after:ring-neutral-focus-indicator", "data-[focus-state=active]:after:ring-neutral-focus-indicator", "data-[focus-state=error]:after:ring-rose-500", border && "border border-separator", ...etc);
724
+ var focusTheme = {
725
+ group: focusRing,
726
+ item: focusRing
727
+ };
728
+
729
+ // src/theme/components/icon.ts
730
+ var iconRoot = ({ size }, etc) => {
731
+ return mx("shrink-0 text-[var(--icons-color,currentColor)]", size ? getSize(size) : "[width:var(--icon-size,var(--dx-default-icons-size))] [height:var(--icon-size,var(--dx-default-icons-size))]", etc);
732
+ };
2808
733
  var iconTheme = {
2809
734
  root: iconRoot
2810
735
  };
2811
736
 
2812
- // src/styles/components/icon-button.ts
737
+ // src/theme/components/icon-button.ts
2813
738
  var iconButtonRoot = ({ iconOnly }, ...etc) => {
2814
- return mx("gap-2", iconOnly && "p-iconButtonPadding min-bs-0", ...etc);
739
+ return mx("px-1.5", !iconOnly && "gap-2", ...etc);
2815
740
  };
2816
741
  var iconButtonTheme = {
2817
742
  root: iconButtonRoot
2818
743
  };
2819
744
 
2820
- // src/styles/components/input.ts
2821
- var neutralInputValence = "";
2822
- var successInputValence = "shadow-emerald-500/50 dark:shadow-emerald-600/50";
2823
- var infoInputValence = "shadow-cyan-500/50 dark:shadow-cyan-600/50";
2824
- var warningInputValence = "shadow-amber-500/50 dark:shadow-amber-600/50";
2825
- var errorInputValence = "shadow-rose-500/50 dark:shadow-rose-600/50";
2826
- var textInputSurfaceFocus = "transition-colors bg-textInputSurface focus:bg-focusSurface border border-separator focus:border-separator";
2827
- var textInputSurfaceHover = "hover:bg-textInputSurface focus:hover:bg-focusSurface";
2828
- var booleanInputSurface = "shadow-inner transition-colors bg-unAccent aria-checked:bg-accentSurface aria-[checked=mixed]:bg-accentSurface";
2829
- var booleanInputSurfaceHover = "hover:bg-unAccentHover hover:aria-checked:bg-accentSurfaceHover hover:aria-[checked=mixed]:bg-accentSurfaceHover";
2830
- var inputTextLabel = "text-description text-xs font-medium mbs-inputSpacingBlock mbe-labelSpacingBlock first:mbs-0";
745
+ // src/theme/components/input.ts
746
+ var inputTextLabel = "py-1 text-sm text-description";
747
+ var textInputSurfaceFocus = "transition-colors bg-input-surface focus:bg-focus-surface border border-separator focus:border-separator";
748
+ var textInputSurfaceHover = "hover:bg-focus-surface";
749
+ var booleanInputSurface = "shadow-inner transition-colors bg-un-accent aria-checked:bg-accent-surface aria-[checked=mixed]:bg-accent-surface";
750
+ var booleanInputSurfaceHover = "hover:bg-un-accent-hover hover:aria-checked:bg-accent-surface-hover hover:aria-[checked=mixed]:bg-accent-surface-hover";
2831
751
  var inputValence = (valence) => {
2832
752
  switch (valence) {
2833
753
  case "success":
2834
- return successInputValence;
754
+ return "shadow-emerald-500/50 dark:shadow-emerald-600/50";
2835
755
  case "info":
2836
- return infoInputValence;
756
+ return "shadow-cyan-500/50 dark:shadow-cyan-600/50";
2837
757
  case "warning":
2838
- return warningInputValence;
758
+ return "shadow-amber-500/50 dark:shadow-amber-600/50";
2839
759
  case "error":
2840
- return errorInputValence;
2841
- default:
2842
- return null;
760
+ return "shadow-rose-500/50 dark:shadow-rose-600/50";
2843
761
  }
2844
762
  };
2845
763
  var sharedSubduedInputStyles = (props) => [
2846
- 'plb-0 is-full bg-transparent text-current [[data-drag-autoscroll="active"]_&]:pointer-events-none',
2847
- props.density === "fine" ? fineBlockSize : coarseBlockSize,
2848
- placeholderText,
2849
- subduedFocus,
764
+ '[[data-drag-autoscroll="active"]_&]:pointer-events-none',
765
+ "py-0 w-full bg-transparent text-current placeholder-placeholder",
766
+ "dx-focus-subdued",
767
+ densityDimensions(props.density),
2850
768
  props.disabled && staticDisabled
2851
769
  ];
2852
770
  var sharedDefaultInputStyles = (props) => [
2853
- 'plb-0 is-full text-baseText rounded-sm text-[color:var(--surface-text)] [[data-drag-autoscroll="active"]_&]:pointer-events-none',
771
+ '[[data-drag-autoscroll="active"]_&]:pointer-events-none',
772
+ "py-0 w-full text-base-surface-text rounded-xs placeholder-placeholder",
2854
773
  textInputSurfaceFocus,
2855
- placeholderText,
2856
- props.density === "fine" ? fineDimensions : coarseDimensions,
774
+ densityDimensions(props.density),
2857
775
  props.disabled ? staticDisabled : textInputSurfaceHover
2858
776
  ];
2859
777
  var sharedStaticInputStyles = (props) => [
2860
- 'plb-0 is-full text-baseText rounded-sm text-[color:var(--surface-text)] [[data-drag-autoscroll="active"]_&]:pointer-events-none',
778
+ '[[data-drag-autoscroll="active"]_&]:pointer-events-none',
779
+ "py-0 w-full text-base-surface-text rounded-xs placeholder-placeholder",
2861
780
  textInputSurfaceFocus,
2862
781
  textInputSurfaceHover,
2863
- props.focused && "bg-attention",
2864
- placeholderText,
782
+ props.focused && "bg-attention-surface",
2865
783
  inputValence(props.validationValence),
2866
784
  props.disabled && staticDisabled,
2867
- props.focused && staticFocusRing
785
+ props.focused && "dx-focus-static"
2868
786
  ];
2869
- var inputInput = (props, ...etc) => props.variant === "subdued" ? mx(...sharedSubduedInputStyles(props), ...etc) : props.variant === "static" ? mx(...sharedStaticInputStyles(props), ...etc) : mx(...sharedDefaultInputStyles(props), !props.disabled && focusRing, inputValence(props.validationValence) || neutralInputValence, ...etc);
787
+ var inputInput = (props, ...etc) => props.variant === "subdued" ? mx(...sharedSubduedInputStyles(props), ...etc) : props.variant === "static" ? mx(...sharedStaticInputStyles(props), ...etc) : mx(...sharedDefaultInputStyles(props), !props.disabled && "dx-focus-ring", inputValence(props.validationValence), ...etc);
788
+ var inputTextArea = (props, ...etc) => inputInput(props, ...etc);
2870
789
  var inputCheckbox = ({ size = 5 }, ...etc) => mx("dx-checkbox dx-focus-ring", getSize(size), ...etc);
2871
- var inputCheckboxIndicator = ({ size = 5, checked }, ...etc) => mx(getSize(computeSize(sizeValue(size) * 0.65, 4)), !checked && "invisible", ...etc);
790
+ var inputCheckboxIndicator = ({ size = 5, checked }, ...etc) => mx(getSize(snapSize(sizeValue(size) * 0.65, 4)), !checked && "invisible", ...etc);
2872
791
  var inputSwitch = ({ size = 5, disabled }, ...etc) => mx(
2873
- getSizeHeight(size),
2874
- getSizeWidth(computeSize(sizeValue(size) * 1.75, 9)),
792
+ getHeight(size),
793
+ getWidth(snapSize(sizeValue(size) * 1.75, 9)),
2875
794
  booleanInputSurface,
2876
795
  !disabled && booleanInputSurfaceHover,
2877
796
  // TODO(burdon): Added m-1 margin to make 40px width to align with 40px icon button.
2878
- "cursor-pointer shrink-0 rounded-full pli-1 mx-1 relative",
2879
- focusRing,
797
+ "cursor-pointer shrink-0 rounded-full px-1 mx-1 relative",
798
+ "dx-focus-ring",
2880
799
  ...etc
2881
800
  );
2882
801
  var inputSwitchThumb = ({ size = 5 }, ...etc) => mx(getSize(size === "px" ? "px" : size - 2), "block bg-white rounded-full transition-transform duration-100 will-change-transform data-[state=checked]:translate-x-[100%]", ...etc);
2883
- var inputWithSegmentsInput = (props, ...etc) => mx("font-mono selection:bg-transparent mli-auto", props.disabled && "cursor-not-allowed", ...etc);
802
+ var inputWithSegmentsInput = (props, ...etc) => mx("font-mono selection:bg-transparent mx-auto", props.density === "fine" ? "text-base pointer-fine:text-sm" : "text-lg", props.disabled && "cursor-not-allowed", ...etc);
803
+ var inputSegment = (props, ...etc) => mx("flex items-center justify-center font-mono", props.density === "fine" ? "size-10 pointer-fine:size-8 rounded-xs" : "size-12 rounded-xs", "bg-input-surface text-base-surface-text transition-colors border border-separator", "data-[focused]:bg-attention-surface data-[focused]:border-neutral-focus-indicator", "data-[focused]:ring-2 data-[focused]:ring-offset-0 data-[focused]:ring-neutral-focus-indicator", inputValence(props.validationValence), props.disabled && staticDisabled, ...etc);
2884
804
  var inputLabel = (props, ...etc) => mx("block", inputTextLabel, props.srOnly && "sr-only", ...etc);
2885
- var inputDescription = (props, ...etc) => mx(descriptionText, props.srOnly && "sr-only", ...etc);
2886
- var inputDescriptionAndValidation = (props, ...etc) => mx("leading-none mlb-labelSpacingBlock", props.srOnly && "sr-only", ...etc);
2887
- var inputValidation = (props, ...etc) => mx(descriptionText, props.srOnly ? "sr-only" : valenceColorText(props.validationValence), ...etc);
805
+ var inputDescription = (props, ...etc) => mx("text-description", props.srOnly && "sr-only", ...etc);
806
+ var inputDescriptionAndValidation = (props, ...etc) => mx("leading-none my-1.5", props.srOnly && "sr-only", ...etc);
807
+ var inputValidation = (props, ...etc) => mx(inputTextLabel, props.srOnly ? "sr-only" : textValence(props.validationValence), ...etc);
2888
808
  var inputTheme = {
2889
809
  input: inputInput,
810
+ textArea: inputTextArea,
2890
811
  inputWithSegments: inputWithSegmentsInput,
812
+ segment: inputSegment,
2891
813
  checkbox: inputCheckbox,
2892
814
  checkboxIndicator: inputCheckboxIndicator,
2893
815
  label: inputLabel,
2894
816
  description: inputDescription,
2895
- validation: inputValidation,
2896
817
  switch: inputSwitch,
2897
818
  switchThumb: inputSwitchThumb,
819
+ validation: inputValidation,
2898
820
  descriptionAndValidation: inputDescriptionAndValidation
2899
821
  };
2900
822
 
2901
- // src/styles/components/link.ts
2902
- var linkRoot = ({ variant }, ...etc) => mx("underline decoration-1 underline-offset-2 transition-color rounded-sm", variant === "neutral" ? "text-inherit hover:opacity-90 visited:text-inherit visited:hover:opacity-90" : "text-accentText hover:text-accentTextHover visited:text-accentText visited:hover:text-accentTextHover", focusRing, ...etc);
823
+ // src/theme/components/link.ts
824
+ var linkRoot = ({ variant }, ...etc) => mx("underline decoration-1 underline-offset-2 transition-color rounded-xs", variant === "neutral" ? "text-inherit hover:opacity-90 visited:text-inherit visited:hover:opacity-90" : "text-accent-text hover:text-accent-text-hover visited:text-accent-text visited:hover:text-accent-text-hover", "dx-focus-ring", ...etc);
2903
825
  var linkTheme = {
2904
826
  root: linkRoot
2905
827
  };
2906
828
 
2907
- // src/styles/components/list.ts
829
+ // src/theme/components/list.ts
2908
830
  var listRoot = (_, ...etc) => mx(...etc);
2909
831
  var listItem = ({ collapsible }, ...etc) => mx(!collapsible && "flex", ...etc);
2910
832
  var listItemEndcap = ({ density }, ...etc) => mx(density === "fine" ? getSize(8) : getSize(10), "shrink-0 flex items-center justify-center", ...etc);
2911
- var listItemHeading = ({ density }, ...etc) => mx(densityBlockSize(density), "flex items-center", ...etc);
2912
- var listItemDragHandleIcon = (_props, ...etc) => mx(getSize(5), "mbs-2.5", ...etc);
2913
- var listItemOpenTrigger = ({ density }, ...etc) => mx("is-5 rounded flex justify-center items-center", densityBlockSize(density), ghostHover, focusRing, ...etc);
833
+ var listItemHeading = ({ density }, ...etc) => mx(densityBlockSize(density), "flex items-center overflow-hidden [&>span]:truncate", ...etc);
834
+ var listItemDragHandleIcon = (_props, ...etc) => mx(getSize(5), "mt-2.5", ...etc);
835
+ var listItemOpenTrigger = ({ density }, ...etc) => mx("w-5 rounded-sm flex justify-center items-center", densityBlockSize(density), ghostHover, "dx-focus-ring", ...etc);
2914
836
  var listItemOpenTriggerIcon = (_props, ...etc) => {
2915
837
  return mx(getSize(5), ...etc);
2916
838
  };
@@ -2926,9 +848,9 @@ var listTheme = {
2926
848
  }
2927
849
  };
2928
850
 
2929
- // src/styles/components/main.ts
2930
- var topbarBlockPaddingStart = "pbs-[--topbar-size] sticky-top-from-topbar-bottom";
2931
- var bottombarBlockPaddingEnd = "pbe-[--statusbar-size] sticky-bottom-from-statusbar-bottom";
851
+ // src/theme/components/main.ts
852
+ var topbarBlockPaddingStart = "py-(--dx-topbar-size) dx-sticky-top-from-topbar-bottom";
853
+ var bottombarBlockPaddingEnd = "pb-(--dx-statusbar-size) dx-sticky-bottom-from-statusbar-bottom";
2932
854
  var mainPadding = "dx-main-content-padding";
2933
855
  var mainPaddingTransitions = "dx-main-content-padding-transitions";
2934
856
  var mainIntrinsicSize = "dx-main-intrinsic-size";
@@ -2941,23 +863,17 @@ var mainTheme = {
2941
863
  overlay: mainOverlay
2942
864
  };
2943
865
 
2944
- // src/styles/components/menu.ts
2945
- var menuViewport = (_props, ...etc) => mx("rounded p-1 max-bs-[--radix-dropdown-menu-content-available-height] overflow-y-auto", ...etc);
2946
- var menuContent = ({ elevation }, ...etc) => mx(
2947
- "is-48 rounded md:is-56 border border-separator",
2948
- surfaceZIndex({
2949
- elevation,
2950
- level: "menu"
2951
- }),
2952
- surfaceShadow({
2953
- elevation: "positioned"
2954
- }),
2955
- modalSurface,
2956
- ...etc
2957
- );
2958
- var menuItem = (_props, ...etc) => mx("flex cursor-pointer select-none items-center gap-2 rounded-sm pli-2 plb-2 text-sm", "data-[highlighted]:bg-hoverSurface", subduedFocus, dataDisabled, ...etc);
2959
- var menuSeparator = (_props, ...etc) => mx("mlb-1 mli-2 bs-px bg-separator", ...etc);
2960
- var menuGroupLabel = (_props, ...etc) => mx(descriptionText, "select-none pli-2 plb-2", ...etc);
866
+ // src/theme/components/menu.ts
867
+ var menuContent = ({ elevation }, ...etc) => mx("dx-modal-surface w-48 rounded-sm md:w-56 border border-separator", surfaceZIndex({
868
+ elevation,
869
+ level: "menu"
870
+ }), surfaceShadow({
871
+ elevation: "positioned"
872
+ }), ...etc);
873
+ var menuViewport = (_props, ...etc) => mx("rounded-sm p-1 max-h-[var(--radix-dropdown-menu-content-available-height)] overflow-y-auto", ...etc);
874
+ var menuItem = (_props, ...etc) => mx("flex cursor-pointer select-none items-center gap-2 rounded-xs px-2 py-2 text-sm", "hover:bg-hover-surface data-[highlighted]:bg-hover-surface", "dx-focus-subdued", dataDisabled, ...etc);
875
+ var menuSeparator = (_props, ...etc) => mx("my-1 mx-2 h-px bg-separator", ...etc);
876
+ var menuGroupLabel = (_props, ...etc) => mx("text-description", "select-none px-2 py-2", ...etc);
2961
877
  var menuArrow = (_props, ...etc) => mx("fill-separator", ...etc);
2962
878
  var menuTheme = {
2963
879
  content: menuContent,
@@ -2968,34 +884,38 @@ var menuTheme = {
2968
884
  arrow: menuArrow
2969
885
  };
2970
886
 
2971
- // src/styles/components/message.ts
887
+ // src/theme/components/message.ts
2972
888
  var messageRoot = ({ valence }, etc) => {
2973
- return mx("p-trimSm rounded-md", messageValence(valence), etc);
889
+ return mx("grid grid-cols-[min-content_1fr] gap-x-2 p-trim-sm rounded-sm", messageValence(valence), etc);
890
+ };
891
+ var messageHeader = (_, etc) => {
892
+ return mx("col-span-2 grid grid-cols-subgrid items-center", etc);
2974
893
  };
2975
894
  var messageTitle = (_, etc) => {
2976
- return mx("font-medium flex gap-trimSm", etc);
895
+ return mx("col-start-2 gap-trim-sm [&>svg]:inline-block", etc);
2977
896
  };
2978
897
  var messageIcon = (_, etc) => {
2979
- return mx("flex bs-[1lh] items-center", etc);
898
+ return mx("col-start-1", etc);
2980
899
  };
2981
900
  var messageContent = (_, etc) => {
2982
- return mx("first:font-medium", etc);
901
+ return mx("grid grid-cols-subgrid col-start-2 first:font-medium", etc);
2983
902
  };
2984
903
  var messageTheme = {
2985
904
  root: messageRoot,
2986
- content: messageContent,
905
+ header: messageHeader,
2987
906
  icon: messageIcon,
2988
- title: messageTitle
907
+ title: messageTitle,
908
+ content: messageContent
2989
909
  };
2990
910
 
2991
- // src/styles/components/popover.ts
2992
- var popoverViewport = ({ constrainBlock, constrainInline }, ...etc) => mx("flex flex-col rounded-md", constrainBlock && "max-bs-[--radix-popover-content-available-height] overflow-hidden", constrainInline && "max-is-[--radix-popover-content-available-width] overflow-hidden", ...etc);
2993
- var popoverContent = ({ elevation }, ...etc) => mx("border border-separator rounded-md", modalSurface, surfaceShadow({
911
+ // src/theme/components/popover.ts
912
+ var popoverContent = ({ elevation }, ...etc) => mx("dx-modal-surface border border-separator rounded-sm", surfaceShadow({
2994
913
  elevation: "positioned"
2995
914
  }), surfaceZIndex({
2996
915
  elevation,
2997
916
  level: "menu"
2998
- }), focusRing, ...etc);
917
+ }), "dx-focus-ring", ...etc);
918
+ var popoverViewport = ({ constrainBlock, constrainInline }, ...etc) => mx("grid grid-rows-[1fr] min-h-0 min-w-popover-min-width", (constrainBlock || constrainInline) && "overflow-hidden", constrainBlock && "max-h-(--radix-popover-content-available-height)", constrainBlock && "max-h-[min(var(--radix-popover-content-available-height),calc(100dvh-var(--spacing-screen-border)*2))]", constrainInline && "max-w-(--radix-popover-content-available-width)", ...etc);
2999
919
  var popoverArrow = (_props, ...etc) => mx("fill-separator", ...etc);
3000
920
  var popoverTheme = {
3001
921
  content: popoverContent,
@@ -3003,60 +923,75 @@ var popoverTheme = {
3003
923
  arrow: popoverArrow
3004
924
  };
3005
925
 
3006
- // src/styles/components/scroll-area.ts
3007
- var scrollAreaRoot = ({ orientation, margin, thin }, ...etc) => mx(
3008
- "overflow-hidden",
3009
- orientation === "vertical" && "group/scroll-v bs-full is-full min-bs-0",
3010
- orientation === "horizontal" && "group/scroll-h bs-full is-full min-is-0",
3011
- orientation === "all" && "group/scroll-all bs-full is-full min-bs-0 min-is-0",
3012
- // Balance left/right, top/bottom "margin" with scrollbar.
3013
- margin && [
3014
- orientation === "vertical" && (thin ? "pis-[4px]" : "pis-[8px]"),
3015
- orientation === "horizontal" && (thin ? "pbs-[4px]" : "pbs-[8px]"),
3016
- orientation === "all" && (thin ? "pis-[4px] pbs-[8px]" : "pis-[8px] pbs-[8px]")
3017
- ],
3018
- ...etc
3019
- );
3020
- var scrollAreaViewport = ({ orientation, autoHide, padding: padding2, snap, thin }, ...etc) => mx(
3021
- "bs-full is-full",
3022
- orientation === "vertical" && "flex flex-col overflow-y-scroll",
3023
- orientation === "horizontal" && "flex overflow-x-scroll",
3024
- orientation === "all" && "overflow-scroll",
3025
- thin ? "[&::-webkit-scrollbar]:is-[4px] [&::-webkit-scrollbar]:bs-[4px]" : "[&::-webkit-scrollbar]:is-[8px] [&::-webkit-scrollbar]:bs-[8px]",
3026
- // '[&::-webkit-scrollbar-thumb]:rounded-full',
3027
- "[&::-webkit-scrollbar-thumb]:bg-transparent",
3028
- "[&::-webkit-scrollbar-corner]:bg-transparent",
3029
- // TODO(burdon): Define token.
3030
- autoHide ? [
3031
- orientation === "vertical" && "group-hover/scroll-v:[&::-webkit-scrollbar-thumb]:bg-subduedSeparator",
3032
- orientation === "horizontal" && "group-hover/scroll-h:[&::-webkit-scrollbar-thumb]:bg-subduedSeparator",
3033
- orientation === "all" && "group-hover/scroll-all:[&::-webkit-scrollbar-thumb]:bg-subduedSeparator"
3034
- ] : [
3035
- orientation === "vertical" && "[&::-webkit-scrollbar-thumb]:bg-subduedSeparator",
3036
- orientation === "horizontal" && "[&::-webkit-scrollbar-thumb]:bg-subduedSeparator",
3037
- orientation === "all" && "[&::-webkit-scrollbar-thumb]:bg-subduedSeparator"
3038
- ],
3039
- // TODO(burdon): Are scrollbars reserved on native devices?
3040
- padding2 && [
3041
- orientation === "vertical" && "pli-[4px]",
3042
- orientation === "horizontal" && "pbe-[4px]",
3043
- orientation === "all" && "pis-[4px] pbe-[4px]"
3044
- ],
3045
- snap && [
3046
- orientation === "vertical" && "snap-y snap-mandatory",
3047
- orientation === "horizontal" && "snap-x snap-mandatory",
3048
- orientation === "all" && "snap-both snap-mandatory"
3049
- ],
926
+ // src/theme/components/scroll-area.ts
927
+ var scrollbar = {
928
+ thin: {
929
+ size: 4,
930
+ padding: 4
931
+ },
932
+ coarse: {
933
+ size: 8,
934
+ padding: 8
935
+ }
936
+ };
937
+ var scrollAreaRoot = ({ orientation }, ...etc) => mx(
938
+ // Expand
939
+ "dx-container",
940
+ orientation === "vertical" && "group/scroll-v flex flex-col",
941
+ orientation === "horizontal" && "group/scroll-h flex",
942
+ orientation === "all" && "group/scroll-all",
943
+ // Apply col-span-full only when inside a Column.Root grid (detected via dx-column-root marker).
944
+ "[.dx-column-root_&]:col-span-full",
3050
945
  ...etc
3051
946
  );
947
+ var scrollAreaViewport = ({ orientation, centered, padding, snap, autoHide }, ...etc) => {
948
+ return mx(
949
+ "flex-1 min-h-0 w-full",
950
+ // Reset --dx-col so nested components don't try to grid-position themselves.
951
+ // ScrollArea has already consumed --gutter for padding.
952
+ withColumn.consumed(),
953
+ orientation === "vertical" && "overflow-y-scroll",
954
+ orientation === "horizontal" && "flex overflow-x-scroll overscroll-x-contain",
955
+ orientation === "all" && "overflow-scroll",
956
+ "[&::-webkit-scrollbar-corner]:bg-transparent",
957
+ "[&::-webkit-scrollbar-track]:bg-transparent",
958
+ "[&::-webkit-scrollbar-thumb]:rounded-none",
959
+ "[&::-webkit-scrollbar]:w-[var(--scroll-width)] [&::-webkit-scrollbar]:h-[var(--scroll-width)]",
960
+ // If contained within Column.Root grid the gutter is set by that component (--gutter CSS variable).
961
+ // If centered, left padding compensates for scrollbar width so content is visually centered.
962
+ (orientation === "vertical" || orientation === "all") && (padding ? [
963
+ centered ? "pl-[var(--gutter,calc(var(--scroll-width)+var(--scroll-padding)))]" : "pl-[var(--gutter,0)]",
964
+ "pr-[calc(var(--gutter,calc(var(--scroll-width)+var(--scroll-padding)))-var(--scroll-width))]"
965
+ ] : centered && "pl-[var(--scroll-width)]"),
966
+ (orientation === "horizontal" || orientation === "all") && (padding ? [
967
+ centered && "pt-[calc(var(--scroll-width)+var(--scroll-padding))]",
968
+ "pb-[var(--scroll-padding)]"
969
+ ] : centered && "pt-[var(--scroll-width)]"),
970
+ snap && [
971
+ orientation === "vertical" && "snap-y snap-mandatory",
972
+ orientation === "horizontal" && "snap-x snap-mandatory",
973
+ orientation === "all" && "snap-both snap-mandatory"
974
+ ],
975
+ autoHide ? [
976
+ orientation === "vertical" && "group-hover/scroll-v:[&::-webkit-scrollbar-thumb]:bg-scrollbar-thumb",
977
+ orientation === "horizontal" && "group-hover/scroll-h:[&::-webkit-scrollbar-thumb]:bg-scrollbar-thumb",
978
+ orientation === "all" && "group-hover/scroll-all:[&::-webkit-scrollbar-thumb]:bg-scrollbar-thumb"
979
+ ] : [
980
+ orientation === "vertical" && "[&::-webkit-scrollbar-thumb]:bg-scrollbar-thumb",
981
+ orientation === "horizontal" && "[&::-webkit-scrollbar-thumb]:bg-scrollbar-thumb",
982
+ orientation === "all" && "[&::-webkit-scrollbar-thumb]:bg-scrollbar-thumb"
983
+ ],
984
+ ...etc
985
+ );
986
+ };
3052
987
  var scrollAreaTheme = {
3053
988
  root: scrollAreaRoot,
3054
989
  viewport: scrollAreaViewport
3055
990
  };
3056
991
 
3057
- // src/styles/components/select.ts
992
+ // src/theme/components/select.ts
3058
993
  var selectContent = ({ elevation }, ...etc) => {
3059
- return mx("min-w-[--radix-select-trigger-width] rounded max-bs-[--radix-select-content-available-height] border border-separator", modalSurface, surfaceShadow({
994
+ return mx("dx-modal-surface rounded-sm border border-separator", "min-w-(--radix-select-trigger-width) max-h-(--radix-select-content-available-height)", surfaceShadow({
3060
995
  elevation: "positioned"
3061
996
  }), surfaceZIndex({
3062
997
  elevation,
@@ -3064,11 +999,11 @@ var selectContent = ({ elevation }, ...etc) => {
3064
999
  }), ...etc);
3065
1000
  };
3066
1001
  var selectViewport = (_props, ...etc) => mx(...etc);
3067
- var selectItem = (_props, ...etc) => mx("flex items-center min-bs-[2rem] pli-3 plb-1 gap-2", "text-baseText leading-none select-none outline-none", "[&>svg]:invisible [&[data-state=checked]>svg]:visible", ghostHighlighted, ...etc);
1002
+ var selectItem = (_props, ...etc) => mx("flex items-center min-h-[2rem] px-3 py-1 gap-2", "text-base-surface-text leading-none select-none outline-hidden", "[&>svg]:invisible [&[data-state=checked]>svg]:visible", "dx-highlighted", ...etc);
3068
1003
  var selectItemIndicator = (_props, ...etc) => mx("items-center", ...etc);
3069
1004
  var selectArrow = (_props, ...etc) => mx("fill-separator", ...etc);
3070
- var selectSeparator = (_props, ...etc) => mx(blockSeparator, separatorBorderColor, ...etc);
3071
- var selectScrollButton = (_props, ...etc) => mx(modalSurface, "flex items-center justify-center cursor-default bs-6 is-full", ...etc);
1005
+ var selectSeparator = (_props, ...etc) => mx("self-stretch border-b my-1 border-separator", ...etc);
1006
+ var selectScrollButton = (_props, ...etc) => mx("dx-modal-surface flex items-center justify-center cursor-default h-6 w-full", ...etc);
3072
1007
  var selectTheme = {
3073
1008
  content: selectContent,
3074
1009
  viewport: selectViewport,
@@ -3079,46 +1014,54 @@ var selectTheme = {
3079
1014
  scrollButton: selectScrollButton
3080
1015
  };
3081
1016
 
3082
- // src/styles/components/separator.ts
3083
- var separatorRoot = ({ orientation, subdued }, ...etc) => mx(orientation === "vertical" ? inlineSeparator : blockSeparator, subdued ? subduedSeparatorBorderColor : separatorBorderColor, ...etc);
1017
+ // src/theme/components/splitter.ts
1018
+ var splitterRoot = (_props, ...etc) => mx("relative h-full overflow-hidden", ...etc);
1019
+ var splitterPanel = (_props, ...etc) => mx("absolute inset-x-0 flex flex-col overflow-hidden", ...etc);
1020
+ var splitterTheme = {
1021
+ root: splitterRoot,
1022
+ panel: splitterPanel
1023
+ };
1024
+
1025
+ // src/theme/components/separator.ts
1026
+ var separatorRoot = ({ orientation, subdued }, ...etc) => mx("self-stretch", orientation === "vertical" ? "border-e mx-1" : "border-b my-1", subdued ? "border-subdued-separator" : "border-separator", ...etc);
3084
1027
  var separatorTheme = {
3085
1028
  root: separatorRoot
3086
1029
  };
3087
1030
 
3088
- // src/styles/components/skeleton.ts
3089
- var skeletonRoot = ({ variant = "default" }, ...etc) => mx("animate-pulse bg-neutral-250 dark:bg-neutral-750 rounded-md", variant === "circle" && "rounded-full", variant === "text" && "rounded", ...etc);
1031
+ // src/theme/components/skeleton.ts
1032
+ var skeletonRoot = ({ variant = "default" }, ...etc) => mx("animate-pulse bg-neutral-300 dark:bg-neutral-700 rounded-md", variant === "circle" && "rounded-full", variant === "text" && "rounded-sm", ...etc);
3090
1033
  var skeletonTheme = {
3091
1034
  root: skeletonRoot
3092
1035
  };
3093
1036
 
3094
- // src/styles/components/status.ts
3095
- var statusRoot = ({ variant = "default" }, ...etc) => mx("bs-1 relative bg-hoverOverlay rounded-full overflow-hidden", variant === "main-bottom" ? "is-full block" : "is-20 inline-block", ...etc);
3096
- var statusBar = ({ indeterminate, variant = "default" }, ...etc) => mx("absolute inset-block-0 block rounded-full", variant === "main-bottom" ? "bg-accentSurface" : "bg-unAccent", indeterminate ? "animate-progress-indeterminate" : "inline-start-0", ...etc);
1037
+ // src/theme/components/status.ts
1038
+ var statusRoot = ({ variant = "default" }, ...etc) => mx("h-1 relative rounded-full overflow-hidden", variant === "main-bottom" ? "w-full block" : "inline-20 inline-block bg-base-surface", ...etc);
1039
+ var statusBar = ({ variant = "default", indeterminate }, ...etc) => mx("absolute inset-y-0 block rounded-full", variant === "main-bottom" ? "bg-composer-300" : "bg-un-accent", indeterminate ? "animate-progress-indeterminate" : "start-0", ...etc);
3097
1040
  var statusTheme = {
3098
1041
  root: statusRoot,
3099
1042
  bar: statusBar
3100
1043
  };
3101
1044
 
3102
- // src/styles/components/tag.ts
3103
- var tagRoot = ({ palette = "neutral" }, ...etc) => mx("dx-tag", ...etc);
1045
+ // src/theme/components/tag.ts
1046
+ var tagRoot = (_, ...etc) => mx("dx-tag", ...etc);
3104
1047
  var tagTheme = {
3105
1048
  root: tagRoot
3106
1049
  };
3107
1050
 
3108
- // src/styles/components/toast.ts
1051
+ // src/theme/components/toast.ts
3109
1052
  var toastViewport = (_props, ...etc) => mx(
3110
1053
  // TODO(burdon): block-end should take into account status bar.
3111
- "z-40 fixed block-end-[calc(env(safe-area-inset-bottom)+1rem)] inset-start-[calc(env(safe-area-inset-left)+1rem)] inset-end-[calc(env(safe-area-inset-right)+1rem)] is-auto md:inline-end-[calc(env(safe-area-inset-right)+1rem)] md:inline-start-auto md:is-full md:max-is-sm",
1054
+ "z-40 fixed bottom-[calc(env(safe-area-inset-bottom)+1rem)] inset-start-[calc(env(safe-area-inset-left)+1rem)] inset-end-[calc(env(safe-area-inset-right)+1rem)] w-auto md:end-[calc(env(safe-area-inset-right)+1rem)] md:left-auto md:w-full md:max-w-sm",
3112
1055
  "rounded-md flex flex-col gap-2",
3113
1056
  ...etc
3114
1057
  );
3115
- var toastRoot = (_props, ...etc) => mx("rounded-md flex p-2 gap-2", modalSurface, surfaceShadow({
1058
+ var toastRoot = (_props, ...etc) => mx("dx-modal-surface rounded-md flex p-2 gap-2", surfaceShadow({
3116
1059
  elevation: "toast"
3117
- }), "radix-state-open:animate-toast-slide-in-bottom md:radix-state-open:animate-toast-slide-in-right", "radix-state-closed:animate-toast-hide", "radix-swipe-end:animate-toast-swipe-out", "translate-x-radix-toast-swipe-move-x", "radix-swipe-cancel:translate-x-0 radix-swipe-cancel:duration-200 radix-swipe-cancel:ease-[ease]", focusRing, ...etc);
3118
- var toastBody = (_props, ...etc) => mx("grow flex flex-col gap-1 justify-center pis-2", ...etc);
1060
+ }), "radix-state-open:animate-toast-slide-in-bottom md:radix-state-open:animate-toast-slide-in-right", "radix-state-closed:animate-toast-hide", "radix-swipe-end:animate-toast-swipe-out", "translate-x-radix-toast-swipe-move-x", "radix-swipe-cancel:translate-x-0 radix-swipe-cancel:duration-200 radix-swipe-cancel:ease-[ease]", "dx-focus-ring", ...etc);
1061
+ var toastBody = (_props, ...etc) => mx("grow flex flex-col gap-1 justify-center pl-2", ...etc);
3119
1062
  var toastActions = (_props, ...etc) => mx("shrink-0 flex flex-col gap-1 justify-center", ...etc);
3120
1063
  var toastTitle = ({ srOnly }, ...etc) => mx("shrink-0 font-medium", srOnly && "sr-only", ...etc);
3121
- var toastDescription = ({ srOnly }, ...etc) => mx(descriptionText, "shrink-0", srOnly && "sr-only", ...etc);
1064
+ var toastDescription = ({ srOnly }, ...etc) => mx("text-description", "shrink-0", srOnly && "sr-only", ...etc);
3122
1065
  var toastTheme = {
3123
1066
  viewport: toastViewport,
3124
1067
  root: toastRoot,
@@ -3128,79 +1071,69 @@ var toastTheme = {
3128
1071
  actions: toastActions
3129
1072
  };
3130
1073
 
3131
- // src/styles/components/toolbar.ts
3132
- var toolbarLayout = "is-full shrink-0 flex flex-nowrap p-1 gap-1 items-center overflow-x-auto scrollbar-none contain-layout";
1074
+ // src/theme/components/toolbar.ts
1075
+ var toolbarLayout = "w-full shrink-0 flex flex-nowrap p-1 gap-1 items-center overflow-x-auto scrollbar-none dx-contain-layout";
3133
1076
  var toolbarRoot = ({ density, disabled, layoutManaged }, ...etc) => {
3134
- return mx("bg-toolbarSurface dx-toolbar", density === "coarse" && "bs-[var(--rail-size)] !pli-3", disabled && "*:opacity-20", !layoutManaged && toolbarLayout, ...etc);
1077
+ return mx("bg-toolbar-surface dx-toolbar", density === "coarse" && "h-(--dx-rail-size) px-3!", disabled && "*:opacity-20", !layoutManaged && toolbarLayout, ...etc);
3135
1078
  };
3136
- var toolbarInner = ({ layoutManaged }, ...etc) => {
3137
- return mx(!layoutManaged && [
3138
- "flex gap-1",
3139
- textBlockWidth
3140
- ], ...etc);
1079
+ var toolbarText = (_, ...etc) => {
1080
+ return mx("px-2 grow truncate items-center", ...etc);
3141
1081
  };
3142
1082
  var toolbarTheme = {
3143
1083
  root: toolbarRoot,
3144
- inner: toolbarInner
1084
+ text: toolbarText
3145
1085
  };
3146
1086
 
3147
- // src/styles/components/tooltip.ts
3148
- var tooltipContent = ({ elevation }, ...etc) => mx(
3149
- "inline-flex items-center rounded-sm plb-1 pli-2 max-is-64 bg-inverseSurface text-inverseSurfaceText",
3150
- // popperMotion,
3151
- surfaceShadow({
3152
- elevation: "positioned"
3153
- }),
3154
- surfaceZIndex({
3155
- elevation,
3156
- level: "tooltip"
3157
- }),
3158
- chromeText,
3159
- ...etc
3160
- );
3161
- var tooltipArrow = (_props, ...etc) => mx("fill-inverseSurface", ...etc);
1087
+ // src/theme/components/tooltip.ts
1088
+ var tooltipContent = ({ elevation }, ...etc) => mx("inline-flex items-center p-1 max-w-64 text-sm bg-inverse-surface text-inverse-surface-text rounded-sm", surfaceShadow({
1089
+ elevation: "positioned"
1090
+ }), surfaceZIndex({
1091
+ elevation,
1092
+ level: "tooltip"
1093
+ }), ...etc);
1094
+ var tooltipArrow = (_props, ...etc) => mx("fill-inverse-surface", ...etc);
3162
1095
  var tooltipTheme = {
3163
1096
  content: tooltipContent,
3164
1097
  arrow: tooltipArrow
3165
1098
  };
3166
1099
 
3167
- // src/styles/components/treegrid.ts
1100
+ // src/theme/components/treegrid.ts
3168
1101
  var levelStyles = /* @__PURE__ */ new Map([
3169
1102
  [
3170
1103
  1,
3171
- "[&>.indent:first-of-type]:pis-0 font-medium"
1104
+ "[&>.indent:first-of-type]:pl-0 font-medium"
3172
1105
  ],
3173
1106
  [
3174
1107
  2,
3175
- "[&>.indent:first-of-type]:pis-0"
1108
+ "[&>.indent:first-of-type]:pl-0"
3176
1109
  ],
3177
1110
  [
3178
1111
  3,
3179
- "[&>.indent:first-of-type]:pis-1"
1112
+ "[&>.indent:first-of-type]:pl-1"
3180
1113
  ],
3181
1114
  [
3182
1115
  4,
3183
- "[&>.indent:first-of-type]:pis-2"
1116
+ "[&>.indent:first-of-type]:pl-2"
3184
1117
  ],
3185
1118
  [
3186
1119
  5,
3187
- "[&>.indent:first-of-type]:pis-3"
1120
+ "[&>.indent:first-of-type]:pl-3"
3188
1121
  ],
3189
1122
  [
3190
1123
  6,
3191
- "[&>.indent:first-of-type]:pis-4"
1124
+ "[&>.indent:first-of-type]:pl-4"
3192
1125
  ],
3193
1126
  [
3194
1127
  7,
3195
- "[&>.indent:first-of-type]:pis-5"
1128
+ "[&>.indent:first-of-type]:pl-5"
3196
1129
  ],
3197
1130
  [
3198
1131
  8,
3199
- "[&>.indent:first-of-type]:pis-6"
1132
+ "[&>.indent:first-of-type]:pl-6"
3200
1133
  ]
3201
1134
  ]);
3202
1135
  var treegridRoot = (_, ...etc) => mx("grid", ...etc);
3203
- var treegridRow = ({ level = 1 }, ...etc) => mx("contents", levelStyles.get(Math.min(Math.max(Math.round(level), 1), 8)), ...etc);
1136
+ var treegridRow = ({ level = 1 }, ...etc) => mx(levelStyles.get(Math.min(Math.max(Math.round(level), 1), 8)), ...etc);
3204
1137
  var treegridCell = ({ indent }, ...etc) => mx(indent && "indent", ...etc);
3205
1138
  var treegridTheme = {
3206
1139
  root: treegridRoot,
@@ -3208,33 +1141,47 @@ var treegridTheme = {
3208
1141
  cell: treegridCell
3209
1142
  };
3210
1143
 
3211
- // src/styles/primitives/container.ts
3212
- var padding = {
3213
- sm: "pli-2",
3214
- md: "pli-3",
3215
- lg: "pli-6"
3216
- };
3217
- var containerColumn = ({ variant }, ...etc) => mx(variant && padding[variant], ...etc);
3218
- var containerTheme = {
3219
- column: containerColumn
1144
+ // src/theme/primitives/panel.ts
1145
+ var sizes = {
1146
+ lg: "h-(--dx-topbar-size)",
1147
+ md: "h-(--dx-toolbar-size)",
1148
+ sm: "h-(--dx-statusbar-size)"
1149
+ };
1150
+ var panelRoot = (_, ...etc) => mx(
1151
+ // prettier-ignore
1152
+ "dx-container grid grid-cols-[100%] overflow-hidden",
1153
+ // Add uncategorized children to content slot.
1154
+ "[&>*:not([data-slot])]:[grid-area:content]",
1155
+ ...etc
1156
+ );
1157
+ var panelToolbar = ({ size = "md" }, ...etc) => mx("[grid-area:toolbar]", "shrink-0", sizes[size], ...etc);
1158
+ var panelContent = (_, ...etc) => mx("[grid-area:content] min-h-0", ...etc);
1159
+ var panelStatusbar = ({ size = "md" }, ...etc) => mx("[grid-area:statusbar]", "shrink-0", sizes[size], ...etc);
1160
+ var panelTheme = {
1161
+ root: panelRoot,
1162
+ toolbar: panelToolbar,
1163
+ content: panelContent,
1164
+ statusbar: panelStatusbar
3220
1165
  };
3221
1166
 
3222
- // src/styles/theme.ts
3223
- import { get } from "@dxos/util";
1167
+ // src/theme/theme.ts
1168
+ import { getDeep } from "@dxos/util";
3224
1169
  var defaultTheme = {
3225
1170
  themeName: () => "default",
3226
1171
  //
3227
1172
  // Primitives
3228
1173
  //
3229
- container: containerTheme,
1174
+ column: columnTheme,
1175
+ panel: panelTheme,
3230
1176
  //
3231
1177
  // Components
3232
1178
  //
3233
- anchoredOverflow: anchoredOverflowTheme,
3234
1179
  avatar: avatarTheme,
3235
1180
  breadcrumb: breadcrumbTheme,
3236
1181
  button: buttonTheme,
1182
+ card: cardTheme,
3237
1183
  dialog: dialogTheme,
1184
+ focus: focusTheme,
3238
1185
  icon: iconTheme,
3239
1186
  iconButton: iconButtonTheme,
3240
1187
  input: inputTheme,
@@ -3248,6 +1195,7 @@ var defaultTheme = {
3248
1195
  select: selectTheme,
3249
1196
  separator: separatorTheme,
3250
1197
  skeleton: skeletonTheme,
1198
+ splitter: splitterTheme,
3251
1199
  status: statusTheme,
3252
1200
  tag: tagTheme,
3253
1201
  toast: toastTheme,
@@ -3255,31 +1203,14 @@ var defaultTheme = {
3255
1203
  tooltip: tooltipTheme,
3256
1204
  treegrid: treegridTheme
3257
1205
  };
3258
- var missing = /* @__PURE__ */ new Set();
3259
1206
  var bindTheme = (theme) => {
3260
- return (path, defaultClassName, styleProps, ...etc) => {
3261
- const result = get(theme, path);
3262
- const className = typeof result === "function" && result(styleProps ?? {}, ...etc);
3263
- if (!className) {
3264
- if (!missing.has(path)) {
3265
- missing.add(path);
3266
- }
3267
- }
3268
- return className || defaultClassName;
1207
+ return (path, styleProps, ...etc) => {
1208
+ const result = getDeep(theme, path.split("."));
1209
+ return typeof result === "function" ? result(styleProps ?? {}, ...etc) : void 0;
3269
1210
  };
3270
1211
  };
3271
1212
  var defaultTx = bindTheme(defaultTheme);
3272
-
3273
- // src/index.ts
3274
- var { theme: tokens } = tailwindConfig({});
3275
- var osTranslations = "dxos.org/i18n/os";
3276
1213
  export {
3277
- accentSurface,
3278
- activeSurface,
3279
- anchoredOverflowAnchor,
3280
- anchoredOverflowRoot,
3281
- anchoredOverflowTheme,
3282
- attentionSurface,
3283
1214
  avatarDescription,
3284
1215
  avatarFallbackText,
3285
1216
  avatarFrame,
@@ -3291,40 +1222,31 @@ export {
3291
1222
  avatarRoot,
3292
1223
  avatarStatusIcon,
3293
1224
  avatarTheme,
3294
- baseSurface,
3295
1225
  bindTheme,
3296
- blockSeparator,
3297
1226
  bottombarBlockPaddingEnd,
3298
- bounceLayout,
3299
1227
  breadcrumbCurrent,
3300
1228
  breadcrumbList,
3301
1229
  breadcrumbListItem,
3302
1230
  breadcrumbRoot,
3303
1231
  breadcrumbSeparator,
3304
1232
  breadcrumbTheme,
3305
- buttonGroup,
3306
- buttonRoot,
3307
1233
  buttonTheme,
3308
1234
  cardDefaultInlineSize,
1235
+ cardMaxBlockSize,
3309
1236
  cardMaxInlineSize,
1237
+ cardMinBlockSize,
3310
1238
  cardMinInlineSize,
3311
- chromeText,
3312
- coarseBlockSize,
3313
- coarseButtonDimensions,
3314
- coarseButtonPadding,
3315
- coarseDimensions,
3316
- coarseTextPadding,
3317
- computeSize,
3318
- containerTheme,
3319
- contentShadow,
1239
+ cardTheme,
1240
+ columnTheme,
1241
+ composable,
1242
+ composableProps,
3320
1243
  dataDisabled,
3321
1244
  defaultButtonColors,
3322
1245
  defaultTheme,
3323
1246
  defaultTx,
3324
1247
  densityBlockSize,
1248
+ densityDimensions,
3325
1249
  descriptionMessage,
3326
- descriptionText,
3327
- descriptionTextPrimary,
3328
1250
  dialogActionBar,
3329
1251
  dialogBody,
3330
1252
  dialogContent,
@@ -3333,65 +1255,31 @@ export {
3333
1255
  dialogOverlay,
3334
1256
  dialogTheme,
3335
1257
  dialogTitle,
3336
- dropRing,
3337
- dropRingInner,
3338
- errorInputValence,
3339
- errorMessageColors,
3340
- errorText,
3341
- fineBlockSize,
3342
- fineButtonDimensions,
3343
- fineButtonPadding,
3344
- fineDimensions,
3345
- fineTextPadding,
3346
- fixedInsetFlexLayout,
3347
- focusRing,
1258
+ focusTheme,
3348
1259
  getHashHue,
3349
1260
  getHashStyles,
1261
+ getHeight,
3350
1262
  getSize,
3351
- getSizeHeight,
3352
- getSizeWidth,
3353
1263
  getStyles,
1264
+ getWidth,
3354
1265
  ghostButtonColors,
3355
1266
  ghostFocusWithin,
3356
- ghostHighlighted,
3357
1267
  ghostHover,
3358
- ghostSelected,
3359
- ghostSelectedContainerMd,
3360
- ghostSelectedCurrent,
3361
- ghostSelectedTrackingInterFromNormal,
3362
- group,
3363
- groupBorder,
3364
1268
  groupHoverControlItemWithTransition,
3365
- hoverColors,
3366
1269
  hoverableControlItem,
3367
- hoverableControlItemTransition,
3368
1270
  hoverableControls,
3369
- hoverableFocusedControls,
3370
1271
  hoverableFocusedKeyboardControls,
3371
1272
  hoverableFocusedWithinControls,
3372
1273
  hoverableOpenControlItem,
1274
+ hueShades,
3373
1275
  hues,
3374
1276
  iconButtonRoot,
3375
1277
  iconButtonTheme,
3376
1278
  iconRoot,
1279
+ iconSize,
3377
1280
  iconTheme,
3378
- infoInputValence,
3379
- infoMessageColors,
3380
- infoText,
3381
- inlineSeparator,
3382
- inputCheckbox,
3383
- inputCheckboxIndicator,
3384
- inputDescription,
3385
- inputDescriptionAndValidation,
3386
- inputInput,
3387
- inputLabel,
3388
- inputSwitch,
3389
- inputSwitchThumb,
3390
1281
  inputTextLabel,
3391
1282
  inputTheme,
3392
- inputValence,
3393
- inputValidation,
3394
- inputWithSegmentsInput,
3395
1283
  linkRoot,
3396
1284
  linkTheme,
3397
1285
  listItem,
@@ -3417,26 +1305,26 @@ export {
3417
1305
  menuTheme,
3418
1306
  menuViewport,
3419
1307
  messageContent,
1308
+ messageHeader,
3420
1309
  messageIcon,
3421
1310
  messageRoot,
3422
1311
  messageTheme,
3423
1312
  messageTitle,
3424
1313
  messageValence,
3425
- modalSurface,
3426
1314
  mx,
3427
- neutralInputValence,
3428
- neutralMessageColors,
3429
1315
  osTranslations,
3430
- placeholderText,
1316
+ palette,
1317
+ panelTheme,
3431
1318
  popoverArrow,
3432
1319
  popoverContent,
3433
1320
  popoverTheme,
3434
1321
  popoverViewport,
3435
- popperMotion,
3436
1322
  primaryButtonColors,
1323
+ roles,
3437
1324
  scrollAreaRoot,
3438
1325
  scrollAreaTheme,
3439
1326
  scrollAreaViewport,
1327
+ scrollbar,
3440
1328
  selectArrow,
3441
1329
  selectContent,
3442
1330
  selectItem,
@@ -3445,40 +1333,26 @@ export {
3445
1333
  selectSeparator,
3446
1334
  selectTheme,
3447
1335
  selectViewport,
3448
- separatorBorderColor,
3449
1336
  separatorRoot,
3450
1337
  separatorTheme,
3451
- shimmer,
3452
- sidebarBorder,
3453
- sidebarSurface,
3454
- sizeHeightMap,
1338
+ sizeToRem,
3455
1339
  sizeValue,
3456
- sizeWidthMap,
3457
1340
  skeletonRoot,
3458
1341
  skeletonTheme,
1342
+ slottable,
1343
+ snapSize,
1344
+ splitterTheme,
3459
1345
  staticDefaultButtonColors,
3460
1346
  staticDisabled,
3461
- staticFocusRing,
3462
- staticGhostSelected,
3463
- staticGhostSelectedCurrent,
3464
- staticHoverableControls,
3465
- staticPlaceholderText,
3466
1347
  statusBar,
3467
1348
  statusRoot,
3468
1349
  statusTheme,
3469
- strongShimmer,
3470
- styles,
3471
- subduedFocus,
3472
- subduedSeparatorBorderColor,
3473
1350
  subtleHover,
3474
- successInputValence,
3475
- successMessageColors,
3476
- successText,
3477
1351
  surfaceShadow,
3478
1352
  surfaceZIndex,
3479
1353
  tagRoot,
3480
1354
  tagTheme,
3481
- textBlockWidth,
1355
+ textValence,
3482
1356
  toastActions,
3483
1357
  toastBody,
3484
1358
  toastDescription,
@@ -3486,10 +1360,9 @@ export {
3486
1360
  toastTheme,
3487
1361
  toastTitle,
3488
1362
  toastViewport,
3489
- tokens,
3490
- toolbarInner,
3491
1363
  toolbarLayout,
3492
1364
  toolbarRoot,
1365
+ toolbarText,
3493
1366
  toolbarTheme,
3494
1367
  tooltipArrow,
3495
1368
  tooltipContent,
@@ -3499,10 +1372,6 @@ export {
3499
1372
  treegridRoot,
3500
1373
  treegridRow,
3501
1374
  treegridTheme,
3502
- userDefaultTokenSet,
3503
- valenceColorText,
3504
- warningInputValence,
3505
- warningMessageColors,
3506
- warningText
1375
+ withColumn
3507
1376
  };
3508
1377
  //# sourceMappingURL=index.mjs.map