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 +0,0 @@
1
- {"version":3,"file":"thread-detail-panel.d.ts","sourceRoot":"","sources":["../../src/agent-chat/thread-detail-panel.tsx"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAChC,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAGpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAgDlD,MAAM,MAAM,sBAAsB,GAAG,WAAW,GAAG;IACjD,uFAAuF;IACvF,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAA;IACnC,0FAA0F;IAC1F,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAA;IAChC,4FAA4F;IAC5F,QAAQ,CAAC,SAAS,CAAC,EAAE,YAAY,CAAA;IACjC,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,CAAA;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAA;IAC5B;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CAC9B,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,SAAS,EACT,SAAS,EACT,MAAM,EACN,MAAM,EACN,OAAO,EACP,OAAO,EACP,SAAS,EACT,KAAK,GACN,EAAE,sBAAsB,GAAG,GAAG,CAAC,OAAO,CAyFtC"}
@@ -1,115 +0,0 @@
1
- import { jsx, jsxs } from "react/jsx-runtime";
2
- import { ActionIcon, Alert, Box, Button, Divider, Flex, Stack, Text } from "@mantine/core";
3
- import { useReducedMotion } from "@mantine/hooks";
4
- import { motion } from "motion/react";
5
- import { BasaltStickToBottom } from "../agent/index.js";
6
- import { cx } from "../common/props.js";
7
- import { MOTION_SPRING } from "../common/motion.js";
8
- import { Composer } from "./composer.js";
9
- import { ThreadTranscript } from "./thread-message.js";
10
- import { VX } from "../tokens/index.js";
11
- function CloseGlyph() {
12
- return /* @__PURE__ */ jsx("svg", { width: 16, height: 16, viewBox: "0 0 24 24", fill: "none", "aria-hidden": true, children: /* @__PURE__ */ jsx(
13
- "path",
14
- {
15
- d: "M18 6l-12 12M6 6l12 12",
16
- stroke: "currentColor",
17
- strokeWidth: 2,
18
- strokeLinecap: "round",
19
- strokeLinejoin: "round"
20
- }
21
- ) });
22
- }
23
- function EmptyPanel({ className, style }) {
24
- return /* @__PURE__ */ jsx(Box, { p: "xl", className: cx(className), style: { height: "100%", ...style }, children: /* @__PURE__ */ jsxs(Stack, { align: "center", justify: "center", gap: 4, h: "100%", children: [
25
- /* @__PURE__ */ jsx(Text, { fw: 550, style: { fontFamily: "var(--basalt-font-head)", fontStretch: "88%" }, children: "No thread selected" }),
26
- /* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", ta: "center", children: "Pick a thread from the feed to see its transcript." })
27
- ] }) });
28
- }
29
- function threadLabel(thread) {
30
- if (thread.outcome !== null && thread.outcome.title.length > 0) return thread.outcome.title;
31
- const firstUser = thread.messages.find((message) => message.role === "user");
32
- if (firstUser === void 0) return "Untitled";
33
- const text = firstUser.parts.filter((part) => part.type === "text").map((part) => part.text).join("").trim();
34
- return text.length > 0 ? text : "Untitled";
35
- }
36
- function ThreadDetailPanel({
37
- thread,
38
- liveParts,
39
- runStatus,
40
- onSend,
41
- onStop,
42
- onClose,
43
- onRetry,
44
- className,
45
- style
46
- }) {
47
- const reduceMotion = useReducedMotion();
48
- if (thread === null) return /* @__PURE__ */ jsx(EmptyPanel, { className, style });
49
- const streaming = runStatus === "streaming";
50
- const panel = /* @__PURE__ */ jsxs(Flex, { direction: "column", h: "100%", className: cx(className), style, children: [
51
- /* @__PURE__ */ jsxs(Flex, { p: "sm", align: "center", justify: "space-between", children: [
52
- /* @__PURE__ */ jsx(
53
- Text,
54
- {
55
- fw: 550,
56
- lineClamp: 1,
57
- style: {
58
- fontFamily: "var(--basalt-font-head)",
59
- fontSize: VX.text.md,
60
- fontStretch: "88%"
61
- },
62
- children: threadLabel(thread)
63
- }
64
- ),
65
- /* @__PURE__ */ jsx(ActionIcon, { variant: "subtle", color: "gray", onClick: onClose, "aria-label": "Close thread", children: /* @__PURE__ */ jsx(CloseGlyph, {}) })
66
- ] }),
67
- /* @__PURE__ */ jsx(Divider, { color: "var(--vx-divider)" }),
68
- /* @__PURE__ */ jsx(Box, { style: { flex: 1, minHeight: 0 }, children: /* @__PURE__ */ jsxs(
69
- BasaltStickToBottom,
70
- {
71
- style: {
72
- height: "100%",
73
- // theme-allow raw-scroll-container — BasaltStickToBottom owns this scroll node (see stick-to-bottom.tsx).
74
- overflowY: "auto",
75
- padding: "var(--vx-space-agent-transcript-inset)"
76
- },
77
- children: [
78
- /* @__PURE__ */ jsx(
79
- ThreadTranscript,
80
- {
81
- messages: thread.messages,
82
- ...liveParts !== void 0 ? { liveParts } : {},
83
- ...runStatus !== void 0 ? { liveStatus: runStatus } : {}
84
- }
85
- ),
86
- thread.status === "error" && /* @__PURE__ */ jsx(Alert, { color: "red", variant: "light", mt: "md", children: /* @__PURE__ */ jsxs(Stack, { gap: "xs", align: "flex-start", children: [
87
- /* @__PURE__ */ jsx(Text, { size: "sm", children: "This run didn\u2019t finish. Try sending the message again." }),
88
- onRetry !== void 0 && /* @__PURE__ */ jsx(Button, { size: "compact-sm", variant: "light", color: "red", onClick: onRetry, children: "Retry" })
89
- ] }) }),
90
- thread.status === "interrupted" && /* @__PURE__ */ jsx(Alert, { color: "yellow", variant: "light", mt: "md", children: "Interrupted \u2014 resend to continue." })
91
- ]
92
- }
93
- ) }),
94
- /* @__PURE__ */ jsx(Divider, { color: "var(--vx-divider)" }),
95
- /* @__PURE__ */ jsx(Box, { p: "sm", children: /* @__PURE__ */ jsxs(Stack, { gap: "xs", children: [
96
- /* @__PURE__ */ jsx(Composer, { onSubmit: ({ text }) => onSend(text), streaming }),
97
- streaming && /* @__PURE__ */ jsx(Button, { size: "compact-sm", variant: "subtle", color: "red", onClick: onStop, children: "Stop" })
98
- ] }) })
99
- ] });
100
- if (reduceMotion) return panel;
101
- return /* @__PURE__ */ jsx(
102
- motion.div,
103
- {
104
- initial: { opacity: 0, x: 12 },
105
- animate: { opacity: 1, x: 0 },
106
- transition: MOTION_SPRING,
107
- style: { height: "100%" },
108
- children: panel
109
- },
110
- thread.id
111
- );
112
- }
113
- export {
114
- ThreadDetailPanel
115
- };
@@ -1 +0,0 @@
1
- {"version":3,"file":"thread-feed-row.d.ts","sourceRoot":"","sources":["../../src/agent-chat/thread-feed-row.tsx"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAE3C,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,cAAc,EACf,MAAM,UAAU,CAAA;AAGjB,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAGnE,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAE/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAI/D,OAAO,KAAK,EAAE,cAAc,EAAmB,MAAM,cAAc,CAAA;AAsCnE,KAAK,iBAAiB,GAAG;IACvB;;;;;;;;OAQG;IACH,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,cAAc,CAAC,CAAA;IAC5C,wEAAwE;IACxE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B,wEAAwE;IACxE,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,gGAAgG;IAChG,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB;+FAC2F;IAC3F,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,CAAA;IAC/B;;kBAEc;IACd,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,CAAA;IAChC;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,WAAW,CAAC,cAAc,CAAC,EAAE,CAAA;IAC1D,4FAA4F;IAC5F,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,cAAc,EAAE,CAAA;IAC9C,kFAAkF;IAClF,QAAQ,CAAC,UAAU,CAAC,EAAE,YAAY,CAAA;IAClC,8EAA8E;IAC9E,QAAQ,CAAC,SAAS,CAAC,EAAE,aAAa,CAAA;IAClC,8DAA8D;IAC9D,QAAQ,CAAC,gBAAgB,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,CAAA;IACrD;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAA;IACzC;uBACmB;IACnB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;IACnC,iDAAiD;IACjD,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAA;IAClD,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IAC5B;;kEAE8D;IAC9D,QAAQ,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,GAAG,QAAQ,GAAG,WAAW,CAAC,CAAA;CAClF,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,kBAAkB,GAAG,iBAAiB,GAChD,cAAc,GACd,eAAe,CAAC,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC,GAC3C,WAAW,CAAA;AAkBb;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,GAAG,CAAC,OAAO,CA8JpE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"thread-feed.d.ts","sourceRoot":"","sources":["../../src/agent-chat/thread-feed.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAG3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAGlD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAShD,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG;IAC1C,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,CAAA;IAC/B,mEAAmE;IACnE,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC;uGACmG;IACnG,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAA;IACvC;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,KAAK,IAAI,CAAA;IACxE;;;uBAGmB;IACnB,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,SAAS,CAAA;IACvD;;;;;;;;OAQG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,KAAK,CAAA;CAClC,CAAA;AAgCD;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,OAAmB,EACnB,MAAM,EACN,SAAS,EACT,MAAgB,EAChB,SAAS,EACT,KAAK,GACN,EAAE,eAAe,GAAG,GAAG,CAAC,OAAO,CAiF/B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"thread-message.d.ts","sourceRoot":"","sources":["../../src/agent-chat/thread-message.tsx"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAChC,OAAO,KAAK,EAEV,kBAAkB,EAClB,WAAW,EAEX,WAAW,EACX,YAAY,EACZ,aAAa,EAGb,YAAY,EAGZ,cAAc,EACf,MAAM,UAAU,CAAA;AAGjB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAMlD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAI/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAkGtE;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,EAAE,OAAO,CAAC,kBAAkB,CAM3D,CAAA;AAiPD;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB;;CAAe,CAAA;AAqKrD;;;;;;;qGAOqG;AACrG,eAAO,MAAM,2BAA2B,IAAI,CAAA;AAE5C,KAAK,aAAa,GAAG;IACnB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAA;CAC3B,CAAA;AAED,KAAK,0BAA0B,GAAG,WAAW,GAAG;IAC9C,QAAQ,CAAC,IAAI,EAAE,SAAS,aAAa,EAAE,CAAA;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,CAAA;CACxE,CAAA;AAED;;;;;;;;;;GAUG;AACH,iBAAS,kBAAkB,CAAC,EAC1B,IAAI,EACJ,MAAM,EACN,SAAS,EACT,KAAK,GACN,EAAE,0BAA0B,GAAG,GAAG,CAAC,OAAO,CAW1C;AAED;;;;yFAIyF;AACzF,eAAO,MAAM,0BAA0B,2BAAqB,CAAA;AAE5D;;;;;;;;;;;;GAYG;AACH,KAAK,oBAAoB,CAAC,YAAY,SAAS,OAAO,IAAI;IACxD,QAAQ,CAAC,gBAAgB,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,MAAM,CAAA;IACzD,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC5C,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAA;QAC/C,QAAQ,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;KACjD,CAAA;CACF,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,yBAAyB,CAAC,YAAY,SAAS,OAAO,EACpE,IAAI,EAAE,oBAAoB,CAAC,YAAY,CAAC,EACxC,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,MAAM,GACX,MAAM,CAOR;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,WAAW,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,EAC9D,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,GACtB,QAAQ,GAAG,WAAW,GAAG,YAAY,CAKvC;AAED;;;;;;;;qBAQqB;AACrB,MAAM,MAAM,kBAAkB,GAAG;IAAE,UAAU,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAA;AAE1E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,kBAAkB,EACzB,aAAa,EAAE,WAAW,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,EAC9D,QAAQ,EAAE,MAAM,EAChB,kBAAkB,EAAE,MAAM,MAAM,EAChC,WAAW,EAAE,MAAM,IAAI,EACvB,OAAO,EAAE,MAAM,OAAO,GACrB,IAAI,CAwBN;AAwKD,KAAK,oBAAoB,GAAG,WAAW,GAAG;IACxC,qDAAqD;IACrD,QAAQ,CAAC,QAAQ,EAAE,SAAS,WAAW,CAAC,cAAc,CAAC,EAAE,CAAA;IACzD,4FAA4F;IAC5F,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,cAAc,EAAE,CAAA;IAC9C,kFAAkF;IAClF,QAAQ,CAAC,UAAU,CAAC,EAAE,YAAY,CAAA;IAClC,kFAAkF;IAClF,QAAQ,CAAC,SAAS,CAAC,EAAE,aAAa,CAAA;IAClC;iGAC6F;IAC7F,QAAQ,CAAC,gBAAgB,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,CAAA;IACrD;;0CAEsC;IACtC,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAA;IACzC;;uBAEmB;IACnB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CACpC,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,GAAG,eAAe,CAAA;AA2C1E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,GAAG,CAAC,OAAO,CA6I1E"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"thread-outcome-card.d.ts","sourceRoot":"","sources":["../../src/agent-chat/thread-outcome-card.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAChC,OAAO,KAAK,EAAE,WAAW,EAAgB,MAAM,UAAU,CAAA;AAGzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAiGlD,MAAM,MAAM,sBAAsB,GAAG,WAAW,GAAG;IACjD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B,+EAA+E;IAC/E,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B,gDAAgD;IAChD,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAA;CAC9B,CAAA;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,KAAK,GACN,EAAE,sBAAsB,GAAG,GAAG,CAAC,OAAO,CAkCtC"}
@@ -1,44 +0,0 @@
1
- import type { JSX, ReactNode } from 'react';
2
- import type { AgentPart, AgentTransport, OutcomeResolver, ThreadsStore } from '../agent/index.js';
3
- import type { BasaltProps, SlotStylesProps } from '../common/props.js';
4
- /** The four boxes `ThreadWorkspace` paints: `root` is the outermost pane split, `feed` is the
5
- * thread-list pane, `composer` is the new-thread composer pinned under the feed, `detail` is the
6
- * right-hand (or, in the `compact` size class, full-screen) open-thread pane. */
7
- export type ThreadWorkspaceSlot = 'root' | 'feed' | 'composer' | 'detail';
8
- export type ThreadWorkspaceProps = BasaltProps & SlotStylesProps<ThreadWorkspaceSlot> & {
9
- /**
10
- * The thread-store hook, created ONCE at module scope via `createThreadsStore` and passed in —
11
- * ThreadWorkspace must not call `createThreadsStore` itself.
12
- */
13
- readonly useThreads: () => ThreadsStore;
14
- /** The injected transport seam — one stream per `start()` call. */
15
- readonly transport: AgentTransport<AgentPart, string>;
16
- /** Distills a finished thread into a feed-ready `AgentOutcome`. */
17
- readonly resolveOutcome: OutcomeResolver<AgentPart>;
18
- /** Placeholder for the new-thread composer pinned under the feed. */
19
- readonly newThreadPlaceholder?: string;
20
- /**
21
- * Rendered in place of the feed once the store is hydrated and there really are no threads.
22
- * Shown ONLY when `store.hydrated` is true — while an async store's initial load is still in
23
- * flight, `ThreadWorkspace` holds a neutral loading state instead (see `FeedHydratingState`),
24
- * so a server-backed workspace never asserts "no threads yet" before it actually knows that.
25
- */
26
- readonly emptyState?: ReactNode;
27
- /**
28
- * Rendered in place of the feed when the store's initial load has failed — `!store.hydrated &&
29
- * store.error !== undefined` (see `ThreadsStore.hydrated`'s doc for the discriminant). Shown
30
- * instead of `FeedHydratingState`, so a rejected `listThreads` surfaces a legible failure rather
31
- * than an endless skeleton.
32
- */
33
- readonly errorState?: ReactNode;
34
- };
35
- /**
36
- * A two-pane master-detail thread workspace: a scrollable feed of threads with an anchored
37
- * new-thread composer, and a detail panel for the open thread's live transcript. Collapses to a
38
- * single pane in the `compact` size class (< 840px).
39
- *
40
- * @example
41
- * <ThreadWorkspace useThreads={useThreads} transport={transport} resolveOutcome={heuristicOutcome} />
42
- */
43
- export declare function ThreadWorkspace({ useThreads, transport, resolveOutcome, newThreadPlaceholder, emptyState, errorState, className, style, classNames, }: ThreadWorkspaceProps): JSX.Element;
44
- //# sourceMappingURL=thread-workspace.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"thread-workspace.d.ts","sourceRoot":"","sources":["../../src/agent-chat/thread-workspace.tsx"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAGxF,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAcnE;;iFAEiF;AACjF,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAA;AAEzE,MAAM,MAAM,oBAAoB,GAAG,WAAW,GAC5C,eAAe,CAAC,mBAAmB,CAAC,GAAG;IACrC;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,YAAY,CAAA;IACvC,mEAAmE;IACnE,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IACrD,mEAAmE;IACnE,QAAQ,CAAC,cAAc,EAAE,eAAe,CAAC,SAAS,CAAC,CAAA;IACnD,qEAAqE;IACrE,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAA;IACtC;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,CAAA;IAC/B;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,CAAA;CAChC,CAAA;AA4DH;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,EAC9B,UAAU,EACV,SAAS,EACT,cAAc,EACd,oBAAoB,EACpB,UAAU,EACV,UAAU,EACV,SAAS,EACT,KAAK,EACL,UAAU,GACX,EAAE,oBAAoB,GAAG,GAAG,CAAC,OAAO,CAmHpC"}
@@ -1,153 +0,0 @@
1
- import { jsx, jsxs } from "react/jsx-runtime";
2
- import { Box, Divider, Flex, Skeleton, Stack, Text } from "@mantine/core";
3
- import { useAgentThreadRuns } from "../agent/index.js";
4
- import { cx } from "../common/props.js";
5
- import { assertRequiredProps } from "../common/validate.js";
6
- import { useSizeClass } from "../shell/use-size-class.js";
7
- import { VX } from "../tokens/index.js";
8
- import { Composer } from "./composer.js";
9
- import { ThreadDetailPanel } from "./thread-detail-panel.js";
10
- import { ThreadFeed } from "./thread-feed.js";
11
- const DETAIL_PANEL_WIDTH = "clamp(440px, 40%, 520px)";
12
- const FULL_HEIGHT_STYLE = { height: "100%" };
13
- function FeedEmptyState() {
14
- return /* @__PURE__ */ jsxs(Stack, { align: "center", justify: "center", gap: 4, h: "100%", p: "xl", children: [
15
- /* @__PURE__ */ jsx(Text, { fw: 600, size: "sm", children: "No threads yet" }),
16
- /* @__PURE__ */ jsx(Text, { size: "xs", c: "dimmed", ta: "center", children: "Send a message below to start your first thread." })
17
- ] });
18
- }
19
- function FeedHydratingState() {
20
- return /* @__PURE__ */ jsxs(Stack, { gap: "sm", p: "sm", "data-testid": "thread-workspace-hydrating", children: [
21
- /* @__PURE__ */ jsx(Skeleton, { height: 54, radius: "sm" }),
22
- /* @__PURE__ */ jsx(Skeleton, { height: 54, radius: "sm" }),
23
- /* @__PURE__ */ jsx(Skeleton, { height: 54, radius: "sm" })
24
- ] });
25
- }
26
- function FeedErrorState() {
27
- return /* @__PURE__ */ jsxs(
28
- Stack,
29
- {
30
- align: "center",
31
- justify: "center",
32
- gap: 4,
33
- h: "100%",
34
- p: "xl",
35
- "data-testid": "thread-workspace-error",
36
- children: [
37
- /* @__PURE__ */ jsx(Text, { fw: 600, size: "sm", style: { color: VX.status.bad }, children: "Couldn't load threads" }),
38
- /* @__PURE__ */ jsx(Text, { size: "xs", c: "dimmed", ta: "center", children: "Something went wrong loading your threads. Try refreshing the page." })
39
- ]
40
- }
41
- );
42
- }
43
- function ThreadWorkspace({
44
- useThreads,
45
- transport,
46
- resolveOutcome,
47
- newThreadPlaceholder,
48
- emptyState,
49
- errorState,
50
- className,
51
- style,
52
- classNames
53
- }) {
54
- assertRequiredProps("ThreadWorkspace", { useThreads }, ["useThreads"]);
55
- const store = useThreads();
56
- const runs = useAgentThreadRuns({ transport, store, resolveOutcome });
57
- const narrow = useSizeClass() === "compact";
58
- const threads = store.threads;
59
- const activeThread = threads.find((thread) => thread.id === store.activeId) ?? null;
60
- const activeRun = store.activeId !== null ? runs.runs.get(store.activeId) : void 0;
61
- const liveParts = activeRun?.parts;
62
- const handleSelect = (id) => {
63
- store.select(id);
64
- store.markRead(id);
65
- };
66
- const handleNewThread = (text) => {
67
- const id = store.create();
68
- store.select(id);
69
- store.markRead(id);
70
- runs.start(id, text);
71
- };
72
- const handleSend = (text) => {
73
- if (store.activeId === null) return;
74
- runs.start(store.activeId, text);
75
- };
76
- const handleStop = () => {
77
- if (store.activeId === null) return;
78
- runs.stop(store.activeId);
79
- };
80
- const handleRetry = () => {
81
- if (store.activeId === null) return;
82
- runs.retry(store.activeId);
83
- };
84
- const feed = /* @__PURE__ */ jsxs(
85
- Flex,
86
- {
87
- direction: "column",
88
- h: "100%",
89
- className: cx(classNames?.feed),
90
- style: { overflow: "hidden" },
91
- children: [
92
- /* @__PURE__ */ jsx(Box, { style: { flex: 1, minHeight: 0 }, children: threads.length === 0 ? store.hydrated ? emptyState ?? /* @__PURE__ */ jsx(FeedEmptyState, {}) : store.error !== void 0 ? errorState ?? /* @__PURE__ */ jsx(FeedErrorState, {}) : /* @__PURE__ */ jsx(FeedHydratingState, {}) : /* @__PURE__ */ jsx(ThreadFeed, { threads, activeId: store.activeId, onSelect: handleSelect }) }),
93
- /* @__PURE__ */ jsx(Divider, { color: "var(--vx-divider)" }),
94
- /* @__PURE__ */ jsx(Box, { p: "sm", children: /* @__PURE__ */ jsx(
95
- Composer,
96
- {
97
- onSubmit: ({ text }) => handleNewThread(text),
98
- ...newThreadPlaceholder !== void 0 ? { placeholder: newThreadPlaceholder } : {},
99
- ...classNames?.composer !== void 0 && { className: classNames.composer }
100
- }
101
- ) })
102
- ]
103
- }
104
- );
105
- const detail = /* @__PURE__ */ jsx(
106
- ThreadDetailPanel,
107
- {
108
- thread: activeThread,
109
- ...liveParts !== void 0 ? { liveParts } : {},
110
- ...activeRun !== void 0 ? { runStatus: activeRun.status } : {},
111
- onSend: handleSend,
112
- onStop: handleStop,
113
- onRetry: handleRetry,
114
- onClose: () => store.select(null),
115
- ...classNames?.detail !== void 0 && { className: classNames.detail }
116
- }
117
- );
118
- if (narrow) {
119
- return /* @__PURE__ */ jsx(
120
- Box,
121
- {
122
- className: cx(classNames?.root, className),
123
- style: style ? { ...FULL_HEIGHT_STYLE, ...style } : FULL_HEIGHT_STYLE,
124
- children: store.activeId !== null ? detail : feed
125
- }
126
- );
127
- }
128
- return /* @__PURE__ */ jsxs(
129
- Flex,
130
- {
131
- className: cx(classNames?.root, className),
132
- style: style ? { ...FULL_HEIGHT_STYLE, ...style } : FULL_HEIGHT_STYLE,
133
- gap: "md",
134
- children: [
135
- /* @__PURE__ */ jsx(
136
- Box,
137
- {
138
- style: {
139
- flex: 1,
140
- minWidth: 0,
141
- borderRight: "1px solid var(--vx-divider)"
142
- },
143
- children: feed
144
- }
145
- ),
146
- /* @__PURE__ */ jsx(Box, { style: { width: DETAIL_PANEL_WIDTH, flexShrink: 0 }, children: detail })
147
- ]
148
- }
149
- );
150
- }
151
- export {
152
- ThreadWorkspace
153
- };
@@ -1 +0,0 @@
1
- {"version":3,"file":"tool-chip.d.ts","sourceRoot":"","sources":["../../src/agent-chat/tool-chip.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAE5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AA6ElD,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG;IACxC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAA;IAC3B,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAA;IAClC,mFAAmF;IACnF,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAA;IACjD,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CAChE,CAAA;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,eAAuB,EACvB,SAAS,EACT,MAAM,EACN,SAAS,EACT,KAAK,GACN,EAAE,aAAa,GAAG,GAAG,CAAC,OAAO,CAkG7B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-keyboard-inset.d.ts","sourceRoot":"","sources":["../../src/agent-chat/use-keyboard-inset.ts"],"names":[],"mappings":"AAiCA,wBAAgB,mBAAmB,IAAI,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAkCtE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"virtualize.d.ts","sourceRoot":"","sources":["../../src/agent-chat/virtualize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqFG;AAEH,mFAAmF;AACnF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,sFAAsF;IACtF,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,uEAAuE;IACvE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B;;sGAEkG;IAClG,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,GAAG,OAAO,CAAA;CACzC,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,eAAe,GACvB;IAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAA;CAAE,GACxD;IAAE,QAAQ,CAAC,UAAU,EAAE,IAAI,GAAG,iBAAiB,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAA;AAEvF,uFAAuF;AACvF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAA;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;CACjC,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,cAAc,GACtB;IAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GAClE;IAAE,QAAQ,CAAC,UAAU,EAAE,IAAI,GAAG,iBAAiB,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAA;AAEvF,gGAAgG;AAChG,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAA;CAAE,GACzE;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GAC9D;IAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;CAAE,CAAA;AAEtC;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,GAAG,iBAAiB,CAezE;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,eAAe,GAAG,kBAAkB,GAAG,IAAI,CAUnF"}
@@ -1,75 +0,0 @@
1
- /**
2
- * Domain-aware resolution of a BROADCAST cursor key against a chart's own points.
3
- *
4
- * The layer this replaced matched keys byte-for-byte, so two charts shared a cursor only if they emitted identical
5
- * strings. A chart that folded its domain to fit a narrow viewport stopped owning most of the keys
6
- * its siblings broadcast, and the shared crosshair then landed on roughly one hover in three with
7
- * no rule a reader could infer — patched per chart by a manual `resolveKey`. Resolving on the
8
- * PARSED domain instead makes that automatic (`docs/CHARTS-SPEC.md` §3).
9
- */
10
- /**
11
- * A key as a comparable number: numeric-looking strings as numbers, everything else as a date.
12
- * Neither (a plain category like "Direct") → null, which degrades to exact-match only — correct,
13
- * since "nearest category" is meaningless.
14
- */
15
- export declare function parseKey(key: string): number | null;
16
- /** The x-domain families the shared cursor partitions on, derived from a chart's own keys — never
17
- * a prop, never `ChartCursorScope`. A chart's kind is stamped on every broadcast it makes, and a
18
- * receiving chart ignores any broadcast whose kind differs from its own — so a category chart can
19
- * never be mistaken for a time chart just because both domains happen to parse. */
20
- export type DomainKind = 'time' | 'linear' | 'band';
21
- /**
22
- * Classify a domain by the SAME parse precedence `parseKey` applies to each key, so a domain can
23
- * never be classified one way and resolved another:
24
- *
25
- * - empty domain → `'band'` (nothing to share).
26
- * - every key numeric (same test `parseKey` tries first) → `'linear'`.
27
- * - otherwise every key `Date.parse`-able (same test `parseKey` falls back to) → `'time'`.
28
- * - otherwise → `'band'` (categories, or a mixed domain).
29
- *
30
- * Ordering matters and mirrors `parseKey` exactly: a domain of bare years like `"2026"` is numeric
31
- * FIRST, so it classifies `'linear'`, not `'time'`, even though every value is also a valid date.
32
- */
33
- export declare function classifyDomain(keys: readonly string[]): DomainKind;
34
- /**
35
- * How a foreign key maps onto a chart's own points.
36
- *
37
- * `'nearest'` (default) treats every key as a POINT — the foreign key resolves to whichever own
38
- * point sits closest to it. Correct when a chart's x-domain is a set of instants.
39
- *
40
- * `'leading'` treats every key as the LEADING EDGE of a bucket covering `[key, nextKey)` — the
41
- * foreign key resolves to the LAST own key `<=` it. Use this when a chart's keys are bucket
42
- * starts (a weekly series keyed by the Monday of each week, a monthly series keyed by the 1st):
43
- * under `'nearest'`, a target landing in the back half of a bucket resolves to the FOLLOWING
44
- * bucket instead of the one it's actually inside, and the shared crosshair lands one column off
45
- * for every back-half hover.
46
- *
47
- * The two modes differ at the DOMAIN EDGES too, and deliberately: `'nearest'` tolerates one step
48
- * past each end (the target is an instant, so the closest point is still a defensible answer),
49
- * while `'leading'` bounds strictly to `[first, last + step)` — outside that range no bucket
50
- * CONTAINS the key, and answering with the nearest one would paint a crosshair on a bucket that
51
- * provably excludes it.
52
- */
53
- export type CursorResolution = 'nearest' | 'leading';
54
- export type DomainIndex<T> = {
55
- byKey: Map<string, T>;
56
- /** Parsed positions, ascending. Empty when the domain isn't parseable. */
57
- values: number[];
58
- /** Points parallel to `values`. */
59
- points: T[];
60
- /** Median spacing — the tolerance within which a foreign key still resolves. */
61
- step: number;
62
- /** The resolution strategy this index was built for. */
63
- resolution: CursorResolution;
64
- };
65
- /** Build the lookup structure once per `data` identity. */
66
- export declare function buildDomainIndex<T>(data: readonly T[], getKey: (d: T) => string, resolution?: CursorResolution): DomainIndex<T>;
67
- /**
68
- * The own point a broadcast `key` maps to: exact match first, else — per `index.resolution` — the
69
- * nearest parsed position or the last position at/before the target, both within one domain step.
70
- * Out of range → null, so charts over unrelated domains never paint a cursor for each other —
71
- * which is what makes "shared by default" safe. A categorical (unparseable) domain falls back to
72
- * exact-match-only in BOTH resolutions, since "nearest"/"leading" over a category is meaningless.
73
- */
74
- export declare function resolveCursorPoint<T>(index: DomainIndex<T>, key: string, resolution?: CursorResolution): T | null;
75
- //# sourceMappingURL=resolve.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../src/charts/cursor/resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAaH;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGnD;AAED;;;mFAGmF;AACnF,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAA;AAEnD;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CAKlE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,SAAS,CAAA;AAEpD,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;IAC3B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IACrB,0EAA0E;IAC1E,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,mCAAmC;IACnC,MAAM,EAAE,CAAC,EAAE,CAAA;IACX,gFAAgF;IAChF,IAAI,EAAE,MAAM,CAAA;IACZ,wDAAwD;IACxD,UAAU,EAAE,gBAAgB,CAAA;CAC7B,CAAA;AAED,2DAA2D;AAC3D,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,IAAI,EAAE,SAAS,CAAC,EAAE,EAClB,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,EACxB,UAAU,GAAE,gBAA4B,GACvC,WAAW,CAAC,CAAC,CAAC,CA8BhB;AAoBD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EACrB,GAAG,EAAE,MAAM,EACX,UAAU,GAAE,gBAAmC,GAC9C,CAAC,GAAG,IAAI,CA0CV"}
@@ -1,91 +0,0 @@
1
- function isNumericString(key) {
2
- return /^[-+]?\d*\.?\d+$/.test(key) && Number.isFinite(Number(key));
3
- }
4
- function isDateParseableString(key) {
5
- return !Number.isNaN(Date.parse(key));
6
- }
7
- function parseKey(key) {
8
- if (isNumericString(key)) return Number(key);
9
- return isDateParseableString(key) ? Date.parse(key) : null;
10
- }
11
- function classifyDomain(keys) {
12
- if (keys.length === 0) return "band";
13
- if (keys.every(isNumericString)) return "linear";
14
- if (keys.every(isDateParseableString)) return "time";
15
- return "band";
16
- }
17
- function buildDomainIndex(data, getKey, resolution = "nearest") {
18
- const byKey = /* @__PURE__ */ new Map();
19
- const parsed = [];
20
- let parseable = true;
21
- for (const d of data) {
22
- byKey.set(getKey(d), d);
23
- if (!parseable) continue;
24
- const value = parseKey(getKey(d));
25
- if (value === null) parseable = false;
26
- else parsed.push({ value, point: d });
27
- }
28
- if (!parseable || parsed.length < 2) {
29
- return { byKey, values: [], points: [], step: 0, resolution };
30
- }
31
- parsed.sort((a, b) => a.value - b.value);
32
- const values = parsed.map((p) => p.value);
33
- const points = parsed.map((p) => p.point);
34
- const diffs = [];
35
- for (let i = 1; i < values.length; i++) {
36
- diffs.push(values[i] - values[i - 1]);
37
- }
38
- diffs.sort((a, b) => a - b);
39
- return { byKey, values, points, step: diffs[Math.floor(diffs.length / 2)] ?? 0, resolution };
40
- }
41
- function resolveLeading(index, target) {
42
- let lo = 0;
43
- let hi = index.values.length - 1;
44
- let result = 0;
45
- while (lo <= hi) {
46
- const mid = lo + hi >> 1;
47
- if (index.values[mid] <= target) {
48
- result = mid;
49
- lo = mid + 1;
50
- } else {
51
- hi = mid - 1;
52
- }
53
- }
54
- return index.points[result];
55
- }
56
- function resolveCursorPoint(index, key, resolution = index.resolution) {
57
- const exact = index.byKey.get(key);
58
- if (exact !== void 0) return exact;
59
- const target = parseKey(key);
60
- if (target === null || index.values.length === 0) return null;
61
- const first = index.values[0];
62
- const last = index.values[index.values.length - 1];
63
- if (resolution === "leading") {
64
- if (target < first || target >= last + index.step) return null;
65
- return resolveLeading(index, target);
66
- }
67
- if (target < first - index.step || target > last + index.step) return null;
68
- let lo = 0;
69
- let hi = index.values.length - 1;
70
- while (lo < hi) {
71
- const mid = lo + hi >> 1;
72
- if (index.values[mid] < target) lo = mid + 1;
73
- else hi = mid;
74
- }
75
- let best = lo;
76
- let bestDist = Math.abs(index.values[lo] - target);
77
- if (lo > 0) {
78
- const prevDist = Math.abs(index.values[lo - 1] - target);
79
- if (prevDist <= bestDist) {
80
- best = lo - 1;
81
- bestDist = prevDist;
82
- }
83
- }
84
- return bestDist <= index.step ? index.points[best] : null;
85
- }
86
- export {
87
- buildDomainIndex,
88
- classifyDomain,
89
- parseKey,
90
- resolveCursorPoint
91
- };
@@ -1,20 +0,0 @@
1
- import type { ReactNode } from 'react';
2
- import type { CursorState, CursorStore } from './store.js';
3
- export type ChartCursorScopeProps = {
4
- children: ReactNode;
5
- };
6
- /**
7
- * ISOLATES its subtree onto a private cursor store — the inverse of the removed `ChartHoverSync`, which
8
- * had to be mounted to enable sharing at all. Charts share a cursor by default now, AND the shared
9
- * cursor partitions automatically by x-domain kind (`DomainKind`, derived from each chart's own
10
- * data in `useChartCursor`) — a categorical chart never follows a date chart just because both
11
- * happen to be on the page, with nothing to configure. `ChartCursorScope` is no longer the tool for
12
- * that case. What it is still for: isolating two charts that share the same domain KIND but are
13
- * semantically unrelated — two different tenants' date ranges rendered side by side on one page.
14
- */
15
- export declare function ChartCursorScope({ children }: ChartCursorScopeProps): import("react").JSX.Element;
16
- /** The cursor store this chart belongs to — the nearest `ChartCursorScope`, else the global one. */
17
- export declare function useCursorStore(): CursorStore;
18
- /** Subscribe to the ambient cursor. Re-renders only on an actual cursor change. */
19
- export declare function useCursorState(): CursorState;
20
- //# sourceMappingURL=scope.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../../src/charts/cursor/scope.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAKvD,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,SAAS,CAAA;CACpB,CAAA;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,EAAE,qBAAqB,+BAGnE;AAED,oGAAoG;AACpG,wBAAgB,cAAc,IAAI,WAAW,CAE5C;AAED,mFAAmF;AACnF,wBAAgB,cAAc,IAAI,WAAW,CAG5C"}
@@ -1,20 +0,0 @@
1
- import { jsx } from "react/jsx-runtime";
2
- import { createContext, useContext, useMemo, useSyncExternalStore } from "react";
3
- import { createCursorStore, EMPTY_CURSOR, globalCursorStore } from "./store.js";
4
- const CursorStoreContext = createContext(globalCursorStore);
5
- function ChartCursorScope({ children }) {
6
- const store = useMemo(() => createCursorStore(), []);
7
- return /* @__PURE__ */ jsx(CursorStoreContext.Provider, { value: store, children });
8
- }
9
- function useCursorStore() {
10
- return useContext(CursorStoreContext);
11
- }
12
- function useCursorState() {
13
- const store = useCursorStore();
14
- return useSyncExternalStore(store.subscribe, store.get, () => EMPTY_CURSOR);
15
- }
16
- export {
17
- ChartCursorScope,
18
- useCursorState,
19
- useCursorStore
20
- };
@@ -1,35 +0,0 @@
1
- /**
2
- * The shared chart cursor — an external store, not a React context value.
3
- *
4
- * Sharing used to require a `ChartHoverSync` ancestor, so it was opt-in and silently absent
5
- * whenever someone forgot the wrapper. This inverts that: a module-level store means every
6
- * chart on the page shares a cursor by default, and `ChartCursorScope` exists to ISOLATE a
7
- * subtree (`docs/CHARTS-SPEC.md` §3). Charts with non-overlapping domains never resolve each
8
- * other's keys, so "shared by default" cannot produce a false cursor.
9
- *
10
- * External store rather than context for a second reason: a cursor move re-renders only the
11
- * charts subscribed to it, instead of every descendant of a provider whose value object is new
12
- * on each pointer frame.
13
- */
14
- import type { DomainKind } from './resolve.js';
15
- /** Broadcast cursor position: an opaque domain key plus the chart that owns it. */
16
- export type CursorState = {
17
- /** The hovered x-domain key (a date/category string), or null when nothing is hovered. */
18
- key: string | null;
19
- /** `chartId` of the chart the pointer is actually over — the one that owns the tooltip. */
20
- source: string | null;
21
- /** The broadcaster's own x-domain kind. `null` only in the empty state — the store itself does
22
- * not police this, it just carries it; the partition is enforced by the reading hook. */
23
- kind: DomainKind | null;
24
- };
25
- export type CursorStore = {
26
- get: () => CursorState;
27
- set: (key: string | null, source: string | null, kind?: DomainKind | null) => void;
28
- subscribe: (onChange: () => void) => () => void;
29
- };
30
- /** Stable identity for "nothing hovered" — also the SSR snapshot, so it must never be recreated. */
31
- export declare const EMPTY_CURSOR: CursorState;
32
- export declare function createCursorStore(): CursorStore;
33
- /** The default store every chart shares unless a `ChartCursorScope` overrides it. */
34
- export declare const globalCursorStore: CursorStore;
35
- //# sourceMappingURL=store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/charts/cursor/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAE3C,mFAAmF;AACnF,MAAM,MAAM,WAAW,GAAG;IACxB,0FAA0F;IAC1F,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,2FAA2F;IAC3F,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB;6FACyF;IACzF,IAAI,EAAE,UAAU,GAAG,IAAI,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,GAAG,EAAE,MAAM,WAAW,CAAA;IACtB,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,KAAK,IAAI,CAAA;IAClF,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAA;CAChD,CAAA;AAED,oGAAoG;AACpG,eAAO,MAAM,YAAY,EAAE,WAAqD,CAAA;AAEhF,wBAAgB,iBAAiB,IAAI,WAAW,CAkB/C;AAED,qFAAqF;AACrF,eAAO,MAAM,iBAAiB,EAAE,WAAiC,CAAA"}
@@ -1,25 +0,0 @@
1
- const EMPTY_CURSOR = { key: null, source: null, kind: null };
2
- function createCursorStore() {
3
- let state = EMPTY_CURSOR;
4
- const listeners = /* @__PURE__ */ new Set();
5
- return {
6
- get: () => state,
7
- set: (key, source, kind = null) => {
8
- if (state.key === key && state.source === source && state.kind === kind) return;
9
- state = key === null && source === null ? EMPTY_CURSOR : { key, source, kind };
10
- for (const listener of listeners) listener();
11
- },
12
- subscribe: (onChange) => {
13
- listeners.add(onChange);
14
- return () => {
15
- listeners.delete(onChange);
16
- };
17
- }
18
- };
19
- }
20
- const globalCursorStore = createCursorStore();
21
- export {
22
- EMPTY_CURSOR,
23
- createCursorStore,
24
- globalCursorStore
25
- };