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
package/MIGRATING.md CHANGED
@@ -66,26 +66,934 @@ There is one row per SURFACE, not per export, and a surface earns a row once any
66
66
  shipped lefthook preset both changed in 1.30.0 with no row that owned them — which is how a
67
67
  consumer read this index, found nothing, and diffed a KPI row that had silently gone 4-up → 2-up.
68
68
 
69
- | Surface | 1.27.0 | 1.28.0 | 1.29.0 | 1.30.0 | 1.30.1 | 1.30.2 | 1.31.0 | 1.32.0 | 1.32.1 | 1.33.0 | 1.34.0 | 1.34.1 | 1.35.0 | 1.36.0 | 1.36.1 | 1.37.0 | 1.37.1 | 1.38.0 | 1.38.1 | 1.39.0 | 1.40.0 | 1.40.1 | 1.40.2 | 1.40.3 | 1.41.0 | Unreleased |
70
- | ----------------------------- | ------------------------------------------------------------ | -------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | --------------------------------------------------------------------- | ------ | ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ---------------------------------- | ------ | ------ | -------------------------------------------------------------------------------------------- | ------ | ------ | ------ | ------ | ------ | ----------------------------------------------- | ------ | ------ | ------ | ------ | ------------------------------------------------------------ | ---------- | --- |
71
- | **tokens** (`./tokens`) | — | `--vx-divider` → `rgba()` on both schemes (§ Shell) | `--vx-space-touch-target` added (§ Additions) | eight spacing numbers (§ Chrome) | — | — | `--vx-hit` replaces the touch vars; `SIZE_CLASSES` (§ 1.31.0) | — | `SIZE_CLASSES`/`CONTAINER_CLASSES` actually exported (§ Fixes) | `CONTAINER_GRID_BREAKPOINTS`; `raw-breakpoint` trusts it (§ 1.33.0) | `CONTAINER_KEYS` (§ 1.34.0) | — | — | — | — | — | — | — | | `appShellInset` 20 → 16 (§ 1.38.1) | — | — | — | — | — | — | — |
72
- | **charts** (`./charts`) | — | phone tier, `curve`, formatters, `state`, log axis (§ preamble) | `ChartState.empty: string`, `AxisBottomNumeric` (§ Additions) | responsive `height`, `legend.maxRows` (§ Charts) | `height` reaches the kinds; `maxRows` beats the `fill` fit (§ Charts) | — | container-class tier + `height` keys (§ 1.31.0) | — | `ResponsiveChartHeight` `sm` → key (§ Container recipes) | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — |
73
- | **shell** (`.`) | — | scrollport, region seams, **the brand left the sidebar** (§§ scrollport, brand, Shell) | `PageTitle`, `BasaltDevDock`, `useBreakpoint` (§ Additions) | More popover, aside pill, the responsive gutter, `useBasaltSpacing` (§ Chrome) | — | — | `theme.breakpoints` derived, `useSizeClass`, `data-basalt-host`, `useBreakpoint` on notice (§ 1.31.0) | `useBreakpoint` removal → 1.33.0; `useSizeClass` is shell-only (§ 1.32.0) | shell-less `shell/` gutter, `AppShell` breakpoints, `useSizeClass` for overlays (§§ Shell-less, `useSizeClass`) | — | `useBreakpoint` removed (§ 1.34.0) | — | — | `useCoarsePointer()` (§ `useCoarsePointer()`) | — | — | — | — | | content gutter 16, block 8 from `sm` (§ 1.38.1) | — | — | — | — | — | — | — |
74
- | **controls** (`./controls`) | `NumberFilter`, `field.number` (§ Controls) | sheet renders panel rows; `PanelRow`, `SliderControl` (§ `basalt-ui/controls`) | — | — | — | — | — | — | — | `NumberFilter clearable`; `createSearchStore` `resets` (§ State and controls) | — | — | — | `FormSection`/`FormRow`/`FormGroup`/`FormActions` move here (§ The form layout moves) | — | — | — | — | — | — | — | — | — | — | — | — |
75
- | **forms** (`./forms`) | — | `field` → `inputProps`, **`inputProps` drops `key`**, the layout tier (§ `inputProps`) | `field` DELETED — and the `--fix` recipe no longer works (§ Consolidation) | — | — | — | — | — | `FormGroup` row no longer stretches (§ Fixes) | — | — | — | — | the layout + `useForm`/`schemaResolver` deprecated, removed 1.37.0 (§ The form layout moves) | — | — | — | — | — | — | — | — | — | — | — | — |
76
- | **data** (`./data/table`) | — | root is a `<div>`, row selection, `getItemKey` required (§ `basalt-ui/data`) | `./data` + `./query` + `./connectivity` dropped (§ Consolidation) | — | — | — | — | — | `renderCard` documented (§ `renderCard`) | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — |
77
- | **dashboard** (`.`) | `StatCard`: `unit`, `breakdown`, delta format (§ `StatCard`) | `StatGroup`, `WidgetGrid`, query-aware `StatCard` — additive | — | **the column law keys on the CONTAINER; `cols={4}` is 2-up at `sm`** (§ Dashboard) | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — |
78
- | **toolchain** (`./configs/*`) | — | — | the shipped lefthook preset's `check-theme` BROKE — the CLI resolver stopped ascending (§ CLI) | the preset's default bin, and the `root:` recipe (§ Toolchain) | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — |
79
- | **CLI** (`basalt-ui`) | — | — | **resolver stops relocating; `doctor` loses 6 of 10 checks** (§ CLI) | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | the managed block moves `CLAUDE.md` → `AGENTS.md` (§ 1.41.0) | — |
80
- | **guards** | five rules → `error` (§ Guards) | six new ids at `warn` (§ preamble) | `query-dual-import` retired in 1.29.1 (§ Guards) | four rules → `error` (§ Guards) | — | — | — | `raw-breakpoint`: the container-grid answer, `error` at 1.33.0 (§ 1.32.0) | `FormRow`/`FormGroup` homes in both lanes; `basalt-main` dropped (§ Fixes) | C1 + breakpoint pairs → `error`; `unknown-vx-token` `warn` (§ Guards) | — | — | — | `unknown-vx-token` → `error`; the token factories throw (§ Guards) | — | — | — | — | — | — | — | — | — | — | — | — |
69
+ | Surface | 1.27.0 | 1.28.0 | 1.29.0 | 1.30.0 | 1.30.1 | 1.30.2 | 1.31.0 | 1.32.0 | 1.32.1 | 1.33.0 | 1.34.0 | 1.34.1 | 1.35.0 | 1.36.0 | 1.36.1 | 1.37.0 | 1.37.1 | 1.38.0 | 1.38.1 | 1.39.0 | 1.40.0 | 1.40.1 | 1.40.2 | 1.40.3 | 1.41.0 | 2.0.0 | Unreleased |
70
+ | ----------------------------- | ------------------------------------------------------------ | -------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | --------------------------------------------------------------------- | ------ | ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ---------------------------------- | ------ | ------ | -------------------------------------------------------------------------------------------- | ------ | ------ | ------ | ------ | ------ | ----------------------------------------------- | ------ | ------ | ------ | ------ | ------------------------------------------------------------ | ---------- | --- | --- |
71
+ | **tokens** (`./tokens`) | — | `--vx-divider` → `rgba()` on both schemes (§ Shell) | `--vx-space-touch-target` added (§ Additions) | eight spacing numbers (§ Chrome) | — | — | `--vx-hit` replaces the touch vars; `SIZE_CLASSES` (§ 1.31.0) | — | `SIZE_CLASSES`/`CONTAINER_CLASSES` actually exported (§ Fixes) | `CONTAINER_GRID_BREAKPOINTS`; `raw-breakpoint` trusts it (§ 1.33.0) | `CONTAINER_KEYS` (§ 1.34.0) | — | — | — | — | — | — | — | | `appShellInset` 20 → 16 (§ 1.38.1) | — | — | — | — | — | — | — | — |
72
+ | **charts** (`./charts`) | — | phone tier, `curve`, formatters, `state`, log axis (§ preamble) | `ChartState.empty: string`, `AxisBottomNumeric` (§ Additions) | responsive `height`, `legend.maxRows` (§ Charts) | `height` reaches the kinds; `maxRows` beats the `fill` fit (§ Charts) | — | container-class tier + `height` keys (§ 1.31.0) | — | `ResponsiveChartHeight` `sm` → key (§ Container recipes) | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — |
73
+ | **shell** (`.`) | — | scrollport, region seams, **the brand left the sidebar** (§§ scrollport, brand, Shell) | `PageTitle`, `BasaltDevDock`, `useBreakpoint` (§ Additions) | More popover, aside pill, the responsive gutter, `useBasaltSpacing` (§ Chrome) | — | — | `theme.breakpoints` derived, `useSizeClass`, `data-basalt-host`, `useBreakpoint` on notice (§ 1.31.0) | `useBreakpoint` removal → 1.33.0; `useSizeClass` is shell-only (§ 1.32.0) | shell-less `shell/` gutter, `AppShell` breakpoints, `useSizeClass` for overlays (§§ Shell-less, `useSizeClass`) | — | `useBreakpoint` removed (§ 1.34.0) | — | — | `useCoarsePointer()` (§ `useCoarsePointer()`) | — | — | — | — | | content gutter 16, block 8 from `sm` (§ 1.38.1) | — | — | — | — | — | — | — | — |
74
+ | **controls** (`./controls`) | `NumberFilter`, `field.number` (§ Controls) | sheet renders panel rows; `PanelRow`, `SliderControl` (§ `basalt-ui/controls`) | — | — | — | — | — | — | — | `NumberFilter clearable`; `createSearchStore` `resets` (§ State and controls) | — | — | — | `FormSection`/`FormRow`/`FormGroup`/`FormActions` move here (§ The form layout moves) | — | — | — | — | — | — | — | — | — | — | — | — | — |
75
+ | **forms** (`./forms`) | — | `field` → `inputProps`, **`inputProps` drops `key`**, the layout tier (§ `inputProps`) | `field` DELETED — and the `--fix` recipe no longer works (§ Consolidation) | — | — | — | — | — | `FormGroup` row no longer stretches (§ Fixes) | — | — | — | — | the layout + `useForm`/`schemaResolver` deprecated, removed 1.37.0 (§ The form layout moves) | — | — | — | — | — | — | — | — | — | — | — | — | — |
76
+ | **data** (`./data/table`) | — | root is a `<div>`, row selection, `getItemKey` required (§ `basalt-ui/data`) | `./data` + `./query` + `./connectivity` dropped (§ Consolidation) | — | — | — | — | — | `renderCard` documented (§ `renderCard`) | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — |
77
+ | **dashboard** (`.`) | `StatCard`: `unit`, `breakdown`, delta format (§ `StatCard`) | `StatGroup`, `WidgetGrid`, query-aware `StatCard` — additive | — | **the column law keys on the CONTAINER; `cols={4}` is 2-up at `sm`** (§ Dashboard) | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — |
78
+ | **toolchain** (`./configs/*`) | — | — | the shipped lefthook preset's `check-theme` BROKE — the CLI resolver stopped ascending (§ CLI) | the preset's default bin, and the `root:` recipe (§ Toolchain) | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — |
79
+ | **CLI** (`basalt-ui`) | — | — | **resolver stops relocating; `doctor` loses 6 of 10 checks** (§ CLI) | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | the managed block moves `CLAUDE.md` → `AGENTS.md` (§ 1.41.0) | — | — |
80
+ | **guards** | five rules → `error` (§ Guards) | six new ids at `warn` (§ preamble) | `query-dual-import` retired in 1.29.1 (§ Guards) | four rules → `error` (§ Guards) | — | — | — | `raw-breakpoint`: the container-grid answer, `error` at 1.33.0 (§ 1.32.0) | `FormRow`/`FormGroup` homes in both lanes; `basalt-main` dropped (§ Fixes) | C1 + breakpoint pairs → `error`; `unknown-vx-token` `warn` (§ Guards) | — | — | — | `unknown-vx-token` → `error`; the token factories throw (§ Guards) | — | — | — | — | — | — | — | — | — | — | — | — | — |
81
81
 
82
82
  ---
83
83
 
84
+ ## 2.0.0
85
+
86
+ Contract: `docs/V2-SPEC.md`. Every removal and move is one row, grouped by area. 1.x is frozen at v1.41.0; 2.0.0 is the only major.
87
+
88
+ ### Upgrading from 1.x
89
+
90
+ 1. Go to `1.41.0` first and clear its deprecations: 2.0 retires the lifecycle, so nothing deprecated survives.
91
+ 2. Install `basalt-ui@2` and the now-required peers (§ Subpaths, peers and gates); delete your
92
+ `@mantine/*/styles.layer.css` imports, because `basalt-ui/styles.css` carries them.
93
+ 3. Replace the hand-built root (providers, `QueryClient`, router) with `BasaltProvider` +
94
+ `createBasaltRouter` (§ Provider and wiring).
95
+ 4. Rewrite imports by area, using the tables below. A `move` changes only the specifier.
96
+ 5. Run `bunx basalt-ui sync`, then `bunx basalt-ui doctor`, and take the lint findings one at a time.
97
+
98
+ ### AI, content, commands, state and table (`w3/delete-agent-data`)
99
+
100
+ Subpath folds: `basalt-ui/agent-chat` → `basalt-ui/agent`, `basalt-ui/notifications` → `basalt-ui/commands`, `basalt-ui/data/table` → `basalt-ui/table`. `basalt-ui/data/virtual` is removed. A `move` changes only the import specifier; the name is unchanged.
101
+
102
+ | Old import | New | Why |
103
+ | --------------------------------------------------------- | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
104
+ | `basalt-ui/commands`: `defineCommand` | deleted | no consumer outside the playground |
105
+ | `basalt-ui/commands`: `runCommand` | deleted | no consumer outside the playground |
106
+ | `basalt-ui/commands`: `CommandMap` | deleted | type removed (`'idle' \| 'submitted' \| 'streaming' \| 'done' \| 'error'`); derive with `NonNullable<ComponentProps<typeof ThreadFeedRow>['liveStatus']>` |
107
+ | `basalt-ui/commands`: `CommandId` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
108
+ | `basalt-ui/commands`: `CommandRunContext` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
109
+ | `basalt-ui/commands`: `defineOverlay` | deleted | no consumer outside the playground |
110
+ | `basalt-ui/commands`: `registerModalsProvider` | deleted | provider-internal (§ 2) |
111
+ | `basalt-ui/commands`: `Overlay` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
112
+ | `basalt-ui/commands`: `OverlayMap` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
113
+ | `basalt-ui/commands`: `OverlayKey` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
114
+ | `basalt-ui/commands`: `ConfirmOptions` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
115
+ | `basalt-ui/commands`: `ConfirmDeleteOptions` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
116
+ | `basalt-ui/commands`: `toSpotlightActions` | deleted | provider-internal |
117
+ | `basalt-ui/commands`: `toRouteActions` | deleted | no consumer outside the playground |
118
+ | `basalt-ui/commands`: `toShortcutList` | deleted | no consumer outside the playground |
119
+ | `basalt-ui/commands`: `toHotkeyBindings` | deleted | provider-internal (§ 2); § 8 replaces the mirrored hotkey types |
120
+ | `basalt-ui/commands`: `RouteActionItem` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
121
+ | `basalt-ui/commands`: `RouteActionSection` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
122
+ | `basalt-ui/commands`: `ToRouteActionsOptions` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
123
+ | `basalt-ui/commands`: `ShortcutEntry` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
124
+ | `basalt-ui/commands`: `HotkeyBinding` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
125
+ | `basalt-ui/commands`: `ColorScheme` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
126
+ | `basalt-ui/commands`: `ColorSchemeSetter` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
127
+ | `basalt-ui/commands`: `SidebarToggle` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
128
+ | `basalt-ui/commands`: `parseShortcut` | deleted | no consumer outside the playground |
129
+ | `basalt-ui/commands`: `detectMac` | deleted | no consumer outside the playground |
130
+ | `basalt-ui/commands`: `formatShortcutDisplay` | deleted | no consumer outside the playground |
131
+ | `basalt-ui/commands`: `useCommandHotkeys` | deleted | provider binds the `defineCommands` registry, Hotkeys 0.13 loaded lazily (§ 2, § 8) |
132
+ | `basalt-ui/commands`: `ShortcutsHelpProps` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
133
+ | `basalt-ui/commands`: `BasaltOverlays` | deleted | `BasaltProvider` mounts modals, spotlight, hotkeys, notifications (§ 2) |
134
+ | `basalt-ui/commands`: `BasaltOverlaysProps` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
135
+ | `basalt-ui/commands`: `basaltSpotlight` | deleted | no consumer outside the playground |
136
+ | `basalt-ui/commands`: `openSpotlight` | deleted | no consumer outside the playground |
137
+ | `basalt-ui/commands`: `closeSpotlight` | deleted | no consumer outside the playground |
138
+ | `basalt-ui/notifications`: `notify` | deleted | no consumer outside the playground |
139
+ | `basalt-ui/notifications`: `notifySuccess` | deleted | no consumer outside the playground |
140
+ | `basalt-ui/notifications`: `notifyError` | deleted | no consumer outside the playground |
141
+ | `basalt-ui/notifications`: `notifyWarning` | deleted | no consumer outside the playground |
142
+ | `basalt-ui/notifications`: `notifyInfo` | deleted | no consumer outside the playground |
143
+ | `basalt-ui/notifications`: `notifyPromise` | deleted | no consumer outside the playground |
144
+ | `basalt-ui/notifications`: `notifyUndo` | deleted | no consumer outside the playground |
145
+ | `basalt-ui/notifications`: `notifyUndoable` | deleted | no consumer outside the playground |
146
+ | `basalt-ui/notifications`: `NotifyOptions` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
147
+ | `basalt-ui/notifications`: `NotifyPromiseMessages` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
148
+ | `basalt-ui/notifications`: `NotifyUndoOptions` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
149
+ | `basalt-ui/notifications`: `NotifyUndoHandle` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
150
+ | `basalt-ui/notifications`: `defineNotification` | deleted | no consumer outside the playground |
151
+ | `basalt-ui/notifications`: `defineNotifications` | `basalt-ui/commands` | ./notifications folds into ./commands |
152
+ | `basalt-ui/notifications`: `emit` | `basalt-ui/commands` | ./notifications folds into ./commands |
153
+ | `basalt-ui/notifications`: `resolveAction` | deleted | no consumer outside the playground |
154
+ | `basalt-ui/notifications`: `NotificationAction` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
155
+ | `basalt-ui/notifications`: `NotificationKind` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
156
+ | `basalt-ui/notifications`: `NotificationSpec` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
157
+ | `basalt-ui/notifications`: `NotificationSpecMap` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
158
+ | `basalt-ui/notifications`: `NotificationIntent` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
159
+ | `basalt-ui/notifications`: `add` | deleted | no consumer outside the playground |
160
+ | `basalt-ui/notifications`: `markRead` | deleted | no consumer outside the playground |
161
+ | `basalt-ui/notifications`: `markAllRead` | deleted | no consumer outside the playground |
162
+ | `basalt-ui/notifications`: `dismiss` | deleted | no consumer outside the playground |
163
+ | `basalt-ui/notifications`: `dismissAll` | deleted | no consumer outside the playground |
164
+ | `basalt-ui/notifications`: `remove` | deleted | no consumer outside the playground |
165
+ | `basalt-ui/notifications`: `clear` | deleted | no consumer outside the playground |
166
+ | `basalt-ui/notifications`: `needsAttention` | deleted | no consumer outside the playground |
167
+ | `basalt-ui/notifications`: `useNotificationHistory` | deleted | no consumer outside the playground |
168
+ | `basalt-ui/notifications`: `NotificationActionRef` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
169
+ | `basalt-ui/notifications`: `NotificationHistoryItem` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
170
+ | `basalt-ui/notifications`: `NotificationHistoryState` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
171
+ | `basalt-ui/notifications`: `UseNotificationHistoryReturn` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
172
+ | `basalt-ui/notifications`: `NotificationBell` | `basalt-ui/commands` | ./notifications folds into ./commands |
173
+ | `basalt-ui/notifications`: `NotificationBellProps` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
174
+ | `basalt-ui/notifications`: `NotificationCenter` | deleted | no consumer outside the playground |
175
+ | `basalt-ui/notifications`: `NotificationCenterProps` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
176
+ | `basalt-ui/data/table`: `BasaltDataTable` | `basalt-ui/table` | ./data/table folds into ./table |
177
+ | `basalt-ui/data/table`: `BasaltDataTableProps` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
178
+ | `basalt-ui/data/table`: `BasaltDataTableSlot` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
179
+ | `basalt-ui/data/table`: `DataTableAlign` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
180
+ | `basalt-ui/data/table`: `DataTableColumnId` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
181
+ | `basalt-ui/data/table`: `DataTableColumnPinning` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
182
+ | `basalt-ui/data/table`: `DataTableFacet` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
183
+ | `basalt-ui/data/table`: `DataTableFacetOption` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
184
+ | `basalt-ui/data/table`: `createColumnHelper` | `basalt-ui/table` | becomes basalt-owned: `createColumnHelper<Row>()` over Table v9 (§ 8) |
185
+ | `basalt-ui/data/virtual`: `BasaltVirtualList` | deleted | no consumer; Virtual stays an internal dep of the transcript/table |
186
+ | `basalt-ui/data/virtual`: `BasaltVirtualListHandle` | deleted | no consumer outside the playground |
187
+ | `basalt-ui/data/virtual`: `BasaltVirtualListProps` | deleted | no consumer outside the playground |
188
+ | `basalt-ui/data/virtual`: `BasaltVirtualListSlot` | deleted | no consumer outside the playground |
189
+ | `basalt-ui/agent`: `AgentPartDraft` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
190
+ | `basalt-ui/agent`: `Drafted` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
191
+ | `basalt-ui/agent`: `StartPart` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
192
+ | `basalt-ui/agent`: `TextPart` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
193
+ | `basalt-ui/agent`: `ReasoningPart` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
194
+ | `basalt-ui/agent`: `ToolCallState` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
195
+ | `basalt-ui/agent`: `SourcePart` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
196
+ | `basalt-ui/agent`: `ErrorPart` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
197
+ | `basalt-ui/agent`: `isStartPart` | deleted | no consumer outside the playground |
198
+ | `basalt-ui/agent`: `isToolCallSettled` | deleted | no consumer outside the playground |
199
+ | `basalt-ui/agent`: `TERMINAL_TOOL_STATES` | deleted | no consumer outside the playground |
200
+ | `basalt-ui/agent`: `mergePart` | deleted | no consumer outside the playground |
201
+ | `basalt-ui/agent`: `withPartIds` | deleted | no consumer outside the playground |
202
+ | `basalt-ui/agent`: `coalesceParts` | deleted | no consumer outside the playground |
203
+ | `basalt-ui/agent`: `definePartRenderers` | deleted | no consumer outside the playground |
204
+ | `basalt-ui/agent`: `narrowAgentPart` | deleted | no consumer outside the playground |
205
+ | `basalt-ui/agent`: `ConsumerPart` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
206
+ | `basalt-ui/agent`: `PartRenderContext` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
207
+ | `basalt-ui/agent`: `AgentTransport` | kept | still exported from `basalt-ui/agent` (W9: the DX trial needed it to type a mock or custom transport) |
208
+ | `basalt-ui/agent`: `ResumableAgentTransport` | kept | still exported from `basalt-ui/agent` (W9: the DX trial needed it to type a mock or custom transport) |
209
+ | `basalt-ui/agent`: `edenTransport` | deleted | no consumer; `aiSdkTransport` is the one transport (§ 6) |
210
+ | `basalt-ui/agent`: `isResumable` | deleted | no consumer outside the playground |
211
+ | `basalt-ui/agent`: `AiSdkTransport` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
212
+ | `basalt-ui/agent`: `AiSdkTransportOptions` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
213
+ | `basalt-ui/agent`: `useAgentStream` | deleted | no consumer; `useAgentThreadRuns` is the one runner |
214
+ | `basalt-ui/agent`: `StreamStatus` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
215
+ | `basalt-ui/agent`: `UseAgentStreamReturn` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
216
+ | `basalt-ui/agent`: `UseAgentThreadRunsArgs` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
217
+ | `basalt-ui/agent`: `UseAgentThreadRunsReturn` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
218
+ | `basalt-ui/agent`: `PartList` | deleted | no consumer outside the playground |
219
+ | `basalt-ui/agent`: `PartListProps` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
220
+ | `basalt-ui/agent`: `AgentPartRenderers` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
221
+ | `basalt-ui/agent`: `TextPartRenderer` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
222
+ | `basalt-ui/agent`: `ReasoningPartRenderer` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
223
+ | `basalt-ui/agent`: `ToolCallPartRenderer` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
224
+ | `basalt-ui/agent`: `SourcePartRenderer` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
225
+ | `basalt-ui/agent`: `ErrorPartRenderer` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
226
+ | `basalt-ui/agent`: `BasaltStickToBottom` | deleted | no consumer outside the playground |
227
+ | `basalt-ui/agent`: `BasaltStickToBottomProps` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
228
+ | `basalt-ui/agent`: `createChatHistoryStore` | deleted | no consumer outside the playground |
229
+ | `basalt-ui/agent`: `ChatHistoryStore` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
230
+ | `basalt-ui/agent`: `ChatHistoryStoreOptions` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
231
+ | `basalt-ui/agent`: `createThreadsStore` | deleted | no consumer outside the playground |
232
+ | `basalt-ui/agent`: `ThreadsStoreOptions` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
233
+ | `basalt-ui/agent`: `heuristicOutcome` | deleted | no consumer outside the playground |
234
+ | `basalt-ui/agent`: `createAdapterThreadsStore` | deleted | no consumer outside the playground |
235
+ | `basalt-ui/agent`: `threadsStoreAdapterContract` | deleted | no consumer outside the playground |
236
+ | `basalt-ui/agent`: `AdapterThreadsStoreOptions` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
237
+ | `basalt-ui/agent`: `ThreadsStoreAdapter` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
238
+ | `basalt-ui/agent`: `ThreadsStoreAdapterContractCase` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
239
+ | `basalt-ui/agent-chat`: `ThreadWorkspace` | deleted | no consumer |
240
+ | `basalt-ui/agent-chat`: `ThreadWorkspaceProps` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
241
+ | `basalt-ui/agent-chat`: `ThreadFeed` | `basalt-ui/agent` | ./agent-chat folds into ./agent |
242
+ | `basalt-ui/agent-chat`: `ThreadFeedProps` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
243
+ | `basalt-ui/agent-chat`: `ThreadFeedRow` | `basalt-ui/agent` | ./agent-chat folds into ./agent |
244
+ | `basalt-ui/agent-chat`: `ThreadFeedRowProps` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
245
+ | `basalt-ui/agent-chat`: `MessageAffordances` | `basalt-ui/agent` | ./agent-chat folds into ./agent |
246
+ | `basalt-ui/agent-chat`: `RowHeightProps` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
247
+ | `basalt-ui/agent-chat`: `VirtualizeOptions` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
248
+ | `basalt-ui/agent-chat`: `VirtualizeProps` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
249
+ | `basalt-ui/agent-chat`: `ThreadOutcomeCard` | deleted | no consumer outside the playground |
250
+ | `basalt-ui/agent-chat`: `ThreadOutcomeCardProps` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
251
+ | `basalt-ui/agent-chat`: `ThreadDetailPanel` | deleted | no consumer outside the playground |
252
+ | `basalt-ui/agent-chat`: `ThreadDetailPanelProps` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
253
+ | `basalt-ui/agent-chat`: `Composer` | `basalt-ui/agent` | ./agent-chat folds into ./agent |
254
+ | `basalt-ui/agent-chat`: `ComposerAttachment` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
255
+ | `basalt-ui/agent-chat`: `ComposerHandle` | `basalt-ui/agent` | ./agent-chat folds into ./agent |
256
+ | `basalt-ui/agent-chat`: `ComposerProps` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
257
+ | `basalt-ui/agent-chat`: `ComposerSubmit` | `basalt-ui/agent` | ./agent-chat folds into ./agent |
258
+ | `basalt-ui/agent-chat`: `threadPartRenderers` | deleted | no consumer outside the playground |
259
+ | `basalt-ui/agent-chat`: `ThreadTranscript` | deleted | no consumer; argo renders turns through `ThreadFeedRow` |
260
+ | `basalt-ui/agent-chat`: `ThreadTranscriptProps` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
261
+ | `basalt-ui/agent-chat`: `ToolChip` | `basalt-ui/agent` | ./agent-chat folds into ./agent |
262
+ | `basalt-ui/agent-chat`: `ToolChipProps` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
263
+ | `basalt-ui/content`: `ProseDensity` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
264
+ | `basalt-ui/content`: `ProseProps` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
265
+ | `basalt-ui/content`: `CodeBlock` | deleted | rendered by `Markdown` fences; no direct consumer |
266
+ | `basalt-ui/content`: `CodeBlockProps` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
267
+ | `basalt-ui/content`: `CalloutProps` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
268
+ | `basalt-ui/content`: `TableOfContentsProps` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
269
+ | `basalt-ui/content`: `ReadingProgress` | deleted | no consumer outside the playground |
270
+ | `basalt-ui/content`: `ReadingProgressProps` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
271
+ | `basalt-ui/content`: `headingSlug` | deleted | no consumer outside the playground |
272
+ | `basalt-ui/content`: `readingTime` | deleted | no consumer outside the playground |
273
+ | `basalt-ui/content`: `SlugTracker` | deleted | no consumer outside the playground |
274
+ | `basalt-ui/content`: `ReadingTime` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
275
+ | `basalt-ui/content`: `HeadingAnchor` | deleted | no consumer outside the playground |
276
+ | `basalt-ui/content`: `HeadingAnchorProps` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
277
+ | `basalt-ui/content`: `FenceRenderContext` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
278
+ | `basalt-ui/content`: `MarkdownContentTrust` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
279
+ | `basalt-ui/content`: `BASALT_SANITIZE_SCHEMA` | deleted | no consumer outside the playground |
280
+ | `basalt-ui/content`: `SanitizePropertyDefinition` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
281
+ | `basalt-ui/content`: `SanitizeSchema` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
282
+ | `basalt-ui/content`: `MermaidDiagram` | deleted | rendered by `Markdown` fences; no direct consumer |
283
+ | `basalt-ui/content`: `MermaidDiagramProps` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
284
+ | `basalt-ui/content`: `blockSplit` | deleted | no consumer outside the playground |
285
+ | `basalt-ui/content`: `createMdxComponents` | deleted | no consumer outside the playground |
286
+ | `basalt-ui/content`: `mdxComponents` | deleted | no consumer outside the playground |
287
+ | `basalt-ui/content`: `CreateMdxComponentsOptions` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
288
+ | `basalt-ui/content`: `ArticleLayoutProps` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
289
+ | `basalt-ui/content`: `ArticleNavTarget` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
290
+ | `basalt-ui/content`: `ArticleCard` | deleted | no consumer outside the playground |
291
+ | `basalt-ui/content`: `ArticleGrid` | deleted | no consumer outside the playground |
292
+ | `basalt-ui/content`: `ArticleCardProps` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
293
+ | `basalt-ui/content`: `ArticleGridProps` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
294
+ | `basalt-ui/content`: `filterArticles` | deleted | no consumer outside the playground |
295
+ | `basalt-ui/content`: `formatArticleDate` | deleted | no consumer outside the playground |
296
+ | `basalt-ui/content`: `sortArticles` | deleted | no consumer outside the playground |
297
+ | `basalt-ui/content`: `Article` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
298
+ | `basalt-ui/content`: `ArticleFilterQuery` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
299
+ | `basalt-ui/content`: `ArticleOrder` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
300
+ | `basalt-ui/content`: `toArticleActions` | deleted | no consumer outside the playground |
301
+ | `basalt-ui/content`: `ToArticleActionsOptions` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
302
+ | `basalt-ui/content`: `FilterSet` | deleted | duplicate of `./controls`; one import path per symbol |
303
+ | `basalt-ui/content`: `MultiSelectFilter` | deleted | duplicate of `./controls`; one import path per symbol |
304
+ | `basalt-ui/content`: `ViewTabs` | deleted | duplicate of `./controls`; one import path per symbol |
305
+ | `basalt-ui/content`: `FilterSetProps` | deleted | duplicate of `./controls`; one import path per symbol |
306
+ | `basalt-ui/content`: `MultiSelectFilterProps` | deleted | duplicate of `./controls`; one import path per symbol |
307
+ | `basalt-ui/content`: `ViewTabsOption` | deleted | duplicate of `./controls`; one import path per symbol |
308
+ | `basalt-ui/content`: `ViewTabsProps` | deleted | duplicate of `./controls`; one import path per symbol |
309
+ | `basalt-ui/content`: `GuideDrawer` | deleted | no consumer outside the playground |
310
+ | `basalt-ui/content`: `GuideDrawerProps` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
311
+ | `basalt-ui/content`: `GuideLinkProps` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
312
+ | `basalt-ui/state`: `PersistedStateOptions` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
313
+ | `basalt-ui/state`: `readPersistedValue` | deleted | no consumer outside the playground |
314
+ | `basalt-ui/state`: `LocalStore` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
315
+ | `basalt-ui/state`: `FieldLane` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
316
+ | `basalt-ui/state`: `ResolvedLane` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
317
+ | `basalt-ui/state`: `ResolveLane` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
318
+ | `basalt-ui/state`: `RangeValue` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
319
+ | `basalt-ui/state`: `RangeParams` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
320
+ | `basalt-ui/state`: `RangePresets` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
321
+ | `basalt-ui/state`: `RangeWindows` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
322
+ | `basalt-ui/state`: `FieldFallback` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
323
+ | `basalt-ui/state`: `FieldSetOptions` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
324
+ | `basalt-ui/state`: `MultiField` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
325
+ | `basalt-ui/state`: `RangeField` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
326
+ | `basalt-ui/state`: `NumberField` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
327
+ | `basalt-ui/state`: `BooleanField` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
328
+ | `basalt-ui/state`: `StringField` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
329
+ | `basalt-ui/state`: `AnyField` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
330
+ | `basalt-ui/state`: `FieldValue` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
331
+ | `basalt-ui/state`: `FieldOption` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
332
+ | `basalt-ui/state`: `SearchValues` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
333
+ | `basalt-ui/state`: `StoredValues` | deleted | type removed; derive with `ComponentProps`/`Parameters` |
334
+
335
+ ### Lint (`w9/lint`)
336
+
337
+ Every `basalt/*` rule is `error` in 2.0.0 (the major is the channel). Edit your `.oxlintrc.json`
338
+ accordingly; an unknown `basalt/<id>` is a hard oxlint config error.
339
+
340
+ | Rule | Change | Consumer action |
341
+ | -------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
342
+ | `basalt/provider-above-router` | removed | delete it from `.oxlintrc.json`; `BasaltProvider` mounts `RouterProvider`, so the inverted tree cannot be written |
343
+ | `basalt/page-bar-budget` | removed | delete it; `PageBar.actions` and `Section.actions` are tuple types, so a sixth/second-primary/fourth action is a tsc error. A second `PageBar` in one tree and two filled buttons in one slot are no longer linted |
344
+ | `basalt/agent-resume-guard` | removed | delete it; `resumeStream` exists only on `useChat`/`Chat`, both banned by `agent-no-raw-usechat` |
345
+ | `basalt/deprecated-export` | removed | delete it; 2.0.0 ships no deprecations, every removal is a row in this file. Returns with the first 2.x deprecation |
346
+ | `basalt/shadow-basalt-export` | `warn` → `error` | rename the fork to compose the basalt export, or `theme-allow shadow-basalt-export — <why>` |
347
+ | `basalt/agent-no-raw-usechat` | widened to the `Chat` class | import `Chat` from neither `@ai-sdk/react` nor `ai/react`; use `useAgentStream` / `useAgentThreadRuns` |
348
+ | `basalt/no-dev-helper` | new, repo-local only (not in the preset) | none |
349
+ | `basalt/no-import-meta-env` | repo-local only, now enabled | none |
350
+ | `configs/oxlint.json` (generic preset) | the six `react/*` compiler rules (`globals`, `immutability`, `incompatible-library`, `preserve-manual-memoization`, `refs`, `set-state-in-effect`), `no-constant-binary-expression` and `typescript/no-explicit-any` are `error` | fix the findings; to turn one down for a path add `{ "overrides": [{ "files": ["src/legacy/**"], "rules": { "react/refs": "off" } }] }` to your own `.oxlintrc.json`, or write `// oxlint-disable-next-line react/refs -- <why>` |
351
+
352
+ ### Table v9 (`w6/table-v9`)
353
+
354
+ `BasaltDataTable` runs on `@tanstack/react-table` **9.2.8, exact** (peer and dev pin; 9.3.x waits on the `table-parity` / `table-v9.test` gate).
355
+
356
+ - Move your own `@tanstack/react-table` to `9.2.8` exact. Raw v8 helpers and `ColumnDef` no longer type-check against `columns`.
357
+ - `createColumnHelper` stays `import { createColumnHelper } from 'basalt-ui/table'` with the same one-generic call, `createColumnHelper<Row>()`. Do not import the helper from `@tanstack/react-table`: its v9 form needs `<TFeatures, TData>`.
358
+ - The table's registry is closed: sort functions `alphanumeric`, `text`, `datetime`, `basic`; filter function `includesString` (global search and facets). A column naming another built-in `sortFn` / `filterFn` falls back to the default with a dev-only warning.
359
+ - The `@tanstack/react-virtual` peer floor moves to `>=3.14.0 <4`.
360
+ - `initialColumnPinning` is logical: `{ left, right }` → `{ start, end }`.
361
+ - `meta.align` / `numeral` / `priority` are typed by the table's own `columnMeta` slot; the global `declare module '@tanstack/react-table'` augmentation is gone, so it no longer leaks into your own TanStack types.
362
+ - The global search now filters 250 ms after the last keystroke; `onGlobalFilterChange` fires at the same moment.
363
+
364
+ ### Transitions (`w7/transitions`)
365
+
366
+ Contract: `docs/V2-SPEC.md` § 5. React 19.3 is required (`ViewTransition`, `Activity`).
367
+
368
+ - Route changes animate through the router: `createBasaltRouter` sets `defaultViewTransition` with a direction from your `defineNav` order, only where `:active-view-transition-type()` is supported (Chrome 125 / Safari 18.2 / Firefox 147); elsewhere navigation does not animate. A `<ViewTransition>` around `<Outlet>` never fired (the router commits through `useSyncExternalStore`) and is now an error, `basalt/route-view-transition`: delete it. `<ViewTransition>` stays for in-page changes (`docs/waves/evidence/w10/transitions.md`).
369
+ - `PageAside` folds inside `startTransition` with a `<ViewTransition>` on the region, and the folded body is hidden under `<Activity>` instead of unmounted. Scroll, input values and `useState` survive a fold. A hidden `Activity` runs the body's effect cleanups and re-runs the effects on expand, so a subscribing or streaming child resumes from its own state; whatever an effect set up (timer, socket) is torn down while folded.
370
+ - `ThemeToggle` animates with a CSS transition, not `motion`. `motion` is no longer reached from the package root; it is required only by `basalt-ui/agent`.
371
+ - `styles.css` sets `animation: none` on `::view-transition-group(*)`, `-old(*)` and `-new(*)` under `prefers-reduced-motion: reduce`, and the base theme sets Mantine `respectReducedMotion: true`. A consumer theme that sets `respectReducedMotion: false` opts Mantine's own transitions back out.
372
+
373
+ ### Content streaming (`w8/content-streaming`)
374
+
375
+ `Markdown` no longer drops a blocked or unfinished image silently: when the `src` is refused (an off-origin image under `contentTrust="untrusted"`, or remend's `streamdown:incomplete-image` placeholder mid-stream) it renders the `alt` text as a plain `<span>` instead of an empty `<span aria-label>`. No `<img>` and no URL reaches the DOM either way. No action needed; a test that asserted the empty span must assert the alt text.
376
+
377
+ ### Agent runtime (`w8/agent-runtime`)
378
+
379
+ Behavior changes to symbols that stay; no import changes. Contract: V2-SPEC § 6, § 7.
380
+
381
+ | Symbol | Change |
382
+ | ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
383
+ | `ThreadRunState.status` | `'submitted' \| 'streaming' \| 'error'`. A fresh turn is `'submitted'` until its first text, reasoning or tool part, so `status === 'streaming'` no longer holds from the send. `NonNullable<ComponentProps<typeof ThreadFeedRow>['liveStatus']>` gains `'submitted'`, and the chat rows treat `'submitted'` and `'streaming'` as live, so `liveStatus={runs.get(id)?.status}` stays correct. For your own liveness check use `run?.status === 'submitted' \|\| run?.status === 'streaming'`. |
384
+ | `ThreadRunState.error` (new), `AgentError` (new) | A failed turn KEEPS its `runs` entry (`status: 'error'`, the parts so far, `error`) until the next `start()`/`retry()` replaces it or `stop()`/`stopAll()` dismisses it. `runs.has(id)` no longer means live: test `run.status`. `onError` still receives the raw thrown value, and now also fires for an abort that `stop()`/supersede/unmount did not issue. |
385
+ | `aiSdkTransport` failures | A non-2xx response, an `error` chunk and a malformed chunk now reject the stream. They used to end it as if the turn had completed. The run's `error` carries `kind: 'http'` / `'server'` / `'stream'`. |
386
+ | `aiSdkTransport({ transport })` (new form) | Any AI SDK `ChatTransport<UIMessage>` is used as-is, e.g. a `WebSocketChatTransport`. `{ api, headers?, credentials?, fetch? }` is unchanged. |
387
+ | `useAgentThreadRuns({ throttle, telemetry })` | `throttle` (ms, default `100`; pass `0` to commit every part) batches part commits like `useChat`. A completed or failed turn emits one `chat.turn` event (a `stop()`ped turn emits none) to `telemetry`, which defaults to the enclosing `BasaltProvider`'s sink. |
388
+ | Optional props of `basalt-ui/agent` | Every optional prop and field in the public types is `?: T \| undefined`, so a maybe-undefined value (`summary={maybe}`, `Partial<AgentThread>` with `resumeToken: undefined`) compiles under `exactOptionalPropertyTypes`. `undefined` means absent. Drop any omit-destructure or `''` workaround. Exceptions: the `?: never` discriminant markers and optional function parameters, which the option does not govern. |
389
+
390
+ ### Root, shell, controls, dashboard, format, forms, tokens, theme (W3 delete-core)
391
+
392
+ Source of the rows: `docs/waves/v2-surface.md`. A deleted export has no replacement unless the
393
+ row names one; a deleted type is derived with `ComponentProps<typeof X>` / `Parameters<typeof f>[0]`.
394
+
395
+ Behaviour and type changes (`docs/V2-SPEC.md` §§ 3–4):
396
+
397
+ | Was | Now |
398
+ | ----------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
399
+ | `<PageBar actions={{ primary, secondary: [...] }} />` | `actions` is a tuple: the first entry carries `primary: true`, then up to four more (`PageBarActions`); a missing or second primary and a sixth entry are tsc errors |
400
+ | `<Section actions={...} />` taking a `ReactNode` or `BarAction[]` | `actions` is a tuple of at most three `BarAction`s (`SectionActions`); wrap a custom node as `{ key, kind: 'custom', node }` |
401
+ | a filter or tab given `value`, `onChange` or `size` | still an error, now named: the slots are typed `never` on every filter and `ViewTabs` |
402
+ | `createBasaltTheme(_, { radius: number, density: number })` | `radius` is `-5 … 5`, `density` is `-3 … 3` (literal unions) |
403
+ | `createBasaltTheme(_, { inputs: 'desktop' })` | deleted — four dimensions: `derive`, `fonts`, `radius`, `density` |
404
+ | `paletteOptions.groups` as a string-keyed record | `SeriesGroup[]`: pass what `groupTokens` returned, so the `name-` key is written once |
405
+ | `Section` dev warning for a fourth action | gone — the tuple type rejects it |
406
+
407
+ Removed or moved exports (old import → new):
408
+
409
+ | Was | Now |
410
+ | ----------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
411
+ | `BasaltProps` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
412
+ | `SlotClassNames` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
413
+ | `SlotStylesProps` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
414
+ | `Tone` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
415
+ | `ToneWithNeutral` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
416
+ | `Tier` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
417
+ | `cx` — `basalt-ui` | deleted — no consumer outside the playground |
418
+ | `SCROLLPORT_ATTRIBUTE` — `basalt-ui` | deleted — no consumer outside the playground |
419
+ | `baseTheme` — `basalt-ui` | deleted — provider-internal |
420
+ | `cssVariablesResolver` — `basalt-ui` | deleted — provider-internal; a second resolver is the misuse it invites |
421
+ | `BasaltFontsConfig` — `basalt-ui` | deleted — duplicate of ./tokens; one import path per symbol |
422
+ | `CreateBasaltThemeOptions` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
423
+ | `CTL_THEME` — `basalt-ui` | deleted — no consumer outside the playground |
424
+ | `CtlSlot` — `basalt-ui` | deleted — no consumer outside the playground |
425
+ | `CtlSlotProps` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
426
+ | `useBasaltSpacing` — `basalt-ui` | deleted — no consumer outside the playground |
427
+ | `ThemeToggleProps` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
428
+ | `ActionGroup` — `basalt-ui` | deleted — duplicate of ./controls; one import path per symbol |
429
+ | `BarAction` — `basalt-ui` | import from `basalt-ui/controls` instead — duplicate of ./controls; one import path per symbol |
430
+ | `ActionGroupProps` — `basalt-ui` | deleted — duplicate of ./controls; one import path per symbol |
431
+ | `GlobalAction` — `basalt-ui` | import from `basalt-ui/controls` instead — duplicate of ./controls; one import path per symbol |
432
+ | `MOTION_DURATION` — `basalt-ui` | deleted — no consumer outside the playground |
433
+ | `MOTION_SPRING` — `basalt-ui` | deleted — no consumer outside the playground |
434
+ | `MOTION_EASE_STANDARD` — `basalt-ui` | deleted — no consumer outside the playground |
435
+ | `NavCountBadge` — `basalt-ui` | deleted — no consumer outside the playground |
436
+ | `NavCountBadgeProps` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
437
+ | `AppSidebar` — `basalt-ui` | deleted — BasaltShell is the one mount (§ 3) |
438
+ | `SidebarSearch` — `basalt-ui` | deleted — BasaltShell search prop |
439
+ | `SidebarSearchProps` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
440
+ | `SidebarSearchConfig` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
441
+ | `SidebarSearchActions` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
442
+ | `SidebarAccount` — `basalt-ui` | deleted — BasaltShell account prop |
443
+ | `MobileNav` — `basalt-ui` | deleted — BasaltShell is the one mount (§ 3) |
444
+ | `MobileNavProps` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
445
+ | `projectMobileNav` — `basalt-ui` | deleted — shell-internal |
446
+ | `ProjectMobileNavOptions` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
447
+ | `MOBILE_MAX_TABS_DEFAULT` — `basalt-ui` | deleted — no consumer outside the playground |
448
+ | `MOBILE_MENU_MAX_DEFAULT` — `basalt-ui` | deleted — no consumer outside the playground |
449
+ | `MOBILE_MORE_KEY` — `basalt-ui` | deleted — no consumer outside the playground |
450
+ | `AppBreadcrumbs` — `basalt-ui` | deleted — BasaltShell is the one mount (§ 3) |
451
+ | `AppBreadcrumbsProps` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
452
+ | `PageBarProps` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
453
+ | `PageBarSlot` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
454
+ | `PageAsideProps` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
455
+ | `PageAsideSlot` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
456
+ | `SizeClass` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
457
+ | `PageTitleProps` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
458
+ | `PageTitleSlot` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
459
+ | `SidebarSection` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
460
+ | `SidebarItem` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
461
+ | `SidebarBlockItem` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
462
+ | `SidebarBlockTone` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
463
+ | `SidebarListBlock` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
464
+ | `SidebarProgressBlock` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
465
+ | `SidebarCustomBlock` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
466
+ | `NavAnchor` — `basalt-ui` | deleted — duplicate of ./router-tanstack; one import path per symbol |
467
+ | `NavAnchorProps` — `basalt-ui` | deleted — duplicate of ./router-tanstack; one import path per symbol |
468
+ | `NavMobilePlacement` — `basalt-ui` | deleted — duplicate of ./router-tanstack; one import path per symbol |
469
+ | `NavSectionMobile` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
470
+ | `MobileNavConfig` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
471
+ | `MobileNavGroup` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
472
+ | `MobileNavModel` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
473
+ | `MobileNavSlot` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
474
+ | `MobileNavSurface` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
475
+ | `BasaltShellProps` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
476
+ | `BrandConfig` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
477
+ | `AppSidebarProps` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
478
+ | `AccountBadgeTone` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
479
+ | `BasaltIdentity` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
480
+ | `BasaltRole` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
481
+ | `BasaltPlan` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
482
+ | `AccountMenuItem` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
483
+ | `BasaltAccountState` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
484
+ | `BasaltAccountActions` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
485
+ | `BasaltAccountProps` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
486
+ | `Slot` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
487
+ | `Series` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
488
+ | `SeriesKey` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
489
+ | `AsyncState` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
490
+ | `assertNever` — `basalt-ui` | deleted — no consumer; x satisfies never needs no import |
491
+ | `StandardSchemaV1` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
492
+ | `createPersistedState` — `basalt-ui` | import from `basalt-ui/state` instead — duplicate of ./state; one import path per symbol |
493
+ | `PersistedStateOptions` — `basalt-ui` | deleted — duplicate of ./state; one import path per symbol |
494
+ | `readPersistedValue` — `basalt-ui` | deleted — duplicate of ./state; one import path per symbol |
495
+ | `createLocalStore` — `basalt-ui` | import from `basalt-ui/state` instead — duplicate of ./state; one import path per symbol |
496
+ | `LocalStore` — `basalt-ui` | deleted — duplicate of ./state; one import path per symbol |
497
+ | `AnyField` — `basalt-ui` | deleted — duplicate of ./state; one import path per symbol |
498
+ | `BooleanField` — `basalt-ui` | deleted — duplicate of ./state; one import path per symbol |
499
+ | `EnumField` — `basalt-ui` | deleted — duplicate of ./state; one import path per symbol |
500
+ | `FieldFallback` — `basalt-ui` | deleted — duplicate of ./state; one import path per symbol |
501
+ | `FieldHandle` — `basalt-ui` | deleted — duplicate of ./state; one import path per symbol |
502
+ | `FieldLane` — `basalt-ui` | deleted — duplicate of ./state; one import path per symbol |
503
+ | `FieldOption` — `basalt-ui` | deleted — duplicate of ./state; one import path per symbol |
504
+ | `FieldSetOptions` — `basalt-ui` | deleted — duplicate of ./state; one import path per symbol |
505
+ | `FieldValue` — `basalt-ui` | deleted — duplicate of ./state; one import path per symbol |
506
+ | `MultiField` — `basalt-ui` | deleted — duplicate of ./state; one import path per symbol |
507
+ | `NumberField` — `basalt-ui` | deleted — duplicate of ./state; one import path per symbol |
508
+ | `RangeField` — `basalt-ui` | deleted — duplicate of ./state; one import path per symbol |
509
+ | `RangeParams` — `basalt-ui` | deleted — duplicate of ./state; one import path per symbol |
510
+ | `RangePresets` — `basalt-ui` | deleted — duplicate of ./state; one import path per symbol |
511
+ | `RangeValue` — `basalt-ui` | deleted — duplicate of ./state; one import path per symbol |
512
+ | `RangeWindow` — `basalt-ui` | deleted — duplicate of ./state; one import path per symbol |
513
+ | `RangeWindows` — `basalt-ui` | deleted — duplicate of ./state; one import path per symbol |
514
+ | `ResolvedLane` — `basalt-ui` | deleted — duplicate of ./state; one import path per symbol |
515
+ | `ResolveLane` — `basalt-ui` | deleted — duplicate of ./state; one import path per symbol |
516
+ | `SearchValues` — `basalt-ui` | deleted — duplicate of ./state; one import path per symbol |
517
+ | `StoredValues` — `basalt-ui` | deleted — duplicate of ./state; one import path per symbol |
518
+ | `StringField` — `basalt-ui` | deleted — duplicate of ./state; one import path per symbol |
519
+ | `WidgetHeaderDeltaProps` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
520
+ | `WidgetHeaderMetricProps` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
521
+ | `WidgetHeaderProps` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
522
+ | `WidgetHeaderSlot` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
523
+ | `WidgetHeaderTier` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
524
+ | `WidgetHeaderTitleProps` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
525
+ | `DeltaBadgeProps` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
526
+ | `DeltaPolarity` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
527
+ | `SectionProps` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
528
+ | `SectionSlot` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
529
+ | `StatCardProps` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
530
+ | `StatCardSlot` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
531
+ | `WidgetGrid` — `basalt-ui` | deleted — no consumer outside the playground |
532
+ | `WidgetGridCols` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
533
+ | `WidgetGridItemProps` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
534
+ | `WidgetGridProps` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
535
+ | `StatGroupCols` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
536
+ | `StatGroupProps` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
537
+ | `EmptyStateProps` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
538
+ | `EmptyStateSlot` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
539
+ | `SettingsSectionProps` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
540
+ | `SettingsSectionSlot` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
541
+ | `SettingsRowProps` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
542
+ | `SettingsRowSlot` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
543
+ | `DangerZoneProps` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
544
+ | `QueryState` — `basalt-ui` | deleted — router defaultPendingComponent/defaultErrorComponent + suspense queries replace it (§ 2) |
545
+ | `QueryStateProps` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
546
+ | `QueryStateLike` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
547
+ | `QueryStateSlot` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
548
+ | `QueryStateTier` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
549
+ | `QueryEmptyCopy` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
550
+ | `LoadingState` — `basalt-ui` | deleted — router defaultPendingComponent (§ 2) |
551
+ | `LoadingStateProps` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
552
+ | `ErrorState` — `basalt-ui` | deleted — router defaultErrorComponent (§ 2) |
553
+ | `ErrorStateProps` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
554
+ | `SurfaceSpec` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
555
+ | `RuleName` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
556
+ | `SkillName` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
557
+ | `GuardKind` — `basalt-ui` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
558
+ | `ThreadWorkspace` — `basalt-ui` | deleted — duplicate of ./agent-chat; one import path per symbol |
559
+ | `ThreadFeed` — `basalt-ui` | deleted — duplicate of ./agent-chat; one import path per symbol |
560
+ | `ThreadFeedRow` — `basalt-ui` | deleted — duplicate of ./agent-chat; one import path per symbol |
561
+ | `ThreadOutcomeCard` — `basalt-ui` | deleted — duplicate of ./agent-chat; one import path per symbol |
562
+ | `ThreadDetailPanel` — `basalt-ui` | deleted — duplicate of ./agent-chat; one import path per symbol |
563
+ | `Composer` — `basalt-ui` | deleted — duplicate of ./agent-chat; one import path per symbol |
564
+ | `threadPartRenderers` — `basalt-ui` | deleted — duplicate of ./agent-chat; one import path per symbol |
565
+ | `ThreadTranscript` — `basalt-ui` | deleted — duplicate of ./agent-chat; one import path per symbol |
566
+ | `ToolChip` — `basalt-ui` | deleted — duplicate of ./agent-chat; one import path per symbol |
567
+ | `ThreadWorkspaceProps` — `basalt-ui` | deleted — duplicate of ./agent-chat; one import path per symbol |
568
+ | `ThreadFeedProps` — `basalt-ui` | deleted — duplicate of ./agent-chat; one import path per symbol |
569
+ | `ThreadFeedRowProps` — `basalt-ui` | deleted — duplicate of ./agent-chat; one import path per symbol |
570
+ | `ThreadOutcomeCardProps` — `basalt-ui` | deleted — duplicate of ./agent-chat; one import path per symbol |
571
+ | `ThreadDetailPanelProps` — `basalt-ui` | deleted — duplicate of ./agent-chat; one import path per symbol |
572
+ | `ComposerProps` — `basalt-ui` | deleted — duplicate of ./agent-chat; one import path per symbol |
573
+ | `ComposerSubmit` — `basalt-ui` | deleted — duplicate of ./agent-chat; one import path per symbol |
574
+ | `ComposerAttachment` — `basalt-ui` | deleted — duplicate of ./agent-chat; one import path per symbol |
575
+ | `ComposerHandle` — `basalt-ui` | deleted — duplicate of ./agent-chat; one import path per symbol |
576
+ | `ThreadTranscriptProps` — `basalt-ui` | deleted — duplicate of ./agent-chat; one import path per symbol |
577
+ | `MessageAffordances` — `basalt-ui` | deleted — duplicate of ./agent-chat; one import path per symbol |
578
+ | `VirtualizeOptions` — `basalt-ui` | deleted — duplicate of ./agent-chat; one import path per symbol |
579
+ | `VirtualizeProps` — `basalt-ui` | deleted — duplicate of ./agent-chat; one import path per symbol |
580
+ | `RowHeightProps` — `basalt-ui` | deleted — duplicate of ./agent-chat; one import path per symbol |
581
+ | `ToolChipProps` — `basalt-ui` | deleted — duplicate of ./agent-chat; one import path per symbol |
582
+ | `createAdapterThreadsStore` — `basalt-ui` | deleted — duplicate of ./agent; one import path per symbol |
583
+ | `createThreadsStore` — `basalt-ui` | deleted — duplicate of ./agent; one import path per symbol |
584
+ | `heuristicOutcome` — `basalt-ui` | deleted — duplicate of ./agent; one import path per symbol |
585
+ | `threadsStoreAdapterContract` — `basalt-ui` | deleted — duplicate of ./agent; one import path per symbol |
586
+ | `useAgentThreadRuns` — `basalt-ui` | deleted — duplicate of ./agent; one import path per symbol |
587
+ | `AdapterThreadsStoreOptions` — `basalt-ui` | deleted — duplicate of ./agent; one import path per symbol |
588
+ | `AgentThread` — `basalt-ui` | deleted — duplicate of ./agent; one import path per symbol |
589
+ | `AgentOutcome` — `basalt-ui` | deleted — duplicate of ./agent; one import path per symbol |
590
+ | `ThreadStatus` — `basalt-ui` | deleted — duplicate of ./agent; one import path per symbol |
591
+ | `ThreadsStore` — `basalt-ui` | deleted — duplicate of ./agent; one import path per symbol |
592
+ | `ThreadsStoreAdapter` — `basalt-ui` | deleted — duplicate of ./agent; one import path per symbol |
593
+ | `ThreadsStoreAdapterContractCase` — `basalt-ui` | deleted — duplicate of ./agent; one import path per symbol |
594
+ | `ThreadsStoreOptions` — `basalt-ui` | deleted — duplicate of ./agent; one import path per symbol |
595
+ | `OutcomeResolver` — `basalt-ui` | deleted — duplicate of ./agent; one import path per symbol |
596
+ | `ChatMessage` — `basalt-ui` | deleted — duplicate of ./agent; one import path per symbol |
597
+ | `AgentPart` — `basalt-ui` | deleted — duplicate of ./agent; one import path per symbol |
598
+ | `AgentTransport` — `basalt-ui` | deleted — duplicate of ./agent; one import path per symbol |
599
+ | `pxRem` — `basalt-ui/tokens` | deleted — no consumer outside the playground |
600
+ | `buildFontsCss` — `basalt-ui/tokens` | deleted — provider/CLI-internal |
601
+ | `buildRadiusCss` — `basalt-ui/tokens` | deleted — provider/CLI-internal |
602
+ | `buildDensityCss` — `basalt-ui/tokens` | deleted — provider/CLI-internal |
603
+ | `DEFAULT_DERIVE_CONFIG` — `basalt-ui/tokens` | deleted — no consumer outside the playground |
604
+ | `deriveTokens` — `basalt-ui/tokens` | deleted — no consumer outside the playground |
605
+ | `resolveDeriveConfig` — `basalt-ui/tokens` | deleted — no consumer outside the playground |
606
+ | `DeriveConfig` — `basalt-ui/tokens` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
607
+ | `DerivedPalette` — `basalt-ui/tokens` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
608
+ | `deriveRadius` — `basalt-ui/tokens` | deleted — no consumer outside the playground |
609
+ | `RadiusValues` — `basalt-ui/tokens` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
610
+ | `deriveSpacing` — `basalt-ui/tokens` | deleted — no consumer outside the playground |
611
+ | `SpaceValues` — `basalt-ui/tokens` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
612
+ | `resolveContainerClass` — `basalt-ui/tokens` | deleted — no consumer outside the playground |
613
+ | `SIZE_CLASSES` — `basalt-ui/tokens` | deleted — no consumer outside the playground |
614
+ | `ContainerClass` — `basalt-ui/tokens` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
615
+ | `BREAKPOINTS` — `basalt-ui/tokens` | deleted — no consumer outside the playground |
616
+ | `ColorSchemeSelector` — `basalt-ui/tokens` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
617
+ | `BuildPaletteOpts` — `basalt-ui/tokens` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
618
+ | `BasaltFontsConfig` — `basalt-ui/tokens` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
619
+ | `ThemeLabControls` — `basalt-ui/theme-lab` | deleted — dev-only; provider-internal (§ 2) (no longer a subpath) |
620
+ | `DeriveControls` — `basalt-ui/theme-lab` | deleted — dev-only; provider-internal (§ 2) (no longer a subpath) |
621
+ | `DeriveControlsProps` — `basalt-ui/theme-lab` | deleted — dev-only; provider-internal (§ 2) (no longer a subpath) |
622
+ | `applyOverrides` — `basalt-ui/theme-lab` | deleted — provider applies persisted lab overrides in dev (§ 2) (no longer a subpath) |
623
+ | `AREA_BOTTOM_VAR` — `basalt-ui/theme-lab` | deleted — dev-only; provider-internal (§ 2) (no longer a subpath) |
624
+ | `AREA_TOP_VAR` — `basalt-ui/theme-lab` | deleted — dev-only; provider-internal (§ 2) (no longer a subpath) |
625
+ | `COLOR_GROUPS` — `basalt-ui/theme-lab` | deleted — dev-only; provider-internal (§ 2) (no longer a subpath) |
626
+ | `loadOverrides` — `basalt-ui/theme-lab` | deleted — provider applies persisted lab overrides in dev (§ 2) (no longer a subpath) |
627
+ | `readVar` — `basalt-ui/theme-lab` | deleted — dev-only; provider-internal (§ 2) (no longer a subpath) |
628
+ | `saveOverrides` — `basalt-ui/theme-lab` | deleted — dev-only; provider-internal (§ 2) (no longer a subpath) |
629
+ | `ColorGroup` — `basalt-ui/theme-lab` | deleted — dev-only; provider-internal (§ 2) (no longer a subpath) |
630
+ | `ColorTunable` — `basalt-ui/theme-lab` | deleted — dev-only; provider-internal (§ 2) (no longer a subpath) |
631
+ | `Overrides` — `basalt-ui/theme-lab` | deleted — dev-only; provider-internal (§ 2) (no longer a subpath) |
632
+ | `ThemeLabControlsProps` — `basalt-ui/theme-lab` | deleted — dev-only; provider-internal (§ 2) (no longer a subpath) |
633
+ | `BasaltViteOptions` — `basalt-ui/vite` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
634
+ | `BasaltAppIcon` — `basalt-ui/vite` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
635
+ | `BasaltAppOptions` — `basalt-ui/vite` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
636
+ | `unmatchedExemptPatterns` — `basalt-ui/guard` | deleted — CLI-internal; no import consumer (no longer a subpath) |
637
+ | `guardKindRemedy` — `basalt-ui/guard` | deleted — CLI-internal; no import consumer (no longer a subpath) |
638
+ | `guardWaiverHint` — `basalt-ui/guard` | deleted — CLI-internal; no import consumer (no longer a subpath) |
639
+ | `checkSource` — `basalt-ui/guard` | deleted — CLI-internal; no import consumer (no longer a subpath) |
640
+ | `findAllowAnnotations` — `basalt-ui/guard` | deleted — CLI-internal; no import consumer (no longer a subpath) |
641
+ | `neutralizeAllowAnnotation` — `basalt-ui/guard` | deleted — CLI-internal; no import consumer (no longer a subpath) |
642
+ | `Finding` — `basalt-ui/guard` | deleted — CLI-internal; no import consumer (no longer a subpath) |
643
+ | `GuardConfig` — `basalt-ui/guard` | deleted — CLI-internal; no import consumer (no longer a subpath) |
644
+ | `GuardKind` — `basalt-ui/guard` | deleted — duplicate of .; one import path per symbol (no longer a subpath) |
645
+ | `GuardSeverity` — `basalt-ui/guard` | deleted — CLI-internal; no import consumer (no longer a subpath) |
646
+ | `DEFAULT_GUARD_CONFIG` — `basalt-ui/guard` | deleted — CLI-internal; no import consumer (no longer a subpath) |
647
+ | `GraceEntry` — `basalt-ui/guard` | deleted — CLI-internal; no import consumer (no longer a subpath) |
648
+ | `GRACE_PERIOD_KINDS` — `basalt-ui/guard` | deleted — CLI-internal; no import consumer (no longer a subpath) |
649
+ | `UnmatchedExemptPattern` — `basalt-ui/guard` | deleted — CLI-internal; no import consumer (no longer a subpath) |
650
+ | `PLUGIN_RULE_IDS` — `basalt-ui/guard` | deleted — CLI-internal; no import consumer (no longer a subpath) |
651
+ | `WAIVER_ID_ALIASES` — `basalt-ui/guard` | deleted — CLI-internal; no import consumer (no longer a subpath) |
652
+ | `GENERATED_HEADER_LINE` — `basalt-ui/guard` | deleted — CLI-internal; no import consumer (no longer a subpath) |
653
+ | `TOKENS_ONLY_DISABLED_KINDS` — `basalt-ui/guard` | deleted — CLI-internal; no import consumer (no longer a subpath) |
654
+ | `GUARD_RULES` — `basalt-ui/guard` | deleted — CLI-internal; no import consumer (no longer a subpath) |
655
+ | `AllowAnnotationSite` — `basalt-ui/guard` | deleted — CLI-internal; no import consumer (no longer a subpath) |
656
+ | `NEUTRALIZED_ALLOW_TOKEN` — `basalt-ui/guard` | deleted — CLI-internal; no import consumer (no longer a subpath) |
657
+ | `compact` — `basalt-ui/format` | deleted — no consumer outside the playground |
658
+ | `deltaPct` — `basalt-ui/format` | deleted — no consumer outside the playground |
659
+ | `DeltaPctOptions` — `basalt-ui/format` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
660
+ | `fmtCompact` — `basalt-ui/format` | deleted — alias of compact — one name per formatter |
661
+ | `FmtCompactOptions` — `basalt-ui/format` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
662
+ | `fmtCurrency` — `basalt-ui/format` | deleted — alias of money |
663
+ | `FmtCurrencyOptions` — `basalt-ui/format` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
664
+ | `fmtInt` — `basalt-ui/format` | deleted — alias of integer |
665
+ | `fmtPercent` — `basalt-ui/format` | deleted — alias of percent |
666
+ | `FmtPercentOptions` — `basalt-ui/format` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
667
+ | `LocaleOption` — `basalt-ui/format` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
668
+ | `NON_FINITE` — `basalt-ui/format` | deleted — no consumer outside the playground |
669
+ | `clock` — `basalt-ui/format` | deleted — no consumer outside the playground |
670
+ | `ClockOptions` — `basalt-ui/format` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
671
+ | `duration` — `basalt-ui/format` | deleted — no consumer outside the playground |
672
+ | `DurationOptions` — `basalt-ui/format` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
673
+ | `DurationUnit` — `basalt-ui/format` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
674
+ | `RelativeTimeOptions` — `basalt-ui/format` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
675
+ | `WeekdayOptions` — `basalt-ui/format` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
676
+ | `KcalOptions` — `basalt-ui/format` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
677
+ | `KmOptions` — `basalt-ui/format` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
678
+ | `UseBasaltFormOptions` — `basalt-ui/forms` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
679
+ | `useFormSubmit` — `basalt-ui/forms` | deleted — no consumer outside the playground |
680
+ | `isFieldErrorEnvelope` — `basalt-ui/forms` | deleted — no consumer outside the playground |
681
+ | `FormFieldErrors` — `basalt-ui/forms` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
682
+ | `UseFormSubmitOptions` — `basalt-ui/forms` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
683
+ | `UseFormSubmitReturn` — `basalt-ui/forms` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
684
+ | `FormStateProvider` — `basalt-ui/forms` | deleted — no consumer outside the playground |
685
+ | `useFormState` — `basalt-ui/forms` | deleted — no consumer outside the playground |
686
+ | `FormState` — `basalt-ui/forms` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
687
+ | `FormStateProviderProps` — `basalt-ui/forms` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
688
+ | `useFieldArray` — `basalt-ui/forms` | deleted — no consumer outside the playground |
689
+ | `UseFieldArrayReturn` — `basalt-ui/forms` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
690
+ | `FormErrorSummary` — `basalt-ui/forms` | deleted — no consumer outside the playground |
691
+ | `FormErrorSummaryProps` — `basalt-ui/forms` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
692
+ | `useFormDraft` — `basalt-ui/forms` | deleted — no consumer outside the playground |
693
+ | `DEFAULT_AUTOSAVE_DEBOUNCE_MS` — `basalt-ui/forms` | deleted — no consumer outside the playground |
694
+ | `UseFormDraftOptions` — `basalt-ui/forms` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
695
+ | `UseFormDraftReturn` — `basalt-ui/forms` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
696
+ | `ActionGroup` — `basalt-ui/controls` | deleted — no consumer outside the playground |
697
+ | `OverflowMenu` — `basalt-ui/controls` | deleted — no consumer outside the playground |
698
+ | `MOBILE_GLOBAL_BAR_MAX` — `basalt-ui/controls` | deleted — no consumer outside the playground |
699
+ | `barActionMobile` — `basalt-ui/controls` | deleted — no consumer outside the playground |
700
+ | `globalActionMobile` — `basalt-ui/controls` | deleted — no consumer outside the playground |
701
+ | `BarActionItem` — `basalt-ui/controls` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
702
+ | `BarActionMenu` — `basalt-ui/controls` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
703
+ | `BarActionCustom` — `basalt-ui/controls` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
704
+ | `ActionGroupProps` — `basalt-ui/controls` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
705
+ | `OverflowMenuProps` — `basalt-ui/controls` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
706
+ | `formatAge` — `basalt-ui/controls` | deleted — no consumer outside the playground |
707
+ | `AGE_REFRESH_MS` — `basalt-ui/controls` | deleted — no consumer outside the playground |
708
+ | `SyncButtonProps` — `basalt-ui/controls` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
709
+ | `ControlGroup` — `basalt-ui/controls` | deleted — no consumer outside the playground |
710
+ | `ControlGroupProps` — `basalt-ui/controls` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
711
+ | `FilterSetProps` — `basalt-ui/controls` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
712
+ | `RangeCustomPickerProps` — `basalt-ui/controls` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
713
+ | `RangeFilterProps` — `basalt-ui/controls` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
714
+ | `CompareFilter` — `basalt-ui/controls` | deleted — no consumer outside the playground |
715
+ | `COMPARE_VALUES` — `basalt-ui/controls` | deleted — no consumer outside the playground |
716
+ | `CompareFilterProps` — `basalt-ui/controls` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
717
+ | `CompareValue` — `basalt-ui/controls` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
718
+ | `FilterOption` — `basalt-ui/controls` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
719
+ | `SelectFilterEnumProps` — `basalt-ui/controls` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
720
+ | `SelectFilterProps` — `basalt-ui/controls` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
721
+ | `SelectFilterStringProps` — `basalt-ui/controls` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
722
+ | `MultiSelectFilterProps` — `basalt-ui/controls` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
723
+ | `NumberFilterOption` — `basalt-ui/controls` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
724
+ | `NumberFilterProps` — `basalt-ui/controls` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
725
+ | `SearchFilterProps` — `basalt-ui/controls` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
726
+ | `ToggleFilterProps` — `basalt-ui/controls` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
727
+ | `ViewTabsOption` — `basalt-ui/controls` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
728
+ | `ViewTabsProps` — `basalt-ui/controls` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
729
+ | `PanelRow` — `basalt-ui/controls` | deleted — no consumer outside the playground |
730
+ | `PanelRowProps` — `basalt-ui/controls` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
731
+ | `SliderControl` — `basalt-ui/controls` | deleted — no consumer outside the playground |
732
+ | `SliderControlProps` — `basalt-ui/controls` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
733
+ | `FormSection` — `basalt-ui/controls` | deleted — no consumer outside the playground |
734
+ | `FormActions` — `basalt-ui/controls` | deleted — no consumer outside the playground |
735
+ | `FormSectionProps` — `basalt-ui/controls` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
736
+ | `FormSectionSlot` — `basalt-ui/controls` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
737
+ | `FormRowProps` — `basalt-ui/controls` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
738
+ | `FormRowSlot` — `basalt-ui/controls` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
739
+ | `FormGroupProps` — `basalt-ui/controls` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
740
+ | `FormActionsProps` — `basalt-ui/controls` | deleted — type only; derive it with `ComponentProps`/`Parameters` |
741
+ | `RangeCustomPickerProps` — `basalt-ui/controls-dates` | deleted — duplicate of ./controls; one import path per symbol |
742
+
743
+ Still exported from `basalt-ui` in this wave, because the provider, query and dev-dock lanes replace them (V2-SPEC §§ 2, 7): `BasaltProviderProps`, `BasaltErrorBoundary`(`Props`), `BasaltErrorContext`, the `Connectivity*` family, `createBasaltQueryClient`, `BasaltQueryDevtools`, `toErrorMessage`, `errorStatus`, `BasaltDevDock`(`Props`/`Tool`). `BasaltRegister` is also kept: `declare module` augmentation only merges when the entry exports it.
744
+
745
+ ### CLI (`w9/cli`)
746
+
747
+ `basalt-ui sync` carries a 1.x install forward: untouched rules, skills and the `AGENTS.md` block are rewritten, a locally edited file is reported and left alone (`--force` overwrites it), and the manifest's `basaltVersion` moves. `sync --check` goes green once nothing is stale.
748
+
749
+ `basalt-ui doctor` gains three hard checks, each failure printing a `Fix:` line:
750
+
751
+ - `tsconfig-base`: `tsconfig.json` (or a config it references) must extend `basalt-ui/configs/tsconfig.react-app.json` or `tsconfig.base.json`; the 2.0 types assume `strict`, `exactOptionalPropertyTypes` and `noUncheckedIndexedAccess`.
752
+ - `retired-lint-rules`: `.oxlintrc.json` (and local `extends`) sets a `basalt/<id>` the installed plugin no longer registers; delete the entry.
753
+ - `dropped-subpaths`: a source file under `basalt.roots` imports a `basalt-ui/<subpath>` the install's `exports` lacks; reported as `file:line`.
754
+
755
+ A check that cannot run (an unloadable plugin, an unresolvable `extends`) prints `SKIPPED` and exits non-zero. `doctor` loads the ESM lint plugin with `require`: the bin runs under Bun, and under Node that needs ≥ 20.19 / 22.12. `init` seeds `src/main.tsx` (when absent, with both TanStack peers: `defineNav` rejects every call until its `Register` augmentation exists) and inserts `extends` into the tsconfig that covers `src`. Removed: the pre-1.41 `CLAUDE.md` → `AGENTS.md` block migration; `doctor` still warns about a leftover `CLAUDE.md`, delete its block by hand.
756
+
757
+ - `init` always seeds `src/main.tsx`, `src/routes/__root.tsx` and `src/lib/nav.tsx`: `@tanstack/react-router` and `@tanstack/react-query` are required peers of `.`, so `--with-router` and `--with-query` are deleted (passing either exits 1).
758
+ - `init` splices the shipped preset into an existing `.oxlintrc.json` by default (a stock create-vite one); `--merge-lint` is deleted and `--no-merge-lint` opts out. A child `plugins` list unions with the preset's, so `jsx-a11y` stays on. A config with comments is left as is and the line names the `extends` to add.
759
+ - `doctor` gains the hard check `app-wiring`: the entry `index.html` loads (default `src/main.tsx`) must mount `BasaltProvider` on a `createBasaltRouter` router, and the TanStack router plugin must be in the vite config (or `src/routeTree.gen.*` exist). A stock create-vite `main.tsx` is kept by `init`, so this is the check that turns red until it matches `agent/templates/main.tpl`.
760
+ - `init` rewrites create-vite's stock `"build": "tsc -b && vite build"` to `vite build && tsc -b` (vite's router plugin generates `routeTree.gen.ts`, which `tsc` needs); any other build script that runs `tsc` is left as is with a one-line advice.
761
+ - The shipped preset sets `react/only-export-components` to `["warn", { "allowExportNames": ["Route"] }]` so TanStack route files stop warning, and `init`'s lint merge adds `"Route"` to your own setting of that rule (its level and other options are kept).
762
+
763
+ ### Charts
764
+
765
+ Contract: `docs/V2-SPEC.md` § 9. `basalt-ui/charts` moved from visx to TanStack Charts. `@tanstack/charts` `1.1.0` and `d3-scale` `4.0.2` are exact, optional peers of `./charts`; visx is no dependency, peer or re-export. The public surface is `CartesianChart`, `ChartCard`, `chartCursor` and nine kinds (`Lines`, `Bars`, `StackedArea`, `Sparkline`, `BandStrip`, `Donut`, `Heatmap`, `DualPanel`, `MirroredBars`), plus their prop types. `ariaLabel` is required on every chart. The x scale follows the value `x` returns (`Date` → proportional time, which closes 1.x issue #52; `number` → linear; `string` → point or band). Engine marks for `marks` come from the allowed `@tanstack/charts/*` subpaths (`basalt/chart-engine-boundary`); basalt re-exports none.
766
+
767
+ Lint: `basalt/visx-boundary`, `basalt/visx-tooltip`, `basalt/hand-rolled-plot`, `basalt/chart-legend-literal` and the guard kinds `raw-visx-axis` and `chart-missing-aria-label` are deleted. `basalt/chart-engine-boundary` replaces the first two; the rest have no replacement (the rung and the required prop make them unreachable). A `theme-allow` naming a deleted id waives nothing (an unrecognised id is unknown); delete it. The guard has 26 kinds (was 28), and `profile: 'tokens-only'` disables 16 of them (was 18, the two deleted kinds having been Mantine-coupled). `basalt/chart-in-raw-surface` now names `Lines` and `Sparkline` (was `MultiLine`, `ZonedLine`, `LineSparkline`, `BarSparkline`). New: `basalt/chart-host-single` (repo-local) keeps `@tanstack/charts/react` inside `src/charts/host.tsx`.
768
+
769
+ | Old import | New | Why |
770
+ | ------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
771
+ | `basalt-ui/charts`: `LinePath` | `lineY` (`@tanstack/charts/line`) in `CartesianChart`'s `marks`, or a `Lines` series | visx is gone: no dependency, peer or re-export |
772
+ | `basalt-ui/charts`: `AreaClosed` | `areaY` (`@tanstack/charts/area`) in `marks`, or `ChartSeries.area` | visx is gone: no dependency, peer or re-export |
773
+ | `basalt-ui/charts`: `AreaStack` | `StackedArea`, or `areaY` + `stack` (`@tanstack/charts/stack`) in `marks` | visx is gone: no dependency, peer or re-export |
774
+ | `basalt-ui/charts`: `Threshold` (the visx component) | `Lines` `thresholds`, or `differenceY` (`@tanstack/charts/difference`) in `marks`; `Threshold` is now basalt's type for a `thresholds` entry | visx is gone: no dependency, peer or re-export |
775
+ | `basalt-ui/charts`: `Bar` | `Bars`, or `barY` (`@tanstack/charts/bar`, plus `stack`) in `marks` | visx is gone: no dependency, peer or re-export |
776
+ | `basalt-ui/charts`: `BarStack` | `Bars`, or `barY` (`@tanstack/charts/bar`, plus `stack`) in `marks` | visx is gone: no dependency, peer or re-export |
777
+ | `basalt-ui/charts`: `BarGroup` | `Bars`, or `barY` (`@tanstack/charts/bar`, plus `stack`) in `marks` | visx is gone: no dependency, peer or re-export |
778
+ | `basalt-ui/charts`: `Line` | `ruleX`/`ruleY` (`@tanstack/charts/rule`), `link` (`@tanstack/charts/link`) or `refLines` | visx is gone: no dependency, peer or re-export |
779
+ | `basalt-ui/charts`: `Pie` | `Donut` | visx is gone: no dependency, peer or re-export |
780
+ | `basalt-ui/charts`: `Group` | deleted; marks carry their own position | visx is gone: no dependency, peer or re-export |
781
+ | `basalt-ui/charts`: `GridRows` | deleted; `AxisConfig.grid` | visx is gone: no dependency, peer or re-export |
782
+ | `basalt-ui/charts`: `GridColumns` | deleted; `AxisConfig.grid` | visx is gone: no dependency, peer or re-export |
783
+ | `basalt-ui/charts`: `scaleLinear` | deleted; the x scale follows `x`'s value type; `@tanstack/charts/scales/*` or `d3-scale` (a peer) inside `marks` | visx is gone: no dependency, peer or re-export |
784
+ | `basalt-ui/charts`: `scaleBand` | deleted; the x scale follows `x`'s value type; `@tanstack/charts/scales/*` or `d3-scale` (a peer) inside `marks` | visx is gone: no dependency, peer or re-export |
785
+ | `basalt-ui/charts`: `scalePoint` | deleted; the x scale follows `x`'s value type; `@tanstack/charts/scales/*` or `d3-scale` (a peer) inside `marks` | visx is gone: no dependency, peer or re-export |
786
+ | `basalt-ui/charts`: `scaleTime` | deleted; the x scale follows `x`'s value type; `@tanstack/charts/scales/*` or `d3-scale` (a peer) inside `marks` | visx is gone: no dependency, peer or re-export |
787
+ | `basalt-ui/charts`: `curveMonotoneX` | `ChartSeries.curve`; `d3Curve` from `@tanstack/charts/d3/shape` inside `marks` | visx is gone: no dependency, peer or re-export |
788
+ | `basalt-ui/charts`: `curveLinear` | `ChartSeries.curve`; `d3Curve` from `@tanstack/charts/d3/shape` inside `marks` | visx is gone: no dependency, peer or re-export |
789
+ | `basalt-ui/charts`: `curveCatmullRom` | `ChartSeries.curve`; `d3Curve` from `@tanstack/charts/d3/shape` inside `marks` | visx is gone: no dependency, peer or re-export |
790
+ | `basalt-ui/charts`: `curveStep` | `ChartSeries.curve`; `d3Curve` from `@tanstack/charts/d3/shape` inside `marks` | visx is gone: no dependency, peer or re-export |
791
+ | `basalt-ui/charts`: `curveStepAfter` | `ChartSeries.curve`; `d3Curve` from `@tanstack/charts/d3/shape` inside `marks` | visx is gone: no dependency, peer or re-export |
792
+ | `basalt-ui/charts`: `curveStepBefore` | `ChartSeries.curve`; `d3Curve` from `@tanstack/charts/d3/shape` inside `marks` | visx is gone: no dependency, peer or re-export |
793
+ | `basalt-ui/charts`: `curveBasis` | `ChartSeries.curve`; `d3Curve` from `@tanstack/charts/d3/shape` inside `marks` | visx is gone: no dependency, peer or re-export |
794
+ | `basalt-ui/charts`: `ZonedLine` | `Lines`; `getX` + `chartId` → `x`, `isPending` → `state`, `areaFill` → `ChartSeries.area` | `ZonedLine` and `MultiLine` merged: zones, x-zones, ref lines and `y2` moved to the rung |
795
+ | `basalt-ui/charts`: `ZonedLineProps` | `LinesProps` | merged with `MultiLine` |
796
+ | `basalt-ui/charts`: `ZonedLineThreshold` | `Threshold` | renamed |
797
+ | `basalt-ui/charts`: `ZonedLineRefLine` | `RefLine` | one reference-line type for every kind |
798
+ | `basalt-ui/charts`: `BarsRefLine` | `RefLine` | one reference-line type for every kind |
799
+ | `basalt-ui/charts`: `MultiLine` | `Lines` | merged with `ZonedLine` |
800
+ | `basalt-ui/charts`: `MultiLineProps` | `LinesProps` | merged with `ZonedLineProps` |
801
+ | `basalt-ui/charts`: `Bars` | `Bars`, same name, new props: `positiveBars`/`negativeBars`/`getValue(d, key)` → `bars: BarsBar<T>[]` (each with its own `getValue`), `barLayout` → `layout: 'stacked' \| 'grouped' \| 'normalized'`, `getX`+`chartId`→`x` | contract change (V2-SPEC § 9.3) |
802
+ | `basalt-ui/charts`: `BarsProps` | kept, reshaped with `Bars` | contract change (V2-SPEC § 9.3) |
803
+ | `basalt-ui/charts`: `BarsBar` | kept, reshaped with `Bars` | contract change (V2-SPEC § 9.3) |
804
+ | `basalt-ui/charts`: `BarsLine` | kept, reshaped with `Bars` | contract change (V2-SPEC § 9.3) |
805
+ | `basalt-ui/charts`: `StackedArea` | `StackedArea`, rebuilt on this engine | rebuilt in W5 (props in § 9.3) |
806
+ | `basalt-ui/charts`: `StackedAreaProps` | `StackedArea`, rebuilt on this engine | rebuilt in W5 (props in § 9.3) |
807
+ | `basalt-ui/charts`: `DualPanel` | `DualPanel`, rebuilt on this engine (compiled through `composeViews`) | rebuilt in W5 (props in § 9.3) |
808
+ | `basalt-ui/charts`: `DualPanelProps` | `DualPanel`, rebuilt on this engine (compiled through `composeViews`) | rebuilt in W5 (props in § 9.3) |
809
+ | `basalt-ui/charts`: `MirroredBars` | `MirroredBars`, rebuilt on this engine | rebuilt in W5 (props in § 9.3) |
810
+ | `basalt-ui/charts`: `MirroredBarsProps` | `MirroredBars`, rebuilt on this engine | rebuilt in W5 (props in § 9.3) |
811
+ | `basalt-ui/charts`: `MirroredBarPane` | `MirroredBars`, rebuilt on this engine | rebuilt in W5 (props in § 9.3) |
812
+ | `basalt-ui/charts`: `BandStrip` | `BandStrip`, rebuilt on this engine | rebuilt in W5 (props in § 9.3) |
813
+ | `basalt-ui/charts`: `BandStripProps` | `BandStrip`, rebuilt on this engine | rebuilt in W5 (props in § 9.3) |
814
+ | `basalt-ui/charts`: `BandStripSeries` | `BandStrip`, rebuilt on this engine | rebuilt in W5 (props in § 9.3) |
815
+ | `basalt-ui/charts`: `BandSpan` | `BandStrip`, rebuilt on this engine | rebuilt in W5 (props in § 9.3) |
816
+ | `basalt-ui/charts`: `BandFold` | `BandStrip`, rebuilt on this engine | rebuilt in W5 (props in § 9.3) |
817
+ | `basalt-ui/charts`: `Donut` | `Donut`, rebuilt on this engine | rebuilt in W5 (props in § 9.3) |
818
+ | `basalt-ui/charts`: `DonutProps` | `Donut`, rebuilt on this engine | rebuilt in W5 (props in § 9.3) |
819
+ | `basalt-ui/charts`: `DonutDatum` | `Donut`, rebuilt on this engine | rebuilt in W5 (props in § 9.3) |
820
+ | `basalt-ui/charts`: `Heatmap` | `Heatmap`, rebuilt on this engine, unless the 3 bespoke grids are cheaper | no TanStack Charts port in W4; the 1.x kind had no consumer |
821
+ | `basalt-ui/charts`: `HeatmapProps` | `Heatmap`, rebuilt on this engine, unless the 3 bespoke grids are cheaper | no TanStack Charts port in W4; the 1.x kind had no consumer |
822
+ | `basalt-ui/charts`: `LineSparkline` | `Sparkline`, rebuilt on this engine (`mark: 'line' \| 'bar'`) | the two sparklines merge; rebuilt in W5 (props in § 9.3) |
823
+ | `basalt-ui/charts`: `BarSparkline` | `Sparkline`, rebuilt on this engine (`mark: 'line' \| 'bar'`) | the two sparklines merge; rebuilt in W5 (props in § 9.3) |
824
+ | `basalt-ui/charts`: `LineSparklineProps` | `SparklineProps`, rebuilt on this engine | the two sparklines merge; rebuilt in W5 (props in § 9.3) |
825
+ | `basalt-ui/charts`: `BarSparklineProps` | `SparklineProps`, rebuilt on this engine | the two sparklines merge; rebuilt in W5 (props in § 9.3) |
826
+ | `basalt-ui/charts`: `CartesianChart` | kept, new contract: `children(ctx)` → `marks(plot)`, `getX` + `chartId` → `x`, `isPending` → `state`, `ariaLabel` is required | a definition compiler plus one host (V2-SPEC § 9.2) |
827
+ | `basalt-ui/charts`: `CartesianChartProps` | kept names, new contract | V2-SPEC § 9.2 |
828
+ | `basalt-ui/charts`: `AxisConfig` | kept names, new contract | V2-SPEC § 9.2 |
829
+ | `basalt-ui/charts`: `PlotContext` | kept names, new contract | V2-SPEC § 9.2 |
830
+ | `basalt-ui/charts`: `resolveAxisDomain` | internal | the rung owns the y domains |
831
+ | `basalt-ui/charts`: `ChartFrame` | deleted; the host is private. A bespoke body moves to `CartesianChart` `marks`, a matrix to W5 `Heatmap` | the engine owns the frame |
832
+ | `basalt-ui/charts`: `ChartFrameProps` | deleted; the host is private. A bespoke body moves to `CartesianChart` `marks`, a matrix to W5 `Heatmap` | the engine owns the frame |
833
+ | `basalt-ui/charts`: `ChartFrameLegend` | deleted; the host is private. A bespoke body moves to `CartesianChart` `marks`, a matrix to W5 `Heatmap` | the engine owns the frame |
834
+ | `basalt-ui/charts`: `PlotRect` | deleted; the host is private. A bespoke body moves to `CartesianChart` `marks`, a matrix to W5 `Heatmap` | the engine owns the frame |
835
+ | `basalt-ui/charts`: `resolveLegend` | deleted; the host is private. A bespoke body moves to `CartesianChart` `marks`, a matrix to W5 `Heatmap` | the engine owns the frame |
836
+ | `basalt-ui/charts`: `ResponsiveChartHeight` | kept | unchanged |
837
+ | `basalt-ui/charts`: `ChartState` | kept; the `isPending` alias is deleted (use `state={{ pending }}`) | one state type |
838
+ | `basalt-ui/charts`: `ChartCenter` | internal to the host and `ChartCard`; render a state with the `state` prop | the host owns the placeholders |
839
+ | `basalt-ui/charts`: `ChartPending` | internal to the host and `ChartCard`; render a state with the `state` prop | the host owns the placeholders |
840
+ | `basalt-ui/charts`: `ChartEmpty` | internal to the host and `ChartCard`; render a state with the `state` prop | the host owns the placeholders |
841
+ | `basalt-ui/charts`: `ChartError` | internal to the host and `ChartCard`; render a state with the `state` prop | the host owns the placeholders |
842
+ | `basalt-ui/charts`: `ChartCenterProps` | internal to the host and `ChartCard`; render a state with the `state` prop | the host owns the placeholders |
843
+ | `basalt-ui/charts`: `ChartPendingProps` | internal to the host and `ChartCard`; render a state with the `state` prop | the host owns the placeholders |
844
+ | `basalt-ui/charts`: `ChartEmptyProps` | internal to the host and `ChartCard`; render a state with the `state` prop | the host owns the placeholders |
845
+ | `basalt-ui/charts`: `ChartErrorProps` | internal to the host and `ChartCard`; render a state with the `state` prop | the host owns the placeholders |
846
+ | `basalt-ui/charts`: `ResolvedChartState` | internal to the host and `ChartCard`; render a state with the `state` prop | the host owns the placeholders |
847
+ | `basalt-ui/charts`: `resolveChartState` | internal to the host and `ChartCard`; render a state with the `state` prop | the host owns the placeholders |
848
+ | `basalt-ui/charts`: `ChartCard` | kept | unchanged |
849
+ | `basalt-ui/charts`: `ChartCardProps` | kept | unchanged |
850
+ | `basalt-ui/charts`: `ChartCardSlot` | kept | unchanged |
851
+ | `basalt-ui/charts`: `ChartCard` `placeholderHeight` | default is the chart height law (the box an unsized chart takes), no longer `240`; it is a `number | ResponsiveChartHeight`. Pass the chart's own `height`when it states one, so a`<Suspense>` fallback reserves the final size | a pending card is a streamed section's fallback and must take the final box |
852
+ | `basalt-ui/charts`: `Donut` side legend | the legend sits beside the ring in a 480px-or-wider container (CSS), no longer when the frame is wider than 1.5 × its height; a stated `height` above 320px now gets the side layout too | the layout is a container query, so the server HTML is the hydrated layout |
853
+ | `basalt-ui/charts`: `ChartCard` short fold | a chart that states `height` ≤ 180px marks the card short in the server HTML (subtitle folds, KPI numeral `lg`, header top inset trims); no longer decided from a rendered height under 280px. A body that is not a chart is still measured | the fold is in the markup, so hydration does not re-fold the header |
854
+ | `basalt-ui/charts`: `legend.placement: 'header'` markup | the legend is drawn at the top of the chart body, spaced as the header's legend row; `[data-basalt-legend-slot]` and the legend inside the card's header element are gone, so a selector or test on the slot reads the chart body instead | the legend is in the chart's own markup, so it is in the server HTML and the header never grows on hydration |
855
+ | `basalt-ui/charts`: `[data-basalt-chart-legend]` value | reads `auto` (both swatches render, the container picks none / dots / chips); it was `dots` or `chips` | the mode is a container query, so the server HTML carries the right legend; read the computed `display` of the swatches for the effective mode |
856
+ | `basalt-ui/charts`: `ChartCursorScope` | the `cursorGroup` prop | no provider: one controller per group in a module map |
857
+ | `basalt-ui/charts`: `ChartCursorScopeProps` | the `cursorGroup` prop | no provider: one controller per group in a module map |
858
+ | `basalt-ui/charts`: `globalCursorStore` | `chartCursor(group?)`; read it with `useSyncExternalStore(controller.subscribe, controller.getState, () => null)` | the 1.x store is replaced by TanStack's cursor controller |
859
+ | `basalt-ui/charts`: `createCursorStore` | `chartCursor(group?)`; read it with `useSyncExternalStore(controller.subscribe, controller.getState, () => null)` | the 1.x store is replaced by TanStack's cursor controller |
860
+ | `basalt-ui/charts`: `CursorStore` | `chartCursor(group?)`; read it with `useSyncExternalStore(controller.subscribe, controller.getState, () => null)` | the 1.x store is replaced by TanStack's cursor controller |
861
+ | `basalt-ui/charts`: `CursorState` | `chartCursor(group?)`; read it with `useSyncExternalStore(controller.subscribe, controller.getState, () => null)` | the 1.x store is replaced by TanStack's cursor controller |
862
+ | `basalt-ui/charts`: `useCursorState` | `chartCursor(group?)`; read it with `useSyncExternalStore(controller.subscribe, controller.getState, () => null)` | the 1.x store is replaced by TanStack's cursor controller |
863
+ | `basalt-ui/charts`: `useChartCursor` | deleted; TanStack focus plus basalt's cursor resolution | the engine owns the pointer and keyboard model |
864
+ | `basalt-ui/charts`: `ChartCursor` | deleted; TanStack focus plus basalt's cursor resolution | the engine owns the pointer and keyboard model |
865
+ | `basalt-ui/charts`: `CursorAnchor` | deleted; TanStack focus plus basalt's cursor resolution | the engine owns the pointer and keyboard model |
866
+ | `basalt-ui/charts`: `DomainKind` | deleted; TanStack focus plus basalt's cursor resolution | the engine owns the pointer and keyboard model |
867
+ | `basalt-ui/charts`: `CursorResolution` | kept (`'exact' \| 'nearest' \| 'leading'`) | unchanged |
868
+ | `basalt-ui/charts`: `Crosshair` | deleted; the engine's crosshair, focus ring and keyboard focus | the engine owns the overlay |
869
+ | `basalt-ui/charts`: `SeriesDot` | deleted; the engine's crosshair, focus ring and keyboard focus | the engine owns the overlay |
870
+ | `basalt-ui/charts`: `HoverOverlay` | deleted; the engine's crosshair, focus ring and keyboard focus | the engine owns the overlay |
871
+ | `basalt-ui/charts`: `AxisBottomDate` | deleted; `AxisConfig` (`y`, `y2`), `xTicks`, `formatX` | the engine draws the guides |
872
+ | `basalt-ui/charts`: `AxisBottomNumeric` | deleted; `AxisConfig` (`y`, `y2`), `xTicks`, `formatX` | the engine draws the guides |
873
+ | `basalt-ui/charts`: `AxisLeftNumeric` | deleted; `AxisConfig` (`y`, `y2`), `xTicks`, `formatX` | the engine draws the guides |
874
+ | `basalt-ui/charts`: `AxisRightNumeric` | deleted; `AxisConfig` (`y`, `y2`), `xTicks`, `formatX` | the engine draws the guides |
875
+ | `basalt-ui/charts`: `ZoneRects` | deleted; `zones` / `xZones` props take `ZoneSpec` / `XZoneSpec`, which are kept | the rung compiles zones |
876
+ | `basalt-ui/charts`: `XZoneRects` | deleted; `zones` / `xZones` props take `ZoneSpec` / `XZoneSpec`, which are kept | the rung compiles zones |
877
+ | `basalt-ui/charts`: `AreaGradient` | `ChartSeries.area` | the engine owns SVG resources |
878
+ | `basalt-ui/charts`: `areaFillUrl` | `ChartSeries.area` | the engine owns SVG resources |
879
+ | `basalt-ui/charts`: `HatchPattern` | deleted; absent-state paint is a flat fill (V2-SPEC § 9 Open item: hatch) | TanStack's SVG resources are gradients and clips only |
880
+ | `basalt-ui/charts`: `hatchFill` | deleted; absent-state paint is a flat fill (V2-SPEC § 9 Open item: hatch) | TanStack's SVG resources are gradients and clips only |
881
+ | `basalt-ui/charts`: `hatchSizeFor` | deleted; absent-state paint is a flat fill (V2-SPEC § 9 Open item: hatch) | TanStack's SVG resources are gradients and clips only |
882
+ | `basalt-ui/charts`: `ChartTooltipFloat` | deleted; rows are `ChartTooltipRow` data from `tooltip.rows(d, { visible, hidden })`, the title is `tooltip.formatHeader(x, d)` | the tooltip surface is TanStack's |
883
+ | `basalt-ui/charts`: `TooltipHeader` | deleted; rows are `ChartTooltipRow` data from `tooltip.rows(d, { visible, hidden })`, the title is `tooltip.formatHeader(x, d)` | the tooltip surface is TanStack's |
884
+ | `basalt-ui/charts`: `TooltipRow` | deleted; rows are `ChartTooltipRow` data from `tooltip.rows(d, { visible, hidden })`, the title is `tooltip.formatHeader(x, d)` | the tooltip surface is TanStack's |
885
+ | `basalt-ui/charts`: `TooltipBody` | deleted; rows are `ChartTooltipRow` data from `tooltip.rows(d, { visible, hidden })`, the title is `tooltip.formatHeader(x, d)` | the tooltip surface is TanStack's |
886
+ | `basalt-ui/charts`: `CartesianTooltipConfig` | `ChartTooltipConfig` (one type for every kind) | `label` / `prependRows` / `extraRows` / `TooltipRow` collapse into `tooltip.rows` |
887
+ | `basalt-ui/charts`: `CartesianTooltipRowContext` | `ChartTooltipConfig` (one type for every kind) | `label` / `prependRows` / `extraRows` / `TooltipRow` collapse into `tooltip.rows` |
888
+ | `basalt-ui/charts`: `BandTooltipConfig` | `ChartTooltipConfig` (one type for every kind) | `label` / `prependRows` / `extraRows` / `TooltipRow` collapse into `tooltip.rows` |
889
+ | `basalt-ui/charts`: `BandTooltipRowContext` | `ChartTooltipConfig` (one type for every kind) | `label` / `prependRows` / `extraRows` / `TooltipRow` collapse into `tooltip.rows` |
890
+ | `basalt-ui/charts`: `ChartLegend` | internal; an external legend is `legend.placement: 'header'` | legend and tooltip rows derive from `series` inside the host |
891
+ | `basalt-ui/charts`: `LegendEntry` | internal; an external legend is `legend.placement: 'header'` | legend and tooltip rows derive from `series` inside the host |
892
+ | `basalt-ui/charts`: `deriveLegend` | internal; an external legend is `legend.placement: 'header'` | legend and tooltip rows derive from `series` inside the host |
893
+ | `basalt-ui/charts`: `deriveTooltipRows` | internal; an external legend is `legend.placement: 'header'` | legend and tooltip rows derive from `series` inside the host |
894
+ | `basalt-ui/charts`: `ChartLegendConfig` | kept; `LegendPlacement` is inlined | unchanged shape |
895
+ | `basalt-ui/charts`: `LegendPlacement` | inlined in `ChartLegendConfig` (`'top' \| 'bottom' \| 'header'`) | one legend type |
896
+ | `basalt-ui/charts`: `ChartSeries` | kept; absorbs `SeriesStyle`, plus `area` | one series descriptor |
897
+ | `basalt-ui/charts`: `SeriesStyle` | folded into `ChartSeries` (`ChartSeries['curve']`, …) | one series descriptor |
898
+ | `basalt-ui/charts`: `SeriesMark` | folded into `ChartSeries` (`ChartSeries['curve']`, …) | one series descriptor |
899
+ | `basalt-ui/charts`: `SeriesDash` | folded into `ChartSeries` (`ChartSeries['curve']`, …) | one series descriptor |
900
+ | `basalt-ui/charts`: `SeriesCurve` | folded into `ChartSeries` (`ChartSeries['curve']`, …) | one series descriptor |
901
+ | `basalt-ui/charts`: `SeriesRole` | folded into `ChartSeries` (`ChartSeries['curve']`, …) | one series descriptor |
902
+ | `basalt-ui/charts`: `curveFor` | internal | `ChartSeries.curve` is the public seam |
903
+ | `basalt-ui/charts`: `foldBands` | internal | returns with W5 `BandStrip` |
904
+ | `basalt-ui/charts`: `useChartSize` | deleted; the host measures the width | the host owns sizing |
905
+ | `basalt-ui/charts`: `UseChartSizeResult` | deleted; the host measures the width | the host owns sizing |
906
+ | `basalt-ui/charts`: `ChartSize` | deleted; the host measures the width | the host owns sizing |
907
+ | `basalt-ui/charts`: `autoMargin` | deleted | TanStack's measured guides own the margins |
908
+ | `basalt-ui/charts`: `probeAxisLabels` | deleted | TanStack's measured guides own the margins |
909
+ | `basalt-ui/charts`: `AutoMarginInput` | deleted | TanStack's measured guides own the margins |
910
+ | `basalt-ui/charts`: `measureText` | deleted | TanStack's measured guides own the margins |
911
+ | `basalt-ui/charts`: `maxTextWidth` | deleted | TanStack's measured guides own the margins |
912
+ | `basalt-ui/charts`: `smartTicks` | deleted; `xTicks` (a count or the values) plus `tickLabels.thin`; labels never rotate | the engine thins colliding labels |
913
+ | `basalt-ui/charts`: `smartTicksEvery` | deleted; `xTicks` (a count or the values) plus `tickLabels.thin`; labels never rotate | the engine thins colliding labels |
914
+ | `basalt-ui/charts`: `xLabelPxFor` | deleted; `xTicks` (a count or the values) plus `tickLabels.thin`; labels never rotate | the engine thins colliding labels |
915
+ | `basalt-ui/charts`: `autoXLabelRotate` | deleted; `xTicks` (a count or the values) plus `tickLabels.thin`; labels never rotate | the engine thins colliding labels |
916
+ | `basalt-ui/charts`: `chartMargin` | deleted; margins are measured, band kinds own their top inset | the engine owns the margins |
917
+ | `basalt-ui/charts`: `ChartMargin` | deleted; margins are measured, band kinds own their top inset | the engine owns the margins |
918
+ | `basalt-ui/charts`: `fmtAxisDate` | deleted (also from `basalt-ui/format`); `formatX` and `tooltip.formatHeader` default to the date formats | one home for formatters |
919
+ | `basalt-ui/charts`: `fmtTooltipDate` | deleted (also from `basalt-ui/format`); `formatX` and `tooltip.formatHeader` default to the date formats | one home for formatters |
920
+ | `basalt-ui/charts`: `fmtCompact` | deleted; `AxisConfig.format` defaults to compact numbers | one home for formatters |
921
+ | `basalt-ui/charts`: `FmtCompactOptions` | deleted; `AxisConfig.format` defaults to compact numbers | one home for formatters |
922
+ | `basalt-ui/charts`: `fmtPercent` | `percent` from `basalt-ui/format` | one home for formatters |
923
+ | `basalt-ui/charts`: `FmtPercentOptions` | `percent` from `basalt-ui/format` | one home for formatters |
924
+ | `basalt-ui/charts`: `fmtCurrency` | `money` from `basalt-ui/format` | one home for formatters |
925
+ | `basalt-ui/charts`: `FmtCurrencyOptions` | `money` from `basalt-ui/format` | one home for formatters |
926
+ | `basalt-ui/charts`: `fmtInt` | `integer` from `basalt-ui/format` | one home for formatters |
927
+ | `basalt-ui/charts`: `formatters` | deleted; `basalt-ui/format` | one home for formatters |
928
+ | `basalt-ui/charts`: `VX` | `basalt-ui/tokens` (a move: the name is unchanged) | `basalt-ui/charts` re-exports no tokens |
929
+ | `basalt-ui/charts`: `alpha` | `basalt-ui/tokens` (a move: the name is unchanged) | `basalt-ui/charts` re-exports no tokens |
930
+ | `basalt-ui/charts`: `buildPaletteCss` | `basalt-ui/tokens` (a move: the name is unchanged) | `basalt-ui/charts` re-exports no tokens |
931
+ | `basalt-ui/charts`: `seriesTokens` | `basalt-ui/tokens` (a move: the name is unchanged) | `basalt-ui/charts` re-exports no tokens |
932
+ | `basalt-ui/charts`: `defineSeries` | `basalt-ui/tokens` (a move: the name is unchanged) | `basalt-ui/charts` re-exports no tokens |
933
+ | `basalt-ui/charts`: `groupTokens` | `basalt-ui/tokens` (a move: the name is unchanged) | `basalt-ui/charts` re-exports no tokens |
934
+ | `basalt-ui/charts`: `ColorPair` | `basalt-ui/tokens` (a move: the name is unchanged) | `basalt-ui/charts` re-exports no tokens |
935
+ | `basalt-ui/charts`: `SeriesMap` | `basalt-ui/tokens` (a move: the name is unchanged) | `basalt-ui/charts` re-exports no tokens |
936
+ | `basalt-ui/charts`: `SeriesKey` | `basalt-ui/tokens` or `basalt-ui` (a move: the name is unchanged) | `basalt-ui/charts` re-exports no tokens |
937
+ | `basalt-ui/charts`: `VxThemeProvider` | deleted; every chart paint is a `var(--vx-*)` reference | no theme context |
938
+ | `basalt-ui/charts`: `useVxTheme` | deleted; every chart paint is a `var(--vx-*)` reference | no theme context |
939
+ | `basalt-ui/charts`: `VxTheme` | deleted; every chart paint is a `var(--vx-*)` reference | no theme context |
940
+
941
+ ### Subpaths, peers and gates (W3 gates)
942
+
943
+ | 1.41 import | 2.0 | Reason |
944
+ | ---------------------------------------------- | ---------------------------- | ----------------------------------------------------------------------------------- |
945
+ | `basalt-ui/agent-chat` | `basalt-ui/agent` | the chat UI folds into `./agent`; `motion` is subpath-required there |
946
+ | `basalt-ui/notifications` | `basalt-ui/commands` | no new peer: `BasaltProvider` mounts `Notifications`, `ModalsProvider`, `Spotlight` |
947
+ | `basalt-ui/router-tanstack` (nav half) | `basalt-ui` | nav lives in the root barrel |
948
+ | `basalt-ui/router-tanstack` (store half) | `basalt-ui/state` | stores live with `field` and the search store |
949
+ | `basalt-ui/data/table` | `basalt-ui/table` | renamed; `@tanstack/react-table` is subpath-required |
950
+ | `basalt-ui/data/virtual` | deleted | 0 imports across the fleet |
951
+ | `basalt-ui/guard` | deleted | CLI-internal |
952
+ | `basalt-ui/theme-lab` | deleted | provider-mounted in dev |
953
+ | `basalt-ui/tokens.css` | `basalt-ui tokens:css` (CLI) | weatherorb 1.30 and rollhook 1.36 only |
954
+ | `basalt-ui/llms.txt`, `basalt-ui/package.json` | deleted from `exports` | 0 imports; both files stay in the tarball |
955
+
956
+ Peers: `react`, `react-dom`, `@mantine/{core,hooks,modals,notifications,spotlight}`,
957
+ `@tanstack/{react-router,react-query}` and the three `@fontsource-variable/*` are now **required**
958
+ (no longer `optional`). `@ai-sdk/provider` (`./agent`) and `dayjs` (`./controls-dates`) are new
959
+ optional, subpath-required peers.
960
+
961
+ ### Provider and wiring
962
+
963
+ | Old import | New / deleted | Why |
964
+ | ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
965
+ | `BasaltProvider` `children`, `onError`, `connectivity` props | `router` (required), `telemetry?`, `fallback?`; `theme` defaults to `createBasaltTheme()` | the provider mounts the router and every overlay (V2-SPEC § 2) |
966
+ | `createBasaltQueryClient` (`basalt-ui`) | `createBasaltRouter({ routeTree, context?, query? })` | one QueryClient per router, 1.x defaults kept, `query` merges over them |
967
+ | `BasaltErrorBoundary`, `BasaltErrorBoundaryProps` | deleted: `BasaltProvider fallback` + telemetry `render.error`; routes get `defaultErrorComponent` | the provider mounts the root boundary |
968
+ | `BasaltErrorContext` | `BasaltEvent` (type) | `onError` is replaced by the `telemetry` seam (V2-SPEC § 7) |
969
+ | `BasaltOverlays`, `useCommandHotkeys` glue (`basalt-ui/commands`) | deleted: the provider mounts `ModalsProvider` (wrapping the router), `Notifications`, `Spotlight`, and binds registry hotkeys | no second mount, no `modals={false}` escape |
970
+ | `BasaltQueryDevtools`, `BasaltDevDock`, `BasaltDevDockProps`, `BasaltDevDockTool` | deleted: the provider mounts one dev dock in dev (router + query devtools, theme lab) behind a literal `NODE_ENV` gate; Spotlight commands `dev.router` / `dev.query` / `dev.theme` open it | one dock, never in production |
971
+ | `ConnectivityProvider`, `ConnectivityIndicator`, `useConnectivity` and their types | deleted | no consumer; the auto-mount is gone |
972
+ | `toErrorMessage`, `errorStatus` (`basalt-ui`) | deleted | no consumer outside the playground |
973
+ | `queryClient` seed `agent/templates/query-client.ts.tpl` | deleted; `__root.tpl` seeds `createRootRouteWithContext<BasaltRouterContext>()` | the router owns the client |
974
+ | `@mantine/{core,notifications,spotlight}/styles.layer.css` imports in the app | delete them: `basalt-ui/styles.css` now `@import`s all three, so keeping yours emits the bundle twice. With `basalt-ui/controls-dates`, import `@mantine/dates/styles.layer.css` AFTER `basalt-ui/styles.css` | the provider mounts `Notifications` and `Spotlight`, so their layers ship with it |
975
+
976
+ ### Router bridge (`basalt-ui/router-tanstack`)
977
+
978
+ | Old import | New / deleted | Why |
979
+ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |
980
+ | `defineNav`, `navGroup`, `navTarget`, `flattenNav`, `useBasaltNav`, `NavItemId` | move to `basalt-ui` | `./router-tanstack` folds into `.` |
981
+ | `createSearchStore` | `basalt-ui/state` | the store half folds into `./state` |
982
+ | `field` and the 20 `Field`/`Range*`/`Search*` types re-exported here | `basalt-ui/state` (same names) | one import path per symbol |
983
+ | `defineNav(config)` without the `Register` augmentation | compile error: the parameter becomes `'basalt: declare Register { router }'` | the definition validated nothing (V2-SPEC § 3) |
984
+ | `useRouterBreadcrumbs`, `BasaltBreadcrumb`, `BasaltNav` | deleted | shell-internal / unnamed |
985
+ | `NavItemMeta`, `NavGroupMeta`, `AnyNavItem`, `AnyNavGroup`, `AnyNavLink`, `FlatNavItem`, `NavConfig`, `NavGroupId`, `NavTabId`, `NavIndex`, `UseNavOptions`, `NavBinding`, `NavAnchor`, `NavAnchorProps`, `NavMobilePlacement` | deleted | no consumer names them; derive with `ComponentProps` / `Parameters` |
986
+ | `useNav`, and `BasaltShell`'s `sections` / `mobileNav` props | deleted: pass `nav={NAV}` (plus `badges`, `isActive`, `getScrollElement` — the old `useNav` options) to `BasaltShell`; it resolves the sidebar, the mobile bar and the breadcrumb itself. `mobileNav` tuning moves to `defineNav`'s `mobile`. argo `apps/dashboard/src/routes/__root.tsx`: replace `const nav = useNav(NAV, { badges })` + `{...nav}` with `nav={NAV} badges={…}` (migrates in W12; 1.x consumers stay on their pinned version until then) |
987
+
84
988
  ## Unreleased
85
989
 
86
990
  _Nothing yet. Author the next section under this heading as `## Unreleased — <title>`; the
87
991
  release renames it and opens a new one here._
88
992
 
993
+ ## 2.0.0
994
+
995
+ _Nothing to migrate in this release._
996
+
89
997
  ## 1.41.0 — the managed block moves to AGENTS.md
90
998
 
91
999
  **Changed: `init` and `sync` splice the `<!-- basalt:begin … -->` block into `AGENTS.md`, not
@@ -901,7 +1809,7 @@ claim to have already done this was false. **Consumer-visible consequence:** the
901
1809
  an installed tarball carries its own version number. If it says `Unreleased`, file it.
902
1810
 
903
1811
  **§ 1.30.0 § Guards carries a corrected number**, restated here because a published measurement
904
- moved: meteo is 5 `control-outside-home` incumbents, not 0, and the fleet total is 34, not 29 — the
1812
+ moved: weatherorb is 5 `control-outside-home` incumbents, not 0, and the fleet total is 34, not 29 — the
905
1813
  zero was a failed `npx --no-install oxlint` invocation read as "no findings". The four promotions to
906
1814
  `error` are unaffected and stand as shipped; only the extended C1 pair's count changed.
907
1815
 
@@ -1097,23 +2005,23 @@ That measurement was taken 2026-09-09, with all seven consumers freshly migrated
1097
2005
  basalt built from `master`, by running `npx oxlint .` in each repo and counting by rule id — a
1098
2006
  method that failed open in one of them, see the correction under the table:
1099
2007
 
1100
- | Rule | argo | image-gen | image-share | rb | linewatch | meteo | obsidian | playground | Verdict |
1101
- | ----------------------------------------------------------------- | ---- | --------- | ----------- | --- | --------- | ----- | -------- | ---------- | ------------ |
1102
- | `basalt/provider-above-router` | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | → `error` |
1103
- | `basalt/forms-field-key` | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | → `error` |
1104
- | `basalt/query-fn-unwrap` | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | → `error` |
1105
- | `basalt/bound-control-outside-home` | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | → `error` |
1106
- | `basalt/control-outside-home` + `raw-selection-control` (one law) | 2 | 10 | 6 | 8 | 0 | 5 | 0 | 3 | stays `warn` |
2008
+ | Rule | argo | image-gen | image-share | rb | linewatch | weatherorb | obsidian | playground | Verdict |
2009
+ | ----------------------------------------------------------------- | ---- | --------- | ----------- | --- | --------- | ---------- | -------- | ---------- | ------------ |
2010
+ | `basalt/provider-above-router` | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | → `error` |
2011
+ | `basalt/forms-field-key` | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | → `error` |
2012
+ | `basalt/query-fn-unwrap` | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | → `error` |
2013
+ | `basalt/bound-control-outside-home` | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | → `error` |
2014
+ | `basalt/control-outside-home` + `raw-selection-control` (one law) | 2 | 10 | 6 | 8 | 0 | 5 | 0 | 3 | stays `warn` |
1107
2015
 
1108
- **Corrected at 1.30.1: meteo is 5, not 0 — the fleet total is 34, not 29.** The zero published at
1109
- 1.30.0 was an artifact: meteo has no local oxlint binary, so `npx --no-install oxlint` failed there
2016
+ **Corrected at 1.30.1: weatherorb is 5, not 0 — the fleet total is 34, not 29.** The zero published at
2017
+ 1.30.0 was an artifact: weatherorb has no local oxlint binary, so `npx --no-install oxlint` failed there
1110
2018
  with a package error and the counting pipeline read that failure as "no findings" — the same
1111
2019
  silent-zero shape this file already warns about for `check-theme`'s fabricated roots, arrived at from the other side. The
1112
2020
  five are real (`display-controls.tsx:258`, `stack-editor.tsx:301/323/337`, `forecast-tab.tsx:151`),
1113
2021
  and re-measuring with a guaranteed-present binary is what found them. **The DECISION is unchanged**:
1114
- all four promoted rules re-measured at zero in every repo including meteo, so those four promotions
2022
+ all four promoted rules re-measured at zero in every repo including weatherorb, so those four promotions
1115
2023
  stand exactly as shipped — only the extended pair's count moved. A count taken through a repo's own
1116
- `lint` script rather than a bare oxlint invocation is not a measurement; meteo's `lint` is
2024
+ `lint` script rather than a bare oxlint invocation is not a measurement; weatherorb's `lint` is
1117
2025
  `basalt-ui check-theme` alone and never runs oxlint at all.
1118
2026
 
1119
2027
  **The four promotions cost nothing to take.** They were measured at zero, in every consumer, before
@@ -1170,7 +2078,7 @@ A patch, one export's TYPE only. Nothing renamed, nothing removed.
1170
2078
  - **`unwrap` strips `null`/`undefined` from a union-typed Eden response again** — the single
1171
2079
  conditional signature 1.29.1 landed still inferred `TData` off `Envelope<infer TData>`, and an Eden
1172
2080
  Treaty response is a UNION of envelopes (`{ data: T; error: null } | { data: null; error:
1173
- EdenFetchError }`), not one envelope with a nullable `data`; inferring through the wrapper type
2081
+ EdenFetchError }`), not one envelope with a nullable `data`; inferring through the wrapper type
1174
2082
  read `T | null` at every Eden call site. `UnwrapResult` now infers the raw `data` field and wraps
1175
2083
  it in `NonNullable`, which distributes over a union `R` — `unwrap(await api.x.get())` resolves to
1176
2084
  `T` again, with no `| null`. Runtime unchanged.
@@ -1244,7 +2152,7 @@ annotation and rationale):
1244
2152
  - `QueryStateVariant` and the `variant` prop on `QueryState`/`LoadingState`/`ErrorState`/`EmptyState`
1245
2153
  — use `QueryStateTier` and `tier`. **Identical values, identical branch behaviour**, verified by
1246
2154
  diffing `src/dashboard/query-state.tsx` at `v1.25.0` against 1.29.2: the union is `'page' |
1247
- 'section'` in both, and `'section'` takes the same bare/compact branch in both. A pure rename, so a
2155
+ 'section'` in both, and `'section'` takes the same bare/compact branch in both. A pure rename, so a
1248
2156
  `variant="section"` becomes `tier="section"` with nothing to eyeball afterwards.
1249
2157
  `QueryStateTier`'s own JSDoc says "`'section'` meant two different things across the two
1250
2158
  spellings" — that is the NAMING rationale for picking `tier` (audit B #19), not a behaviour
@@ -1286,7 +2194,7 @@ annotation and rationale):
1286
2194
 
1287
2195
  **On notice for 1.30.0** — a public export with exactly one consumer (the playground) as of this
1288
2196
  audit. Adopt-or-delete: gains a real consumer by 1.30.0 or is removed. Not a promise either way;
1289
- record your adoption in `docs/ARGO-MIGRATION-LEARNINGS.md` if you pick one up.
2197
+ say so in an issue if you pick one up.
1290
2198
 
1291
2199
  - **Threads/agent-chat composite tier**: `ThreadWorkspace`, `ThreadFeed`, `ThreadFeedRow`,
1292
2200
  `ThreadDetailPanel`, `ThreadOutcomeCard`, `ThreadsStoreAdapter`, `createThreadsStore`,
@@ -1495,7 +2403,7 @@ What is new, one line each — nothing here renames or removes anything:
1495
2403
  FLOORS to 0.75×, shrinks the crosshair dot, narrows the tooltip 140 → 110, and caps the legend at
1496
2404
  two entries with a `+N more` rollup. **This moves rendering, but only below 480px of measured
1497
2405
  width** — nothing at desktop width changes. Opt back out per chart with an explicit
1498
- `legend.maxRows` / `margin` override. `docs/CHARTS-SPEC.md` §8.
2406
+ `legend.maxRows` / `margin` override. `docs/archive/CHARTS-SPEC.md` §8.
1499
2407
  - **`xLabelRotate` accepts `0`**, and left UNSET now auto-rotates to 45 at the phone tier when the
1500
2408
  measured labels cannot fit three ticks side by side. `0` is the documented opt-out. Also on every
1501
2409
  rotated axis, at every width: the LEFT margin now clears the rotated label's leftward projection
@@ -1504,7 +2412,7 @@ What is new, one line each — nothing here renames or removes anything:
1504
2412
  §1's measured-gutter law, so a rotated or a densely-labelled axis will lay out slightly
1505
2413
  differently; an explicit `margin` / `xTicks` / `xTickValues` still wins.
1506
2414
  - **`SeriesStyle.curve`** (`basalt-ui/charts`) — `'monotone' | 'linear' | 'step' | 'stepAfter' |
1507
- 'stepBefore'`, plus the `curveFor` mapper and the newly re-exported `curveStep`/`curveStepBefore`.
2415
+ 'stepBefore'`, plus the `curveFor` mapper and the newly re-exported `curveStep`/`curveStepBefore`.
1508
2416
  Default `'monotone'`, which is what every kind hard-coded, so an omitted `curve` moves nothing.
1509
2417
  Honoured by `MultiLine`, `DualPanel`, `ZonedLine`, `StackedArea` and `BarsLine.curve`. Two of
1510
2418
  those read ONE curve for a whole shape rather than one per series: `ZonedLine` takes the PRIMARY
@@ -1604,7 +2512,7 @@ What is new, one line each — nothing here renames or removes anything:
1604
2512
  `QueryStateTier` is the new type name; `QueryStateVariant` stayed exported as an alias through
1605
2513
  1.28.x and is **removed in 1.29.0** together with the `variant` prop (see § Consolidation).
1606
2514
  - **`WidgetHeader` and `QueryState` gained slot classes** — `classNames={{ root, title, metric,
1607
- icon }}` on the first, `classNames={{ root }}` on the second (the branch that is live). Additive.
2515
+ icon }}` on the first, `classNames={{ root }}` on the second (the branch that is live). Additive.
1608
2516
  `Section` now OMITS `classNames` from the `WidgetHeaderProps` it re-publishes, so its slot union
1609
2517
  stays exactly `root | header | body` — a `<Section classNames={{ metric: … }}>` that used to
1610
2518
  type-check (and do nothing) is now a compile error. Reach the header's own slots on a
@@ -1661,10 +2569,10 @@ icon }}` on the first, `classNames={{ root }}` on the second (the branch that is
1661
2569
  - **`overlays.confirm` / `overlays.confirmDelete`** (`basalt-ui/commands`) — the two-button dialog
1662
2570
  every consumer was registering as a `defineOverlays` entry with its own button pair, now
1663
2571
  registry-free: `confirm({ title, body?, confirmLabel?, cancelLabel?, danger?, onConfirm,
1664
- onCancel? })` resolves `true`/`false` and fires exactly one callback, whichever exit the user takes
2572
+ onCancel? })` resolves `true`/`false` and fires exactly one callback, whichever exit the user takes
1665
2573
  (cancel, escape, click-outside and the close button all count as `false`). `danger` paints the
1666
2574
  confirm button in the theme's derived destructive family. `confirmDelete({ subject, count?,
1667
- onConfirm })` is the counted one-liner over it ("Delete 3 items?"). Both REJECT with a named
2575
+ onConfirm })` is the counted one-liner over it ("Delete 3 items?"). Both REJECT with a named
1668
2576
  `[basalt] overlays.confirm: …` error when the `@mantine/modals` peer is absent, or when no
1669
2577
  `ModalsProvider` is live — previously either returned a promise nothing would ever settle, because
1670
2578
  the imperative API is a window event bus with nothing subscribed. `@mantine/modals` stays lazily
@@ -1735,7 +2643,7 @@ onConfirm })` is the counted one-liner over it ("Delete 3 items?"). Both REJECT
1735
2643
  - **Still subpath-only.** The root barrel re-exports none of this, so a consumer without
1736
2644
  `@mantine/form` is unaffected by importing `basalt-ui`.
1737
2645
  - **Mobile "More" sheet rows now 40px with the sidebar's own insets** — `--vx-space-mobile-nav-row-
1738
- height` 44 → 40 (WCAG 2.5.5 AA touch floor, not the AAA figure the bar's own `mobileNavBarHeight`
2646
+ height` 44 → 40 (WCAG 2.5.5 AA touch floor, not the AAA figure the bar's own `mobileNavBarHeight`
1739
2647
  still holds to). The rows themselves no longer force a bespoke touch padding over the theme's
1740
2648
  `NavLink` styling; they now render with the SAME `--vx-space-row-inset-y`/`-x` padding and
1741
2649
  `VX.text.md` the desktop sidebar row does. A nested (child) row gains the sidebar's own child
@@ -2727,7 +3635,7 @@ homes rather than shipped repo-wide. `basalt/shadow-basalt-export` gains a renam
2727
3635
  → `StatCard`), so a fork that RENAMED the export is visible too. It stays a permanent advisory
2728
3636
  `warn`.
2729
3637
 
2730
- **`profile: 'tokens-only'` now disables 18 kinds** — Mantine-coupled kinds, count as of this write (drifts release to release; `TOKENS_ONLY_DISABLED_KINDS.size` in `src/guard/index.ts` is ground truth, this table isn't).
3638
+ **`profile: 'tokens-only'` now disables 16 kinds** — Mantine-coupled kinds, count as of this write (drifts release to release; `TOKENS_ONLY_DISABLED_KINDS.size` in `src/guard/index.ts` is ground truth, this table isn't).
2731
3639
 
2732
3640
  **`SURFACES` gains `pluginRules`** (`src/surfaces.ts`, internal — not a published subpath): every
2733
3641
  doctrine surface names the oxlint rules that enforce it, every registered rule maps to exactly one
@@ -2820,7 +3728,7 @@ exact route is never visited still lights on a descendant route.
2820
3728
  `$1294.9k ▲18.9%` rendered as `$129… ▲18.9%`, and truncating the number to protect the delta about
2821
3729
  that number is the wrong way round. A short value still keeps its badge on the line.
2822
3730
  - **`StatCard`'s `actions` slot is the 24px tier now, not 30px.** `CtlSlot` gained `tier?: 'ctl' |
2823
- 'widget'` (default `'ctl'`, so no existing call site changes), and `StatCard` mounts its header slot
3731
+ 'widget'` (default `'ctl'`, so no existing call site changes), and `StatCard` mounts its header slot
2824
3732
  at `'widget'` — the `size="icon"` step `--vx-space-control-height-widget` has always named as
2825
3733
  "`WidgetHeader tier="widget"` actions". A raw `ActionIcon` there rendered at the 30px `ctl` tier
2826
3734
  inside a 28px header row and grew it to 30, so a KPI card WITH a kebab sat 2px below the card
@@ -3102,7 +4010,7 @@ The shared choreography lives in an internal `useBandPlot` — **not exported**,
3102
4010
  the kinds' contract with each other, not a public seam.
3103
4011
 
3104
4012
  **`MirroredBars` reverses a recorded decision, and the recorded reason for it was wrong.** The old
3105
- entry in `docs/CHARTS-SPEC.md` read _"no two-bar-pane kind with independent per-pane scales"_, with
4013
+ entry in `docs/archive/CHARTS-SPEC.md` read _"no two-bar-pane kind with independent per-pane scales"_, with
3106
4014
  _"a second consumer asks"_ as its trigger. That trigger never fired. Round 4 framed the blocker as
3107
4015
  independent SCALES; `DualPanel` already had `topYDomain`/`bottomYDomain`, so that was never it. The
3108
4016
  real blockers are that `DualPanel`'s top pane is a LINE pane and its bottom takes one SIGNED
@@ -3412,7 +4320,7 @@ with the whole lint half off).
3412
4320
 
3413
4321
  | Surface | Note |
3414
4322
  | ---------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
3415
- | `basalt.profile: 'tokens-only'` / `--tokens-only` | disables the 18 kinds whose remedy is a Mantine component, prop or the React theme factory. `check-theme` requires it DECLARED; `doctor` infers it, because its profile only changes advice, never enforcement |
4323
+ | `basalt.profile: 'tokens-only'` / `--tokens-only` | disables the 16 kinds whose remedy is a Mantine component, prop or the React theme factory. `check-theme` requires it DECLARED; `doctor` infers it, because its profile only changes advice, never enforcement |
3416
4324
  | `basalt.include: [...]` | scan a named file outside `roots` — and the only route to a `.json`, which is never blanket-scanned |
3417
4325
  | `basalt.roots` + a `lint:basalt` script | written by `init` from the real layout; `init` on an existing app is a lint-debt event, not a no-op |
3418
4326
  | `tokens:css --check`, `--selector-class <c>` (+ `--light-class`) | drift gate; the Tailwind `<html class="dark">` convention. There is no `scheme: { class }` API — the class form is CLI-only |