basalt-ui 1.41.0 → 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 (914) hide show
  1. package/AGENTS.md +46 -43
  2. package/CHANGELOG.md +535 -518
  3. package/MIGRATING.md +945 -37
  4. package/README.md +171 -366
  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 +16 -26
  15. package/agent/templates/DESIGN.md.tpl +1 -1
  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/oxlint-basalt.json +4 -10
  20. package/configs/oxlint-plugin.js +465 -844
  21. package/configs/oxlint-plugin.test.ts +661 -709
  22. package/configs/oxlint.json +10 -2
  23. package/dist/agent/ai-sdk-transport.d.ts +19 -7
  24. package/dist/agent/ai-sdk-transport.d.ts.map +1 -1
  25. package/dist/agent/ai-sdk-transport.js +10 -7
  26. package/dist/{agent-chat → agent/chat}/composer.d.ts +16 -16
  27. package/dist/agent/chat/composer.d.ts.map +1 -0
  28. package/dist/{agent-chat → agent/chat}/composer.js +10 -9
  29. package/dist/{agent-chat → agent/chat}/message-affordances.d.ts +7 -6
  30. package/dist/agent/chat/message-affordances.d.ts.map +1 -0
  31. package/dist/agent/chat/relative-time.d.ts.map +1 -0
  32. package/dist/{agent-chat → agent/chat}/thread-feed-row.d.ts +18 -16
  33. package/dist/agent/chat/thread-feed-row.d.ts.map +1 -0
  34. package/dist/{agent-chat → agent/chat}/thread-feed-row.js +12 -11
  35. package/dist/{agent-chat → agent/chat}/thread-feed.d.ts +8 -8
  36. package/dist/agent/chat/thread-feed.d.ts.map +1 -0
  37. package/dist/{agent-chat → agent/chat}/thread-feed.js +12 -10
  38. package/dist/{agent-chat → agent/chat}/thread-message.d.ts +12 -9
  39. package/dist/agent/chat/thread-message.d.ts.map +1 -0
  40. package/dist/{agent-chat → agent/chat}/thread-message.js +15 -13
  41. package/dist/{agent-chat → agent/chat}/thread-outcome-card.d.ts +2 -2
  42. package/dist/agent/chat/thread-outcome-card.d.ts.map +1 -0
  43. package/dist/{agent-chat → agent/chat}/thread-outcome-card.js +3 -3
  44. package/dist/{agent-chat → agent/chat}/tool-chip.d.ts +5 -5
  45. package/dist/agent/chat/tool-chip.d.ts.map +1 -0
  46. package/dist/{agent-chat → agent/chat}/tool-chip.js +4 -4
  47. package/dist/agent/chat/use-keyboard-inset.d.ts.map +1 -0
  48. package/dist/{agent-chat → agent/chat}/use-keyboard-inset.js +1 -1
  49. package/dist/{agent-chat → agent/chat}/virtualize.d.ts +7 -7
  50. package/dist/agent/chat/virtualize.d.ts.map +1 -0
  51. package/dist/agent/error.d.ts +31 -0
  52. package/dist/agent/error.d.ts.map +1 -0
  53. package/dist/agent/error.js +18 -0
  54. package/dist/agent/history.d.ts +2 -36
  55. package/dist/agent/history.d.ts.map +1 -1
  56. package/dist/agent/history.js +0 -32
  57. package/dist/agent/id.d.ts +4 -5
  58. package/dist/agent/id.d.ts.map +1 -1
  59. package/dist/agent/index.d.ts +19 -52
  60. package/dist/agent/index.d.ts.map +1 -1
  61. package/dist/agent/index.js +10 -32
  62. package/dist/agent/outcome.d.ts +3 -14
  63. package/dist/agent/outcome.d.ts.map +1 -1
  64. package/dist/agent/outcome.js +0 -30
  65. package/dist/agent/part-list.d.ts +3 -3
  66. package/dist/agent/part-list.d.ts.map +1 -1
  67. package/dist/agent/parts.d.ts +23 -24
  68. package/dist/agent/parts.d.ts.map +1 -1
  69. package/dist/agent/run-committer.d.ts +23 -0
  70. package/dist/agent/run-committer.d.ts.map +1 -0
  71. package/dist/agent/run-committer.js +41 -0
  72. package/dist/agent/run-records.d.ts +77 -0
  73. package/dist/agent/run-records.d.ts.map +1 -0
  74. package/dist/agent/run-records.js +69 -0
  75. package/dist/agent/thread.d.ts +23 -47
  76. package/dist/agent/thread.d.ts.map +1 -1
  77. package/dist/agent/thread.js +3 -134
  78. package/dist/agent/transport.d.ts +6 -69
  79. package/dist/agent/transport.d.ts.map +1 -1
  80. package/dist/agent/transport.js +0 -18
  81. package/dist/agent/use-agent-thread-runs.d.ts +63 -26
  82. package/dist/agent/use-agent-thread-runs.d.ts.map +1 -1
  83. package/dist/agent/use-agent-thread-runs.js +202 -66
  84. package/dist/charts/BandStrip.d.ts +46 -0
  85. package/dist/charts/BandStrip.d.ts.map +1 -0
  86. package/dist/charts/BandStrip.js +151 -0
  87. package/dist/charts/Bars.d.ts +19 -0
  88. package/dist/charts/Bars.d.ts.map +1 -0
  89. package/dist/charts/Bars.js +77 -0
  90. package/dist/charts/CartesianChart.d.ts +57 -0
  91. package/dist/charts/CartesianChart.d.ts.map +1 -0
  92. package/dist/charts/CartesianChart.js +121 -0
  93. package/dist/charts/ChartCard.d.ts +34 -0
  94. package/dist/charts/ChartCard.d.ts.map +1 -0
  95. package/dist/charts/ChartCard.js +115 -0
  96. package/dist/charts/Donut.d.ts +25 -0
  97. package/dist/charts/Donut.d.ts.map +1 -0
  98. package/dist/charts/Donut.js +191 -0
  99. package/dist/charts/DualPanel.d.ts +47 -0
  100. package/dist/charts/DualPanel.d.ts.map +1 -0
  101. package/dist/charts/DualPanel.js +214 -0
  102. package/dist/charts/Heatmap.d.ts +41 -0
  103. package/dist/charts/Heatmap.d.ts.map +1 -0
  104. package/dist/charts/Heatmap.js +216 -0
  105. package/dist/charts/Lines.d.ts +11 -0
  106. package/dist/charts/Lines.d.ts.map +1 -0
  107. package/dist/charts/Lines.js +114 -0
  108. package/dist/charts/MirroredBars.d.ts +44 -0
  109. package/dist/charts/MirroredBars.d.ts.map +1 -0
  110. package/dist/charts/MirroredBars.js +190 -0
  111. package/dist/charts/Sparkline.d.ts +22 -0
  112. package/dist/charts/Sparkline.d.ts.map +1 -0
  113. package/dist/charts/Sparkline.js +129 -0
  114. package/dist/charts/StackedArea.d.ts +15 -0
  115. package/dist/charts/StackedArea.d.ts.map +1 -0
  116. package/dist/charts/StackedArea.js +46 -0
  117. package/dist/charts/box.d.ts +38 -0
  118. package/dist/charts/box.d.ts.map +1 -0
  119. package/dist/charts/box.js +72 -0
  120. package/dist/charts/card-context.d.ts +3 -0
  121. package/dist/charts/card-context.d.ts.map +1 -0
  122. package/dist/charts/card-context.js +7 -0
  123. package/dist/charts/chart-box.module.css +64 -0
  124. package/{src/content/article-card.module.css.d.ts → dist/charts/chart-box.module.css.d.ts} +5 -9
  125. package/dist/charts/chart-card.module.css +25 -0
  126. package/dist/{dashboard/widget-grid.module.css.d.ts → charts/chart-card.module.css.d.ts} +1 -3
  127. package/dist/charts/chart-legend.module.css +38 -0
  128. package/{src/dashboard/widget-grid.module.css.d.ts → dist/charts/chart-legend.module.css.d.ts} +3 -3
  129. package/dist/charts/compile.d.ts +62 -0
  130. package/dist/charts/compile.d.ts.map +1 -0
  131. package/dist/charts/compile.js +386 -0
  132. package/dist/charts/cursor.d.ts +50 -0
  133. package/dist/charts/cursor.d.ts.map +1 -0
  134. package/dist/charts/cursor.js +157 -0
  135. package/dist/charts/curves.d.ts +12 -0
  136. package/dist/charts/curves.d.ts.map +1 -0
  137. package/dist/charts/curves.js +86 -0
  138. package/dist/charts/donut.module.css +54 -0
  139. package/dist/{content/article-card.module.css.d.ts → charts/donut.module.css.d.ts} +2 -9
  140. package/dist/charts/host.d.ts +17 -0
  141. package/dist/charts/host.d.ts.map +1 -0
  142. package/dist/charts/host.js +35 -0
  143. package/dist/charts/index.d.ts +18 -53
  144. package/dist/charts/index.d.ts.map +1 -1
  145. package/dist/charts/index.js +17 -189
  146. package/dist/charts/legend.d.ts +23 -0
  147. package/dist/charts/legend.d.ts.map +1 -0
  148. package/dist/charts/legend.js +160 -0
  149. package/dist/charts/marks.d.ts +25 -0
  150. package/dist/charts/marks.d.ts.map +1 -0
  151. package/dist/charts/marks.js +128 -0
  152. package/dist/charts/panel.d.ts +56 -0
  153. package/dist/charts/panel.d.ts.map +1 -0
  154. package/dist/charts/panel.js +123 -0
  155. package/dist/charts/scales.d.ts +44 -0
  156. package/dist/charts/scales.d.ts.map +1 -0
  157. package/dist/charts/scales.js +163 -0
  158. package/dist/charts/sizing.d.ts +12 -0
  159. package/dist/charts/sizing.d.ts.map +1 -0
  160. package/dist/charts/sizing.js +33 -0
  161. package/dist/charts/state.d.ts +17 -0
  162. package/dist/charts/state.d.ts.map +1 -0
  163. package/dist/charts/state.js +53 -0
  164. package/dist/charts/theme.d.ts +38 -19
  165. package/dist/charts/theme.d.ts.map +1 -1
  166. package/dist/charts/theme.js +48 -26
  167. package/dist/charts/types.d.ts +227 -0
  168. package/dist/charts/types.d.ts.map +1 -0
  169. package/dist/charts/types.js +4 -0
  170. package/dist/cli/audit-allows.d.ts +4 -17
  171. package/dist/cli/audit-allows.d.ts.map +1 -1
  172. package/dist/cli/config.d.ts +14 -43
  173. package/dist/cli/config.d.ts.map +1 -1
  174. package/dist/cli/doctor-upgrade.d.ts +31 -0
  175. package/dist/cli/doctor-upgrade.d.ts.map +1 -0
  176. package/dist/cli/doctor-upgrade.js +269 -0
  177. package/dist/cli/doctor.d.ts +13 -29
  178. package/dist/cli/doctor.d.ts.map +1 -1
  179. package/dist/cli/doctor.js +51 -9
  180. package/dist/cli/help.d.ts.map +1 -1
  181. package/dist/cli/help.js +2 -4
  182. package/dist/cli/index.d.ts +48 -172
  183. package/dist/cli/index.d.ts.map +1 -1
  184. package/dist/cli/index.js +39 -132
  185. package/dist/cli/init.d.ts.map +1 -1
  186. package/dist/cli/init.js +43 -37
  187. package/dist/cli/sync.d.ts +5 -21
  188. package/dist/cli/sync.d.ts.map +1 -1
  189. package/dist/cli/sync.js +4 -23
  190. package/dist/cli/tokens-css.d.ts +7 -28
  191. package/dist/cli/tokens-css.d.ts.map +1 -1
  192. package/dist/commands/ShortcutsHelp.d.ts.map +1 -1
  193. package/dist/commands/ShortcutsHelp.js +4 -5
  194. package/dist/commands/define-commands.d.ts +15 -31
  195. package/dist/commands/define-commands.d.ts.map +1 -1
  196. package/dist/commands/define-commands.js +1 -11
  197. package/dist/commands/define-overlays.d.ts +5 -19
  198. package/dist/commands/define-overlays.d.ts.map +1 -1
  199. package/dist/commands/define-overlays.js +3 -11
  200. package/dist/commands/index.d.ts +10 -40
  201. package/dist/commands/index.d.ts.map +1 -1
  202. package/dist/commands/index.js +9 -46
  203. package/dist/{notifications → commands/notifications}/bell.d.ts +1 -1
  204. package/dist/commands/notifications/bell.d.ts.map +1 -0
  205. package/dist/{notifications → commands/notifications}/center.d.ts +2 -2
  206. package/dist/commands/notifications/center.d.ts.map +1 -0
  207. package/dist/{notifications → commands/notifications}/center.js +2 -2
  208. package/dist/{notifications → commands/notifications}/define-notifications.d.ts +3 -3
  209. package/dist/commands/notifications/define-notifications.d.ts.map +1 -0
  210. package/dist/commands/notifications/notify.d.ts +44 -0
  211. package/dist/commands/notifications/notify.d.ts.map +1 -0
  212. package/dist/commands/notifications/notify.js +79 -0
  213. package/dist/{notifications → commands/notifications}/store.d.ts +2 -0
  214. package/dist/commands/notifications/store.d.ts.map +1 -0
  215. package/dist/{notifications → commands/notifications}/store.js +4 -0
  216. package/dist/commands/projectors.d.ts +1 -131
  217. package/dist/commands/projectors.d.ts.map +1 -1
  218. package/dist/commands/projectors.js +2 -73
  219. package/dist/commands/shell-bridge.d.ts +3 -3
  220. package/dist/commands/shortcut-format.d.ts +5 -4
  221. package/dist/commands/shortcut-format.d.ts.map +1 -1
  222. package/dist/common/errors.d.ts +3 -3
  223. package/dist/common/use-measured-widths.d.ts.map +1 -1
  224. package/dist/common/use-measured-widths.js +5 -3
  225. package/dist/common/validate.d.ts +2 -2
  226. package/dist/content/article-layout.d.ts.map +1 -1
  227. package/dist/content/article-layout.js +3 -3
  228. package/dist/content/article-model.d.ts +1 -46
  229. package/dist/content/article-model.d.ts.map +1 -1
  230. package/dist/content/article-model.js +1 -29
  231. package/dist/content/index.d.ts +11 -41
  232. package/dist/content/index.d.ts.map +1 -1
  233. package/dist/content/index.js +3 -35
  234. package/dist/content/markdown.d.ts +1 -1
  235. package/dist/content/markdown.d.ts.map +1 -1
  236. package/dist/content/markdown.js +1 -1
  237. package/dist/content/mermaid.d.ts.map +1 -1
  238. package/dist/content/mermaid.js +7 -7
  239. package/dist/content/slug.d.ts +1 -8
  240. package/dist/content/slug.d.ts.map +1 -1
  241. package/dist/content/slug.js +1 -8
  242. package/dist/content/url-hardening.d.ts +2 -2
  243. package/dist/content/url-hardening.d.ts.map +1 -1
  244. package/dist/content/url-hardening.js +2 -0
  245. package/dist/controls/actions.d.ts +16 -1
  246. package/dist/controls/actions.d.ts.map +1 -1
  247. package/dist/controls/enum-filter.d.ts +1 -1
  248. package/dist/controls/enum-filter.d.ts.map +1 -1
  249. package/dist/controls/filter-context.d.ts.map +1 -1
  250. package/dist/controls/filter-context.js +3 -1
  251. package/dist/controls/filter-set.js +4 -6
  252. package/dist/controls/form-layout.d.ts +1 -1
  253. package/dist/controls/form-layout.d.ts.map +1 -1
  254. package/dist/controls/form-layout.js +1 -1
  255. package/dist/controls/glyphs.d.ts +0 -2
  256. package/dist/controls/glyphs.d.ts.map +1 -1
  257. package/dist/controls/glyphs.js +0 -7
  258. package/dist/controls/index.d.ts +12 -17
  259. package/dist/controls/index.d.ts.map +1 -1
  260. package/dist/controls/index.js +5 -39
  261. package/dist/controls/multi-select-filter.d.ts +4 -3
  262. package/dist/controls/multi-select-filter.d.ts.map +1 -1
  263. package/dist/controls/number-filter.d.ts +4 -3
  264. package/dist/controls/number-filter.d.ts.map +1 -1
  265. package/dist/controls/number-filter.js +3 -1
  266. package/dist/controls/range-filter.d.ts +4 -3
  267. package/dist/controls/range-filter.d.ts.map +1 -1
  268. package/dist/controls/search-filter.d.ts +4 -3
  269. package/dist/controls/search-filter.d.ts.map +1 -1
  270. package/dist/controls/search-filter.js +19 -14
  271. package/dist/controls/select-filter.d.ts +4 -3
  272. package/dist/controls/select-filter.d.ts.map +1 -1
  273. package/dist/controls/sync-button.d.ts.map +1 -1
  274. package/dist/controls/sync-button.js +12 -15
  275. package/dist/controls/toggle-filter.d.ts +4 -3
  276. package/dist/controls/toggle-filter.d.ts.map +1 -1
  277. package/dist/controls/uncontrolled.d.ts +12 -0
  278. package/dist/controls/uncontrolled.d.ts.map +1 -0
  279. package/dist/controls/view-tabs.d.ts +2 -2
  280. package/dist/controls/view-tabs.d.ts.map +1 -1
  281. package/dist/controls-dates/index.d.ts +0 -1
  282. package/dist/controls-dates/index.d.ts.map +1 -1
  283. package/dist/dashboard/index.d.ts +7 -9
  284. package/dist/dashboard/index.d.ts.map +1 -1
  285. package/dist/dashboard/index.js +3 -23
  286. package/dist/dashboard/section.d.ts +4 -6
  287. package/dist/dashboard/section.d.ts.map +1 -1
  288. package/dist/dashboard/section.js +4 -10
  289. package/dist/dashboard/stat-card.d.ts +4 -4
  290. package/dist/dashboard/stat-card.d.ts.map +1 -1
  291. package/dist/dashboard/stat-card.js +3 -3
  292. package/dist/dashboard/widget-header.module.css +9 -7
  293. package/dist/dev-dock.d.ts.map +1 -1
  294. package/dist/dev-dock.js +6 -1
  295. package/dist/format/date.d.ts +0 -34
  296. package/dist/format/date.d.ts.map +1 -1
  297. package/dist/format/date.js +0 -54
  298. package/dist/format/index.d.ts +7 -22
  299. package/dist/format/index.d.ts.map +1 -1
  300. package/dist/format/index.js +2 -43
  301. package/dist/format/number.d.ts +3 -14
  302. package/dist/format/number.d.ts.map +1 -1
  303. package/dist/format/number.js +0 -13
  304. package/dist/format/shared.d.ts +2 -3
  305. package/dist/format/shared.d.ts.map +1 -1
  306. package/dist/forms/index.d.ts +0 -11
  307. package/dist/forms/index.d.ts.map +1 -1
  308. package/dist/forms/index.js +1 -14
  309. package/dist/guard/index.d.ts +6 -21
  310. package/dist/guard/index.d.ts.map +1 -1
  311. package/dist/guard/index.js +27 -115
  312. package/dist/guard/types.d.ts +7 -18
  313. package/dist/guard/types.d.ts.map +1 -1
  314. package/dist/index.d.ts +16 -48
  315. package/dist/index.d.ts.map +1 -1
  316. package/dist/index.js +21 -117
  317. package/dist/provider/create-router.d.ts +44 -0
  318. package/dist/provider/create-router.d.ts.map +1 -0
  319. package/dist/provider/create-router.js +62 -0
  320. package/dist/provider/hotkeys.d.ts +8 -0
  321. package/dist/provider/hotkeys.d.ts.map +1 -0
  322. package/dist/provider/hotkeys.js +50 -0
  323. package/dist/provider/index.d.ts +33 -110
  324. package/dist/provider/index.d.ts.map +1 -1
  325. package/dist/provider/index.js +182 -82
  326. package/dist/provider/lab-theme.d.ts.map +1 -1
  327. package/dist/provider/route-transition.d.ts +76 -0
  328. package/dist/provider/route-transition.d.ts.map +1 -0
  329. package/dist/provider/route-transition.js +98 -0
  330. package/dist/provider/spotlight-actions.d.ts +10 -0
  331. package/dist/provider/spotlight-actions.d.ts.map +1 -0
  332. package/dist/provider/spotlight-actions.js +55 -0
  333. package/dist/provider/test-router.d.ts +6 -0
  334. package/dist/provider/test-router.d.ts.map +1 -0
  335. package/dist/provider/test-router.js +18 -0
  336. package/dist/query-client.d.ts +4 -20
  337. package/dist/query-client.d.ts.map +1 -1
  338. package/dist/query-client.js +2 -2
  339. package/dist/router-tanstack/index.d.ts +18 -64
  340. package/dist/router-tanstack/index.d.ts.map +1 -1
  341. package/dist/router-tanstack/index.js +2 -16
  342. package/dist/router-tanstack/nav.d.ts +12 -1
  343. package/dist/router-tanstack/nav.d.ts.map +1 -1
  344. package/dist/router-tanstack/nav.js +8 -1
  345. package/dist/router-tanstack/search-store.d.ts +1 -1
  346. package/dist/router-tanstack/search-store.d.ts.map +1 -1
  347. package/dist/router-tanstack/use-nav.d.ts +8 -9
  348. package/dist/router-tanstack/use-nav.d.ts.map +1 -1
  349. package/dist/router-tanstack/use-nav.js +20 -1
  350. package/dist/shell/app-mobile-nav.d.ts.map +1 -1
  351. package/dist/shell/app-sidebar.js +1 -1
  352. package/dist/shell/index.d.ts +31 -10
  353. package/dist/shell/index.d.ts.map +1 -1
  354. package/dist/shell/index.js +14 -3
  355. package/dist/shell/page-aside.d.ts +2 -2
  356. package/dist/shell/page-aside.d.ts.map +1 -1
  357. package/dist/shell/page-aside.js +31 -12
  358. package/dist/shell/page-bar.d.ts +2 -2
  359. package/dist/shell/page-bar.d.ts.map +1 -1
  360. package/dist/shell/page-bar.js +1 -1
  361. package/dist/state.d.ts +10 -12
  362. package/dist/state.d.ts.map +1 -1
  363. package/dist/state.js +4 -6
  364. package/dist/styles.css +107 -7
  365. package/dist/surfaces.d.ts +28 -103
  366. package/dist/surfaces.d.ts.map +1 -1
  367. package/dist/surfaces.js +54 -143
  368. package/dist/{data → table}/data-table-state.d.ts +1 -1
  369. package/dist/table/data-table-state.d.ts.map +1 -0
  370. package/dist/{data → table}/data-table-state.js +4 -3
  371. package/dist/{data → table}/data-table.d.ts +28 -49
  372. package/dist/table/data-table.d.ts.map +1 -0
  373. package/dist/{data → table}/data-table.js +74 -60
  374. package/dist/table/index.d.ts +18 -0
  375. package/dist/table/index.d.ts.map +1 -0
  376. package/dist/{data/table.js → table/index.js} +1 -1
  377. package/dist/table/query-branch.d.ts.map +1 -0
  378. package/dist/table/table-features.d.ts +69 -0
  379. package/dist/table/table-features.d.ts.map +1 -0
  380. package/dist/table/table-features.js +49 -0
  381. package/dist/telemetry.d.ts +77 -0
  382. package/dist/telemetry.d.ts.map +1 -0
  383. package/dist/telemetry.js +33 -0
  384. package/dist/theme/index.d.ts +10 -21
  385. package/dist/theme/index.d.ts.map +1 -1
  386. package/dist/theme/index.js +3 -14
  387. package/dist/theme/theme-toggle.d.ts.map +1 -1
  388. package/dist/theme/theme-toggle.js +7 -33
  389. package/dist/theme/theme-toggle.module.css +30 -0
  390. package/dist/theme/theme-toggle.module.css.d.ts +10 -0
  391. package/dist/theme-lab/derive-controls.d.ts.map +1 -1
  392. package/dist/theme-lab/derive-controls.js +5 -3
  393. package/dist/theme-lab/derive-state.d.ts.map +1 -1
  394. package/dist/theme-lab/derive-state.js +2 -1
  395. package/dist/tokens/core.d.ts +360 -0
  396. package/dist/tokens/core.d.ts.map +1 -0
  397. package/dist/tokens/core.js +708 -0
  398. package/dist/tokens/derive.d.ts +1 -1
  399. package/dist/tokens/derive.d.ts.map +1 -1
  400. package/dist/tokens/index.d.ts +5 -373
  401. package/dist/tokens/index.d.ts.map +1 -1
  402. package/dist/tokens/index.js +8 -700
  403. package/dist/tokens/palette.d.ts +2 -6
  404. package/dist/tokens/palette.d.ts.map +1 -1
  405. package/dist/tokens/palette.js +1 -4
  406. package/dist/vite.d.ts +4 -3
  407. package/dist/vite.d.ts.map +1 -1
  408. package/llms.txt +43 -85
  409. package/package.json +77 -170
  410. package/src/agent/ai-sdk-transport.ts +57 -37
  411. package/src/{agent-chat → agent/chat}/composer.tsx +29 -30
  412. package/src/{agent-chat → agent/chat}/message-affordances.ts +8 -5
  413. package/src/{agent-chat → agent/chat}/thread-feed-row.tsx +30 -35
  414. package/src/{agent-chat → agent/chat}/thread-feed.tsx +40 -35
  415. package/src/{agent-chat → agent/chat}/thread-message.tsx +37 -35
  416. package/src/{agent-chat → agent/chat}/thread-outcome-card.tsx +5 -5
  417. package/src/{agent-chat → agent/chat}/tool-chip.tsx +12 -12
  418. package/src/{agent-chat → agent/chat}/use-keyboard-inset.ts +1 -1
  419. package/src/{agent-chat → agent/chat}/virtualize.ts +5 -5
  420. package/src/agent/error.ts +43 -0
  421. package/src/agent/history.ts +2 -107
  422. package/src/agent/id.ts +4 -5
  423. package/src/agent/index.ts +23 -112
  424. package/src/agent/outcome.ts +3 -56
  425. package/src/agent/part-list.tsx +3 -3
  426. package/src/agent/parts.ts +23 -22
  427. package/src/agent/run-committer.ts +64 -0
  428. package/src/agent/run-records.ts +147 -0
  429. package/src/agent/thread.ts +24 -231
  430. package/src/agent/transport.ts +6 -96
  431. package/src/agent/use-agent-thread-runs.ts +364 -199
  432. package/src/charts/BandStrip.tsx +276 -0
  433. package/src/charts/Bars.tsx +141 -0
  434. package/src/charts/CartesianChart.tsx +206 -0
  435. package/src/charts/ChartCard.tsx +178 -0
  436. package/src/charts/Donut.tsx +256 -0
  437. package/src/charts/DualPanel.tsx +326 -0
  438. package/src/charts/Heatmap.tsx +282 -0
  439. package/src/charts/Lines.tsx +151 -0
  440. package/src/charts/MirroredBars.tsx +303 -0
  441. package/src/charts/Sparkline.tsx +176 -0
  442. package/src/charts/StackedArea.tsx +80 -0
  443. package/src/charts/box.tsx +96 -0
  444. package/src/charts/card-context.ts +11 -0
  445. package/src/charts/chart-box.module.css +64 -0
  446. package/src/charts/chart-box.module.css.d.ts +12 -0
  447. package/src/charts/chart-card.module.css +25 -0
  448. package/src/charts/chart-card.module.css.d.ts +8 -0
  449. package/src/charts/chart-legend.module.css +38 -0
  450. package/src/charts/chart-legend.module.css.d.ts +10 -0
  451. package/src/charts/compile.ts +585 -0
  452. package/src/charts/cursor.ts +282 -0
  453. package/src/charts/curves.ts +111 -0
  454. package/src/charts/donut.module.css +54 -0
  455. package/src/charts/donut.module.css.d.ts +9 -0
  456. package/src/charts/host.tsx +60 -0
  457. package/src/charts/index.ts +41 -178
  458. package/src/charts/legend.tsx +204 -0
  459. package/src/charts/marks.ts +201 -0
  460. package/src/charts/panel.tsx +227 -0
  461. package/src/charts/scales.ts +237 -0
  462. package/src/charts/sizing.ts +47 -0
  463. package/src/charts/state.tsx +80 -0
  464. package/src/charts/theme.ts +65 -0
  465. package/src/charts/types.ts +242 -0
  466. package/src/cli/audit-allows.ts +8 -30
  467. package/src/cli/config.ts +14 -43
  468. package/src/cli/doctor-upgrade.ts +392 -0
  469. package/src/cli/doctor.ts +81 -72
  470. package/src/cli/help.ts +2 -4
  471. package/src/cli/index.ts +100 -384
  472. package/src/cli/init.ts +60 -51
  473. package/src/cli/sync.ts +13 -68
  474. package/src/cli/tokens-css.ts +7 -28
  475. package/src/commands/ShortcutsHelp.tsx +8 -9
  476. package/src/commands/define-commands.ts +16 -43
  477. package/src/commands/define-overlays.ts +12 -36
  478. package/src/commands/index.ts +11 -94
  479. package/src/{notifications → commands/notifications}/bell.tsx +2 -2
  480. package/src/{notifications → commands/notifications}/center.tsx +7 -5
  481. package/src/{notifications → commands/notifications}/define-notifications.ts +3 -3
  482. package/src/commands/notifications/notify.tsx +158 -0
  483. package/src/{notifications → commands/notifications}/store.ts +10 -2
  484. package/src/commands/projectors.ts +5 -225
  485. package/src/commands/shell-bridge.ts +5 -5
  486. package/src/commands/shortcut-format.ts +5 -4
  487. package/src/common/errors.ts +3 -3
  488. package/src/common/use-measured-widths.ts +6 -3
  489. package/src/common/validate.ts +2 -2
  490. package/src/content/article-layout.tsx +37 -38
  491. package/src/content/article-model.ts +1 -84
  492. package/src/content/index.ts +12 -83
  493. package/src/content/markdown.tsx +4 -3
  494. package/src/content/mermaid.tsx +9 -7
  495. package/src/content/slug.ts +1 -16
  496. package/src/content/url-hardening.ts +8 -2
  497. package/src/controls/actions.tsx +24 -1
  498. package/src/controls/enum-filter.tsx +1 -1
  499. package/src/controls/filter-context.tsx +3 -1
  500. package/src/controls/filter-set.tsx +5 -7
  501. package/src/controls/form-layout.tsx +2 -2
  502. package/src/controls/glyphs.tsx +0 -10
  503. package/src/controls/index.ts +13 -64
  504. package/src/controls/multi-select-filter.tsx +5 -4
  505. package/src/controls/number-filter.tsx +8 -4
  506. package/src/controls/range-filter.tsx +5 -4
  507. package/src/controls/search-filter.tsx +25 -19
  508. package/src/controls/select-filter.tsx +5 -4
  509. package/src/controls/sync-button.tsx +18 -20
  510. package/src/controls/toggle-filter.tsx +5 -4
  511. package/src/controls/uncontrolled.ts +12 -0
  512. package/src/controls/view-tabs.tsx +3 -3
  513. package/src/controls-dates/date-range-picker.tsx +1 -1
  514. package/src/controls-dates/index.ts +0 -1
  515. package/src/dashboard/index.ts +7 -48
  516. package/src/dashboard/section.tsx +11 -40
  517. package/src/dashboard/stat-card.tsx +14 -16
  518. package/src/dashboard/widget-header.module.css +9 -7
  519. package/src/dev-dock.tsx +14 -27
  520. package/src/format/date.ts +2 -92
  521. package/src/format/index.ts +7 -53
  522. package/src/format/number.ts +3 -26
  523. package/src/format/shared.ts +2 -3
  524. package/src/forms/index.ts +0 -23
  525. package/src/guard/index.ts +36 -191
  526. package/src/guard/types.ts +6 -19
  527. package/src/index.ts +30 -282
  528. package/src/provider/create-router.tsx +138 -0
  529. package/src/provider/hotkeys.ts +70 -0
  530. package/src/provider/index.tsx +260 -230
  531. package/src/provider/lab-theme.ts +3 -2
  532. package/src/provider/route-transition.ts +199 -0
  533. package/src/provider/spotlight-actions.tsx +69 -0
  534. package/src/provider/test-router.tsx +25 -0
  535. package/src/query-client.ts +4 -22
  536. package/src/router-tanstack/index.ts +18 -112
  537. package/src/router-tanstack/nav.ts +28 -2
  538. package/src/router-tanstack/search-store.ts +9 -2
  539. package/src/router-tanstack/use-nav.ts +47 -13
  540. package/src/shell/app-mobile-nav.tsx +3 -2
  541. package/src/shell/app-sidebar.tsx +1 -1
  542. package/src/shell/aside-docking.ts +1 -1
  543. package/src/shell/index.tsx +61 -20
  544. package/src/shell/page-aside.tsx +47 -23
  545. package/src/shell/page-bar.tsx +3 -3
  546. package/src/shell/page-title.tsx +1 -1
  547. package/src/state.ts +11 -37
  548. package/src/styles.css +107 -7
  549. package/src/surfaces.ts +56 -151
  550. package/src/{data → table}/data-table-state.ts +5 -4
  551. package/src/{data → table}/data-table.tsx +170 -161
  552. package/src/table/index.ts +18 -0
  553. package/src/table/table-features.ts +102 -0
  554. package/src/telemetry.ts +110 -0
  555. package/src/theme/index.ts +22 -47
  556. package/src/theme/theme-toggle.module.css +30 -0
  557. package/src/theme/theme-toggle.module.css.d.ts +10 -0
  558. package/src/theme/theme-toggle.tsx +15 -43
  559. package/src/theme-lab/derive-controls.tsx +5 -3
  560. package/src/theme-lab/derive-state.ts +2 -1
  561. package/src/tokens/core.ts +1163 -0
  562. package/src/tokens/derive.ts +1 -1
  563. package/src/tokens/index.ts +14 -1181
  564. package/src/tokens/palette.ts +3 -7
  565. package/src/vite.ts +3 -3
  566. package/agent/templates/query-client.ts.tpl +0 -26
  567. package/dist/agent/adapter.d.ts +0 -150
  568. package/dist/agent/adapter.d.ts.map +0 -1
  569. package/dist/agent/adapter.js +0 -482
  570. package/dist/agent/use-agent-stream.d.ts +0 -35
  571. package/dist/agent/use-agent-stream.d.ts.map +0 -1
  572. package/dist/agent/use-agent-stream.js +0 -59
  573. package/dist/agent-chat/composer.d.ts.map +0 -1
  574. package/dist/agent-chat/index.d.ts +0 -31
  575. package/dist/agent-chat/index.d.ts.map +0 -1
  576. package/dist/agent-chat/index.js +0 -19
  577. package/dist/agent-chat/message-affordances.d.ts.map +0 -1
  578. package/dist/agent-chat/relative-time.d.ts.map +0 -1
  579. package/dist/agent-chat/thread-detail-panel.d.ts +0 -28
  580. package/dist/agent-chat/thread-detail-panel.d.ts.map +0 -1
  581. package/dist/agent-chat/thread-detail-panel.js +0 -115
  582. package/dist/agent-chat/thread-feed-row.d.ts.map +0 -1
  583. package/dist/agent-chat/thread-feed.d.ts.map +0 -1
  584. package/dist/agent-chat/thread-message.d.ts.map +0 -1
  585. package/dist/agent-chat/thread-outcome-card.d.ts.map +0 -1
  586. package/dist/agent-chat/thread-workspace.d.ts +0 -44
  587. package/dist/agent-chat/thread-workspace.d.ts.map +0 -1
  588. package/dist/agent-chat/thread-workspace.js +0 -153
  589. package/dist/agent-chat/tool-chip.d.ts.map +0 -1
  590. package/dist/agent-chat/use-keyboard-inset.d.ts.map +0 -1
  591. package/dist/agent-chat/virtualize.d.ts.map +0 -1
  592. package/dist/charts/cursor/resolve.d.ts +0 -75
  593. package/dist/charts/cursor/resolve.d.ts.map +0 -1
  594. package/dist/charts/cursor/resolve.js +0 -91
  595. package/dist/charts/cursor/scope.d.ts +0 -20
  596. package/dist/charts/cursor/scope.d.ts.map +0 -1
  597. package/dist/charts/cursor/scope.js +0 -20
  598. package/dist/charts/cursor/store.d.ts +0 -35
  599. package/dist/charts/cursor/store.d.ts.map +0 -1
  600. package/dist/charts/cursor/store.js +0 -25
  601. package/dist/charts/cursor/touch-pin.d.ts +0 -45
  602. package/dist/charts/cursor/touch-pin.d.ts.map +0 -1
  603. package/dist/charts/cursor/touch-pin.js +0 -79
  604. package/dist/charts/hooks/use-discrete-cursor.d.ts +0 -66
  605. package/dist/charts/hooks/use-discrete-cursor.d.ts.map +0 -1
  606. package/dist/charts/hooks/use-discrete-cursor.js +0 -198
  607. package/dist/charts/hooks/use-hysteresis.d.ts +0 -18
  608. package/dist/charts/hooks/use-hysteresis.d.ts.map +0 -1
  609. package/dist/charts/hooks/use-hysteresis.js +0 -12
  610. package/dist/charts/hooks/useBandPlot.d.ts +0 -145
  611. package/dist/charts/hooks/useBandPlot.d.ts.map +0 -1
  612. package/dist/charts/hooks/useBandPlot.js +0 -178
  613. package/dist/charts/hooks/useChartCursor.d.ts +0 -75
  614. package/dist/charts/hooks/useChartCursor.d.ts.map +0 -1
  615. package/dist/charts/hooks/useChartCursor.js +0 -200
  616. package/dist/charts/hooks/useChartSize.d.ts +0 -29
  617. package/dist/charts/hooks/useChartSize.d.ts.map +0 -1
  618. package/dist/charts/hooks/useChartSize.js +0 -8
  619. package/dist/charts/kinds/BandStrip.d.ts +0 -132
  620. package/dist/charts/kinds/BandStrip.d.ts.map +0 -1
  621. package/dist/charts/kinds/BandStrip.js +0 -241
  622. package/dist/charts/kinds/Bars.d.ts +0 -141
  623. package/dist/charts/kinds/Bars.d.ts.map +0 -1
  624. package/dist/charts/kinds/Bars.js +0 -343
  625. package/dist/charts/kinds/Donut.d.ts +0 -77
  626. package/dist/charts/kinds/Donut.d.ts.map +0 -1
  627. package/dist/charts/kinds/Donut.js +0 -245
  628. package/dist/charts/kinds/DualPanel.d.ts +0 -111
  629. package/dist/charts/kinds/DualPanel.d.ts.map +0 -1
  630. package/dist/charts/kinds/DualPanel.js +0 -471
  631. package/dist/charts/kinds/Heatmap.d.ts +0 -85
  632. package/dist/charts/kinds/Heatmap.d.ts.map +0 -1
  633. package/dist/charts/kinds/Heatmap.js +0 -243
  634. package/dist/charts/kinds/MirroredBars.d.ts +0 -98
  635. package/dist/charts/kinds/MirroredBars.d.ts.map +0 -1
  636. package/dist/charts/kinds/MirroredBars.js +0 -292
  637. package/dist/charts/kinds/MultiLine.d.ts +0 -87
  638. package/dist/charts/kinds/MultiLine.d.ts.map +0 -1
  639. package/dist/charts/kinds/MultiLine.js +0 -176
  640. package/dist/charts/kinds/StackedArea.d.ts +0 -73
  641. package/dist/charts/kinds/StackedArea.d.ts.map +0 -1
  642. package/dist/charts/kinds/StackedArea.js +0 -135
  643. package/dist/charts/kinds/ZonedLine.d.ts +0 -97
  644. package/dist/charts/kinds/ZonedLine.d.ts.map +0 -1
  645. package/dist/charts/kinds/ZonedLine.js +0 -155
  646. package/dist/charts/kinds/band-chrome.d.ts +0 -31
  647. package/dist/charts/kinds/band-chrome.d.ts.map +0 -1
  648. package/dist/charts/kinds/band-chrome.js +0 -71
  649. package/dist/charts/kinds/donut-layout.d.ts +0 -47
  650. package/dist/charts/kinds/donut-layout.d.ts.map +0 -1
  651. package/dist/charts/kinds/donut-layout.js +0 -52
  652. package/dist/charts/layout/auto-margin.d.ts +0 -122
  653. package/dist/charts/layout/auto-margin.d.ts.map +0 -1
  654. package/dist/charts/layout/auto-margin.js +0 -81
  655. package/dist/charts/layout/end-labels.d.ts +0 -64
  656. package/dist/charts/layout/end-labels.d.ts.map +0 -1
  657. package/dist/charts/layout/end-labels.js +0 -76
  658. package/dist/charts/layout/log-ticks.d.ts +0 -27
  659. package/dist/charts/layout/log-ticks.d.ts.map +0 -1
  660. package/dist/charts/layout/log-ticks.js +0 -42
  661. package/dist/charts/primitives/AreaGradient.d.ts +0 -18
  662. package/dist/charts/primitives/AreaGradient.d.ts.map +0 -1
  663. package/dist/charts/primitives/AreaGradient.js +0 -13
  664. package/dist/charts/primitives/Axes.d.ts +0 -83
  665. package/dist/charts/primitives/Axes.d.ts.map +0 -1
  666. package/dist/charts/primitives/Axes.js +0 -168
  667. package/dist/charts/primitives/CartesianChart.d.ts +0 -257
  668. package/dist/charts/primitives/CartesianChart.d.ts.map +0 -1
  669. package/dist/charts/primitives/CartesianChart.js +0 -549
  670. package/dist/charts/primitives/ChartCard.d.ts +0 -66
  671. package/dist/charts/primitives/ChartCard.d.ts.map +0 -1
  672. package/dist/charts/primitives/ChartCard.js +0 -143
  673. package/dist/charts/primitives/ChartFrame.d.ts +0 -156
  674. package/dist/charts/primitives/ChartFrame.d.ts.map +0 -1
  675. package/dist/charts/primitives/ChartFrame.js +0 -241
  676. package/dist/charts/primitives/ChartLegend.d.ts +0 -67
  677. package/dist/charts/primitives/ChartLegend.d.ts.map +0 -1
  678. package/dist/charts/primitives/ChartLegend.js +0 -292
  679. package/dist/charts/primitives/ChartPending.d.ts +0 -113
  680. package/dist/charts/primitives/ChartPending.d.ts.map +0 -1
  681. package/dist/charts/primitives/ChartPending.js +0 -117
  682. package/dist/charts/primitives/ChartTooltip.d.ts +0 -59
  683. package/dist/charts/primitives/ChartTooltip.d.ts.map +0 -1
  684. package/dist/charts/primitives/ChartTooltip.js +0 -197
  685. package/dist/charts/primitives/Crosshair.d.ts +0 -26
  686. package/dist/charts/primitives/Crosshair.d.ts.map +0 -1
  687. package/dist/charts/primitives/Crosshair.js +0 -23
  688. package/dist/charts/primitives/HatchPattern.d.ts +0 -31
  689. package/dist/charts/primitives/HatchPattern.d.ts.map +0 -1
  690. package/dist/charts/primitives/HatchPattern.js +0 -31
  691. package/dist/charts/primitives/HoverOverlay.d.ts +0 -45
  692. package/dist/charts/primitives/HoverOverlay.d.ts.map +0 -1
  693. package/dist/charts/primitives/HoverOverlay.js +0 -72
  694. package/dist/charts/primitives/HoverOverlay.module.css +0 -13
  695. package/dist/charts/primitives/HoverOverlay.module.css.d.ts +0 -8
  696. package/dist/charts/primitives/XZoneRects.d.ts +0 -54
  697. package/dist/charts/primitives/XZoneRects.d.ts.map +0 -1
  698. package/dist/charts/primitives/XZoneRects.js +0 -65
  699. package/dist/charts/primitives/ZoneRects.d.ts +0 -38
  700. package/dist/charts/primitives/ZoneRects.d.ts.map +0 -1
  701. package/dist/charts/primitives/ZoneRects.js +0 -30
  702. package/dist/charts/primitives/chart-card-context.d.ts +0 -33
  703. package/dist/charts/primitives/chart-card-context.d.ts.map +0 -1
  704. package/dist/charts/primitives/chart-card-context.js +0 -18
  705. package/dist/charts/primitives/chart-frame-layout.d.ts +0 -185
  706. package/dist/charts/primitives/chart-frame-layout.d.ts.map +0 -1
  707. package/dist/charts/primitives/chart-frame-layout.js +0 -175
  708. package/dist/charts/primitives/chart-layout.d.ts +0 -112
  709. package/dist/charts/primitives/chart-layout.d.ts.map +0 -1
  710. package/dist/charts/primitives/chart-layout.js +0 -175
  711. package/dist/charts/primitives/chart-tier.d.ts +0 -16
  712. package/dist/charts/primitives/chart-tier.d.ts.map +0 -1
  713. package/dist/charts/primitives/chart-tier.js +0 -44
  714. package/dist/charts/primitives/legend-disclosure.d.ts +0 -27
  715. package/dist/charts/primitives/legend-disclosure.d.ts.map +0 -1
  716. package/dist/charts/primitives/legend-disclosure.js +0 -153
  717. package/dist/charts/series.d.ts +0 -189
  718. package/dist/charts/series.d.ts.map +0 -1
  719. package/dist/charts/series.js +0 -84
  720. package/dist/charts/sparklines/BarSparkline.d.ts +0 -37
  721. package/dist/charts/sparklines/BarSparkline.d.ts.map +0 -1
  722. package/dist/charts/sparklines/BarSparkline.js +0 -53
  723. package/dist/charts/sparklines/LineSparkline.d.ts +0 -15
  724. package/dist/charts/sparklines/LineSparkline.d.ts.map +0 -1
  725. package/dist/charts/sparklines/LineSparkline.js +0 -51
  726. package/dist/charts/sparklines/index.d.ts +0 -3
  727. package/dist/charts/sparklines/index.d.ts.map +0 -1
  728. package/dist/charts/sparklines/index.js +0 -6
  729. package/dist/charts/utils/domain.d.ts +0 -35
  730. package/dist/charts/utils/domain.d.ts.map +0 -1
  731. package/dist/charts/utils/domain.js +0 -12
  732. package/dist/charts/utils/format.d.ts +0 -8
  733. package/dist/charts/utils/format.d.ts.map +0 -1
  734. package/dist/charts/utils/format.js +0 -20
  735. package/dist/charts/utils/measure-text.d.ts +0 -25
  736. package/dist/charts/utils/measure-text.d.ts.map +0 -1
  737. package/dist/charts/utils/measure-text.js +0 -64
  738. package/dist/charts/utils/ticks.d.ts +0 -103
  739. package/dist/charts/utils/ticks.d.ts.map +0 -1
  740. package/dist/charts/utils/ticks.js +0 -92
  741. package/dist/commands/overlays-mount.d.ts +0 -122
  742. package/dist/commands/overlays-mount.d.ts.map +0 -1
  743. package/dist/commands/overlays-mount.js +0 -125
  744. package/dist/commands/useCommandHotkeys.d.ts +0 -14
  745. package/dist/commands/useCommandHotkeys.d.ts.map +0 -1
  746. package/dist/commands/useCommandHotkeys.js +0 -45
  747. package/dist/content/article-actions.d.ts +0 -39
  748. package/dist/content/article-actions.d.ts.map +0 -1
  749. package/dist/content/article-actions.js +0 -28
  750. package/dist/content/article-card.d.ts +0 -58
  751. package/dist/content/article-card.d.ts.map +0 -1
  752. package/dist/content/article-card.js +0 -79
  753. package/dist/content/article-card.module.css +0 -111
  754. package/dist/content/mdx.d.ts +0 -20
  755. package/dist/content/mdx.d.ts.map +0 -1
  756. package/dist/content/mdx.js +0 -64
  757. package/dist/controls/compare-filter.d.ts +0 -42
  758. package/dist/controls/compare-filter.d.ts.map +0 -1
  759. package/dist/controls/compare-filter.js +0 -38
  760. package/dist/controls/slider-control.d.ts +0 -36
  761. package/dist/controls/slider-control.d.ts.map +0 -1
  762. package/dist/controls/slider-control.js +0 -64
  763. package/dist/dashboard/widget-grid.d.ts +0 -27
  764. package/dist/dashboard/widget-grid.d.ts.map +0 -1
  765. package/dist/dashboard/widget-grid.js +0 -40
  766. package/dist/dashboard/widget-grid.module.css +0 -69
  767. package/dist/data/data-table-state.d.ts.map +0 -1
  768. package/dist/data/data-table.d.ts.map +0 -1
  769. package/dist/data/query-branch.d.ts.map +0 -1
  770. package/dist/data/table.d.ts +0 -24
  771. package/dist/data/table.d.ts.map +0 -1
  772. package/dist/data/virtual-list.d.ts +0 -133
  773. package/dist/data/virtual-list.d.ts.map +0 -1
  774. package/dist/data/virtual-list.js +0 -157
  775. package/dist/data/virtual.d.ts +0 -21
  776. package/dist/data/virtual.d.ts.map +0 -1
  777. package/dist/data/virtual.js +0 -4
  778. package/dist/forms/FormErrorSummary.d.ts +0 -30
  779. package/dist/forms/FormErrorSummary.d.ts.map +0 -1
  780. package/dist/forms/FormErrorSummary.js +0 -30
  781. package/dist/forms/use-field-array.d.ts +0 -60
  782. package/dist/forms/use-field-array.d.ts.map +0 -1
  783. package/dist/forms/use-field-array.js +0 -20
  784. package/dist/forms/use-form-draft.d.ts +0 -76
  785. package/dist/forms/use-form-draft.d.ts.map +0 -1
  786. package/dist/forms/use-form-draft.js +0 -92
  787. package/dist/forms/use-form-submit.d.ts +0 -88
  788. package/dist/forms/use-form-submit.d.ts.map +0 -1
  789. package/dist/forms/use-form-submit.js +0 -63
  790. package/dist/notifications/bell.d.ts.map +0 -1
  791. package/dist/notifications/center.d.ts.map +0 -1
  792. package/dist/notifications/define-notifications.d.ts.map +0 -1
  793. package/dist/notifications/index.d.ts +0 -40
  794. package/dist/notifications/index.d.ts.map +0 -1
  795. package/dist/notifications/index.js +0 -54
  796. package/dist/notifications/mount-guard.d.ts +0 -8
  797. package/dist/notifications/mount-guard.d.ts.map +0 -1
  798. package/dist/notifications/mount-guard.js +0 -18
  799. package/dist/notifications/notify.d.ts +0 -149
  800. package/dist/notifications/notify.d.ts.map +0 -1
  801. package/dist/notifications/notify.js +0 -171
  802. package/dist/notifications/store.d.ts.map +0 -1
  803. package/dist/provider/connectivity-indicator.d.ts +0 -13
  804. package/dist/provider/connectivity-indicator.d.ts.map +0 -1
  805. package/dist/provider/connectivity-indicator.js +0 -205
  806. package/dist/provider/connectivity-provider.d.ts +0 -7
  807. package/dist/provider/connectivity-provider.d.ts.map +0 -1
  808. package/dist/provider/connectivity-provider.js +0 -128
  809. package/dist/provider/connectivity-types.d.ts +0 -36
  810. package/dist/provider/connectivity-types.d.ts.map +0 -1
  811. package/dist/provider/use-connectivity.d.ts +0 -3
  812. package/dist/provider/use-connectivity.d.ts.map +0 -1
  813. package/dist/provider/use-connectivity.js +0 -14
  814. package/dist/query-devtools.d.ts +0 -21
  815. package/dist/query-devtools.d.ts.map +0 -1
  816. package/dist/query-devtools.js +0 -13
  817. package/src/agent/adapter.ts +0 -945
  818. package/src/agent/use-agent-stream.ts +0 -154
  819. package/src/agent-chat/index.ts +0 -54
  820. package/src/agent-chat/thread-detail-panel.tsx +0 -201
  821. package/src/agent-chat/thread-workspace.tsx +0 -279
  822. package/src/charts/cursor/resolve.ts +0 -198
  823. package/src/charts/cursor/scope.tsx +0 -35
  824. package/src/charts/cursor/store.ts +0 -58
  825. package/src/charts/cursor/touch-pin.ts +0 -138
  826. package/src/charts/hooks/use-discrete-cursor.ts +0 -335
  827. package/src/charts/hooks/use-hysteresis.ts +0 -26
  828. package/src/charts/hooks/useBandPlot.ts +0 -383
  829. package/src/charts/hooks/useChartCursor.ts +0 -367
  830. package/src/charts/hooks/useChartSize.ts +0 -35
  831. package/src/charts/kinds/BandStrip.tsx +0 -449
  832. package/src/charts/kinds/Bars.tsx +0 -589
  833. package/src/charts/kinds/Donut.tsx +0 -368
  834. package/src/charts/kinds/DualPanel.tsx +0 -712
  835. package/src/charts/kinds/Heatmap.tsx +0 -396
  836. package/src/charts/kinds/MirroredBars.tsx +0 -469
  837. package/src/charts/kinds/MultiLine.tsx +0 -322
  838. package/src/charts/kinds/StackedArea.tsx +0 -267
  839. package/src/charts/kinds/ZonedLine.tsx +0 -301
  840. package/src/charts/kinds/band-chrome.tsx +0 -91
  841. package/src/charts/kinds/donut-layout.ts +0 -82
  842. package/src/charts/layout/auto-margin.ts +0 -242
  843. package/src/charts/layout/end-labels.ts +0 -135
  844. package/src/charts/layout/log-ticks.ts +0 -90
  845. package/src/charts/primitives/AreaGradient.tsx +0 -26
  846. package/src/charts/primitives/Axes.tsx +0 -271
  847. package/src/charts/primitives/CartesianChart.tsx +0 -1002
  848. package/src/charts/primitives/ChartCard.tsx +0 -280
  849. package/src/charts/primitives/ChartFrame.tsx +0 -493
  850. package/src/charts/primitives/ChartLegend.tsx +0 -422
  851. package/src/charts/primitives/ChartPending.tsx +0 -243
  852. package/src/charts/primitives/ChartTooltip.tsx +0 -265
  853. package/src/charts/primitives/Crosshair.tsx +0 -43
  854. package/src/charts/primitives/HatchPattern.tsx +0 -55
  855. package/src/charts/primitives/HoverOverlay.module.css +0 -13
  856. package/src/charts/primitives/HoverOverlay.module.css.d.ts +0 -8
  857. package/src/charts/primitives/HoverOverlay.tsx +0 -109
  858. package/src/charts/primitives/XZoneRects.tsx +0 -132
  859. package/src/charts/primitives/ZoneRects.tsx +0 -67
  860. package/src/charts/primitives/chart-card-context.ts +0 -46
  861. package/src/charts/primitives/chart-frame-layout.ts +0 -430
  862. package/src/charts/primitives/chart-layout.ts +0 -318
  863. package/src/charts/primitives/chart-tier.tsx +0 -76
  864. package/src/charts/primitives/legend-disclosure.tsx +0 -178
  865. package/src/charts/series.ts +0 -276
  866. package/src/charts/sparklines/BarSparkline.tsx +0 -94
  867. package/src/charts/sparklines/LineSparkline.tsx +0 -71
  868. package/src/charts/sparklines/index.ts +0 -2
  869. package/src/charts/theme.tsx +0 -53
  870. package/src/charts/utils/domain.ts +0 -41
  871. package/src/charts/utils/format.ts +0 -19
  872. package/src/charts/utils/measure-text.ts +0 -109
  873. package/src/charts/utils/ticks.ts +0 -239
  874. package/src/commands/overlays-mount.tsx +0 -333
  875. package/src/commands/useCommandHotkeys.ts +0 -114
  876. package/src/content/article-actions.ts +0 -72
  877. package/src/content/article-card.module.css +0 -111
  878. package/src/content/article-card.tsx +0 -174
  879. package/src/content/mdx.tsx +0 -127
  880. package/src/controls/compare-filter.tsx +0 -81
  881. package/src/controls/slider-control.tsx +0 -159
  882. package/src/dashboard/widget-grid.module.css +0 -69
  883. package/src/dashboard/widget-grid.tsx +0 -146
  884. package/src/data/table.ts +0 -39
  885. package/src/data/virtual-list.tsx +0 -356
  886. package/src/data/virtual.ts +0 -26
  887. package/src/forms/FormErrorSummary.tsx +0 -71
  888. package/src/forms/use-field-array.ts +0 -94
  889. package/src/forms/use-form-draft.ts +0 -262
  890. package/src/forms/use-form-submit.ts +0 -199
  891. package/src/notifications/index.ts +0 -88
  892. package/src/notifications/mount-guard.ts +0 -38
  893. package/src/notifications/notify.tsx +0 -379
  894. package/src/provider/connectivity-indicator.tsx +0 -267
  895. package/src/provider/connectivity-provider.tsx +0 -189
  896. package/src/provider/connectivity-types.ts +0 -42
  897. package/src/provider/use-connectivity.ts +0 -26
  898. package/src/query-devtools.tsx +0 -40
  899. /package/dist/{agent-chat → agent/chat}/message-affordances.js +0 -0
  900. /package/dist/{agent-chat → agent/chat}/relative-time.d.ts +0 -0
  901. /package/dist/{agent-chat → agent/chat}/relative-time.js +0 -0
  902. /package/dist/{agent-chat → agent/chat}/use-keyboard-inset.d.ts +0 -0
  903. /package/dist/{agent-chat → agent/chat}/virtualize.js +0 -0
  904. /package/dist/{notifications → commands/notifications}/bell.js +0 -0
  905. /package/dist/{notifications → commands/notifications}/define-notifications.js +0 -0
  906. /package/dist/{provider/connectivity-types.js → controls/uncontrolled.js} +0 -0
  907. /package/dist/{data → table}/data-table.module.css +0 -0
  908. /package/dist/{data → table}/data-table.module.css.d.ts +0 -0
  909. /package/dist/{data → table}/query-branch.d.ts +0 -0
  910. /package/dist/{data → table}/query-branch.js +0 -0
  911. /package/src/{agent-chat → agent/chat}/relative-time.ts +0 -0
  912. /package/src/{data → table}/data-table.module.css +0 -0
  913. /package/src/{data → table}/data-table.module.css.d.ts +0 -0
  914. /package/src/{data → table}/query-branch.ts +0 -0
@@ -1,12 +1,11 @@
1
1
  /**
2
2
  * Number formatting — `Intl.NumberFormat` with the arguments already decided, so a caller states
3
- * WHAT a number is rather than how to punctuate it. Moved here from `src/charts/utils/format.ts`
4
- * (C5 consolidation) — that file now re-exports from this module so charts keep working through
5
- * one implementation.
3
+ * WHAT a number is rather than how to punctuate it. One implementation: the chart layer imports
4
+ * `fmtCompact` from here for its default axis format.
6
5
  *
7
6
  * `money`/`percent`/`integer`/`compact`/`deltaPct` are the argo-facing names (seeded from
8
7
  * `features/*\/{formatters,formulas}.ts`); `fmtCurrency`/`fmtPercent`/`fmtInt`/`fmtCompact` are the
9
- * original chart-formatter names, kept for source compatibility and delegated to by the new names.
8
+ * original chart-formatter names, internal since 2.0 and delegated to by the public names.
10
9
  */
11
10
  import { NON_FINITE, numberFormat } from './shared'
12
11
  import type { LocaleOption } from './shared'
@@ -43,9 +42,6 @@ export function fmtCompact(value: number, options: FmtCompactOptions = {}): stri
43
42
  .replace(COMPACT_K, '$1k')
44
43
  }
45
44
 
46
- /** `compact` — the `basalt-ui/format` name for {@link fmtCompact}. */
47
- export const compact = fmtCompact
48
-
49
45
  export type FmtPercentOptions = LocaleOption & {
50
46
  /** Fraction digits. Default 0 (`42%`). */
51
47
  digits?: number
@@ -71,25 +67,6 @@ export function fmtPercent(value: number, options: FmtPercentOptions = {}): stri
71
67
  /** `percent` — the `basalt-ui/format` name for {@link fmtPercent}. */
72
68
  export const percent = fmtPercent
73
69
 
74
- export type DeltaPctOptions = FmtPercentOptions
75
-
76
- /**
77
- * A signed percentage delta: `+4%`, `-12%`, `0%` — argo's `walking-pad/formatters.ts#formatPct`
78
- * (a `+`-prefixed ratio) generalized onto `Intl`'s own `signDisplay: 'exceptZero'`, which adds the
79
- * `+`/`-` sign the same way `Intl`'s own minus sign already does, and adds nothing for zero. A
80
- * non-finite value prints {@link NON_FINITE}.
81
- */
82
- export function deltaPct(value: number, options: DeltaPctOptions = {}): string {
83
- if (!Number.isFinite(value)) return NON_FINITE
84
- const { digits = 0, input = 'ratio', locale } = options
85
- return numberFormat(locale, {
86
- style: 'percent',
87
- signDisplay: 'exceptZero',
88
- minimumFractionDigits: digits,
89
- maximumFractionDigits: digits,
90
- }).format(input === 'percent' ? value / 100 : value)
91
- }
92
-
93
70
  export type FmtCurrencyOptions = LocaleOption & {
94
71
  /** ISO 4217 code — required. There is no default currency. */
95
72
  currency: string
@@ -1,9 +1,8 @@
1
1
  /**
2
2
  * Shared low-level pieces of `basalt-ui/format` — the em-dash sentinel and the memoized
3
3
  * `Intl.NumberFormat` cache every number formatter in this module reuses. Moved here (out of
4
- * `src/charts/utils/format.ts`, C5 consolidation) so the subpath is the single implementation and
5
- * `charts/utils/format.ts` becomes a thin re-export (`docs/CHARTS-SPEC.md` still calls it home for
6
- * chart callers, but the code lives here now).
4
+ * `src/charts/utils/format.ts`, C5 consolidation) so the subpath is the single implementation;
5
+ * 2.0's chart layer imports it directly (`docs/V2-SPEC.md` § 9).
7
6
  */
8
7
 
9
8
  /**
@@ -15,28 +15,5 @@
15
15
  * Optional peer: @mantine/form ^9.3.0 — install with: bun add @mantine/form
16
16
  */
17
17
 
18
- // ── useBasaltForm ─────────────────────────────────────────────────────────────
19
18
  export { useBasaltForm } from './create-form'
20
- export type { UseBasaltFormOptions } from './create-form'
21
-
22
- // ── inputProps ────────────────────────────────────────────────────────────────
23
- // Two calls, never one object: `key` inside a spread is a React 19 warning. See field.ts.
24
19
  export { inputProps, fieldKey } from './field'
25
-
26
- // ── submit lifecycle ──────────────────────────────────────────────────────────
27
- export { useFormSubmit, isFieldErrorEnvelope } from './use-form-submit'
28
- export type { FormFieldErrors, UseFormSubmitOptions, UseFormSubmitReturn } from './use-form-submit'
29
- export { FormStateProvider, useFormState } from './form-state'
30
- export type { FormState, FormStateProviderProps } from './form-state'
31
-
32
- // ── array fields ──────────────────────────────────────────────────────────────
33
- export { useFieldArray } from './use-field-array'
34
- export type { UseFieldArrayReturn } from './use-field-array'
35
-
36
- // ── FormErrorSummary ──────────────────────────────────────────────────────────
37
- export { FormErrorSummary } from './FormErrorSummary'
38
- export type { FormErrorSummaryProps } from './FormErrorSummary'
39
-
40
- // ── useFormDraft ──────────────────────────────────────────────────────────────
41
- export { useFormDraft, DEFAULT_AUTOSAVE_DEBOUNCE_MS } from './use-form-draft'
42
- export type { UseFormDraftOptions, UseFormDraftReturn } from './use-form-draft'
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * ./guard — headless policy core. Mantine-free, dependency-free.
3
3
  *
4
- * GUARD_RULES: the closed registry of all 28 violation kinds.
4
+ * GUARD_RULES: the closed registry of all 26 violation kinds.
5
5
  * checkSource: pure (text, relPath, cfg) → Finding[]. No FS, no walk, no console.
6
6
  */
7
7
  import type { Finding, GuardConfig, GuardKind, GuardSeverity } from './types'
@@ -277,7 +277,7 @@ const INLINE_FONT_SIZE =
277
277
  // A `Card` / `Paper` opening tag carrying `withBorder`. Card depth is `--vx-shadow-card`, whose 1px
278
278
  // ring lives INSIDE the shadow value; `withBorder` therefore adds a SECOND, real `border` property
279
279
  // on top of it (the theme's `styles.root` pins bg/shadow/radius but never clears `border`), and the
280
- // card reads heavy/boxed. Bounded full-text tag scan, same shape as CHART_ENTRY_POINT_TAG_START below,
280
+ // card reads heavy/boxed. Bounded full-text tag scan, same shape as RAW_FORM_CONTROL_TAG below,
281
281
  // so a multi-line-formatted tag still resolves to one match.
282
282
  //
283
283
  // Two deliberate non-matches:
@@ -570,10 +570,6 @@ function isSubScaleCssSpacing(line: string, matchIndex: number): boolean {
570
570
  // display:flex/grid/inline-flex/inline-grid in an inline style.
571
571
  const INLINE_DISPLAY = /\bdisplay\s*:\s*['"](?:inline-)?(?:flex|grid)['"]/g
572
572
 
573
- // Raw visx axis JSX — only inside chart files, not in the Axes.tsx wrapper.
574
- const RAW_VISX_AXIS = /<Axis(?:Left|Bottom|Right)\b/g
575
- const AXIS_WRAPPER_FILE = /(?:^|\/)Axes\.tsx$/
576
-
577
573
  // radius prop with a numeric literal (module-level so it is not re-created per call).
578
574
  const RADIUS_PROP_RE = /\bradius=(?:\{[0-9]+\}|"[0-9]+")/g
579
575
 
@@ -583,107 +579,17 @@ const MOTION_TRANSITION_NUMERIC =
583
579
  /\btransition\s*=\s*\{\{[^}]*\b(?:duration|stiffness|damping|mass)\s*:\s*-?\d/g
584
580
  const MOTION_TRANSITION_EASE_ARRAY = /\btransition\s*=\s*\{\{[^}]*\bease\s*:\s*\[/g
585
581
 
586
- // A chart entry-point JSX tag (the 7 kinds + 2 sparklines) — matches the opening `<Name` plus an
587
- // optional explicit JSX generic argument (`<MultiLine<Point>`); the rest of the tag (up to its
588
- // closing `>`) is resolved by `scanChartTagClose` below, brace-depth aware, so it survives every
589
- // `>`-shaped decoy inside a prop expression — arrow functions (`=>`), comparisons (`>=`, `<=`),
590
- // shifts (`>>`) — without needing to enumerate them: a `>` only closes the tag outside every `{…}`.
591
- const CHART_ENTRY_POINT_TAG_START =
592
- /<(MultiLine|Bars|BandStrip|Donut|DualPanel|Heatmap|MirroredBars|ZonedLine|StackedArea|LineSparkline|BarSparkline)\b(?:<[^<>]*>)?/g
593
- const HAS_ARIA_LABEL_PROP = /\bariaLabel\s*=/
594
-
595
- /**
596
- * Scans forward from `start` (immediately after a chart tag's name/generic-args) for the `>` that
597
- * closes the JSX tag. Curly-brace depth aware: a `>` only closes the tag at depth 0, so anything
598
- * living inside a `{…}` prop expression — `=>`, `>=`, `<=`, `>>`, a nested JSX child's own `>` —
599
- * never ends the tag early. String/template literals are skipped verbatim so a quoted `>`
600
- * cannot perturb the depth count either. Returns the index of the closing `>`, or -1 if the tag
601
- * never closes (malformed/truncated source — the caller treats that as no match).
602
- */
603
- function scanChartTagClose(codeText: string, start: number): number {
604
- let depth = 0
605
- let i = start
606
- while (i < codeText.length) {
607
- const ch = codeText[i]
608
- if (ch === '"' || ch === "'" || ch === '`') {
609
- const quote = ch
610
- i++
611
- while (i < codeText.length && codeText[i] !== quote) {
612
- i += codeText[i] === '\\' ? 2 : 1
613
- }
614
- i++
615
- continue
616
- }
617
- if (ch === '{') {
618
- depth++
619
- } else if (ch === '}') {
620
- depth = Math.max(0, depth - 1)
621
- } else if (ch === '>' && depth === 0) {
622
- return i
623
- }
624
- i++
625
- }
626
- return -1
627
- }
628
-
629
- // ── Tag provenance, shared by chart-missing-aria-label ────────────────────────────────────────────
630
- //
631
- // `chart-missing-aria-label` keys on a JSX tag NAME, which is the whole of its signal — so a
632
- // consumer's OWN component that merely shares a shipped kind's name collected the finding too.
633
- // Reported by a consumer on 1.23.0: a hand-composed local `<MirroredBars>` was
634
- // told to pass an `ariaLabel` prop it does not accept, by a rule that presents as a correctness
635
- // finding rather than as a naming one. `shadow-basalt-export` / `ai-sdk-major` scope through
636
- // `isBasaltScopedFile` (package-level); the analogous file-level signal here is where the name in
637
- // THIS file came from.
638
- //
639
- // The gate is deliberately a one-directional NARROWING: a tag is skipped only when the file DEFINES
640
- // a component of that name and does not also import it from basalt-ui. Everything else still fires
641
- // — a tag imported from basalt-ui, one imported from a consumer barrel that re-exports it (`import
642
- // { MultiLine } from '../charts'`, the shape a downstream component library uses), and one the scan
643
- // cannot attribute at all. Requiring a POSITIVE basalt import instead would have silently switched
644
- // both rules off for every barrel-wrapping consumer and for every file with no import statements —
645
- // a far bigger hole than the false positive it closes.
646
- const LOCAL_COMPONENT_DEF =
647
- /(?:^|[\n;}])\s*(?:export\s+)?(?:default\s+)?(?:async\s+)?(?:function|class|const|let|var)\s+([A-Z]\w*)/g
648
- // `from 'basalt-ui'` and every subpath (`basalt-ui/charts`, `basalt-ui/tokens`, …).
649
- const BASALT_NAMED_IMPORT =
650
- /import\s+(?:type\s+)?\{([^}]*)\}\s+from\s+['"]basalt-ui(?:\/[^'"]*)?['"]/g
651
-
652
- /** Component-shaped names DEFINED in this file — the provable "not the shipped kind" signal. */
653
- function localComponentNames(codeText: string): ReadonlySet<string> {
654
- const out = new Set<string>()
655
- for (const m of codeText.matchAll(LOCAL_COMPONENT_DEF)) out.add(m[1] as string)
656
- return out
657
- }
658
-
659
- /** Names bound in this file by a named import from `basalt-ui` — the local binding, so
660
- * `{ Bars as BasaltBars }` records `BasaltBars`, which is the name the JSX tag will use. */
661
- function basaltImportedNames(codeText: string): ReadonlySet<string> {
662
- const out = new Set<string>()
663
- for (const m of codeText.matchAll(BASALT_NAMED_IMPORT)) {
664
- for (const raw of (m[1] as string).split(',')) {
665
- const spec = raw.trim().replace(/^type\s+/, '')
666
- if (spec.length === 0) continue
667
- const parts = spec.split(/\s+as\s+/)
668
- const bound = (parts[parts.length - 1] as string).trim()
669
- if (bound.length > 0) out.add(bound)
670
- }
671
- }
672
- return out
673
- }
674
-
675
- // Raw lowercase form-control element — line-scoped, same shape as RAW_VISX_AXIS. `\b` after the
582
+ // Raw lowercase form-control element — line-scoped. `\b` after the
676
583
  // tag name rejects a same-prefixed custom component (`<inputRef`, `<selectAll`).
677
584
  const RAW_FORM_CONTROL = /<(?:input|select|textarea)\b/g
678
585
 
679
- // A raw form-control's own opening tag — bounded full-text scan (same shape as CARD_SURFACE_TAG /
680
- // CHART_ENTRY_POINT_TAG_START), used ONLY by sub-16-input-font to search the tag's own inline `style`
681
- // for a sub-floor fontSize.
586
+ // A raw form-control's own opening tag — bounded full-text scan (same shape as CARD_SURFACE_TAG),
587
+ // used ONLY by sub-16-input-font to search the tag's own inline `style` for a sub-floor fontSize.
682
588
  const RAW_FORM_CONTROL_TAG = /<(?:input|select|textarea)\b(?:=>|[^>])*?>/g
683
589
 
684
590
  // ── Control-home patterns (docs/CONTROLS-SPEC.md §6 — the text lane of laws C1/C8) ──────────────
685
591
  //
686
- // Bounded full-text tag scans, the CARD_SURFACE_TAG / CHART_ENTRY_POINT_TAG_START shape: a `<Title>` and a
592
+ // Bounded full-text tag scans, the CARD_SURFACE_TAG shape: a `<Title>` and a
687
593
  // `<Select>` are both routinely formatted across lines, so a per-line regex would see neither.
688
594
 
689
595
  /** A `<Title …>` opening tag, however it is wrapped. `order` is judged separately, on the tag text. */
@@ -872,9 +778,7 @@ export const DEFAULT_GUARD_CONFIG: GuardConfig = {
872
778
  rawHtmlLayout: true,
873
779
  inlineSpacing: true,
874
780
  inlineDisplay: true,
875
- rawVisxAxis: true,
876
781
  rawMotionValue: true,
877
- chartMissingAriaLabel: true,
878
782
  rawFormControl: true,
879
783
  sub16InputFont: true,
880
784
  allowComment: 'theme-allow',
@@ -957,7 +861,7 @@ function textForFinding(sourceLine: string | undefined, fallbackToken: string):
957
861
  // ── Path predicate ────────────────────────────────────────────────────────────────────────────────
958
862
 
959
863
  function isChartFile(relPath: string): boolean {
960
- return relPath.includes('/charts/') && !AXIS_WRAPPER_FILE.test(relPath)
864
+ return relPath.includes('/charts/')
961
865
  }
962
866
 
963
867
  /**
@@ -1093,8 +997,6 @@ export const PLUGIN_RULE_IDS: ReadonlySet<string> = new Set([
1093
997
  'raw-size-literal',
1094
998
  'card-inset',
1095
999
  'chart-in-raw-surface',
1096
- 'hand-rolled-plot',
1097
- 'chart-legend-literal',
1098
1000
  'hand-rolled-shell',
1099
1001
  'shadow-basalt-export',
1100
1002
  'raw-scroll-container',
@@ -1104,40 +1006,47 @@ export const PLUGIN_RULE_IDS: ReadonlySet<string> = new Set([
1104
1006
  // and the ancestry, which a 12-line regex window has neither of. See the rule's own JSDoc.
1105
1007
  'bound-control-outside-home',
1106
1008
  'control-size-literal',
1107
- 'page-bar-budget',
1108
1009
  'responsive-twin',
1109
1010
  'search-literal-link',
1110
1011
  'use-search-from-literal',
1111
- // The three remaining F5 rules and the B4 deprecation rule — all AST-only, all outside
1012
+ // The remaining F5 rules — all AST-only, all outside
1112
1013
  // `checkSource`'s reach: provenance here is an import graph and a JSX ancestry, neither of which
1113
1014
  // a 12-line regex window has. Same reason `bound-control-outside-home` has no text-lane twin.
1114
- 'provider-above-router',
1115
1015
  'query-fn-unwrap',
1116
- 'deprecated-export',
1117
1016
  // Same lane: `{...inputProps(…)}` without a sibling `key` is a JSX-ancestry claim (does this
1118
1017
  // ELEMENT carry a `key` attribute?) over an import-resolved callee — neither is text.
1119
1018
  'forms-field-key',
1120
1019
  // `in-body-page-title` is deliberately ABSENT: it is a plugin rule AND a guard kind under one id
1121
1020
  // (one law, two lanes, one annotation), and this set is the ids OUTSIDE `checkSource`'s reach.
1122
1021
  // `check-source.test.ts` asserts the two registries stay disjoint.
1123
- 'visx-boundary',
1124
- 'visx-tooltip',
1022
+ 'chart-engine-boundary',
1023
+ 'chart-host-single',
1125
1024
  'token-layer-boundary',
1126
1025
  'no-import-meta-env',
1127
1026
  // AST-only, same reason as `bound-control-outside-home`: a responsive-object prop, a shell-home
1128
1027
  // exemption and a hook import all need the import graph and JSX ancestry, neither of which a
1129
1028
  // 12-line text window has. `raw-media-query` is its CSS-text twin and lives in `GUARD_RULES`.
1130
1029
  'raw-breakpoint',
1131
- // These three honour `basalt-agent-allow`, never `theme-allow` — but they are still REAL ids, so
1030
+ 'no-dev-helper',
1031
+ // AST-only: a `<ViewTransition>` ancestor of `<Outlet>` is a JSX-ancestry claim over two import-resolved names.
1032
+ 'route-view-transition',
1033
+ // These two honour `basalt-agent-allow`, never `theme-allow` — but they are still REAL ids, so
1132
1034
  // a `theme-allow ai-sdk-major` must parse as a (useless) scoped annotation rather than as prose.
1133
- 'agent-resume-guard',
1134
1035
  'agent-no-raw-usechat',
1135
1036
  'ai-sdk-major',
1136
- // Retired guard kinds — `unframed-chart`'s only case (`<ChartLegend items={[...]}>`) is fully
1137
- // subsumed by `basalt/chart-legend-literal`. Kept here (mirrored by the plugin's own
1037
+ // Retired guard kinds — `unframed-chart`'s only case (a hand-written legend array) died with
1038
+ // the public legend component (2.0). Kept here (mirrored by the plugin's own
1138
1039
  // `RETIRED_RULE_IDS`) so an existing `theme-allow unframed-chart` reads as a dead waiver via
1139
1040
  // `--audit-allows`, never as an unknown-id typo.
1140
1041
  'unframed-chart',
1042
+ // Retired in 2.0 (V2-SPEC § 9.8): the visx lint/guard layer. Mirrored by the plugin's own
1043
+ // `RETIRED_RULE_IDS`.
1044
+ 'visx-boundary',
1045
+ 'visx-tooltip',
1046
+ 'hand-rolled-plot',
1047
+ 'chart-legend-literal',
1048
+ 'raw-visx-axis',
1049
+ 'chart-missing-aria-label',
1141
1050
  // Retired plugin rule — `<BasaltNotifications />` mounted beside `<BasaltOverlays
1142
1051
  // notifications>` is unreachable now that `BasaltNotifications` no longer exists as a
1143
1052
  // standalone export. Mirrored by the plugin's own `RETIRED_RULE_IDS`.
@@ -1146,6 +1055,12 @@ export const PLUGIN_RULE_IDS: ReadonlySet<string> = new Set([
1146
1055
  // `basalt-ui/query`) is unreachable now that C1 (1.29.0) dropped the `./query` subpath.
1147
1056
  // Mirrored by the plugin's own `RETIRED_RULE_IDS`.
1148
1057
  'query-dual-import',
1058
+ // Retired in 2.0 (V2-SPEC § 3): the concern is unrepresentable. Mirrored by the plugin's
1059
+ // `RETIRED_RULE_IDS`.
1060
+ 'provider-above-router',
1061
+ 'page-bar-budget',
1062
+ 'agent-resume-guard',
1063
+ 'deprecated-export',
1149
1064
  ])
1150
1065
 
1151
1066
  /**
@@ -1787,9 +1702,7 @@ export const TOKENS_ONLY_DISABLED_KINDS: ReadonlySet<GuardKind> = new Set([
1787
1702
  'hidden-inline-style',
1788
1703
  'inline-spacing',
1789
1704
  'inline-display',
1790
- 'raw-visx-axis',
1791
1705
  'raw-motion-value',
1792
- 'chart-missing-aria-label',
1793
1706
  'raw-form-control',
1794
1707
  'sub-16-input-font',
1795
1708
  // Both wave-6 control kinds: `<Title>` is a Mantine component and the remedy for either one is a
@@ -2008,7 +1921,7 @@ type GuardRule = {
2008
1921
  readonly kind: GuardKind
2009
1922
  /** Static regex, or a builder over cfg for the 3 dynamic kinds (forbiddenAccent/spacing/radius). */
2010
1923
  readonly pattern: RegExp | ((cfg: GuardConfig) => RegExp)
2011
- /** Path-applicability: raw-visx-axis only fires in chart files. */
1924
+ /** Path-applicability: a kind that only fires in some files. */
2012
1925
  readonly appliesTo?: (relPath: string) => boolean
2013
1926
  /** Knob gating; always-on kinds omit this. */
2014
1927
  readonly enabled?: (cfg: GuardConfig) => boolean
@@ -2017,7 +1930,7 @@ type GuardRule = {
2017
1930
  }
2018
1931
 
2019
1932
  /**
2020
- * The closed registry of all 28 guard kinds. The triad test asserts
1933
+ * The closed registry of all 26 guard kinds. The triad test asserts
2021
1934
  * `surface.guardKinds ⊆ keyof GUARD_RULES` at runtime.
2022
1935
  *
2023
1936
  * raw-surface, raw-html-layout, and sub-16-input-font are handled inline in checkSource
@@ -2027,9 +1940,8 @@ type GuardRule = {
2027
1940
  * This file and `src/cli/index.ts` are `exempt` in the package's own `basalt` config, and must
2028
1941
  * stay that way: a rule's `pattern` and its `message` both spell the anti-pattern out literally
2029
1942
  * (`'Raw <input>/<select>/<textarea> …'`), so the guard flags its own definitions when the package
2030
- * self-scans. Any kind matching a literal tag hits this — `raw-visx-axis` only escaped it by
2031
- * accident, via an `appliesTo` that happens to exclude non-chart files. Fixture files are already
2032
- * covered by the scanner's own `SKIP` (`*.test.ts`), for the same reason.
1943
+ * self-scans. Any kind matching a literal tag hits this. Fixture files are already covered by the
1944
+ * scanner's own `SKIP` (`*.test.ts`), for the same reason.
2033
1945
  */
2034
1946
  export const GUARD_RULES = {
2035
1947
  'raw-hex': {
@@ -2150,16 +2062,6 @@ export const GUARD_RULES = {
2150
2062
  appliesTo: (relPath) => !isChartFile(relPath) && !relPath.endsWith('.css'),
2151
2063
  message: 'Use <Flex>/<Grid>/<Group> instead of an inline display:flex/grid.',
2152
2064
  },
2153
- 'raw-visx-axis': {
2154
- kind: 'raw-visx-axis',
2155
- pattern: RAW_VISX_AXIS,
2156
- enabled: (cfg: GuardConfig) => cfg.rawVisxAxis,
2157
- // Compose the existing chart-file scope with the CSS gate — a chart-file CSS module (none
2158
- // exist today, but the boundary should hold regardless) still can't carry a JSX axis tag.
2159
- appliesTo: (relPath) => isChartFile(relPath) && !relPath.endsWith('.css'),
2160
- message:
2161
- 'Raw <AxisLeft>/<AxisBottom>/<AxisRight> in a chart file — use AxisLeftNumeric / AxisBottomDate / AxisRightNumeric.',
2162
- },
2163
2065
  'raw-motion-value': {
2164
2066
  kind: 'raw-motion-value',
2165
2067
  pattern: MOTION_TRANSITION_NUMERIC, // handled inline (2-regex kind); entry keeps registry complete
@@ -2170,15 +2072,6 @@ export const GUARD_RULES = {
2170
2072
  message:
2171
2073
  'Route animation timing through MOTION_DURATION / MOTION_SPRING / MOTION_EASE_STANDARD (basalt-ui motion tokens) instead of a hardcoded duration/spring/ease.',
2172
2074
  },
2173
- 'chart-missing-aria-label': {
2174
- kind: 'chart-missing-aria-label',
2175
- pattern: CHART_ENTRY_POINT_TAG_START, // handled inline (full-text tag-scoped scan); entry keeps registry complete
2176
- enabled: (cfg: GuardConfig) => cfg.chartMissingAriaLabel,
2177
- // JSX-tag-shaped (`<MultiLine …>`) — never appears in CSS text.
2178
- appliesTo: (relPath) => !relPath.endsWith('.css'),
2179
- message:
2180
- 'Chart has no accessible text alternative — pass ariaLabel="…" so screen readers get more than an unlabeled graphic.',
2181
- },
2182
2075
  'raw-form-control': {
2183
2076
  kind: 'raw-form-control',
2184
2077
  pattern: RAW_FORM_CONTROL,
@@ -2219,7 +2112,7 @@ export const GUARD_RULES = {
2219
2112
  // The kebab dialect only exists in CSS text; the camelCase half is `raw-surface`.
2220
2113
  appliesTo: (relPath) => relPath.endsWith('.css'),
2221
2114
  message:
2222
- 'Surface literal in CSS — use var(--vx-radius-card|--vx-radius-md) for a corner and var(--vx-shadow-card) for depth, the same tokens the TSX side is held to.',
2115
+ 'Surface literal in CSS — use var(--vx-radius-card|--vx-radius-ctrl) for a corner and var(--vx-shadow-card) for depth, the same tokens the TSX side is held to.',
2223
2116
  },
2224
2117
  'hidden-inline-style': {
2225
2118
  kind: 'hidden-inline-style',
@@ -2235,7 +2128,7 @@ export const GUARD_RULES = {
2235
2128
  // JSX-tag-shaped (`<Title order={1}>`) — never appears in CSS text.
2236
2129
  appliesTo: (relPath) => !relPath.endsWith('.css'),
2237
2130
  message:
2238
- 'In-body page title — a page is named ONCE: by the breadcrumb (staticData.title), by PageBar.title, or by <PageTitle> on a shell-less surface (a route error, an auth gate, a standalone screen). Every section/card/table title is a WidgetHeader (docs/CONTROLS-SPEC.md law C8). An <Title order={1|2}> spelling a name out in the body is a second name for the same page, and it drifts. A Title rendering a VALUE — {doc.title}, {RANK_LABEL[rank]} — never reports: that is data, not a name. Prose / ArticleLayout / an overlay and anything under a content/ path never report either. Same law the oxlint plugin enforces as basalt/in-body-page-title — one id, two lanes, so one theme-allow covers both.',
2131
+ 'In-body page title — a page is named ONCE: by the breadcrumb (the nav item label), by PageBar.title, or by <PageTitle> on a shell-less surface (a route error, an auth gate, a standalone screen). Every section/card/table title is a WidgetHeader (docs/CONTROLS-SPEC.md law C8). An <Title order={1|2}> spelling a name out in the body is a second name for the same page, and it drifts. A Title rendering a VALUE — {doc.title}, {RANK_LABEL[rank]} — never reports: that is data, not a name. Prose / ArticleLayout / an overlay and anything under a content/ path never report either. Same law the oxlint plugin enforces as basalt/in-body-page-title — one id, two lanes, so one theme-allow covers both.',
2239
2132
  },
2240
2133
  'raw-selection-control': {
2241
2134
  kind: 'raw-selection-control',
@@ -2622,17 +2515,6 @@ export function checkSource(text: string, relPath: string, cfg: GuardConfig): Fi
2622
2515
  }
2623
2516
  }
2624
2517
 
2625
- // raw-visx-axis — pattern + gating + path applicability (chart-file scope AND CSS gate,
2626
- // composed on the registry's own appliesTo) from GUARD_RULES.
2627
- if (
2628
- GUARD_RULES['raw-visx-axis'].enabled!(cfg) &&
2629
- GUARD_RULES['raw-visx-axis'].appliesTo!(relPath)
2630
- ) {
2631
- for (const m of line.matchAll(GUARD_RULES['raw-visx-axis'].pattern as RegExp)) {
2632
- push('raw-visx-axis', i + 1, m[0])
2633
- }
2634
- }
2635
-
2636
2518
  // raw-motion-value: 2 separate regex checks, one kind — gated via GUARD_RULES entry.
2637
2519
  if (GUARD_RULES['raw-motion-value'].enabled!(cfg) && ruleApplies('raw-motion-value', relPath)) {
2638
2520
  for (const m of line.matchAll(MOTION_TRANSITION_NUMERIC))
@@ -2679,43 +2561,6 @@ export function checkSource(text: string, relPath: string, cfg: GuardConfig): Fi
2679
2561
  }
2680
2562
  }
2681
2563
 
2682
- // The aria-label tag rule below gates on tag PROVENANCE (see the block above LOCAL_COMPONENT_DEF).
2683
- // Computed once, and only if the rule actually runs.
2684
- const ariaLabelRuns =
2685
- GUARD_RULES['chart-missing-aria-label'].enabled!(cfg) &&
2686
- ruleApplies('chart-missing-aria-label', relPath)
2687
- const localNames = ariaLabelRuns ? localComponentNames(codeText) : new Set<string>()
2688
- const basaltNames = ariaLabelRuns ? basaltImportedNames(codeText) : new Set<string>()
2689
- const isShippedTag = (tag: string): boolean => basaltNames.has(tag) || !localNames.has(tag)
2690
-
2691
- // chart-missing-aria-label — full-text tag-scoped scan.
2692
- // A tag is a violation only when its own (possibly multi-line) prop list has no `ariaLabel=`.
2693
- // Reports at the tag's OPENING line, like card-with-border below and unlike the end-of-match
2694
- // arithmetic this used to do: on a multi-line-formatted chart the end lands on the closing `/>`,
2695
- // which is what `Finding.text` would then quote back — the closing bracket rather than the tag
2696
- // that is missing the prop. The allow-comment is honored anywhere in the tag's span, so a
2697
- // `theme-allow` that used to sit on the closing line keeps working.
2698
- if (ariaLabelRuns) {
2699
- for (const m of codeText.matchAll(CHART_ENTRY_POINT_TAG_START)) {
2700
- const matchStart = m.index ?? 0
2701
- // A tag this file defines itself is not the shipped kind — it does not take `ariaLabel`.
2702
- if (!isShippedTag(m[1] as string)) continue
2703
- const closeIdx = scanChartTagClose(codeText, matchStart + m[0].length)
2704
- if (closeIdx === -1) continue
2705
- const tagText = codeText.slice(matchStart, closeIdx + 1)
2706
- if (HAS_ARIA_LABEL_PROP.test(tagText)) continue
2707
- const startLine = codeText.slice(0, matchStart).split('\n').length
2708
- const endLine = startLine + (tagText.split('\n').length - 1)
2709
- if (isAllowedInRange(startLine, endLine, 'chart-missing-aria-label')) continue
2710
- findings.push({
2711
- relPath,
2712
- line: startLine,
2713
- token: tagText.slice(0, 40),
2714
- kind: 'chart-missing-aria-label',
2715
- })
2716
- }
2717
- }
2718
-
2719
2564
  // card-with-border — full-text tag-scoped scan (same shape as the two above). Reports at the line
2720
2565
  // of the `withBorder` token itself (not the end of the tag) so a multi-line-formatted Card points
2721
2566
  // the fix at the prop to delete.
@@ -1,17 +1,15 @@
1
1
  /**
2
2
  * Guard types — Mantine-free, dependency-free (zero imports beyond TS types).
3
3
  *
4
- * GuardKind is the closed set of 28 violation kinds the theme guard can emit — `unframed-chart`
5
- * retired at the C2 consolidation wave: its only case (a hand-authored `<ChartLegend items={[...]}>`
6
- * array literal) is fully subsumed by the oxlint plugin's `basalt/chart-legend-literal`, which also
7
- * catches the `.map()`-over-a-non-series form the regex never could. `'unframed-chart'` stays a
8
- * recognized id in `PLUGIN_RULE_IDS`/`KNOWN_RULE_IDS` so an existing `theme-allow unframed-chart`
9
- * reads as a dead waiver, not a typo.
4
+ * GuardKind is the closed set of 26 violation kinds the theme guard can emit. Retired kinds
5
+ * (`unframed-chart`, `raw-visx-axis`, `chart-missing-aria-label`) stay recognized ids in
6
+ * `PLUGIN_RULE_IDS`/`KNOWN_RULE_IDS` so an existing `theme-allow <id>` reads as a dead waiver, not
7
+ * a typo.
10
8
  * Finding is the structured result per violation, replacing the old `Violation` shape.
11
9
  * GuardConfig is the per-run configuration that drives checkSource.
12
10
  */
13
11
 
14
- /** The 28 theme-guard violation kinds. */
12
+ /** The 26 theme-guard violation kinds. */
15
13
  export type GuardKind =
16
14
  | 'raw-hex'
17
15
  | 'raw-color-fn'
@@ -26,9 +24,7 @@ export type GuardKind =
26
24
  | 'raw-html-layout'
27
25
  | 'inline-spacing'
28
26
  | 'inline-display'
29
- | 'raw-visx-axis'
30
27
  | 'raw-motion-value'
31
- | 'chart-missing-aria-label'
32
28
  | 'raw-form-control'
33
29
  | 'sub-16-input-font'
34
30
  | 'raw-font-family'
@@ -129,17 +125,8 @@ export type GuardConfig = {
129
125
  readonly inlineSpacing: boolean
130
126
  /** Flag display:flex|grid|inline-flex|inline-grid in an inline style={{}}. Default true. */
131
127
  readonly inlineDisplay: boolean
132
- /** Flag raw <AxisLeft>/<AxisBottom>/<AxisRight> JSX inside chart files. Default true. */
133
- readonly rawVisxAxis: boolean
134
128
  /** Flag a hardcoded duration/spring/ease literal in a `transition={{...}}` prop. Default true. */
135
129
  readonly rawMotionValue: boolean
136
- /**
137
- * Flag a chart-kind JSX usage (`<MultiLine>`, `<Bars>`, `<Donut>`, `<DualPanel>`, `<Heatmap>`,
138
- * `<ZonedLine>`, `<StackedArea>`, `<LineSparkline>`, `<BarSparkline>`) missing an `ariaLabel`
139
- * prop — screen readers otherwise get an unlabeled empty graphic. Default `true` (ON). Set
140
- * `false` to disable the `chart-missing-aria-label` check.
141
- */
142
- readonly chartMissingAriaLabel: boolean
143
130
  /**
144
131
  * Flag a raw lowercase `<input>` / `<select>` / `<textarea>` JSX element — it bypasses the
145
132
  * ENTIRE theme (no field surface, no `shadow-card` depth, no focus ring, no `--input-*` vars),
@@ -184,7 +171,7 @@ export type GuardConfig = {
184
171
  /**
185
172
  * Per-rule, per-path exemptions — complements whole-file `exempt` (BasaltConfig, which skips
186
173
  * ALL rules for a file) and code-level `appliesTo` (hardcoded per-kind path scoping, e.g.
187
- * raw-visx-axis → chart files only). This is the config-driven counterpart: a consumer can say
174
+ * raw-html-layout → non-chart files). This is the config-driven counterpart: a consumer can say
188
175
  * "kind K does not apply under path P" without exempting the whole file or forking the rule.
189
176
  *
190
177
  * Each value is a list of path-segment patterns matched against a finding's `relPath`. A pattern