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
@@ -12,15 +12,9 @@ import {
12
12
  Text,
13
13
  TextInput
14
14
  } from "@mantine/core";
15
- import {
16
- flexRender,
17
- getCoreRowModel,
18
- getFilteredRowModel,
19
- getPaginationRowModel,
20
- getSortedRowModel,
21
- useReactTable
22
- } from "@tanstack/react-table";
15
+ import { constructFilterFn, FlexRender, useTable } from "@tanstack/react-table";
23
16
  import { Fragment, useLayoutEffect, useMemo, useRef, useState } from "react";
17
+ import { useDebouncedCallback } from "@mantine/hooks";
24
18
  import { cx } from "../common/props.js";
25
19
  import { BASALT_PREFIX } from "../common/errors.js";
26
20
  import { HIT_COARSE } from "../common/hit-floor.js";
@@ -42,6 +36,7 @@ import {
42
36
  useRowDisclosure
43
37
  } from "./data-table-state.js";
44
38
  import { dataQueryBranch } from "./query-branch.js";
39
+ import { basaltTableFeatures } from "./table-features.js";
45
40
  import classes from "./data-table.module.css";
46
41
  const ALIGNMENTS = /* @__PURE__ */ new Set(["left", "center", "right"]);
47
42
  function resolveAlign(column) {
@@ -111,6 +106,15 @@ function resolveFacetColumn(table, facet) {
111
106
  }
112
107
  return void 0;
113
108
  }
109
+ const facetAutoRemove = (value) => value === null || value === void 0 || value === "" || Array.isArray(value) && value.length === 0;
110
+ const facetExact = constructFilterFn({
111
+ filter: (dataValue, filterValue) => filterValue === null || filterValue === void 0 || filterValue === "" ? true : String(dataValue) === filterValue,
112
+ autoRemove: facetAutoRemove
113
+ });
114
+ const facetAnyOf = constructFilterFn({
115
+ filter: (dataValue, filterValue) => !Array.isArray(filterValue) || filterValue.length === 0 ? true : filterValue.includes(String(dataValue)),
116
+ autoRemove: facetAutoRemove
117
+ });
114
118
  const SELECT_COLUMN_ID = "__basalt_select__";
115
119
  function selectionColumn() {
116
120
  return {
@@ -175,6 +179,7 @@ const DEFAULT_PAGE_SIZE_OPTIONS = [10, 25, 50, 100];
175
179
  const TABLE_HEADER_LEAD_STYLE = { flex: "1 1 auto", minWidth: 0 };
176
180
  const TABLE_TOOLBAR_STYLE = { flex: "0 1 auto", minWidth: 0 };
177
181
  const SEARCH_WIDTH = 220;
182
+ const SEARCH_DEBOUNCE_MS = 250;
178
183
  const TABLE_SEARCH_STYLE = {
179
184
  flex: `0 1 ${SEARCH_WIDTH}px`,
180
185
  minWidth: "12ch",
@@ -182,12 +187,12 @@ const TABLE_SEARCH_STYLE = {
182
187
  };
183
188
  const PAGE_SIZE_WIDTH = 116;
184
189
  function getOrderedHeaderGroups(table) {
185
- const left = table.getLeftHeaderGroups();
190
+ const start = table.getStartHeaderGroups();
186
191
  const center = table.getCenterHeaderGroups();
187
- const right = table.getRightHeaderGroups();
192
+ const end = table.getEndHeaderGroups();
188
193
  return center.map((group, index) => ({
189
194
  ...group,
190
- headers: [...left[index]?.headers ?? [], ...group.headers, ...right[index]?.headers ?? []]
195
+ headers: [...start[index]?.headers ?? [], ...group.headers, ...end[index]?.headers ?? []]
191
196
  }));
192
197
  }
193
198
  function getPinnedCellStyle(table, column) {
@@ -202,18 +207,18 @@ function getPinnedCellStyle(table, column) {
202
207
  maxWidth: size,
203
208
  backgroundColor: VX.surface.panel
204
209
  };
205
- if (pinned === "left") {
206
- const isEdge2 = column.getPinnedIndex() === table.getLeftLeafColumns().length - 1;
210
+ if (pinned === "start") {
211
+ const isEdge2 = column.getPinnedIndex() === table.getStartLeafColumns().length - 1;
207
212
  return {
208
213
  ...shared,
209
- left: column.getStart("left"),
214
+ insetInlineStart: column.getStart("start"),
210
215
  boxShadow: isEdge2 ? `4px 0 6px -4px ${alpha(VX.ink, 0.18)}` : void 0
211
216
  };
212
217
  }
213
218
  const isEdge = column.getPinnedIndex() === 0;
214
219
  return {
215
220
  ...shared,
216
- right: column.getAfter("right"),
221
+ insetInlineEnd: column.getAfter("end"),
217
222
  boxShadow: isEdge ? `-4px 0 6px -4px ${alpha(VX.ink, 0.18)}` : void 0
218
223
  };
219
224
  }
@@ -232,14 +237,15 @@ function foldOrder(columns) {
232
237
  }
233
238
  const FOLD_ID_ATTR = "data-basalt-fold-id";
234
239
  function planColumnFold(input) {
235
- const { room, toggleWidth, overhead, order, widths } = input;
240
+ const { room, toggleWidth, overhead, fixedCount = 0, order, widths } = input;
236
241
  const known = order.filter((id) => widths.has(id));
242
+ const roundingSlack = (known.length + fixedCount + 1) / 2;
237
243
  let unfolded = overhead + known.reduce((sum, id) => sum + (widths.get(id) ?? 0), 0);
238
244
  const folded = /* @__PURE__ */ new Set();
239
245
  for (const id of known) {
240
246
  if (folded.size >= known.length - 1) break;
241
247
  const withToggle = unfolded + (folded.size > 0 ? toggleWidth : 0);
242
- if (withToggle <= room) break;
248
+ if (withToggle <= room + roundingSlack) break;
243
249
  folded.add(id);
244
250
  unfolded -= widths.get(id) ?? 0;
245
251
  }
@@ -250,14 +256,12 @@ function useColumnFold(input) {
250
256
  const wrapperRef = useRef(null);
251
257
  const [folded, setFolded] = useState(EMPTY_FOLD_SET);
252
258
  const orderRef = useRef(order);
253
- orderRef.current = order;
254
259
  const fixedIdsRef = useRef(fixedIds);
255
- fixedIdsRef.current = fixedIds;
256
260
  useLayoutEffect(() => {
257
- if (!active || order.length === 0) {
258
- setFolded((current) => current.size === 0 ? current : EMPTY_FOLD_SET);
259
- }
260
- }, [active, order.length]);
261
+ orderRef.current = order;
262
+ fixedIdsRef.current = fixedIds;
263
+ });
264
+ if ((!active || order.length === 0) && folded.size > 0) setFolded(EMPTY_FOLD_SET);
261
265
  useMeasuredWidths({
262
266
  resolveRoot: () => wrapperRef.current,
263
267
  signature: `${order.join("|")}::${fixedIds.join("|")}`,
@@ -282,6 +286,7 @@ function useColumnFold(input) {
282
286
  // reads as one more `--vx-hit` control rather than a narrower afterthought.
283
287
  toggleWidth: HIT_COARSE,
284
288
  overhead,
289
+ fixedCount: fixedIdsRef.current.length,
285
290
  order: orderRef.current,
286
291
  widths
287
292
  });
@@ -303,7 +308,7 @@ function RowDisclosure({
303
308
  const cells = row.getAllCells().filter((cell) => folded.has(cell.column.id));
304
309
  return /* @__PURE__ */ jsx("div", { className: classes.foldDisclosure, children: cells.map((cell) => /* @__PURE__ */ jsxs("div", { className: classes.foldDisclosureRow, children: [
305
310
  /* @__PURE__ */ jsx(Text, { className: classes.foldDisclosureLabel, children: columnLabel(cell.column) }),
306
- /* @__PURE__ */ jsx("div", { className: classes.foldDisclosureValue, children: flexRender(cell.column.columnDef.cell, cell.getContext()) })
311
+ /* @__PURE__ */ jsx("div", { className: classes.foldDisclosureValue, children: /* @__PURE__ */ jsx(FlexRender, { cell }) })
307
312
  ] }, cell.id)) });
308
313
  }
309
314
  function FoldToggle({
@@ -424,6 +429,11 @@ function BasaltDataTable(props) {
424
429
  } = props;
425
430
  const tableState = useDataTableState(props, pageSizeOptions[0] ?? 10);
426
431
  const { globalFilter, columnPinning, onGlobalFilterChange: handleGlobalFilterChange } = tableState;
432
+ const [searchDraft, setSearchDraft] = useState(globalFilter);
433
+ const commitSearch = useDebouncedCallback(handleGlobalFilterChange, {
434
+ delay: SEARCH_DEBOUNCE_MS,
435
+ flushOnUnmount: true
436
+ });
427
437
  useValidateProps(
428
438
  "BasaltDataTable",
429
439
  () => [
@@ -447,8 +457,7 @@ function BasaltDataTable(props) {
447
457
  const id = columnDefId(column);
448
458
  const facet = id === void 0 ? void 0 : facetById.get(id);
449
459
  if (!facet) return column;
450
- const filterFn = facet.multiple ? (row, columnId, filterValue) => !Array.isArray(filterValue) || filterValue.length === 0 ? true : filterValue.includes(String(row.getValue(columnId))) : (row, columnId, filterValue) => filterValue === null || filterValue === void 0 || filterValue === "" ? true : String(row.getValue(columnId)) === filterValue;
451
- filterFn.autoRemove = (value) => value === null || value === void 0 || value === "" || Array.isArray(value) && value.length === 0;
460
+ const filterFn = facet.multiple ? facetAnyOf : facetExact;
452
461
  return { ...column, filterFn };
453
462
  });
454
463
  }, [columns, facets]);
@@ -476,7 +485,7 @@ function BasaltDataTable(props) {
476
485
  const scrolls = maxHeight !== void 0 || minWidth !== void 0;
477
486
  const foldEligible = minWidth === void 0;
478
487
  const { columnFoldOrder, columnFoldFixedIds } = useMemo(() => {
479
- const pinnedIds = /* @__PURE__ */ new Set([...columnPinning.left ?? [], ...columnPinning.right ?? []]);
488
+ const pinnedIds = /* @__PURE__ */ new Set([...columnPinning.start, ...columnPinning.end]);
480
489
  const excluded = new Set(
481
490
  columns.flatMap((column) => {
482
491
  const id = columnDefId(column);
@@ -489,19 +498,22 @@ function BasaltDataTable(props) {
489
498
  columnFoldFixedIds: [...excluded]
490
499
  };
491
500
  }, [columns, columnPinning]);
492
- const projection = useCardProjection(renderCard !== void 0);
493
- const columnFold = useColumnFold({
494
- active: foldEligible && !projection.cards,
501
+ const { cards: showCards, rootRef: projectionRootRef } = useCardProjection(
502
+ renderCard !== void 0
503
+ );
504
+ const { folded: foldedColumns, wrapperRef: foldWrapperRef } = useColumnFold({
505
+ active: foldEligible && !showCards,
495
506
  order: columnFoldOrder,
496
507
  fixedIds: columnFoldFixedIds
497
508
  });
498
509
  const columnVisibility = useMemo(
499
- () => Object.fromEntries([...columnFold.folded].map((id) => [id, false])),
500
- [columnFold.folded]
510
+ () => Object.fromEntries([...foldedColumns].map((id) => [id, false])),
511
+ [foldedColumns]
501
512
  );
502
- const hasFolded = columnFold.folded.size > 0;
513
+ const hasFolded = foldedColumns.size > 0;
503
514
  const foldRows = useRowDisclosure({ data, getRowId });
504
- const table = useReactTable({
515
+ const table = useTable({
516
+ features: basaltTableFeatures,
505
517
  data,
506
518
  columns: tableColumns,
507
519
  state: {
@@ -523,19 +535,16 @@ function BasaltDataTable(props) {
523
535
  onRowSelectionChange: tableState.onRowSelectionChange
524
536
  },
525
537
  ...getRowId !== void 0 && { getRowId },
526
- getCoreRowModel: getCoreRowModel(),
527
- getSortedRowModel: getSortedRowModel(),
528
- getFilteredRowModel: getFilteredRowModel(),
529
- // Both row models stay installed and are BYPASSED by these flags, which is TanStack's own
530
- // seam — so a degraded table renders `data` in the order and completeness the server sent it.
531
- // Forced only by a BREACH, never by `enableSorting={false}` on its own: that pair still applies
532
- // an `initialSorting` today (it disables the header control, not the row model) and a table
533
- // that is not misreporting has no business losing it.
538
+ // Every row model is registered on the feature set (v9 has no per-render switch) and BYPASSED by
539
+ // these flags, which is TanStack's own seam — so a degraded table renders `data` in the order
540
+ // and completeness the server sent it. Sorting/filtering are forced only by a BREACH, never by
541
+ // `enableSorting={false}` on its own: that pair still applies an `initialSorting` today (it
542
+ // disables the header control, not the row model) and a table that is not misreporting has no
543
+ // business losing it. Pagination is bypassed whenever it is not enabled, or is server-driven.
534
544
  manualSorting: manualSorting || breaches.includes("sorting"),
535
545
  manualFiltering: manualFiltering || breaches.includes("filtering"),
546
+ manualPagination: !enablePagination || manualPagination,
536
547
  ...enablePagination && {
537
- getPaginationRowModel: getPaginationRowModel(),
538
- manualPagination,
539
548
  ...manualPagination && rowCount !== void 0 && { rowCount },
540
549
  ...manualPagination && pageCount !== void 0 && { pageCount }
541
550
  },
@@ -548,7 +557,7 @@ function BasaltDataTable(props) {
548
557
  const branch = query === void 0 ? void 0 : dataQueryBranch("BasaltDataTable", query);
549
558
  const showSkeleton = branch === void 0 ? isLoading : branch === "pending";
550
559
  const queryError = branch === "error" && query !== void 0 ? query : void 0;
551
- const columnCount = columns.length + (enableRowSelection ? 1 : 0) + (hasFolded ? 1 : 0) - columnFold.folded.size;
560
+ const columnCount = columns.length + (enableRowSelection ? 1 : 0) + (hasFolded ? 1 : 0) - foldedColumns.size;
552
561
  const selectedModelRows = enableRowSelection ? table.getSelectedRowModel().rows : void 0;
553
562
  const selectedRows = useMemo(
554
563
  () => selectedModelRows?.map((row) => row.original) ?? [],
@@ -561,7 +570,9 @@ function BasaltDataTable(props) {
561
570
  const headerGroups = enablePinning ? getOrderedHeaderGroups(table) : table.getHeaderGroups();
562
571
  const rows = table.getRowModel().rows;
563
572
  const pageStickyHeader = !scrolls && stickyHeader === true;
564
- const containment = useMeasuredContainment(pageStickyHeader && !projection.cards);
573
+ const { wrapperRef: containmentRef, contained } = useMeasuredContainment(
574
+ pageStickyHeader && !showCards
575
+ );
565
576
  const resolvedStickyHeaderOffset = scrolls ? void 0 : stickyHeaderOffset;
566
577
  const errorNode = queryError !== void 0 && /* @__PURE__ */ jsx(
567
578
  ErrorState,
@@ -617,7 +628,7 @@ function BasaltDataTable(props) {
617
628
  ...pinnedStyle
618
629
  },
619
630
  children: [
620
- header.isPlaceholder ? null : flexRender(header.column.columnDef.header, header.getContext()),
631
+ header.isPlaceholder ? null : /* @__PURE__ */ jsx(FlexRender, { header }),
621
632
  canSort && /* @__PURE__ */ jsx(SortIndicator, { direction: sorted })
622
633
  ]
623
634
  },
@@ -627,9 +638,9 @@ function BasaltDataTable(props) {
627
638
  ] }, headerGroup.id)) }),
628
639
  /* @__PURE__ */ jsx(Table.Tbody, { children: queryError !== void 0 ? /* @__PURE__ */ jsx(Table.Tr, { children: /* @__PURE__ */ jsx(Table.Td, { colSpan: columnCount, children: errorNode }) }) : showSkeleton ? Array.from({ length: skeletonRows }, (_, rowIndex) => /* @__PURE__ */ jsx(Table.Tr, { children: Array.from({ length: columnCount }, (__, colIndex) => /* @__PURE__ */ jsx(Table.Td, { children: /* @__PURE__ */ jsx(Skeleton, { height: 16, radius: "sm" }) }, `skeleton-${rowIndex}-${colIndex}`)) }, `skeleton-${rowIndex}`)) : rows.length === 0 ? /* @__PURE__ */ jsx(Table.Tr, { children: /* @__PURE__ */ jsx(Table.Td, { colSpan: columnCount, children: emptyNode }) }) : rows.map((row) => {
629
640
  const cells = enablePinning ? [
630
- ...row.getLeftVisibleCells(),
641
+ ...row.getStartVisibleCells(),
631
642
  ...row.getCenterVisibleCells(),
632
- ...row.getRightVisibleCells()
643
+ ...row.getEndVisibleCells()
633
644
  ] : row.getVisibleCells();
634
645
  const rowExpanded = hasFolded && foldRows.expanded.has(row.id);
635
646
  return /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -666,7 +677,7 @@ function BasaltDataTable(props) {
666
677
  ...align !== void 0 && { textAlign: align },
667
678
  ...pinnedStyle
668
679
  },
669
- children: flexRender(cell.column.columnDef.cell, cell.getContext())
680
+ children: /* @__PURE__ */ jsx(FlexRender, { cell })
670
681
  },
671
682
  cell.id
672
683
  );
@@ -674,14 +685,14 @@ function BasaltDataTable(props) {
674
685
  ]
675
686
  }
676
687
  ),
677
- rowExpanded && /* @__PURE__ */ jsx(Table.Tr, { id: `${row.id}-fold`, className: classes.foldDisclosureRowTr, children: /* @__PURE__ */ jsx(Table.Td, { colSpan: columnCount, className: classes.foldDisclosureCell, children: /* @__PURE__ */ jsx(RowDisclosure, { row, folded: columnFold.folded }) }) })
688
+ rowExpanded && /* @__PURE__ */ jsx(Table.Tr, { id: `${row.id}-fold`, className: classes.foldDisclosureRowTr, children: /* @__PURE__ */ jsx(Table.Td, { colSpan: columnCount, className: classes.foldDisclosureCell, children: /* @__PURE__ */ jsx(RowDisclosure, { row, folded: foldedColumns }) }) })
678
689
  ] }, row.id);
679
690
  }) })
680
691
  ]
681
692
  }
682
693
  );
683
694
  const renderCardList = () => /* @__PURE__ */ jsx(Stack, { gap: "xs", className: cx(classNames?.table), children: queryError !== void 0 ? errorNode : showSkeleton ? Array.from({ length: skeletonRows }, (_, index) => /* @__PURE__ */ jsx(Skeleton, { height: 48, radius: "md" }, `skeleton-${index}`)) : rows.length === 0 ? emptyNode : rows.map((row) => /* @__PURE__ */ jsx(Box, { ...activationProps(onRowActivate, row.original), children: renderCard?.(row.original) }, row.id)) });
684
- const paginationState = table.getState().pagination;
695
+ const paginationState = table.state.pagination;
685
696
  const pageSizeRows = [.../* @__PURE__ */ new Set([...pageSizeOptions, paginationState.pageSize])].sort((a, b) => a - b).map((size) => ({ value: String(size), label: `${size} / page` }));
686
697
  const total = table.getRowCount();
687
698
  const rangeStart = total === 0 ? 0 : paginationState.pageIndex * paginationState.pageSize + 1;
@@ -689,7 +700,7 @@ function BasaltDataTable(props) {
689
700
  return /* @__PURE__ */ jsxs(
690
701
  "div",
691
702
  {
692
- ref: projection.rootRef,
703
+ ref: projectionRootRef,
693
704
  className: cx(classNames?.root, className),
694
705
  ...style !== void 0 && { style },
695
706
  children: [
@@ -720,8 +731,11 @@ function BasaltDataTable(props) {
720
731
  style: TABLE_SEARCH_STYLE,
721
732
  placeholder: globalFilterPlaceholder,
722
733
  leftSection: searchIcon,
723
- value: globalFilter,
724
- onChange: (event) => handleGlobalFilterChange(event.currentTarget.value)
734
+ value: searchDraft,
735
+ onChange: (event) => {
736
+ setSearchDraft(event.currentTarget.value);
737
+ commitSearch(event.currentTarget.value);
738
+ }
725
739
  }
726
740
  ),
727
741
  showFacets && /* @__PURE__ */ jsx(FilterSet, { children: facets?.map((facet) => {
@@ -749,7 +763,7 @@ function BasaltDataTable(props) {
749
763
  ) })
750
764
  ] }),
751
765
  bulkBarActions !== void 0 && /* @__PURE__ */ jsx(BulkActionBar, { count: selectedRows.length, actions: bulkBarActions }),
752
- projection.cards ? maxHeight === void 0 ? renderCardList() : /* @__PURE__ */ jsx(ScrollArea.Autosize, { mah: maxHeight, type: "hover", scrollbars: "y", children: renderCardList() }) : !foldEligible ? (
766
+ showCards ? maxHeight === void 0 ? renderCardList() : /* @__PURE__ */ jsx(ScrollArea.Autosize, { mah: maxHeight, type: "hover", scrollbars: "y", children: renderCardList() }) : !foldEligible ? (
753
767
  // An explicit `minWidth` is the one genuinely DECLARED horizontal floor — the column fold
754
768
  // never engages here (see `foldEligible`, above), so this shape keeps its exact
755
769
  // pre-existing DOM: no extra measuring wrapper for a table nothing folds.
@@ -759,17 +773,17 @@ function BasaltDataTable(props) {
759
773
  // `maxHeight`-only included: a vertical cap is orthogonal to column width, so a
760
774
  // `stickyHeader` + `maxHeight` table (the pairing this package's own docs recommend) still
761
775
  // folds instead of silently regressing to horizontal scroll. A plain block box, so it
762
- // constrains nothing on its own; `columnFold.wrapperRef` only reads it.
763
- /* @__PURE__ */ jsx("div", { ref: columnFold.wrapperRef, className: classes.foldWrapper, children: pageStickyHeader ? (
776
+ // constrains nothing on its own; `foldWrapperRef` only reads it.
777
+ /* @__PURE__ */ jsx("div", { ref: foldWrapperRef, className: classes.foldWrapper, children: pageStickyHeader ? (
764
778
  // Pinning takes this wrapper too — a pinned column's offsets are `position: sticky` on
765
779
  // the cells and need no overflow box of their own, so the `overflow-x: auto` Box that
766
780
  // used to sit here was the exact inert-sticky defect this shape exists to avoid.
767
781
  /* @__PURE__ */ jsx(
768
782
  "div",
769
783
  {
770
- ref: containment.wrapperRef,
784
+ ref: containmentRef,
771
785
  className: classes.containment,
772
- "data-contained": containment.contained ? "true" : "false",
786
+ "data-contained": contained ? "true" : "false",
773
787
  children: tableNode
774
788
  }
775
789
  )
@@ -0,0 +1,18 @@
1
+ /**
2
+ * ./table — BasaltDataTable: a sortable data table over @tanstack/react-table v9, rendered with
3
+ * Mantine primitives. Opt-in chrome: a search/facet toolbar, a pagination bar (client-side or
4
+ * server-driven) and sticky column pinning. `createColumnHelper` is basalt's own, bound to the
5
+ * table's feature set — no TanStack hook, feature or row-model symbol leaves this subpath.
6
+ *
7
+ * Optional peer: @tanstack/react-table 9.2.8 (exact).
8
+ *
9
+ * @example
10
+ * import { BasaltDataTable, createColumnHelper } from 'basalt-ui/table'
11
+ * type Row = { name: string; score: number }
12
+ * const col = createColumnHelper<Row>()
13
+ * const columns = [col.accessor('name', { header: 'Name' }), col.accessor('score', { header: 'Score' })]
14
+ * <BasaltDataTable data={rows} columns={columns} enableGlobalFilter enablePagination />
15
+ */
16
+ export { BasaltDataTable } from './data-table.js';
17
+ export { createColumnHelper } from './table-features.js';
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/table/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { BasaltDataTable } from "./data-table.js";
2
- import { createColumnHelper } from "@tanstack/react-table";
2
+ import { createColumnHelper } from "./table-features.js";
3
3
  export {
4
4
  BasaltDataTable,
5
5
  createColumnHelper
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-branch.d.ts","sourceRoot":"","sources":["../../src/table/query-branch.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAEhE;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAA;AAE3D;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,GAC7B,eAAe,CAOjB"}
@@ -0,0 +1,69 @@
1
+ import type { ColumnDef, ColumnHelper, RowData } from '@tanstack/react-table';
2
+ /** Horizontal alignment of a column's header AND its cells. */
3
+ export type DataTableAlign = 'left' | 'center' | 'right';
4
+ /**
5
+ * What a column def's `meta` may carry. Registered per table through `columnMeta: metaHelper<…>()`
6
+ * rather than a global `declare module '@tanstack/react-table'`, so `meta: { aling: 'right' }` is a
7
+ * compile error (excess-property check on the literal) and nothing leaks into a consumer's own
8
+ * TanStack types. A wrong align VALUE that reaches runtime still throws at render.
9
+ */
10
+ export type BasaltColumnMeta = {
11
+ align?: DataTableAlign;
12
+ /**
13
+ * Opt OUT of the automatic mono-numeral cell style. The table applies it whenever the cell's
14
+ * raw value is a number — which is right for a plain figure and wrong for a numeric accessor
15
+ * whose `cell` renders its own chrome (a coloured `Text`, a `Badge`, a sparkline), because the
16
+ * `<td>`'s mono font then overrides what the cell asked for.
17
+ */
18
+ numeral?: boolean;
19
+ /**
20
+ * Fold priority for the measured column fold (`docs/CONTROLS-SPEC.md` §2): once the
21
+ * table no longer fits its wrapper, the HIGHEST-numbered priority column folds first, moving
22
+ * into a per-row disclosure instead of forcing the table into horizontal scroll. Unset columns
23
+ * fall back to their declared position, so a bare `<BasaltDataTable data columns />` folds its
24
+ * LAST column first — nothing regresses with no `meta.priority` set anywhere. See `foldOrder`.
25
+ */
26
+ priority?: number;
27
+ };
28
+ /**
29
+ * Every row model is registered (v9 has no per-render `getXRowModel` switch); the table bypasses the
30
+ * ones a prop turns off through TanStack's `manual*` flags. `sortFns` is load-bearing: v9 falls back
31
+ * to `basic` for an unregistered sort function with only a dev warning, which sorts `Project 10`
32
+ * before `Project 2`. `columnSizingFeature` is too — `column.getStart`/`getAfter` live there, and
33
+ * sticky pinning reads them.
34
+ */
35
+ export declare const basaltTableFeatures: {
36
+ rowSortingFeature: import("@tanstack/react-table").TableFeature;
37
+ columnFilteringFeature: import("@tanstack/react-table").TableFeature;
38
+ globalFilteringFeature: import("@tanstack/react-table").TableFeature;
39
+ rowPaginationFeature: import("@tanstack/react-table").TableFeature;
40
+ rowSelectionFeature: import("@tanstack/react-table").TableFeature;
41
+ columnSizingFeature: import("@tanstack/react-table").TableFeature;
42
+ columnPinningFeature: import("@tanstack/react-table").TableFeature;
43
+ columnVisibilityFeature: import("@tanstack/react-table").TableFeature;
44
+ sortedRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
45
+ filteredRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
46
+ paginatedRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
47
+ sortFns: {
48
+ alphanumeric: import("@tanstack/react-table").CreatedSortFn<any, any>;
49
+ text: import("@tanstack/react-table").CreatedSortFn<any, any>;
50
+ datetime: import("@tanstack/react-table").CreatedSortFn<any, any>;
51
+ basic: import("@tanstack/react-table").CreatedSortFn<any, any>;
52
+ };
53
+ filterFns: {
54
+ includesString: import("@tanstack/react-table").CreatedFilterFn<any, any>;
55
+ };
56
+ columnMeta: BasaltColumnMeta;
57
+ };
58
+ export type BasaltTableFeatures = typeof basaltTableFeatures;
59
+ /**
60
+ * A column def of `BasaltDataTable`'s feature set; the cell value varies per column, hence the `any`.
61
+ * Build columns with `createColumnHelper` below — hand-typing this is not the supported path.
62
+ */
63
+ export type BasaltColumnDef<T extends RowData> = ColumnDef<BasaltTableFeatures, T, any>;
64
+ /**
65
+ * Typed accessor builder for `BasaltDataTable` columns: `col.accessor('field', …)` columns sort by
66
+ * value. One generic, the row type — the feature set is basalt's.
67
+ */
68
+ export declare function createColumnHelper<T extends RowData>(): ColumnHelper<BasaltTableFeatures, T>;
69
+ //# sourceMappingURL=table-features.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-features.d.ts","sourceRoot":"","sources":["../../src/table/table-features.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAE7E,+DAA+D;AAC/D,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;AAExD;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,CAAC,EAAE,cAAc,CAAA;IACtB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;CAoB9B,CAAA;AAEF,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAA;AAE5D;;;GAGG;AAEH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,OAAO,IAAI,SAAS,CAAC,mBAAmB,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;AAEvF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,OAAO,KAAK,YAAY,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAE5F"}
@@ -0,0 +1,49 @@
1
+ import {
2
+ columnFilteringFeature,
3
+ columnPinningFeature,
4
+ columnSizingFeature,
5
+ columnVisibilityFeature,
6
+ createColumnHelper as tanstackColumnHelper,
7
+ createFilteredRowModel,
8
+ createPaginatedRowModel,
9
+ createSortedRowModel,
10
+ filterFn_includesString,
11
+ globalFilteringFeature,
12
+ metaHelper,
13
+ rowPaginationFeature,
14
+ rowSelectionFeature,
15
+ rowSortingFeature,
16
+ sortFn_alphanumeric,
17
+ sortFn_basic,
18
+ sortFn_datetime,
19
+ sortFn_text,
20
+ tableFeatures
21
+ } from "@tanstack/react-table";
22
+ const basaltTableFeatures = tableFeatures({
23
+ rowSortingFeature,
24
+ columnFilteringFeature,
25
+ globalFilteringFeature,
26
+ rowPaginationFeature,
27
+ rowSelectionFeature,
28
+ columnSizingFeature,
29
+ columnPinningFeature,
30
+ columnVisibilityFeature,
31
+ sortedRowModel: createSortedRowModel(),
32
+ filteredRowModel: createFilteredRowModel(),
33
+ paginatedRowModel: createPaginatedRowModel(),
34
+ sortFns: {
35
+ alphanumeric: sortFn_alphanumeric,
36
+ text: sortFn_text,
37
+ datetime: sortFn_datetime,
38
+ basic: sortFn_basic
39
+ },
40
+ filterFns: { includesString: filterFn_includesString },
41
+ columnMeta: metaHelper()
42
+ });
43
+ function createColumnHelper() {
44
+ return tanstackColumnHelper();
45
+ }
46
+ export {
47
+ basaltTableFeatures,
48
+ createColumnHelper
49
+ };
@@ -0,0 +1,77 @@
1
+ import type { ThreadStatus } from './agent/thread.js';
2
+ /** Epoch ms (`performance.timeOrigin + performance.now()`). */
3
+ type At = {
4
+ start: number;
5
+ };
6
+ /** `start` plus a duration in ms. */
7
+ type Span = At & {
8
+ duration: number;
9
+ };
10
+ /** The error family, or an `AgentError` kind (W8) — closed. */
11
+ type ErrorKind = 'route' | 'query' | 'mutation' | 'render' | 'window' | 'unhandledrejection' | 'http' | 'stream' | 'server' | 'aborted';
12
+ type Failure = {
13
+ 'exception.type': string;
14
+ 'basalt.error.kind': ErrorKind;
15
+ };
16
+ type Ok<T, A> = Span & {
17
+ type: T;
18
+ failed: false;
19
+ attributes: A;
20
+ };
21
+ type Err<T, A, S = At> = S & {
22
+ type: T;
23
+ failed: true;
24
+ attributes: A & Failure;
25
+ };
26
+ type RouteAttrs = {
27
+ 'basalt.route.id': string;
28
+ 'basalt.route.from': string;
29
+ /** Pathname, never search. */
30
+ 'url.path': string;
31
+ };
32
+ type ChatAttrs = {
33
+ 'basalt.chat.thread_id': string;
34
+ 'basalt.chat.ttft_ms': number;
35
+ 'basalt.chat.parts': number;
36
+ 'basalt.chat.status': ThreadStatus;
37
+ };
38
+ /**
39
+ * Closed union: switch on `type`/`failed` and end with `default: return event satisfies never`.
40
+ *
41
+ * @example
42
+ * export function telemetry(e: BasaltEvent): void {
43
+ * const span = tracer.startSpan(e.type, { startTime: e.start, attributes: { ...e.attributes } })
44
+ * if (e.failed) span.setStatus({ code: SpanStatusCode.ERROR })
45
+ * span.end('duration' in e ? e.start + e.duration : e.start)
46
+ * }
47
+ */
48
+ export type BasaltEvent = Ok<'route.navigate', RouteAttrs> | Err<'route.error', {
49
+ 'basalt.route.id': string;
50
+ }> | Err<'query.error', {
51
+ 'basalt.query.hash': string;
52
+ 'basalt.query.failure_count': number;
53
+ }> | Err<'mutation.error', {
54
+ 'basalt.mutation.key': string;
55
+ }> | Err<'render.error', {
56
+ 'basalt.error.boundary': 'root';
57
+ }> | Err<'window.error', {
58
+ 'basalt.error.source': 'error' | 'unhandledrejection';
59
+ }> | Ok<'chat.turn', ChatAttrs> | Err<'chat.turn', ChatAttrs, Span>;
60
+ export type Telemetry = (event: BasaltEvent) => void;
61
+ export declare const now: () => number;
62
+ /** `error.name`, `'Error'` for a non-`Error` throw. */
63
+ export declare const errorName: (error: unknown) => string;
64
+ /**
65
+ * Wrap a sink so it is called synchronously and a throwing sink never breaks a render. No sink, no
66
+ * events.
67
+ */
68
+ export declare function createEmitter(sink: Telemetry | undefined): Telemetry;
69
+ /**
70
+ * The provider's wrapped emitter, for hooks that emit their own events (`useAgentThreadRuns`'
71
+ * `chat.turn`). `undefined` outside a `BasaltProvider`, where such a hook emits nothing.
72
+ */
73
+ export declare const TelemetryContext: import("react").Context<Telemetry | undefined>;
74
+ export declare function bindRouterTelemetry(router: object, emit: Telemetry): () => void;
75
+ export declare function routerTelemetry(router: object): Telemetry;
76
+ export {};
77
+ //# sourceMappingURL=telemetry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAElD,+DAA+D;AAC/D,KAAK,EAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAC3B,qCAAqC;AACrC,KAAK,IAAI,GAAG,EAAE,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAA;AAErC,+DAA+D;AAC/D,KAAK,SAAS,GACV,OAAO,GACP,OAAO,GACP,UAAU,GACV,QAAQ,GACR,QAAQ,GACR,oBAAoB,GACpB,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,SAAS,CAAA;AAEb,KAAK,OAAO,GAAG;IAAE,gBAAgB,EAAE,MAAM,CAAC;IAAC,mBAAmB,EAAE,SAAS,CAAA;CAAE,CAAA;AAC3E,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,GAAG;IAAE,IAAI,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC;IAAC,UAAU,EAAE,CAAC,CAAA;CAAE,CAAA;AAChE,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG;IAAE,IAAI,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,CAAC,GAAG,OAAO,CAAA;CAAE,CAAA;AAE/E,KAAK,UAAU,GAAG;IAChB,iBAAiB,EAAE,MAAM,CAAA;IACzB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,KAAK,SAAS,GAAG;IACf,uBAAuB,EAAE,MAAM,CAAA;IAC/B,qBAAqB,EAAE,MAAM,CAAA;IAC7B,mBAAmB,EAAE,MAAM,CAAA;IAC3B,oBAAoB,EAAE,YAAY,CAAA;CACnC,CAAA;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,WAAW,GACnB,EAAE,CAAC,gBAAgB,EAAE,UAAU,CAAC,GAChC,GAAG,CAAC,aAAa,EAAE;IAAE,iBAAiB,EAAE,MAAM,CAAA;CAAE,CAAC,GACjD,GAAG,CAAC,aAAa,EAAE;IAAE,mBAAmB,EAAE,MAAM,CAAC;IAAC,4BAA4B,EAAE,MAAM,CAAA;CAAE,CAAC,GACzF,GAAG,CAAC,gBAAgB,EAAE;IAAE,qBAAqB,EAAE,MAAM,CAAA;CAAE,CAAC,GACxD,GAAG,CAAC,cAAc,EAAE;IAAE,uBAAuB,EAAE,MAAM,CAAA;CAAE,CAAC,GACxD,GAAG,CAAC,cAAc,EAAE;IAAE,qBAAqB,EAAE,OAAO,GAAG,oBAAoB,CAAA;CAAE,CAAC,GAC9E,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,GAC1B,GAAG,CAAC,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;AAErC,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAA;AAEpD,eAAO,MAAM,GAAG,QAAO,MAAoD,CAAA;AAE3E,uDAAuD;AACvD,eAAO,MAAM,SAAS,GAAI,OAAO,OAAO,KAAG,MAAyD,CAAA;AAEpG;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CASpE;AAID;;;GAGG;AACH,eAAO,MAAM,gBAAgB,gDAAkD,CAAA;AAK/E,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,IAAI,CAK/E;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAEzD"}
@@ -0,0 +1,33 @@
1
+ import { createContext } from "react";
2
+ const now = () => performance.timeOrigin + performance.now();
3
+ const errorName = (error) => error instanceof Error ? error.name : "Error";
4
+ function createEmitter(sink) {
5
+ if (sink === void 0) return noop;
6
+ return (event) => {
7
+ try {
8
+ sink(event);
9
+ } catch {
10
+ }
11
+ };
12
+ }
13
+ function noop() {
14
+ }
15
+ const TelemetryContext = createContext(void 0);
16
+ const routerSinks = /* @__PURE__ */ new WeakMap();
17
+ function bindRouterTelemetry(router, emit) {
18
+ routerSinks.set(router, emit);
19
+ return () => {
20
+ if (routerSinks.get(router) === emit) routerSinks.delete(router);
21
+ };
22
+ }
23
+ function routerTelemetry(router) {
24
+ return routerSinks.get(router) ?? noop;
25
+ }
26
+ export {
27
+ TelemetryContext,
28
+ bindRouterTelemetry,
29
+ createEmitter,
30
+ errorName,
31
+ now,
32
+ routerTelemetry
33
+ };