basalt-ui 1.40.3 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (923) hide show
  1. package/AGENTS.md +50 -45
  2. package/CHANGELOG.md +543 -513
  3. package/MIGRATING.md +969 -37
  4. package/README.md +172 -367
  5. package/agent/rules/basalt-batteries.md +19 -74
  6. package/agent/rules/basalt-charts.md +21 -95
  7. package/agent/rules/basalt-controls.md +23 -131
  8. package/agent/rules/basalt-mantine.md +26 -99
  9. package/agent/rules/basalt-state.md +21 -103
  10. package/agent/rules/basalt-tokens.md +33 -114
  11. package/agent/skills/basalt-app/SKILL.md +229 -72
  12. package/agent/skills/basalt-charts/SKILL.md +23 -57
  13. package/agent/skills/basalt-design/SKILL.md +12 -70
  14. package/agent/templates/AGENTS-block.md.tpl +30 -0
  15. package/agent/templates/DESIGN.md.tpl +2 -2
  16. package/agent/templates/__root.tpl +9 -16
  17. package/agent/templates/main.tpl +21 -0
  18. package/agent/templates/nav.tpl +18 -0
  19. package/configs/check.yml +1 -1
  20. package/configs/oxlint-basalt.json +4 -10
  21. package/configs/oxlint-plugin.js +468 -847
  22. package/configs/oxlint-plugin.test.ts +662 -710
  23. package/configs/oxlint.json +10 -2
  24. package/dist/agent/ai-sdk-transport.d.ts +19 -7
  25. package/dist/agent/ai-sdk-transport.d.ts.map +1 -1
  26. package/dist/agent/ai-sdk-transport.js +10 -7
  27. package/dist/{agent-chat → agent/chat}/composer.d.ts +16 -16
  28. package/dist/agent/chat/composer.d.ts.map +1 -0
  29. package/dist/{agent-chat → agent/chat}/composer.js +10 -9
  30. package/dist/{agent-chat → agent/chat}/message-affordances.d.ts +7 -6
  31. package/dist/agent/chat/message-affordances.d.ts.map +1 -0
  32. package/dist/agent/chat/relative-time.d.ts.map +1 -0
  33. package/dist/{agent-chat → agent/chat}/thread-feed-row.d.ts +18 -16
  34. package/dist/agent/chat/thread-feed-row.d.ts.map +1 -0
  35. package/dist/{agent-chat → agent/chat}/thread-feed-row.js +12 -11
  36. package/dist/{agent-chat → agent/chat}/thread-feed.d.ts +8 -8
  37. package/dist/agent/chat/thread-feed.d.ts.map +1 -0
  38. package/dist/{agent-chat → agent/chat}/thread-feed.js +12 -10
  39. package/dist/{agent-chat → agent/chat}/thread-message.d.ts +12 -9
  40. package/dist/agent/chat/thread-message.d.ts.map +1 -0
  41. package/dist/{agent-chat → agent/chat}/thread-message.js +15 -13
  42. package/dist/{agent-chat → agent/chat}/thread-outcome-card.d.ts +2 -2
  43. package/dist/agent/chat/thread-outcome-card.d.ts.map +1 -0
  44. package/dist/{agent-chat → agent/chat}/thread-outcome-card.js +3 -3
  45. package/dist/{agent-chat → agent/chat}/tool-chip.d.ts +5 -5
  46. package/dist/agent/chat/tool-chip.d.ts.map +1 -0
  47. package/dist/{agent-chat → agent/chat}/tool-chip.js +4 -4
  48. package/dist/agent/chat/use-keyboard-inset.d.ts.map +1 -0
  49. package/dist/{agent-chat → agent/chat}/use-keyboard-inset.js +1 -1
  50. package/dist/{agent-chat → agent/chat}/virtualize.d.ts +7 -7
  51. package/dist/agent/chat/virtualize.d.ts.map +1 -0
  52. package/dist/agent/error.d.ts +31 -0
  53. package/dist/agent/error.d.ts.map +1 -0
  54. package/dist/agent/error.js +18 -0
  55. package/dist/agent/foreign.d.ts +3 -2
  56. package/dist/agent/foreign.d.ts.map +1 -1
  57. package/dist/agent/history.d.ts +2 -36
  58. package/dist/agent/history.d.ts.map +1 -1
  59. package/dist/agent/history.js +0 -32
  60. package/dist/agent/id.d.ts +4 -5
  61. package/dist/agent/id.d.ts.map +1 -1
  62. package/dist/agent/index.d.ts +19 -52
  63. package/dist/agent/index.d.ts.map +1 -1
  64. package/dist/agent/index.js +10 -32
  65. package/dist/agent/outcome.d.ts +3 -14
  66. package/dist/agent/outcome.d.ts.map +1 -1
  67. package/dist/agent/outcome.js +0 -30
  68. package/dist/agent/part-list.d.ts +3 -3
  69. package/dist/agent/part-list.d.ts.map +1 -1
  70. package/dist/agent/parts.d.ts +23 -24
  71. package/dist/agent/parts.d.ts.map +1 -1
  72. package/dist/agent/run-committer.d.ts +23 -0
  73. package/dist/agent/run-committer.d.ts.map +1 -0
  74. package/dist/agent/run-committer.js +41 -0
  75. package/dist/agent/run-records.d.ts +77 -0
  76. package/dist/agent/run-records.d.ts.map +1 -0
  77. package/dist/agent/run-records.js +69 -0
  78. package/dist/agent/thread.d.ts +23 -47
  79. package/dist/agent/thread.d.ts.map +1 -1
  80. package/dist/agent/thread.js +3 -134
  81. package/dist/agent/transport.d.ts +6 -69
  82. package/dist/agent/transport.d.ts.map +1 -1
  83. package/dist/agent/transport.js +0 -18
  84. package/dist/agent/use-agent-thread-runs.d.ts +63 -26
  85. package/dist/agent/use-agent-thread-runs.d.ts.map +1 -1
  86. package/dist/agent/use-agent-thread-runs.js +202 -66
  87. package/dist/charts/BandStrip.d.ts +46 -0
  88. package/dist/charts/BandStrip.d.ts.map +1 -0
  89. package/dist/charts/BandStrip.js +151 -0
  90. package/dist/charts/Bars.d.ts +19 -0
  91. package/dist/charts/Bars.d.ts.map +1 -0
  92. package/dist/charts/Bars.js +77 -0
  93. package/dist/charts/CartesianChart.d.ts +57 -0
  94. package/dist/charts/CartesianChart.d.ts.map +1 -0
  95. package/dist/charts/CartesianChart.js +121 -0
  96. package/dist/charts/ChartCard.d.ts +34 -0
  97. package/dist/charts/ChartCard.d.ts.map +1 -0
  98. package/dist/charts/ChartCard.js +115 -0
  99. package/dist/charts/Donut.d.ts +25 -0
  100. package/dist/charts/Donut.d.ts.map +1 -0
  101. package/dist/charts/Donut.js +191 -0
  102. package/dist/charts/DualPanel.d.ts +47 -0
  103. package/dist/charts/DualPanel.d.ts.map +1 -0
  104. package/dist/charts/DualPanel.js +214 -0
  105. package/dist/charts/Heatmap.d.ts +41 -0
  106. package/dist/charts/Heatmap.d.ts.map +1 -0
  107. package/dist/charts/Heatmap.js +216 -0
  108. package/dist/charts/Lines.d.ts +11 -0
  109. package/dist/charts/Lines.d.ts.map +1 -0
  110. package/dist/charts/Lines.js +114 -0
  111. package/dist/charts/MirroredBars.d.ts +44 -0
  112. package/dist/charts/MirroredBars.d.ts.map +1 -0
  113. package/dist/charts/MirroredBars.js +190 -0
  114. package/dist/charts/Sparkline.d.ts +22 -0
  115. package/dist/charts/Sparkline.d.ts.map +1 -0
  116. package/dist/charts/Sparkline.js +129 -0
  117. package/dist/charts/StackedArea.d.ts +15 -0
  118. package/dist/charts/StackedArea.d.ts.map +1 -0
  119. package/dist/charts/StackedArea.js +46 -0
  120. package/dist/charts/box.d.ts +38 -0
  121. package/dist/charts/box.d.ts.map +1 -0
  122. package/dist/charts/box.js +72 -0
  123. package/dist/charts/card-context.d.ts +3 -0
  124. package/dist/charts/card-context.d.ts.map +1 -0
  125. package/dist/charts/card-context.js +7 -0
  126. package/dist/charts/chart-box.module.css +64 -0
  127. package/{src/content/article-card.module.css.d.ts → dist/charts/chart-box.module.css.d.ts} +5 -9
  128. package/dist/charts/chart-card.module.css +25 -0
  129. package/dist/{dashboard/widget-grid.module.css.d.ts → charts/chart-card.module.css.d.ts} +1 -3
  130. package/dist/charts/chart-legend.module.css +38 -0
  131. package/{src/dashboard/widget-grid.module.css.d.ts → dist/charts/chart-legend.module.css.d.ts} +3 -3
  132. package/dist/charts/compile.d.ts +62 -0
  133. package/dist/charts/compile.d.ts.map +1 -0
  134. package/dist/charts/compile.js +386 -0
  135. package/dist/charts/cursor.d.ts +50 -0
  136. package/dist/charts/cursor.d.ts.map +1 -0
  137. package/dist/charts/cursor.js +157 -0
  138. package/dist/charts/curves.d.ts +12 -0
  139. package/dist/charts/curves.d.ts.map +1 -0
  140. package/dist/charts/curves.js +86 -0
  141. package/dist/charts/donut.module.css +54 -0
  142. package/dist/{content/article-card.module.css.d.ts → charts/donut.module.css.d.ts} +2 -9
  143. package/dist/charts/host.d.ts +17 -0
  144. package/dist/charts/host.d.ts.map +1 -0
  145. package/dist/charts/host.js +35 -0
  146. package/dist/charts/index.d.ts +18 -53
  147. package/dist/charts/index.d.ts.map +1 -1
  148. package/dist/charts/index.js +17 -189
  149. package/dist/charts/legend.d.ts +23 -0
  150. package/dist/charts/legend.d.ts.map +1 -0
  151. package/dist/charts/legend.js +160 -0
  152. package/dist/charts/marks.d.ts +25 -0
  153. package/dist/charts/marks.d.ts.map +1 -0
  154. package/dist/charts/marks.js +128 -0
  155. package/dist/charts/panel.d.ts +56 -0
  156. package/dist/charts/panel.d.ts.map +1 -0
  157. package/dist/charts/panel.js +123 -0
  158. package/dist/charts/scales.d.ts +44 -0
  159. package/dist/charts/scales.d.ts.map +1 -0
  160. package/dist/charts/scales.js +163 -0
  161. package/dist/charts/sizing.d.ts +12 -0
  162. package/dist/charts/sizing.d.ts.map +1 -0
  163. package/dist/charts/sizing.js +33 -0
  164. package/dist/charts/state.d.ts +17 -0
  165. package/dist/charts/state.d.ts.map +1 -0
  166. package/dist/charts/state.js +53 -0
  167. package/dist/charts/theme.d.ts +38 -19
  168. package/dist/charts/theme.d.ts.map +1 -1
  169. package/dist/charts/theme.js +48 -26
  170. package/dist/charts/types.d.ts +227 -0
  171. package/dist/charts/types.d.ts.map +1 -0
  172. package/dist/charts/types.js +4 -0
  173. package/dist/cli/audit-allows.d.ts +4 -17
  174. package/dist/cli/audit-allows.d.ts.map +1 -1
  175. package/dist/cli/config.d.ts +14 -43
  176. package/dist/cli/config.d.ts.map +1 -1
  177. package/dist/cli/doctor-upgrade.d.ts +31 -0
  178. package/dist/cli/doctor-upgrade.d.ts.map +1 -0
  179. package/dist/cli/doctor-upgrade.js +269 -0
  180. package/dist/cli/doctor.d.ts +13 -26
  181. package/dist/cli/doctor.d.ts.map +1 -1
  182. package/dist/cli/doctor.js +79 -8
  183. package/dist/cli/help.d.ts.map +1 -1
  184. package/dist/cli/help.js +2 -4
  185. package/dist/cli/index.d.ts +68 -135
  186. package/dist/cli/index.d.ts.map +1 -1
  187. package/dist/cli/index.js +89 -76
  188. package/dist/cli/init.d.ts.map +1 -1
  189. package/dist/cli/init.js +43 -27
  190. package/dist/cli/sync.d.ts +5 -21
  191. package/dist/cli/sync.d.ts.map +1 -1
  192. package/dist/cli/sync.js +4 -6
  193. package/dist/cli/tokens-css.d.ts +7 -28
  194. package/dist/cli/tokens-css.d.ts.map +1 -1
  195. package/dist/commands/ShortcutsHelp.d.ts.map +1 -1
  196. package/dist/commands/ShortcutsHelp.js +4 -5
  197. package/dist/commands/define-commands.d.ts +15 -31
  198. package/dist/commands/define-commands.d.ts.map +1 -1
  199. package/dist/commands/define-commands.js +1 -11
  200. package/dist/commands/define-overlays.d.ts +5 -19
  201. package/dist/commands/define-overlays.d.ts.map +1 -1
  202. package/dist/commands/define-overlays.js +3 -11
  203. package/dist/commands/index.d.ts +10 -40
  204. package/dist/commands/index.d.ts.map +1 -1
  205. package/dist/commands/index.js +9 -46
  206. package/dist/{notifications → commands/notifications}/bell.d.ts +1 -1
  207. package/dist/commands/notifications/bell.d.ts.map +1 -0
  208. package/dist/{notifications → commands/notifications}/center.d.ts +2 -2
  209. package/dist/commands/notifications/center.d.ts.map +1 -0
  210. package/dist/{notifications → commands/notifications}/center.js +2 -2
  211. package/dist/{notifications → commands/notifications}/define-notifications.d.ts +3 -3
  212. package/dist/commands/notifications/define-notifications.d.ts.map +1 -0
  213. package/dist/commands/notifications/notify.d.ts +44 -0
  214. package/dist/commands/notifications/notify.d.ts.map +1 -0
  215. package/dist/commands/notifications/notify.js +79 -0
  216. package/dist/{notifications → commands/notifications}/store.d.ts +2 -0
  217. package/dist/commands/notifications/store.d.ts.map +1 -0
  218. package/dist/{notifications → commands/notifications}/store.js +4 -0
  219. package/dist/commands/projectors.d.ts +1 -131
  220. package/dist/commands/projectors.d.ts.map +1 -1
  221. package/dist/commands/projectors.js +2 -73
  222. package/dist/commands/shell-bridge.d.ts +3 -3
  223. package/dist/commands/shortcut-format.d.ts +5 -4
  224. package/dist/commands/shortcut-format.d.ts.map +1 -1
  225. package/dist/common/errors.d.ts +3 -3
  226. package/dist/common/use-measured-widths.d.ts.map +1 -1
  227. package/dist/common/use-measured-widths.js +5 -3
  228. package/dist/common/validate.d.ts +2 -2
  229. package/dist/content/article-layout.d.ts.map +1 -1
  230. package/dist/content/article-layout.js +3 -3
  231. package/dist/content/article-model.d.ts +1 -46
  232. package/dist/content/article-model.d.ts.map +1 -1
  233. package/dist/content/article-model.js +1 -29
  234. package/dist/content/copy-action.d.ts +1 -1
  235. package/dist/content/glyphs.d.ts +1 -1
  236. package/dist/content/index.d.ts +11 -41
  237. package/dist/content/index.d.ts.map +1 -1
  238. package/dist/content/index.js +3 -35
  239. package/dist/content/markdown.d.ts +1 -1
  240. package/dist/content/markdown.d.ts.map +1 -1
  241. package/dist/content/markdown.js +1 -1
  242. package/dist/content/mermaid.d.ts.map +1 -1
  243. package/dist/content/mermaid.js +7 -7
  244. package/dist/content/slug.d.ts +1 -8
  245. package/dist/content/slug.d.ts.map +1 -1
  246. package/dist/content/slug.js +1 -8
  247. package/dist/content/url-hardening.d.ts +2 -2
  248. package/dist/content/url-hardening.d.ts.map +1 -1
  249. package/dist/content/url-hardening.js +2 -0
  250. package/dist/controls/actions.d.ts +16 -1
  251. package/dist/controls/actions.d.ts.map +1 -1
  252. package/dist/controls/enum-filter.d.ts +1 -1
  253. package/dist/controls/enum-filter.d.ts.map +1 -1
  254. package/dist/controls/filter-context.d.ts.map +1 -1
  255. package/dist/controls/filter-context.js +3 -1
  256. package/dist/controls/filter-set.js +4 -6
  257. package/dist/controls/form-layout.d.ts +1 -1
  258. package/dist/controls/form-layout.d.ts.map +1 -1
  259. package/dist/controls/form-layout.js +1 -1
  260. package/dist/controls/glyphs.d.ts +0 -2
  261. package/dist/controls/glyphs.d.ts.map +1 -1
  262. package/dist/controls/glyphs.js +0 -7
  263. package/dist/controls/index.d.ts +12 -17
  264. package/dist/controls/index.d.ts.map +1 -1
  265. package/dist/controls/index.js +5 -39
  266. package/dist/controls/multi-select-filter.d.ts +4 -3
  267. package/dist/controls/multi-select-filter.d.ts.map +1 -1
  268. package/dist/controls/number-filter.d.ts +4 -3
  269. package/dist/controls/number-filter.d.ts.map +1 -1
  270. package/dist/controls/number-filter.js +3 -1
  271. package/dist/controls/range-filter.d.ts +4 -3
  272. package/dist/controls/range-filter.d.ts.map +1 -1
  273. package/dist/controls/search-filter.d.ts +4 -3
  274. package/dist/controls/search-filter.d.ts.map +1 -1
  275. package/dist/controls/search-filter.js +19 -14
  276. package/dist/controls/select-filter.d.ts +4 -3
  277. package/dist/controls/select-filter.d.ts.map +1 -1
  278. package/dist/controls/sync-button.d.ts.map +1 -1
  279. package/dist/controls/sync-button.js +12 -15
  280. package/dist/controls/toggle-filter.d.ts +4 -3
  281. package/dist/controls/toggle-filter.d.ts.map +1 -1
  282. package/dist/controls/uncontrolled.d.ts +12 -0
  283. package/dist/controls/uncontrolled.d.ts.map +1 -0
  284. package/dist/controls/view-tabs.d.ts +2 -2
  285. package/dist/controls/view-tabs.d.ts.map +1 -1
  286. package/dist/controls-dates/index.d.ts +0 -1
  287. package/dist/controls-dates/index.d.ts.map +1 -1
  288. package/dist/dashboard/index.d.ts +7 -9
  289. package/dist/dashboard/index.d.ts.map +1 -1
  290. package/dist/dashboard/index.js +3 -23
  291. package/dist/dashboard/section.d.ts +4 -6
  292. package/dist/dashboard/section.d.ts.map +1 -1
  293. package/dist/dashboard/section.js +4 -10
  294. package/dist/dashboard/stat-card.d.ts +4 -4
  295. package/dist/dashboard/stat-card.d.ts.map +1 -1
  296. package/dist/dashboard/stat-card.js +3 -3
  297. package/dist/dashboard/widget-header.module.css +9 -7
  298. package/dist/dev-dock.d.ts.map +1 -1
  299. package/dist/dev-dock.js +6 -1
  300. package/dist/format/date.d.ts +0 -34
  301. package/dist/format/date.d.ts.map +1 -1
  302. package/dist/format/date.js +0 -54
  303. package/dist/format/index.d.ts +7 -22
  304. package/dist/format/index.d.ts.map +1 -1
  305. package/dist/format/index.js +2 -43
  306. package/dist/format/number.d.ts +3 -14
  307. package/dist/format/number.d.ts.map +1 -1
  308. package/dist/format/number.js +0 -13
  309. package/dist/format/shared.d.ts +2 -3
  310. package/dist/format/shared.d.ts.map +1 -1
  311. package/dist/forms/index.d.ts +0 -11
  312. package/dist/forms/index.d.ts.map +1 -1
  313. package/dist/forms/index.js +1 -14
  314. package/dist/guard/index.d.ts +6 -21
  315. package/dist/guard/index.d.ts.map +1 -1
  316. package/dist/guard/index.js +27 -115
  317. package/dist/guard/types.d.ts +7 -18
  318. package/dist/guard/types.d.ts.map +1 -1
  319. package/dist/index.d.ts +16 -48
  320. package/dist/index.d.ts.map +1 -1
  321. package/dist/index.js +21 -117
  322. package/dist/provider/create-router.d.ts +44 -0
  323. package/dist/provider/create-router.d.ts.map +1 -0
  324. package/dist/provider/create-router.js +62 -0
  325. package/dist/provider/hotkeys.d.ts +8 -0
  326. package/dist/provider/hotkeys.d.ts.map +1 -0
  327. package/dist/provider/hotkeys.js +50 -0
  328. package/dist/provider/index.d.ts +33 -110
  329. package/dist/provider/index.d.ts.map +1 -1
  330. package/dist/provider/index.js +182 -82
  331. package/dist/provider/lab-theme.d.ts.map +1 -1
  332. package/dist/provider/route-transition.d.ts +76 -0
  333. package/dist/provider/route-transition.d.ts.map +1 -0
  334. package/dist/provider/route-transition.js +98 -0
  335. package/dist/provider/spotlight-actions.d.ts +10 -0
  336. package/dist/provider/spotlight-actions.d.ts.map +1 -0
  337. package/dist/provider/spotlight-actions.js +55 -0
  338. package/dist/provider/test-router.d.ts +6 -0
  339. package/dist/provider/test-router.d.ts.map +1 -0
  340. package/dist/provider/test-router.js +18 -0
  341. package/dist/query-client.d.ts +4 -20
  342. package/dist/query-client.d.ts.map +1 -1
  343. package/dist/query-client.js +2 -2
  344. package/dist/router-tanstack/index.d.ts +18 -64
  345. package/dist/router-tanstack/index.d.ts.map +1 -1
  346. package/dist/router-tanstack/index.js +2 -16
  347. package/dist/router-tanstack/nav.d.ts +12 -1
  348. package/dist/router-tanstack/nav.d.ts.map +1 -1
  349. package/dist/router-tanstack/nav.js +8 -1
  350. package/dist/router-tanstack/search-store.d.ts +1 -1
  351. package/dist/router-tanstack/search-store.d.ts.map +1 -1
  352. package/dist/router-tanstack/use-nav.d.ts +8 -9
  353. package/dist/router-tanstack/use-nav.d.ts.map +1 -1
  354. package/dist/router-tanstack/use-nav.js +20 -1
  355. package/dist/shell/app-mobile-nav.d.ts.map +1 -1
  356. package/dist/shell/app-sidebar.js +1 -1
  357. package/dist/shell/index.d.ts +31 -10
  358. package/dist/shell/index.d.ts.map +1 -1
  359. package/dist/shell/index.js +14 -3
  360. package/dist/shell/page-aside.d.ts +2 -2
  361. package/dist/shell/page-aside.d.ts.map +1 -1
  362. package/dist/shell/page-aside.js +31 -12
  363. package/dist/shell/page-bar.d.ts +2 -2
  364. package/dist/shell/page-bar.d.ts.map +1 -1
  365. package/dist/shell/page-bar.js +1 -1
  366. package/dist/state.d.ts +10 -12
  367. package/dist/state.d.ts.map +1 -1
  368. package/dist/state.js +4 -6
  369. package/dist/styles.css +107 -7
  370. package/dist/surfaces.d.ts +28 -103
  371. package/dist/surfaces.d.ts.map +1 -1
  372. package/dist/surfaces.js +54 -143
  373. package/dist/{data → table}/data-table-state.d.ts +1 -1
  374. package/dist/table/data-table-state.d.ts.map +1 -0
  375. package/dist/{data → table}/data-table-state.js +4 -3
  376. package/dist/{data → table}/data-table.d.ts +28 -49
  377. package/dist/table/data-table.d.ts.map +1 -0
  378. package/dist/{data → table}/data-table.js +74 -60
  379. package/dist/table/index.d.ts +18 -0
  380. package/dist/table/index.d.ts.map +1 -0
  381. package/dist/{data/table.js → table/index.js} +1 -1
  382. package/dist/table/query-branch.d.ts.map +1 -0
  383. package/dist/table/table-features.d.ts +69 -0
  384. package/dist/table/table-features.d.ts.map +1 -0
  385. package/dist/table/table-features.js +49 -0
  386. package/dist/telemetry.d.ts +77 -0
  387. package/dist/telemetry.d.ts.map +1 -0
  388. package/dist/telemetry.js +33 -0
  389. package/dist/theme/index.d.ts +10 -21
  390. package/dist/theme/index.d.ts.map +1 -1
  391. package/dist/theme/index.js +3 -14
  392. package/dist/theme/theme-toggle.d.ts.map +1 -1
  393. package/dist/theme/theme-toggle.js +7 -33
  394. package/dist/theme/theme-toggle.module.css +30 -0
  395. package/dist/theme/theme-toggle.module.css.d.ts +10 -0
  396. package/dist/theme-lab/derive-controls.d.ts.map +1 -1
  397. package/dist/theme-lab/derive-controls.js +5 -3
  398. package/dist/theme-lab/derive-state.d.ts.map +1 -1
  399. package/dist/theme-lab/derive-state.js +2 -1
  400. package/dist/tokens/core.d.ts +360 -0
  401. package/dist/tokens/core.d.ts.map +1 -0
  402. package/dist/tokens/core.js +708 -0
  403. package/dist/tokens/derive.d.ts +1 -1
  404. package/dist/tokens/derive.d.ts.map +1 -1
  405. package/dist/tokens/index.d.ts +5 -373
  406. package/dist/tokens/index.d.ts.map +1 -1
  407. package/dist/tokens/index.js +8 -700
  408. package/dist/tokens/palette.d.ts +2 -6
  409. package/dist/tokens/palette.d.ts.map +1 -1
  410. package/dist/tokens/palette.js +1 -4
  411. package/dist/vite.d.ts +4 -3
  412. package/dist/vite.d.ts.map +1 -1
  413. package/llms.txt +43 -85
  414. package/package.json +77 -170
  415. package/src/agent/ai-sdk-transport.ts +57 -37
  416. package/src/{agent-chat → agent/chat}/composer.tsx +29 -30
  417. package/src/{agent-chat → agent/chat}/message-affordances.ts +8 -5
  418. package/src/{agent-chat → agent/chat}/thread-feed-row.tsx +30 -35
  419. package/src/{agent-chat → agent/chat}/thread-feed.tsx +40 -35
  420. package/src/{agent-chat → agent/chat}/thread-message.tsx +37 -35
  421. package/src/{agent-chat → agent/chat}/thread-outcome-card.tsx +5 -5
  422. package/src/{agent-chat → agent/chat}/tool-chip.tsx +12 -12
  423. package/src/{agent-chat → agent/chat}/use-keyboard-inset.ts +1 -1
  424. package/src/{agent-chat → agent/chat}/virtualize.ts +5 -5
  425. package/src/agent/error.ts +43 -0
  426. package/src/agent/foreign.ts +3 -2
  427. package/src/agent/history.ts +2 -107
  428. package/src/agent/id.ts +4 -5
  429. package/src/agent/index.ts +23 -112
  430. package/src/agent/outcome.ts +3 -56
  431. package/src/agent/part-list.tsx +3 -3
  432. package/src/agent/parts.ts +23 -22
  433. package/src/agent/run-committer.ts +64 -0
  434. package/src/agent/run-records.ts +147 -0
  435. package/src/agent/thread.ts +24 -231
  436. package/src/agent/transport.ts +6 -96
  437. package/src/agent/use-agent-thread-runs.ts +364 -199
  438. package/src/charts/BandStrip.tsx +276 -0
  439. package/src/charts/Bars.tsx +141 -0
  440. package/src/charts/CartesianChart.tsx +206 -0
  441. package/src/charts/ChartCard.tsx +178 -0
  442. package/src/charts/Donut.tsx +256 -0
  443. package/src/charts/DualPanel.tsx +326 -0
  444. package/src/charts/Heatmap.tsx +282 -0
  445. package/src/charts/Lines.tsx +151 -0
  446. package/src/charts/MirroredBars.tsx +303 -0
  447. package/src/charts/Sparkline.tsx +176 -0
  448. package/src/charts/StackedArea.tsx +80 -0
  449. package/src/charts/box.tsx +96 -0
  450. package/src/charts/card-context.ts +11 -0
  451. package/src/charts/chart-box.module.css +64 -0
  452. package/src/charts/chart-box.module.css.d.ts +12 -0
  453. package/src/charts/chart-card.module.css +25 -0
  454. package/src/charts/chart-card.module.css.d.ts +8 -0
  455. package/src/charts/chart-legend.module.css +38 -0
  456. package/src/charts/chart-legend.module.css.d.ts +10 -0
  457. package/src/charts/compile.ts +585 -0
  458. package/src/charts/cursor.ts +282 -0
  459. package/src/charts/curves.ts +111 -0
  460. package/src/charts/donut.module.css +54 -0
  461. package/src/charts/donut.module.css.d.ts +9 -0
  462. package/src/charts/host.tsx +60 -0
  463. package/src/charts/index.ts +41 -178
  464. package/src/charts/legend.tsx +204 -0
  465. package/src/charts/marks.ts +201 -0
  466. package/src/charts/panel.tsx +227 -0
  467. package/src/charts/scales.ts +237 -0
  468. package/src/charts/sizing.ts +47 -0
  469. package/src/charts/state.tsx +80 -0
  470. package/src/charts/theme.ts +65 -0
  471. package/src/charts/types.ts +242 -0
  472. package/src/cli/audit-allows.ts +8 -30
  473. package/src/cli/config.ts +14 -43
  474. package/src/cli/doctor-upgrade.ts +392 -0
  475. package/src/cli/doctor.ts +120 -68
  476. package/src/cli/help.ts +2 -4
  477. package/src/cli/index.ts +161 -276
  478. package/src/cli/init.ts +60 -37
  479. package/src/cli/sync.ts +13 -45
  480. package/src/cli/tokens-css.ts +7 -28
  481. package/src/commands/ShortcutsHelp.tsx +8 -9
  482. package/src/commands/define-commands.ts +16 -43
  483. package/src/commands/define-overlays.ts +12 -36
  484. package/src/commands/index.ts +11 -94
  485. package/src/{notifications → commands/notifications}/bell.tsx +2 -2
  486. package/src/{notifications → commands/notifications}/center.tsx +7 -5
  487. package/src/{notifications → commands/notifications}/define-notifications.ts +3 -3
  488. package/src/commands/notifications/notify.tsx +158 -0
  489. package/src/{notifications → commands/notifications}/store.ts +10 -2
  490. package/src/commands/projectors.ts +5 -225
  491. package/src/commands/shell-bridge.ts +5 -5
  492. package/src/commands/shortcut-format.ts +5 -4
  493. package/src/common/errors.ts +3 -3
  494. package/src/common/use-measured-widths.ts +6 -3
  495. package/src/common/validate.ts +2 -2
  496. package/src/content/article-layout.tsx +37 -38
  497. package/src/content/article-model.ts +1 -84
  498. package/src/content/copy-action.tsx +1 -1
  499. package/src/content/glyphs.tsx +1 -1
  500. package/src/content/index.ts +12 -83
  501. package/src/content/markdown.tsx +4 -3
  502. package/src/content/mermaid.tsx +9 -7
  503. package/src/content/slug.ts +1 -16
  504. package/src/content/url-hardening.ts +8 -2
  505. package/src/controls/actions.tsx +24 -1
  506. package/src/controls/enum-filter.tsx +1 -1
  507. package/src/controls/filter-context.tsx +3 -1
  508. package/src/controls/filter-set.tsx +5 -7
  509. package/src/controls/form-layout.tsx +2 -2
  510. package/src/controls/glyphs.tsx +0 -10
  511. package/src/controls/index.ts +13 -64
  512. package/src/controls/multi-select-filter.tsx +5 -4
  513. package/src/controls/number-filter.tsx +8 -4
  514. package/src/controls/range-filter.tsx +5 -4
  515. package/src/controls/search-filter.tsx +25 -19
  516. package/src/controls/select-filter.tsx +5 -4
  517. package/src/controls/sync-button.tsx +18 -20
  518. package/src/controls/toggle-filter.tsx +5 -4
  519. package/src/controls/uncontrolled.ts +12 -0
  520. package/src/controls/view-tabs.tsx +3 -3
  521. package/src/controls-dates/date-range-picker.tsx +1 -1
  522. package/src/controls-dates/index.ts +0 -1
  523. package/src/dashboard/index.ts +7 -48
  524. package/src/dashboard/section.tsx +11 -40
  525. package/src/dashboard/stat-card.tsx +14 -16
  526. package/src/dashboard/widget-header.module.css +9 -7
  527. package/src/dev-dock.tsx +14 -27
  528. package/src/format/date.ts +2 -92
  529. package/src/format/index.ts +7 -53
  530. package/src/format/number.ts +3 -26
  531. package/src/format/shared.ts +2 -3
  532. package/src/forms/index.ts +0 -23
  533. package/src/guard/index.ts +37 -192
  534. package/src/guard/types.ts +6 -19
  535. package/src/index.ts +30 -282
  536. package/src/provider/create-router.tsx +138 -0
  537. package/src/provider/hotkeys.ts +70 -0
  538. package/src/provider/index.tsx +260 -230
  539. package/src/provider/lab-theme.ts +3 -2
  540. package/src/provider/route-transition.ts +199 -0
  541. package/src/provider/spotlight-actions.tsx +69 -0
  542. package/src/provider/test-router.tsx +25 -0
  543. package/src/query-client.ts +4 -22
  544. package/src/router-tanstack/index.ts +18 -112
  545. package/src/router-tanstack/nav.ts +28 -2
  546. package/src/router-tanstack/search-store.ts +9 -2
  547. package/src/router-tanstack/use-nav.ts +47 -13
  548. package/src/shell/app-mobile-nav.tsx +3 -2
  549. package/src/shell/app-sidebar.tsx +1 -1
  550. package/src/shell/aside-docking.ts +1 -1
  551. package/src/shell/index.tsx +61 -20
  552. package/src/shell/page-aside.tsx +47 -23
  553. package/src/shell/page-bar.tsx +3 -3
  554. package/src/shell/page-title.tsx +1 -1
  555. package/src/state.ts +11 -37
  556. package/src/styles.css +107 -7
  557. package/src/surfaces.ts +56 -151
  558. package/src/{data → table}/data-table-state.ts +5 -4
  559. package/src/{data → table}/data-table.tsx +170 -161
  560. package/src/table/index.ts +18 -0
  561. package/src/table/table-features.ts +102 -0
  562. package/src/telemetry.ts +110 -0
  563. package/src/theme/index.ts +22 -47
  564. package/src/theme/theme-toggle.module.css +30 -0
  565. package/src/theme/theme-toggle.module.css.d.ts +10 -0
  566. package/src/theme/theme-toggle.tsx +15 -43
  567. package/src/theme-lab/derive-controls.tsx +5 -3
  568. package/src/theme-lab/derive-state.ts +2 -1
  569. package/src/tokens/core.ts +1163 -0
  570. package/src/tokens/derive.ts +1 -1
  571. package/src/tokens/index.ts +14 -1181
  572. package/src/tokens/palette.ts +3 -7
  573. package/src/vite.ts +3 -3
  574. package/agent/templates/CLAUDE-block.md.tpl +0 -40
  575. package/agent/templates/query-client.ts.tpl +0 -26
  576. package/dist/agent/adapter.d.ts +0 -150
  577. package/dist/agent/adapter.d.ts.map +0 -1
  578. package/dist/agent/adapter.js +0 -482
  579. package/dist/agent/use-agent-stream.d.ts +0 -35
  580. package/dist/agent/use-agent-stream.d.ts.map +0 -1
  581. package/dist/agent/use-agent-stream.js +0 -59
  582. package/dist/agent-chat/composer.d.ts.map +0 -1
  583. package/dist/agent-chat/index.d.ts +0 -31
  584. package/dist/agent-chat/index.d.ts.map +0 -1
  585. package/dist/agent-chat/index.js +0 -19
  586. package/dist/agent-chat/message-affordances.d.ts.map +0 -1
  587. package/dist/agent-chat/relative-time.d.ts.map +0 -1
  588. package/dist/agent-chat/thread-detail-panel.d.ts +0 -28
  589. package/dist/agent-chat/thread-detail-panel.d.ts.map +0 -1
  590. package/dist/agent-chat/thread-detail-panel.js +0 -115
  591. package/dist/agent-chat/thread-feed-row.d.ts.map +0 -1
  592. package/dist/agent-chat/thread-feed.d.ts.map +0 -1
  593. package/dist/agent-chat/thread-message.d.ts.map +0 -1
  594. package/dist/agent-chat/thread-outcome-card.d.ts.map +0 -1
  595. package/dist/agent-chat/thread-workspace.d.ts +0 -44
  596. package/dist/agent-chat/thread-workspace.d.ts.map +0 -1
  597. package/dist/agent-chat/thread-workspace.js +0 -153
  598. package/dist/agent-chat/tool-chip.d.ts.map +0 -1
  599. package/dist/agent-chat/use-keyboard-inset.d.ts.map +0 -1
  600. package/dist/agent-chat/virtualize.d.ts.map +0 -1
  601. package/dist/charts/cursor/resolve.d.ts +0 -75
  602. package/dist/charts/cursor/resolve.d.ts.map +0 -1
  603. package/dist/charts/cursor/resolve.js +0 -91
  604. package/dist/charts/cursor/scope.d.ts +0 -20
  605. package/dist/charts/cursor/scope.d.ts.map +0 -1
  606. package/dist/charts/cursor/scope.js +0 -20
  607. package/dist/charts/cursor/store.d.ts +0 -35
  608. package/dist/charts/cursor/store.d.ts.map +0 -1
  609. package/dist/charts/cursor/store.js +0 -25
  610. package/dist/charts/cursor/touch-pin.d.ts +0 -45
  611. package/dist/charts/cursor/touch-pin.d.ts.map +0 -1
  612. package/dist/charts/cursor/touch-pin.js +0 -79
  613. package/dist/charts/hooks/use-discrete-cursor.d.ts +0 -66
  614. package/dist/charts/hooks/use-discrete-cursor.d.ts.map +0 -1
  615. package/dist/charts/hooks/use-discrete-cursor.js +0 -198
  616. package/dist/charts/hooks/use-hysteresis.d.ts +0 -18
  617. package/dist/charts/hooks/use-hysteresis.d.ts.map +0 -1
  618. package/dist/charts/hooks/use-hysteresis.js +0 -12
  619. package/dist/charts/hooks/useBandPlot.d.ts +0 -145
  620. package/dist/charts/hooks/useBandPlot.d.ts.map +0 -1
  621. package/dist/charts/hooks/useBandPlot.js +0 -178
  622. package/dist/charts/hooks/useChartCursor.d.ts +0 -75
  623. package/dist/charts/hooks/useChartCursor.d.ts.map +0 -1
  624. package/dist/charts/hooks/useChartCursor.js +0 -200
  625. package/dist/charts/hooks/useChartSize.d.ts +0 -29
  626. package/dist/charts/hooks/useChartSize.d.ts.map +0 -1
  627. package/dist/charts/hooks/useChartSize.js +0 -8
  628. package/dist/charts/kinds/BandStrip.d.ts +0 -132
  629. package/dist/charts/kinds/BandStrip.d.ts.map +0 -1
  630. package/dist/charts/kinds/BandStrip.js +0 -241
  631. package/dist/charts/kinds/Bars.d.ts +0 -141
  632. package/dist/charts/kinds/Bars.d.ts.map +0 -1
  633. package/dist/charts/kinds/Bars.js +0 -343
  634. package/dist/charts/kinds/Donut.d.ts +0 -77
  635. package/dist/charts/kinds/Donut.d.ts.map +0 -1
  636. package/dist/charts/kinds/Donut.js +0 -245
  637. package/dist/charts/kinds/DualPanel.d.ts +0 -111
  638. package/dist/charts/kinds/DualPanel.d.ts.map +0 -1
  639. package/dist/charts/kinds/DualPanel.js +0 -471
  640. package/dist/charts/kinds/Heatmap.d.ts +0 -85
  641. package/dist/charts/kinds/Heatmap.d.ts.map +0 -1
  642. package/dist/charts/kinds/Heatmap.js +0 -243
  643. package/dist/charts/kinds/MirroredBars.d.ts +0 -98
  644. package/dist/charts/kinds/MirroredBars.d.ts.map +0 -1
  645. package/dist/charts/kinds/MirroredBars.js +0 -292
  646. package/dist/charts/kinds/MultiLine.d.ts +0 -87
  647. package/dist/charts/kinds/MultiLine.d.ts.map +0 -1
  648. package/dist/charts/kinds/MultiLine.js +0 -176
  649. package/dist/charts/kinds/StackedArea.d.ts +0 -73
  650. package/dist/charts/kinds/StackedArea.d.ts.map +0 -1
  651. package/dist/charts/kinds/StackedArea.js +0 -135
  652. package/dist/charts/kinds/ZonedLine.d.ts +0 -97
  653. package/dist/charts/kinds/ZonedLine.d.ts.map +0 -1
  654. package/dist/charts/kinds/ZonedLine.js +0 -155
  655. package/dist/charts/kinds/band-chrome.d.ts +0 -31
  656. package/dist/charts/kinds/band-chrome.d.ts.map +0 -1
  657. package/dist/charts/kinds/band-chrome.js +0 -71
  658. package/dist/charts/kinds/donut-layout.d.ts +0 -47
  659. package/dist/charts/kinds/donut-layout.d.ts.map +0 -1
  660. package/dist/charts/kinds/donut-layout.js +0 -52
  661. package/dist/charts/layout/auto-margin.d.ts +0 -122
  662. package/dist/charts/layout/auto-margin.d.ts.map +0 -1
  663. package/dist/charts/layout/auto-margin.js +0 -81
  664. package/dist/charts/layout/end-labels.d.ts +0 -64
  665. package/dist/charts/layout/end-labels.d.ts.map +0 -1
  666. package/dist/charts/layout/end-labels.js +0 -76
  667. package/dist/charts/layout/log-ticks.d.ts +0 -27
  668. package/dist/charts/layout/log-ticks.d.ts.map +0 -1
  669. package/dist/charts/layout/log-ticks.js +0 -42
  670. package/dist/charts/primitives/AreaGradient.d.ts +0 -18
  671. package/dist/charts/primitives/AreaGradient.d.ts.map +0 -1
  672. package/dist/charts/primitives/AreaGradient.js +0 -13
  673. package/dist/charts/primitives/Axes.d.ts +0 -83
  674. package/dist/charts/primitives/Axes.d.ts.map +0 -1
  675. package/dist/charts/primitives/Axes.js +0 -168
  676. package/dist/charts/primitives/CartesianChart.d.ts +0 -257
  677. package/dist/charts/primitives/CartesianChart.d.ts.map +0 -1
  678. package/dist/charts/primitives/CartesianChart.js +0 -549
  679. package/dist/charts/primitives/ChartCard.d.ts +0 -66
  680. package/dist/charts/primitives/ChartCard.d.ts.map +0 -1
  681. package/dist/charts/primitives/ChartCard.js +0 -143
  682. package/dist/charts/primitives/ChartFrame.d.ts +0 -156
  683. package/dist/charts/primitives/ChartFrame.d.ts.map +0 -1
  684. package/dist/charts/primitives/ChartFrame.js +0 -241
  685. package/dist/charts/primitives/ChartLegend.d.ts +0 -67
  686. package/dist/charts/primitives/ChartLegend.d.ts.map +0 -1
  687. package/dist/charts/primitives/ChartLegend.js +0 -292
  688. package/dist/charts/primitives/ChartPending.d.ts +0 -113
  689. package/dist/charts/primitives/ChartPending.d.ts.map +0 -1
  690. package/dist/charts/primitives/ChartPending.js +0 -117
  691. package/dist/charts/primitives/ChartTooltip.d.ts +0 -59
  692. package/dist/charts/primitives/ChartTooltip.d.ts.map +0 -1
  693. package/dist/charts/primitives/ChartTooltip.js +0 -197
  694. package/dist/charts/primitives/Crosshair.d.ts +0 -26
  695. package/dist/charts/primitives/Crosshair.d.ts.map +0 -1
  696. package/dist/charts/primitives/Crosshair.js +0 -23
  697. package/dist/charts/primitives/HatchPattern.d.ts +0 -31
  698. package/dist/charts/primitives/HatchPattern.d.ts.map +0 -1
  699. package/dist/charts/primitives/HatchPattern.js +0 -31
  700. package/dist/charts/primitives/HoverOverlay.d.ts +0 -45
  701. package/dist/charts/primitives/HoverOverlay.d.ts.map +0 -1
  702. package/dist/charts/primitives/HoverOverlay.js +0 -72
  703. package/dist/charts/primitives/HoverOverlay.module.css +0 -13
  704. package/dist/charts/primitives/HoverOverlay.module.css.d.ts +0 -8
  705. package/dist/charts/primitives/XZoneRects.d.ts +0 -54
  706. package/dist/charts/primitives/XZoneRects.d.ts.map +0 -1
  707. package/dist/charts/primitives/XZoneRects.js +0 -65
  708. package/dist/charts/primitives/ZoneRects.d.ts +0 -38
  709. package/dist/charts/primitives/ZoneRects.d.ts.map +0 -1
  710. package/dist/charts/primitives/ZoneRects.js +0 -30
  711. package/dist/charts/primitives/chart-card-context.d.ts +0 -33
  712. package/dist/charts/primitives/chart-card-context.d.ts.map +0 -1
  713. package/dist/charts/primitives/chart-card-context.js +0 -18
  714. package/dist/charts/primitives/chart-frame-layout.d.ts +0 -185
  715. package/dist/charts/primitives/chart-frame-layout.d.ts.map +0 -1
  716. package/dist/charts/primitives/chart-frame-layout.js +0 -175
  717. package/dist/charts/primitives/chart-layout.d.ts +0 -112
  718. package/dist/charts/primitives/chart-layout.d.ts.map +0 -1
  719. package/dist/charts/primitives/chart-layout.js +0 -175
  720. package/dist/charts/primitives/chart-tier.d.ts +0 -16
  721. package/dist/charts/primitives/chart-tier.d.ts.map +0 -1
  722. package/dist/charts/primitives/chart-tier.js +0 -44
  723. package/dist/charts/primitives/legend-disclosure.d.ts +0 -27
  724. package/dist/charts/primitives/legend-disclosure.d.ts.map +0 -1
  725. package/dist/charts/primitives/legend-disclosure.js +0 -153
  726. package/dist/charts/series.d.ts +0 -189
  727. package/dist/charts/series.d.ts.map +0 -1
  728. package/dist/charts/series.js +0 -84
  729. package/dist/charts/sparklines/BarSparkline.d.ts +0 -37
  730. package/dist/charts/sparklines/BarSparkline.d.ts.map +0 -1
  731. package/dist/charts/sparklines/BarSparkline.js +0 -53
  732. package/dist/charts/sparklines/LineSparkline.d.ts +0 -15
  733. package/dist/charts/sparklines/LineSparkline.d.ts.map +0 -1
  734. package/dist/charts/sparklines/LineSparkline.js +0 -51
  735. package/dist/charts/sparklines/index.d.ts +0 -3
  736. package/dist/charts/sparklines/index.d.ts.map +0 -1
  737. package/dist/charts/sparklines/index.js +0 -6
  738. package/dist/charts/utils/domain.d.ts +0 -35
  739. package/dist/charts/utils/domain.d.ts.map +0 -1
  740. package/dist/charts/utils/domain.js +0 -12
  741. package/dist/charts/utils/format.d.ts +0 -8
  742. package/dist/charts/utils/format.d.ts.map +0 -1
  743. package/dist/charts/utils/format.js +0 -20
  744. package/dist/charts/utils/measure-text.d.ts +0 -25
  745. package/dist/charts/utils/measure-text.d.ts.map +0 -1
  746. package/dist/charts/utils/measure-text.js +0 -64
  747. package/dist/charts/utils/ticks.d.ts +0 -103
  748. package/dist/charts/utils/ticks.d.ts.map +0 -1
  749. package/dist/charts/utils/ticks.js +0 -92
  750. package/dist/commands/overlays-mount.d.ts +0 -122
  751. package/dist/commands/overlays-mount.d.ts.map +0 -1
  752. package/dist/commands/overlays-mount.js +0 -125
  753. package/dist/commands/useCommandHotkeys.d.ts +0 -14
  754. package/dist/commands/useCommandHotkeys.d.ts.map +0 -1
  755. package/dist/commands/useCommandHotkeys.js +0 -45
  756. package/dist/content/article-actions.d.ts +0 -39
  757. package/dist/content/article-actions.d.ts.map +0 -1
  758. package/dist/content/article-actions.js +0 -28
  759. package/dist/content/article-card.d.ts +0 -58
  760. package/dist/content/article-card.d.ts.map +0 -1
  761. package/dist/content/article-card.js +0 -79
  762. package/dist/content/article-card.module.css +0 -111
  763. package/dist/content/mdx.d.ts +0 -20
  764. package/dist/content/mdx.d.ts.map +0 -1
  765. package/dist/content/mdx.js +0 -64
  766. package/dist/controls/compare-filter.d.ts +0 -42
  767. package/dist/controls/compare-filter.d.ts.map +0 -1
  768. package/dist/controls/compare-filter.js +0 -38
  769. package/dist/controls/slider-control.d.ts +0 -36
  770. package/dist/controls/slider-control.d.ts.map +0 -1
  771. package/dist/controls/slider-control.js +0 -64
  772. package/dist/dashboard/widget-grid.d.ts +0 -27
  773. package/dist/dashboard/widget-grid.d.ts.map +0 -1
  774. package/dist/dashboard/widget-grid.js +0 -40
  775. package/dist/dashboard/widget-grid.module.css +0 -69
  776. package/dist/data/data-table-state.d.ts.map +0 -1
  777. package/dist/data/data-table.d.ts.map +0 -1
  778. package/dist/data/query-branch.d.ts.map +0 -1
  779. package/dist/data/table.d.ts +0 -24
  780. package/dist/data/table.d.ts.map +0 -1
  781. package/dist/data/virtual-list.d.ts +0 -133
  782. package/dist/data/virtual-list.d.ts.map +0 -1
  783. package/dist/data/virtual-list.js +0 -157
  784. package/dist/data/virtual.d.ts +0 -21
  785. package/dist/data/virtual.d.ts.map +0 -1
  786. package/dist/data/virtual.js +0 -4
  787. package/dist/forms/FormErrorSummary.d.ts +0 -30
  788. package/dist/forms/FormErrorSummary.d.ts.map +0 -1
  789. package/dist/forms/FormErrorSummary.js +0 -30
  790. package/dist/forms/use-field-array.d.ts +0 -60
  791. package/dist/forms/use-field-array.d.ts.map +0 -1
  792. package/dist/forms/use-field-array.js +0 -20
  793. package/dist/forms/use-form-draft.d.ts +0 -76
  794. package/dist/forms/use-form-draft.d.ts.map +0 -1
  795. package/dist/forms/use-form-draft.js +0 -92
  796. package/dist/forms/use-form-submit.d.ts +0 -88
  797. package/dist/forms/use-form-submit.d.ts.map +0 -1
  798. package/dist/forms/use-form-submit.js +0 -63
  799. package/dist/notifications/bell.d.ts.map +0 -1
  800. package/dist/notifications/center.d.ts.map +0 -1
  801. package/dist/notifications/define-notifications.d.ts.map +0 -1
  802. package/dist/notifications/index.d.ts +0 -40
  803. package/dist/notifications/index.d.ts.map +0 -1
  804. package/dist/notifications/index.js +0 -54
  805. package/dist/notifications/mount-guard.d.ts +0 -8
  806. package/dist/notifications/mount-guard.d.ts.map +0 -1
  807. package/dist/notifications/mount-guard.js +0 -18
  808. package/dist/notifications/notify.d.ts +0 -149
  809. package/dist/notifications/notify.d.ts.map +0 -1
  810. package/dist/notifications/notify.js +0 -171
  811. package/dist/notifications/store.d.ts.map +0 -1
  812. package/dist/provider/connectivity-indicator.d.ts +0 -13
  813. package/dist/provider/connectivity-indicator.d.ts.map +0 -1
  814. package/dist/provider/connectivity-indicator.js +0 -205
  815. package/dist/provider/connectivity-provider.d.ts +0 -7
  816. package/dist/provider/connectivity-provider.d.ts.map +0 -1
  817. package/dist/provider/connectivity-provider.js +0 -128
  818. package/dist/provider/connectivity-types.d.ts +0 -36
  819. package/dist/provider/connectivity-types.d.ts.map +0 -1
  820. package/dist/provider/use-connectivity.d.ts +0 -3
  821. package/dist/provider/use-connectivity.d.ts.map +0 -1
  822. package/dist/provider/use-connectivity.js +0 -14
  823. package/dist/query-devtools.d.ts +0 -21
  824. package/dist/query-devtools.d.ts.map +0 -1
  825. package/dist/query-devtools.js +0 -13
  826. package/src/agent/adapter.ts +0 -945
  827. package/src/agent/use-agent-stream.ts +0 -154
  828. package/src/agent-chat/index.ts +0 -54
  829. package/src/agent-chat/thread-detail-panel.tsx +0 -201
  830. package/src/agent-chat/thread-workspace.tsx +0 -279
  831. package/src/charts/cursor/resolve.ts +0 -198
  832. package/src/charts/cursor/scope.tsx +0 -35
  833. package/src/charts/cursor/store.ts +0 -58
  834. package/src/charts/cursor/touch-pin.ts +0 -138
  835. package/src/charts/hooks/use-discrete-cursor.ts +0 -335
  836. package/src/charts/hooks/use-hysteresis.ts +0 -26
  837. package/src/charts/hooks/useBandPlot.ts +0 -383
  838. package/src/charts/hooks/useChartCursor.ts +0 -367
  839. package/src/charts/hooks/useChartSize.ts +0 -35
  840. package/src/charts/kinds/BandStrip.tsx +0 -449
  841. package/src/charts/kinds/Bars.tsx +0 -589
  842. package/src/charts/kinds/Donut.tsx +0 -368
  843. package/src/charts/kinds/DualPanel.tsx +0 -712
  844. package/src/charts/kinds/Heatmap.tsx +0 -396
  845. package/src/charts/kinds/MirroredBars.tsx +0 -469
  846. package/src/charts/kinds/MultiLine.tsx +0 -322
  847. package/src/charts/kinds/StackedArea.tsx +0 -267
  848. package/src/charts/kinds/ZonedLine.tsx +0 -301
  849. package/src/charts/kinds/band-chrome.tsx +0 -91
  850. package/src/charts/kinds/donut-layout.ts +0 -82
  851. package/src/charts/layout/auto-margin.ts +0 -242
  852. package/src/charts/layout/end-labels.ts +0 -135
  853. package/src/charts/layout/log-ticks.ts +0 -90
  854. package/src/charts/primitives/AreaGradient.tsx +0 -26
  855. package/src/charts/primitives/Axes.tsx +0 -271
  856. package/src/charts/primitives/CartesianChart.tsx +0 -1002
  857. package/src/charts/primitives/ChartCard.tsx +0 -280
  858. package/src/charts/primitives/ChartFrame.tsx +0 -493
  859. package/src/charts/primitives/ChartLegend.tsx +0 -422
  860. package/src/charts/primitives/ChartPending.tsx +0 -243
  861. package/src/charts/primitives/ChartTooltip.tsx +0 -265
  862. package/src/charts/primitives/Crosshair.tsx +0 -43
  863. package/src/charts/primitives/HatchPattern.tsx +0 -55
  864. package/src/charts/primitives/HoverOverlay.module.css +0 -13
  865. package/src/charts/primitives/HoverOverlay.module.css.d.ts +0 -8
  866. package/src/charts/primitives/HoverOverlay.tsx +0 -109
  867. package/src/charts/primitives/XZoneRects.tsx +0 -132
  868. package/src/charts/primitives/ZoneRects.tsx +0 -67
  869. package/src/charts/primitives/chart-card-context.ts +0 -46
  870. package/src/charts/primitives/chart-frame-layout.ts +0 -430
  871. package/src/charts/primitives/chart-layout.ts +0 -318
  872. package/src/charts/primitives/chart-tier.tsx +0 -76
  873. package/src/charts/primitives/legend-disclosure.tsx +0 -178
  874. package/src/charts/series.ts +0 -276
  875. package/src/charts/sparklines/BarSparkline.tsx +0 -94
  876. package/src/charts/sparklines/LineSparkline.tsx +0 -71
  877. package/src/charts/sparklines/index.ts +0 -2
  878. package/src/charts/theme.tsx +0 -53
  879. package/src/charts/utils/domain.ts +0 -41
  880. package/src/charts/utils/format.ts +0 -19
  881. package/src/charts/utils/measure-text.ts +0 -109
  882. package/src/charts/utils/ticks.ts +0 -239
  883. package/src/commands/overlays-mount.tsx +0 -333
  884. package/src/commands/useCommandHotkeys.ts +0 -114
  885. package/src/content/article-actions.ts +0 -72
  886. package/src/content/article-card.module.css +0 -111
  887. package/src/content/article-card.tsx +0 -174
  888. package/src/content/mdx.tsx +0 -127
  889. package/src/controls/compare-filter.tsx +0 -81
  890. package/src/controls/slider-control.tsx +0 -159
  891. package/src/dashboard/widget-grid.module.css +0 -69
  892. package/src/dashboard/widget-grid.tsx +0 -146
  893. package/src/data/table.ts +0 -39
  894. package/src/data/virtual-list.tsx +0 -356
  895. package/src/data/virtual.ts +0 -26
  896. package/src/forms/FormErrorSummary.tsx +0 -71
  897. package/src/forms/use-field-array.ts +0 -94
  898. package/src/forms/use-form-draft.ts +0 -262
  899. package/src/forms/use-form-submit.ts +0 -199
  900. package/src/notifications/index.ts +0 -88
  901. package/src/notifications/mount-guard.ts +0 -38
  902. package/src/notifications/notify.tsx +0 -379
  903. package/src/provider/connectivity-indicator.tsx +0 -267
  904. package/src/provider/connectivity-provider.tsx +0 -189
  905. package/src/provider/connectivity-types.ts +0 -42
  906. package/src/provider/use-connectivity.ts +0 -26
  907. package/src/query-devtools.tsx +0 -40
  908. /package/dist/{agent-chat → agent/chat}/message-affordances.js +0 -0
  909. /package/dist/{agent-chat → agent/chat}/relative-time.d.ts +0 -0
  910. /package/dist/{agent-chat → agent/chat}/relative-time.js +0 -0
  911. /package/dist/{agent-chat → agent/chat}/use-keyboard-inset.d.ts +0 -0
  912. /package/dist/{agent-chat → agent/chat}/virtualize.js +0 -0
  913. /package/dist/{notifications → commands/notifications}/bell.js +0 -0
  914. /package/dist/{notifications → commands/notifications}/define-notifications.js +0 -0
  915. /package/dist/{provider/connectivity-types.js → controls/uncontrolled.js} +0 -0
  916. /package/dist/{data → table}/data-table.module.css +0 -0
  917. /package/dist/{data → table}/data-table.module.css.d.ts +0 -0
  918. /package/dist/{data → table}/query-branch.d.ts +0 -0
  919. /package/dist/{data → table}/query-branch.js +0 -0
  920. /package/src/{agent-chat → agent/chat}/relative-time.ts +0 -0
  921. /package/src/{data → table}/data-table.module.css +0 -0
  922. /package/src/{data → table}/data-table.module.css.d.ts +0 -0
  923. /package/src/{data → table}/query-branch.ts +0 -0
@@ -1,265 +0,0 @@
1
- import type { CSSProperties, ReactNode } from 'react'
2
- import { useLayoutEffect, useRef, useState, useSyncExternalStore } from 'react'
3
- import { createPortal } from 'react-dom'
4
- import { VX } from '../../tokens'
5
- import type { TooltipRowData } from '../series'
6
- import { fmtTooltipDate } from '../utils/format'
7
- import { useChartMetrics } from './chart-tier'
8
-
9
- // Panel bg + shadow-card, radius 8 (docs/DESIGN-SPEC.md §5's "Tooltip/popover/menu" idiom) — the
10
- // same depth-via-shadow treatment as ChartCard, never a `border` property. Surfaces resolve per
11
- // theme via CSS vars, so this is a static object (no useMemo/hook needed).
12
- const TOOLTIP_STYLES: CSSProperties = {
13
- position: 'fixed',
14
- pointerEvents: 'none',
15
- zIndex: VX.zIndexFloating,
16
- backgroundColor: VX.surface.panel,
17
- borderRadius: 'var(--vx-radius-floating)',
18
- padding: '0',
19
- fontSize: VX.text.xs,
20
- lineHeight: '18px',
21
- color: VX.ink,
22
- boxShadow: VX.shadowCard,
23
- }
24
-
25
- /** Tooltip header — shows formatted date + optional right-aligned label with color. */
26
- export function TooltipHeader({
27
- date,
28
- label,
29
- labelColor,
30
- format = fmtTooltipDate,
31
- }: {
32
- date: string
33
- label?: string
34
- labelColor?: string
35
- /** Overrides `fmtTooltipDate` for the header text. Default: today's `fmtTooltipDate` behavior,
36
- * unchanged. The seam exists because `fmtTooltipDate` regexes `YYYY-MM-DD` out of the key and
37
- * builds a LOCAL `Date`, so a UTC ISO domain key names the wrong day next to `formatX`/the
38
- * tooltip badge, which both resolve locally — a caller with a UTC key needs to supply its own. */
39
- format?: (date: string) => string
40
- }) {
41
- return (
42
- <div
43
- style={{
44
- display: 'flex',
45
- justifyContent: 'space-between',
46
- alignItems: 'center',
47
- gap: 16,
48
- padding: '6px 10px',
49
- borderBottom: `1px solid ${VX.divider}`,
50
- }}
51
- >
52
- <span
53
- style={{
54
- fontSize: VX.text.micro,
55
- fontWeight: 600,
56
- fontFamily: 'var(--basalt-font-mono)',
57
- color: VX.ink,
58
- }}
59
- >
60
- {format(date)}
61
- </span>
62
- {label !== undefined && (
63
- <span
64
- style={{
65
- fontSize: VX.text.micro,
66
- fontWeight: 500,
67
- fontFamily: 'var(--basalt-font-mono)',
68
- color: labelColor,
69
- }}
70
- >
71
- {label}
72
- </span>
73
- )}
74
- </div>
75
- )
76
- }
77
-
78
- /** Tooltip row — swatch + label + value. */
79
- export function TooltipRow({
80
- color,
81
- label,
82
- value,
83
- valueColor,
84
- shape,
85
- strokeWidth,
86
- dashed,
87
- }: {
88
- color: string
89
- label: string
90
- value: string
91
- valueColor?: string
92
- shape?: 'dot' | 'line' | 'bar'
93
- strokeWidth?: number
94
- /** Render the line swatch as dashed (only applies to shape='line'). */
95
- dashed?: boolean
96
- }) {
97
- return (
98
- <div
99
- style={{
100
- display: 'flex',
101
- justifyContent: 'space-between',
102
- alignItems: 'center',
103
- gap: 16,
104
- padding: '0 10px',
105
- }}
106
- >
107
- <span style={{ display: 'flex', alignItems: 'center', gap: 6 }}>
108
- {shape === 'line' ? (
109
- <svg width={12} height={10} style={{ flexShrink: 0 }}>
110
- <line
111
- x1={0}
112
- y1={5}
113
- x2={12}
114
- y2={5}
115
- stroke={color}
116
- strokeWidth={strokeWidth ?? VX.lineWidth}
117
- strokeDasharray={dashed ? VX.dashArray : undefined}
118
- />
119
- </svg>
120
- ) : (
121
- <span
122
- style={{
123
- width: 8,
124
- height: 8,
125
- borderRadius: 2, // theme-allow raw-surface — sub-scale tooltip micro-corner, below the 4px radius floor
126
- backgroundColor: color,
127
- flexShrink: 0,
128
- }}
129
- />
130
- )}
131
- {label}
132
- </span>
133
- <span style={{ fontWeight: 400, fontFamily: 'var(--basalt-font-mono)', color: valueColor }}>
134
- {value}
135
- </span>
136
- </div>
137
- )
138
- }
139
-
140
- /** The derived rows (`deriveTooltipRows`), one {@link TooltipRow} each. */
141
- export function TooltipRows({ rows }: { rows: readonly TooltipRowData[] }) {
142
- return rows.map((row) => (
143
- <TooltipRow
144
- key={row.key}
145
- color={row.color}
146
- label={row.label}
147
- value={row.value}
148
- shape={row.shape}
149
- dashed={row.dashed}
150
- {...(row.strokeWidth !== undefined && { strokeWidth: row.strokeWidth })}
151
- />
152
- ))
153
- }
154
-
155
- export function TooltipBody({ children }: { children: ReactNode }) {
156
- return <div style={{ padding: '5px 0' }}>{children}</div>
157
- }
158
-
159
- /**
160
- * "Am I on the client?", answered SYNCHRONOUSLY and hydration-safely.
161
- *
162
- * `useSyncExternalStore` is the one hook whose server snapshot React honours during BOTH
163
- * `renderToString` and the hydration pass, so the server sees `false` and the client's very first
164
- * render already sees `true` — no effect, no extra frame, and therefore no one-frame flash of a
165
- * missing tooltip on a hover that has already happened. An `useEffect`-set flag would be correct
166
- * on the server and a render late on the client. The store never emits, so nothing ever
167
- * re-subscribes.
168
- */
169
- const neverSubscribe = () => () => {}
170
- const onClient = () => true
171
- const onServer = () => false
172
- const useIsClient = (): boolean => useSyncExternalStore(neverSubscribe, onClient, onServer)
173
-
174
- /** Gap between the anchor point and the tooltip box, and the minimum distance kept from the
175
- * viewport edge. */
176
- const TOOLTIP_GAP = 12
177
- const VIEWPORT_MARGIN = 8
178
-
179
- /**
180
- * Floating tooltip positioned against a viewport-space anchor, with flip + clamp handled once for
181
- * every chart instead of per call site (this used to be recomputed inside each chart's own `useChartTooltip`, and only for
182
- * charts that remembered to use it).
183
- *
184
- * The box is measured after mount via `useLayoutEffect`, so the first paint of a given tooltip is
185
- * hidden rather than misplaced — a tooltip that flashes at the wrong corner reads as a bug.
186
- *
187
- * **It renders NOTHING on the server.** `createPortal` throws outright in `react-dom/server`
188
- * ("Portals are not currently supported by the server renderer"), and an unconditional portal made
189
- * this the single component in the package that could not be server-rendered. The guard is
190
- * {@link useIsClient}, not a `typeof document` check: under a DOM-preloaded test runner `document`
191
- * exists while `renderToString` still refuses portals. A tooltip is a hover artifact with nothing
192
- * to emit server-side, so rendering nothing is the whole fix, not a degradation.
193
- */
194
- export function ChartTooltipFloat({
195
- anchor,
196
- ariaLive = true,
197
- children,
198
- }: {
199
- anchor: { x: number; y: number } | null
200
- /** Whether this tooltip announces itself to screen readers on every position change. Default
201
- * true. Pass false for a cursor FOLLOWER's tooltip — N followers on a shared-cursor page all
202
- * announcing on every pointer move would make the page unusable with a screen reader; only the
203
- * cursor SOURCE should be `aria-live`. */
204
- ariaLive?: boolean
205
- children: ReactNode
206
- }) {
207
- const ref = useRef<HTMLDivElement>(null)
208
- const [box, setBox] = useState<{ width: number; height: number } | null>(null)
209
- const isClient = useIsClient()
210
- const { tooltipMinWidth } = useChartMetrics()
211
-
212
- useLayoutEffect(() => {
213
- const el = ref.current
214
- if (el === null) return
215
- const { offsetWidth, offsetHeight } = el
216
- setBox((prev) =>
217
- prev !== null && prev.width === offsetWidth && prev.height === offsetHeight
218
- ? prev
219
- : { width: offsetWidth, height: offsetHeight },
220
- )
221
- }, [children, anchor])
222
-
223
- if (anchor === null) return null
224
- // The SSR guard — see the component doc. A `typeof document` check does NOT cover this: under a
225
- // jsdom/happy-dom-preloaded test runner `document` exists while `renderToString` still refuses
226
- // portals, which is exactly how this shipped.
227
- if (!isClient) return null
228
-
229
- const width = box?.width ?? 0
230
- const height = box?.height ?? 0
231
- const vw = window.innerWidth
232
- const vh = window.innerHeight
233
-
234
- // An anchor outside the viewport means the chart that owns it has scrolled off-screen. Clamping
235
- // would paint a follower's box over unrelated chrome (the bottom nav — `R2C-3`); render nothing
236
- // instead.
237
- if (anchor.y < 0 || anchor.y > vh) return null
238
-
239
- const flipsLeft = anchor.x + TOOLTIP_GAP + width + VIEWPORT_MARGIN > vw
240
- const left = flipsLeft
241
- ? Math.max(VIEWPORT_MARGIN, anchor.x - TOOLTIP_GAP - width)
242
- : anchor.x + TOOLTIP_GAP
243
- const top = Math.min(
244
- Math.max(VIEWPORT_MARGIN, anchor.y - TOOLTIP_GAP),
245
- Math.max(VIEWPORT_MARGIN, vh - height - VIEWPORT_MARGIN),
246
- )
247
-
248
- return createPortal(
249
- <div
250
- ref={ref}
251
- role="tooltip"
252
- {...(ariaLive && { 'aria-live': 'polite' as const })}
253
- style={{
254
- ...TOOLTIP_STYLES,
255
- minWidth: tooltipMinWidth,
256
- left,
257
- top,
258
- visibility: box === null ? 'hidden' : 'visible',
259
- }}
260
- >
261
- {children}
262
- </div>,
263
- document.body,
264
- )
265
- }
@@ -1,43 +0,0 @@
1
- import type { ReactNode } from 'react'
2
- import { VX } from '../../tokens'
3
- import { useChartMetrics } from './chart-tier'
4
-
5
- /**
6
- * The shared vertical hover crosshair — one implementation for what used to be five hand-rolled
7
- * call sites (`MultiLine`, `ZonedLine`, `StackedArea`, `Bars`, `DualPanel`). `top`/`bottom` are the
8
- * plot-local y extent the line spans (usually `0` and the plot's `yMax`); `DualPanel` passes the
9
- * extent spanning both panes for its cross-pane crosshair.
10
- */
11
- export function Crosshair({
12
- x,
13
- top,
14
- bottom,
15
- }: {
16
- x: number
17
- top: number
18
- bottom: number
19
- }): ReactNode {
20
- return <line x1={x} x2={x} y1={top} y2={bottom} stroke={VX.crosshair} strokeWidth={1} />
21
- }
22
-
23
- /**
24
- * The punched-out hover marker: a filled circle whose stroke is the chart background color, so it
25
- * reads as a "hole" cut into the line on both themes. Centralizes the `dotStroke = chart-bg` trick.
26
- *
27
- * The default radius tracks the ambient chart tier (`docs/CHARTS-SPEC.md` §8) — an explicit `r`
28
- * (a `getMarker`'s own radius) still wins.
29
- */
30
- export function SeriesDot({
31
- cx,
32
- cy,
33
- color,
34
- r,
35
- }: {
36
- cx: number
37
- cy: number
38
- color: string
39
- r?: number
40
- }): ReactNode {
41
- const { dotR } = useChartMetrics()
42
- return <circle cx={cx} cy={cy} r={r ?? dotR} fill={color} stroke={VX.dotStroke} strokeWidth={2} />
43
- }
@@ -1,55 +0,0 @@
1
- import type { ReactNode } from 'react'
2
- import { alpha } from '../../tokens'
3
-
4
- /**
5
- * A diagonal-hatch `<pattern>` — the one fill that reads as **absence** rather than as a weak
6
- * measurement.
7
- *
8
- * A faint solid tint cannot do this job: it sits on the same perceptual axis as every other
9
- * intensity of the same hue, so "nothing was measured here" and "everything measured here was
10
- * fine" collapse into neighbouring steps of one ramp. Hatching is off that axis entirely and
11
- * survives being placed beside a colour ramp of the same hue.
12
- *
13
- * `id` must be unique per document — `BandStrip` / `MirroredBars` namespace theirs with `chartId`.
14
- * `opacity` is applied through `alpha()` on the stroke rather than as an `opacity` attribute, so
15
- * the hue keeps resolving per colour scheme.
16
- */
17
- export function HatchPattern({
18
- id,
19
- color,
20
- opacity = 0.55,
21
- size = 6,
22
- }: {
23
- id: string
24
- color: string
25
- opacity?: number
26
- size?: number
27
- }): ReactNode {
28
- return (
29
- <pattern
30
- id={id}
31
- width={size}
32
- height={size}
33
- patternUnits="userSpaceOnUse"
34
- patternTransform="rotate(45)"
35
- >
36
- <line x1={0} y1={0} x2={0} y2={size} stroke={alpha(color, opacity)} strokeWidth={size / 3} />
37
- </pattern>
38
- )
39
- }
40
-
41
- /** `fill` value referencing a {@link HatchPattern} by id. */
42
- export function hatchFill(id: string): string {
43
- return `url(#${id})`
44
- }
45
-
46
- /**
47
- * The pattern's own repeat, shrunk to fit the band it textures.
48
- *
49
- * Left at a fixed 6px a sub-pixel band draws less than one diagonal rule, so a fill/hatch split
50
- * inside one band antialiases into a single smudge no reader can tell from a fully-measured band.
51
- * Floored at 2 — below that the stroke has nothing to render on.
52
- */
53
- export function hatchSizeFor(bandWidth: number): number {
54
- return Math.max(2, Math.min(6, Math.round(bandWidth)))
55
- }
@@ -1,13 +0,0 @@
1
- /*
2
- * `HoverOverlay` — the transparent plot rect every cartesian kind scrubs through. A tap focuses it
3
- * on pointerdown, so the UA's own outline would ring the whole plot on every phone tap (`R2C-15`);
4
- * keyboard focus keeps a VX accent inset instead.
5
- */
6
- .overlay {
7
- outline: none;
8
- }
9
-
10
- .overlay:focus-visible {
11
- outline: 1px solid var(--vx-accent);
12
- outline-offset: -1px;
13
- }
@@ -1,8 +0,0 @@
1
- /**
2
- * Typed CSS-module declaration — named string props, so dot access stays verbatim under the
3
- * package's strict flags.
4
- */
5
- declare const classes: {
6
- readonly overlay: string
7
- }
8
- export default classes
@@ -1,109 +0,0 @@
1
- import type { FocusEventHandler, KeyboardEventHandler, PointerEventHandler } from 'react'
2
- import type { ChartCursor } from '../hooks/useChartCursor'
3
- import styles from './HoverOverlay.module.css'
4
-
5
- /** Props of {@link HoverOverlay}. */
6
- export type HoverOverlayProps = {
7
- width: number
8
- height: number
9
- onMove: PointerEventHandler<SVGRectElement>
10
- /** Coarse-pointer tap: resolves + shows the tooltip immediately, with no preceding `pointermove`
11
- * (`docs/CHARTS-SPEC.md` §4, Tooltip). The press is provisional; `onUp` commits it. */
12
- onDown?: PointerEventHandler<SVGRectElement>
13
- /** Commits the provisional touch press so the pin survives the lift. */
14
- onUp?: PointerEventHandler<SVGRectElement>
15
- onLeave: PointerEventHandler<SVGRectElement>
16
- /** Present = the overlay is focusable and scrubs on ←/→. */
17
- onKeyDown?: KeyboardEventHandler<SVGRectElement>
18
- onBlur?: FocusEventHandler<SVGRectElement>
19
- ariaLabel?: string
20
- /** Index of the focused point — announced as the slider position. */
21
- valueNow?: number
22
- /** Last index of the domain. */
23
- valueMax?: number
24
- /** Human-readable label for the focused point (the formatted x key). */
25
- valueText?: string
26
- }
27
-
28
- /**
29
- * Transparent <rect> that captures pointer events (mouse + touch + pen) for tooltip + crosshair
30
- * sync.
31
- *
32
- * With `onKeyDown` it also becomes the chart's keyboard affordance: the rect takes focus and
33
- * ←/→ scrub the cursor, so a chart's values are reachable without a pointer.
34
- */
35
- export function HoverOverlay({
36
- width,
37
- height,
38
- onMove,
39
- onDown,
40
- onUp,
41
- onLeave,
42
- onKeyDown,
43
- onBlur,
44
- ariaLabel,
45
- valueNow,
46
- valueMax,
47
- valueText,
48
- }: HoverOverlayProps) {
49
- return (
50
- // `touch-action: pan-y` lives on the plot's `<svg>` (each kind's own), NOT here: Chrome ignores
51
- // `touch-action` on an SVG child `<rect>`, so the browser claims a horizontal pan and cancels
52
- // the pointer (`R2C-2`). The `overlay` class owns the focus ring: no UA outline on tap, a VX
53
- // accent inset under `:focus-visible` (`R2C-15`).
54
- <rect
55
- className={styles.overlay}
56
- width={width}
57
- height={height}
58
- fill="transparent"
59
- {...(onKeyDown !== undefined && {
60
- tabIndex: 0,
61
- // `slider`, not `application`: `application` would drop this node out of the screen
62
- // reader's normal browse mode entirely, which is a far bigger hammer than an arrow-key
63
- // scrub needs. A slider announces both the affordance and the focused point.
64
- role: 'slider',
65
- 'aria-label': ariaLabel ?? 'Chart data — use arrow keys to scrub',
66
- 'aria-orientation': 'horizontal' as const,
67
- 'aria-valuemin': 0,
68
- ...(valueMax !== undefined && { 'aria-valuemax': valueMax }),
69
- // `aria-valuenow` is required on a slider: 0 (the first point) until the cursor lands on one.
70
- 'aria-valuenow': valueNow ?? 0,
71
- ...(valueText !== undefined && { 'aria-valuetext': valueText }),
72
- onKeyDown,
73
- ...(onBlur !== undefined && { onBlur }),
74
- })}
75
- onPointerMove={onMove}
76
- {...(onDown !== undefined && { onPointerDown: onDown })}
77
- {...(onUp !== undefined && { onPointerUp: onUp })}
78
- onPointerLeave={onLeave}
79
- onPointerCancel={onLeave}
80
- />
81
- )
82
- }
83
-
84
- /**
85
- * Everything a FOCUSABLE overlay over indexed data takes besides its rect: the cursor's pointer and
86
- * keyboard handlers plus the slider label/position. `CartesianChart`, `DualPanel`'s top pane and
87
- * the banded kinds all wire it identically, so it is stated once.
88
- */
89
- export function cursorSliderProps<T>(input: {
90
- cursor: ChartCursor<T>
91
- data: readonly T[]
92
- getX: (d: T) => string
93
- formatX: (key: string) => string
94
- ariaLabel: string | undefined
95
- }): Omit<HoverOverlayProps, 'width' | 'height'> {
96
- const { cursor, data, getX, formatX, ariaLabel } = input
97
- const { point } = cursor
98
- return {
99
- onMove: cursor.onPointerMove,
100
- onDown: cursor.onPointerDown,
101
- onUp: cursor.onPointerUp,
102
- onLeave: cursor.onPointerLeave,
103
- onKeyDown: cursor.onKeyDown,
104
- onBlur: cursor.onBlur,
105
- valueMax: Math.max(data.length - 1, 0),
106
- ...(point !== null && { valueNow: data.indexOf(point), valueText: formatX(getX(point)) }),
107
- ...(ariaLabel !== undefined && { ariaLabel }),
108
- }
109
- }
@@ -1,132 +0,0 @@
1
- import type { scalePoint } from '@visx/scale'
2
-
3
- /**
4
- * The point-scale instance type, derived from `@visx/scale`'s own `scalePoint` return type.
5
- * Equivalent to d3's `ScalePoint<string>` but resolved through `@visx/scale` (an installed dep) so
6
- * it needs no `@types/d3-scale` and stays inside the visx-only-in-charts boundary.
7
- */
8
- type PointScale = ReturnType<typeof scalePoint<string>>
9
-
10
- export type XZoneSpec = {
11
- /** Left edge — a domain key produced by the kind's `getX`. Omit for "start of the plot area". */
12
- from?: string
13
- /** Right edge — a domain key produced by the kind's `getX`. Omit for "end of the plot area". */
14
- to?: string
15
- fill: string
16
- /**
17
- * `'center'` (default, unchanged behaviour) resolves a present bound to `xScale(key)` — the
18
- * point's own center, so a band reads "from this sample to that sample" rather than
19
- * edge-to-edge. `'edge'` resolves a present `from` to `xScale(from) - step/2` and a present `to`
20
- * to `xScale(to) + step/2` (`step` read from `xScale.step()`), so the band covers both terminal
21
- * slots in full — a two-key band widens by exactly one step, and `from === to` renders one step
22
- * wide instead of being skipped as degenerate. An omitted `from`/`to` still resolves to the plot
23
- * edge (`xScale.range()[0]`/`[1]`) in both modes, unshifted — omission means "the plot's own
24
- * edge", not "the first/last sample's edge". A resolved `'edge'` bound is clamped into the plot
25
- * range so a band anchored at the first or last sample cannot paint outside the plot area.
26
- */
27
- align?: 'center' | 'edge'
28
- }
29
-
30
- function clamp(value: number, min: number, max: number): number {
31
- return Math.min(Math.max(value, min), max)
32
- }
33
-
34
- /**
35
- * Resolves one zone bound (`from` or `to`) to a pixel x. `edgeSign` is `-1` for `from` (subtract
36
- * half a step) and `+1` for `to` (add half a step) — only consulted in `'edge'` mode.
37
- */
38
- function resolveBound({
39
- key,
40
- omittedEdge,
41
- xScale,
42
- align,
43
- edgeSign,
44
- rangeMin,
45
- rangeMax,
46
- }: {
47
- key: string | undefined
48
- omittedEdge: number
49
- xScale: PointScale
50
- align: 'center' | 'edge'
51
- edgeSign: -1 | 1
52
- rangeMin: number
53
- rangeMax: number
54
- }): number | undefined {
55
- if (key === undefined) return omittedEdge
56
- const center = xScale(key)
57
- if (center === undefined) return undefined
58
- if (align === 'center') return center
59
- return clamp(center + edgeSign * (xScale.step() / 2), rangeMin, rangeMax)
60
- }
61
-
62
- /**
63
- * Vertical zone backgrounds (x-range overlays — twilight bands, a shaded time window) — one
64
- * <rect> per zone, spanning y=[0, height] and x=[scale(from), scale(to)]. The x analog of
65
- * `ZoneRects`, for a `scalePoint` x-axis instead of a `scaleLinear` y-axis.
66
- *
67
- * Bound resolution depends on `XZoneSpec.align` (see its JSDoc for the full `'center'`/`'edge'`
68
- * contract) — default `'center'` resolves a present key to the point's own center; `'edge'`
69
- * widens by half a step at each present bound so the band covers the terminal slots in full.
70
- *
71
- * A key that is not in the scale's domain skips that band entirely (renders nothing for it) —
72
- * it is NEVER clamped to a plot edge, in either mode. Clamping an unknown key would silently
73
- * paint a band across the whole chart for a typo'd or stale key, which is the exact class of
74
- * quiet lie the repo's "nothing to draw is two different states" doctrine rejects: an unknown key
75
- * must read as "not drawn", not as "the whole plot".
76
- *
77
- * A degenerate resolved range (right edge <= left edge, e.g. an inverted `from`/`to` pair) is
78
- * also skipped — no negative-width rect. In `'center'` mode `from === to` is degenerate (skipped,
79
- * today's behaviour); in `'edge'` mode it is NOT — the half-step widening on each side always
80
- * produces a positive-width, one-step-wide rect.
81
- */
82
- export function XZoneRects({
83
- zones,
84
- height,
85
- xScale,
86
- }: {
87
- zones: XZoneSpec[]
88
- /** Plot-area height (yMax); rects span from 0 to this. */
89
- height: number
90
- xScale: PointScale
91
- }) {
92
- return (
93
- <>
94
- {zones.map((z, i) => {
95
- const [rangeStart, rangeEnd] = xScale.range() as [number, number]
96
- const rangeMin = Math.min(rangeStart, rangeEnd)
97
- const rangeMax = Math.max(rangeStart, rangeEnd)
98
- const align = z.align ?? 'center'
99
- const xFrom = resolveBound({
100
- key: z.from,
101
- omittedEdge: rangeStart,
102
- xScale,
103
- align,
104
- edgeSign: -1,
105
- rangeMin,
106
- rangeMax,
107
- })
108
- const xTo = resolveBound({
109
- key: z.to,
110
- omittedEdge: rangeEnd,
111
- xScale,
112
- align,
113
- edgeSign: 1,
114
- rangeMin,
115
- rangeMax,
116
- })
117
- if (xFrom === undefined || xTo === undefined) return null
118
- if (xTo <= xFrom) return null
119
- return (
120
- <rect
121
- key={`xzone-${i}`}
122
- x={xFrom}
123
- y={0}
124
- width={xTo - xFrom}
125
- height={height}
126
- fill={z.fill}
127
- />
128
- )
129
- })}
130
- </>
131
- )
132
- }
@@ -1,67 +0,0 @@
1
- import type { scaleLinear } from '@visx/scale'
2
-
3
- /**
4
- * The linear-scale instance type, derived from `@visx/scale`'s own `scaleLinear` return type.
5
- * Equivalent to d3's `ScaleLinear<number, number>` but resolved through `@visx/scale` (an
6
- * installed dep) so it needs no `@types/d3-scale` and stays inside the visx-only-in-charts boundary.
7
- */
8
- type LinearScale = ReturnType<typeof scaleLinear<number>>
9
-
10
- export type ZoneSpec = {
11
- /** Lower bound on the anchored axis. Use -Infinity for "bottom of axis". */
12
- from: number
13
- /** Upper bound. Use Infinity for "top of axis". */
14
- to: number
15
- fill: string
16
- axisSide?: 'left' | 'right'
17
- }
18
-
19
- /**
20
- * Full-width horizontal zone backgrounds — one <rect> per zone, spanning
21
- * x=[0, width] and y=[scale(to), scale(from)]. Shared by every kind that
22
- * renders target-zone / threshold-zone bands.
23
- *
24
- * `Infinity` / `-Infinity` bounds clamp to the resolved domain of the
25
- * scale so "from: -Infinity" reads as "the bottom of this axis" regardless
26
- * of whether the domain is fixed or auto-computed.
27
- *
28
- * The wrapper picks left vs right scale per zone via `axisSide`; callers
29
- * on single-axis kinds just pass the same scale twice (or leave `rightScale`
30
- * undefined).
31
- */
32
- export function ZoneRects({
33
- zones,
34
- width,
35
- leftScale,
36
- rightScale,
37
- }: {
38
- zones: ZoneSpec[]
39
- /** Plot-area width (xMax); rects span from 0 to this. */
40
- width: number
41
- leftScale: LinearScale
42
- /** Required only when any zone has axisSide='right'. */
43
- rightScale?: LinearScale | null
44
- }) {
45
- return (
46
- <>
47
- {zones.map((z, i) => {
48
- const scale = z.axisSide === 'right' && rightScale ? rightScale : leftScale
49
- const [domainMin, domainMax] = scale.domain() as [number, number]
50
- const zTo = z.to === Infinity ? domainMax : z.to
51
- const zFrom = z.from === -Infinity ? domainMin : z.from
52
- const yTop = scale(zTo)
53
- const yBottom = scale(zFrom)
54
- return (
55
- <rect
56
- key={`zone-${i}`}
57
- x={0}
58
- y={yTop}
59
- width={width}
60
- height={yBottom - yTop}
61
- fill={z.fill}
62
- />
63
- )
64
- })}
65
- </>
66
- )
67
- }