basalt-ui 1.41.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (914) hide show
  1. package/AGENTS.md +46 -43
  2. package/CHANGELOG.md +535 -518
  3. package/MIGRATING.md +945 -37
  4. package/README.md +171 -366
  5. package/agent/rules/basalt-batteries.md +19 -74
  6. package/agent/rules/basalt-charts.md +21 -95
  7. package/agent/rules/basalt-controls.md +23 -131
  8. package/agent/rules/basalt-mantine.md +26 -99
  9. package/agent/rules/basalt-state.md +21 -103
  10. package/agent/rules/basalt-tokens.md +33 -114
  11. package/agent/skills/basalt-app/SKILL.md +229 -72
  12. package/agent/skills/basalt-charts/SKILL.md +23 -57
  13. package/agent/skills/basalt-design/SKILL.md +12 -70
  14. package/agent/templates/AGENTS-block.md.tpl +16 -26
  15. package/agent/templates/DESIGN.md.tpl +1 -1
  16. package/agent/templates/__root.tpl +9 -16
  17. package/agent/templates/main.tpl +21 -0
  18. package/agent/templates/nav.tpl +18 -0
  19. package/configs/oxlint-basalt.json +4 -10
  20. package/configs/oxlint-plugin.js +465 -844
  21. package/configs/oxlint-plugin.test.ts +661 -709
  22. package/configs/oxlint.json +10 -2
  23. package/dist/agent/ai-sdk-transport.d.ts +19 -7
  24. package/dist/agent/ai-sdk-transport.d.ts.map +1 -1
  25. package/dist/agent/ai-sdk-transport.js +10 -7
  26. package/dist/{agent-chat → agent/chat}/composer.d.ts +16 -16
  27. package/dist/agent/chat/composer.d.ts.map +1 -0
  28. package/dist/{agent-chat → agent/chat}/composer.js +10 -9
  29. package/dist/{agent-chat → agent/chat}/message-affordances.d.ts +7 -6
  30. package/dist/agent/chat/message-affordances.d.ts.map +1 -0
  31. package/dist/agent/chat/relative-time.d.ts.map +1 -0
  32. package/dist/{agent-chat → agent/chat}/thread-feed-row.d.ts +18 -16
  33. package/dist/agent/chat/thread-feed-row.d.ts.map +1 -0
  34. package/dist/{agent-chat → agent/chat}/thread-feed-row.js +12 -11
  35. package/dist/{agent-chat → agent/chat}/thread-feed.d.ts +8 -8
  36. package/dist/agent/chat/thread-feed.d.ts.map +1 -0
  37. package/dist/{agent-chat → agent/chat}/thread-feed.js +12 -10
  38. package/dist/{agent-chat → agent/chat}/thread-message.d.ts +12 -9
  39. package/dist/agent/chat/thread-message.d.ts.map +1 -0
  40. package/dist/{agent-chat → agent/chat}/thread-message.js +15 -13
  41. package/dist/{agent-chat → agent/chat}/thread-outcome-card.d.ts +2 -2
  42. package/dist/agent/chat/thread-outcome-card.d.ts.map +1 -0
  43. package/dist/{agent-chat → agent/chat}/thread-outcome-card.js +3 -3
  44. package/dist/{agent-chat → agent/chat}/tool-chip.d.ts +5 -5
  45. package/dist/agent/chat/tool-chip.d.ts.map +1 -0
  46. package/dist/{agent-chat → agent/chat}/tool-chip.js +4 -4
  47. package/dist/agent/chat/use-keyboard-inset.d.ts.map +1 -0
  48. package/dist/{agent-chat → agent/chat}/use-keyboard-inset.js +1 -1
  49. package/dist/{agent-chat → agent/chat}/virtualize.d.ts +7 -7
  50. package/dist/agent/chat/virtualize.d.ts.map +1 -0
  51. package/dist/agent/error.d.ts +31 -0
  52. package/dist/agent/error.d.ts.map +1 -0
  53. package/dist/agent/error.js +18 -0
  54. package/dist/agent/history.d.ts +2 -36
  55. package/dist/agent/history.d.ts.map +1 -1
  56. package/dist/agent/history.js +0 -32
  57. package/dist/agent/id.d.ts +4 -5
  58. package/dist/agent/id.d.ts.map +1 -1
  59. package/dist/agent/index.d.ts +19 -52
  60. package/dist/agent/index.d.ts.map +1 -1
  61. package/dist/agent/index.js +10 -32
  62. package/dist/agent/outcome.d.ts +3 -14
  63. package/dist/agent/outcome.d.ts.map +1 -1
  64. package/dist/agent/outcome.js +0 -30
  65. package/dist/agent/part-list.d.ts +3 -3
  66. package/dist/agent/part-list.d.ts.map +1 -1
  67. package/dist/agent/parts.d.ts +23 -24
  68. package/dist/agent/parts.d.ts.map +1 -1
  69. package/dist/agent/run-committer.d.ts +23 -0
  70. package/dist/agent/run-committer.d.ts.map +1 -0
  71. package/dist/agent/run-committer.js +41 -0
  72. package/dist/agent/run-records.d.ts +77 -0
  73. package/dist/agent/run-records.d.ts.map +1 -0
  74. package/dist/agent/run-records.js +69 -0
  75. package/dist/agent/thread.d.ts +23 -47
  76. package/dist/agent/thread.d.ts.map +1 -1
  77. package/dist/agent/thread.js +3 -134
  78. package/dist/agent/transport.d.ts +6 -69
  79. package/dist/agent/transport.d.ts.map +1 -1
  80. package/dist/agent/transport.js +0 -18
  81. package/dist/agent/use-agent-thread-runs.d.ts +63 -26
  82. package/dist/agent/use-agent-thread-runs.d.ts.map +1 -1
  83. package/dist/agent/use-agent-thread-runs.js +202 -66
  84. package/dist/charts/BandStrip.d.ts +46 -0
  85. package/dist/charts/BandStrip.d.ts.map +1 -0
  86. package/dist/charts/BandStrip.js +151 -0
  87. package/dist/charts/Bars.d.ts +19 -0
  88. package/dist/charts/Bars.d.ts.map +1 -0
  89. package/dist/charts/Bars.js +77 -0
  90. package/dist/charts/CartesianChart.d.ts +57 -0
  91. package/dist/charts/CartesianChart.d.ts.map +1 -0
  92. package/dist/charts/CartesianChart.js +121 -0
  93. package/dist/charts/ChartCard.d.ts +34 -0
  94. package/dist/charts/ChartCard.d.ts.map +1 -0
  95. package/dist/charts/ChartCard.js +115 -0
  96. package/dist/charts/Donut.d.ts +25 -0
  97. package/dist/charts/Donut.d.ts.map +1 -0
  98. package/dist/charts/Donut.js +191 -0
  99. package/dist/charts/DualPanel.d.ts +47 -0
  100. package/dist/charts/DualPanel.d.ts.map +1 -0
  101. package/dist/charts/DualPanel.js +214 -0
  102. package/dist/charts/Heatmap.d.ts +41 -0
  103. package/dist/charts/Heatmap.d.ts.map +1 -0
  104. package/dist/charts/Heatmap.js +216 -0
  105. package/dist/charts/Lines.d.ts +11 -0
  106. package/dist/charts/Lines.d.ts.map +1 -0
  107. package/dist/charts/Lines.js +114 -0
  108. package/dist/charts/MirroredBars.d.ts +44 -0
  109. package/dist/charts/MirroredBars.d.ts.map +1 -0
  110. package/dist/charts/MirroredBars.js +190 -0
  111. package/dist/charts/Sparkline.d.ts +22 -0
  112. package/dist/charts/Sparkline.d.ts.map +1 -0
  113. package/dist/charts/Sparkline.js +129 -0
  114. package/dist/charts/StackedArea.d.ts +15 -0
  115. package/dist/charts/StackedArea.d.ts.map +1 -0
  116. package/dist/charts/StackedArea.js +46 -0
  117. package/dist/charts/box.d.ts +38 -0
  118. package/dist/charts/box.d.ts.map +1 -0
  119. package/dist/charts/box.js +72 -0
  120. package/dist/charts/card-context.d.ts +3 -0
  121. package/dist/charts/card-context.d.ts.map +1 -0
  122. package/dist/charts/card-context.js +7 -0
  123. package/dist/charts/chart-box.module.css +64 -0
  124. package/{src/content/article-card.module.css.d.ts → dist/charts/chart-box.module.css.d.ts} +5 -9
  125. package/dist/charts/chart-card.module.css +25 -0
  126. package/dist/{dashboard/widget-grid.module.css.d.ts → charts/chart-card.module.css.d.ts} +1 -3
  127. package/dist/charts/chart-legend.module.css +38 -0
  128. package/{src/dashboard/widget-grid.module.css.d.ts → dist/charts/chart-legend.module.css.d.ts} +3 -3
  129. package/dist/charts/compile.d.ts +62 -0
  130. package/dist/charts/compile.d.ts.map +1 -0
  131. package/dist/charts/compile.js +386 -0
  132. package/dist/charts/cursor.d.ts +50 -0
  133. package/dist/charts/cursor.d.ts.map +1 -0
  134. package/dist/charts/cursor.js +157 -0
  135. package/dist/charts/curves.d.ts +12 -0
  136. package/dist/charts/curves.d.ts.map +1 -0
  137. package/dist/charts/curves.js +86 -0
  138. package/dist/charts/donut.module.css +54 -0
  139. package/dist/{content/article-card.module.css.d.ts → charts/donut.module.css.d.ts} +2 -9
  140. package/dist/charts/host.d.ts +17 -0
  141. package/dist/charts/host.d.ts.map +1 -0
  142. package/dist/charts/host.js +35 -0
  143. package/dist/charts/index.d.ts +18 -53
  144. package/dist/charts/index.d.ts.map +1 -1
  145. package/dist/charts/index.js +17 -189
  146. package/dist/charts/legend.d.ts +23 -0
  147. package/dist/charts/legend.d.ts.map +1 -0
  148. package/dist/charts/legend.js +160 -0
  149. package/dist/charts/marks.d.ts +25 -0
  150. package/dist/charts/marks.d.ts.map +1 -0
  151. package/dist/charts/marks.js +128 -0
  152. package/dist/charts/panel.d.ts +56 -0
  153. package/dist/charts/panel.d.ts.map +1 -0
  154. package/dist/charts/panel.js +123 -0
  155. package/dist/charts/scales.d.ts +44 -0
  156. package/dist/charts/scales.d.ts.map +1 -0
  157. package/dist/charts/scales.js +163 -0
  158. package/dist/charts/sizing.d.ts +12 -0
  159. package/dist/charts/sizing.d.ts.map +1 -0
  160. package/dist/charts/sizing.js +33 -0
  161. package/dist/charts/state.d.ts +17 -0
  162. package/dist/charts/state.d.ts.map +1 -0
  163. package/dist/charts/state.js +53 -0
  164. package/dist/charts/theme.d.ts +38 -19
  165. package/dist/charts/theme.d.ts.map +1 -1
  166. package/dist/charts/theme.js +48 -26
  167. package/dist/charts/types.d.ts +227 -0
  168. package/dist/charts/types.d.ts.map +1 -0
  169. package/dist/charts/types.js +4 -0
  170. package/dist/cli/audit-allows.d.ts +4 -17
  171. package/dist/cli/audit-allows.d.ts.map +1 -1
  172. package/dist/cli/config.d.ts +14 -43
  173. package/dist/cli/config.d.ts.map +1 -1
  174. package/dist/cli/doctor-upgrade.d.ts +31 -0
  175. package/dist/cli/doctor-upgrade.d.ts.map +1 -0
  176. package/dist/cli/doctor-upgrade.js +269 -0
  177. package/dist/cli/doctor.d.ts +13 -29
  178. package/dist/cli/doctor.d.ts.map +1 -1
  179. package/dist/cli/doctor.js +51 -9
  180. package/dist/cli/help.d.ts.map +1 -1
  181. package/dist/cli/help.js +2 -4
  182. package/dist/cli/index.d.ts +48 -172
  183. package/dist/cli/index.d.ts.map +1 -1
  184. package/dist/cli/index.js +39 -132
  185. package/dist/cli/init.d.ts.map +1 -1
  186. package/dist/cli/init.js +43 -37
  187. package/dist/cli/sync.d.ts +5 -21
  188. package/dist/cli/sync.d.ts.map +1 -1
  189. package/dist/cli/sync.js +4 -23
  190. package/dist/cli/tokens-css.d.ts +7 -28
  191. package/dist/cli/tokens-css.d.ts.map +1 -1
  192. package/dist/commands/ShortcutsHelp.d.ts.map +1 -1
  193. package/dist/commands/ShortcutsHelp.js +4 -5
  194. package/dist/commands/define-commands.d.ts +15 -31
  195. package/dist/commands/define-commands.d.ts.map +1 -1
  196. package/dist/commands/define-commands.js +1 -11
  197. package/dist/commands/define-overlays.d.ts +5 -19
  198. package/dist/commands/define-overlays.d.ts.map +1 -1
  199. package/dist/commands/define-overlays.js +3 -11
  200. package/dist/commands/index.d.ts +10 -40
  201. package/dist/commands/index.d.ts.map +1 -1
  202. package/dist/commands/index.js +9 -46
  203. package/dist/{notifications → commands/notifications}/bell.d.ts +1 -1
  204. package/dist/commands/notifications/bell.d.ts.map +1 -0
  205. package/dist/{notifications → commands/notifications}/center.d.ts +2 -2
  206. package/dist/commands/notifications/center.d.ts.map +1 -0
  207. package/dist/{notifications → commands/notifications}/center.js +2 -2
  208. package/dist/{notifications → commands/notifications}/define-notifications.d.ts +3 -3
  209. package/dist/commands/notifications/define-notifications.d.ts.map +1 -0
  210. package/dist/commands/notifications/notify.d.ts +44 -0
  211. package/dist/commands/notifications/notify.d.ts.map +1 -0
  212. package/dist/commands/notifications/notify.js +79 -0
  213. package/dist/{notifications → commands/notifications}/store.d.ts +2 -0
  214. package/dist/commands/notifications/store.d.ts.map +1 -0
  215. package/dist/{notifications → commands/notifications}/store.js +4 -0
  216. package/dist/commands/projectors.d.ts +1 -131
  217. package/dist/commands/projectors.d.ts.map +1 -1
  218. package/dist/commands/projectors.js +2 -73
  219. package/dist/commands/shell-bridge.d.ts +3 -3
  220. package/dist/commands/shortcut-format.d.ts +5 -4
  221. package/dist/commands/shortcut-format.d.ts.map +1 -1
  222. package/dist/common/errors.d.ts +3 -3
  223. package/dist/common/use-measured-widths.d.ts.map +1 -1
  224. package/dist/common/use-measured-widths.js +5 -3
  225. package/dist/common/validate.d.ts +2 -2
  226. package/dist/content/article-layout.d.ts.map +1 -1
  227. package/dist/content/article-layout.js +3 -3
  228. package/dist/content/article-model.d.ts +1 -46
  229. package/dist/content/article-model.d.ts.map +1 -1
  230. package/dist/content/article-model.js +1 -29
  231. package/dist/content/index.d.ts +11 -41
  232. package/dist/content/index.d.ts.map +1 -1
  233. package/dist/content/index.js +3 -35
  234. package/dist/content/markdown.d.ts +1 -1
  235. package/dist/content/markdown.d.ts.map +1 -1
  236. package/dist/content/markdown.js +1 -1
  237. package/dist/content/mermaid.d.ts.map +1 -1
  238. package/dist/content/mermaid.js +7 -7
  239. package/dist/content/slug.d.ts +1 -8
  240. package/dist/content/slug.d.ts.map +1 -1
  241. package/dist/content/slug.js +1 -8
  242. package/dist/content/url-hardening.d.ts +2 -2
  243. package/dist/content/url-hardening.d.ts.map +1 -1
  244. package/dist/content/url-hardening.js +2 -0
  245. package/dist/controls/actions.d.ts +16 -1
  246. package/dist/controls/actions.d.ts.map +1 -1
  247. package/dist/controls/enum-filter.d.ts +1 -1
  248. package/dist/controls/enum-filter.d.ts.map +1 -1
  249. package/dist/controls/filter-context.d.ts.map +1 -1
  250. package/dist/controls/filter-context.js +3 -1
  251. package/dist/controls/filter-set.js +4 -6
  252. package/dist/controls/form-layout.d.ts +1 -1
  253. package/dist/controls/form-layout.d.ts.map +1 -1
  254. package/dist/controls/form-layout.js +1 -1
  255. package/dist/controls/glyphs.d.ts +0 -2
  256. package/dist/controls/glyphs.d.ts.map +1 -1
  257. package/dist/controls/glyphs.js +0 -7
  258. package/dist/controls/index.d.ts +12 -17
  259. package/dist/controls/index.d.ts.map +1 -1
  260. package/dist/controls/index.js +5 -39
  261. package/dist/controls/multi-select-filter.d.ts +4 -3
  262. package/dist/controls/multi-select-filter.d.ts.map +1 -1
  263. package/dist/controls/number-filter.d.ts +4 -3
  264. package/dist/controls/number-filter.d.ts.map +1 -1
  265. package/dist/controls/number-filter.js +3 -1
  266. package/dist/controls/range-filter.d.ts +4 -3
  267. package/dist/controls/range-filter.d.ts.map +1 -1
  268. package/dist/controls/search-filter.d.ts +4 -3
  269. package/dist/controls/search-filter.d.ts.map +1 -1
  270. package/dist/controls/search-filter.js +19 -14
  271. package/dist/controls/select-filter.d.ts +4 -3
  272. package/dist/controls/select-filter.d.ts.map +1 -1
  273. package/dist/controls/sync-button.d.ts.map +1 -1
  274. package/dist/controls/sync-button.js +12 -15
  275. package/dist/controls/toggle-filter.d.ts +4 -3
  276. package/dist/controls/toggle-filter.d.ts.map +1 -1
  277. package/dist/controls/uncontrolled.d.ts +12 -0
  278. package/dist/controls/uncontrolled.d.ts.map +1 -0
  279. package/dist/controls/view-tabs.d.ts +2 -2
  280. package/dist/controls/view-tabs.d.ts.map +1 -1
  281. package/dist/controls-dates/index.d.ts +0 -1
  282. package/dist/controls-dates/index.d.ts.map +1 -1
  283. package/dist/dashboard/index.d.ts +7 -9
  284. package/dist/dashboard/index.d.ts.map +1 -1
  285. package/dist/dashboard/index.js +3 -23
  286. package/dist/dashboard/section.d.ts +4 -6
  287. package/dist/dashboard/section.d.ts.map +1 -1
  288. package/dist/dashboard/section.js +4 -10
  289. package/dist/dashboard/stat-card.d.ts +4 -4
  290. package/dist/dashboard/stat-card.d.ts.map +1 -1
  291. package/dist/dashboard/stat-card.js +3 -3
  292. package/dist/dashboard/widget-header.module.css +9 -7
  293. package/dist/dev-dock.d.ts.map +1 -1
  294. package/dist/dev-dock.js +6 -1
  295. package/dist/format/date.d.ts +0 -34
  296. package/dist/format/date.d.ts.map +1 -1
  297. package/dist/format/date.js +0 -54
  298. package/dist/format/index.d.ts +7 -22
  299. package/dist/format/index.d.ts.map +1 -1
  300. package/dist/format/index.js +2 -43
  301. package/dist/format/number.d.ts +3 -14
  302. package/dist/format/number.d.ts.map +1 -1
  303. package/dist/format/number.js +0 -13
  304. package/dist/format/shared.d.ts +2 -3
  305. package/dist/format/shared.d.ts.map +1 -1
  306. package/dist/forms/index.d.ts +0 -11
  307. package/dist/forms/index.d.ts.map +1 -1
  308. package/dist/forms/index.js +1 -14
  309. package/dist/guard/index.d.ts +6 -21
  310. package/dist/guard/index.d.ts.map +1 -1
  311. package/dist/guard/index.js +27 -115
  312. package/dist/guard/types.d.ts +7 -18
  313. package/dist/guard/types.d.ts.map +1 -1
  314. package/dist/index.d.ts +16 -48
  315. package/dist/index.d.ts.map +1 -1
  316. package/dist/index.js +21 -117
  317. package/dist/provider/create-router.d.ts +44 -0
  318. package/dist/provider/create-router.d.ts.map +1 -0
  319. package/dist/provider/create-router.js +62 -0
  320. package/dist/provider/hotkeys.d.ts +8 -0
  321. package/dist/provider/hotkeys.d.ts.map +1 -0
  322. package/dist/provider/hotkeys.js +50 -0
  323. package/dist/provider/index.d.ts +33 -110
  324. package/dist/provider/index.d.ts.map +1 -1
  325. package/dist/provider/index.js +182 -82
  326. package/dist/provider/lab-theme.d.ts.map +1 -1
  327. package/dist/provider/route-transition.d.ts +76 -0
  328. package/dist/provider/route-transition.d.ts.map +1 -0
  329. package/dist/provider/route-transition.js +98 -0
  330. package/dist/provider/spotlight-actions.d.ts +10 -0
  331. package/dist/provider/spotlight-actions.d.ts.map +1 -0
  332. package/dist/provider/spotlight-actions.js +55 -0
  333. package/dist/provider/test-router.d.ts +6 -0
  334. package/dist/provider/test-router.d.ts.map +1 -0
  335. package/dist/provider/test-router.js +18 -0
  336. package/dist/query-client.d.ts +4 -20
  337. package/dist/query-client.d.ts.map +1 -1
  338. package/dist/query-client.js +2 -2
  339. package/dist/router-tanstack/index.d.ts +18 -64
  340. package/dist/router-tanstack/index.d.ts.map +1 -1
  341. package/dist/router-tanstack/index.js +2 -16
  342. package/dist/router-tanstack/nav.d.ts +12 -1
  343. package/dist/router-tanstack/nav.d.ts.map +1 -1
  344. package/dist/router-tanstack/nav.js +8 -1
  345. package/dist/router-tanstack/search-store.d.ts +1 -1
  346. package/dist/router-tanstack/search-store.d.ts.map +1 -1
  347. package/dist/router-tanstack/use-nav.d.ts +8 -9
  348. package/dist/router-tanstack/use-nav.d.ts.map +1 -1
  349. package/dist/router-tanstack/use-nav.js +20 -1
  350. package/dist/shell/app-mobile-nav.d.ts.map +1 -1
  351. package/dist/shell/app-sidebar.js +1 -1
  352. package/dist/shell/index.d.ts +31 -10
  353. package/dist/shell/index.d.ts.map +1 -1
  354. package/dist/shell/index.js +14 -3
  355. package/dist/shell/page-aside.d.ts +2 -2
  356. package/dist/shell/page-aside.d.ts.map +1 -1
  357. package/dist/shell/page-aside.js +31 -12
  358. package/dist/shell/page-bar.d.ts +2 -2
  359. package/dist/shell/page-bar.d.ts.map +1 -1
  360. package/dist/shell/page-bar.js +1 -1
  361. package/dist/state.d.ts +10 -12
  362. package/dist/state.d.ts.map +1 -1
  363. package/dist/state.js +4 -6
  364. package/dist/styles.css +107 -7
  365. package/dist/surfaces.d.ts +28 -103
  366. package/dist/surfaces.d.ts.map +1 -1
  367. package/dist/surfaces.js +54 -143
  368. package/dist/{data → table}/data-table-state.d.ts +1 -1
  369. package/dist/table/data-table-state.d.ts.map +1 -0
  370. package/dist/{data → table}/data-table-state.js +4 -3
  371. package/dist/{data → table}/data-table.d.ts +28 -49
  372. package/dist/table/data-table.d.ts.map +1 -0
  373. package/dist/{data → table}/data-table.js +74 -60
  374. package/dist/table/index.d.ts +18 -0
  375. package/dist/table/index.d.ts.map +1 -0
  376. package/dist/{data/table.js → table/index.js} +1 -1
  377. package/dist/table/query-branch.d.ts.map +1 -0
  378. package/dist/table/table-features.d.ts +69 -0
  379. package/dist/table/table-features.d.ts.map +1 -0
  380. package/dist/table/table-features.js +49 -0
  381. package/dist/telemetry.d.ts +77 -0
  382. package/dist/telemetry.d.ts.map +1 -0
  383. package/dist/telemetry.js +33 -0
  384. package/dist/theme/index.d.ts +10 -21
  385. package/dist/theme/index.d.ts.map +1 -1
  386. package/dist/theme/index.js +3 -14
  387. package/dist/theme/theme-toggle.d.ts.map +1 -1
  388. package/dist/theme/theme-toggle.js +7 -33
  389. package/dist/theme/theme-toggle.module.css +30 -0
  390. package/dist/theme/theme-toggle.module.css.d.ts +10 -0
  391. package/dist/theme-lab/derive-controls.d.ts.map +1 -1
  392. package/dist/theme-lab/derive-controls.js +5 -3
  393. package/dist/theme-lab/derive-state.d.ts.map +1 -1
  394. package/dist/theme-lab/derive-state.js +2 -1
  395. package/dist/tokens/core.d.ts +360 -0
  396. package/dist/tokens/core.d.ts.map +1 -0
  397. package/dist/tokens/core.js +708 -0
  398. package/dist/tokens/derive.d.ts +1 -1
  399. package/dist/tokens/derive.d.ts.map +1 -1
  400. package/dist/tokens/index.d.ts +5 -373
  401. package/dist/tokens/index.d.ts.map +1 -1
  402. package/dist/tokens/index.js +8 -700
  403. package/dist/tokens/palette.d.ts +2 -6
  404. package/dist/tokens/palette.d.ts.map +1 -1
  405. package/dist/tokens/palette.js +1 -4
  406. package/dist/vite.d.ts +4 -3
  407. package/dist/vite.d.ts.map +1 -1
  408. package/llms.txt +43 -85
  409. package/package.json +77 -170
  410. package/src/agent/ai-sdk-transport.ts +57 -37
  411. package/src/{agent-chat → agent/chat}/composer.tsx +29 -30
  412. package/src/{agent-chat → agent/chat}/message-affordances.ts +8 -5
  413. package/src/{agent-chat → agent/chat}/thread-feed-row.tsx +30 -35
  414. package/src/{agent-chat → agent/chat}/thread-feed.tsx +40 -35
  415. package/src/{agent-chat → agent/chat}/thread-message.tsx +37 -35
  416. package/src/{agent-chat → agent/chat}/thread-outcome-card.tsx +5 -5
  417. package/src/{agent-chat → agent/chat}/tool-chip.tsx +12 -12
  418. package/src/{agent-chat → agent/chat}/use-keyboard-inset.ts +1 -1
  419. package/src/{agent-chat → agent/chat}/virtualize.ts +5 -5
  420. package/src/agent/error.ts +43 -0
  421. package/src/agent/history.ts +2 -107
  422. package/src/agent/id.ts +4 -5
  423. package/src/agent/index.ts +23 -112
  424. package/src/agent/outcome.ts +3 -56
  425. package/src/agent/part-list.tsx +3 -3
  426. package/src/agent/parts.ts +23 -22
  427. package/src/agent/run-committer.ts +64 -0
  428. package/src/agent/run-records.ts +147 -0
  429. package/src/agent/thread.ts +24 -231
  430. package/src/agent/transport.ts +6 -96
  431. package/src/agent/use-agent-thread-runs.ts +364 -199
  432. package/src/charts/BandStrip.tsx +276 -0
  433. package/src/charts/Bars.tsx +141 -0
  434. package/src/charts/CartesianChart.tsx +206 -0
  435. package/src/charts/ChartCard.tsx +178 -0
  436. package/src/charts/Donut.tsx +256 -0
  437. package/src/charts/DualPanel.tsx +326 -0
  438. package/src/charts/Heatmap.tsx +282 -0
  439. package/src/charts/Lines.tsx +151 -0
  440. package/src/charts/MirroredBars.tsx +303 -0
  441. package/src/charts/Sparkline.tsx +176 -0
  442. package/src/charts/StackedArea.tsx +80 -0
  443. package/src/charts/box.tsx +96 -0
  444. package/src/charts/card-context.ts +11 -0
  445. package/src/charts/chart-box.module.css +64 -0
  446. package/src/charts/chart-box.module.css.d.ts +12 -0
  447. package/src/charts/chart-card.module.css +25 -0
  448. package/src/charts/chart-card.module.css.d.ts +8 -0
  449. package/src/charts/chart-legend.module.css +38 -0
  450. package/src/charts/chart-legend.module.css.d.ts +10 -0
  451. package/src/charts/compile.ts +585 -0
  452. package/src/charts/cursor.ts +282 -0
  453. package/src/charts/curves.ts +111 -0
  454. package/src/charts/donut.module.css +54 -0
  455. package/src/charts/donut.module.css.d.ts +9 -0
  456. package/src/charts/host.tsx +60 -0
  457. package/src/charts/index.ts +41 -178
  458. package/src/charts/legend.tsx +204 -0
  459. package/src/charts/marks.ts +201 -0
  460. package/src/charts/panel.tsx +227 -0
  461. package/src/charts/scales.ts +237 -0
  462. package/src/charts/sizing.ts +47 -0
  463. package/src/charts/state.tsx +80 -0
  464. package/src/charts/theme.ts +65 -0
  465. package/src/charts/types.ts +242 -0
  466. package/src/cli/audit-allows.ts +8 -30
  467. package/src/cli/config.ts +14 -43
  468. package/src/cli/doctor-upgrade.ts +392 -0
  469. package/src/cli/doctor.ts +81 -72
  470. package/src/cli/help.ts +2 -4
  471. package/src/cli/index.ts +100 -384
  472. package/src/cli/init.ts +60 -51
  473. package/src/cli/sync.ts +13 -68
  474. package/src/cli/tokens-css.ts +7 -28
  475. package/src/commands/ShortcutsHelp.tsx +8 -9
  476. package/src/commands/define-commands.ts +16 -43
  477. package/src/commands/define-overlays.ts +12 -36
  478. package/src/commands/index.ts +11 -94
  479. package/src/{notifications → commands/notifications}/bell.tsx +2 -2
  480. package/src/{notifications → commands/notifications}/center.tsx +7 -5
  481. package/src/{notifications → commands/notifications}/define-notifications.ts +3 -3
  482. package/src/commands/notifications/notify.tsx +158 -0
  483. package/src/{notifications → commands/notifications}/store.ts +10 -2
  484. package/src/commands/projectors.ts +5 -225
  485. package/src/commands/shell-bridge.ts +5 -5
  486. package/src/commands/shortcut-format.ts +5 -4
  487. package/src/common/errors.ts +3 -3
  488. package/src/common/use-measured-widths.ts +6 -3
  489. package/src/common/validate.ts +2 -2
  490. package/src/content/article-layout.tsx +37 -38
  491. package/src/content/article-model.ts +1 -84
  492. package/src/content/index.ts +12 -83
  493. package/src/content/markdown.tsx +4 -3
  494. package/src/content/mermaid.tsx +9 -7
  495. package/src/content/slug.ts +1 -16
  496. package/src/content/url-hardening.ts +8 -2
  497. package/src/controls/actions.tsx +24 -1
  498. package/src/controls/enum-filter.tsx +1 -1
  499. package/src/controls/filter-context.tsx +3 -1
  500. package/src/controls/filter-set.tsx +5 -7
  501. package/src/controls/form-layout.tsx +2 -2
  502. package/src/controls/glyphs.tsx +0 -10
  503. package/src/controls/index.ts +13 -64
  504. package/src/controls/multi-select-filter.tsx +5 -4
  505. package/src/controls/number-filter.tsx +8 -4
  506. package/src/controls/range-filter.tsx +5 -4
  507. package/src/controls/search-filter.tsx +25 -19
  508. package/src/controls/select-filter.tsx +5 -4
  509. package/src/controls/sync-button.tsx +18 -20
  510. package/src/controls/toggle-filter.tsx +5 -4
  511. package/src/controls/uncontrolled.ts +12 -0
  512. package/src/controls/view-tabs.tsx +3 -3
  513. package/src/controls-dates/date-range-picker.tsx +1 -1
  514. package/src/controls-dates/index.ts +0 -1
  515. package/src/dashboard/index.ts +7 -48
  516. package/src/dashboard/section.tsx +11 -40
  517. package/src/dashboard/stat-card.tsx +14 -16
  518. package/src/dashboard/widget-header.module.css +9 -7
  519. package/src/dev-dock.tsx +14 -27
  520. package/src/format/date.ts +2 -92
  521. package/src/format/index.ts +7 -53
  522. package/src/format/number.ts +3 -26
  523. package/src/format/shared.ts +2 -3
  524. package/src/forms/index.ts +0 -23
  525. package/src/guard/index.ts +36 -191
  526. package/src/guard/types.ts +6 -19
  527. package/src/index.ts +30 -282
  528. package/src/provider/create-router.tsx +138 -0
  529. package/src/provider/hotkeys.ts +70 -0
  530. package/src/provider/index.tsx +260 -230
  531. package/src/provider/lab-theme.ts +3 -2
  532. package/src/provider/route-transition.ts +199 -0
  533. package/src/provider/spotlight-actions.tsx +69 -0
  534. package/src/provider/test-router.tsx +25 -0
  535. package/src/query-client.ts +4 -22
  536. package/src/router-tanstack/index.ts +18 -112
  537. package/src/router-tanstack/nav.ts +28 -2
  538. package/src/router-tanstack/search-store.ts +9 -2
  539. package/src/router-tanstack/use-nav.ts +47 -13
  540. package/src/shell/app-mobile-nav.tsx +3 -2
  541. package/src/shell/app-sidebar.tsx +1 -1
  542. package/src/shell/aside-docking.ts +1 -1
  543. package/src/shell/index.tsx +61 -20
  544. package/src/shell/page-aside.tsx +47 -23
  545. package/src/shell/page-bar.tsx +3 -3
  546. package/src/shell/page-title.tsx +1 -1
  547. package/src/state.ts +11 -37
  548. package/src/styles.css +107 -7
  549. package/src/surfaces.ts +56 -151
  550. package/src/{data → table}/data-table-state.ts +5 -4
  551. package/src/{data → table}/data-table.tsx +170 -161
  552. package/src/table/index.ts +18 -0
  553. package/src/table/table-features.ts +102 -0
  554. package/src/telemetry.ts +110 -0
  555. package/src/theme/index.ts +22 -47
  556. package/src/theme/theme-toggle.module.css +30 -0
  557. package/src/theme/theme-toggle.module.css.d.ts +10 -0
  558. package/src/theme/theme-toggle.tsx +15 -43
  559. package/src/theme-lab/derive-controls.tsx +5 -3
  560. package/src/theme-lab/derive-state.ts +2 -1
  561. package/src/tokens/core.ts +1163 -0
  562. package/src/tokens/derive.ts +1 -1
  563. package/src/tokens/index.ts +14 -1181
  564. package/src/tokens/palette.ts +3 -7
  565. package/src/vite.ts +3 -3
  566. package/agent/templates/query-client.ts.tpl +0 -26
  567. package/dist/agent/adapter.d.ts +0 -150
  568. package/dist/agent/adapter.d.ts.map +0 -1
  569. package/dist/agent/adapter.js +0 -482
  570. package/dist/agent/use-agent-stream.d.ts +0 -35
  571. package/dist/agent/use-agent-stream.d.ts.map +0 -1
  572. package/dist/agent/use-agent-stream.js +0 -59
  573. package/dist/agent-chat/composer.d.ts.map +0 -1
  574. package/dist/agent-chat/index.d.ts +0 -31
  575. package/dist/agent-chat/index.d.ts.map +0 -1
  576. package/dist/agent-chat/index.js +0 -19
  577. package/dist/agent-chat/message-affordances.d.ts.map +0 -1
  578. package/dist/agent-chat/relative-time.d.ts.map +0 -1
  579. package/dist/agent-chat/thread-detail-panel.d.ts +0 -28
  580. package/dist/agent-chat/thread-detail-panel.d.ts.map +0 -1
  581. package/dist/agent-chat/thread-detail-panel.js +0 -115
  582. package/dist/agent-chat/thread-feed-row.d.ts.map +0 -1
  583. package/dist/agent-chat/thread-feed.d.ts.map +0 -1
  584. package/dist/agent-chat/thread-message.d.ts.map +0 -1
  585. package/dist/agent-chat/thread-outcome-card.d.ts.map +0 -1
  586. package/dist/agent-chat/thread-workspace.d.ts +0 -44
  587. package/dist/agent-chat/thread-workspace.d.ts.map +0 -1
  588. package/dist/agent-chat/thread-workspace.js +0 -153
  589. package/dist/agent-chat/tool-chip.d.ts.map +0 -1
  590. package/dist/agent-chat/use-keyboard-inset.d.ts.map +0 -1
  591. package/dist/agent-chat/virtualize.d.ts.map +0 -1
  592. package/dist/charts/cursor/resolve.d.ts +0 -75
  593. package/dist/charts/cursor/resolve.d.ts.map +0 -1
  594. package/dist/charts/cursor/resolve.js +0 -91
  595. package/dist/charts/cursor/scope.d.ts +0 -20
  596. package/dist/charts/cursor/scope.d.ts.map +0 -1
  597. package/dist/charts/cursor/scope.js +0 -20
  598. package/dist/charts/cursor/store.d.ts +0 -35
  599. package/dist/charts/cursor/store.d.ts.map +0 -1
  600. package/dist/charts/cursor/store.js +0 -25
  601. package/dist/charts/cursor/touch-pin.d.ts +0 -45
  602. package/dist/charts/cursor/touch-pin.d.ts.map +0 -1
  603. package/dist/charts/cursor/touch-pin.js +0 -79
  604. package/dist/charts/hooks/use-discrete-cursor.d.ts +0 -66
  605. package/dist/charts/hooks/use-discrete-cursor.d.ts.map +0 -1
  606. package/dist/charts/hooks/use-discrete-cursor.js +0 -198
  607. package/dist/charts/hooks/use-hysteresis.d.ts +0 -18
  608. package/dist/charts/hooks/use-hysteresis.d.ts.map +0 -1
  609. package/dist/charts/hooks/use-hysteresis.js +0 -12
  610. package/dist/charts/hooks/useBandPlot.d.ts +0 -145
  611. package/dist/charts/hooks/useBandPlot.d.ts.map +0 -1
  612. package/dist/charts/hooks/useBandPlot.js +0 -178
  613. package/dist/charts/hooks/useChartCursor.d.ts +0 -75
  614. package/dist/charts/hooks/useChartCursor.d.ts.map +0 -1
  615. package/dist/charts/hooks/useChartCursor.js +0 -200
  616. package/dist/charts/hooks/useChartSize.d.ts +0 -29
  617. package/dist/charts/hooks/useChartSize.d.ts.map +0 -1
  618. package/dist/charts/hooks/useChartSize.js +0 -8
  619. package/dist/charts/kinds/BandStrip.d.ts +0 -132
  620. package/dist/charts/kinds/BandStrip.d.ts.map +0 -1
  621. package/dist/charts/kinds/BandStrip.js +0 -241
  622. package/dist/charts/kinds/Bars.d.ts +0 -141
  623. package/dist/charts/kinds/Bars.d.ts.map +0 -1
  624. package/dist/charts/kinds/Bars.js +0 -343
  625. package/dist/charts/kinds/Donut.d.ts +0 -77
  626. package/dist/charts/kinds/Donut.d.ts.map +0 -1
  627. package/dist/charts/kinds/Donut.js +0 -245
  628. package/dist/charts/kinds/DualPanel.d.ts +0 -111
  629. package/dist/charts/kinds/DualPanel.d.ts.map +0 -1
  630. package/dist/charts/kinds/DualPanel.js +0 -471
  631. package/dist/charts/kinds/Heatmap.d.ts +0 -85
  632. package/dist/charts/kinds/Heatmap.d.ts.map +0 -1
  633. package/dist/charts/kinds/Heatmap.js +0 -243
  634. package/dist/charts/kinds/MirroredBars.d.ts +0 -98
  635. package/dist/charts/kinds/MirroredBars.d.ts.map +0 -1
  636. package/dist/charts/kinds/MirroredBars.js +0 -292
  637. package/dist/charts/kinds/MultiLine.d.ts +0 -87
  638. package/dist/charts/kinds/MultiLine.d.ts.map +0 -1
  639. package/dist/charts/kinds/MultiLine.js +0 -176
  640. package/dist/charts/kinds/StackedArea.d.ts +0 -73
  641. package/dist/charts/kinds/StackedArea.d.ts.map +0 -1
  642. package/dist/charts/kinds/StackedArea.js +0 -135
  643. package/dist/charts/kinds/ZonedLine.d.ts +0 -97
  644. package/dist/charts/kinds/ZonedLine.d.ts.map +0 -1
  645. package/dist/charts/kinds/ZonedLine.js +0 -155
  646. package/dist/charts/kinds/band-chrome.d.ts +0 -31
  647. package/dist/charts/kinds/band-chrome.d.ts.map +0 -1
  648. package/dist/charts/kinds/band-chrome.js +0 -71
  649. package/dist/charts/kinds/donut-layout.d.ts +0 -47
  650. package/dist/charts/kinds/donut-layout.d.ts.map +0 -1
  651. package/dist/charts/kinds/donut-layout.js +0 -52
  652. package/dist/charts/layout/auto-margin.d.ts +0 -122
  653. package/dist/charts/layout/auto-margin.d.ts.map +0 -1
  654. package/dist/charts/layout/auto-margin.js +0 -81
  655. package/dist/charts/layout/end-labels.d.ts +0 -64
  656. package/dist/charts/layout/end-labels.d.ts.map +0 -1
  657. package/dist/charts/layout/end-labels.js +0 -76
  658. package/dist/charts/layout/log-ticks.d.ts +0 -27
  659. package/dist/charts/layout/log-ticks.d.ts.map +0 -1
  660. package/dist/charts/layout/log-ticks.js +0 -42
  661. package/dist/charts/primitives/AreaGradient.d.ts +0 -18
  662. package/dist/charts/primitives/AreaGradient.d.ts.map +0 -1
  663. package/dist/charts/primitives/AreaGradient.js +0 -13
  664. package/dist/charts/primitives/Axes.d.ts +0 -83
  665. package/dist/charts/primitives/Axes.d.ts.map +0 -1
  666. package/dist/charts/primitives/Axes.js +0 -168
  667. package/dist/charts/primitives/CartesianChart.d.ts +0 -257
  668. package/dist/charts/primitives/CartesianChart.d.ts.map +0 -1
  669. package/dist/charts/primitives/CartesianChart.js +0 -549
  670. package/dist/charts/primitives/ChartCard.d.ts +0 -66
  671. package/dist/charts/primitives/ChartCard.d.ts.map +0 -1
  672. package/dist/charts/primitives/ChartCard.js +0 -143
  673. package/dist/charts/primitives/ChartFrame.d.ts +0 -156
  674. package/dist/charts/primitives/ChartFrame.d.ts.map +0 -1
  675. package/dist/charts/primitives/ChartFrame.js +0 -241
  676. package/dist/charts/primitives/ChartLegend.d.ts +0 -67
  677. package/dist/charts/primitives/ChartLegend.d.ts.map +0 -1
  678. package/dist/charts/primitives/ChartLegend.js +0 -292
  679. package/dist/charts/primitives/ChartPending.d.ts +0 -113
  680. package/dist/charts/primitives/ChartPending.d.ts.map +0 -1
  681. package/dist/charts/primitives/ChartPending.js +0 -117
  682. package/dist/charts/primitives/ChartTooltip.d.ts +0 -59
  683. package/dist/charts/primitives/ChartTooltip.d.ts.map +0 -1
  684. package/dist/charts/primitives/ChartTooltip.js +0 -197
  685. package/dist/charts/primitives/Crosshair.d.ts +0 -26
  686. package/dist/charts/primitives/Crosshair.d.ts.map +0 -1
  687. package/dist/charts/primitives/Crosshair.js +0 -23
  688. package/dist/charts/primitives/HatchPattern.d.ts +0 -31
  689. package/dist/charts/primitives/HatchPattern.d.ts.map +0 -1
  690. package/dist/charts/primitives/HatchPattern.js +0 -31
  691. package/dist/charts/primitives/HoverOverlay.d.ts +0 -45
  692. package/dist/charts/primitives/HoverOverlay.d.ts.map +0 -1
  693. package/dist/charts/primitives/HoverOverlay.js +0 -72
  694. package/dist/charts/primitives/HoverOverlay.module.css +0 -13
  695. package/dist/charts/primitives/HoverOverlay.module.css.d.ts +0 -8
  696. package/dist/charts/primitives/XZoneRects.d.ts +0 -54
  697. package/dist/charts/primitives/XZoneRects.d.ts.map +0 -1
  698. package/dist/charts/primitives/XZoneRects.js +0 -65
  699. package/dist/charts/primitives/ZoneRects.d.ts +0 -38
  700. package/dist/charts/primitives/ZoneRects.d.ts.map +0 -1
  701. package/dist/charts/primitives/ZoneRects.js +0 -30
  702. package/dist/charts/primitives/chart-card-context.d.ts +0 -33
  703. package/dist/charts/primitives/chart-card-context.d.ts.map +0 -1
  704. package/dist/charts/primitives/chart-card-context.js +0 -18
  705. package/dist/charts/primitives/chart-frame-layout.d.ts +0 -185
  706. package/dist/charts/primitives/chart-frame-layout.d.ts.map +0 -1
  707. package/dist/charts/primitives/chart-frame-layout.js +0 -175
  708. package/dist/charts/primitives/chart-layout.d.ts +0 -112
  709. package/dist/charts/primitives/chart-layout.d.ts.map +0 -1
  710. package/dist/charts/primitives/chart-layout.js +0 -175
  711. package/dist/charts/primitives/chart-tier.d.ts +0 -16
  712. package/dist/charts/primitives/chart-tier.d.ts.map +0 -1
  713. package/dist/charts/primitives/chart-tier.js +0 -44
  714. package/dist/charts/primitives/legend-disclosure.d.ts +0 -27
  715. package/dist/charts/primitives/legend-disclosure.d.ts.map +0 -1
  716. package/dist/charts/primitives/legend-disclosure.js +0 -153
  717. package/dist/charts/series.d.ts +0 -189
  718. package/dist/charts/series.d.ts.map +0 -1
  719. package/dist/charts/series.js +0 -84
  720. package/dist/charts/sparklines/BarSparkline.d.ts +0 -37
  721. package/dist/charts/sparklines/BarSparkline.d.ts.map +0 -1
  722. package/dist/charts/sparklines/BarSparkline.js +0 -53
  723. package/dist/charts/sparklines/LineSparkline.d.ts +0 -15
  724. package/dist/charts/sparklines/LineSparkline.d.ts.map +0 -1
  725. package/dist/charts/sparklines/LineSparkline.js +0 -51
  726. package/dist/charts/sparklines/index.d.ts +0 -3
  727. package/dist/charts/sparklines/index.d.ts.map +0 -1
  728. package/dist/charts/sparklines/index.js +0 -6
  729. package/dist/charts/utils/domain.d.ts +0 -35
  730. package/dist/charts/utils/domain.d.ts.map +0 -1
  731. package/dist/charts/utils/domain.js +0 -12
  732. package/dist/charts/utils/format.d.ts +0 -8
  733. package/dist/charts/utils/format.d.ts.map +0 -1
  734. package/dist/charts/utils/format.js +0 -20
  735. package/dist/charts/utils/measure-text.d.ts +0 -25
  736. package/dist/charts/utils/measure-text.d.ts.map +0 -1
  737. package/dist/charts/utils/measure-text.js +0 -64
  738. package/dist/charts/utils/ticks.d.ts +0 -103
  739. package/dist/charts/utils/ticks.d.ts.map +0 -1
  740. package/dist/charts/utils/ticks.js +0 -92
  741. package/dist/commands/overlays-mount.d.ts +0 -122
  742. package/dist/commands/overlays-mount.d.ts.map +0 -1
  743. package/dist/commands/overlays-mount.js +0 -125
  744. package/dist/commands/useCommandHotkeys.d.ts +0 -14
  745. package/dist/commands/useCommandHotkeys.d.ts.map +0 -1
  746. package/dist/commands/useCommandHotkeys.js +0 -45
  747. package/dist/content/article-actions.d.ts +0 -39
  748. package/dist/content/article-actions.d.ts.map +0 -1
  749. package/dist/content/article-actions.js +0 -28
  750. package/dist/content/article-card.d.ts +0 -58
  751. package/dist/content/article-card.d.ts.map +0 -1
  752. package/dist/content/article-card.js +0 -79
  753. package/dist/content/article-card.module.css +0 -111
  754. package/dist/content/mdx.d.ts +0 -20
  755. package/dist/content/mdx.d.ts.map +0 -1
  756. package/dist/content/mdx.js +0 -64
  757. package/dist/controls/compare-filter.d.ts +0 -42
  758. package/dist/controls/compare-filter.d.ts.map +0 -1
  759. package/dist/controls/compare-filter.js +0 -38
  760. package/dist/controls/slider-control.d.ts +0 -36
  761. package/dist/controls/slider-control.d.ts.map +0 -1
  762. package/dist/controls/slider-control.js +0 -64
  763. package/dist/dashboard/widget-grid.d.ts +0 -27
  764. package/dist/dashboard/widget-grid.d.ts.map +0 -1
  765. package/dist/dashboard/widget-grid.js +0 -40
  766. package/dist/dashboard/widget-grid.module.css +0 -69
  767. package/dist/data/data-table-state.d.ts.map +0 -1
  768. package/dist/data/data-table.d.ts.map +0 -1
  769. package/dist/data/query-branch.d.ts.map +0 -1
  770. package/dist/data/table.d.ts +0 -24
  771. package/dist/data/table.d.ts.map +0 -1
  772. package/dist/data/virtual-list.d.ts +0 -133
  773. package/dist/data/virtual-list.d.ts.map +0 -1
  774. package/dist/data/virtual-list.js +0 -157
  775. package/dist/data/virtual.d.ts +0 -21
  776. package/dist/data/virtual.d.ts.map +0 -1
  777. package/dist/data/virtual.js +0 -4
  778. package/dist/forms/FormErrorSummary.d.ts +0 -30
  779. package/dist/forms/FormErrorSummary.d.ts.map +0 -1
  780. package/dist/forms/FormErrorSummary.js +0 -30
  781. package/dist/forms/use-field-array.d.ts +0 -60
  782. package/dist/forms/use-field-array.d.ts.map +0 -1
  783. package/dist/forms/use-field-array.js +0 -20
  784. package/dist/forms/use-form-draft.d.ts +0 -76
  785. package/dist/forms/use-form-draft.d.ts.map +0 -1
  786. package/dist/forms/use-form-draft.js +0 -92
  787. package/dist/forms/use-form-submit.d.ts +0 -88
  788. package/dist/forms/use-form-submit.d.ts.map +0 -1
  789. package/dist/forms/use-form-submit.js +0 -63
  790. package/dist/notifications/bell.d.ts.map +0 -1
  791. package/dist/notifications/center.d.ts.map +0 -1
  792. package/dist/notifications/define-notifications.d.ts.map +0 -1
  793. package/dist/notifications/index.d.ts +0 -40
  794. package/dist/notifications/index.d.ts.map +0 -1
  795. package/dist/notifications/index.js +0 -54
  796. package/dist/notifications/mount-guard.d.ts +0 -8
  797. package/dist/notifications/mount-guard.d.ts.map +0 -1
  798. package/dist/notifications/mount-guard.js +0 -18
  799. package/dist/notifications/notify.d.ts +0 -149
  800. package/dist/notifications/notify.d.ts.map +0 -1
  801. package/dist/notifications/notify.js +0 -171
  802. package/dist/notifications/store.d.ts.map +0 -1
  803. package/dist/provider/connectivity-indicator.d.ts +0 -13
  804. package/dist/provider/connectivity-indicator.d.ts.map +0 -1
  805. package/dist/provider/connectivity-indicator.js +0 -205
  806. package/dist/provider/connectivity-provider.d.ts +0 -7
  807. package/dist/provider/connectivity-provider.d.ts.map +0 -1
  808. package/dist/provider/connectivity-provider.js +0 -128
  809. package/dist/provider/connectivity-types.d.ts +0 -36
  810. package/dist/provider/connectivity-types.d.ts.map +0 -1
  811. package/dist/provider/use-connectivity.d.ts +0 -3
  812. package/dist/provider/use-connectivity.d.ts.map +0 -1
  813. package/dist/provider/use-connectivity.js +0 -14
  814. package/dist/query-devtools.d.ts +0 -21
  815. package/dist/query-devtools.d.ts.map +0 -1
  816. package/dist/query-devtools.js +0 -13
  817. package/src/agent/adapter.ts +0 -945
  818. package/src/agent/use-agent-stream.ts +0 -154
  819. package/src/agent-chat/index.ts +0 -54
  820. package/src/agent-chat/thread-detail-panel.tsx +0 -201
  821. package/src/agent-chat/thread-workspace.tsx +0 -279
  822. package/src/charts/cursor/resolve.ts +0 -198
  823. package/src/charts/cursor/scope.tsx +0 -35
  824. package/src/charts/cursor/store.ts +0 -58
  825. package/src/charts/cursor/touch-pin.ts +0 -138
  826. package/src/charts/hooks/use-discrete-cursor.ts +0 -335
  827. package/src/charts/hooks/use-hysteresis.ts +0 -26
  828. package/src/charts/hooks/useBandPlot.ts +0 -383
  829. package/src/charts/hooks/useChartCursor.ts +0 -367
  830. package/src/charts/hooks/useChartSize.ts +0 -35
  831. package/src/charts/kinds/BandStrip.tsx +0 -449
  832. package/src/charts/kinds/Bars.tsx +0 -589
  833. package/src/charts/kinds/Donut.tsx +0 -368
  834. package/src/charts/kinds/DualPanel.tsx +0 -712
  835. package/src/charts/kinds/Heatmap.tsx +0 -396
  836. package/src/charts/kinds/MirroredBars.tsx +0 -469
  837. package/src/charts/kinds/MultiLine.tsx +0 -322
  838. package/src/charts/kinds/StackedArea.tsx +0 -267
  839. package/src/charts/kinds/ZonedLine.tsx +0 -301
  840. package/src/charts/kinds/band-chrome.tsx +0 -91
  841. package/src/charts/kinds/donut-layout.ts +0 -82
  842. package/src/charts/layout/auto-margin.ts +0 -242
  843. package/src/charts/layout/end-labels.ts +0 -135
  844. package/src/charts/layout/log-ticks.ts +0 -90
  845. package/src/charts/primitives/AreaGradient.tsx +0 -26
  846. package/src/charts/primitives/Axes.tsx +0 -271
  847. package/src/charts/primitives/CartesianChart.tsx +0 -1002
  848. package/src/charts/primitives/ChartCard.tsx +0 -280
  849. package/src/charts/primitives/ChartFrame.tsx +0 -493
  850. package/src/charts/primitives/ChartLegend.tsx +0 -422
  851. package/src/charts/primitives/ChartPending.tsx +0 -243
  852. package/src/charts/primitives/ChartTooltip.tsx +0 -265
  853. package/src/charts/primitives/Crosshair.tsx +0 -43
  854. package/src/charts/primitives/HatchPattern.tsx +0 -55
  855. package/src/charts/primitives/HoverOverlay.module.css +0 -13
  856. package/src/charts/primitives/HoverOverlay.module.css.d.ts +0 -8
  857. package/src/charts/primitives/HoverOverlay.tsx +0 -109
  858. package/src/charts/primitives/XZoneRects.tsx +0 -132
  859. package/src/charts/primitives/ZoneRects.tsx +0 -67
  860. package/src/charts/primitives/chart-card-context.ts +0 -46
  861. package/src/charts/primitives/chart-frame-layout.ts +0 -430
  862. package/src/charts/primitives/chart-layout.ts +0 -318
  863. package/src/charts/primitives/chart-tier.tsx +0 -76
  864. package/src/charts/primitives/legend-disclosure.tsx +0 -178
  865. package/src/charts/series.ts +0 -276
  866. package/src/charts/sparklines/BarSparkline.tsx +0 -94
  867. package/src/charts/sparklines/LineSparkline.tsx +0 -71
  868. package/src/charts/sparklines/index.ts +0 -2
  869. package/src/charts/theme.tsx +0 -53
  870. package/src/charts/utils/domain.ts +0 -41
  871. package/src/charts/utils/format.ts +0 -19
  872. package/src/charts/utils/measure-text.ts +0 -109
  873. package/src/charts/utils/ticks.ts +0 -239
  874. package/src/commands/overlays-mount.tsx +0 -333
  875. package/src/commands/useCommandHotkeys.ts +0 -114
  876. package/src/content/article-actions.ts +0 -72
  877. package/src/content/article-card.module.css +0 -111
  878. package/src/content/article-card.tsx +0 -174
  879. package/src/content/mdx.tsx +0 -127
  880. package/src/controls/compare-filter.tsx +0 -81
  881. package/src/controls/slider-control.tsx +0 -159
  882. package/src/dashboard/widget-grid.module.css +0 -69
  883. package/src/dashboard/widget-grid.tsx +0 -146
  884. package/src/data/table.ts +0 -39
  885. package/src/data/virtual-list.tsx +0 -356
  886. package/src/data/virtual.ts +0 -26
  887. package/src/forms/FormErrorSummary.tsx +0 -71
  888. package/src/forms/use-field-array.ts +0 -94
  889. package/src/forms/use-form-draft.ts +0 -262
  890. package/src/forms/use-form-submit.ts +0 -199
  891. package/src/notifications/index.ts +0 -88
  892. package/src/notifications/mount-guard.ts +0 -38
  893. package/src/notifications/notify.tsx +0 -379
  894. package/src/provider/connectivity-indicator.tsx +0 -267
  895. package/src/provider/connectivity-provider.tsx +0 -189
  896. package/src/provider/connectivity-types.ts +0 -42
  897. package/src/provider/use-connectivity.ts +0 -26
  898. package/src/query-devtools.tsx +0 -40
  899. /package/dist/{agent-chat → agent/chat}/message-affordances.js +0 -0
  900. /package/dist/{agent-chat → agent/chat}/relative-time.d.ts +0 -0
  901. /package/dist/{agent-chat → agent/chat}/relative-time.js +0 -0
  902. /package/dist/{agent-chat → agent/chat}/use-keyboard-inset.d.ts +0 -0
  903. /package/dist/{agent-chat → agent/chat}/virtualize.js +0 -0
  904. /package/dist/{notifications → commands/notifications}/bell.js +0 -0
  905. /package/dist/{notifications → commands/notifications}/define-notifications.js +0 -0
  906. /package/dist/{provider/connectivity-types.js → controls/uncontrolled.js} +0 -0
  907. /package/dist/{data → table}/data-table.module.css +0 -0
  908. /package/dist/{data → table}/data-table.module.css.d.ts +0 -0
  909. /package/dist/{data → table}/query-branch.d.ts +0 -0
  910. /package/dist/{data → table}/query-branch.js +0 -0
  911. /package/src/{agent-chat → agent/chat}/relative-time.ts +0 -0
  912. /package/src/{data → table}/data-table.module.css +0 -0
  913. /package/src/{data → table}/data-table.module.css.d.ts +0 -0
  914. /package/src/{data → table}/query-branch.ts +0 -0
@@ -1,10 +1,12 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
- import { useEffect, useState } from "react";
2
+ import { useSyncExternalStore } from "react";
3
3
  import { Box, Group, Kbd, Stack, Text, Title } from "@mantine/core";
4
4
  import { cx } from "../common/props.js";
5
5
  import { toShortcutList } from "./projectors.js";
6
6
  import { detectMac, parseShortcut } from "./shortcut-format.js";
7
7
  import { VX } from "../tokens/index.js";
8
+ const subscribeNever = () => () => {
9
+ };
8
10
  function ShortcutRow({
9
11
  label,
10
12
  shortcut,
@@ -22,10 +24,7 @@ function ShortcutsHelp({
22
24
  className,
23
25
  style
24
26
  }) {
25
- const [isMac, setIsMac] = useState(false);
26
- useEffect(() => {
27
- setIsMac(detectMac());
28
- }, []);
27
+ const isMac = useSyncExternalStore(subscribeNever, detectMac, () => false);
29
28
  const shortcuts = toShortcutList();
30
29
  if (shortcuts.length === 0) return null;
31
30
  const grouped = /* @__PURE__ */ new Map();
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * define-commands — const-generic factory for typed command registries.
3
3
  *
4
- * Consumer defines their commands with defineCommands, augments BasaltRegister.commands, then uses
5
- * runCommand — unknown ids are tsc errors. The type slot gives the compile-time id union; the
6
- * module-level stash gives the runtime values (type augmentation is erased at runtime).
4
+ * Consumer defines their commands with defineCommands and augments BasaltRegister.commands.
5
+ * `BasaltProvider` reads the module-level stash for its Spotlight actions and hotkeys (type
6
+ * augmentation is erased at runtime; the stash is the live source).
7
7
  *
8
8
  * @example
9
9
  * // commands.ts (app-side)
@@ -16,12 +16,8 @@
16
16
  * declare module 'basalt-ui' {
17
17
  * interface BasaltRegister { commands: typeof COMMANDS }
18
18
  * }
19
- *
20
- * // usage.ts
21
- * import { runCommand } from 'basalt-ui/commands'
22
- * runCommand('file:save') // ✓ typed
23
- * runCommand('nonexistent') // ✗ tsc error
24
19
  */
20
+ import type { Hotkey } from '@tanstack/react-hotkeys';
25
21
  import type { ReactNode } from 'react';
26
22
  import type { Slot } from '../register.js';
27
23
  /**
@@ -33,7 +29,7 @@ import type { Slot } from '../register.js';
33
29
  * })
34
30
  */
35
31
  export type CommandRunContext = {
36
- /** Close the command palette (if open) before executing. Injected by BasaltOverlays. */
32
+ /** Close the command palette (if open) before executing. Injected by the palette. */
37
33
  close?: () => void;
38
34
  };
39
35
  /**
@@ -56,11 +52,12 @@ export type Command = {
56
52
  /** Optional icon (ReactNode — no @tabler/icons dependency per house rules). */
57
53
  icon?: ReactNode;
58
54
  /**
59
- * Optional keyboard shortcut string. Drives BOTH the ShortcutsHelp display AND live key
60
- * binding via useCommandHotkeys() (which registers with @tanstack/react-hotkeys optional peer).
61
- * Convention: 'Mod+S' (Mod = Cmd on mac, Ctrl elsewhere), 'Shift+Mod+P', etc.
55
+ * Optional keyboard shortcut, typed as the peer's `Hotkey` so a typo (`'Cmd+B'`) is a compile
56
+ * error. Drives BOTH the ShortcutsHelp display AND live key
57
+ * binding by `BasaltProvider` (through the @tanstack/react-hotkeys optional peer).
58
+ * Convention: 'Mod+S' (Mod = Cmd on mac, Ctrl elsewhere), 'Mod+Shift+P', etc.
62
59
  */
63
- shortcut?: string;
60
+ shortcut?: Hotkey;
64
61
  /**
65
62
  * Optional predicate — when() returning false hides the command from the palette.
66
63
  * Useful for context-sensitive commands (e.g. "save" only when a form is dirty).
@@ -94,10 +91,10 @@ type Commands = Slot<'commands', CommandMap>;
94
91
  export type CommandId = Extract<keyof Commands, string>;
95
92
  /**
96
93
  * Define a typed command map. Const-generic identity passthrough — preserves the exact literal
97
- * keys so `runCommand('nonexistent')` is a tsc error after augmenting BasaltRegister.
94
+ * keys so the id union is exact after augmenting BasaltRegister.
98
95
  *
99
- * Stashes the runtime map so `runCommand` and `toSpotlightActions` resolve correctly at runtime
100
- * (type augmentation is erased; the stash is the live source).
96
+ * Stashes the runtime map so the provider resolves commands at runtime (type augmentation is
97
+ * erased; the stash is the live source).
101
98
  *
102
99
  * @example
103
100
  * export const COMMANDS = defineCommands({
@@ -114,27 +111,14 @@ export declare function defineCommands<const T extends CommandMap>(spec: T): T;
114
111
  *
115
112
  * WARNING: defineCommand only TYPES a command — it does NOT register it into the runtime stash.
116
113
  * Only defineCommands(map) registers commands. Calling defineCommand alone means the command will
117
- * never appear in the palette or be reachable via runCommand.
114
+ * never appear in the palette or bind its shortcut.
118
115
  *
119
116
  * @example
120
117
  * const saveCmd = defineCommand({ label: 'Save', shortcut: 'Mod+S', run: () => save() })
121
118
  * // Then include saveCmd in a defineCommands({ 'file:save': saveCmd }) call to register it.
122
119
  */
123
120
  export declare function defineCommand(cmd: Command): Command;
124
- /**
125
- * Run a registered command by id. The id must be a key of the consumer's registered
126
- * `BasaltRegister.commands` map — any other string is a tsc error.
127
- *
128
- * Resolves the command's run function from the runtime stash (NOT from the type slot — that is
129
- * erased). Un-augmented (Commands = {}): CommandId = never → `runCommand` is effectively
130
- * uncallable. Augmented: only the registered keys are accepted.
131
- *
132
- * @example
133
- * runCommand('file:save')
134
- * await runCommand('data:sync', { close: () => closeModal() })
135
- */
136
- export declare function runCommand(id: CommandId, ctx?: CommandRunContext): void | Promise<void>;
137
- /** @internal — exposed for projectors.ts to iterate the runtime stash. Returns a readonly view. */
121
+ /** @internal — exposed to the provider and projectors.ts to iterate the runtime stash. Returns a readonly view. */
138
122
  export declare function getActiveCommands(): Readonly<CommandMap>;
139
123
  export {};
140
124
  //# sourceMappingURL=define-commands.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"define-commands.d.ts","sourceRoot":"","sources":["../../src/commands/define-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAIvC;;;;;;;GAOG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,wFAAwF;IACxF,KAAK,CAAC,EAAE,MAAM,IAAI,CAAA;CACnB,CAAA;AAID;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAA;IACb,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,+EAA+E;IAC/E,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,OAAO,CAAA;IACpB,yCAAyC;IACzC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,iBAAiB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACvD,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAIhD,wEAAwE;AACxE,KAAK,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;AAE5C;;;;;;;;;;GAUG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,QAAQ,EAAE,MAAM,CAAC,CAAA;AAcvD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,KAAK,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAGrE;AAID;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAEnD;AAID;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,iBAAiB,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAQvF;AAED,mGAAmG;AACnG,wBAAgB,iBAAiB,IAAI,QAAQ,CAAC,UAAU,CAAC,CAExD"}
1
+ {"version":3,"file":"define-commands.d.ts","sourceRoot":"","sources":["../../src/commands/define-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAIvC;;;;;;;GAOG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,qFAAqF;IACrF,KAAK,CAAC,EAAE,MAAM,IAAI,CAAA;CACnB,CAAA;AAID;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAA;IACb,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,+EAA+E;IAC/E,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,OAAO,CAAA;IACpB,yCAAyC;IACzC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,iBAAiB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACvD,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAIhD,wEAAwE;AACxE,KAAK,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;AAE5C;;;;;;;;;;GAUG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,QAAQ,EAAE,MAAM,CAAC,CAAA;AAcvD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,KAAK,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAGrE;AAID;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAEnD;AAED,mHAAmH;AACnH,wBAAgB,iBAAiB,IAAI,QAAQ,CAAC,UAAU,CAAC,CAExD"}
@@ -6,21 +6,11 @@ function defineCommands(spec) {
6
6
  function defineCommand(cmd) {
7
7
  return cmd;
8
8
  }
9
- function runCommand(id, ctx) {
10
- const cmd = activeCommands[id];
11
- if (cmd === void 0) {
12
- if (process.env.NODE_ENV !== "production")
13
- console.warn(`[basalt] runCommand: no command registered for "${id}"`);
14
- return;
15
- }
16
- return cmd.run(ctx);
17
- }
18
9
  function getActiveCommands() {
19
10
  return activeCommands;
20
11
  }
21
12
  export {
22
13
  defineCommand,
23
14
  defineCommands,
24
- getActiveCommands,
25
- runCommand
15
+ getActiveCommands
26
16
  };
@@ -5,7 +5,7 @@
5
5
  * `overlays` imperative controller — unknown keys are tsc errors. The type slot gives the
6
6
  * compile-time key union; the module-level stash gives the runtime values.
7
7
  *
8
- * Uses @mantine/modals under the hood. ModalsProvider must be mounted (BasaltOverlays does this).
8
+ * Uses @mantine/modals under the hood. ModalsProvider must be mounted (BasaltProvider does this).
9
9
  *
10
10
  * @example
11
11
  * // overlays.ts (app-side)
@@ -28,26 +28,12 @@
28
28
  import type { ReactNode } from 'react';
29
29
  import type { Slot } from '../register.js';
30
30
  /**
31
- * Declare that a `@mantine/modals` `<ModalsProvider>` is mounted and serving, and get back the
32
- * function that retracts it. `BasaltOverlays` calls this for its own provider; a consumer mounting
33
- * the provider THEMSELVES (with `<BasaltOverlays modals={false} />`, or with no `BasaltOverlays` at
34
- * all) calls it too, or `overlays.confirm` cannot tell their provider from no provider and rejects.
35
- *
36
- * There is no way to detect the provider from outside React — its context is only readable through
37
- * `useModals()`, and `confirm` is an imperative call with no component to read it from. So the
38
- * registration is explicit.
39
- *
40
- * @example
41
- * useEffect(() => registerModalsProvider(), [])
42
- * // …beside your own <ModalsProvider> mount.
31
+ * Internal — `BasaltProvider` declares its `ModalsProvider` as live for as long as it is mounted,
32
+ * and gets back the function that retracts it. There is no way to detect the provider from outside
33
+ * React (its context is only readable through `useModals()`, and `confirm` is an imperative call),
34
+ * so the registration is explicit. Not on the `./commands` barrel.
43
35
  */
44
36
  export declare function registerModalsProvider(): () => void;
45
- /**
46
- * Internal — `BasaltOverlays` registers its OWN lazy `ModalsProvider` here, and only when it
47
- * actually renders one. Deliberately NOT on the `./commands` barrel (internal wiring only, same as
48
- * `notifications/mount-guard`); the consumer-facing half is {@link registerModalsProvider}.
49
- */
50
- export declare function useModalsLayer(enabled: boolean): void;
51
37
  /**
52
38
  * A single registered overlay. The per-overlay props type P is the consumer's own payload.
53
39
  *
@@ -1 +1 @@
1
- {"version":3,"file":"define-overlays.d.ts","sourceRoot":"","sources":["../../src/commands/define-overlays.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAiCvC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,IAAI,CAUnD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAKrD;AAID;;;;;;;;GAQG;AAEH,MAAM,MAAM,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI;IACjD,yDAAyD;IACzD,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,iDAAiD;IACjD,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,SAAS,CAAA;CAChC,CAAA;AAED;;;;;;;GAOG;AAEH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;AAIrD,wEAAwE;AACxE,KAAK,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;AAE5C;;;;;;;;GAQG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,QAAQ,EAAE,MAAM,CAAC,CAAA;AAaxD;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,KAAK,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAGrE;AAID;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAE1F;AAID,8FAA8F;AAC9F,MAAM,MAAM,cAAc,GAAG;IAC3B,gFAAgF;IAChF,KAAK,EAAE,SAAS,CAAA;IAChB,wFAAwF;IACxF,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,2FAA2F;IAC3F,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,qDAAqD;IACrD,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,+FAA+F;IAC/F,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACtB,CAAA;AAED,iGAAiG;AACjG,MAAM,MAAM,oBAAoB,GAAG;IACjC;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAA;IACf,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,qDAAqD;IACrD,SAAS,EAAE,MAAM,IAAI,CAAA;CACtB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,iBAAe,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CA2DhE;AAED;;;;;;;GAOG;AACH,iBAAS,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CAUtE;AAID;;;;GAIG;AACH,KAAK,YAAY,CAAC,CAAC,SAAS,UAAU,IAAI,QAAQ,SAAS;KAAG,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAAE,GACtF,CAAC,GACD,KAAK,CAAA;AAET;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,QAAQ;IACnB;;;;;;;;;OASG;SACE,CAAC,SAAS,UAAU,OAAO,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI;IAehE;;;;;OAKG;;IAGH;;;;;OAKG;;IAGH;;;;;OAKG;aACM,IAAI;CAGd,CAAA"}
1
+ {"version":3,"file":"define-overlays.d.ts","sourceRoot":"","sources":["../../src/commands/define-overlays.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AA+BvC;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,IAAI,CAUnD;AAID;;;;;;;;GAQG;AAEH,MAAM,MAAM,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI;IACjD,yDAAyD;IACzD,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,iDAAiD;IACjD,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,SAAS,CAAA;CAChC,CAAA;AAED;;;;;;;GAOG;AAEH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;AAIrD,wEAAwE;AACxE,KAAK,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;AAE5C;;;;;;;;GAQG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,QAAQ,EAAE,MAAM,CAAC,CAAA;AAaxD;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,KAAK,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAGrE;AAID;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAE1F;AAID,8FAA8F;AAC9F,MAAM,MAAM,cAAc,GAAG;IAC3B,gFAAgF;IAChF,KAAK,EAAE,SAAS,CAAA;IAChB,wFAAwF;IACxF,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,2FAA2F;IAC3F,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,qDAAqD;IACrD,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,+FAA+F;IAC/F,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACtB,CAAA;AAED,iGAAiG;AACjG,MAAM,MAAM,oBAAoB,GAAG;IACjC;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAA;IACf,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,qDAAqD;IACrD,SAAS,EAAE,MAAM,IAAI,CAAA;CACtB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,iBAAe,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CA0DhE;AAED;;;;;;;GAOG;AACH,iBAAS,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CAUtE;AAID;;;;GAIG;AACH,KAAK,YAAY,CAAC,CAAC,SAAS,UAAU,IAAI,QAAQ,SAAS;KAAG,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAAE,GACtF,CAAC,GACD,KAAK,CAAA;AAET;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,QAAQ;IACnB;;;;;;;;;OASG;SACE,CAAC,SAAS,UAAU,OAAO,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI;IAehE;;;;;OAKG;;IAGH;;;;;OAKG;;IAGH;;;;;OAKG;aACM,IAAI;CAGd,CAAA"}
@@ -1,4 +1,3 @@
1
- import { useEffect } from "react";
2
1
  import { missingLayer } from "../common/errors.js";
3
2
  let modalsPromise;
4
3
  function loadModals() {
@@ -15,12 +14,6 @@ function registerModalsProvider() {
15
14
  mountedModalsProviders--;
16
15
  };
17
16
  }
18
- function useModalsLayer(enabled) {
19
- useEffect(() => {
20
- if (!enabled) return;
21
- return registerModalsProvider();
22
- }, [enabled]);
23
- }
24
17
  let activeOverlays = {};
25
18
  function defineOverlays(spec) {
26
19
  activeOverlays = spec;
@@ -45,7 +38,7 @@ async function confirm(options) {
45
38
  missingLayer(
46
39
  "overlays.confirm",
47
40
  "@mantine/modals",
48
- "install the @mantine/modals peer and mount <BasaltOverlays>"
41
+ "install the @mantine/modals peer and mount <BasaltProvider>"
49
42
  )
50
43
  );
51
44
  }
@@ -54,7 +47,7 @@ async function confirm(options) {
54
47
  missingLayer(
55
48
  "overlays.confirm",
56
49
  "a mounted <ModalsProvider>",
57
- "drop `modals={false}` from <BasaltOverlays>, or mount <ModalsProvider> yourself and call registerModalsProvider() from an effect for as long as it is up"
50
+ "mount <BasaltProvider> at the app root before calling it"
58
51
  )
59
52
  );
60
53
  }
@@ -147,6 +140,5 @@ export {
147
140
  defineOverlay,
148
141
  defineOverlays,
149
142
  overlays,
150
- registerModalsProvider,
151
- useModalsLayer
143
+ registerModalsProvider
152
144
  };
@@ -1,52 +1,22 @@
1
1
  /**
2
- * ./commands — command bus, overlay controller, Spotlight projection, shortcuts display,
3
- * live keybindings, and composable overlay mount for basalt-ui apps.
2
+ * ./commands — the command bus, overlay controller, shortcuts help and the notification registry.
4
3
  *
5
- * Optional peers: @mantine/modals ^9.3.0, @mantine/spotlight ^9.3.0,
6
- * @mantine/notifications ^9.3.0, @tanstack/react-hotkeys 0.10.0.
7
- *
8
- * Install with: bun add @mantine/modals @mantine/spotlight @mantine/notifications @tanstack/react-hotkeys
9
- * Also import the Spotlight styles in main.tsx (the layered bundle — the unlayered one outranks
10
- * basalt's `@layer basalt` styles regardless of specificity): import '@mantine/spotlight/styles.layer.css'
4
+ * `BasaltProvider` mounts modals, Spotlight, hotkeys and notifications; this barrel is only what
5
+ * an app declares and calls.
11
6
  *
12
7
  * @example
13
- * // commands.ts (app-side) — define + augment:
14
- * import { defineCommands } from 'basalt-ui/commands'
8
+ * import { defineCommands, defineNotifications, emit } from 'basalt-ui/commands'
15
9
  * export const COMMANDS = defineCommands({
16
10
  * 'file:save': { label: 'Save', group: 'File', shortcut: 'Mod+S', run: () => save() },
17
11
  * })
18
12
  * declare module 'basalt-ui' {
19
13
  * interface BasaltRegister { commands: typeof COMMANDS }
20
14
  * }
21
- *
22
- * // main.tsx — mount composable overlays:
23
- * import { BasaltOverlays } from 'basalt-ui/commands'
24
- * import '@mantine/spotlight/styles.layer.css'
25
- * <BasaltProvider><BasaltOverlays><App /></BasaltOverlays></BasaltProvider>
26
- *
27
- * // usage.ts — run a command:
28
- * import { runCommand } from 'basalt-ui/commands'
29
- * runCommand('file:save')
30
- *
31
- * // usage.ts — the registry-free confirm dialog:
32
- * import { overlays } from 'basalt-ui/commands'
33
- * const ok = await overlays.confirm({ title: 'Discard draft?', onConfirm: () => reset() })
34
- * overlays.confirmDelete({ subject: 'item', count: 3, onConfirm: () => removeSelected() })
35
- *
36
- * // Mounting ModalsProvider yourself instead of letting <BasaltOverlays> do it:
37
- * import { registerModalsProvider } from 'basalt-ui/commands'
38
- * useEffect(() => registerModalsProvider(), [])
39
- *
40
- * // Open/close Spotlight programmatically:
41
- * import { openSpotlight, closeSpotlight } from 'basalt-ui/commands'
42
- * openSpotlight()
43
15
  */
44
- export { defineCommands, defineCommand, runCommand, type Command, type CommandMap, type CommandId, type CommandRunContext, } from './define-commands.js';
45
- export { defineOverlays, defineOverlay, overlays, registerModalsProvider, type Overlay, type OverlayMap, type OverlayKey, type ConfirmOptions, type ConfirmDeleteOptions, } from './define-overlays.js';
46
- export { toSpotlightActions, toRouteActions, toShortcutList, toHotkeyBindings, type RouteActionItem, type RouteActionSection, type ToRouteActionsOptions, type ShortcutEntry, type HotkeyBinding, } from './projectors.js';
47
- export { setColorScheme, toggleSidebar, type ColorScheme, type ColorSchemeSetter, type SidebarToggle, } from './shell-bridge.js';
48
- export { parseShortcut, detectMac, formatShortcutDisplay } from './shortcut-format.js';
49
- export { useCommandHotkeys } from './useCommandHotkeys.js';
50
- export { ShortcutsHelp, type ShortcutsHelpProps } from './ShortcutsHelp.js';
51
- export { BasaltOverlays, type BasaltOverlaysProps, basaltSpotlight, openSpotlight, closeSpotlight, } from './overlays-mount.js';
16
+ export { defineCommands, type Command } from './define-commands.js';
17
+ export { defineOverlays, overlays } from './define-overlays.js';
18
+ export { setColorScheme, toggleSidebar } from './shell-bridge.js';
19
+ export { ShortcutsHelp } from './ShortcutsHelp.js';
20
+ export { defineNotifications, emit } from './notifications/define-notifications.js';
21
+ export { NotificationBell } from './notifications/bell.js';
52
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAGH,OAAO,EACL,cAAc,EACd,aAAa,EACb,UAAU,EACV,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,iBAAiB,GACvB,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EACL,cAAc,EACd,aAAa,EACb,QAAQ,EACR,sBAAsB,EACtB,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,oBAAoB,GAC1B,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,cAAc,CAAA;AAGrB,OAAO,EACL,cAAc,EACd,aAAa,EACb,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,aAAa,GACnB,MAAM,gBAAgB,CAAA;AAGvB,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAGnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAGvD,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAGxE,OAAO,EACL,cAAc,EACd,KAAK,mBAAmB,EACxB,eAAe,EACf,aAAa,EACb,cAAc,GACf,MAAM,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,cAAc,EAAE,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAG/C,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,sCAAsC,CAAA;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA"}
@@ -1,54 +1,17 @@
1
- import {
2
- defineCommands,
3
- defineCommand,
4
- runCommand
5
- } from "./define-commands.js";
6
- import {
7
- defineOverlays,
8
- defineOverlay,
9
- overlays,
10
- registerModalsProvider
11
- } from "./define-overlays.js";
12
- import {
13
- toSpotlightActions,
14
- toRouteActions,
15
- toShortcutList,
16
- toHotkeyBindings
17
- } from "./projectors.js";
18
- import {
19
- setColorScheme,
20
- toggleSidebar
21
- } from "./shell-bridge.js";
22
- import { parseShortcut, detectMac, formatShortcutDisplay } from "./shortcut-format.js";
23
- import { useCommandHotkeys } from "./useCommandHotkeys.js";
1
+ import { defineCommands } from "./define-commands.js";
2
+ import { defineOverlays, overlays } from "./define-overlays.js";
3
+ import { setColorScheme, toggleSidebar } from "./shell-bridge.js";
24
4
  import { ShortcutsHelp } from "./ShortcutsHelp.js";
25
- import {
26
- BasaltOverlays,
27
- basaltSpotlight,
28
- openSpotlight,
29
- closeSpotlight
30
- } from "./overlays-mount.js";
5
+ import { defineNotifications, emit } from "./notifications/define-notifications.js";
6
+ import { NotificationBell } from "./notifications/bell.js";
31
7
  export {
32
- BasaltOverlays,
8
+ NotificationBell,
33
9
  ShortcutsHelp,
34
- basaltSpotlight,
35
- closeSpotlight,
36
- defineCommand,
37
10
  defineCommands,
38
- defineOverlay,
11
+ defineNotifications,
39
12
  defineOverlays,
40
- detectMac,
41
- formatShortcutDisplay,
42
- openSpotlight,
13
+ emit,
43
14
  overlays,
44
- parseShortcut,
45
- registerModalsProvider,
46
- runCommand,
47
15
  setColorScheme,
48
- toHotkeyBindings,
49
- toRouteActions,
50
- toShortcutList,
51
- toSpotlightActions,
52
- toggleSidebar,
53
- useCommandHotkeys
16
+ toggleSidebar
54
17
  };
@@ -1,4 +1,4 @@
1
- import type { BasaltProps } from '../common/props.js';
1
+ import type { BasaltProps } from '../../common/props.js';
2
2
  export type NotificationBellProps = BasaltProps & {
3
3
  /** Tooltip label. Default: 'Notifications'. */
4
4
  label?: string;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bell.d.ts","sourceRoot":"","sources":["../../../src/commands/notifications/bell.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAOrD,MAAM,MAAM,qBAAqB,GAAG,WAAW,GAAG;IAChD,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,KAAuB,EACvB,SAAS,EACT,KAAK,GACN,EAAE,qBAAqB,+BA+EvB"}
@@ -1,4 +1,4 @@
1
- import type { BasaltProps } from '../common/props.js';
1
+ import type { BasaltProps } from '../../common/props.js';
2
2
  /** The popover width `NotificationBell` fixes at the `Popover` level (see `NotificationCenter`'s
3
3
  * own doc for why WIDTH lives there and not on this component). Shared so the two call sites and
4
4
  * this doc's example never drift apart. */
@@ -19,7 +19,7 @@ export type NotificationCenterProps = BasaltProps & {
19
19
  * its own container.
20
20
  *
21
21
  * @example
22
- * import { NOTIFICATION_POPOVER_WIDTH, NotificationCenter } from 'basalt-ui/notifications'
22
+ * import { NOTIFICATION_POPOVER_WIDTH, NotificationCenter } from './center.js'
23
23
  *
24
24
  * <Popover width={NOTIFICATION_POPOVER_WIDTH}>
25
25
  * <Popover.Dropdown>
@@ -0,0 +1 @@
1
+ {"version":3,"file":"center.d.ts","sourceRoot":"","sources":["../../../src/commands/notifications/center.tsx"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAyCrD;;4CAE4C;AAC5C,eAAO,MAAM,0BAA0B,MAAM,CAAA;AAwF7C,MAAM,MAAM,uBAAuB,GAAG,WAAW,GAAG;IAClD,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAC5B,CAAA;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,SAAe,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,uBAAuB,+BA4EhG"}
@@ -10,8 +10,8 @@ import {
10
10
  Stack,
11
11
  Text
12
12
  } from "@mantine/core";
13
- import { cx } from "../common/props.js";
14
- import { VX } from "../tokens/index.js";
13
+ import { cx } from "../../common/props.js";
14
+ import { VX } from "../../tokens/index.js";
15
15
  import { resolveAction } from "./define-notifications.js";
16
16
  import { useNotificationHistory } from "./store.js";
17
17
  function relativeTime(createdAt) {
@@ -12,7 +12,7 @@
12
12
  *
13
13
  * @example
14
14
  * // notifications.ts (app-side)
15
- * import { defineNotifications } from 'basalt-ui/notifications'
15
+ * import { defineNotifications } from 'basalt-ui/commands'
16
16
  * export const NOTIFICATIONS = defineNotifications({
17
17
  * 'upload:success': { intent: 'success', toMessage: (p: { name: string }) => `Uploaded ${p.name}` },
18
18
  * 'upload:error': { intent: 'error', toMessage: (_: unknown) => 'Upload failed' },
@@ -22,13 +22,13 @@
22
22
  * }
23
23
  *
24
24
  * // usage.ts
25
- * import { emit } from 'basalt-ui/notifications'
25
+ * import { emit } from 'basalt-ui/commands'
26
26
  * emit('upload:success', { name: 'photo.jpg' }) // ✓ typed, and the payload shape is checked
27
27
  * emit('upload:success', 'nope') // ✗ tsc error — wrong payload shape
28
28
  * emit('nonexistent', {}) // ✗ tsc error — unregistered kind
29
29
  */
30
30
  import type { ReactNode } from 'react';
31
- import type { Slot } from '../register.js';
31
+ import type { Slot } from '../../register.js';
32
32
  import type { NotifyOptions, NotificationIntent } from './notify.js';
33
33
  import type { NotificationActionRef } from './store.js';
34
34
  export type { NotificationIntent };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-notifications.d.ts","sourceRoot":"","sources":["../../../src/commands/notifications/define-notifications.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAE1C,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AACjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAEpD,YAAY,EAAE,kBAAkB,EAAE,CAAA;AAIlC;;;;;;;;GAQG;AACH,MAAM,MAAM,kBAAkB,CAAC,CAAC,GAAG,OAAO,IAAI;IAC5C,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,CAAA;CAC1B,CAAA;AAID;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,GAAG,OAAO,IAAI;IAC1C,MAAM,CAAC,EAAE,kBAAkB,CAAA;IAC3B,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,SAAS,CAAA;IACrC,MAAM,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAA;CAC/B,CAAA;AAED,wDAAwD;AAExD,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAA;AAIvE,kFAAkF;AAClF,KAAK,aAAa,GAAG,IAAI,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAA;AAE/D;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM,aAAa,EAAE,MAAM,CAAC,CAAA;AAEnE;;;;;;GAMG;AACH,KAAK,mBAAmB,CAAC,CAAC,SAAS,gBAAgB,IAAI,aAAa,SAAS;KAC1E,EAAE,IAAI,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;CACrC,GACG,CAAC,GACD,OAAO,CAAA;AAIX;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAE9F;AAsBD,wBAAgB,mBAAmB,CAAC,KAAK,CAAC,CAAC,SAAS,mBAAmB,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAGnF;AAID;;;;;GAKG;AACH,KAAK,QAAQ,CAAC,CAAC,SAAS,gBAAgB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,GAClF,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,GAAG,SAAS,CAAC,CAAC,GACrE,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAA;AAEvF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,gBAAgB,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAYtF;AAID;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,qBAAqB,GACzB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,IAAI,CAAA;CAAE,GAAG,SAAS,CAIhD"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * notify — core toast helper wrapping @mantine/notifications.
3
+ *
4
+ * Maps intent → Mantine color name, sets per-intent aria role and autoClose defaults,
5
+ * records every toast into the module-level history store, and applies two-layer dedup:
6
+ * 1. Mantine id-dedup (passing the same id to notifications.show is a no-op on screen)
7
+ * 2. dedupKey window — module-level Map prevents duplicate keys within 1500ms
8
+ *
9
+ * Internal: consumers reach it through `emit` (`defineNotifications`).
10
+ *
11
+ * @example
12
+ * notify({ intent: 'success', message: 'Saved' })
13
+ * notify({ intent: 'error', message: 'Failed', title: 'Upload error', autoClose: false })
14
+ */
15
+ import type { ReactNode } from 'react';
16
+ import type { NotificationIntent, NotificationActionRef } from './store.js';
17
+ export type { NotificationIntent };
18
+ export type NotifyOptions = {
19
+ intent?: NotificationIntent;
20
+ message: ReactNode;
21
+ title?: ReactNode;
22
+ icon?: ReactNode;
23
+ autoClose?: number | false;
24
+ id?: string;
25
+ dedupKey?: string;
26
+ /**
27
+ * A serializable action ref — gives the recorded item an action button in the notification
28
+ * center. Usually attached automatically by `emit()` from the kind's spec; pass it directly
29
+ * only when calling `notify()` for an action registered in the notifications registry.
30
+ */
31
+ action?: NotificationActionRef;
32
+ };
33
+ /**
34
+ * Show a toast and record it to the notification history. Only string / number `message` and
35
+ * `title` are recorded; any other node shows in the toast but the history keeps `''` (message) or
36
+ * no title.
37
+ * Returns the notification id (string).
38
+ *
39
+ * @example
40
+ * const id = notify({ intent: 'success', message: 'Profile saved', title: 'Success' })
41
+ * const id = notify({ intent: 'error', message: <b>Failed</b>, autoClose: false })
42
+ */
43
+ export declare function notify(opts: NotifyOptions): string;
44
+ //# sourceMappingURL=notify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notify.d.ts","sourceRoot":"","sources":["../../../src/commands/notifications/notify.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtC,OAAO,KAAK,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAExE,YAAY,EAAE,kBAAkB,EAAE,CAAA;AAmElC,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,CAAC,EAAE,kBAAkB,CAAA;IAC3B,OAAO,EAAE,SAAS,CAAA;IAClB,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;OAIG;IACH,MAAM,CAAC,EAAE,qBAAqB,CAAA;CAC/B,CAAA;AAID;;;;;;;;;GASG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CA2ClD"}
@@ -0,0 +1,79 @@
1
+ import { notifications } from "@mantine/notifications";
2
+ import { add, has } from "./store.js";
3
+ const INTENT_COLOR = {
4
+ success: "green",
5
+ error: "red",
6
+ warning: "yellow",
7
+ info: "blue"
8
+ };
9
+ const INTENT_ROLE = {
10
+ error: "alert",
11
+ warning: "alert",
12
+ success: "status",
13
+ info: "status"
14
+ };
15
+ const INTENT_AUTO_CLOSE = {
16
+ success: 2e3,
17
+ info: 3e3,
18
+ warning: 5e3,
19
+ error: false
20
+ };
21
+ const DEDUP_WINDOW_MS = 1500;
22
+ const dedupKeyTimestamps = /* @__PURE__ */ new Map();
23
+ function pruneDedupKeys(now) {
24
+ for (const [key, { at }] of dedupKeyTimestamps) {
25
+ if (now - at >= DEDUP_WINDOW_MS) dedupKeyTimestamps.delete(key);
26
+ }
27
+ }
28
+ function recentIdForKey(dedupKey) {
29
+ const last = dedupKeyTimestamps.get(dedupKey);
30
+ if (last === void 0 || Date.now() - last.at >= DEDUP_WINDOW_MS) return void 0;
31
+ return last.id;
32
+ }
33
+ let seq = 0;
34
+ function nextId() {
35
+ return `basalt-${Date.now()}-${++seq}`;
36
+ }
37
+ function historyText(node) {
38
+ if (typeof node === "string") return node;
39
+ if (typeof node === "number") return String(node);
40
+ return void 0;
41
+ }
42
+ function notify(opts) {
43
+ const { intent = "info", message, title, icon, autoClose, id, dedupKey, action } = opts;
44
+ if (dedupKey !== void 0) {
45
+ const recorded = recentIdForKey(dedupKey);
46
+ if (recorded !== void 0) return recorded;
47
+ }
48
+ const resolvedId = id ?? nextId();
49
+ if (dedupKey !== void 0) {
50
+ pruneDedupKeys(Date.now());
51
+ dedupKeyTimestamps.set(dedupKey, { at: Date.now(), id: resolvedId });
52
+ }
53
+ const color = INTENT_COLOR[intent];
54
+ const role = INTENT_ROLE[intent];
55
+ const resolvedAutoClose = autoClose !== void 0 ? autoClose : INTENT_AUTO_CLOSE[intent];
56
+ notifications.show({
57
+ id: resolvedId,
58
+ message,
59
+ title: title ?? void 0,
60
+ color,
61
+ icon: icon ?? void 0,
62
+ autoClose: resolvedAutoClose,
63
+ role
64
+ });
65
+ if (id !== void 0 && has(id)) return resolvedId;
66
+ const titleText = historyText(title);
67
+ add({
68
+ id: resolvedId,
69
+ intent,
70
+ ...titleText !== void 0 && { title: titleText },
71
+ message: historyText(message) ?? "",
72
+ createdAt: Date.now(),
73
+ ...action !== void 0 && { action }
74
+ });
75
+ return resolvedId;
76
+ }
77
+ export {
78
+ notify
79
+ };
@@ -50,6 +50,8 @@ export type UseNotificationHistoryReturn = {
50
50
  * success/info confirmations are disposable — they live only in the full history, never the Inbox.
51
51
  */
52
52
  export declare function needsAttention(item: NotificationHistoryItem): boolean;
53
+ /** Whether the history already holds an item with this id. */
54
+ export declare function has(id: string): boolean;
53
55
  /**
54
56
  * Add a notification to the history store (ring-buffer capped at 50).
55
57
  * Called by notify() — safe to call outside React.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/commands/notifications/store.ts"],"names":[],"mappings":"AA0BA;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAA;AAEzE;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,sFAAsF;IACtF,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,kGAAkG;AAClG,MAAM,MAAM,uBAAuB,GAAG;IACpC,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,kBAAkB,CAAA;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,4FAA4F;IAC5F,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,sFAAsF;IACtF,MAAM,CAAC,EAAE,qBAAqB,CAAA;CAC/B,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG,uBAAuB,EAAE,CAAA;AAEhE,MAAM,MAAM,4BAA4B,GAAG;IACzC,wDAAwD;IACxD,KAAK,EAAE,uBAAuB,EAAE,CAAA;IAChC,8EAA8E;IAC9E,KAAK,EAAE,uBAAuB,EAAE,CAAA;IAChC,kFAAkF;IAClF,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,WAAW,EAAE,MAAM,IAAI,CAAA;IACvB,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7B,UAAU,EAAE,MAAM,IAAI,CAAA;IACtB,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5B,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB,CAAA;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAErE;AA0ED,8DAA8D;AAC9D,wBAAgB,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAEvC;AAED;;;;;;GAMG;AACH,wBAAgB,GAAG,CAAC,IAAI,EAAE,uBAAuB,GAAG,IAAI,CAGvD;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAEzC;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAGlC;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAExC;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,IAAI,IAAI,CAOjC;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAEvC;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,IAAI,IAAI,CAE5B;AA4BD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,sBAAsB,IAAI,4BAA4B,CAWrE"}
@@ -46,6 +46,9 @@ if (typeof window !== "undefined") {
46
46
  }
47
47
  });
48
48
  }
49
+ function has(id) {
50
+ return state.some((item) => item.id === id);
51
+ }
49
52
  function add(item) {
50
53
  const next = [item, ...state].slice(0, RING_CAP);
51
54
  setState(next);
@@ -105,6 +108,7 @@ export {
105
108
  clear,
106
109
  dismiss,
107
110
  dismissAll,
111
+ has,
108
112
  markAllRead,
109
113
  markRead,
110
114
  needsAttention,