basalt-ui 1.40.3 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (923) hide show
  1. package/AGENTS.md +50 -45
  2. package/CHANGELOG.md +543 -513
  3. package/MIGRATING.md +969 -37
  4. package/README.md +172 -367
  5. package/agent/rules/basalt-batteries.md +19 -74
  6. package/agent/rules/basalt-charts.md +21 -95
  7. package/agent/rules/basalt-controls.md +23 -131
  8. package/agent/rules/basalt-mantine.md +26 -99
  9. package/agent/rules/basalt-state.md +21 -103
  10. package/agent/rules/basalt-tokens.md +33 -114
  11. package/agent/skills/basalt-app/SKILL.md +229 -72
  12. package/agent/skills/basalt-charts/SKILL.md +23 -57
  13. package/agent/skills/basalt-design/SKILL.md +12 -70
  14. package/agent/templates/AGENTS-block.md.tpl +30 -0
  15. package/agent/templates/DESIGN.md.tpl +2 -2
  16. package/agent/templates/__root.tpl +9 -16
  17. package/agent/templates/main.tpl +21 -0
  18. package/agent/templates/nav.tpl +18 -0
  19. package/configs/check.yml +1 -1
  20. package/configs/oxlint-basalt.json +4 -10
  21. package/configs/oxlint-plugin.js +468 -847
  22. package/configs/oxlint-plugin.test.ts +662 -710
  23. package/configs/oxlint.json +10 -2
  24. package/dist/agent/ai-sdk-transport.d.ts +19 -7
  25. package/dist/agent/ai-sdk-transport.d.ts.map +1 -1
  26. package/dist/agent/ai-sdk-transport.js +10 -7
  27. package/dist/{agent-chat → agent/chat}/composer.d.ts +16 -16
  28. package/dist/agent/chat/composer.d.ts.map +1 -0
  29. package/dist/{agent-chat → agent/chat}/composer.js +10 -9
  30. package/dist/{agent-chat → agent/chat}/message-affordances.d.ts +7 -6
  31. package/dist/agent/chat/message-affordances.d.ts.map +1 -0
  32. package/dist/agent/chat/relative-time.d.ts.map +1 -0
  33. package/dist/{agent-chat → agent/chat}/thread-feed-row.d.ts +18 -16
  34. package/dist/agent/chat/thread-feed-row.d.ts.map +1 -0
  35. package/dist/{agent-chat → agent/chat}/thread-feed-row.js +12 -11
  36. package/dist/{agent-chat → agent/chat}/thread-feed.d.ts +8 -8
  37. package/dist/agent/chat/thread-feed.d.ts.map +1 -0
  38. package/dist/{agent-chat → agent/chat}/thread-feed.js +12 -10
  39. package/dist/{agent-chat → agent/chat}/thread-message.d.ts +12 -9
  40. package/dist/agent/chat/thread-message.d.ts.map +1 -0
  41. package/dist/{agent-chat → agent/chat}/thread-message.js +15 -13
  42. package/dist/{agent-chat → agent/chat}/thread-outcome-card.d.ts +2 -2
  43. package/dist/agent/chat/thread-outcome-card.d.ts.map +1 -0
  44. package/dist/{agent-chat → agent/chat}/thread-outcome-card.js +3 -3
  45. package/dist/{agent-chat → agent/chat}/tool-chip.d.ts +5 -5
  46. package/dist/agent/chat/tool-chip.d.ts.map +1 -0
  47. package/dist/{agent-chat → agent/chat}/tool-chip.js +4 -4
  48. package/dist/agent/chat/use-keyboard-inset.d.ts.map +1 -0
  49. package/dist/{agent-chat → agent/chat}/use-keyboard-inset.js +1 -1
  50. package/dist/{agent-chat → agent/chat}/virtualize.d.ts +7 -7
  51. package/dist/agent/chat/virtualize.d.ts.map +1 -0
  52. package/dist/agent/error.d.ts +31 -0
  53. package/dist/agent/error.d.ts.map +1 -0
  54. package/dist/agent/error.js +18 -0
  55. package/dist/agent/foreign.d.ts +3 -2
  56. package/dist/agent/foreign.d.ts.map +1 -1
  57. package/dist/agent/history.d.ts +2 -36
  58. package/dist/agent/history.d.ts.map +1 -1
  59. package/dist/agent/history.js +0 -32
  60. package/dist/agent/id.d.ts +4 -5
  61. package/dist/agent/id.d.ts.map +1 -1
  62. package/dist/agent/index.d.ts +19 -52
  63. package/dist/agent/index.d.ts.map +1 -1
  64. package/dist/agent/index.js +10 -32
  65. package/dist/agent/outcome.d.ts +3 -14
  66. package/dist/agent/outcome.d.ts.map +1 -1
  67. package/dist/agent/outcome.js +0 -30
  68. package/dist/agent/part-list.d.ts +3 -3
  69. package/dist/agent/part-list.d.ts.map +1 -1
  70. package/dist/agent/parts.d.ts +23 -24
  71. package/dist/agent/parts.d.ts.map +1 -1
  72. package/dist/agent/run-committer.d.ts +23 -0
  73. package/dist/agent/run-committer.d.ts.map +1 -0
  74. package/dist/agent/run-committer.js +41 -0
  75. package/dist/agent/run-records.d.ts +77 -0
  76. package/dist/agent/run-records.d.ts.map +1 -0
  77. package/dist/agent/run-records.js +69 -0
  78. package/dist/agent/thread.d.ts +23 -47
  79. package/dist/agent/thread.d.ts.map +1 -1
  80. package/dist/agent/thread.js +3 -134
  81. package/dist/agent/transport.d.ts +6 -69
  82. package/dist/agent/transport.d.ts.map +1 -1
  83. package/dist/agent/transport.js +0 -18
  84. package/dist/agent/use-agent-thread-runs.d.ts +63 -26
  85. package/dist/agent/use-agent-thread-runs.d.ts.map +1 -1
  86. package/dist/agent/use-agent-thread-runs.js +202 -66
  87. package/dist/charts/BandStrip.d.ts +46 -0
  88. package/dist/charts/BandStrip.d.ts.map +1 -0
  89. package/dist/charts/BandStrip.js +151 -0
  90. package/dist/charts/Bars.d.ts +19 -0
  91. package/dist/charts/Bars.d.ts.map +1 -0
  92. package/dist/charts/Bars.js +77 -0
  93. package/dist/charts/CartesianChart.d.ts +57 -0
  94. package/dist/charts/CartesianChart.d.ts.map +1 -0
  95. package/dist/charts/CartesianChart.js +121 -0
  96. package/dist/charts/ChartCard.d.ts +34 -0
  97. package/dist/charts/ChartCard.d.ts.map +1 -0
  98. package/dist/charts/ChartCard.js +115 -0
  99. package/dist/charts/Donut.d.ts +25 -0
  100. package/dist/charts/Donut.d.ts.map +1 -0
  101. package/dist/charts/Donut.js +191 -0
  102. package/dist/charts/DualPanel.d.ts +47 -0
  103. package/dist/charts/DualPanel.d.ts.map +1 -0
  104. package/dist/charts/DualPanel.js +214 -0
  105. package/dist/charts/Heatmap.d.ts +41 -0
  106. package/dist/charts/Heatmap.d.ts.map +1 -0
  107. package/dist/charts/Heatmap.js +216 -0
  108. package/dist/charts/Lines.d.ts +11 -0
  109. package/dist/charts/Lines.d.ts.map +1 -0
  110. package/dist/charts/Lines.js +114 -0
  111. package/dist/charts/MirroredBars.d.ts +44 -0
  112. package/dist/charts/MirroredBars.d.ts.map +1 -0
  113. package/dist/charts/MirroredBars.js +190 -0
  114. package/dist/charts/Sparkline.d.ts +22 -0
  115. package/dist/charts/Sparkline.d.ts.map +1 -0
  116. package/dist/charts/Sparkline.js +129 -0
  117. package/dist/charts/StackedArea.d.ts +15 -0
  118. package/dist/charts/StackedArea.d.ts.map +1 -0
  119. package/dist/charts/StackedArea.js +46 -0
  120. package/dist/charts/box.d.ts +38 -0
  121. package/dist/charts/box.d.ts.map +1 -0
  122. package/dist/charts/box.js +72 -0
  123. package/dist/charts/card-context.d.ts +3 -0
  124. package/dist/charts/card-context.d.ts.map +1 -0
  125. package/dist/charts/card-context.js +7 -0
  126. package/dist/charts/chart-box.module.css +64 -0
  127. package/{src/content/article-card.module.css.d.ts → dist/charts/chart-box.module.css.d.ts} +5 -9
  128. package/dist/charts/chart-card.module.css +25 -0
  129. package/dist/{dashboard/widget-grid.module.css.d.ts → charts/chart-card.module.css.d.ts} +1 -3
  130. package/dist/charts/chart-legend.module.css +38 -0
  131. package/{src/dashboard/widget-grid.module.css.d.ts → dist/charts/chart-legend.module.css.d.ts} +3 -3
  132. package/dist/charts/compile.d.ts +62 -0
  133. package/dist/charts/compile.d.ts.map +1 -0
  134. package/dist/charts/compile.js +386 -0
  135. package/dist/charts/cursor.d.ts +50 -0
  136. package/dist/charts/cursor.d.ts.map +1 -0
  137. package/dist/charts/cursor.js +157 -0
  138. package/dist/charts/curves.d.ts +12 -0
  139. package/dist/charts/curves.d.ts.map +1 -0
  140. package/dist/charts/curves.js +86 -0
  141. package/dist/charts/donut.module.css +54 -0
  142. package/dist/{content/article-card.module.css.d.ts → charts/donut.module.css.d.ts} +2 -9
  143. package/dist/charts/host.d.ts +17 -0
  144. package/dist/charts/host.d.ts.map +1 -0
  145. package/dist/charts/host.js +35 -0
  146. package/dist/charts/index.d.ts +18 -53
  147. package/dist/charts/index.d.ts.map +1 -1
  148. package/dist/charts/index.js +17 -189
  149. package/dist/charts/legend.d.ts +23 -0
  150. package/dist/charts/legend.d.ts.map +1 -0
  151. package/dist/charts/legend.js +160 -0
  152. package/dist/charts/marks.d.ts +25 -0
  153. package/dist/charts/marks.d.ts.map +1 -0
  154. package/dist/charts/marks.js +128 -0
  155. package/dist/charts/panel.d.ts +56 -0
  156. package/dist/charts/panel.d.ts.map +1 -0
  157. package/dist/charts/panel.js +123 -0
  158. package/dist/charts/scales.d.ts +44 -0
  159. package/dist/charts/scales.d.ts.map +1 -0
  160. package/dist/charts/scales.js +163 -0
  161. package/dist/charts/sizing.d.ts +12 -0
  162. package/dist/charts/sizing.d.ts.map +1 -0
  163. package/dist/charts/sizing.js +33 -0
  164. package/dist/charts/state.d.ts +17 -0
  165. package/dist/charts/state.d.ts.map +1 -0
  166. package/dist/charts/state.js +53 -0
  167. package/dist/charts/theme.d.ts +38 -19
  168. package/dist/charts/theme.d.ts.map +1 -1
  169. package/dist/charts/theme.js +48 -26
  170. package/dist/charts/types.d.ts +227 -0
  171. package/dist/charts/types.d.ts.map +1 -0
  172. package/dist/charts/types.js +4 -0
  173. package/dist/cli/audit-allows.d.ts +4 -17
  174. package/dist/cli/audit-allows.d.ts.map +1 -1
  175. package/dist/cli/config.d.ts +14 -43
  176. package/dist/cli/config.d.ts.map +1 -1
  177. package/dist/cli/doctor-upgrade.d.ts +31 -0
  178. package/dist/cli/doctor-upgrade.d.ts.map +1 -0
  179. package/dist/cli/doctor-upgrade.js +269 -0
  180. package/dist/cli/doctor.d.ts +13 -26
  181. package/dist/cli/doctor.d.ts.map +1 -1
  182. package/dist/cli/doctor.js +79 -8
  183. package/dist/cli/help.d.ts.map +1 -1
  184. package/dist/cli/help.js +2 -4
  185. package/dist/cli/index.d.ts +68 -135
  186. package/dist/cli/index.d.ts.map +1 -1
  187. package/dist/cli/index.js +89 -76
  188. package/dist/cli/init.d.ts.map +1 -1
  189. package/dist/cli/init.js +43 -27
  190. package/dist/cli/sync.d.ts +5 -21
  191. package/dist/cli/sync.d.ts.map +1 -1
  192. package/dist/cli/sync.js +4 -6
  193. package/dist/cli/tokens-css.d.ts +7 -28
  194. package/dist/cli/tokens-css.d.ts.map +1 -1
  195. package/dist/commands/ShortcutsHelp.d.ts.map +1 -1
  196. package/dist/commands/ShortcutsHelp.js +4 -5
  197. package/dist/commands/define-commands.d.ts +15 -31
  198. package/dist/commands/define-commands.d.ts.map +1 -1
  199. package/dist/commands/define-commands.js +1 -11
  200. package/dist/commands/define-overlays.d.ts +5 -19
  201. package/dist/commands/define-overlays.d.ts.map +1 -1
  202. package/dist/commands/define-overlays.js +3 -11
  203. package/dist/commands/index.d.ts +10 -40
  204. package/dist/commands/index.d.ts.map +1 -1
  205. package/dist/commands/index.js +9 -46
  206. package/dist/{notifications → commands/notifications}/bell.d.ts +1 -1
  207. package/dist/commands/notifications/bell.d.ts.map +1 -0
  208. package/dist/{notifications → commands/notifications}/center.d.ts +2 -2
  209. package/dist/commands/notifications/center.d.ts.map +1 -0
  210. package/dist/{notifications → commands/notifications}/center.js +2 -2
  211. package/dist/{notifications → commands/notifications}/define-notifications.d.ts +3 -3
  212. package/dist/commands/notifications/define-notifications.d.ts.map +1 -0
  213. package/dist/commands/notifications/notify.d.ts +44 -0
  214. package/dist/commands/notifications/notify.d.ts.map +1 -0
  215. package/dist/commands/notifications/notify.js +79 -0
  216. package/dist/{notifications → commands/notifications}/store.d.ts +2 -0
  217. package/dist/commands/notifications/store.d.ts.map +1 -0
  218. package/dist/{notifications → commands/notifications}/store.js +4 -0
  219. package/dist/commands/projectors.d.ts +1 -131
  220. package/dist/commands/projectors.d.ts.map +1 -1
  221. package/dist/commands/projectors.js +2 -73
  222. package/dist/commands/shell-bridge.d.ts +3 -3
  223. package/dist/commands/shortcut-format.d.ts +5 -4
  224. package/dist/commands/shortcut-format.d.ts.map +1 -1
  225. package/dist/common/errors.d.ts +3 -3
  226. package/dist/common/use-measured-widths.d.ts.map +1 -1
  227. package/dist/common/use-measured-widths.js +5 -3
  228. package/dist/common/validate.d.ts +2 -2
  229. package/dist/content/article-layout.d.ts.map +1 -1
  230. package/dist/content/article-layout.js +3 -3
  231. package/dist/content/article-model.d.ts +1 -46
  232. package/dist/content/article-model.d.ts.map +1 -1
  233. package/dist/content/article-model.js +1 -29
  234. package/dist/content/copy-action.d.ts +1 -1
  235. package/dist/content/glyphs.d.ts +1 -1
  236. package/dist/content/index.d.ts +11 -41
  237. package/dist/content/index.d.ts.map +1 -1
  238. package/dist/content/index.js +3 -35
  239. package/dist/content/markdown.d.ts +1 -1
  240. package/dist/content/markdown.d.ts.map +1 -1
  241. package/dist/content/markdown.js +1 -1
  242. package/dist/content/mermaid.d.ts.map +1 -1
  243. package/dist/content/mermaid.js +7 -7
  244. package/dist/content/slug.d.ts +1 -8
  245. package/dist/content/slug.d.ts.map +1 -1
  246. package/dist/content/slug.js +1 -8
  247. package/dist/content/url-hardening.d.ts +2 -2
  248. package/dist/content/url-hardening.d.ts.map +1 -1
  249. package/dist/content/url-hardening.js +2 -0
  250. package/dist/controls/actions.d.ts +16 -1
  251. package/dist/controls/actions.d.ts.map +1 -1
  252. package/dist/controls/enum-filter.d.ts +1 -1
  253. package/dist/controls/enum-filter.d.ts.map +1 -1
  254. package/dist/controls/filter-context.d.ts.map +1 -1
  255. package/dist/controls/filter-context.js +3 -1
  256. package/dist/controls/filter-set.js +4 -6
  257. package/dist/controls/form-layout.d.ts +1 -1
  258. package/dist/controls/form-layout.d.ts.map +1 -1
  259. package/dist/controls/form-layout.js +1 -1
  260. package/dist/controls/glyphs.d.ts +0 -2
  261. package/dist/controls/glyphs.d.ts.map +1 -1
  262. package/dist/controls/glyphs.js +0 -7
  263. package/dist/controls/index.d.ts +12 -17
  264. package/dist/controls/index.d.ts.map +1 -1
  265. package/dist/controls/index.js +5 -39
  266. package/dist/controls/multi-select-filter.d.ts +4 -3
  267. package/dist/controls/multi-select-filter.d.ts.map +1 -1
  268. package/dist/controls/number-filter.d.ts +4 -3
  269. package/dist/controls/number-filter.d.ts.map +1 -1
  270. package/dist/controls/number-filter.js +3 -1
  271. package/dist/controls/range-filter.d.ts +4 -3
  272. package/dist/controls/range-filter.d.ts.map +1 -1
  273. package/dist/controls/search-filter.d.ts +4 -3
  274. package/dist/controls/search-filter.d.ts.map +1 -1
  275. package/dist/controls/search-filter.js +19 -14
  276. package/dist/controls/select-filter.d.ts +4 -3
  277. package/dist/controls/select-filter.d.ts.map +1 -1
  278. package/dist/controls/sync-button.d.ts.map +1 -1
  279. package/dist/controls/sync-button.js +12 -15
  280. package/dist/controls/toggle-filter.d.ts +4 -3
  281. package/dist/controls/toggle-filter.d.ts.map +1 -1
  282. package/dist/controls/uncontrolled.d.ts +12 -0
  283. package/dist/controls/uncontrolled.d.ts.map +1 -0
  284. package/dist/controls/view-tabs.d.ts +2 -2
  285. package/dist/controls/view-tabs.d.ts.map +1 -1
  286. package/dist/controls-dates/index.d.ts +0 -1
  287. package/dist/controls-dates/index.d.ts.map +1 -1
  288. package/dist/dashboard/index.d.ts +7 -9
  289. package/dist/dashboard/index.d.ts.map +1 -1
  290. package/dist/dashboard/index.js +3 -23
  291. package/dist/dashboard/section.d.ts +4 -6
  292. package/dist/dashboard/section.d.ts.map +1 -1
  293. package/dist/dashboard/section.js +4 -10
  294. package/dist/dashboard/stat-card.d.ts +4 -4
  295. package/dist/dashboard/stat-card.d.ts.map +1 -1
  296. package/dist/dashboard/stat-card.js +3 -3
  297. package/dist/dashboard/widget-header.module.css +9 -7
  298. package/dist/dev-dock.d.ts.map +1 -1
  299. package/dist/dev-dock.js +6 -1
  300. package/dist/format/date.d.ts +0 -34
  301. package/dist/format/date.d.ts.map +1 -1
  302. package/dist/format/date.js +0 -54
  303. package/dist/format/index.d.ts +7 -22
  304. package/dist/format/index.d.ts.map +1 -1
  305. package/dist/format/index.js +2 -43
  306. package/dist/format/number.d.ts +3 -14
  307. package/dist/format/number.d.ts.map +1 -1
  308. package/dist/format/number.js +0 -13
  309. package/dist/format/shared.d.ts +2 -3
  310. package/dist/format/shared.d.ts.map +1 -1
  311. package/dist/forms/index.d.ts +0 -11
  312. package/dist/forms/index.d.ts.map +1 -1
  313. package/dist/forms/index.js +1 -14
  314. package/dist/guard/index.d.ts +6 -21
  315. package/dist/guard/index.d.ts.map +1 -1
  316. package/dist/guard/index.js +27 -115
  317. package/dist/guard/types.d.ts +7 -18
  318. package/dist/guard/types.d.ts.map +1 -1
  319. package/dist/index.d.ts +16 -48
  320. package/dist/index.d.ts.map +1 -1
  321. package/dist/index.js +21 -117
  322. package/dist/provider/create-router.d.ts +44 -0
  323. package/dist/provider/create-router.d.ts.map +1 -0
  324. package/dist/provider/create-router.js +62 -0
  325. package/dist/provider/hotkeys.d.ts +8 -0
  326. package/dist/provider/hotkeys.d.ts.map +1 -0
  327. package/dist/provider/hotkeys.js +50 -0
  328. package/dist/provider/index.d.ts +33 -110
  329. package/dist/provider/index.d.ts.map +1 -1
  330. package/dist/provider/index.js +182 -82
  331. package/dist/provider/lab-theme.d.ts.map +1 -1
  332. package/dist/provider/route-transition.d.ts +76 -0
  333. package/dist/provider/route-transition.d.ts.map +1 -0
  334. package/dist/provider/route-transition.js +98 -0
  335. package/dist/provider/spotlight-actions.d.ts +10 -0
  336. package/dist/provider/spotlight-actions.d.ts.map +1 -0
  337. package/dist/provider/spotlight-actions.js +55 -0
  338. package/dist/provider/test-router.d.ts +6 -0
  339. package/dist/provider/test-router.d.ts.map +1 -0
  340. package/dist/provider/test-router.js +18 -0
  341. package/dist/query-client.d.ts +4 -20
  342. package/dist/query-client.d.ts.map +1 -1
  343. package/dist/query-client.js +2 -2
  344. package/dist/router-tanstack/index.d.ts +18 -64
  345. package/dist/router-tanstack/index.d.ts.map +1 -1
  346. package/dist/router-tanstack/index.js +2 -16
  347. package/dist/router-tanstack/nav.d.ts +12 -1
  348. package/dist/router-tanstack/nav.d.ts.map +1 -1
  349. package/dist/router-tanstack/nav.js +8 -1
  350. package/dist/router-tanstack/search-store.d.ts +1 -1
  351. package/dist/router-tanstack/search-store.d.ts.map +1 -1
  352. package/dist/router-tanstack/use-nav.d.ts +8 -9
  353. package/dist/router-tanstack/use-nav.d.ts.map +1 -1
  354. package/dist/router-tanstack/use-nav.js +20 -1
  355. package/dist/shell/app-mobile-nav.d.ts.map +1 -1
  356. package/dist/shell/app-sidebar.js +1 -1
  357. package/dist/shell/index.d.ts +31 -10
  358. package/dist/shell/index.d.ts.map +1 -1
  359. package/dist/shell/index.js +14 -3
  360. package/dist/shell/page-aside.d.ts +2 -2
  361. package/dist/shell/page-aside.d.ts.map +1 -1
  362. package/dist/shell/page-aside.js +31 -12
  363. package/dist/shell/page-bar.d.ts +2 -2
  364. package/dist/shell/page-bar.d.ts.map +1 -1
  365. package/dist/shell/page-bar.js +1 -1
  366. package/dist/state.d.ts +10 -12
  367. package/dist/state.d.ts.map +1 -1
  368. package/dist/state.js +4 -6
  369. package/dist/styles.css +107 -7
  370. package/dist/surfaces.d.ts +28 -103
  371. package/dist/surfaces.d.ts.map +1 -1
  372. package/dist/surfaces.js +54 -143
  373. package/dist/{data → table}/data-table-state.d.ts +1 -1
  374. package/dist/table/data-table-state.d.ts.map +1 -0
  375. package/dist/{data → table}/data-table-state.js +4 -3
  376. package/dist/{data → table}/data-table.d.ts +28 -49
  377. package/dist/table/data-table.d.ts.map +1 -0
  378. package/dist/{data → table}/data-table.js +74 -60
  379. package/dist/table/index.d.ts +18 -0
  380. package/dist/table/index.d.ts.map +1 -0
  381. package/dist/{data/table.js → table/index.js} +1 -1
  382. package/dist/table/query-branch.d.ts.map +1 -0
  383. package/dist/table/table-features.d.ts +69 -0
  384. package/dist/table/table-features.d.ts.map +1 -0
  385. package/dist/table/table-features.js +49 -0
  386. package/dist/telemetry.d.ts +77 -0
  387. package/dist/telemetry.d.ts.map +1 -0
  388. package/dist/telemetry.js +33 -0
  389. package/dist/theme/index.d.ts +10 -21
  390. package/dist/theme/index.d.ts.map +1 -1
  391. package/dist/theme/index.js +3 -14
  392. package/dist/theme/theme-toggle.d.ts.map +1 -1
  393. package/dist/theme/theme-toggle.js +7 -33
  394. package/dist/theme/theme-toggle.module.css +30 -0
  395. package/dist/theme/theme-toggle.module.css.d.ts +10 -0
  396. package/dist/theme-lab/derive-controls.d.ts.map +1 -1
  397. package/dist/theme-lab/derive-controls.js +5 -3
  398. package/dist/theme-lab/derive-state.d.ts.map +1 -1
  399. package/dist/theme-lab/derive-state.js +2 -1
  400. package/dist/tokens/core.d.ts +360 -0
  401. package/dist/tokens/core.d.ts.map +1 -0
  402. package/dist/tokens/core.js +708 -0
  403. package/dist/tokens/derive.d.ts +1 -1
  404. package/dist/tokens/derive.d.ts.map +1 -1
  405. package/dist/tokens/index.d.ts +5 -373
  406. package/dist/tokens/index.d.ts.map +1 -1
  407. package/dist/tokens/index.js +8 -700
  408. package/dist/tokens/palette.d.ts +2 -6
  409. package/dist/tokens/palette.d.ts.map +1 -1
  410. package/dist/tokens/palette.js +1 -4
  411. package/dist/vite.d.ts +4 -3
  412. package/dist/vite.d.ts.map +1 -1
  413. package/llms.txt +43 -85
  414. package/package.json +77 -170
  415. package/src/agent/ai-sdk-transport.ts +57 -37
  416. package/src/{agent-chat → agent/chat}/composer.tsx +29 -30
  417. package/src/{agent-chat → agent/chat}/message-affordances.ts +8 -5
  418. package/src/{agent-chat → agent/chat}/thread-feed-row.tsx +30 -35
  419. package/src/{agent-chat → agent/chat}/thread-feed.tsx +40 -35
  420. package/src/{agent-chat → agent/chat}/thread-message.tsx +37 -35
  421. package/src/{agent-chat → agent/chat}/thread-outcome-card.tsx +5 -5
  422. package/src/{agent-chat → agent/chat}/tool-chip.tsx +12 -12
  423. package/src/{agent-chat → agent/chat}/use-keyboard-inset.ts +1 -1
  424. package/src/{agent-chat → agent/chat}/virtualize.ts +5 -5
  425. package/src/agent/error.ts +43 -0
  426. package/src/agent/foreign.ts +3 -2
  427. package/src/agent/history.ts +2 -107
  428. package/src/agent/id.ts +4 -5
  429. package/src/agent/index.ts +23 -112
  430. package/src/agent/outcome.ts +3 -56
  431. package/src/agent/part-list.tsx +3 -3
  432. package/src/agent/parts.ts +23 -22
  433. package/src/agent/run-committer.ts +64 -0
  434. package/src/agent/run-records.ts +147 -0
  435. package/src/agent/thread.ts +24 -231
  436. package/src/agent/transport.ts +6 -96
  437. package/src/agent/use-agent-thread-runs.ts +364 -199
  438. package/src/charts/BandStrip.tsx +276 -0
  439. package/src/charts/Bars.tsx +141 -0
  440. package/src/charts/CartesianChart.tsx +206 -0
  441. package/src/charts/ChartCard.tsx +178 -0
  442. package/src/charts/Donut.tsx +256 -0
  443. package/src/charts/DualPanel.tsx +326 -0
  444. package/src/charts/Heatmap.tsx +282 -0
  445. package/src/charts/Lines.tsx +151 -0
  446. package/src/charts/MirroredBars.tsx +303 -0
  447. package/src/charts/Sparkline.tsx +176 -0
  448. package/src/charts/StackedArea.tsx +80 -0
  449. package/src/charts/box.tsx +96 -0
  450. package/src/charts/card-context.ts +11 -0
  451. package/src/charts/chart-box.module.css +64 -0
  452. package/src/charts/chart-box.module.css.d.ts +12 -0
  453. package/src/charts/chart-card.module.css +25 -0
  454. package/src/charts/chart-card.module.css.d.ts +8 -0
  455. package/src/charts/chart-legend.module.css +38 -0
  456. package/src/charts/chart-legend.module.css.d.ts +10 -0
  457. package/src/charts/compile.ts +585 -0
  458. package/src/charts/cursor.ts +282 -0
  459. package/src/charts/curves.ts +111 -0
  460. package/src/charts/donut.module.css +54 -0
  461. package/src/charts/donut.module.css.d.ts +9 -0
  462. package/src/charts/host.tsx +60 -0
  463. package/src/charts/index.ts +41 -178
  464. package/src/charts/legend.tsx +204 -0
  465. package/src/charts/marks.ts +201 -0
  466. package/src/charts/panel.tsx +227 -0
  467. package/src/charts/scales.ts +237 -0
  468. package/src/charts/sizing.ts +47 -0
  469. package/src/charts/state.tsx +80 -0
  470. package/src/charts/theme.ts +65 -0
  471. package/src/charts/types.ts +242 -0
  472. package/src/cli/audit-allows.ts +8 -30
  473. package/src/cli/config.ts +14 -43
  474. package/src/cli/doctor-upgrade.ts +392 -0
  475. package/src/cli/doctor.ts +120 -68
  476. package/src/cli/help.ts +2 -4
  477. package/src/cli/index.ts +161 -276
  478. package/src/cli/init.ts +60 -37
  479. package/src/cli/sync.ts +13 -45
  480. package/src/cli/tokens-css.ts +7 -28
  481. package/src/commands/ShortcutsHelp.tsx +8 -9
  482. package/src/commands/define-commands.ts +16 -43
  483. package/src/commands/define-overlays.ts +12 -36
  484. package/src/commands/index.ts +11 -94
  485. package/src/{notifications → commands/notifications}/bell.tsx +2 -2
  486. package/src/{notifications → commands/notifications}/center.tsx +7 -5
  487. package/src/{notifications → commands/notifications}/define-notifications.ts +3 -3
  488. package/src/commands/notifications/notify.tsx +158 -0
  489. package/src/{notifications → commands/notifications}/store.ts +10 -2
  490. package/src/commands/projectors.ts +5 -225
  491. package/src/commands/shell-bridge.ts +5 -5
  492. package/src/commands/shortcut-format.ts +5 -4
  493. package/src/common/errors.ts +3 -3
  494. package/src/common/use-measured-widths.ts +6 -3
  495. package/src/common/validate.ts +2 -2
  496. package/src/content/article-layout.tsx +37 -38
  497. package/src/content/article-model.ts +1 -84
  498. package/src/content/copy-action.tsx +1 -1
  499. package/src/content/glyphs.tsx +1 -1
  500. package/src/content/index.ts +12 -83
  501. package/src/content/markdown.tsx +4 -3
  502. package/src/content/mermaid.tsx +9 -7
  503. package/src/content/slug.ts +1 -16
  504. package/src/content/url-hardening.ts +8 -2
  505. package/src/controls/actions.tsx +24 -1
  506. package/src/controls/enum-filter.tsx +1 -1
  507. package/src/controls/filter-context.tsx +3 -1
  508. package/src/controls/filter-set.tsx +5 -7
  509. package/src/controls/form-layout.tsx +2 -2
  510. package/src/controls/glyphs.tsx +0 -10
  511. package/src/controls/index.ts +13 -64
  512. package/src/controls/multi-select-filter.tsx +5 -4
  513. package/src/controls/number-filter.tsx +8 -4
  514. package/src/controls/range-filter.tsx +5 -4
  515. package/src/controls/search-filter.tsx +25 -19
  516. package/src/controls/select-filter.tsx +5 -4
  517. package/src/controls/sync-button.tsx +18 -20
  518. package/src/controls/toggle-filter.tsx +5 -4
  519. package/src/controls/uncontrolled.ts +12 -0
  520. package/src/controls/view-tabs.tsx +3 -3
  521. package/src/controls-dates/date-range-picker.tsx +1 -1
  522. package/src/controls-dates/index.ts +0 -1
  523. package/src/dashboard/index.ts +7 -48
  524. package/src/dashboard/section.tsx +11 -40
  525. package/src/dashboard/stat-card.tsx +14 -16
  526. package/src/dashboard/widget-header.module.css +9 -7
  527. package/src/dev-dock.tsx +14 -27
  528. package/src/format/date.ts +2 -92
  529. package/src/format/index.ts +7 -53
  530. package/src/format/number.ts +3 -26
  531. package/src/format/shared.ts +2 -3
  532. package/src/forms/index.ts +0 -23
  533. package/src/guard/index.ts +37 -192
  534. package/src/guard/types.ts +6 -19
  535. package/src/index.ts +30 -282
  536. package/src/provider/create-router.tsx +138 -0
  537. package/src/provider/hotkeys.ts +70 -0
  538. package/src/provider/index.tsx +260 -230
  539. package/src/provider/lab-theme.ts +3 -2
  540. package/src/provider/route-transition.ts +199 -0
  541. package/src/provider/spotlight-actions.tsx +69 -0
  542. package/src/provider/test-router.tsx +25 -0
  543. package/src/query-client.ts +4 -22
  544. package/src/router-tanstack/index.ts +18 -112
  545. package/src/router-tanstack/nav.ts +28 -2
  546. package/src/router-tanstack/search-store.ts +9 -2
  547. package/src/router-tanstack/use-nav.ts +47 -13
  548. package/src/shell/app-mobile-nav.tsx +3 -2
  549. package/src/shell/app-sidebar.tsx +1 -1
  550. package/src/shell/aside-docking.ts +1 -1
  551. package/src/shell/index.tsx +61 -20
  552. package/src/shell/page-aside.tsx +47 -23
  553. package/src/shell/page-bar.tsx +3 -3
  554. package/src/shell/page-title.tsx +1 -1
  555. package/src/state.ts +11 -37
  556. package/src/styles.css +107 -7
  557. package/src/surfaces.ts +56 -151
  558. package/src/{data → table}/data-table-state.ts +5 -4
  559. package/src/{data → table}/data-table.tsx +170 -161
  560. package/src/table/index.ts +18 -0
  561. package/src/table/table-features.ts +102 -0
  562. package/src/telemetry.ts +110 -0
  563. package/src/theme/index.ts +22 -47
  564. package/src/theme/theme-toggle.module.css +30 -0
  565. package/src/theme/theme-toggle.module.css.d.ts +10 -0
  566. package/src/theme/theme-toggle.tsx +15 -43
  567. package/src/theme-lab/derive-controls.tsx +5 -3
  568. package/src/theme-lab/derive-state.ts +2 -1
  569. package/src/tokens/core.ts +1163 -0
  570. package/src/tokens/derive.ts +1 -1
  571. package/src/tokens/index.ts +14 -1181
  572. package/src/tokens/palette.ts +3 -7
  573. package/src/vite.ts +3 -3
  574. package/agent/templates/CLAUDE-block.md.tpl +0 -40
  575. package/agent/templates/query-client.ts.tpl +0 -26
  576. package/dist/agent/adapter.d.ts +0 -150
  577. package/dist/agent/adapter.d.ts.map +0 -1
  578. package/dist/agent/adapter.js +0 -482
  579. package/dist/agent/use-agent-stream.d.ts +0 -35
  580. package/dist/agent/use-agent-stream.d.ts.map +0 -1
  581. package/dist/agent/use-agent-stream.js +0 -59
  582. package/dist/agent-chat/composer.d.ts.map +0 -1
  583. package/dist/agent-chat/index.d.ts +0 -31
  584. package/dist/agent-chat/index.d.ts.map +0 -1
  585. package/dist/agent-chat/index.js +0 -19
  586. package/dist/agent-chat/message-affordances.d.ts.map +0 -1
  587. package/dist/agent-chat/relative-time.d.ts.map +0 -1
  588. package/dist/agent-chat/thread-detail-panel.d.ts +0 -28
  589. package/dist/agent-chat/thread-detail-panel.d.ts.map +0 -1
  590. package/dist/agent-chat/thread-detail-panel.js +0 -115
  591. package/dist/agent-chat/thread-feed-row.d.ts.map +0 -1
  592. package/dist/agent-chat/thread-feed.d.ts.map +0 -1
  593. package/dist/agent-chat/thread-message.d.ts.map +0 -1
  594. package/dist/agent-chat/thread-outcome-card.d.ts.map +0 -1
  595. package/dist/agent-chat/thread-workspace.d.ts +0 -44
  596. package/dist/agent-chat/thread-workspace.d.ts.map +0 -1
  597. package/dist/agent-chat/thread-workspace.js +0 -153
  598. package/dist/agent-chat/tool-chip.d.ts.map +0 -1
  599. package/dist/agent-chat/use-keyboard-inset.d.ts.map +0 -1
  600. package/dist/agent-chat/virtualize.d.ts.map +0 -1
  601. package/dist/charts/cursor/resolve.d.ts +0 -75
  602. package/dist/charts/cursor/resolve.d.ts.map +0 -1
  603. package/dist/charts/cursor/resolve.js +0 -91
  604. package/dist/charts/cursor/scope.d.ts +0 -20
  605. package/dist/charts/cursor/scope.d.ts.map +0 -1
  606. package/dist/charts/cursor/scope.js +0 -20
  607. package/dist/charts/cursor/store.d.ts +0 -35
  608. package/dist/charts/cursor/store.d.ts.map +0 -1
  609. package/dist/charts/cursor/store.js +0 -25
  610. package/dist/charts/cursor/touch-pin.d.ts +0 -45
  611. package/dist/charts/cursor/touch-pin.d.ts.map +0 -1
  612. package/dist/charts/cursor/touch-pin.js +0 -79
  613. package/dist/charts/hooks/use-discrete-cursor.d.ts +0 -66
  614. package/dist/charts/hooks/use-discrete-cursor.d.ts.map +0 -1
  615. package/dist/charts/hooks/use-discrete-cursor.js +0 -198
  616. package/dist/charts/hooks/use-hysteresis.d.ts +0 -18
  617. package/dist/charts/hooks/use-hysteresis.d.ts.map +0 -1
  618. package/dist/charts/hooks/use-hysteresis.js +0 -12
  619. package/dist/charts/hooks/useBandPlot.d.ts +0 -145
  620. package/dist/charts/hooks/useBandPlot.d.ts.map +0 -1
  621. package/dist/charts/hooks/useBandPlot.js +0 -178
  622. package/dist/charts/hooks/useChartCursor.d.ts +0 -75
  623. package/dist/charts/hooks/useChartCursor.d.ts.map +0 -1
  624. package/dist/charts/hooks/useChartCursor.js +0 -200
  625. package/dist/charts/hooks/useChartSize.d.ts +0 -29
  626. package/dist/charts/hooks/useChartSize.d.ts.map +0 -1
  627. package/dist/charts/hooks/useChartSize.js +0 -8
  628. package/dist/charts/kinds/BandStrip.d.ts +0 -132
  629. package/dist/charts/kinds/BandStrip.d.ts.map +0 -1
  630. package/dist/charts/kinds/BandStrip.js +0 -241
  631. package/dist/charts/kinds/Bars.d.ts +0 -141
  632. package/dist/charts/kinds/Bars.d.ts.map +0 -1
  633. package/dist/charts/kinds/Bars.js +0 -343
  634. package/dist/charts/kinds/Donut.d.ts +0 -77
  635. package/dist/charts/kinds/Donut.d.ts.map +0 -1
  636. package/dist/charts/kinds/Donut.js +0 -245
  637. package/dist/charts/kinds/DualPanel.d.ts +0 -111
  638. package/dist/charts/kinds/DualPanel.d.ts.map +0 -1
  639. package/dist/charts/kinds/DualPanel.js +0 -471
  640. package/dist/charts/kinds/Heatmap.d.ts +0 -85
  641. package/dist/charts/kinds/Heatmap.d.ts.map +0 -1
  642. package/dist/charts/kinds/Heatmap.js +0 -243
  643. package/dist/charts/kinds/MirroredBars.d.ts +0 -98
  644. package/dist/charts/kinds/MirroredBars.d.ts.map +0 -1
  645. package/dist/charts/kinds/MirroredBars.js +0 -292
  646. package/dist/charts/kinds/MultiLine.d.ts +0 -87
  647. package/dist/charts/kinds/MultiLine.d.ts.map +0 -1
  648. package/dist/charts/kinds/MultiLine.js +0 -176
  649. package/dist/charts/kinds/StackedArea.d.ts +0 -73
  650. package/dist/charts/kinds/StackedArea.d.ts.map +0 -1
  651. package/dist/charts/kinds/StackedArea.js +0 -135
  652. package/dist/charts/kinds/ZonedLine.d.ts +0 -97
  653. package/dist/charts/kinds/ZonedLine.d.ts.map +0 -1
  654. package/dist/charts/kinds/ZonedLine.js +0 -155
  655. package/dist/charts/kinds/band-chrome.d.ts +0 -31
  656. package/dist/charts/kinds/band-chrome.d.ts.map +0 -1
  657. package/dist/charts/kinds/band-chrome.js +0 -71
  658. package/dist/charts/kinds/donut-layout.d.ts +0 -47
  659. package/dist/charts/kinds/donut-layout.d.ts.map +0 -1
  660. package/dist/charts/kinds/donut-layout.js +0 -52
  661. package/dist/charts/layout/auto-margin.d.ts +0 -122
  662. package/dist/charts/layout/auto-margin.d.ts.map +0 -1
  663. package/dist/charts/layout/auto-margin.js +0 -81
  664. package/dist/charts/layout/end-labels.d.ts +0 -64
  665. package/dist/charts/layout/end-labels.d.ts.map +0 -1
  666. package/dist/charts/layout/end-labels.js +0 -76
  667. package/dist/charts/layout/log-ticks.d.ts +0 -27
  668. package/dist/charts/layout/log-ticks.d.ts.map +0 -1
  669. package/dist/charts/layout/log-ticks.js +0 -42
  670. package/dist/charts/primitives/AreaGradient.d.ts +0 -18
  671. package/dist/charts/primitives/AreaGradient.d.ts.map +0 -1
  672. package/dist/charts/primitives/AreaGradient.js +0 -13
  673. package/dist/charts/primitives/Axes.d.ts +0 -83
  674. package/dist/charts/primitives/Axes.d.ts.map +0 -1
  675. package/dist/charts/primitives/Axes.js +0 -168
  676. package/dist/charts/primitives/CartesianChart.d.ts +0 -257
  677. package/dist/charts/primitives/CartesianChart.d.ts.map +0 -1
  678. package/dist/charts/primitives/CartesianChart.js +0 -549
  679. package/dist/charts/primitives/ChartCard.d.ts +0 -66
  680. package/dist/charts/primitives/ChartCard.d.ts.map +0 -1
  681. package/dist/charts/primitives/ChartCard.js +0 -143
  682. package/dist/charts/primitives/ChartFrame.d.ts +0 -156
  683. package/dist/charts/primitives/ChartFrame.d.ts.map +0 -1
  684. package/dist/charts/primitives/ChartFrame.js +0 -241
  685. package/dist/charts/primitives/ChartLegend.d.ts +0 -67
  686. package/dist/charts/primitives/ChartLegend.d.ts.map +0 -1
  687. package/dist/charts/primitives/ChartLegend.js +0 -292
  688. package/dist/charts/primitives/ChartPending.d.ts +0 -113
  689. package/dist/charts/primitives/ChartPending.d.ts.map +0 -1
  690. package/dist/charts/primitives/ChartPending.js +0 -117
  691. package/dist/charts/primitives/ChartTooltip.d.ts +0 -59
  692. package/dist/charts/primitives/ChartTooltip.d.ts.map +0 -1
  693. package/dist/charts/primitives/ChartTooltip.js +0 -197
  694. package/dist/charts/primitives/Crosshair.d.ts +0 -26
  695. package/dist/charts/primitives/Crosshair.d.ts.map +0 -1
  696. package/dist/charts/primitives/Crosshair.js +0 -23
  697. package/dist/charts/primitives/HatchPattern.d.ts +0 -31
  698. package/dist/charts/primitives/HatchPattern.d.ts.map +0 -1
  699. package/dist/charts/primitives/HatchPattern.js +0 -31
  700. package/dist/charts/primitives/HoverOverlay.d.ts +0 -45
  701. package/dist/charts/primitives/HoverOverlay.d.ts.map +0 -1
  702. package/dist/charts/primitives/HoverOverlay.js +0 -72
  703. package/dist/charts/primitives/HoverOverlay.module.css +0 -13
  704. package/dist/charts/primitives/HoverOverlay.module.css.d.ts +0 -8
  705. package/dist/charts/primitives/XZoneRects.d.ts +0 -54
  706. package/dist/charts/primitives/XZoneRects.d.ts.map +0 -1
  707. package/dist/charts/primitives/XZoneRects.js +0 -65
  708. package/dist/charts/primitives/ZoneRects.d.ts +0 -38
  709. package/dist/charts/primitives/ZoneRects.d.ts.map +0 -1
  710. package/dist/charts/primitives/ZoneRects.js +0 -30
  711. package/dist/charts/primitives/chart-card-context.d.ts +0 -33
  712. package/dist/charts/primitives/chart-card-context.d.ts.map +0 -1
  713. package/dist/charts/primitives/chart-card-context.js +0 -18
  714. package/dist/charts/primitives/chart-frame-layout.d.ts +0 -185
  715. package/dist/charts/primitives/chart-frame-layout.d.ts.map +0 -1
  716. package/dist/charts/primitives/chart-frame-layout.js +0 -175
  717. package/dist/charts/primitives/chart-layout.d.ts +0 -112
  718. package/dist/charts/primitives/chart-layout.d.ts.map +0 -1
  719. package/dist/charts/primitives/chart-layout.js +0 -175
  720. package/dist/charts/primitives/chart-tier.d.ts +0 -16
  721. package/dist/charts/primitives/chart-tier.d.ts.map +0 -1
  722. package/dist/charts/primitives/chart-tier.js +0 -44
  723. package/dist/charts/primitives/legend-disclosure.d.ts +0 -27
  724. package/dist/charts/primitives/legend-disclosure.d.ts.map +0 -1
  725. package/dist/charts/primitives/legend-disclosure.js +0 -153
  726. package/dist/charts/series.d.ts +0 -189
  727. package/dist/charts/series.d.ts.map +0 -1
  728. package/dist/charts/series.js +0 -84
  729. package/dist/charts/sparklines/BarSparkline.d.ts +0 -37
  730. package/dist/charts/sparklines/BarSparkline.d.ts.map +0 -1
  731. package/dist/charts/sparklines/BarSparkline.js +0 -53
  732. package/dist/charts/sparklines/LineSparkline.d.ts +0 -15
  733. package/dist/charts/sparklines/LineSparkline.d.ts.map +0 -1
  734. package/dist/charts/sparklines/LineSparkline.js +0 -51
  735. package/dist/charts/sparklines/index.d.ts +0 -3
  736. package/dist/charts/sparklines/index.d.ts.map +0 -1
  737. package/dist/charts/sparklines/index.js +0 -6
  738. package/dist/charts/utils/domain.d.ts +0 -35
  739. package/dist/charts/utils/domain.d.ts.map +0 -1
  740. package/dist/charts/utils/domain.js +0 -12
  741. package/dist/charts/utils/format.d.ts +0 -8
  742. package/dist/charts/utils/format.d.ts.map +0 -1
  743. package/dist/charts/utils/format.js +0 -20
  744. package/dist/charts/utils/measure-text.d.ts +0 -25
  745. package/dist/charts/utils/measure-text.d.ts.map +0 -1
  746. package/dist/charts/utils/measure-text.js +0 -64
  747. package/dist/charts/utils/ticks.d.ts +0 -103
  748. package/dist/charts/utils/ticks.d.ts.map +0 -1
  749. package/dist/charts/utils/ticks.js +0 -92
  750. package/dist/commands/overlays-mount.d.ts +0 -122
  751. package/dist/commands/overlays-mount.d.ts.map +0 -1
  752. package/dist/commands/overlays-mount.js +0 -125
  753. package/dist/commands/useCommandHotkeys.d.ts +0 -14
  754. package/dist/commands/useCommandHotkeys.d.ts.map +0 -1
  755. package/dist/commands/useCommandHotkeys.js +0 -45
  756. package/dist/content/article-actions.d.ts +0 -39
  757. package/dist/content/article-actions.d.ts.map +0 -1
  758. package/dist/content/article-actions.js +0 -28
  759. package/dist/content/article-card.d.ts +0 -58
  760. package/dist/content/article-card.d.ts.map +0 -1
  761. package/dist/content/article-card.js +0 -79
  762. package/dist/content/article-card.module.css +0 -111
  763. package/dist/content/mdx.d.ts +0 -20
  764. package/dist/content/mdx.d.ts.map +0 -1
  765. package/dist/content/mdx.js +0 -64
  766. package/dist/controls/compare-filter.d.ts +0 -42
  767. package/dist/controls/compare-filter.d.ts.map +0 -1
  768. package/dist/controls/compare-filter.js +0 -38
  769. package/dist/controls/slider-control.d.ts +0 -36
  770. package/dist/controls/slider-control.d.ts.map +0 -1
  771. package/dist/controls/slider-control.js +0 -64
  772. package/dist/dashboard/widget-grid.d.ts +0 -27
  773. package/dist/dashboard/widget-grid.d.ts.map +0 -1
  774. package/dist/dashboard/widget-grid.js +0 -40
  775. package/dist/dashboard/widget-grid.module.css +0 -69
  776. package/dist/data/data-table-state.d.ts.map +0 -1
  777. package/dist/data/data-table.d.ts.map +0 -1
  778. package/dist/data/query-branch.d.ts.map +0 -1
  779. package/dist/data/table.d.ts +0 -24
  780. package/dist/data/table.d.ts.map +0 -1
  781. package/dist/data/virtual-list.d.ts +0 -133
  782. package/dist/data/virtual-list.d.ts.map +0 -1
  783. package/dist/data/virtual-list.js +0 -157
  784. package/dist/data/virtual.d.ts +0 -21
  785. package/dist/data/virtual.d.ts.map +0 -1
  786. package/dist/data/virtual.js +0 -4
  787. package/dist/forms/FormErrorSummary.d.ts +0 -30
  788. package/dist/forms/FormErrorSummary.d.ts.map +0 -1
  789. package/dist/forms/FormErrorSummary.js +0 -30
  790. package/dist/forms/use-field-array.d.ts +0 -60
  791. package/dist/forms/use-field-array.d.ts.map +0 -1
  792. package/dist/forms/use-field-array.js +0 -20
  793. package/dist/forms/use-form-draft.d.ts +0 -76
  794. package/dist/forms/use-form-draft.d.ts.map +0 -1
  795. package/dist/forms/use-form-draft.js +0 -92
  796. package/dist/forms/use-form-submit.d.ts +0 -88
  797. package/dist/forms/use-form-submit.d.ts.map +0 -1
  798. package/dist/forms/use-form-submit.js +0 -63
  799. package/dist/notifications/bell.d.ts.map +0 -1
  800. package/dist/notifications/center.d.ts.map +0 -1
  801. package/dist/notifications/define-notifications.d.ts.map +0 -1
  802. package/dist/notifications/index.d.ts +0 -40
  803. package/dist/notifications/index.d.ts.map +0 -1
  804. package/dist/notifications/index.js +0 -54
  805. package/dist/notifications/mount-guard.d.ts +0 -8
  806. package/dist/notifications/mount-guard.d.ts.map +0 -1
  807. package/dist/notifications/mount-guard.js +0 -18
  808. package/dist/notifications/notify.d.ts +0 -149
  809. package/dist/notifications/notify.d.ts.map +0 -1
  810. package/dist/notifications/notify.js +0 -171
  811. package/dist/notifications/store.d.ts.map +0 -1
  812. package/dist/provider/connectivity-indicator.d.ts +0 -13
  813. package/dist/provider/connectivity-indicator.d.ts.map +0 -1
  814. package/dist/provider/connectivity-indicator.js +0 -205
  815. package/dist/provider/connectivity-provider.d.ts +0 -7
  816. package/dist/provider/connectivity-provider.d.ts.map +0 -1
  817. package/dist/provider/connectivity-provider.js +0 -128
  818. package/dist/provider/connectivity-types.d.ts +0 -36
  819. package/dist/provider/connectivity-types.d.ts.map +0 -1
  820. package/dist/provider/use-connectivity.d.ts +0 -3
  821. package/dist/provider/use-connectivity.d.ts.map +0 -1
  822. package/dist/provider/use-connectivity.js +0 -14
  823. package/dist/query-devtools.d.ts +0 -21
  824. package/dist/query-devtools.d.ts.map +0 -1
  825. package/dist/query-devtools.js +0 -13
  826. package/src/agent/adapter.ts +0 -945
  827. package/src/agent/use-agent-stream.ts +0 -154
  828. package/src/agent-chat/index.ts +0 -54
  829. package/src/agent-chat/thread-detail-panel.tsx +0 -201
  830. package/src/agent-chat/thread-workspace.tsx +0 -279
  831. package/src/charts/cursor/resolve.ts +0 -198
  832. package/src/charts/cursor/scope.tsx +0 -35
  833. package/src/charts/cursor/store.ts +0 -58
  834. package/src/charts/cursor/touch-pin.ts +0 -138
  835. package/src/charts/hooks/use-discrete-cursor.ts +0 -335
  836. package/src/charts/hooks/use-hysteresis.ts +0 -26
  837. package/src/charts/hooks/useBandPlot.ts +0 -383
  838. package/src/charts/hooks/useChartCursor.ts +0 -367
  839. package/src/charts/hooks/useChartSize.ts +0 -35
  840. package/src/charts/kinds/BandStrip.tsx +0 -449
  841. package/src/charts/kinds/Bars.tsx +0 -589
  842. package/src/charts/kinds/Donut.tsx +0 -368
  843. package/src/charts/kinds/DualPanel.tsx +0 -712
  844. package/src/charts/kinds/Heatmap.tsx +0 -396
  845. package/src/charts/kinds/MirroredBars.tsx +0 -469
  846. package/src/charts/kinds/MultiLine.tsx +0 -322
  847. package/src/charts/kinds/StackedArea.tsx +0 -267
  848. package/src/charts/kinds/ZonedLine.tsx +0 -301
  849. package/src/charts/kinds/band-chrome.tsx +0 -91
  850. package/src/charts/kinds/donut-layout.ts +0 -82
  851. package/src/charts/layout/auto-margin.ts +0 -242
  852. package/src/charts/layout/end-labels.ts +0 -135
  853. package/src/charts/layout/log-ticks.ts +0 -90
  854. package/src/charts/primitives/AreaGradient.tsx +0 -26
  855. package/src/charts/primitives/Axes.tsx +0 -271
  856. package/src/charts/primitives/CartesianChart.tsx +0 -1002
  857. package/src/charts/primitives/ChartCard.tsx +0 -280
  858. package/src/charts/primitives/ChartFrame.tsx +0 -493
  859. package/src/charts/primitives/ChartLegend.tsx +0 -422
  860. package/src/charts/primitives/ChartPending.tsx +0 -243
  861. package/src/charts/primitives/ChartTooltip.tsx +0 -265
  862. package/src/charts/primitives/Crosshair.tsx +0 -43
  863. package/src/charts/primitives/HatchPattern.tsx +0 -55
  864. package/src/charts/primitives/HoverOverlay.module.css +0 -13
  865. package/src/charts/primitives/HoverOverlay.module.css.d.ts +0 -8
  866. package/src/charts/primitives/HoverOverlay.tsx +0 -109
  867. package/src/charts/primitives/XZoneRects.tsx +0 -132
  868. package/src/charts/primitives/ZoneRects.tsx +0 -67
  869. package/src/charts/primitives/chart-card-context.ts +0 -46
  870. package/src/charts/primitives/chart-frame-layout.ts +0 -430
  871. package/src/charts/primitives/chart-layout.ts +0 -318
  872. package/src/charts/primitives/chart-tier.tsx +0 -76
  873. package/src/charts/primitives/legend-disclosure.tsx +0 -178
  874. package/src/charts/series.ts +0 -276
  875. package/src/charts/sparklines/BarSparkline.tsx +0 -94
  876. package/src/charts/sparklines/LineSparkline.tsx +0 -71
  877. package/src/charts/sparklines/index.ts +0 -2
  878. package/src/charts/theme.tsx +0 -53
  879. package/src/charts/utils/domain.ts +0 -41
  880. package/src/charts/utils/format.ts +0 -19
  881. package/src/charts/utils/measure-text.ts +0 -109
  882. package/src/charts/utils/ticks.ts +0 -239
  883. package/src/commands/overlays-mount.tsx +0 -333
  884. package/src/commands/useCommandHotkeys.ts +0 -114
  885. package/src/content/article-actions.ts +0 -72
  886. package/src/content/article-card.module.css +0 -111
  887. package/src/content/article-card.tsx +0 -174
  888. package/src/content/mdx.tsx +0 -127
  889. package/src/controls/compare-filter.tsx +0 -81
  890. package/src/controls/slider-control.tsx +0 -159
  891. package/src/dashboard/widget-grid.module.css +0 -69
  892. package/src/dashboard/widget-grid.tsx +0 -146
  893. package/src/data/table.ts +0 -39
  894. package/src/data/virtual-list.tsx +0 -356
  895. package/src/data/virtual.ts +0 -26
  896. package/src/forms/FormErrorSummary.tsx +0 -71
  897. package/src/forms/use-field-array.ts +0 -94
  898. package/src/forms/use-form-draft.ts +0 -262
  899. package/src/forms/use-form-submit.ts +0 -199
  900. package/src/notifications/index.ts +0 -88
  901. package/src/notifications/mount-guard.ts +0 -38
  902. package/src/notifications/notify.tsx +0 -379
  903. package/src/provider/connectivity-indicator.tsx +0 -267
  904. package/src/provider/connectivity-provider.tsx +0 -189
  905. package/src/provider/connectivity-types.ts +0 -42
  906. package/src/provider/use-connectivity.ts +0 -26
  907. package/src/query-devtools.tsx +0 -40
  908. /package/dist/{agent-chat → agent/chat}/message-affordances.js +0 -0
  909. /package/dist/{agent-chat → agent/chat}/relative-time.d.ts +0 -0
  910. /package/dist/{agent-chat → agent/chat}/relative-time.js +0 -0
  911. /package/dist/{agent-chat → agent/chat}/use-keyboard-inset.d.ts +0 -0
  912. /package/dist/{agent-chat → agent/chat}/virtualize.js +0 -0
  913. /package/dist/{notifications → commands/notifications}/bell.js +0 -0
  914. /package/dist/{notifications → commands/notifications}/define-notifications.js +0 -0
  915. /package/dist/{provider/connectivity-types.js → controls/uncontrolled.js} +0 -0
  916. /package/dist/{data → table}/data-table.module.css +0 -0
  917. /package/dist/{data → table}/data-table.module.css.d.ts +0 -0
  918. /package/dist/{data → table}/query-branch.d.ts +0 -0
  919. /package/dist/{data → table}/query-branch.js +0 -0
  920. /package/src/{agent-chat → agent/chat}/relative-time.ts +0 -0
  921. /package/src/{data → table}/data-table.module.css +0 -0
  922. /package/src/{data → table}/data-table.module.css.d.ts +0 -0
  923. /package/src/{data → table}/query-branch.ts +0 -0
@@ -1,715 +1,23 @@
1
- import {
2
- buildPaletteData,
3
- RADIUS,
4
- RADIUS_STEP,
5
- ROW_LINE_HEIGHT,
6
- SHADOW,
7
- SPACE,
8
- SPACE_SCALE,
9
- SPACE_STEP
10
- } from "./palette.js";
11
- import { SIZE_CLASSES, sizeClassMaxEm } from "./size-classes.js";
12
- import { HIT_COARSE, HIT_FINE } from "../common/hit-floor.js";
13
- import { BASALT_VX_FAMILIES } from "../common/vx-families.js";
14
- import { vxFamilyOf } from "../common/vx-family.js";
15
1
  import { BP, p } from "./palette.js";
16
- import { DEFAULT_DERIVE_CONFIG, deriveTokens, resolveDeriveConfig } from "./derive.js";
17
- import { deriveRadius } from "./palette.js";
18
- import { deriveSpacing } from "./palette.js";
2
+ import { CONTAINER_CLASSES, CONTAINER_GRID_BREAKPOINTS, CONTAINER_KEYS } from "./size-classes.js";
19
3
  import {
20
- CONTAINER_CLASSES,
21
- CONTAINER_GRID_BREAKPOINTS,
22
- CONTAINER_KEYS,
23
- resolveContainerClass,
24
- SIZE_CLASSES as SIZE_CLASSES2
25
- } from "./size-classes.js";
26
- const alpha = (token, a) => `color-mix(in srgb, ${token} ${Math.round(a * 100)}%, transparent)`;
27
- const TEXT = {
28
- nano: 10,
29
- // engraved/graphic label INSIDE a drawn object (a plate face, a dial, a chip) — never UI copy or prose
30
- micro: 11,
31
- // mono uppercase micro-label (table th, Menu.Label, sidebar/section headers, axis ticks)
32
- xs: 12.5,
33
- // delta badges, tooltip meta, dense chrome, StatCard labels
34
- sm: 13.5,
35
- // table/stat numerals, chart tooltip, legend
36
- md: 15,
37
- // BODY — nav rows, menu items, timeline, labels, prose; chart/card titles
38
- lg: 16,
39
- // breadcrumb current — ALSO the iOS input floor (do not lower)
40
- xl: 18,
41
- // section titles
42
- h2: 21,
43
- // article-density Prose h2 (docs/CONTENT-SPEC.md §5)
44
- kpi: 24,
45
- // the StatCard hero numeral (density pass: 31 → 24, tighter/less shouty)
46
- h1: 26,
47
- // article-density Prose h1 (docs/CONTENT-SPEC.md §5)
48
- display: 30
49
- // a numeral read at arm's length (a keypad readout, a timer, a kiosk figure) — not a heading
50
- };
51
- const VX = {
52
- // Non-color sizing constants
53
- // Stroke WEIGHTS, not spacing — deliberately fixed, never density-tracking (see
54
- // `SPACE_STEP_BASE`'s "charts" group doc in tokens/palette.ts).
55
- lineWidth: 2.5,
56
- line2Width: 2,
57
- axisFont: TEXT.micro,
58
- // A discrete visual footprint (not a stroke weight), so — unlike `lineWidth`/`line2Width` above —
59
- // it DOES track density; single-sourced from `SPACE_STEP.chartDotR` (see that constant's doc).
60
- dotR: SPACE_STEP.chartDotR,
61
- // The ONE dashed pattern — plotted stroke, legend swatch, tooltip swatch all read this.
62
- dashArray: "6 4",
63
- // Legend layout — single-sourced from `SPACE_STEP.chartLegendGap` (density-tracking; see that
64
- // constant's doc). Still a raw number here (not `var()`) — ChartLegend applies it via inline
65
- // `style`, and this is the one static (level-0) value; `createBasaltTheme({ density })` has no
66
- // wiring into chart render props yet, so this number does NOT move live with the knob (same
67
- // "dev slider/production JS defaultProps" gap as Timeline's `bulletSize` — see `deriveSpacing`'s
68
- // doc in tokens/palette.ts).
69
- legendGap: SPACE_STEP.chartLegendGap,
70
- legendFontSize: TEXT.sm,
71
- // The type scale (px numbers — see TEXT above). Use in inline styles and visx SVG props;
72
- // use `var(--vx-text-*)` in CSS modules.
73
- text: TEXT,
74
- // Single source for the card corner radius — shared by the Mantine-free ChartCard and the
75
- // Mantine chrome (Card/Paper resolve to this SAME token). One knob, so cards never diverge.
76
- radiusCard: "var(--vx-radius-card)",
77
- // Single source for the control corner radius (inputs, search, buttons, segmented track).
78
- radiusCtrl: "var(--vx-radius-ctrl)",
79
- // Fully-rounded pill affordance (scroll-to-bottom button, chips) — fixed, does not track the
80
- // radius knob (see `RADIUS_STEP.pill`'s doc in `tokens/palette.ts`).
81
- radiusPill: "var(--vx-radius-pill)",
82
- // The pointer-tier hit floor: 44px under `(pointer: coarse)` (WCAG 2.5.5), 24px otherwise
83
- // (2.5.8). Density-exempt; `[data-basalt-hit]::after` in `styles.css` reads it.
84
- hit: "var(--vx-hit)",
85
- // Controls tier sizing (`docs/CONTROLS-SPEC.md` §5) — `var()` refs onto the density-tracking
86
- // `--vx-space-*` declarations `spaceDecls` emits above (same ref pattern as `radiusCard`/
87
- // `radiusCtrl`), so a home/control reads ONE source for its tier height whether it's Mantine
88
- // chrome (`cssVariablesResolver`/`CTL_THEME`) or a Mantine-free composed layout.
89
- space: {
90
- controlHeightTag: "var(--vx-space-control-height-tag)",
91
- controlHeightWidget: "var(--vx-space-control-height-widget)",
92
- controlHeightCtl: "var(--vx-space-control-height-ctl)",
93
- pageBarRowHeight: "var(--vx-space-page-bar-row-height)",
94
- sectionHeaderHeight: "var(--vx-space-section-header-height)",
95
- widgetHeaderHeight: "var(--vx-space-widget-header-height)",
96
- sidebarBlockRowHeight: "var(--vx-space-sidebar-block-row-height)",
97
- controlGap: "var(--vx-space-control-gap)",
98
- sheetRowHeight: "var(--vx-space-sheet-row-height)"
99
- },
100
- // Secondary-line color (back-compat alias; now theme-aware via --vx-line2)
101
- line2Dark: "var(--vx-line2)",
102
- // Semantic fills — consistent opacity across all charts
103
- good: "var(--vx-good)",
104
- goodSoft: "var(--vx-good-soft)",
105
- bad: "var(--vx-bad)",
106
- warn: "var(--vx-warn)",
107
- goodSolid: "var(--vx-good-solid)",
108
- badSolid: "var(--vx-bad-solid)",
109
- warnSolid: "var(--vx-warn-solid)",
110
- // Reference/dashed lines for thresholds
111
- goodRef: "var(--vx-good-ref)",
112
- badRef: "var(--vx-bad-ref)",
113
- warnRef: "var(--vx-warn-ref)",
114
- // Neutral primary line/text color — the default for single-series, no-signal marks
115
- // ("white/gray per theme"). Same value as the NEUTRAL.line pair.
116
- line: "var(--vx-line)",
117
- line2: "var(--vx-line2)",
118
- // Axis label + axis stroke colors (theme-aware). Exposed as flat refs so a bespoke chart that
119
- // renders raw <text> labels or axis lines (without the Axis* primitives) needs no hook.
120
- axis: "var(--vx-axis)",
121
- axisStroke: "var(--vx-axis-stroke)",
122
- // Grid, hover, legend
123
- grid: "var(--vx-grid)",
124
- crosshair: "var(--vx-crosshair)",
125
- dotStroke: "var(--vx-dot-stroke)",
126
- legendText: "var(--vx-legend-text)",
127
- // Tooltip chrome — muted (secondary) text inside a bespoke tooltip. The other tooltip vars
128
- // (bg/text/border/shadow) are only exposed via `useVxTheme()` (see `charts/theme.tsx`); this
129
- // one is flattened onto `VX` too because bespoke-tooltip authors reached for `VX.muted` (the
130
- // general ink-ramp muted) instead and got the wrong token — same pattern as `VX.muted` below.
131
- tooltipMuted: "var(--vx-tooltip-muted)",
132
- // Base neutral for hairlines / muted text / overlays — apply opacity via alpha()
133
- neutral: "var(--vx-neutral)",
134
- // Ink text ramp (docs/DESIGN-SPEC.md §2) — primary/emphasis/secondary/tertiary body text.
135
- ink: "var(--vx-ink)",
136
- ink2: "var(--vx-ink2)",
137
- muted: "var(--vx-muted)",
138
- faint: "var(--vx-faint)",
139
- // The accent as INK — primary series, active-nav icon, links, focus rings. Read against the PAGE,
140
- // so it inverts across schemes (light on dark, deep on light).
141
- accent: "var(--vx-accent)",
142
- accentHover: "var(--vx-accent-hover)",
143
- // The accent as SURFACE — a filled control that carries a label. Squeezed between white-text
144
- // contrast and page contrast, so it is the same hex in both schemes (see ACCENT in palette.ts).
145
- // Mantine's `--mantine-color-<primary>-filled` is bridged onto this, so it drives ALL filled
146
- // chrome; a raw `--vx-accent` fill would be unreadable on dark. Fills use THIS, never `accent`.
147
- accentFill: "var(--vx-accent-fill)",
148
- accentFillHover: "var(--vx-accent-fill-hover)",
149
- onAccent: "var(--vx-on-accent)",
150
- // Layout separators (header bottom rule, sidebar child indent) — distinct from `surface.border`.
151
- divider: "var(--vx-divider)",
152
- // Depth shadows — a whisper shadow + a 1px ring baked into the value (never a `border` prop).
153
- shadowCard: "var(--vx-shadow-card)",
154
- shadowCtrl: "var(--vx-shadow-ctrl)",
155
- // Raised interactive controls — drop + a 1px INSET edge, the one depth every raised Button/
156
- // ActionIcon variant shares (works over a fill, a tint or a panel alike; see SHADOW.raised).
157
- shadowRaised: "var(--vx-shadow-raised)",
158
- // Floating-layer elevation (menus, popovers, tooltips, modals, drawers) — a real drop shadow.
159
- shadowOverlay: "var(--vx-shadow-overlay)",
160
- // App surfaces (cards, borders) — shared with the Mantine chrome
161
- surface: {
162
- bg: "var(--vx-surface-bg)",
163
- panel: "var(--vx-surface-panel)",
164
- panelHover: "var(--vx-surface-panel-hover)",
165
- elevated: "var(--vx-surface-elevated)",
166
- subtle: "var(--vx-surface-subtle)",
167
- overlay: "var(--vx-surface-overlay)",
168
- // floating layer (menus, popovers, modals, drawers)
169
- field: "var(--vx-surface-field)",
170
- // input field surface (slightly inset on a panel)
171
- border: "var(--vx-surface-border)",
172
- // "line" — strong border
173
- hairline: "var(--vx-surface-hairline)"
174
- // card ring only
175
- },
176
- // Score / zone status scale (excellent → poor)
177
- status: {
178
- excellent: "var(--vx-status-excellent)",
179
- good: "var(--vx-status-good)",
180
- warn: "var(--vx-status-warn)",
181
- bad: "var(--vx-status-bad)",
182
- neutral: "var(--vx-status-neutral)"
183
- },
184
- // Shared sizing — single-sourced from `SPACE_STEP.chartMargin*` (density-tracking; same
185
- // static-value/no-live-wiring note as `legendGap` above).
186
- margin: {
187
- top: SPACE_STEP.chartMarginTop,
188
- right: SPACE_STEP.chartMarginRight,
189
- bottom: SPACE_STEP.chartMarginBottom,
190
- left: SPACE_STEP.chartMarginLeft
191
- },
192
- minPxPerTick: 55,
193
- /**
194
- * Floor on a chart's plot rect height, in px (`ChartFrame`). A legend wrapping to five rows at
195
- * phone width used to eat a fixed `height={240}` toward zero and the plot simply stopped
196
- * rendering — the plot never shrinks past this, the frame grows instead (or, under `fill`, the
197
- * legend rolls up).
198
- */
199
- minPlotHeight: 120,
200
- /** Every floating chart overlay portalled to `document.body` — a pinned tooltip, the legend's
201
- * `All N` disclosure and its backdrop — shares one stacking value, so they always stack the same
202
- * way relative to page chrome and to each other. */
203
- zIndexFloating: 9999
204
- };
205
- const BREAKPOINTS = {
206
- /**
207
- * `content/article-layout.module.css` — below this the TOC rail is dropped and the article
208
- * collapses to a single centred column. Well above the `sm` (52.5em/840px) shell breakpoint on
209
- * purpose: the rail needs the prose measure PLUS its own width plus the column gap, which runs
210
- * out long before the shell goes mobile.
211
- */
212
- article: 1200
213
- };
214
- function chartMargin(opts) {
215
- const widenedRight = opts?.rightAxis ? Math.max(VX.margin.right, SPACE_STEP.chartMarginRightAxis) : VX.margin.right;
216
- return {
217
- top: opts?.top ?? VX.margin.top,
218
- right: opts?.right ?? widenedRight,
219
- bottom: opts?.bottom ?? VX.margin.bottom,
220
- left: opts?.left ?? VX.margin.left
221
- };
222
- }
223
- const decl = (name, value) => ` --vx-${name}: ${value};`;
224
- function pxRem(px) {
225
- return `${px / 16}rem`;
226
- }
227
- const groupSide = (prefix, map, side) => Object.entries(map).map(([key, pair]) => decl(`${prefix}${key}`, pair[side])).join("\n");
228
- function frameworkPrimitivesAliases() {
229
- return [
230
- " /* Deprecated camelCase aliases \u2014 removed in a future minor; migrate to the kebab names above. */",
231
- decl("goodSolid", "var(--vx-good-solid)"),
232
- decl("badSolid", "var(--vx-bad-solid)"),
233
- decl("warnSolid", "var(--vx-warn-solid)"),
234
- decl("axisStroke", "var(--vx-axis-stroke)"),
235
- decl("dotStroke", "var(--vx-dot-stroke)"),
236
- decl("tooltipBg", "var(--vx-tooltip-bg)"),
237
- decl("tooltipText", "var(--vx-tooltip-text)"),
238
- decl("tooltipMuted", "var(--vx-tooltip-muted)"),
239
- decl("tooltipBorder", "var(--vx-tooltip-border)"),
240
- decl("tooltipShadow", "var(--vx-tooltip-shadow)"),
241
- decl("legendText", "var(--vx-legend-text)"),
242
- decl("accentHover", "var(--vx-accent-hover)"),
243
- decl("accentFill", "var(--vx-accent-fill)"),
244
- decl("accentFillHover", "var(--vx-accent-fill-hover)"),
245
- decl("onAccent", "var(--vx-on-accent)"),
246
- decl("surface-panelHover", "var(--vx-surface-panel-hover)")
247
- ].join("\n");
248
- }
249
- function frameworkPrimitives(side, data, legacyAliases) {
250
- const n = data.NEUTRAL;
251
- const s = data.SEMANTIC;
252
- const su = data.SURFACE;
253
- const ink = data.INK;
254
- const ac = data.ACCENT;
255
- const canonical = [
256
- groupSide("status-", data.STATUS, side),
257
- decl("good-solid", s.good[side]),
258
- decl("bad-solid", s.bad[side]),
259
- decl("warn-solid", s.warn[side]),
260
- decl("neutral", n.neutral[side]),
261
- decl("line", n.line[side]),
262
- decl("line2", n.line2[side]),
263
- decl("axis", n.axis[side]),
264
- decl("axis-stroke", n.axisStroke[side]),
265
- decl("grid", n.grid[side]),
266
- decl("crosshair", n.crosshair[side]),
267
- decl("dot-stroke", n.dotStroke[side]),
268
- decl("tooltip-bg", n.tooltipBg[side]),
269
- decl("tooltip-text", n.tooltipText[side]),
270
- decl("tooltip-muted", n.tooltipMuted[side]),
271
- decl("tooltip-border", n.tooltipBorder[side]),
272
- decl("tooltip-shadow", n.tooltipShadow[side]),
273
- decl("legend-text", n.legendText[side]),
274
- decl("ink", ink.ink[side]),
275
- decl("ink2", ink.ink2[side]),
276
- decl("muted", ink.muted[side]),
277
- decl("faint", ink.faint[side]),
278
- decl("accent", ac.accent[side]),
279
- decl("accent-hover", ac.accentHover[side]),
280
- decl("accent-fill", ac.accentFill[side]),
281
- decl("accent-fill-hover", ac.accentFillHover[side]),
282
- decl("on-accent", ac.onAccent[side]),
283
- decl("divider", su.divider[side]),
284
- decl("shadow-card", SHADOW.card[side]),
285
- decl("shadow-ctrl", SHADOW.ctrl[side]),
286
- decl("shadow-raised", SHADOW.raised[side]),
287
- decl("shadow-overlay", SHADOW.overlay[side]),
288
- decl("surface-bg", su.bg[side]),
289
- decl("surface-panel", su.panel[side]),
290
- decl("surface-panel-hover", su.panelHover[side]),
291
- decl("surface-elevated", su.elevated[side]),
292
- decl("surface-subtle", su.subtle[side]),
293
- decl("surface-overlay", su.overlay[side]),
294
- decl("surface-field", su.field[side]),
295
- decl("surface-border", su.border[side]),
296
- decl("surface-hairline", su.hairline[side])
297
- ].join("\n");
298
- return legacyAliases ? `${canonical}
299
- ${frameworkPrimitivesAliases()}` : canonical;
300
- }
301
- function spaceDecls(space) {
302
- return [
303
- decl("space-row-inset-x", `${space.anchors.rowInsetX}px`),
304
- decl("space-row-inset-y", `${space.anchors.rowInsetY}px`),
305
- // Additive law, not the multiplier — see `deriveSpacing`'s doc in `tokens/palette.ts`. No unit:
306
- // `line-height` is a unitless CSS value.
307
- decl("space-row-line-height", `${space.rowLineHeight}`),
308
- // A `size: 'md'` Input's resolved height. Mantine's own `--input-height-md` is
309
- // `calc(2.625rem * var(--mantine-scale))` (BOTH `styles.css` and `styles.layer.css`, verified
310
- // in the installed package) — REM-relative to the root font size AND scale-aware, not a flat
311
- // px. Emitting this in REM (via `pxRem`, not a bare `${…}px`) preserves the rem half; the
312
- // `* var(--mantine-scale))` half is reconstructed at the Mantine-coupled call site
313
- // (`theme/index.ts`'s `Input.extend` `vars`, which wraps this var in the matching `calc(...)`)
314
- // — this module stays Mantine-free, so it cannot reference `--mantine-scale` itself. Flattening
315
- // either half into a flat px would desync input height from the user's root font size (an
316
- // accessibility regression) and from Mantine's global `--mantine-scale` knob.
317
- decl("space-input-height", pxRem(space.anchors.inputHeight)),
318
- // A `size: 'md'` Button's/ActionIcon's resolved height — SAME rem-plus-scale reasoning and
319
- // reconstruction as `space-input-height` above (`theme/index.ts`'s `Button.extend`/
320
- // `ActionIcon.extend` `vars`), single-sourced from the SAME `controlHeight` anchor
321
- // `space-input-height` reads from (`SPACE_ANCHORS_BASE`'s doc in `tokens/palette.ts`).
322
- decl("space-control-height", pxRem(space.anchors.controlHeight)),
323
- // Controls tier heights (`docs/CONTROLS-SPEC.md` §5) — same rem-plus-`--mantine-scale`
324
- // reconstruction as `space-input-height`/`space-control-height` above; `theme/ctl-theme.tsx`'s
325
- // `CTL_THEME` and the `cssVariablesResolver`'s `-ctl`/`-icon` var sets both wrap these in the
326
- // matching `calc(... * var(--mantine-scale))`.
327
- decl("space-control-height-tag", pxRem(space.anchors.controlHeightTag)),
328
- decl("space-control-height-widget", pxRem(space.anchors.controlHeightWidget)),
329
- decl("space-control-height-ctl", pxRem(space.anchors.controlHeightCtl)),
330
- decl("space-stack-xs", `${space.anchors.stackXs}px`),
331
- decl("space-stack-sm", `${space.anchors.stackSm}px`),
332
- decl("space-stack-md", `${space.anchors.stackMd}px`),
333
- decl("space-stack-lg", `${space.anchors.stackLg}px`),
334
- decl("space-stack-xl", `${space.anchors.stackXl}px`),
335
- // The CSS-module spacing sweep's one-offs (docs/STATUS.md) — same single-source reasoning,
336
- // grouped to match `SPACE_STEP_BASE`'s own grouping in tokens/palette.ts.
337
- // ONE value at every viewport since 1.26.0 — the AppShell header is a single
338
- // `appShellHeaderHeight` row (law C14), so the `-mobile` override of the old Decision-3
339
- // responsive pair is gone.
340
- decl("space-sticky-header-clearance", `${space.step.stickyHeaderClearance}px`),
341
- decl("space-nav-icon-gap", `${space.step.navIconGap}px`),
342
- decl("space-sidebar-region-gap", `${space.step.sidebarRegionGap}px`),
343
- decl("space-prose-quote-inset-y", `${space.step.proseQuoteInsetY}px`),
344
- decl("space-prose-quote-indent", `${space.step.proseQuoteIndent}px`),
345
- decl("space-prose-inline-code-inset-y", `${space.step.proseInlineCodeInsetY}px`),
346
- decl("space-prose-inline-code-inset-x", `${space.step.proseInlineCodeInsetX}px`),
347
- decl("space-prose-code-block-inset-y", `${space.step.proseCodeBlockInsetY}px`),
348
- decl("space-prose-code-block-inset-x", `${space.step.proseCodeBlockInsetX}px`),
349
- decl("space-prose-heading-anchor-gap", `${space.step.proseHeadingAnchorGap}px`),
350
- decl("space-prose-table-cell-inset-y", `${space.step.proseTableCellInsetY}px`),
351
- decl("space-prose-table-cell-inset-x", `${space.step.proseTableCellInsetX}px`),
352
- decl("space-prose-chat-list-gap-bottom", `${space.step.proseChatListGapBottom}px`),
353
- decl("space-prose-chat-list-indent", `${space.step.proseChatListIndent}px`),
354
- decl("space-prose-chat-list-item-gap", `${space.step.proseChatListItemGap}px`),
355
- decl("space-prose-chat-nested-list-gap", `${space.step.proseChatNestedListGap}px`),
356
- decl("space-prose-chat-heading-gap-top", `${space.step.proseChatHeadingGapTop}px`),
357
- decl("space-prose-chat-heading-gap-bottom", `${space.step.proseChatHeadingGapBottom}px`),
358
- decl("space-prose-article-paragraph-gap", `${space.step.proseArticleParagraphGap}px`),
359
- decl("space-prose-article-list-gap-top", `${space.step.proseArticleListGapTop}px`),
360
- decl("space-prose-article-list-gap-bottom", `${space.step.proseArticleListGapBottom}px`),
361
- decl("space-prose-article-list-indent", `${space.step.proseArticleListIndent}px`),
362
- decl("space-prose-article-h1-gap-top", `${space.step.proseArticleH1GapTop}px`),
363
- decl("space-prose-article-h1-gap-bottom", `${space.step.proseArticleH1GapBottom}px`),
364
- decl("space-prose-article-heading-gap-top", `${space.step.proseArticleHeadingGapTop}px`),
365
- decl("space-prose-article-heading-gap-bottom", `${space.step.proseArticleHeadingGapBottom}px`),
366
- decl("space-prose-article-h2-rule-gap", `${space.step.proseArticleH2RuleGap}px`),
367
- decl("space-prose-article-block-gap", `${space.step.proseArticleBlockGap}px`),
368
- decl("space-article-column-gap", `${space.step.articleColumnGap}px`),
369
- decl("space-article-toc-rail-width", `${space.step.articleTocRailWidth}px`),
370
- decl("space-article-header-gap", `${space.step.articleHeaderGap}px`),
371
- decl("space-article-header-padding-bottom", `${space.step.articleHeaderPaddingBottom}px`),
372
- decl("space-article-header-margin-bottom", `${space.step.articleHeaderMarginBottom}px`),
373
- decl("space-article-meta-row-gap", `${space.step.articleMetaRowGap}px`),
374
- decl("space-article-footer-gap", `${space.step.articleFooterGap}px`),
375
- decl("space-article-footer-margin-top", `${space.step.articleFooterMarginTop}px`),
376
- decl("space-article-footer-padding-top", `${space.step.articleFooterPaddingTop}px`),
377
- decl("space-article-nav-target-gap", `${space.step.articleNavTargetGap}px`),
378
- decl("space-code-block-header-gap", `${space.step.codeBlockHeaderGap}px`),
379
- decl("space-code-block-header-inset-y", `${space.step.codeBlockHeaderInsetY}px`),
380
- decl("space-code-block-header-inset-right", `${space.step.codeBlockHeaderInsetRight}px`),
381
- decl("space-code-block-content-inset-x", `${space.step.codeBlockContentInsetX}px`),
382
- decl("space-code-block-header-right-gap", `${space.step.codeBlockHeaderRightGap}px`),
383
- decl("space-code-block-body-inset-y", `${space.step.codeBlockBodyInsetY}px`),
384
- decl("space-code-block-floating-copy-offset", `${space.step.codeBlockFloatingCopyOffset}px`),
385
- decl("space-callout-inset-y", `${space.step.calloutInsetY}px`),
386
- decl("space-callout-inset-x", `${space.step.calloutInsetX}px`),
387
- decl("space-callout-title-row-gap", `${space.step.calloutTitleRowGap}px`),
388
- decl("space-toc-root-gap", `${space.step.tocRootGap}px`),
389
- decl("space-toc-link-inset-y", `${space.step.tocLinkInsetY}px`),
390
- decl("space-toc-link-indent", `${space.step.tocLinkIndent}px`),
391
- decl("space-toc-sub-indent", `${space.step.tocSubIndent}px`),
392
- decl("space-article-card-tags-gap", `${space.step.articleCardTagsGap}px`),
393
- decl("space-article-card-tag-inset-y", `${space.step.articleCardTagInsetY}px`),
394
- decl("space-article-card-tag-inset-x", `${space.step.articleCardTagInsetX}px`),
395
- decl("space-article-card-meta-gap-top", `${space.step.articleCardMetaGapTop}px`),
396
- decl("space-guide-body-gap-bottom", `${space.step.guideBodyGapBottom}px`),
397
- decl("space-guide-footer-gap-top", `${space.step.guideFooterGapTop}px`),
398
- decl("space-guide-footer-inset-top", `${space.step.guideFooterInsetTop}px`),
399
- decl("space-sidebar-search-gap", `${space.step.sidebarSearchGap}px`),
400
- decl("space-sidebar-search-trigger-height", `${space.step.sidebarSearchTriggerHeight}px`),
401
- decl("space-settings-row-inset-y", `${space.step.settingsRowInsetY}px`),
402
- decl("space-settings-row-gap", `${space.step.settingsRowGap}px`),
403
- decl("space-mermaid-container-inset", `${space.step.mermaidContainerInset}px`),
404
- decl("space-sidebar-brand-inset-x", `${space.step.sidebarBrandInsetX}px`),
405
- decl("space-sidebar-section-gap", `${space.step.sidebarSectionGap}px`),
406
- decl("space-sidebar-account-inset-top", `${space.step.sidebarAccountInsetTop}px`),
407
- decl("space-sidebar-account-inset-x", `${space.step.sidebarAccountInsetX}px`),
408
- decl("space-sidebar-account-inset-bottom", `${space.step.sidebarAccountInsetBottom}px`),
409
- decl("space-sidebar-avatar-size", `${space.step.sidebarAvatarSize}px`),
410
- decl("space-sidebar-section-label-gap", `${space.step.sidebarSectionLabelGap}px`),
411
- decl("space-sidebar-child-list-gap-top", `${space.step.sidebarChildListGapTop}px`),
412
- decl("space-sidebar-child-list-gap-bottom", `${space.step.sidebarChildListGapBottom}px`),
413
- decl("space-sidebar-child-list-indent", `${space.step.sidebarChildListIndent}px`),
414
- decl("space-sidebar-child-row-inset-y", `${space.step.sidebarChildRowInsetY}px`),
415
- decl("space-sidebar-child-row-indent", `${space.step.sidebarChildRowIndent}px`),
416
- // The page gutter — the ONE `appShell*` dimension that IS emitted, against the JS-number-only
417
- // rule its five neighbours follow (see the note at the bottom of this list). It earns the
418
- // exception because it is the most visible spacing number the framework ships — every page's
419
- // left edge — and it was, until now, the one number the `--vx-*` layer did not expose at all, so
420
- // a consumer retuning its identity through `createBasaltTheme` could not reach it and had to
421
- // reach past the token layer into `AppShell.Main`'s own styles. Emitted in PLAIN PX, like every
422
- // other inset/gap in this list and unlike the `pxRem` heights above it: the rem-plus-
423
- // `var(--mantine-scale)` reconstruction exists so a CONTROL's box tracks the root font size and
424
- // Mantine's global scale knob; a page gutter is a layout margin against a viewport, not a box
425
- // sized to text, so scaling it with the font would make a large-type user's content column
426
- // narrower rather than more legible.
427
- decl("space-app-shell-inset", `${space.step.appShellInset}px`),
428
- decl("space-app-shell-inset-mobile", `${space.step.appShellInsetMobile}px`),
429
- // The header's breadcrumb floor — emitted for the same reason as the gutter pair above it and
430
- // not for the JS-number reason its `appShell*` neighbours below are withheld for: this one has
431
- // a real CSS consumer (`shell/app-header.module.css`'s `.lead`), which is the whole test this
432
- // list applies. Plain px, like every other layout dimension here.
433
- decl("space-app-shell-header-lead-min", `${space.step.appShellHeaderLeadMin}px`),
434
- decl("space-mobile-nav-tab-gap", `${space.step.mobileNavTabGap}px`),
435
- decl("space-mobile-nav-icon-size", `${space.step.mobileNavIconSize}px`),
436
- decl("space-mobile-nav-tab-inset-y", `${space.step.mobileNavTabInsetY}px`),
437
- decl("space-mobile-nav-tab-inset-x", `${space.step.mobileNavTabInsetX}px`),
438
- decl("space-mobile-nav-row-height", `${space.step.mobileNavRowHeight}px`),
439
- decl("space-agent-rail-inset-x", `${space.step.agentRailInsetX}px`),
440
- decl("space-agent-part-gap-top", `${space.step.agentPartGapTop}px`),
441
- decl("space-agent-code-inset", `${space.step.agentCodeInset}px`),
442
- decl("space-agent-error-inset-y", `${space.step.agentErrorInsetY}px`),
443
- decl("space-agent-error-inset-x", `${space.step.agentErrorInsetX}px`),
444
- decl("space-agent-scroll-button-gap-top", `${space.step.agentScrollButtonGapTop}px`),
445
- decl("space-agent-message-inset-y", `${space.step.agentMessageInsetY}px`),
446
- decl("space-agent-message-inset-x", `${space.step.agentMessageInsetX}px`),
447
- decl("space-agent-transcript-inset", `${space.step.agentTranscriptInset}px`),
448
- decl("space-badge-inset-y", `${space.step.badgeInsetY}px`),
449
- decl("space-badge-inset-x", `${space.step.badgeInsetX}px`),
450
- decl("space-stat-card-gap", `${space.step.statCardGap}px`),
451
- // The card/section inset ladder — the three values `spaceMobileDecls` below re-points at `< sm`
452
- // (see its doc for where the law lives and why it lives there).
453
- decl("space-card-inset-y", `${space.step.cardInsetY}px`),
454
- decl("space-card-inset-x", `${space.step.cardInsetX}px`),
455
- decl("space-section-gap", `${space.step.sectionGap}px`),
456
- decl("space-virtual-row-inset-y", `${space.step.virtualRowInsetY}px`),
457
- decl("space-virtual-row-inset-x", `${space.step.virtualRowInsetX}px`),
458
- // Controls tier row/gap heights (`docs/CONTROLS-SPEC.md` §5) — the current commit's consumers
459
- // are `theme/ctl-theme.tsx` (`--vx-space-control-gap`) and the wave-3/4 homes (`PageBar`,
460
- // `WidgetHeader`, sidebar blocks, the mobile `Filters (n)` sheet) landing next.
461
- decl("space-page-bar-row-height", pxRem(space.step.pageBarRowHeight)),
462
- decl("space-section-header-height", pxRem(space.step.sectionHeaderHeight)),
463
- decl("space-widget-header-height", pxRem(space.step.widgetHeaderHeight)),
464
- decl("space-sidebar-block-row-height", pxRem(space.step.sidebarBlockRowHeight)),
465
- decl("space-control-gap", `${space.step.controlGap}px`),
466
- decl("space-sheet-row-height", pxRem(space.step.sheetRowHeight))
467
- // `chartLegendGap`/`chartMarginTop`/`chartMarginRight`/`chartMarginBottom`/`chartMarginLeft`/
468
- // `chartDotR`/`progressBarSize`/`timelineBullet` are DELIBERATELY absent — see this function's
469
- // doc for why (JS-number-only consumers, zero `var()` reads). `appShellHeaderHeight`/
470
- // `appShellNavbarWidth`/`appShellNavbarRailWidth`/`appShellAsideWidth`/`appShellAsideRailWidth`
471
- // join that list — but NOT `appShellInset`/`appShellInsetMobile`/`appShellHeaderLeadMin`, which
472
- // are emitted above and carry their own reason for the exception —
473
- // `shell/index.tsx` reads all five as JS numbers via `useBasaltSpacing()` (Mantine's `AppShell`
474
- // `header`/`navbar`/`aside` props take numbers, not `var()` strings), so a `--vx-space-app-shell-*`
475
- // decl here would have had zero consumers, framework-wide, the same dead-weight shape this function's
476
- // doc already calls out for the chart/Progress/Timeline group. `sidebarAccountMenuWidth`/
477
- // `sidebarSettingsMenuWidth` join it too — `app-sidebar-account.tsx`/`app-sidebar.tsx` read both
478
- // as JS numbers via `useBasaltSpacing()` (Mantine's `<Menu width={…}>` also takes a number).
479
- ];
480
- }
481
- const CORE_SPACE_VARS = new Set(
482
- Object.keys(SPACE).map((key) => `space-${key.replace(/[A-Z]/g, (c) => `-${c.toLowerCase()}`)}`)
483
- );
484
- function isCoreSpaceDecl(line) {
485
- const name = /^ {2}--vx-([\w-]+):/.exec(line)?.[1];
486
- return name !== void 0 && CORE_SPACE_VARS.has(name);
487
- }
488
- const DEFAULT_SPACE_VALUES = {
489
- anchors: SPACE,
490
- scale: SPACE_SCALE,
491
- step: SPACE_STEP,
492
- rowLineHeight: ROW_LINE_HEIGHT
493
- };
494
- function frameworkDerivedAliases(data) {
495
- return [
496
- " /* Deprecated camelCase aliases \u2014 removed in a future minor; migrate to the kebab names above. */",
497
- ...Object.keys(data.FILL).map(
498
- (name) => decl(`fillHover-${name}`, `var(--vx-fill-hover-${name})`)
499
- ),
500
- decl("goodSoft", "var(--vx-good-soft)"),
501
- decl("goodRef", "var(--vx-good-ref)"),
502
- decl("badRef", "var(--vx-bad-ref)"),
503
- decl("warnRef", "var(--vx-warn-ref)")
504
- ].join("\n");
505
- }
506
- function frameworkDerived(data, only, legacyAliases) {
507
- const space = spaceDecls(DEFAULT_SPACE_VALUES);
508
- const canonical = [
509
- decl("radius-card", `${RADIUS.card}px`),
510
- decl("radius-ctrl", `${RADIUS.ctrl}px`),
511
- // The two offset tiers (SegmentedControl indicator/Kbd/Code, Progress/scale-sm) — added so a
512
- // component's inline `styles`/`style` can read the SAME source as `RADIUS_STEP.tight`/`.fine`
513
- // instead of a hand-typed literal (see `theme/index.ts`'s component sweep).
514
- decl("radius-tight", `${RADIUS_STEP.tight}px`),
515
- decl("radius-fine", `${RADIUS_STEP.fine}px`),
516
- // The floating tier (Modal/Tooltip/Popover/Notification, content code/mermaid blocks).
517
- decl("radius-floating", `${RADIUS_STEP.floating}px`),
518
- // The pill affordance (scroll-to-bottom button, chips) — fixed, level-invariant, so it lives
519
- // only in this static block, never in `buildRadiusCss`'s dynamic override (see
520
- // `RADIUS_STEP.pill`'s doc).
521
- decl("radius-pill", `${RADIUS_STEP.pill}px`),
522
- // The pointer tier's fine default — density-EXEMPT, so it lives only in this static block
523
- // (same law as `radius-pill` above). `coarseHitBlock` re-points it to 44px.
524
- decl("hit", `${HIT_FINE}px`),
525
- ...only === "core" ? space.filter(isCoreSpaceDecl) : space,
526
- // Article-density Prose measure (docs/CONTENT-SPEC.md §5) — theme-independent, like the radii.
527
- decl("prose-measure", "72ch"),
528
- // The fill band (see FILL in palette.ts). Emitted on `:root`, NOT per scheme — a filled surface
529
- // is the same hex in both, which is the whole point: it is squeezed between its white label and
530
- // the page behind it, and only one luminance band satisfies both on both pages.
531
- ...Object.entries(data.FILL).map(([name, hex]) => decl(`fill-${name}`, hex)),
532
- // Hover is DERIVED from the fill, so retuning a fill (in the theme lab, or here) carries its
533
- // hover along instead of leaving a stale pair. 88% of the fill over black lands ~0.128 luminance:
534
- // a visible press-darkening that still clears AA for the white label (~5.9:1).
535
- ...Object.keys(data.FILL).map(
536
- (name) => decl(`fill-hover-${name}`, `color-mix(in srgb, var(--vx-fill-${name}) 88%, #000)`)
537
- ),
538
- // The type scale, emitted from the SAME `TEXT` object `VX.text` reads — CSS modules and the
539
- // Mantine theme consume these; inline styles / visx read the numbers. One ladder, two forms.
540
- ...Object.entries(TEXT).map(([step, px]) => decl(`text-${step}`, `${px}px`)),
541
- decl("area-top", "22%"),
542
- decl("area-bottom", "1%"),
543
- decl("good", "color-mix(in srgb, var(--vx-good-solid) 18%, transparent)"),
544
- decl("good-soft", "color-mix(in srgb, var(--vx-good-solid) 8%, transparent)"),
545
- decl("bad", "color-mix(in srgb, var(--vx-bad-solid) 18%, transparent)"),
546
- decl("warn", "color-mix(in srgb, var(--vx-warn-solid) 8%, transparent)"),
547
- decl("good-ref", "color-mix(in srgb, var(--vx-good-solid) 30%, transparent)"),
548
- decl("bad-ref", "color-mix(in srgb, var(--vx-bad-solid) 30%, transparent)"),
549
- decl("warn-ref", "color-mix(in srgb, var(--vx-warn-solid) 20%, transparent)")
550
- ].join("\n");
551
- return legacyAliases ? `${canonical}
552
- ${frameworkDerivedAliases(data)}` : canonical;
553
- }
554
- function assertConsumerVxName(name) {
555
- const family = vxFamilyOf(name);
556
- if (!BASALT_VX_FAMILIES.includes(family)) return;
557
- throw new Error(
558
- `[basalt] ${name} is inside basalt's own --vx-${family} family \u2014 name your series group something basalt does not own (groupTokens('app', \u2026)).`
559
- );
560
- }
561
- function seriesTokens(map, prefix = "") {
562
- const out = {};
563
- for (const key of Object.keys(map)) {
564
- if (process.env.NODE_ENV !== "production") assertConsumerVxName(`--vx-${prefix}${String(key)}`);
565
- out[key] = `var(--vx-${prefix}${String(key)})`;
566
- }
567
- return out;
568
- }
569
- function defineSeries(map) {
570
- return map;
571
- }
572
- function groupTokens(name, map) {
573
- return seriesTokens(map, `${name}-`);
574
- }
575
- const MANTINE_SCHEME_ATTRIBUTE = "data-mantine-color-scheme";
576
- const indent = (block) => block.split("\n").map((line) => line === "" ? line : ` ${line}`).join("\n");
577
- const MOBILE_MEDIA = `@media (max-width: ${sizeClassMaxEm(SIZE_CLASSES.medium)})`;
578
- const coarseHitBlock = `@media (pointer: coarse) {
579
- :root {
580
- --vx-hit: ${HIT_COARSE}px;
581
- }
582
- }`;
583
- function spaceMobileDecls(space) {
584
- return [
585
- decl("space-card-inset-x", `${space.scale.xs}px`),
586
- decl("space-section-gap", `${space.anchors.stackSm}px`)
587
- ];
588
- }
589
- function mobileLadderBlock(space) {
590
- return `${MOBILE_MEDIA} {
591
- :root {
592
- ${indent(spaceMobileDecls(space).join("\n"))}
593
- }
594
- }`;
595
- }
596
- function buildPaletteCss(opts = {}, data = buildPaletteData()) {
597
- const groups = opts.groups ?? {};
598
- const legacyAliases = opts.legacyAliases ?? true;
599
- const only = opts.only ?? "all";
600
- const extraDerived = (opts.derived ?? []).map((d) => ` ${d}`).join("\n");
601
- const derivedBlock = frameworkDerived(data, only, legacyAliases);
602
- const derived = extraDerived ? `${derivedBlock}
603
- ${extraDerived}` : derivedBlock;
604
- const side = (s) => {
605
- const extra = Object.entries(groups).map(([prefix, map]) => groupSide(prefix, map, s)).join("\n");
606
- const framework = frameworkPrimitives(s, data, legacyAliases);
607
- return extra ? `${framework}
608
- ${extra}` : framework;
609
- };
610
- const rootBlock = only === "core" ? `:root {
611
- ${derived}
612
- }
613
- ${coarseHitBlock}` : `:root {
614
- ${derived}
615
- }
616
- ${mobileLadderBlock(DEFAULT_SPACE_VALUES)}
617
- ${coarseHitBlock}`;
618
- if (opts.scheme === void 0 && opts.defaultScheme === void 0 && !opts.mediaFallback) {
619
- return `${rootBlock}
620
- :root,
621
- html[data-mantine-color-scheme='dark'] {
622
- ${side("dark")}
623
- }
624
- html[data-mantine-color-scheme='light'] {
625
- ${side("light")}
626
- }`;
627
- }
628
- const attribute = opts.scheme?.attribute ?? MANTINE_SCHEME_ATTRIBUTE;
629
- const value = {
630
- dark: opts.scheme?.darkValue ?? "dark",
631
- light: opts.scheme?.lightValue ?? "light"
632
- };
633
- const defaultScheme = opts.defaultScheme ?? "dark";
634
- const order = defaultScheme === "light" ? ["light", "dark"] : ["dark", "light"];
635
- const blocks = [rootBlock];
636
- for (const s of order) {
637
- const selector = s === defaultScheme ? `:root,
638
- :root[${attribute}='${value[s]}']` : `:root[${attribute}='${value[s]}']`;
639
- if (opts.mediaFallback === true && s !== defaultScheme) {
640
- blocks.push(`@media (prefers-color-scheme: ${s}) {
641
- :root {
642
- ${indent(side(s))}
643
- }
644
- }`);
645
- }
646
- blocks.push(`${selector} {
647
- ${side(s)}
648
- }`);
649
- }
650
- return blocks.join("\n");
651
- }
652
- const FONT_VAR_NAMES = {
653
- sans: "--basalt-font-sans",
654
- head: "--basalt-font-head",
655
- mono: "--basalt-font-mono"
656
- };
657
- function buildFontsCss(fonts) {
658
- if (!fonts) return "";
659
- const decls = Object.keys(FONT_VAR_NAMES).filter((key) => fonts[key] !== void 0).map((key) => {
660
- const value = fonts[key];
661
- if (/[{};]|\/\*/.test(value)) {
662
- throw new Error(
663
- `Invalid fonts.${key}: a font-family stack must not contain "{", "}", ";" or "/*" \u2014 got ${JSON.stringify(value)}`
664
- );
665
- }
666
- return ` ${FONT_VAR_NAMES[key]}: ${value};`;
667
- });
668
- if (decls.length === 0) return "";
669
- return `:root {
670
- ${decls.join("\n")}
671
- }`;
672
- }
673
- function buildRadiusCss(radius) {
674
- if (!radius) return "";
675
- return `:root {
676
- --vx-radius-card: ${radius.card}px;
677
- --vx-radius-ctrl: ${radius.ctrl}px;
678
- --vx-radius-tight: ${radius.tight}px;
679
- --vx-radius-fine: ${radius.fine}px;
680
- --vx-radius-floating: ${radius.floating}px;
681
- }`;
682
- }
683
- function buildDensityCss(space) {
684
- if (!space) return "";
685
- return `:root {
686
- ${spaceDecls(space).join("\n")}
687
- }
688
- ${mobileLadderBlock(space)}`;
689
- }
4
+ alpha,
5
+ buildPaletteCss,
6
+ defineSeries,
7
+ groupTokens,
8
+ seriesTokens,
9
+ VX
10
+ } from "./core.js";
690
11
  export {
691
12
  BP,
692
- BREAKPOINTS,
693
13
  CONTAINER_CLASSES,
694
14
  CONTAINER_GRID_BREAKPOINTS,
695
15
  CONTAINER_KEYS,
696
- DEFAULT_DERIVE_CONFIG,
697
- SIZE_CLASSES2 as SIZE_CLASSES,
698
16
  VX,
699
17
  alpha,
700
- buildDensityCss,
701
- buildFontsCss,
702
18
  buildPaletteCss,
703
- buildRadiusCss,
704
- chartMargin,
705
19
  defineSeries,
706
- deriveRadius,
707
- deriveSpacing,
708
- deriveTokens,
709
20
  groupTokens,
710
21
  p,
711
- pxRem,
712
- resolveContainerClass,
713
- resolveDeriveConfig,
714
22
  seriesTokens
715
23
  };