basalt-ui 1.41.0 → 2.0.1

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 (915) hide show
  1. package/AGENTS.md +46 -43
  2. package/CHANGELOG.md +542 -518
  3. package/MIGRATING.md +964 -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 +18 -43
  173. package/dist/cli/config.d.ts.map +1 -1
  174. package/dist/cli/config.js +6 -0
  175. package/dist/cli/doctor-upgrade.d.ts +43 -0
  176. package/dist/cli/doctor-upgrade.d.ts.map +1 -0
  177. package/dist/cli/doctor-upgrade.js +314 -0
  178. package/dist/cli/doctor.d.ts +14 -29
  179. package/dist/cli/doctor.d.ts.map +1 -1
  180. package/dist/cli/doctor.js +58 -9
  181. package/dist/cli/help.d.ts.map +1 -1
  182. package/dist/cli/help.js +2 -4
  183. package/dist/cli/index.d.ts +48 -172
  184. package/dist/cli/index.d.ts.map +1 -1
  185. package/dist/cli/index.js +39 -132
  186. package/dist/cli/init.d.ts.map +1 -1
  187. package/dist/cli/init.js +43 -37
  188. package/dist/cli/sync.d.ts +5 -21
  189. package/dist/cli/sync.d.ts.map +1 -1
  190. package/dist/cli/sync.js +4 -23
  191. package/dist/cli/tokens-css.d.ts +7 -28
  192. package/dist/cli/tokens-css.d.ts.map +1 -1
  193. package/dist/commands/ShortcutsHelp.d.ts.map +1 -1
  194. package/dist/commands/ShortcutsHelp.js +4 -5
  195. package/dist/commands/define-commands.d.ts +15 -31
  196. package/dist/commands/define-commands.d.ts.map +1 -1
  197. package/dist/commands/define-commands.js +1 -11
  198. package/dist/commands/define-overlays.d.ts +5 -19
  199. package/dist/commands/define-overlays.d.ts.map +1 -1
  200. package/dist/commands/define-overlays.js +3 -11
  201. package/dist/commands/index.d.ts +10 -40
  202. package/dist/commands/index.d.ts.map +1 -1
  203. package/dist/commands/index.js +9 -46
  204. package/dist/{notifications → commands/notifications}/bell.d.ts +1 -1
  205. package/dist/commands/notifications/bell.d.ts.map +1 -0
  206. package/dist/{notifications → commands/notifications}/center.d.ts +2 -2
  207. package/dist/commands/notifications/center.d.ts.map +1 -0
  208. package/dist/{notifications → commands/notifications}/center.js +2 -2
  209. package/dist/{notifications → commands/notifications}/define-notifications.d.ts +3 -3
  210. package/dist/commands/notifications/define-notifications.d.ts.map +1 -0
  211. package/dist/commands/notifications/notify.d.ts +44 -0
  212. package/dist/commands/notifications/notify.d.ts.map +1 -0
  213. package/dist/commands/notifications/notify.js +79 -0
  214. package/dist/{notifications → commands/notifications}/store.d.ts +2 -0
  215. package/dist/commands/notifications/store.d.ts.map +1 -0
  216. package/dist/{notifications → commands/notifications}/store.js +4 -0
  217. package/dist/commands/projectors.d.ts +1 -131
  218. package/dist/commands/projectors.d.ts.map +1 -1
  219. package/dist/commands/projectors.js +2 -73
  220. package/dist/commands/shell-bridge.d.ts +3 -3
  221. package/dist/commands/shortcut-format.d.ts +5 -4
  222. package/dist/commands/shortcut-format.d.ts.map +1 -1
  223. package/dist/common/errors.d.ts +3 -3
  224. package/dist/common/use-measured-widths.d.ts.map +1 -1
  225. package/dist/common/use-measured-widths.js +5 -3
  226. package/dist/common/validate.d.ts +2 -2
  227. package/dist/content/article-layout.d.ts.map +1 -1
  228. package/dist/content/article-layout.js +3 -3
  229. package/dist/content/article-model.d.ts +1 -46
  230. package/dist/content/article-model.d.ts.map +1 -1
  231. package/dist/content/article-model.js +1 -29
  232. package/dist/content/index.d.ts +11 -41
  233. package/dist/content/index.d.ts.map +1 -1
  234. package/dist/content/index.js +3 -35
  235. package/dist/content/markdown.d.ts +1 -1
  236. package/dist/content/markdown.d.ts.map +1 -1
  237. package/dist/content/markdown.js +1 -1
  238. package/dist/content/mermaid.d.ts.map +1 -1
  239. package/dist/content/mermaid.js +7 -7
  240. package/dist/content/slug.d.ts +1 -8
  241. package/dist/content/slug.d.ts.map +1 -1
  242. package/dist/content/slug.js +1 -8
  243. package/dist/content/url-hardening.d.ts +2 -2
  244. package/dist/content/url-hardening.d.ts.map +1 -1
  245. package/dist/content/url-hardening.js +2 -0
  246. package/dist/controls/actions.d.ts +16 -1
  247. package/dist/controls/actions.d.ts.map +1 -1
  248. package/dist/controls/enum-filter.d.ts +1 -1
  249. package/dist/controls/enum-filter.d.ts.map +1 -1
  250. package/dist/controls/filter-context.d.ts.map +1 -1
  251. package/dist/controls/filter-context.js +3 -1
  252. package/dist/controls/filter-set.js +4 -6
  253. package/dist/controls/form-layout.d.ts +1 -1
  254. package/dist/controls/form-layout.d.ts.map +1 -1
  255. package/dist/controls/form-layout.js +1 -1
  256. package/dist/controls/glyphs.d.ts +0 -2
  257. package/dist/controls/glyphs.d.ts.map +1 -1
  258. package/dist/controls/glyphs.js +0 -7
  259. package/dist/controls/index.d.ts +12 -17
  260. package/dist/controls/index.d.ts.map +1 -1
  261. package/dist/controls/index.js +5 -39
  262. package/dist/controls/multi-select-filter.d.ts +4 -3
  263. package/dist/controls/multi-select-filter.d.ts.map +1 -1
  264. package/dist/controls/number-filter.d.ts +4 -3
  265. package/dist/controls/number-filter.d.ts.map +1 -1
  266. package/dist/controls/number-filter.js +3 -1
  267. package/dist/controls/range-filter.d.ts +4 -3
  268. package/dist/controls/range-filter.d.ts.map +1 -1
  269. package/dist/controls/search-filter.d.ts +4 -3
  270. package/dist/controls/search-filter.d.ts.map +1 -1
  271. package/dist/controls/search-filter.js +19 -14
  272. package/dist/controls/select-filter.d.ts +4 -3
  273. package/dist/controls/select-filter.d.ts.map +1 -1
  274. package/dist/controls/sync-button.d.ts.map +1 -1
  275. package/dist/controls/sync-button.js +12 -15
  276. package/dist/controls/toggle-filter.d.ts +4 -3
  277. package/dist/controls/toggle-filter.d.ts.map +1 -1
  278. package/dist/controls/uncontrolled.d.ts +12 -0
  279. package/dist/controls/uncontrolled.d.ts.map +1 -0
  280. package/dist/controls/view-tabs.d.ts +2 -2
  281. package/dist/controls/view-tabs.d.ts.map +1 -1
  282. package/dist/controls-dates/index.d.ts +0 -1
  283. package/dist/controls-dates/index.d.ts.map +1 -1
  284. package/dist/dashboard/index.d.ts +7 -9
  285. package/dist/dashboard/index.d.ts.map +1 -1
  286. package/dist/dashboard/index.js +3 -23
  287. package/dist/dashboard/section.d.ts +4 -6
  288. package/dist/dashboard/section.d.ts.map +1 -1
  289. package/dist/dashboard/section.js +4 -10
  290. package/dist/dashboard/stat-card.d.ts +4 -4
  291. package/dist/dashboard/stat-card.d.ts.map +1 -1
  292. package/dist/dashboard/stat-card.js +3 -3
  293. package/dist/dashboard/widget-header.module.css +9 -7
  294. package/dist/dev-dock.d.ts.map +1 -1
  295. package/dist/dev-dock.js +6 -1
  296. package/dist/format/date.d.ts +0 -34
  297. package/dist/format/date.d.ts.map +1 -1
  298. package/dist/format/date.js +0 -54
  299. package/dist/format/index.d.ts +7 -22
  300. package/dist/format/index.d.ts.map +1 -1
  301. package/dist/format/index.js +2 -43
  302. package/dist/format/number.d.ts +3 -14
  303. package/dist/format/number.d.ts.map +1 -1
  304. package/dist/format/number.js +0 -13
  305. package/dist/format/shared.d.ts +2 -3
  306. package/dist/format/shared.d.ts.map +1 -1
  307. package/dist/forms/index.d.ts +0 -11
  308. package/dist/forms/index.d.ts.map +1 -1
  309. package/dist/forms/index.js +1 -14
  310. package/dist/guard/index.d.ts +6 -21
  311. package/dist/guard/index.d.ts.map +1 -1
  312. package/dist/guard/index.js +27 -115
  313. package/dist/guard/types.d.ts +7 -18
  314. package/dist/guard/types.d.ts.map +1 -1
  315. package/dist/index.d.ts +16 -48
  316. package/dist/index.d.ts.map +1 -1
  317. package/dist/index.js +21 -117
  318. package/dist/provider/create-router.d.ts +44 -0
  319. package/dist/provider/create-router.d.ts.map +1 -0
  320. package/dist/provider/create-router.js +62 -0
  321. package/dist/provider/hotkeys.d.ts +8 -0
  322. package/dist/provider/hotkeys.d.ts.map +1 -0
  323. package/dist/provider/hotkeys.js +50 -0
  324. package/dist/provider/index.d.ts +33 -110
  325. package/dist/provider/index.d.ts.map +1 -1
  326. package/dist/provider/index.js +182 -82
  327. package/dist/provider/lab-theme.d.ts.map +1 -1
  328. package/dist/provider/route-transition.d.ts +76 -0
  329. package/dist/provider/route-transition.d.ts.map +1 -0
  330. package/dist/provider/route-transition.js +98 -0
  331. package/dist/provider/spotlight-actions.d.ts +10 -0
  332. package/dist/provider/spotlight-actions.d.ts.map +1 -0
  333. package/dist/provider/spotlight-actions.js +55 -0
  334. package/dist/provider/test-router.d.ts +6 -0
  335. package/dist/provider/test-router.d.ts.map +1 -0
  336. package/dist/provider/test-router.js +18 -0
  337. package/dist/query-client.d.ts +4 -20
  338. package/dist/query-client.d.ts.map +1 -1
  339. package/dist/query-client.js +2 -2
  340. package/dist/router-tanstack/index.d.ts +18 -64
  341. package/dist/router-tanstack/index.d.ts.map +1 -1
  342. package/dist/router-tanstack/index.js +2 -16
  343. package/dist/router-tanstack/nav.d.ts +12 -1
  344. package/dist/router-tanstack/nav.d.ts.map +1 -1
  345. package/dist/router-tanstack/nav.js +8 -1
  346. package/dist/router-tanstack/search-store.d.ts +1 -1
  347. package/dist/router-tanstack/search-store.d.ts.map +1 -1
  348. package/dist/router-tanstack/use-nav.d.ts +8 -9
  349. package/dist/router-tanstack/use-nav.d.ts.map +1 -1
  350. package/dist/router-tanstack/use-nav.js +20 -1
  351. package/dist/shell/app-mobile-nav.d.ts.map +1 -1
  352. package/dist/shell/app-sidebar.js +1 -1
  353. package/dist/shell/index.d.ts +31 -10
  354. package/dist/shell/index.d.ts.map +1 -1
  355. package/dist/shell/index.js +14 -3
  356. package/dist/shell/page-aside.d.ts +2 -2
  357. package/dist/shell/page-aside.d.ts.map +1 -1
  358. package/dist/shell/page-aside.js +31 -12
  359. package/dist/shell/page-bar.d.ts +2 -2
  360. package/dist/shell/page-bar.d.ts.map +1 -1
  361. package/dist/shell/page-bar.js +1 -1
  362. package/dist/state.d.ts +10 -12
  363. package/dist/state.d.ts.map +1 -1
  364. package/dist/state.js +4 -6
  365. package/dist/styles.css +107 -7
  366. package/dist/surfaces.d.ts +28 -103
  367. package/dist/surfaces.d.ts.map +1 -1
  368. package/dist/surfaces.js +54 -143
  369. package/dist/{data → table}/data-table-state.d.ts +1 -1
  370. package/dist/table/data-table-state.d.ts.map +1 -0
  371. package/dist/{data → table}/data-table-state.js +4 -3
  372. package/dist/{data → table}/data-table.d.ts +28 -49
  373. package/dist/table/data-table.d.ts.map +1 -0
  374. package/dist/{data → table}/data-table.js +74 -60
  375. package/dist/table/index.d.ts +18 -0
  376. package/dist/table/index.d.ts.map +1 -0
  377. package/dist/{data/table.js → table/index.js} +1 -1
  378. package/dist/table/query-branch.d.ts.map +1 -0
  379. package/dist/table/table-features.d.ts +69 -0
  380. package/dist/table/table-features.d.ts.map +1 -0
  381. package/dist/table/table-features.js +49 -0
  382. package/dist/telemetry.d.ts +77 -0
  383. package/dist/telemetry.d.ts.map +1 -0
  384. package/dist/telemetry.js +33 -0
  385. package/dist/theme/index.d.ts +10 -21
  386. package/dist/theme/index.d.ts.map +1 -1
  387. package/dist/theme/index.js +3 -14
  388. package/dist/theme/theme-toggle.d.ts.map +1 -1
  389. package/dist/theme/theme-toggle.js +7 -33
  390. package/dist/theme/theme-toggle.module.css +30 -0
  391. package/dist/theme/theme-toggle.module.css.d.ts +10 -0
  392. package/dist/theme-lab/derive-controls.d.ts.map +1 -1
  393. package/dist/theme-lab/derive-controls.js +5 -3
  394. package/dist/theme-lab/derive-state.d.ts.map +1 -1
  395. package/dist/theme-lab/derive-state.js +2 -1
  396. package/dist/tokens/core.d.ts +360 -0
  397. package/dist/tokens/core.d.ts.map +1 -0
  398. package/dist/tokens/core.js +708 -0
  399. package/dist/tokens/derive.d.ts +1 -1
  400. package/dist/tokens/derive.d.ts.map +1 -1
  401. package/dist/tokens/index.d.ts +5 -373
  402. package/dist/tokens/index.d.ts.map +1 -1
  403. package/dist/tokens/index.js +8 -700
  404. package/dist/tokens/palette.d.ts +2 -6
  405. package/dist/tokens/palette.d.ts.map +1 -1
  406. package/dist/tokens/palette.js +1 -4
  407. package/dist/vite.d.ts +4 -3
  408. package/dist/vite.d.ts.map +1 -1
  409. package/llms.txt +43 -85
  410. package/package.json +80 -173
  411. package/src/agent/ai-sdk-transport.ts +57 -37
  412. package/src/{agent-chat → agent/chat}/composer.tsx +29 -30
  413. package/src/{agent-chat → agent/chat}/message-affordances.ts +8 -5
  414. package/src/{agent-chat → agent/chat}/thread-feed-row.tsx +30 -35
  415. package/src/{agent-chat → agent/chat}/thread-feed.tsx +40 -35
  416. package/src/{agent-chat → agent/chat}/thread-message.tsx +37 -35
  417. package/src/{agent-chat → agent/chat}/thread-outcome-card.tsx +5 -5
  418. package/src/{agent-chat → agent/chat}/tool-chip.tsx +12 -12
  419. package/src/{agent-chat → agent/chat}/use-keyboard-inset.ts +1 -1
  420. package/src/{agent-chat → agent/chat}/virtualize.ts +5 -5
  421. package/src/agent/error.ts +43 -0
  422. package/src/agent/history.ts +2 -107
  423. package/src/agent/id.ts +4 -5
  424. package/src/agent/index.ts +23 -112
  425. package/src/agent/outcome.ts +3 -56
  426. package/src/agent/part-list.tsx +3 -3
  427. package/src/agent/parts.ts +23 -22
  428. package/src/agent/run-committer.ts +64 -0
  429. package/src/agent/run-records.ts +147 -0
  430. package/src/agent/thread.ts +24 -231
  431. package/src/agent/transport.ts +6 -96
  432. package/src/agent/use-agent-thread-runs.ts +364 -199
  433. package/src/charts/BandStrip.tsx +276 -0
  434. package/src/charts/Bars.tsx +141 -0
  435. package/src/charts/CartesianChart.tsx +206 -0
  436. package/src/charts/ChartCard.tsx +178 -0
  437. package/src/charts/Donut.tsx +256 -0
  438. package/src/charts/DualPanel.tsx +326 -0
  439. package/src/charts/Heatmap.tsx +282 -0
  440. package/src/charts/Lines.tsx +151 -0
  441. package/src/charts/MirroredBars.tsx +303 -0
  442. package/src/charts/Sparkline.tsx +176 -0
  443. package/src/charts/StackedArea.tsx +80 -0
  444. package/src/charts/box.tsx +96 -0
  445. package/src/charts/card-context.ts +11 -0
  446. package/src/charts/chart-box.module.css +64 -0
  447. package/src/charts/chart-box.module.css.d.ts +12 -0
  448. package/src/charts/chart-card.module.css +25 -0
  449. package/src/charts/chart-card.module.css.d.ts +8 -0
  450. package/src/charts/chart-legend.module.css +38 -0
  451. package/src/charts/chart-legend.module.css.d.ts +10 -0
  452. package/src/charts/compile.ts +585 -0
  453. package/src/charts/cursor.ts +282 -0
  454. package/src/charts/curves.ts +111 -0
  455. package/src/charts/donut.module.css +54 -0
  456. package/src/charts/donut.module.css.d.ts +9 -0
  457. package/src/charts/host.tsx +60 -0
  458. package/src/charts/index.ts +41 -178
  459. package/src/charts/legend.tsx +204 -0
  460. package/src/charts/marks.ts +201 -0
  461. package/src/charts/panel.tsx +227 -0
  462. package/src/charts/scales.ts +237 -0
  463. package/src/charts/sizing.ts +47 -0
  464. package/src/charts/state.tsx +80 -0
  465. package/src/charts/theme.ts +65 -0
  466. package/src/charts/types.ts +242 -0
  467. package/src/cli/audit-allows.ts +8 -30
  468. package/src/cli/config.ts +26 -43
  469. package/src/cli/doctor-upgrade.ts +457 -0
  470. package/src/cli/doctor.ts +89 -72
  471. package/src/cli/help.ts +2 -4
  472. package/src/cli/index.ts +100 -384
  473. package/src/cli/init.ts +60 -51
  474. package/src/cli/sync.ts +13 -68
  475. package/src/cli/tokens-css.ts +7 -28
  476. package/src/commands/ShortcutsHelp.tsx +8 -9
  477. package/src/commands/define-commands.ts +16 -43
  478. package/src/commands/define-overlays.ts +12 -36
  479. package/src/commands/index.ts +11 -94
  480. package/src/{notifications → commands/notifications}/bell.tsx +2 -2
  481. package/src/{notifications → commands/notifications}/center.tsx +7 -5
  482. package/src/{notifications → commands/notifications}/define-notifications.ts +3 -3
  483. package/src/commands/notifications/notify.tsx +158 -0
  484. package/src/{notifications → commands/notifications}/store.ts +10 -2
  485. package/src/commands/projectors.ts +5 -225
  486. package/src/commands/shell-bridge.ts +5 -5
  487. package/src/commands/shortcut-format.ts +5 -4
  488. package/src/common/errors.ts +3 -3
  489. package/src/common/use-measured-widths.ts +6 -3
  490. package/src/common/validate.ts +2 -2
  491. package/src/content/article-layout.tsx +37 -38
  492. package/src/content/article-model.ts +1 -84
  493. package/src/content/index.ts +12 -83
  494. package/src/content/markdown.tsx +4 -3
  495. package/src/content/mermaid.tsx +9 -7
  496. package/src/content/slug.ts +1 -16
  497. package/src/content/url-hardening.ts +8 -2
  498. package/src/controls/actions.tsx +24 -1
  499. package/src/controls/enum-filter.tsx +1 -1
  500. package/src/controls/filter-context.tsx +3 -1
  501. package/src/controls/filter-set.tsx +5 -7
  502. package/src/controls/form-layout.tsx +2 -2
  503. package/src/controls/glyphs.tsx +0 -10
  504. package/src/controls/index.ts +13 -64
  505. package/src/controls/multi-select-filter.tsx +5 -4
  506. package/src/controls/number-filter.tsx +8 -4
  507. package/src/controls/range-filter.tsx +5 -4
  508. package/src/controls/search-filter.tsx +25 -19
  509. package/src/controls/select-filter.tsx +5 -4
  510. package/src/controls/sync-button.tsx +18 -20
  511. package/src/controls/toggle-filter.tsx +5 -4
  512. package/src/controls/uncontrolled.ts +12 -0
  513. package/src/controls/view-tabs.tsx +3 -3
  514. package/src/controls-dates/date-range-picker.tsx +1 -1
  515. package/src/controls-dates/index.ts +0 -1
  516. package/src/dashboard/index.ts +7 -48
  517. package/src/dashboard/section.tsx +11 -40
  518. package/src/dashboard/stat-card.tsx +14 -16
  519. package/src/dashboard/widget-header.module.css +9 -7
  520. package/src/dev-dock.tsx +14 -27
  521. package/src/format/date.ts +2 -92
  522. package/src/format/index.ts +7 -53
  523. package/src/format/number.ts +3 -26
  524. package/src/format/shared.ts +2 -3
  525. package/src/forms/index.ts +0 -23
  526. package/src/guard/index.ts +36 -191
  527. package/src/guard/types.ts +6 -19
  528. package/src/index.ts +30 -282
  529. package/src/provider/create-router.tsx +138 -0
  530. package/src/provider/hotkeys.ts +70 -0
  531. package/src/provider/index.tsx +260 -230
  532. package/src/provider/lab-theme.ts +3 -2
  533. package/src/provider/route-transition.ts +199 -0
  534. package/src/provider/spotlight-actions.tsx +69 -0
  535. package/src/provider/test-router.tsx +25 -0
  536. package/src/query-client.ts +4 -22
  537. package/src/router-tanstack/index.ts +18 -112
  538. package/src/router-tanstack/nav.ts +28 -2
  539. package/src/router-tanstack/search-store.ts +9 -2
  540. package/src/router-tanstack/use-nav.ts +47 -13
  541. package/src/shell/app-mobile-nav.tsx +3 -2
  542. package/src/shell/app-sidebar.tsx +1 -1
  543. package/src/shell/aside-docking.ts +1 -1
  544. package/src/shell/index.tsx +61 -20
  545. package/src/shell/page-aside.tsx +47 -23
  546. package/src/shell/page-bar.tsx +3 -3
  547. package/src/shell/page-title.tsx +1 -1
  548. package/src/state.ts +11 -37
  549. package/src/styles.css +107 -7
  550. package/src/surfaces.ts +56 -151
  551. package/src/{data → table}/data-table-state.ts +5 -4
  552. package/src/{data → table}/data-table.tsx +170 -161
  553. package/src/table/index.ts +18 -0
  554. package/src/table/table-features.ts +102 -0
  555. package/src/telemetry.ts +110 -0
  556. package/src/theme/index.ts +22 -47
  557. package/src/theme/theme-toggle.module.css +30 -0
  558. package/src/theme/theme-toggle.module.css.d.ts +10 -0
  559. package/src/theme/theme-toggle.tsx +15 -43
  560. package/src/theme-lab/derive-controls.tsx +5 -3
  561. package/src/theme-lab/derive-state.ts +2 -1
  562. package/src/tokens/core.ts +1163 -0
  563. package/src/tokens/derive.ts +1 -1
  564. package/src/tokens/index.ts +14 -1181
  565. package/src/tokens/palette.ts +3 -7
  566. package/src/vite.ts +3 -3
  567. package/agent/templates/query-client.ts.tpl +0 -26
  568. package/dist/agent/adapter.d.ts +0 -150
  569. package/dist/agent/adapter.d.ts.map +0 -1
  570. package/dist/agent/adapter.js +0 -482
  571. package/dist/agent/use-agent-stream.d.ts +0 -35
  572. package/dist/agent/use-agent-stream.d.ts.map +0 -1
  573. package/dist/agent/use-agent-stream.js +0 -59
  574. package/dist/agent-chat/composer.d.ts.map +0 -1
  575. package/dist/agent-chat/index.d.ts +0 -31
  576. package/dist/agent-chat/index.d.ts.map +0 -1
  577. package/dist/agent-chat/index.js +0 -19
  578. package/dist/agent-chat/message-affordances.d.ts.map +0 -1
  579. package/dist/agent-chat/relative-time.d.ts.map +0 -1
  580. package/dist/agent-chat/thread-detail-panel.d.ts +0 -28
  581. package/dist/agent-chat/thread-detail-panel.d.ts.map +0 -1
  582. package/dist/agent-chat/thread-detail-panel.js +0 -115
  583. package/dist/agent-chat/thread-feed-row.d.ts.map +0 -1
  584. package/dist/agent-chat/thread-feed.d.ts.map +0 -1
  585. package/dist/agent-chat/thread-message.d.ts.map +0 -1
  586. package/dist/agent-chat/thread-outcome-card.d.ts.map +0 -1
  587. package/dist/agent-chat/thread-workspace.d.ts +0 -44
  588. package/dist/agent-chat/thread-workspace.d.ts.map +0 -1
  589. package/dist/agent-chat/thread-workspace.js +0 -153
  590. package/dist/agent-chat/tool-chip.d.ts.map +0 -1
  591. package/dist/agent-chat/use-keyboard-inset.d.ts.map +0 -1
  592. package/dist/agent-chat/virtualize.d.ts.map +0 -1
  593. package/dist/charts/cursor/resolve.d.ts +0 -75
  594. package/dist/charts/cursor/resolve.d.ts.map +0 -1
  595. package/dist/charts/cursor/resolve.js +0 -91
  596. package/dist/charts/cursor/scope.d.ts +0 -20
  597. package/dist/charts/cursor/scope.d.ts.map +0 -1
  598. package/dist/charts/cursor/scope.js +0 -20
  599. package/dist/charts/cursor/store.d.ts +0 -35
  600. package/dist/charts/cursor/store.d.ts.map +0 -1
  601. package/dist/charts/cursor/store.js +0 -25
  602. package/dist/charts/cursor/touch-pin.d.ts +0 -45
  603. package/dist/charts/cursor/touch-pin.d.ts.map +0 -1
  604. package/dist/charts/cursor/touch-pin.js +0 -79
  605. package/dist/charts/hooks/use-discrete-cursor.d.ts +0 -66
  606. package/dist/charts/hooks/use-discrete-cursor.d.ts.map +0 -1
  607. package/dist/charts/hooks/use-discrete-cursor.js +0 -198
  608. package/dist/charts/hooks/use-hysteresis.d.ts +0 -18
  609. package/dist/charts/hooks/use-hysteresis.d.ts.map +0 -1
  610. package/dist/charts/hooks/use-hysteresis.js +0 -12
  611. package/dist/charts/hooks/useBandPlot.d.ts +0 -145
  612. package/dist/charts/hooks/useBandPlot.d.ts.map +0 -1
  613. package/dist/charts/hooks/useBandPlot.js +0 -178
  614. package/dist/charts/hooks/useChartCursor.d.ts +0 -75
  615. package/dist/charts/hooks/useChartCursor.d.ts.map +0 -1
  616. package/dist/charts/hooks/useChartCursor.js +0 -200
  617. package/dist/charts/hooks/useChartSize.d.ts +0 -29
  618. package/dist/charts/hooks/useChartSize.d.ts.map +0 -1
  619. package/dist/charts/hooks/useChartSize.js +0 -8
  620. package/dist/charts/kinds/BandStrip.d.ts +0 -132
  621. package/dist/charts/kinds/BandStrip.d.ts.map +0 -1
  622. package/dist/charts/kinds/BandStrip.js +0 -241
  623. package/dist/charts/kinds/Bars.d.ts +0 -141
  624. package/dist/charts/kinds/Bars.d.ts.map +0 -1
  625. package/dist/charts/kinds/Bars.js +0 -343
  626. package/dist/charts/kinds/Donut.d.ts +0 -77
  627. package/dist/charts/kinds/Donut.d.ts.map +0 -1
  628. package/dist/charts/kinds/Donut.js +0 -245
  629. package/dist/charts/kinds/DualPanel.d.ts +0 -111
  630. package/dist/charts/kinds/DualPanel.d.ts.map +0 -1
  631. package/dist/charts/kinds/DualPanel.js +0 -471
  632. package/dist/charts/kinds/Heatmap.d.ts +0 -85
  633. package/dist/charts/kinds/Heatmap.d.ts.map +0 -1
  634. package/dist/charts/kinds/Heatmap.js +0 -243
  635. package/dist/charts/kinds/MirroredBars.d.ts +0 -98
  636. package/dist/charts/kinds/MirroredBars.d.ts.map +0 -1
  637. package/dist/charts/kinds/MirroredBars.js +0 -292
  638. package/dist/charts/kinds/MultiLine.d.ts +0 -87
  639. package/dist/charts/kinds/MultiLine.d.ts.map +0 -1
  640. package/dist/charts/kinds/MultiLine.js +0 -176
  641. package/dist/charts/kinds/StackedArea.d.ts +0 -73
  642. package/dist/charts/kinds/StackedArea.d.ts.map +0 -1
  643. package/dist/charts/kinds/StackedArea.js +0 -135
  644. package/dist/charts/kinds/ZonedLine.d.ts +0 -97
  645. package/dist/charts/kinds/ZonedLine.d.ts.map +0 -1
  646. package/dist/charts/kinds/ZonedLine.js +0 -155
  647. package/dist/charts/kinds/band-chrome.d.ts +0 -31
  648. package/dist/charts/kinds/band-chrome.d.ts.map +0 -1
  649. package/dist/charts/kinds/band-chrome.js +0 -71
  650. package/dist/charts/kinds/donut-layout.d.ts +0 -47
  651. package/dist/charts/kinds/donut-layout.d.ts.map +0 -1
  652. package/dist/charts/kinds/donut-layout.js +0 -52
  653. package/dist/charts/layout/auto-margin.d.ts +0 -122
  654. package/dist/charts/layout/auto-margin.d.ts.map +0 -1
  655. package/dist/charts/layout/auto-margin.js +0 -81
  656. package/dist/charts/layout/end-labels.d.ts +0 -64
  657. package/dist/charts/layout/end-labels.d.ts.map +0 -1
  658. package/dist/charts/layout/end-labels.js +0 -76
  659. package/dist/charts/layout/log-ticks.d.ts +0 -27
  660. package/dist/charts/layout/log-ticks.d.ts.map +0 -1
  661. package/dist/charts/layout/log-ticks.js +0 -42
  662. package/dist/charts/primitives/AreaGradient.d.ts +0 -18
  663. package/dist/charts/primitives/AreaGradient.d.ts.map +0 -1
  664. package/dist/charts/primitives/AreaGradient.js +0 -13
  665. package/dist/charts/primitives/Axes.d.ts +0 -83
  666. package/dist/charts/primitives/Axes.d.ts.map +0 -1
  667. package/dist/charts/primitives/Axes.js +0 -168
  668. package/dist/charts/primitives/CartesianChart.d.ts +0 -257
  669. package/dist/charts/primitives/CartesianChart.d.ts.map +0 -1
  670. package/dist/charts/primitives/CartesianChart.js +0 -549
  671. package/dist/charts/primitives/ChartCard.d.ts +0 -66
  672. package/dist/charts/primitives/ChartCard.d.ts.map +0 -1
  673. package/dist/charts/primitives/ChartCard.js +0 -143
  674. package/dist/charts/primitives/ChartFrame.d.ts +0 -156
  675. package/dist/charts/primitives/ChartFrame.d.ts.map +0 -1
  676. package/dist/charts/primitives/ChartFrame.js +0 -241
  677. package/dist/charts/primitives/ChartLegend.d.ts +0 -67
  678. package/dist/charts/primitives/ChartLegend.d.ts.map +0 -1
  679. package/dist/charts/primitives/ChartLegend.js +0 -292
  680. package/dist/charts/primitives/ChartPending.d.ts +0 -113
  681. package/dist/charts/primitives/ChartPending.d.ts.map +0 -1
  682. package/dist/charts/primitives/ChartPending.js +0 -117
  683. package/dist/charts/primitives/ChartTooltip.d.ts +0 -59
  684. package/dist/charts/primitives/ChartTooltip.d.ts.map +0 -1
  685. package/dist/charts/primitives/ChartTooltip.js +0 -197
  686. package/dist/charts/primitives/Crosshair.d.ts +0 -26
  687. package/dist/charts/primitives/Crosshair.d.ts.map +0 -1
  688. package/dist/charts/primitives/Crosshair.js +0 -23
  689. package/dist/charts/primitives/HatchPattern.d.ts +0 -31
  690. package/dist/charts/primitives/HatchPattern.d.ts.map +0 -1
  691. package/dist/charts/primitives/HatchPattern.js +0 -31
  692. package/dist/charts/primitives/HoverOverlay.d.ts +0 -45
  693. package/dist/charts/primitives/HoverOverlay.d.ts.map +0 -1
  694. package/dist/charts/primitives/HoverOverlay.js +0 -72
  695. package/dist/charts/primitives/HoverOverlay.module.css +0 -13
  696. package/dist/charts/primitives/HoverOverlay.module.css.d.ts +0 -8
  697. package/dist/charts/primitives/XZoneRects.d.ts +0 -54
  698. package/dist/charts/primitives/XZoneRects.d.ts.map +0 -1
  699. package/dist/charts/primitives/XZoneRects.js +0 -65
  700. package/dist/charts/primitives/ZoneRects.d.ts +0 -38
  701. package/dist/charts/primitives/ZoneRects.d.ts.map +0 -1
  702. package/dist/charts/primitives/ZoneRects.js +0 -30
  703. package/dist/charts/primitives/chart-card-context.d.ts +0 -33
  704. package/dist/charts/primitives/chart-card-context.d.ts.map +0 -1
  705. package/dist/charts/primitives/chart-card-context.js +0 -18
  706. package/dist/charts/primitives/chart-frame-layout.d.ts +0 -185
  707. package/dist/charts/primitives/chart-frame-layout.d.ts.map +0 -1
  708. package/dist/charts/primitives/chart-frame-layout.js +0 -175
  709. package/dist/charts/primitives/chart-layout.d.ts +0 -112
  710. package/dist/charts/primitives/chart-layout.d.ts.map +0 -1
  711. package/dist/charts/primitives/chart-layout.js +0 -175
  712. package/dist/charts/primitives/chart-tier.d.ts +0 -16
  713. package/dist/charts/primitives/chart-tier.d.ts.map +0 -1
  714. package/dist/charts/primitives/chart-tier.js +0 -44
  715. package/dist/charts/primitives/legend-disclosure.d.ts +0 -27
  716. package/dist/charts/primitives/legend-disclosure.d.ts.map +0 -1
  717. package/dist/charts/primitives/legend-disclosure.js +0 -153
  718. package/dist/charts/series.d.ts +0 -189
  719. package/dist/charts/series.d.ts.map +0 -1
  720. package/dist/charts/series.js +0 -84
  721. package/dist/charts/sparklines/BarSparkline.d.ts +0 -37
  722. package/dist/charts/sparklines/BarSparkline.d.ts.map +0 -1
  723. package/dist/charts/sparklines/BarSparkline.js +0 -53
  724. package/dist/charts/sparklines/LineSparkline.d.ts +0 -15
  725. package/dist/charts/sparklines/LineSparkline.d.ts.map +0 -1
  726. package/dist/charts/sparklines/LineSparkline.js +0 -51
  727. package/dist/charts/sparklines/index.d.ts +0 -3
  728. package/dist/charts/sparklines/index.d.ts.map +0 -1
  729. package/dist/charts/sparklines/index.js +0 -6
  730. package/dist/charts/utils/domain.d.ts +0 -35
  731. package/dist/charts/utils/domain.d.ts.map +0 -1
  732. package/dist/charts/utils/domain.js +0 -12
  733. package/dist/charts/utils/format.d.ts +0 -8
  734. package/dist/charts/utils/format.d.ts.map +0 -1
  735. package/dist/charts/utils/format.js +0 -20
  736. package/dist/charts/utils/measure-text.d.ts +0 -25
  737. package/dist/charts/utils/measure-text.d.ts.map +0 -1
  738. package/dist/charts/utils/measure-text.js +0 -64
  739. package/dist/charts/utils/ticks.d.ts +0 -103
  740. package/dist/charts/utils/ticks.d.ts.map +0 -1
  741. package/dist/charts/utils/ticks.js +0 -92
  742. package/dist/commands/overlays-mount.d.ts +0 -122
  743. package/dist/commands/overlays-mount.d.ts.map +0 -1
  744. package/dist/commands/overlays-mount.js +0 -125
  745. package/dist/commands/useCommandHotkeys.d.ts +0 -14
  746. package/dist/commands/useCommandHotkeys.d.ts.map +0 -1
  747. package/dist/commands/useCommandHotkeys.js +0 -45
  748. package/dist/content/article-actions.d.ts +0 -39
  749. package/dist/content/article-actions.d.ts.map +0 -1
  750. package/dist/content/article-actions.js +0 -28
  751. package/dist/content/article-card.d.ts +0 -58
  752. package/dist/content/article-card.d.ts.map +0 -1
  753. package/dist/content/article-card.js +0 -79
  754. package/dist/content/article-card.module.css +0 -111
  755. package/dist/content/mdx.d.ts +0 -20
  756. package/dist/content/mdx.d.ts.map +0 -1
  757. package/dist/content/mdx.js +0 -64
  758. package/dist/controls/compare-filter.d.ts +0 -42
  759. package/dist/controls/compare-filter.d.ts.map +0 -1
  760. package/dist/controls/compare-filter.js +0 -38
  761. package/dist/controls/slider-control.d.ts +0 -36
  762. package/dist/controls/slider-control.d.ts.map +0 -1
  763. package/dist/controls/slider-control.js +0 -64
  764. package/dist/dashboard/widget-grid.d.ts +0 -27
  765. package/dist/dashboard/widget-grid.d.ts.map +0 -1
  766. package/dist/dashboard/widget-grid.js +0 -40
  767. package/dist/dashboard/widget-grid.module.css +0 -69
  768. package/dist/data/data-table-state.d.ts.map +0 -1
  769. package/dist/data/data-table.d.ts.map +0 -1
  770. package/dist/data/query-branch.d.ts.map +0 -1
  771. package/dist/data/table.d.ts +0 -24
  772. package/dist/data/table.d.ts.map +0 -1
  773. package/dist/data/virtual-list.d.ts +0 -133
  774. package/dist/data/virtual-list.d.ts.map +0 -1
  775. package/dist/data/virtual-list.js +0 -157
  776. package/dist/data/virtual.d.ts +0 -21
  777. package/dist/data/virtual.d.ts.map +0 -1
  778. package/dist/data/virtual.js +0 -4
  779. package/dist/forms/FormErrorSummary.d.ts +0 -30
  780. package/dist/forms/FormErrorSummary.d.ts.map +0 -1
  781. package/dist/forms/FormErrorSummary.js +0 -30
  782. package/dist/forms/use-field-array.d.ts +0 -60
  783. package/dist/forms/use-field-array.d.ts.map +0 -1
  784. package/dist/forms/use-field-array.js +0 -20
  785. package/dist/forms/use-form-draft.d.ts +0 -76
  786. package/dist/forms/use-form-draft.d.ts.map +0 -1
  787. package/dist/forms/use-form-draft.js +0 -92
  788. package/dist/forms/use-form-submit.d.ts +0 -88
  789. package/dist/forms/use-form-submit.d.ts.map +0 -1
  790. package/dist/forms/use-form-submit.js +0 -63
  791. package/dist/notifications/bell.d.ts.map +0 -1
  792. package/dist/notifications/center.d.ts.map +0 -1
  793. package/dist/notifications/define-notifications.d.ts.map +0 -1
  794. package/dist/notifications/index.d.ts +0 -40
  795. package/dist/notifications/index.d.ts.map +0 -1
  796. package/dist/notifications/index.js +0 -54
  797. package/dist/notifications/mount-guard.d.ts +0 -8
  798. package/dist/notifications/mount-guard.d.ts.map +0 -1
  799. package/dist/notifications/mount-guard.js +0 -18
  800. package/dist/notifications/notify.d.ts +0 -149
  801. package/dist/notifications/notify.d.ts.map +0 -1
  802. package/dist/notifications/notify.js +0 -171
  803. package/dist/notifications/store.d.ts.map +0 -1
  804. package/dist/provider/connectivity-indicator.d.ts +0 -13
  805. package/dist/provider/connectivity-indicator.d.ts.map +0 -1
  806. package/dist/provider/connectivity-indicator.js +0 -205
  807. package/dist/provider/connectivity-provider.d.ts +0 -7
  808. package/dist/provider/connectivity-provider.d.ts.map +0 -1
  809. package/dist/provider/connectivity-provider.js +0 -128
  810. package/dist/provider/connectivity-types.d.ts +0 -36
  811. package/dist/provider/connectivity-types.d.ts.map +0 -1
  812. package/dist/provider/use-connectivity.d.ts +0 -3
  813. package/dist/provider/use-connectivity.d.ts.map +0 -1
  814. package/dist/provider/use-connectivity.js +0 -14
  815. package/dist/query-devtools.d.ts +0 -21
  816. package/dist/query-devtools.d.ts.map +0 -1
  817. package/dist/query-devtools.js +0 -13
  818. package/src/agent/adapter.ts +0 -945
  819. package/src/agent/use-agent-stream.ts +0 -154
  820. package/src/agent-chat/index.ts +0 -54
  821. package/src/agent-chat/thread-detail-panel.tsx +0 -201
  822. package/src/agent-chat/thread-workspace.tsx +0 -279
  823. package/src/charts/cursor/resolve.ts +0 -198
  824. package/src/charts/cursor/scope.tsx +0 -35
  825. package/src/charts/cursor/store.ts +0 -58
  826. package/src/charts/cursor/touch-pin.ts +0 -138
  827. package/src/charts/hooks/use-discrete-cursor.ts +0 -335
  828. package/src/charts/hooks/use-hysteresis.ts +0 -26
  829. package/src/charts/hooks/useBandPlot.ts +0 -383
  830. package/src/charts/hooks/useChartCursor.ts +0 -367
  831. package/src/charts/hooks/useChartSize.ts +0 -35
  832. package/src/charts/kinds/BandStrip.tsx +0 -449
  833. package/src/charts/kinds/Bars.tsx +0 -589
  834. package/src/charts/kinds/Donut.tsx +0 -368
  835. package/src/charts/kinds/DualPanel.tsx +0 -712
  836. package/src/charts/kinds/Heatmap.tsx +0 -396
  837. package/src/charts/kinds/MirroredBars.tsx +0 -469
  838. package/src/charts/kinds/MultiLine.tsx +0 -322
  839. package/src/charts/kinds/StackedArea.tsx +0 -267
  840. package/src/charts/kinds/ZonedLine.tsx +0 -301
  841. package/src/charts/kinds/band-chrome.tsx +0 -91
  842. package/src/charts/kinds/donut-layout.ts +0 -82
  843. package/src/charts/layout/auto-margin.ts +0 -242
  844. package/src/charts/layout/end-labels.ts +0 -135
  845. package/src/charts/layout/log-ticks.ts +0 -90
  846. package/src/charts/primitives/AreaGradient.tsx +0 -26
  847. package/src/charts/primitives/Axes.tsx +0 -271
  848. package/src/charts/primitives/CartesianChart.tsx +0 -1002
  849. package/src/charts/primitives/ChartCard.tsx +0 -280
  850. package/src/charts/primitives/ChartFrame.tsx +0 -493
  851. package/src/charts/primitives/ChartLegend.tsx +0 -422
  852. package/src/charts/primitives/ChartPending.tsx +0 -243
  853. package/src/charts/primitives/ChartTooltip.tsx +0 -265
  854. package/src/charts/primitives/Crosshair.tsx +0 -43
  855. package/src/charts/primitives/HatchPattern.tsx +0 -55
  856. package/src/charts/primitives/HoverOverlay.module.css +0 -13
  857. package/src/charts/primitives/HoverOverlay.module.css.d.ts +0 -8
  858. package/src/charts/primitives/HoverOverlay.tsx +0 -109
  859. package/src/charts/primitives/XZoneRects.tsx +0 -132
  860. package/src/charts/primitives/ZoneRects.tsx +0 -67
  861. package/src/charts/primitives/chart-card-context.ts +0 -46
  862. package/src/charts/primitives/chart-frame-layout.ts +0 -430
  863. package/src/charts/primitives/chart-layout.ts +0 -318
  864. package/src/charts/primitives/chart-tier.tsx +0 -76
  865. package/src/charts/primitives/legend-disclosure.tsx +0 -178
  866. package/src/charts/series.ts +0 -276
  867. package/src/charts/sparklines/BarSparkline.tsx +0 -94
  868. package/src/charts/sparklines/LineSparkline.tsx +0 -71
  869. package/src/charts/sparklines/index.ts +0 -2
  870. package/src/charts/theme.tsx +0 -53
  871. package/src/charts/utils/domain.ts +0 -41
  872. package/src/charts/utils/format.ts +0 -19
  873. package/src/charts/utils/measure-text.ts +0 -109
  874. package/src/charts/utils/ticks.ts +0 -239
  875. package/src/commands/overlays-mount.tsx +0 -333
  876. package/src/commands/useCommandHotkeys.ts +0 -114
  877. package/src/content/article-actions.ts +0 -72
  878. package/src/content/article-card.module.css +0 -111
  879. package/src/content/article-card.tsx +0 -174
  880. package/src/content/mdx.tsx +0 -127
  881. package/src/controls/compare-filter.tsx +0 -81
  882. package/src/controls/slider-control.tsx +0 -159
  883. package/src/dashboard/widget-grid.module.css +0 -69
  884. package/src/dashboard/widget-grid.tsx +0 -146
  885. package/src/data/table.ts +0 -39
  886. package/src/data/virtual-list.tsx +0 -356
  887. package/src/data/virtual.ts +0 -26
  888. package/src/forms/FormErrorSummary.tsx +0 -71
  889. package/src/forms/use-field-array.ts +0 -94
  890. package/src/forms/use-form-draft.ts +0 -262
  891. package/src/forms/use-form-submit.ts +0 -199
  892. package/src/notifications/index.ts +0 -88
  893. package/src/notifications/mount-guard.ts +0 -38
  894. package/src/notifications/notify.tsx +0 -379
  895. package/src/provider/connectivity-indicator.tsx +0 -267
  896. package/src/provider/connectivity-provider.tsx +0 -189
  897. package/src/provider/connectivity-types.ts +0 -42
  898. package/src/provider/use-connectivity.ts +0 -26
  899. package/src/query-devtools.tsx +0 -40
  900. /package/dist/{agent-chat → agent/chat}/message-affordances.js +0 -0
  901. /package/dist/{agent-chat → agent/chat}/relative-time.d.ts +0 -0
  902. /package/dist/{agent-chat → agent/chat}/relative-time.js +0 -0
  903. /package/dist/{agent-chat → agent/chat}/use-keyboard-inset.d.ts +0 -0
  904. /package/dist/{agent-chat → agent/chat}/virtualize.js +0 -0
  905. /package/dist/{notifications → commands/notifications}/bell.js +0 -0
  906. /package/dist/{notifications → commands/notifications}/define-notifications.js +0 -0
  907. /package/dist/{provider/connectivity-types.js → controls/uncontrolled.js} +0 -0
  908. /package/dist/{data → table}/data-table.module.css +0 -0
  909. /package/dist/{data → table}/data-table.module.css.d.ts +0 -0
  910. /package/dist/{data → table}/query-branch.d.ts +0 -0
  911. /package/dist/{data → table}/query-branch.js +0 -0
  912. /package/src/{agent-chat → agent/chat}/relative-time.ts +0 -0
  913. /package/src/{data → table}/data-table.module.css +0 -0
  914. /package/src/{data → table}/data-table.module.css.d.ts +0 -0
  915. /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
- }