basalt-ui 1.41.0 → 2.0.0

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