@miragon/mcp-toolkit-ui 2.7.0 → 2.8.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 (387) hide show
  1. package/README.md +7 -4
  2. package/dist/app/adapt-data-widget.d.ts +1 -22
  3. package/dist/app/adapt-data-widget.d.ts.map +1 -1
  4. package/dist/app/adapt-data-widget.js +1 -35
  5. package/dist/app/adapt-data-widget.js.map +1 -1
  6. package/dist/app/builder/BuilderBanners.js +1 -1
  7. package/dist/app/builder/BuilderBanners.js.map +1 -1
  8. package/dist/app/builder/CanvasRow.d.ts +4 -2
  9. package/dist/app/builder/CanvasRow.d.ts.map +1 -1
  10. package/dist/app/builder/CanvasRow.js +21 -7
  11. package/dist/app/builder/CanvasRow.js.map +1 -1
  12. package/dist/app/builder/CatalogueSheet.d.ts.map +1 -1
  13. package/dist/app/builder/CatalogueSheet.js +11 -4
  14. package/dist/app/builder/CatalogueSheet.js.map +1 -1
  15. package/dist/app/builder/CellPropsSheet.d.ts +7 -3
  16. package/dist/app/builder/CellPropsSheet.d.ts.map +1 -1
  17. package/dist/app/builder/CellPropsSheet.js +10 -3
  18. package/dist/app/builder/CellPropsSheet.js.map +1 -1
  19. package/dist/app/builder/DiscardDialog.d.ts +18 -0
  20. package/dist/app/builder/DiscardDialog.d.ts.map +1 -0
  21. package/dist/app/builder/DiscardDialog.js +18 -0
  22. package/dist/app/builder/DiscardDialog.js.map +1 -0
  23. package/dist/app/builder/LayoutSurface.d.ts +33 -9
  24. package/dist/app/builder/LayoutSurface.d.ts.map +1 -1
  25. package/dist/app/builder/LayoutSurface.js +74 -23
  26. package/dist/app/builder/LayoutSurface.js.map +1 -1
  27. package/dist/app/builder/PipelineStrip.d.ts +2 -1
  28. package/dist/app/builder/PipelineStrip.d.ts.map +1 -1
  29. package/dist/app/builder/PipelineStrip.js +26 -13
  30. package/dist/app/builder/PipelineStrip.js.map +1 -1
  31. package/dist/app/builder/SaveDialog.d.ts +9 -1
  32. package/dist/app/builder/SaveDialog.d.ts.map +1 -1
  33. package/dist/app/builder/SaveDialog.js +8 -2
  34. package/dist/app/builder/SaveDialog.js.map +1 -1
  35. package/dist/app/builder/Toolbar.d.ts +12 -4
  36. package/dist/app/builder/Toolbar.d.ts.map +1 -1
  37. package/dist/app/builder/Toolbar.js +18 -7
  38. package/dist/app/builder/Toolbar.js.map +1 -1
  39. package/dist/app/builder/Workspace.d.ts +23 -3
  40. package/dist/app/builder/Workspace.d.ts.map +1 -1
  41. package/dist/app/builder/Workspace.js +58 -8
  42. package/dist/app/builder/Workspace.js.map +1 -1
  43. package/dist/app/builder/builder-model.d.ts +143 -1
  44. package/dist/app/builder/builder-model.d.ts.map +1 -1
  45. package/dist/app/builder/builder-model.js +191 -1
  46. package/dist/app/builder/builder-model.js.map +1 -1
  47. package/dist/app/builder/reveal.d.ts +10 -0
  48. package/dist/app/builder/reveal.d.ts.map +1 -0
  49. package/dist/app/builder/reveal.js +10 -0
  50. package/dist/app/builder/reveal.js.map +1 -0
  51. package/dist/app/builder/use-builder-catalogue.d.ts +4 -1
  52. package/dist/app/builder/use-builder-catalogue.d.ts.map +1 -1
  53. package/dist/app/builder/use-builder-catalogue.js +44 -17
  54. package/dist/app/builder/use-builder-catalogue.js.map +1 -1
  55. package/dist/app/builder/use-builder-session.d.ts +30 -0
  56. package/dist/app/builder/use-builder-session.d.ts.map +1 -0
  57. package/dist/app/builder/use-builder-session.js +58 -0
  58. package/dist/app/builder/use-builder-session.js.map +1 -0
  59. package/dist/app/builder/use-display-resolver.d.ts +17 -0
  60. package/dist/app/builder/use-display-resolver.d.ts.map +1 -0
  61. package/dist/app/builder/use-display-resolver.js +16 -0
  62. package/dist/app/builder/use-display-resolver.js.map +1 -0
  63. package/dist/app/index.d.ts +8 -3
  64. package/dist/app/index.d.ts.map +1 -1
  65. package/dist/app/index.js +8 -2
  66. package/dist/app/index.js.map +1 -1
  67. package/dist/app/layout-builder.d.ts +13 -25
  68. package/dist/app/layout-builder.d.ts.map +1 -1
  69. package/dist/app/layout-builder.js +75 -81
  70. package/dist/app/layout-builder.js.map +1 -1
  71. package/dist/app/mcp-app-view-chrome.d.ts +12 -3
  72. package/dist/app/mcp-app-view-chrome.d.ts.map +1 -1
  73. package/dist/app/mcp-app-view-chrome.js +21 -5
  74. package/dist/app/mcp-app-view-chrome.js.map +1 -1
  75. package/dist/app/mcp-app-view-states.d.ts +11 -3
  76. package/dist/app/mcp-app-view-states.d.ts.map +1 -1
  77. package/dist/app/mcp-app-view-states.js +29 -8
  78. package/dist/app/mcp-app-view-states.js.map +1 -1
  79. package/dist/app/mcp-app-view.d.ts +33 -1
  80. package/dist/app/mcp-app-view.d.ts.map +1 -1
  81. package/dist/app/mcp-app-view.js +181 -127
  82. package/dist/app/mcp-app-view.js.map +1 -1
  83. package/dist/app/mcp-toolkit-app.d.ts +6 -1
  84. package/dist/app/mcp-toolkit-app.d.ts.map +1 -1
  85. package/dist/app/mcp-toolkit-app.js +8 -1
  86. package/dist/app/mcp-toolkit-app.js.map +1 -1
  87. package/dist/app/mcp-use-host-bridge.d.ts +15 -6
  88. package/dist/app/mcp-use-host-bridge.d.ts.map +1 -1
  89. package/dist/app/mcp-use-host-bridge.js +51 -22
  90. package/dist/app/mcp-use-host-bridge.js.map +1 -1
  91. package/dist/app/model-context.d.ts +71 -0
  92. package/dist/app/model-context.d.ts.map +1 -0
  93. package/dist/app/model-context.js +101 -0
  94. package/dist/app/model-context.js.map +1 -0
  95. package/dist/app/use-build-mode-focus.d.ts +33 -0
  96. package/dist/app/use-build-mode-focus.d.ts.map +1 -0
  97. package/dist/app/use-build-mode-focus.js +59 -0
  98. package/dist/app/use-build-mode-focus.js.map +1 -0
  99. package/dist/app/use-view-actions.d.ts +31 -0
  100. package/dist/app/use-view-actions.d.ts.map +1 -0
  101. package/dist/app/use-view-actions.js +81 -0
  102. package/dist/app/use-view-actions.js.map +1 -0
  103. package/dist/app/use-view-lifecycle.d.ts +4 -0
  104. package/dist/app/use-view-lifecycle.d.ts.map +1 -1
  105. package/dist/app/use-view-lifecycle.js +2 -0
  106. package/dist/app/use-view-lifecycle.js.map +1 -1
  107. package/dist/app/view-lifecycle.d.ts +80 -4
  108. package/dist/app/view-lifecycle.d.ts.map +1 -1
  109. package/dist/app/view-lifecycle.js +90 -3
  110. package/dist/app/view-lifecycle.js.map +1 -1
  111. package/dist/app/widget-fixture.d.ts +10 -3
  112. package/dist/app/widget-fixture.d.ts.map +1 -1
  113. package/dist/app/widget-fixture.js +21 -8
  114. package/dist/app/widget-fixture.js.map +1 -1
  115. package/dist/app/widget-props-sheet.d.ts +3 -1
  116. package/dist/app/widget-props-sheet.d.ts.map +1 -1
  117. package/dist/app/widget-props-sheet.js +22 -10
  118. package/dist/app/widget-props-sheet.js.map +1 -1
  119. package/dist/app/widget-renderer.js +1 -1
  120. package/dist/app/widget-renderer.js.map +1 -1
  121. package/dist/components/DrillButton.d.ts +9 -6
  122. package/dist/components/DrillButton.d.ts.map +1 -1
  123. package/dist/components/DrillButton.js +8 -6
  124. package/dist/components/DrillButton.js.map +1 -1
  125. package/dist/components/EmptyState.d.ts.map +1 -1
  126. package/dist/components/EmptyState.js +4 -2
  127. package/dist/components/EmptyState.js.map +1 -1
  128. package/dist/components/ErrorState.d.ts +5 -2
  129. package/dist/components/ErrorState.d.ts.map +1 -1
  130. package/dist/components/ErrorState.js +25 -8
  131. package/dist/components/ErrorState.js.map +1 -1
  132. package/dist/components/FilterBar.d.ts +15 -4
  133. package/dist/components/FilterBar.d.ts.map +1 -1
  134. package/dist/components/FilterBar.js +11 -6
  135. package/dist/components/FilterBar.js.map +1 -1
  136. package/dist/components/KpiGrid.d.ts +66 -21
  137. package/dist/components/KpiGrid.d.ts.map +1 -1
  138. package/dist/components/KpiGrid.js +101 -34
  139. package/dist/components/KpiGrid.js.map +1 -1
  140. package/dist/components/ListFooter.d.ts +31 -4
  141. package/dist/components/ListFooter.d.ts.map +1 -1
  142. package/dist/components/ListFooter.js +30 -11
  143. package/dist/components/ListFooter.js.map +1 -1
  144. package/dist/components/PagedListFooter.d.ts +57 -0
  145. package/dist/components/PagedListFooter.d.ts.map +1 -0
  146. package/dist/components/PagedListFooter.js +27 -0
  147. package/dist/components/PagedListFooter.js.map +1 -0
  148. package/dist/components/Pills.d.ts +27 -7
  149. package/dist/components/Pills.d.ts.map +1 -1
  150. package/dist/components/Pills.js +21 -6
  151. package/dist/components/Pills.js.map +1 -1
  152. package/dist/components/SectionHeading.d.ts +3 -1
  153. package/dist/components/SectionHeading.d.ts.map +1 -1
  154. package/dist/components/SectionHeading.js +6 -2
  155. package/dist/components/SectionHeading.js.map +1 -1
  156. package/dist/components/Toast.d.ts +9 -3
  157. package/dist/components/Toast.d.ts.map +1 -1
  158. package/dist/components/Toast.js +31 -16
  159. package/dist/components/Toast.js.map +1 -1
  160. package/dist/components/WidgetHeader.d.ts +34 -10
  161. package/dist/components/WidgetHeader.d.ts.map +1 -1
  162. package/dist/components/WidgetHeader.js +11 -6
  163. package/dist/components/WidgetHeader.js.map +1 -1
  164. package/dist/hooks/index.d.ts +4 -4
  165. package/dist/hooks/index.d.ts.map +1 -1
  166. package/dist/hooks/index.js +1 -1
  167. package/dist/hooks/index.js.map +1 -1
  168. package/dist/hooks/tool-result-recovery-model.d.ts +155 -0
  169. package/dist/hooks/tool-result-recovery-model.d.ts.map +1 -0
  170. package/dist/hooks/tool-result-recovery-model.js +273 -0
  171. package/dist/hooks/tool-result-recovery-model.js.map +1 -0
  172. package/dist/hooks/use-tool-query.d.ts +56 -14
  173. package/dist/hooks/use-tool-query.d.ts.map +1 -1
  174. package/dist/hooks/use-tool-query.js +102 -25
  175. package/dist/hooks/use-tool-query.js.map +1 -1
  176. package/dist/hooks/use-tool-result-recovery.d.ts +47 -52
  177. package/dist/hooks/use-tool-result-recovery.d.ts.map +1 -1
  178. package/dist/hooks/use-tool-result-recovery.js +58 -120
  179. package/dist/hooks/use-tool-result-recovery.js.map +1 -1
  180. package/dist/hooks/use-view-data.d.ts +52 -10
  181. package/dist/hooks/use-view-data.d.ts.map +1 -1
  182. package/dist/hooks/use-view-data.js +81 -16
  183. package/dist/hooks/use-view-data.js.map +1 -1
  184. package/dist/hooks/use-view-tool-query.d.ts +12 -7
  185. package/dist/hooks/use-view-tool-query.d.ts.map +1 -1
  186. package/dist/hooks/use-view-tool-query.js +15 -14
  187. package/dist/hooks/use-view-tool-query.js.map +1 -1
  188. package/dist/index.d.ts +17 -10
  189. package/dist/index.d.ts.map +1 -1
  190. package/dist/index.js +18 -6
  191. package/dist/index.js.map +1 -1
  192. package/dist/lib/focus-return.d.ts +61 -0
  193. package/dist/lib/focus-return.d.ts.map +1 -0
  194. package/dist/lib/focus-return.js +46 -0
  195. package/dist/lib/focus-return.js.map +1 -0
  196. package/dist/lib/parse-tool-result.d.ts +23 -1
  197. package/dist/lib/parse-tool-result.d.ts.map +1 -1
  198. package/dist/lib/parse-tool-result.js +38 -2
  199. package/dist/lib/parse-tool-result.js.map +1 -1
  200. package/dist/lib/toast-model.d.ts +41 -1
  201. package/dist/lib/toast-model.d.ts.map +1 -1
  202. package/dist/lib/toast-model.js +67 -1
  203. package/dist/lib/toast-model.js.map +1 -1
  204. package/dist/lib/tone-utils.d.ts +58 -6
  205. package/dist/lib/tone-utils.d.ts.map +1 -1
  206. package/dist/lib/tone-utils.js +66 -4
  207. package/dist/lib/tone-utils.js.map +1 -1
  208. package/dist/lib/tool-query.d.ts +107 -0
  209. package/dist/lib/tool-query.d.ts.map +1 -0
  210. package/dist/lib/tool-query.js +182 -0
  211. package/dist/lib/tool-query.js.map +1 -0
  212. package/dist/lib/tool-result-observer.d.ts +108 -0
  213. package/dist/lib/tool-result-observer.d.ts.map +1 -0
  214. package/dist/lib/tool-result-observer.js +158 -0
  215. package/dist/lib/tool-result-observer.js.map +1 -0
  216. package/dist/lib/typography.d.ts +37 -0
  217. package/dist/lib/typography.d.ts.map +1 -0
  218. package/dist/lib/typography.js +41 -0
  219. package/dist/lib/typography.js.map +1 -0
  220. package/dist/lib/utils.d.ts.map +1 -1
  221. package/dist/lib/utils.js +11 -1
  222. package/dist/lib/utils.js.map +1 -1
  223. package/dist/locale/index.d.ts +1 -1
  224. package/dist/locale/index.d.ts.map +1 -1
  225. package/dist/locale/message-types.d.ts +117 -4
  226. package/dist/locale/message-types.d.ts.map +1 -1
  227. package/dist/locale/messages-de.d.ts.map +1 -1
  228. package/dist/locale/messages-de.js +44 -10
  229. package/dist/locale/messages-de.js.map +1 -1
  230. package/dist/locale/messages-en.d.ts.map +1 -1
  231. package/dist/locale/messages-en.js +44 -10
  232. package/dist/locale/messages-en.js.map +1 -1
  233. package/dist/locale/toolkit-messages.d.ts +19 -1
  234. package/dist/locale/toolkit-messages.d.ts.map +1 -1
  235. package/dist/locale/toolkit-messages.js +54 -1
  236. package/dist/locale/toolkit-messages.js.map +1 -1
  237. package/dist/primitives/alert.d.ts +1 -1
  238. package/dist/primitives/alert.d.ts.map +1 -1
  239. package/dist/primitives/alert.js +2 -0
  240. package/dist/primitives/alert.js.map +1 -1
  241. package/dist/primitives/badge.d.ts +1 -1
  242. package/dist/primitives/badge.d.ts.map +1 -1
  243. package/dist/primitives/badge.js +9 -4
  244. package/dist/primitives/badge.js.map +1 -1
  245. package/dist/primitives/button.d.ts +1 -1
  246. package/dist/primitives/button.js +1 -1
  247. package/dist/primitives/button.js.map +1 -1
  248. package/dist/primitives/dialog.d.ts +1 -1
  249. package/dist/primitives/dialog.d.ts.map +1 -1
  250. package/dist/primitives/dialog.js +10 -3
  251. package/dist/primitives/dialog.js.map +1 -1
  252. package/dist/primitives/select.js +1 -1
  253. package/dist/primitives/select.js.map +1 -1
  254. package/dist/primitives/sheet.d.ts +1 -1
  255. package/dist/primitives/sheet.d.ts.map +1 -1
  256. package/dist/primitives/sheet.js +6 -2
  257. package/dist/primitives/sheet.js.map +1 -1
  258. package/dist/providers/query-provider.d.ts +32 -1
  259. package/dist/providers/query-provider.d.ts.map +1 -1
  260. package/dist/providers/query-provider.js +53 -4
  261. package/dist/providers/query-provider.js.map +1 -1
  262. package/dist/render-cases-primitives.js +1 -1
  263. package/dist/render-cases-primitives.js.map +1 -1
  264. package/dist/render-cases.d.ts.map +1 -1
  265. package/dist/render-cases.js +30 -6
  266. package/dist/render-cases.js.map +1 -1
  267. package/dist/render-effects.d.ts +42 -0
  268. package/dist/render-effects.d.ts.map +1 -0
  269. package/dist/render-effects.js +81 -0
  270. package/dist/render-effects.js.map +1 -0
  271. package/dist/theme/create-theme.d.ts +19 -1
  272. package/dist/theme/create-theme.d.ts.map +1 -1
  273. package/dist/theme/create-theme.js +15 -0
  274. package/dist/theme/create-theme.js.map +1 -1
  275. package/package.json +5 -4
  276. package/src/app/adapt-data-widget.tsx +2 -42
  277. package/src/app/builder/BuilderBanners.tsx +1 -1
  278. package/src/app/builder/CanvasRow.tsx +63 -17
  279. package/src/app/builder/CatalogueSheet.tsx +50 -29
  280. package/src/app/builder/CellPropsSheet.tsx +17 -2
  281. package/src/app/builder/DiscardDialog.tsx +59 -0
  282. package/src/app/builder/LayoutSurface.tsx +206 -66
  283. package/src/app/builder/PipelineStrip.tsx +253 -153
  284. package/src/app/builder/SaveDialog.tsx +14 -2
  285. package/src/app/builder/Toolbar.tsx +144 -59
  286. package/src/app/builder/Workspace.tsx +226 -58
  287. package/src/app/builder/builder-model.ts +341 -2
  288. package/src/app/builder/builder-model.ux.test.ts +456 -0
  289. package/src/app/builder/builder-ux.test.tsx +844 -0
  290. package/src/app/builder/reveal.ts +10 -0
  291. package/src/app/builder/use-builder-catalogue.ts +56 -19
  292. package/src/app/builder/use-builder-session.ts +68 -0
  293. package/src/app/builder/use-display-resolver.ts +24 -0
  294. package/src/app/index.ts +12 -2
  295. package/src/app/layout-builder.tsx +178 -191
  296. package/src/app/mcp-app-view-chrome.test.tsx +141 -1
  297. package/src/app/mcp-app-view-chrome.tsx +56 -6
  298. package/src/app/mcp-app-view-states.tsx +51 -11
  299. package/src/app/mcp-app-view.effects.test.tsx +292 -0
  300. package/src/app/mcp-app-view.test.tsx +222 -2
  301. package/src/app/mcp-app-view.tsx +267 -117
  302. package/src/app/mcp-toolkit-app.test.tsx +40 -0
  303. package/src/app/mcp-toolkit-app.tsx +8 -1
  304. package/src/app/mcp-use-host-bridge.test.tsx +180 -0
  305. package/src/app/mcp-use-host-bridge.tsx +67 -24
  306. package/src/app/model-context.test.tsx +116 -0
  307. package/src/app/model-context.tsx +125 -0
  308. package/src/app/use-build-mode-focus.ts +62 -0
  309. package/src/app/use-view-actions.ts +89 -0
  310. package/src/app/use-view-lifecycle.ts +6 -0
  311. package/src/app/view-lifecycle.test.ts +216 -0
  312. package/src/app/view-lifecycle.ts +165 -5
  313. package/src/app/widget-fixture.effects.test.tsx +51 -0
  314. package/src/app/widget-fixture.render.test.tsx +81 -0
  315. package/src/app/widget-fixture.tsx +34 -11
  316. package/src/app/widget-props-sheet.tsx +57 -16
  317. package/src/app/widget-renderer.tsx +1 -1
  318. package/src/components/DrillButton.tsx +23 -10
  319. package/src/components/EmptyState.tsx +6 -4
  320. package/src/components/ErrorState.tsx +31 -9
  321. package/src/components/FilterBar.test.tsx +82 -0
  322. package/src/components/FilterBar.tsx +52 -26
  323. package/src/components/KpiGrid.test.tsx +279 -0
  324. package/src/components/KpiGrid.tsx +297 -90
  325. package/src/components/ListFooter.test.tsx +116 -0
  326. package/src/components/ListFooter.tsx +102 -15
  327. package/src/components/PagedListFooter.test.tsx +140 -0
  328. package/src/components/PagedListFooter.tsx +107 -0
  329. package/src/components/Pills.test.tsx +77 -0
  330. package/src/components/Pills.tsx +63 -10
  331. package/src/components/SectionHeading.tsx +9 -3
  332. package/src/components/Toast.tsx +37 -19
  333. package/src/components/WidgetHeader.test.tsx +78 -0
  334. package/src/components/WidgetHeader.tsx +63 -16
  335. package/src/components/feedback-states.test.tsx +98 -9
  336. package/src/components/tone-figures.test.tsx +8 -4
  337. package/src/hooks/index.ts +6 -3
  338. package/src/hooks/tool-result-recovery-model.test.ts +744 -0
  339. package/src/hooks/tool-result-recovery-model.ts +418 -0
  340. package/src/hooks/use-tool-query.effects.test.tsx +205 -0
  341. package/src/hooks/use-tool-query.ts +156 -33
  342. package/src/hooks/use-tool-result-recovery.effects.test.tsx +141 -0
  343. package/src/hooks/use-tool-result-recovery.test.ts +3 -4
  344. package/src/hooks/use-tool-result-recovery.ts +84 -142
  345. package/src/hooks/use-view-data.test.tsx +118 -9
  346. package/src/hooks/use-view-data.ts +128 -18
  347. package/src/hooks/use-view-tool-query.ts +25 -19
  348. package/src/i18n-coverage.test.tsx +104 -2
  349. package/src/index.ts +48 -11
  350. package/src/lib/focus-return.test.ts +288 -0
  351. package/src/lib/focus-return.ts +96 -0
  352. package/src/lib/parse-tool-result.test.ts +46 -1
  353. package/src/lib/parse-tool-result.ts +40 -2
  354. package/src/lib/toast-model.test.ts +166 -1
  355. package/src/lib/toast-model.ts +104 -2
  356. package/src/lib/tone-utils.test.ts +86 -10
  357. package/src/lib/tone-utils.ts +89 -8
  358. package/src/lib/tool-query.test.ts +569 -0
  359. package/src/lib/tool-query.ts +253 -0
  360. package/src/lib/tool-result-observer.test.ts +296 -0
  361. package/src/lib/tool-result-observer.ts +211 -0
  362. package/src/lib/typography.test.ts +45 -0
  363. package/src/lib/typography.ts +47 -0
  364. package/src/lib/utils.ts +12 -1
  365. package/src/locale/index.ts +1 -0
  366. package/src/locale/message-types.ts +118 -2
  367. package/src/locale/messages-de.ts +49 -10
  368. package/src/locale/messages-en.ts +49 -10
  369. package/src/locale/toolkit-messages.test.ts +133 -0
  370. package/src/locale/toolkit-messages.ts +63 -2
  371. package/src/primitives/alert.tsx +3 -0
  372. package/src/primitives/badge.tsx +9 -4
  373. package/src/primitives/button.tsx +1 -1
  374. package/src/primitives/dialog.tsx +10 -1
  375. package/src/primitives/select.tsx +1 -1
  376. package/src/primitives/sheet.tsx +7 -0
  377. package/src/providers/query-provider.test.tsx +154 -0
  378. package/src/providers/query-provider.tsx +66 -5
  379. package/src/render-cases-primitives.tsx +1 -1
  380. package/src/render-cases.tsx +38 -6
  381. package/src/render-effects.tsx +96 -0
  382. package/src/theme/cd-tokens.test.ts +3 -1
  383. package/src/theme/create-theme.test.ts +10 -0
  384. package/src/theme/create-theme.ts +28 -0
  385. package/src/theme/theme-css.test.ts +51 -0
  386. package/src/theme.css +31 -1
  387. package/ui-catalog.json +448 -41
package/README.md CHANGED
@@ -1,7 +1,8 @@
1
1
  # @miragon/mcp-toolkit-ui
2
2
 
3
- React UI for MCP servers: shadcn primitives, composite components, TanStack
4
- Query hooks, and the MCP App shell (McpAppView + WidgetRenderer).
3
+ React UI for MCP servers in the Miragon design system (the default theme;
4
+ white-label it through role tokens): primitives, composite components,
5
+ TanStack Query hooks, and the MCP App shell (McpAppView + WidgetRenderer).
5
6
 
6
7
  ## Install
7
8
 
@@ -9,10 +10,12 @@ Published to the public npm registry under the `@miragon` scope — no `.npmrc`
9
10
  or token needed.
10
11
 
11
12
  ```sh
12
- pnpm add @miragon/mcp-toolkit-ui @miragon/mcp-toolkit-core mcp-use@2.7.3 react@19.2.8 react-dom@19.2.8 tailwindcss@4.3.3
13
+ pnpm add @miragon/mcp-toolkit-ui @miragon/mcp-toolkit-core mcp-use@2.7.3 react@^19.2.0 react-dom@^19.2.0 tailwindcss@^4.3.0
13
14
  ```
14
15
 
15
- Peer versions are pinned exactly — install the versions above.
16
+ `mcp-use` is pinned exactly: a second copy in the graph breaks the widgets'
17
+ host context. `react`, `react-dom` and `tailwindcss` are ranges, so your own
18
+ versions dedupe against them.
16
19
 
17
20
  ## Import paths
18
21
 
@@ -1,4 +1,4 @@
1
- import { type ComponentType, type ReactNode } from "react";
1
+ import type { ComponentType } from "react";
2
2
  import type { WidgetComponent } from "./widget-renderer.js";
3
3
  /**
4
4
  * Builds the model-context line for an adapted widget. Receives the resolved
@@ -7,27 +7,6 @@ import type { WidgetComponent } from "./widget-renderer.js";
7
7
  * `period` / `engine` on dashboard widgets) can be reported too.
8
8
  */
9
9
  export type DescribeForModel<T> = (data: NonNullable<T>, props: Readonly<Record<string, unknown>>) => string;
10
- /**
11
- * Model-context reporting that works on every host — the host-portable
12
- * replacement for rendering `mcp-use/react`'s `ModelContext` directly.
13
- *
14
- * mcp-use 2.x's `ModelContext` registers with the view runtime and THROWS
15
- * outside a `bootstrapView` mount, so it is only rendered inside an mcp-use
16
- * view (where it aggregates nested nodes into one tree). Everywhere else —
17
- * ChatGPT via `createChatGptHostBridge`, the `WidgetFixtureHost` harness,
18
- * standalone apps — the description flows through the bridge's
19
- * `setModelContext` instead (last-writer-wins; fine for the single-widget
20
- * mounts those hosts render).
21
- *
22
- * Widgets that self-fetch and report their own context (cockpit views like
23
- * `TasksBoard`) must use this instead of importing `ModelContext` from
24
- * `mcp-use/react` — the direct import crashes the widget in every non-view
25
- * mount, starting with the widget playground.
26
- */
27
- export declare function HostModelContext({ content, children, }: {
28
- content: string;
29
- children: ReactNode;
30
- }): ReactNode;
31
10
  /**
32
11
  * Wraps a "single-data" widget component (signature `({ data }: { data: T | null })`)
33
12
  * so it can be registered as a framework {@link WidgetComponent} (which receives
@@ -1 +1 @@
1
- {"version":3,"file":"adapt-data-widget.d.ts","sourceRoot":"","sources":["../../src/app/adapt-data-widget.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAKrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAE3D;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,CAChC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EACpB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KACrC,MAAM,CAAA;AAEX;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,QAAQ,GACT,EAAE;IACD,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,SAAS,CAAA;CACpB,GAAG,SAAS,CAIZ;AAWD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAC/B,MAAM,EAAE,aAAa,CAAC;IAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACnE,QAAQ,EAAE,MAAM,EAChB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,GACrC,eAAe,CAcjB"}
1
+ {"version":3,"file":"adapt-data-widget.d.ts","sourceRoot":"","sources":["../../src/app/adapt-data-widget.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAG1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAE3D;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,CAChC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EACpB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KACrC,MAAM,CAAA;AAEX;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAC/B,MAAM,EAAE,aAAa,CAAC;IAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACnE,QAAQ,EAAE,MAAM,EAChB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,GACrC,eAAe,CAcjB"}
@@ -1,39 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { useEffect } from "react";
3
- import { ModelContext } from "mcp-use/react";
4
- import { useHostBridgeOrNull } from "./host-bridge.js";
5
- import { useIsInsideMcpUseView } from "./mcp-use-host-bridge.js";
6
- /**
7
- * Model-context reporting that works on every host — the host-portable
8
- * replacement for rendering `mcp-use/react`'s `ModelContext` directly.
9
- *
10
- * mcp-use 2.x's `ModelContext` registers with the view runtime and THROWS
11
- * outside a `bootstrapView` mount, so it is only rendered inside an mcp-use
12
- * view (where it aggregates nested nodes into one tree). Everywhere else —
13
- * ChatGPT via `createChatGptHostBridge`, the `WidgetFixtureHost` harness,
14
- * standalone apps — the description flows through the bridge's
15
- * `setModelContext` instead (last-writer-wins; fine for the single-widget
16
- * mounts those hosts render).
17
- *
18
- * Widgets that self-fetch and report their own context (cockpit views like
19
- * `TasksBoard`) must use this instead of importing `ModelContext` from
20
- * `mcp-use/react` — the direct import crashes the widget in every non-view
21
- * mount, starting with the widget playground.
22
- */
23
- export function HostModelContext({ content, children, }) {
24
- const insideView = useIsInsideMcpUseView();
25
- if (insideView)
26
- return _jsx(ModelContext, { content: content, children: children });
27
- return _jsx(BridgeModelContext, { content: content, children: children });
28
- }
29
- function BridgeModelContext({ content, children }) {
30
- const bridge = useHostBridgeOrNull();
31
- const setModelContext = bridge?.setModelContext;
32
- useEffect(() => {
33
- setModelContext?.(content);
34
- }, [setModelContext, content]);
35
- return children;
36
- }
2
+ import { HostModelContext } from "./model-context.js";
37
3
  /**
38
4
  * Wraps a "single-data" widget component (signature `({ data }: { data: T | null })`)
39
5
  * so it can be registered as a framework {@link WidgetComponent} (which receives
@@ -1 +1 @@
1
- {"version":3,"file":"adapt-data-widget.js","sourceRoot":"","sources":["../../src/app/adapt-data-widget.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAsC,MAAM,OAAO,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAchE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAC/B,OAAO,EACP,QAAQ,GAIT;IACC,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAA;IAC1C,IAAI,UAAU;QAAE,OAAO,KAAC,YAAY,IAAC,OAAO,EAAE,OAAO,YAAG,QAAQ,GAAgB,CAAA;IAChF,OAAO,KAAC,kBAAkB,IAAC,OAAO,EAAE,OAAO,YAAG,QAAQ,GAAsB,CAAA;AAC9E,CAAC;AAED,SAAS,kBAAkB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAA4C;IACzF,MAAM,MAAM,GAAG,mBAAmB,EAAE,CAAA;IACpC,MAAM,eAAe,GAAG,MAAM,EAAE,eAAe,CAAA;IAC/C,SAAS,CAAC,GAAG,EAAE;QACb,eAAe,EAAE,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC,EAAE,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAA;IAC9B,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAmE,EACnE,QAAgB,EAChB,gBAAsC;IAEtC,SAAS,aAAa,CAAC,EAAE,OAAO,EAAE,WAAW,EAAe;QAC1D,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAA;QACrF,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,IAAI,IAAI,IAAI,CAAa,CAAA;QACnD,MAAM,MAAM,GAAG,KAAC,MAAM,OAAK,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,GAAI,CAAA;QAC9D,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,gBAAgB;YAAE,OAAO,MAAM,CAAA;QACpD,OAAO,CACL,KAAC,gBAAgB,IAAC,OAAO,EAAE,gBAAgB,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,CAAC,YACjE,MAAM,GACU,CACpB,CAAA;IACH,CAAC;IACD,aAAa,CAAC,WAAW,GAAG,WAAW,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,IAAI,QAAQ,GAAG,CAAA;IACvF,OAAO,aAAa,CAAA;AACtB,CAAC"}
1
+ {"version":3,"file":"adapt-data-widget.js","sourceRoot":"","sources":["../../src/app/adapt-data-widget.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAcrD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAmE,EACnE,QAAgB,EAChB,gBAAsC;IAEtC,SAAS,aAAa,CAAC,EAAE,OAAO,EAAE,WAAW,EAAe;QAC1D,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAA;QACrF,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,IAAI,IAAI,IAAI,CAAa,CAAA;QACnD,MAAM,MAAM,GAAG,KAAC,MAAM,OAAK,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,GAAI,CAAA;QAC9D,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,gBAAgB;YAAE,OAAO,MAAM,CAAA;QACpD,OAAO,CACL,KAAC,gBAAgB,IAAC,OAAO,EAAE,gBAAgB,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,CAAC,YACjE,MAAM,GACU,CACpB,CAAA;IACH,CAAC;IACD,aAAa,CAAC,WAAW,GAAG,WAAW,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,IAAI,QAAQ,GAAG,CAAA;IACvF,OAAO,aAAa,CAAA;AACtB,CAAC"}
@@ -22,6 +22,6 @@ import { TONE_ICON } from "../../lib/tone-utils.js";
22
22
  export function BuilderBanners({ L, catalogueToolName, refreshError, validationIssues, onRetry, }) {
23
23
  if (!refreshError && validationIssues.length === 0)
24
24
  return null;
25
- return (_jsxs("div", { className: "flex flex-col gap-2", children: [refreshError && (_jsx(ErrorState, { variant: "inline", title: L.catalogueError, description: L.catalogueErrorHint, details: `${catalogueToolName}: ${refreshError}`, onRetry: onRetry })), validationIssues.length > 0 && (_jsxs("div", { role: "status", "aria-live": "polite", className: "border-warning bg-warning-soft text-foreground flex items-start gap-2 rounded-md border px-3 py-2 text-xs", children: [_jsx(AlertTriangle, { className: `mt-0.5 size-3.5 shrink-0 ${TONE_ICON.warning}`, "aria-hidden": "true" }), _jsxs("div", { className: "min-w-0", children: [_jsx("p", { className: "font-medium", children: L.validationWarning }), _jsx("ul", { className: "mt-0.5 list-inside list-disc space-y-0.5", children: validationIssues.map((issue, idx) => (_jsx("li", { className: "break-words", children: issue }, idx))) })] })] }))] }));
25
+ return (_jsxs("div", { className: "flex flex-col gap-2", children: [refreshError && (_jsx(ErrorState, { variant: "inline", title: L.catalogueError, description: L.catalogueErrorHint, details: `${catalogueToolName}: ${refreshError}`, onRetry: onRetry })), validationIssues.length > 0 && (_jsxs("div", { role: "status", "aria-live": "polite", className: "border-warning bg-warning-soft text-foreground text-small flex items-start gap-2 rounded-md border px-3 py-2", children: [_jsx(AlertTriangle, { className: `mt-0.5 size-3.5 shrink-0 ${TONE_ICON.warning}`, "aria-hidden": "true" }), _jsxs("div", { className: "min-w-0", children: [_jsx("p", { className: "font-medium", children: L.validationWarning }), _jsx("ul", { className: "mt-0.5 list-inside list-disc space-y-0.5", children: validationIssues.map((issue, idx) => (_jsx("li", { className: "break-words", children: issue }, idx))) })] })] }))] }));
26
26
  }
27
27
  //# sourceMappingURL=BuilderBanners.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BuilderBanners.js","sourceRoot":"","sources":["../../../src/app/builder/BuilderBanners.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAGnD,gFAAgF;AAChF,0EAA0E;AAC1E,gFAAgF;AAEhF;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,cAAc,CAAC,EAC7B,CAAC,EACD,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,OAAO,GAQR;IACC,IAAI,CAAC,YAAY,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAC/D,OAAO,CACL,eAAK,SAAS,EAAC,qBAAqB,aACjC,YAAY,IAAI,CACf,KAAC,UAAU,IACT,OAAO,EAAC,QAAQ,EAChB,KAAK,EAAE,CAAC,CAAC,cAAc,EACvB,WAAW,EAAE,CAAC,CAAC,kBAAkB,EACjC,OAAO,EAAE,GAAG,iBAAiB,KAAK,YAAY,EAAE,EAChD,OAAO,EAAE,OAAO,GAChB,CACH,EACA,gBAAgB,CAAC,MAAM,GAAG,CAAC,IAAI,CAC9B,eACE,IAAI,EAAC,QAAQ,eACH,QAAQ,EAClB,SAAS,EAAC,2GAA2G,aAErH,KAAC,aAAa,IACZ,SAAS,EAAE,4BAA4B,SAAS,CAAC,OAAO,EAAE,iBAC9C,MAAM,GAClB,EACF,eAAK,SAAS,EAAC,SAAS,aACtB,YAAG,SAAS,EAAC,aAAa,YAAE,CAAC,CAAC,iBAAiB,GAAK,EACpD,aAAI,SAAS,EAAC,0CAA0C,YACrD,gBAAgB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CACpC,aAAc,SAAS,EAAC,aAAa,YAClC,KAAK,IADC,GAAG,CAEP,CACN,CAAC,GACC,IACD,IACF,CACP,IACG,CACP,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"BuilderBanners.js","sourceRoot":"","sources":["../../../src/app/builder/BuilderBanners.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAGnD,gFAAgF;AAChF,0EAA0E;AAC1E,gFAAgF;AAEhF;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,cAAc,CAAC,EAC7B,CAAC,EACD,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,OAAO,GAQR;IACC,IAAI,CAAC,YAAY,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAC/D,OAAO,CACL,eAAK,SAAS,EAAC,qBAAqB,aACjC,YAAY,IAAI,CACf,KAAC,UAAU,IACT,OAAO,EAAC,QAAQ,EAChB,KAAK,EAAE,CAAC,CAAC,cAAc,EACvB,WAAW,EAAE,CAAC,CAAC,kBAAkB,EACjC,OAAO,EAAE,GAAG,iBAAiB,KAAK,YAAY,EAAE,EAChD,OAAO,EAAE,OAAO,GAChB,CACH,EACA,gBAAgB,CAAC,MAAM,GAAG,CAAC,IAAI,CAC9B,eACE,IAAI,EAAC,QAAQ,eACH,QAAQ,EAClB,SAAS,EAAC,8GAA8G,aAExH,KAAC,aAAa,IACZ,SAAS,EAAE,4BAA4B,SAAS,CAAC,OAAO,EAAE,iBAC9C,MAAM,GAClB,EACF,eAAK,SAAS,EAAC,SAAS,aACtB,YAAG,SAAS,EAAC,aAAa,YAAE,CAAC,CAAC,iBAAiB,GAAK,EACpD,aAAI,SAAS,EAAC,0CAA0C,YACrD,gBAAgB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CACpC,aAAc,SAAS,EAAC,aAAa,YAClC,KAAK,IADC,GAAG,CAEP,CACN,CAAC,GACC,IACD,IACF,CACP,IACG,CACP,CAAA;AACH,CAAC"}
@@ -1,7 +1,7 @@
1
- import type { RowDef, WidgetProps } from "@miragon/mcp-toolkit-core";
1
+ import type { DisplayText, RowDef, WidgetProps } from "@miragon/mcp-toolkit-core";
2
2
  import { type WidgetComponent } from "../widget-renderer.js";
3
3
  import type { LayoutBuilderLabels } from "./labels.js";
4
- declare function CanvasRowImpl({ L, row, rowIdx, focused, isFirst, isLast, dragOver, setDragOverRow, setFocusedRowIndex, onRemoveRow, onMoveRow, onSetCellSpan, onRemoveCell, onAddWidget, onConfigureCell, propsSchemaByWidgetId, widgets, widgetProps, }: {
4
+ declare function CanvasRowImpl({ L, row, rowIdx, focused, isFirst, isLast, dragOver, setDragOverRow, setFocusedRowIndex, onRemoveRow, onMoveRow, onSetCellSpan, onRemoveCell, onAddWidget, onConfigureCell, propsSchemaByWidgetId, displayByWidgetId, advanced, widgets, widgetProps, }: {
5
5
  L: Required<LayoutBuilderLabels>;
6
6
  row: RowDef;
7
7
  rowIdx: number;
@@ -18,6 +18,8 @@ declare function CanvasRowImpl({ L, row, rowIdx, focused, isFirst, isLast, dragO
18
18
  onAddWidget: (widgetId: string, targetRowIdx?: number) => void;
19
19
  onConfigureCell: (rowIdx: number, cellIdx: number) => void;
20
20
  propsSchemaByWidgetId: Map<string, Record<string, unknown>>;
21
+ displayByWidgetId: Map<string, DisplayText>;
22
+ advanced: boolean;
21
23
  widgets: Record<string, WidgetComponent>;
22
24
  widgetProps: WidgetProps;
23
25
  }): import("react").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"CanvasRow.d.ts","sourceRoot":"","sources":["../../../src/app/builder/CanvasRow.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAWpE,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAOtD,iBAAS,aAAa,CAAC,EACrB,CAAC,EACD,GAAG,EACH,MAAM,EACN,OAAO,EACP,OAAO,EACP,MAAM,EACN,QAAQ,EACR,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,SAAS,EACT,aAAa,EACb,YAAY,EACZ,WAAW,EACX,eAAe,EACf,qBAAqB,EACrB,OAAO,EACP,WAAW,GACZ,EAAE;IACD,CAAC,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAA;IAChC,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;IACf,QAAQ,EAAE,OAAO,CAAA;IACjB,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IAC5C,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAA;IACtD,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACtE,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACvD,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9D,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1D,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAC3D,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IACxC,WAAW,EAAE,WAAW,CAAA;CACzB,+BAuLA;AAED,eAAO,MAAM,SAAS,2DAAsB,CAAA"}
1
+ {"version":3,"file":"CanvasRow.d.ts","sourceRoot":"","sources":["../../../src/app/builder/CanvasRow.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAYjF,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAE5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAStD,iBAAS,aAAa,CAAC,EACrB,CAAC,EACD,GAAG,EACH,MAAM,EACN,OAAO,EACP,OAAO,EACP,MAAM,EACN,QAAQ,EACR,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,SAAS,EACT,aAAa,EACb,YAAY,EACZ,WAAW,EACX,eAAe,EACf,qBAAqB,EACrB,iBAAiB,EACjB,QAAQ,EACR,OAAO,EACP,WAAW,GACZ,EAAE;IACD,CAAC,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAA;IAChC,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;IACf,QAAQ,EAAE,OAAO,CAAA;IACjB,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IAC5C,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAA;IACtD,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACtE,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACvD,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9D,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1D,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAC3D,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IAC3C,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IACxC,WAAW,EAAE,WAAW,CAAA;CACzB,+BA0NA;AAED,eAAO,MAAM,SAAS,2DAAsB,CAAA"}
@@ -4,15 +4,26 @@ import { ChevronDown, ChevronUp, SlidersHorizontal, Trash2, X } from "lucide-rea
4
4
  import { GridItem, GridLayout } from "../../components/GridLayout.js";
5
5
  import { Button } from "../../primitives/button.js";
6
6
  import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "../../primitives/select.js";
7
+ import { FOCUS_RING, FOCUS_RING_INSET } from "../../lib/focus-ring.js";
7
8
  import { cn } from "../../lib/utils.js";
8
9
  import { RenderedWidget } from "../widget-renderer.js";
10
+ import { displayLabel } from "./builder-model.js";
9
11
  import { WIDGET_DRAG_MIME } from "./labels.js";
12
+ import { REVEAL_ON_INTENT } from "./reveal.js";
13
+ import { useDisplayResolver } from "./use-display-resolver.js";
10
14
  // -------------------------------------------------------------------------- //
11
15
  // Canvas row — drop target + per-cell controls + resize handle
12
16
  // -------------------------------------------------------------------------- //
13
- function CanvasRowImpl({ L, row, rowIdx, focused, isFirst, isLast, dragOver, setDragOverRow, setFocusedRowIndex, onRemoveRow, onMoveRow, onSetCellSpan, onRemoveCell, onAddWidget, onConfigureCell, propsSchemaByWidgetId, widgets, widgetProps, }) {
17
+ function CanvasRowImpl({ L, row, rowIdx, focused, isFirst, isLast, dragOver, setDragOverRow, setFocusedRowIndex, onRemoveRow, onMoveRow, onSetCellSpan, onRemoveCell, onAddWidget, onConfigureCell, propsSchemaByWidgetId, displayByWidgetId, advanced, widgets, widgetProps, }) {
14
18
  const gridRef = useRef(null);
15
- return (_jsxs("div", { onClick: () => setFocusedRowIndex(rowIdx), onDragOver: (e) => {
19
+ const { locale, resolveKey } = useDisplayResolver();
20
+ // The target row follows the pointer AND the keyboard: focus moving into a
21
+ // row (its actions, a cell control) makes it the row the palette adds to.
22
+ const target = () => {
23
+ if (!focused)
24
+ setFocusedRowIndex(rowIdx);
25
+ };
26
+ return (_jsxs("div", { "data-slot": "builder-row", "data-target": focused ? "" : undefined, onClick: target, onFocus: target, onDragOver: (e) => {
16
27
  if (!e.dataTransfer.types.includes(WIDGET_DRAG_MIME))
17
28
  return;
18
29
  e.preventDefault();
@@ -31,7 +42,7 @@ function CanvasRowImpl({ L, row, rowIdx, focused, isFirst, isLast, dragOver, set
31
42
  }
32
43
  }, className: cn("group relative rounded-md border-l-2 px-3 py-2 transition-colors", focused
33
44
  ? "border-l-primary bg-card"
34
- : "bg-background hover:bg-card/60 border-l-transparent", dragOver && "bg-primary/5 border-l-primary"), children: [_jsxs("div", { className: "mb-2 flex items-center justify-between", children: [_jsxs("div", { className: "text-muted-foreground flex items-center gap-2 text-[11px]", children: [_jsx("span", { className: "font-mono", children: L.rowLabel(rowIdx + 1) }), _jsx("span", { className: "bg-muted/60 rounded px-1 py-0.5 text-[10px]", children: L.elementCount(row.row.length) })] }), _jsxs("div", { className: "opacity-0 transition-opacity group-hover:opacity-100 focus-within:opacity-100", children: [_jsx(Button, { variant: "ghost", size: "icon-xs", onClick: (e) => {
45
+ : "bg-background hover:bg-card/60 border-l-transparent", dragOver && "bg-primary/5 border-l-primary"), children: [_jsxs("div", { className: "mb-2 flex flex-wrap items-center justify-between gap-2", children: [_jsxs("div", { className: "text-muted-foreground text-small flex flex-wrap items-center gap-2", children: [_jsx("span", { className: "font-medium", children: L.rowLabel(rowIdx + 1) }), _jsx("span", { className: "bg-muted rounded px-1.5 py-0.5", children: L.elementCount(row.row.length) }), focused && (_jsxs("span", { className: "text-foreground inline-flex items-center gap-1.5", children: [_jsx("span", { "aria-hidden": "true", className: "bg-primary size-1.5 rounded-full" }), L.rowTarget] }))] }), _jsxs("div", { "data-slot": "builder-row-actions", className: cn("flex items-center", focused ? "opacity-100" : REVEAL_ON_INTENT), children: [_jsx(Button, { variant: "ghost", size: "icon-xs", onClick: (e) => {
35
46
  e.stopPropagation();
36
47
  onMoveRow(rowIdx, -1);
37
48
  }, disabled: isFirst, "aria-label": L.moveRowUp, children: _jsx(ChevronUp, {}) }), _jsx(Button, { variant: "ghost", size: "icon-xs", onClick: (e) => {
@@ -40,20 +51,23 @@ function CanvasRowImpl({ L, row, rowIdx, focused, isFirst, isLast, dragOver, set
40
51
  }, disabled: isLast, "aria-label": L.moveRowDown, children: _jsx(ChevronDown, {}) }), _jsx(Button, { variant: "ghost", size: "icon-xs", onClick: (e) => {
41
52
  e.stopPropagation();
42
53
  onRemoveRow(rowIdx);
43
- }, "aria-label": L.removeRow, children: _jsx(Trash2, {}) })] })] }), row.row.length === 0 ? (_jsx("div", { className: cn("rounded-md border border-dashed py-6 text-center text-[11px] transition-colors", dragOver
54
+ }, "aria-label": L.removeRow, children: _jsx(Trash2, {}) })] })] }), row.row.length === 0 ? (_jsx("div", { className: cn("text-small rounded-md border border-dashed py-6 text-center transition-colors", dragOver
44
55
  ? "border-focus bg-accent text-accent-foreground"
45
56
  : "border-input text-muted-foreground"), children: dragOver ? L.canvasDropHint : L.canvasEmpty })) : (_jsx("div", { ref: gridRef, "data-row-grid": true, children: _jsx(GridLayout, { children: row.row.map((cell, cellIdx) => {
46
57
  const span = cell.span ?? 12;
47
58
  const Widget = widgets[cell.widget];
48
59
  const hasPropsSchema = propsSchemaByWidgetId.has(cell.widget);
49
60
  const propCount = cell.props ? Object.keys(cell.props).length : 0;
50
- return (_jsx(GridItem, { span: span, children: _jsxs("div", { className: "border-border bg-card shadow-1 relative overflow-hidden rounded-md border", children: [_jsxs("div", { className: "text-muted-foreground bg-muted/30 flex items-center justify-between gap-2 border-b px-2 py-1 text-[10px]", children: [_jsx("span", { className: "truncate font-mono", children: cell.widget }), _jsxs("div", { className: "flex shrink-0 items-center gap-2", children: [_jsxs("label", { className: "text-muted-foreground inline-flex items-center gap-0.5 font-mono", children: [_jsx("span", { className: "sr-only", children: L.columnSpan }), _jsxs(Select, { value: String(span), onValueChange: (v) => onSetCellSpan(rowIdx, cellIdx, Number(v)), children: [_jsx(SelectTrigger, { size: "sm", className: "h-5 gap-0.5 border-none bg-transparent px-1 py-0 font-mono text-[10px] shadow-none", "aria-label": L.columnSpan, onClick: (e) => e.stopPropagation(), children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { children: Array.from({ length: 12 }, (_, i) => i + 1).map((n) => (_jsx(SelectItem, { value: String(n), className: "font-mono text-xs", children: n }, n))) })] }), _jsx("span", { "aria-hidden": "true", children: "/12" })] }), hasPropsSchema && (_jsx(Button, { variant: "ghost", size: "icon-xs", onClick: (e) => {
61
+ const name = displayLabel(displayByWidgetId.get(cell.widget) ?? {}, cell.widget, locale, resolveKey);
62
+ return (_jsx(GridItem, { span: span, children: _jsxs("div", { className: "border-border bg-card shadow-1 relative overflow-hidden rounded-md border", children: [_jsxs("div", { className: "text-muted-foreground bg-muted/30 text-small flex items-center justify-between gap-2 border-b px-2 py-1", children: [_jsxs("span", { className: "flex min-w-0 items-baseline gap-2", title: name.hint, children: [_jsx("span", { className: "text-foreground truncate font-medium", children: name.label }), advanced && name.hint && (_jsx("span", { className: "truncate font-mono", children: name.hint }))] }), _jsxs("div", { className: "flex shrink-0 items-center gap-2", children: [_jsxs("label", { className: "text-muted-foreground inline-flex items-center gap-0.5 tabular-nums", children: [_jsx("span", { className: "sr-only", children: L.columnSpan }), _jsxs(Select, { value: String(span), onValueChange: (v) => onSetCellSpan(rowIdx, cellIdx, Number(v)), children: [_jsx(SelectTrigger, { size: "sm", className: cn("text-small h-6 gap-0.5 border-none bg-transparent px-1 py-0 tabular-nums shadow-none",
63
+ // Borderless, so the input focus edge is gone: the kit ring instead.
64
+ FOCUS_RING), "aria-label": L.columnSpan, onClick: (e) => e.stopPropagation(), children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { children: Array.from({ length: 12 }, (_, i) => i + 1).map((n) => (_jsx(SelectItem, { value: String(n), className: "text-small tabular-nums", children: n }, n))) })] }), _jsx("span", { "aria-hidden": "true", children: "/12" })] }), hasPropsSchema && (_jsx(Button, { variant: "ghost", size: "icon-xs", onClick: (e) => {
51
65
  e.stopPropagation();
52
66
  onConfigureCell(rowIdx, cellIdx);
53
67
  }, "aria-label": L.configureElement, title: propCount > 0 ? L.configureElementSet(propCount) : L.configureElement, className: cn(propCount > 0 && "text-link"), children: _jsx(SlidersHorizontal, {}) })), _jsx(Button, { variant: "ghost", size: "icon-xs", onClick: (e) => {
54
68
  e.stopPropagation();
55
69
  onRemoveCell(rowIdx, cellIdx);
56
- }, "aria-label": L.removeElement, children: _jsx(X, {}) })] })] }), _jsx("div", { className: "p-2", children: _jsx(RenderedWidget, { widget: Widget, widgetId: cell.widget, props: widgetProps, cellProps: cell.props, showEmptyHint: true, notBundledClassName: "text-muted-foreground rounded border border-dashed p-3 text-center text-[11px]" }) }), _jsx(ResizeHandle, { label: L.resizeElement, rowIdx: rowIdx, cellIdx: cellIdx, span: span, getGridEl: () => gridRef.current, onSetCellSpan: onSetCellSpan })] }) }, `${cell.widget}-${cellIdx}`));
70
+ }, "aria-label": L.removeElement, children: _jsx(X, {}) })] })] }), _jsx("div", { className: "p-2", children: _jsx(RenderedWidget, { widget: Widget, widgetId: cell.widget, props: widgetProps, cellProps: cell.props, showEmptyHint: true, notBundledClassName: "text-muted-foreground rounded border border-dashed p-3 text-center text-small" }) }), _jsx(ResizeHandle, { label: L.resizeElement, rowIdx: rowIdx, cellIdx: cellIdx, span: span, getGridEl: () => gridRef.current, onSetCellSpan: onSetCellSpan })] }) }, `${cell.widget}-${cellIdx}`));
57
71
  }) }) }))] }));
58
72
  }
59
73
  export const CanvasRow = memo(CanvasRowImpl);
@@ -91,6 +105,6 @@ function ResizeHandle({ label, rowIdx, cellIdx, span, getGridEl, onSetCellSpan,
91
105
  e.stopPropagation();
92
106
  onSetCellSpan(rowIdx, cellIdx, Math.max(1, Math.min(12, span + dir)));
93
107
  }, [cellIdx, onSetCellSpan, rowIdx, span]);
94
- return (_jsx("div", { onPointerDown: onPointerDown, onClick: (e) => e.stopPropagation(), onKeyDown: onKeyDown, tabIndex: 0, className: "hover:bg-primary/40 focus-visible:bg-primary/40 focus-visible:ring-focus absolute top-0 right-0 h-full w-1.5 cursor-col-resize touch-none select-none focus-visible:ring-2 focus-visible:outline-hidden", "aria-label": label, role: "separator", "aria-orientation": "vertical", "aria-valuenow": span, "aria-valuemin": 1, "aria-valuemax": 12 }));
108
+ return (_jsx("div", { onPointerDown: onPointerDown, onClick: (e) => e.stopPropagation(), onKeyDown: onKeyDown, tabIndex: 0, className: cn("hover:bg-primary/40 focus-visible:bg-primary/40 absolute top-0 right-0 h-full w-1.5 cursor-col-resize touch-none select-none", FOCUS_RING_INSET), "aria-label": label, role: "separator", "aria-orientation": "vertical", "aria-valuenow": span, "aria-valuemin": 1, "aria-valuemax": 12 }));
95
109
  }
96
110
  //# sourceMappingURL=CanvasRow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CanvasRow.js","sourceRoot":"","sources":["../../../src/app/builder/CanvasRow.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CanvasRow.js","sourceRoot":"","sources":["../../../src/app/builder/CanvasRow.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"CatalogueSheet.d.ts","sourceRoot":"","sources":["../../../src/app/builder/CatalogueSheet.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAalG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAMtD,wBAAgB,cAAc,CAAC,EAC7B,CAAC,EACD,IAAI,EACJ,YAAY,EACZ,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,SAAS,EACT,kBAAkB,GACnB,EAAE;IACD,CAAC,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAA;IAChC,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,UAAU,EAAE,eAAe,EAAE,CAAA;IAC7B,cAAc,EAAE,aAAa,EAAE,CAAA;IAC/B,kBAAkB,EAAE,iBAAiB,EAAE,CAAA;IACvC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAC1C,+BAkLA"}
1
+ {"version":3,"file":"CatalogueSheet.d.ts","sourceRoot":"","sources":["../../../src/app/builder/CatalogueSheet.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAclG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAOtD,wBAAgB,cAAc,CAAC,EAC7B,CAAC,EACD,IAAI,EACJ,YAAY,EACZ,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,SAAS,EACT,kBAAkB,GACnB,EAAE;IACD,CAAC,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAA;IAChC,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,UAAU,EAAE,eAAe,EAAE,CAAA;IAC7B,cAAc,EAAE,aAAa,EAAE,CAAA;IAC/B,kBAAkB,EAAE,iBAAiB,EAAE,CAAA;IACvC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAC1C,+BAuMA"}
@@ -7,28 +7,35 @@ import { ScrollArea } from "../../primitives/scroll-area.js";
7
7
  import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle, } from "../../primitives/sheet.js";
8
8
  import { TONE_DOT, TONE_TEXT } from "../../lib/tone-utils.js";
9
9
  import { cn } from "../../lib/utils.js";
10
+ import { displayLabel } from "./builder-model.js";
11
+ import { useDisplayResolver } from "./use-display-resolver.js";
10
12
  // -------------------------------------------------------------------------- //
11
13
  // Catalogue Sheet — slides in from the right
12
14
  // -------------------------------------------------------------------------- //
13
15
  export function CatalogueSheet({ L, open, onOpenChange, keyCatalog, availableSteps, unreachableWidgets, onSeedKey, onAddProducingStep, }) {
16
+ const { locale, resolveKey } = useDisplayResolver();
14
17
  const producerOf = useMemo(() => {
15
18
  const map = new Map();
16
19
  for (const e of keyCatalog)
17
20
  map.set(e.key, e.producedBySteps[0]);
18
21
  return map;
19
22
  }, [keyCatalog]);
20
- return (_jsx(Sheet, { open: open, onOpenChange: onOpenChange, children: _jsxs(SheetContent, { className: "w-full sm:max-w-md md:max-w-lg", children: [_jsxs(SheetHeader, { children: [_jsxs(SheetTitle, { className: "flex items-center gap-2 text-base", children: [_jsx(Library, { className: "size-4" }), L.catalogue] }), _jsx(SheetDescription, { children: L.catalogueDescription })] }), _jsx(ScrollArea, { className: "flex-1 px-4 pb-4", children: _jsxs("div", { className: "flex flex-col gap-6", children: [_jsxs("section", { className: "flex flex-col gap-2", children: [_jsx(CatalogueSectionHeader, { title: L.catalogueKeys, count: keyCatalog.length }), keyCatalog.length === 0 ? (_jsx("p", { className: "text-muted-foreground text-xs italic", children: L.noKeysRegistered })) : (_jsx("ul", { className: "flex flex-col gap-1", children: keyCatalog.map((entry) => (_jsxs("li", { className: "hover:bg-muted flex flex-col gap-1 rounded-md border px-2 py-1.5 text-xs", children: [_jsxs("div", { className: "flex items-start justify-between gap-2", children: [_jsx("span", { className: "truncate font-mono", children: entry.key }), _jsxs("span", { className: cn("inline-flex shrink-0 items-center gap-1 text-[10px]", entry.inContext ? TONE_TEXT.success : "text-muted-foreground"), children: [_jsx("span", { "aria-hidden": "true", className: cn("size-1.5 rounded-full", entry.inContext
23
+ return (_jsx(Sheet, { open: open, onOpenChange: onOpenChange, children: _jsxs(SheetContent, { className: "w-full sm:max-w-md md:max-w-lg", children: [_jsxs(SheetHeader, { children: [_jsxs(SheetTitle, { className: "flex items-center gap-2 text-base", children: [_jsx(Library, { className: "size-4" }), L.catalogue] }), _jsx(SheetDescription, { children: L.catalogueDescription })] }), _jsx(ScrollArea, { className: "flex-1 px-4 pb-4", children: _jsxs("div", { className: "flex flex-col gap-6", children: [_jsxs("section", { className: "flex flex-col gap-2", children: [_jsx(CatalogueSectionHeader, { title: L.catalogueKeys, count: keyCatalog.length }), keyCatalog.length === 0 ? (_jsx("p", { className: "text-muted-foreground text-small italic", children: L.noKeysRegistered })) : (_jsx("ul", { className: "flex flex-col gap-1", children: keyCatalog.map((entry) => (_jsxs("li", { className: "hover:bg-muted text-small flex flex-col gap-1 rounded-md border px-2 py-1.5", children: [_jsxs("div", { className: "flex items-start justify-between gap-2", children: [_jsx("span", { className: "truncate font-mono", children: entry.key }), _jsxs("span", { className: cn("text-small inline-flex shrink-0 items-center gap-1", entry.inContext ? TONE_TEXT.success : "text-muted-foreground"), children: [_jsx("span", { "aria-hidden": "true", className: cn("size-1.5 rounded-full", entry.inContext
21
24
  ? TONE_DOT.success
22
25
  : "border-input border bg-transparent") }), entry.inContext ? L.catalogueLive : L.catalogueMissing] })] }), (entry.producedBySteps.length > 0 ||
23
26
  entry.consumedBySteps.length > 0 ||
24
- entry.consumedByWidgets.length > 0) && (_jsxs("div", { className: "text-muted-foreground flex flex-col gap-0.5 text-[10px]", children: [entry.producedBySteps.length > 0 && (_jsxs("span", { children: [L.catalogueProducedBy, " ", _jsx("span", { className: "font-mono", children: entry.producedBySteps.join(", ") })] })), entry.consumedBySteps.length > 0 && (_jsxs("span", { children: [L.catalogueStepPrefix, " ", L.catalogueConsumedBy, " ", _jsx("span", { className: "font-mono", children: entry.consumedBySteps.join(", ") })] })), entry.consumedByWidgets.length > 0 && (_jsxs("span", { children: [L.catalogueElementPrefix, " ", L.catalogueConsumedBy, " ", _jsx("span", { className: "font-mono", children: entry.consumedByWidgets.join(", ") })] }))] })), !entry.inContext && (_jsxs("div", { className: "mt-0.5 flex items-center gap-1", children: [_jsxs(Button, { variant: "ghost", size: "xs", onClick: () => onSeedKey(entry.key), children: [_jsx(Plus, {}), " ", L.cataloguePickKey] }), producerOf.get(entry.key) && (_jsxs(Button, { variant: "ghost", size: "xs", onClick: () => onAddProducingStep(entry.key), children: [_jsx(ArrowDownToLine, {}), " ", L.catalogueAddProducingStep] }))] }))] }, entry.key))) }))] }), _jsxs("section", { className: "flex flex-col gap-2", children: [_jsx(CatalogueSectionHeader, { title: L.catalogueSteps, count: availableSteps.length }), availableSteps.length === 0 ? (_jsx("p", { className: "text-muted-foreground text-xs italic", children: L.noStepsRegistered })) : (_jsx("ul", { className: "flex flex-col gap-1", children: availableSteps.map((s) => (_jsxs("li", { className: "flex flex-col gap-0.5 rounded-md border px-2 py-1.5 text-xs", children: [_jsx("span", { className: "truncate font-mono", children: s.id }), _jsxs("div", { className: "text-muted-foreground flex flex-wrap gap-x-3 text-[10px]", children: [_jsxs("span", { className: "font-mono", children: ["\u2190 ", s.requires.length ? s.requires.join(", ") : L.noInputs] }), _jsxs("span", { className: "font-mono", children: ["\u2192 ", s.produces.length ? s.produces.join(", ") : L.noOutputs] })] })] }, s.id))) }))] }), _jsxs("section", { className: "flex flex-col gap-2", children: [_jsx(CatalogueSectionHeader, { title: L.catalogueUnreachable, count: unreachableWidgets.length }), unreachableWidgets.length === 0 ? (_jsx("p", { className: "text-muted-foreground text-xs italic", children: L.catalogueUnreachableEmpty })) : (_jsx("ul", { className: "flex flex-col gap-1", children: unreachableWidgets.map((w) => {
27
+ entry.consumedByWidgets.length > 0) && (_jsxs("div", { className: "text-muted-foreground text-small flex flex-col gap-0.5", children: [entry.producedBySteps.length > 0 && (_jsxs("span", { children: [L.catalogueProducedBy, " ", _jsx("span", { className: "font-mono", children: entry.producedBySteps.join(", ") })] })), entry.consumedBySteps.length > 0 && (_jsxs("span", { children: [L.catalogueStepPrefix, " ", L.catalogueConsumedBy, " ", _jsx("span", { className: "font-mono", children: entry.consumedBySteps.join(", ") })] })), entry.consumedByWidgets.length > 0 && (_jsxs("span", { children: [L.catalogueElementPrefix, " ", L.catalogueConsumedBy, " ", _jsx("span", { className: "font-mono", children: entry.consumedByWidgets.join(", ") })] }))] })), !entry.inContext && (_jsxs("div", { className: "mt-0.5 flex items-center gap-1", children: [_jsxs(Button, { variant: "ghost", size: "xs", onClick: () => onSeedKey(entry.key), children: [_jsx(Plus, {}), " ", L.cataloguePickKey] }), producerOf.get(entry.key) && (_jsxs(Button, { variant: "ghost", size: "xs", onClick: () => onAddProducingStep(entry.key), children: [_jsx(ArrowDownToLine, {}), " ", L.catalogueAddProducingStep] }))] }))] }, entry.key))) }))] }), _jsxs("section", { className: "flex flex-col gap-2", children: [_jsx(CatalogueSectionHeader, { title: L.catalogueSteps, count: availableSteps.length }), availableSteps.length === 0 ? (_jsx("p", { className: "text-muted-foreground text-small italic", children: L.noStepsRegistered })) : (_jsx("ul", { className: "flex flex-col gap-1", children: availableSteps.map((s) => {
28
+ const name = displayLabel(s, s.id, locale, resolveKey);
29
+ return (_jsxs("li", { className: "text-small flex flex-col gap-0.5 rounded-md border px-2 py-1.5", children: [_jsx("span", { className: "truncate font-medium", children: name.label }), name.hint && (_jsx("span", { className: "text-muted-foreground truncate font-mono", children: name.hint })), _jsxs("div", { className: "text-muted-foreground flex flex-wrap gap-x-3", children: [_jsxs("span", { children: [L.catalogueNeedsKeys, " ", _jsx("span", { className: "font-mono", children: s.requires.length ? s.requires.join(", ") : L.noInputs })] }), _jsxs("span", { children: [L.stepProvides, " ", _jsx("span", { className: "font-mono", children: s.produces.length ? s.produces.join(", ") : L.noOutputs })] })] })] }, s.id));
30
+ }) }))] }), _jsxs("section", { className: "flex flex-col gap-2", children: [_jsx(CatalogueSectionHeader, { title: L.catalogueUnreachable, count: unreachableWidgets.length }), unreachableWidgets.length === 0 ? (_jsx("p", { className: "text-muted-foreground text-small italic", children: L.catalogueUnreachableEmpty })) : (_jsx("ul", { className: "flex flex-col gap-1", children: unreachableWidgets.map((w) => {
25
31
  const candidate = w.missingKeys
26
32
  .map((k) => ({ key: k, step: producerOf.get(k) }))
27
33
  .find((c) => c.step);
28
- return (_jsxs("li", { className: "bg-muted/20 flex flex-col gap-1 rounded-md border px-2 py-1.5 text-xs", children: [_jsx("span", { className: "truncate font-mono", children: w.id }), _jsxs("span", { className: "text-muted-foreground text-[10px]", children: [L.catalogueNeedsKeys, " ", _jsx("span", { className: "font-mono", children: w.missingKeys.join(", ") })] }), _jsxs("div", { className: "mt-0.5 flex flex-wrap items-center gap-1", children: [w.missingKeys.map((k) => (_jsxs(Button, { variant: "ghost", size: "xs", onClick: () => onSeedKey(k), children: [_jsx(Plus, {}), _jsx("span", { className: "font-mono", children: k })] }, k))), candidate && (_jsxs(Button, { variant: "outline", size: "xs", onClick: () => onAddProducingStep(candidate.key), children: [_jsx(ArrowDownToLine, {}), " ", L.catalogueAddProducingStep] }))] })] }, w.id));
34
+ const name = displayLabel(w, w.id, locale, resolveKey);
35
+ return (_jsxs("li", { className: "bg-muted/20 text-small flex flex-col gap-1 rounded-md border px-2 py-1.5", children: [_jsx("span", { className: "truncate font-medium", children: name.label }), name.hint && (_jsx("span", { className: "text-muted-foreground truncate font-mono", children: name.hint })), _jsxs("span", { className: "text-muted-foreground", children: [L.catalogueNeedsKeys, " ", _jsx("span", { className: "font-mono", children: w.missingKeys.join(", ") })] }), _jsxs("div", { className: "mt-0.5 flex flex-wrap items-center gap-1", children: [w.missingKeys.map((k) => (_jsxs(Button, { variant: "ghost", size: "xs", onClick: () => onSeedKey(k), children: [_jsx(Plus, {}), _jsx("span", { className: "font-mono", children: k })] }, k))), candidate && (_jsxs(Button, { variant: "outline", size: "xs", onClick: () => onAddProducingStep(candidate.key), children: [_jsx(ArrowDownToLine, {}), " ", L.catalogueAddProducingStep] }))] })] }, w.id));
29
36
  }) }))] })] }) })] }) }));
30
37
  }
31
38
  function CatalogueSectionHeader({ title, count }) {
32
- return (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "text-muted-foreground text-[10px] font-semibold tracking-[0.12em] uppercase", children: title }), _jsx("span", { className: "bg-border h-px flex-1", "aria-hidden": "true" }), _jsx(Badge, { variant: "outline", className: "px-1.5 text-[10px]", children: count })] }));
39
+ return (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("h3", { className: "text-muted-foreground text-small font-semibold", children: title }), _jsx("span", { className: "bg-border h-px flex-1", "aria-hidden": "true" }), _jsx(Badge, { variant: "outline", className: "px-1.5", children: count })] }));
33
40
  }
34
41
  //# sourceMappingURL=CatalogueSheet.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CatalogueSheet.js","sourceRoot":"","sources":["../../../src/app/builder/CatalogueSheet.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CatalogueSheet.js","sourceRoot":"","sources":["../../../src/app/builder/CatalogueSheet.tsx"],"names":[],"mappings":"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"}
@@ -1,18 +1,22 @@
1
- import type { RowDef } from "@miragon/mcp-toolkit-core";
1
+ import type { DisplayText, RowDef } from "@miragon/mcp-toolkit-core";
2
2
  /**
3
3
  * Mounted once at the LayoutBuilder root so that exactly one props editor
4
4
  * can be open at a time across the entire workspace — including across
5
5
  * tabs. `configuringCell` addresses `{ rowIdx, cellIdx }` on the currently
6
6
  * active draft surface (rows or active tab's rows); renders nothing when no
7
- * cell is being configured or the address no longer resolves.
7
+ * cell is being configured or the address no longer resolves. The sheet is
8
+ * titled with the widget's name; closing it returns focus to the cell's
9
+ * configure button (the kit's `SheetContent` hands it back to the element
10
+ * that opened it, see `lib/focus-return.ts`).
8
11
  */
9
- export declare function CellPropsSheet({ configuringCell, activeRows, propsSchemaByWidgetId, onApply, onClose, }: {
12
+ export declare function CellPropsSheet({ configuringCell, activeRows, propsSchemaByWidgetId, displayByWidgetId, onApply, onClose, }: {
10
13
  configuringCell: {
11
14
  rowIdx: number;
12
15
  cellIdx: number;
13
16
  } | null;
14
17
  activeRows: RowDef[];
15
18
  propsSchemaByWidgetId: Map<string, Record<string, unknown>>;
19
+ displayByWidgetId: Map<string, DisplayText>;
16
20
  onApply: (rowIdx: number, cellIdx: number, next: Record<string, unknown> | undefined) => void;
17
21
  onClose: () => void;
18
22
  }): import("react").JSX.Element | null;
@@ -1 +1 @@
1
- {"version":3,"file":"CellPropsSheet.d.ts","sourceRoot":"","sources":["../../../src/app/builder/CellPropsSheet.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAOvD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,EAC7B,eAAe,EACf,UAAU,EACV,qBAAqB,EACrB,OAAO,EACP,OAAO,GACR,EAAE;IACD,eAAe,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IAC3D,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAC3D,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,KAAK,IAAI,CAAA;IAC7F,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB,sCAoBA"}
1
+ {"version":3,"file":"CellPropsSheet.d.ts","sourceRoot":"","sources":["../../../src/app/builder/CellPropsSheet.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AASpE;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,EAC7B,eAAe,EACf,UAAU,EACV,qBAAqB,EACrB,iBAAiB,EACjB,OAAO,EACP,OAAO,GACR,EAAE;IACD,eAAe,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IAC3D,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAC3D,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IAC3C,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,KAAK,IAAI,CAAA;IAC7F,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB,sCA4BA"}
@@ -1,5 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { WidgetPropsSheet } from "../widget-props-sheet.js";
3
+ import { displayLabel } from "./builder-model.js";
4
+ import { useDisplayResolver } from "./use-display-resolver.js";
3
5
  // -------------------------------------------------------------------------- //
4
6
  // Cell props sheet — mounts the WidgetPropsSheet for the configured cell
5
7
  // -------------------------------------------------------------------------- //
@@ -8,19 +10,24 @@ import { WidgetPropsSheet } from "../widget-props-sheet.js";
8
10
  * can be open at a time across the entire workspace — including across
9
11
  * tabs. `configuringCell` addresses `{ rowIdx, cellIdx }` on the currently
10
12
  * active draft surface (rows or active tab's rows); renders nothing when no
11
- * cell is being configured or the address no longer resolves.
13
+ * cell is being configured or the address no longer resolves. The sheet is
14
+ * titled with the widget's name; closing it returns focus to the cell's
15
+ * configure button (the kit's `SheetContent` hands it back to the element
16
+ * that opened it, see `lib/focus-return.ts`).
12
17
  */
13
- export function CellPropsSheet({ configuringCell, activeRows, propsSchemaByWidgetId, onApply, onClose, }) {
18
+ export function CellPropsSheet({ configuringCell, activeRows, propsSchemaByWidgetId, displayByWidgetId, onApply, onClose, }) {
19
+ const { locale, resolveKey } = useDisplayResolver();
14
20
  if (!configuringCell)
15
21
  return null;
16
22
  const cell = activeRows[configuringCell.rowIdx]?.row[configuringCell.cellIdx];
17
23
  if (!cell)
18
24
  return null;
19
25
  const schema = propsSchemaByWidgetId.get(cell.widget);
26
+ const name = displayLabel(displayByWidgetId.get(cell.widget) ?? {}, cell.widget, locale, resolveKey);
20
27
  return (_jsx(WidgetPropsSheet, { open: true, onOpenChange: (open) => {
21
28
  if (!open)
22
29
  onClose();
23
- }, widgetId: cell.widget, schema: schema, value: cell.props, onApply: (next) => {
30
+ }, widgetId: cell.widget, widgetTitle: name.hint ? name.label : undefined, schema: schema, value: cell.props, onApply: (next) => {
24
31
  onApply(configuringCell.rowIdx, configuringCell.cellIdx, next);
25
32
  onClose();
26
33
  } }));
@@ -1 +1 @@
1
- {"version":3,"file":"CellPropsSheet.js","sourceRoot":"","sources":["../../../src/app/builder/CellPropsSheet.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAE3D,gFAAgF;AAChF,yEAAyE;AACzE,gFAAgF;AAEhF;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,EAC7B,eAAe,EACf,UAAU,EACV,qBAAqB,EACrB,OAAO,EACP,OAAO,GAOR;IACC,IAAI,CAAC,eAAe;QAAE,OAAO,IAAI,CAAA;IACjC,MAAM,IAAI,GAAG,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;IAC7E,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAA;IACtB,MAAM,MAAM,GAAG,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACrD,OAAO,CACL,KAAC,gBAAgB,IACf,IAAI,QACJ,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE;YACrB,IAAI,CAAC,IAAI;gBAAE,OAAO,EAAE,CAAA;QACtB,CAAC,EACD,QAAQ,EAAE,IAAI,CAAC,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAChB,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;YAC9D,OAAO,EAAE,CAAA;QACX,CAAC,GACD,CACH,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"CellPropsSheet.js","sourceRoot":"","sources":["../../../src/app/builder/CellPropsSheet.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAE9D,gFAAgF;AAChF,yEAAyE;AACzE,gFAAgF;AAEhF;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAC,EAC7B,eAAe,EACf,UAAU,EACV,qBAAqB,EACrB,iBAAiB,EACjB,OAAO,EACP,OAAO,GAQR;IACC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,kBAAkB,EAAE,CAAA;IACnD,IAAI,CAAC,eAAe;QAAE,OAAO,IAAI,CAAA;IACjC,MAAM,IAAI,GAAG,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;IAC7E,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAA;IACtB,MAAM,MAAM,GAAG,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACrD,MAAM,IAAI,GAAG,YAAY,CACvB,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EACxC,IAAI,CAAC,MAAM,EACX,MAAM,EACN,UAAU,CACX,CAAA;IACD,OAAO,CACL,KAAC,gBAAgB,IACf,IAAI,QACJ,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE;YACrB,IAAI,CAAC,IAAI;gBAAE,OAAO,EAAE,CAAA;QACtB,CAAC,EACD,QAAQ,EAAE,IAAI,CAAC,MAAM,EACrB,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAC/C,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAChB,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;YAC9D,OAAO,EAAE,CAAA;QACX,CAAC,GACD,CACH,CAAA;AACH,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { LayoutBuilderLabels } from "./labels.js";
2
+ /**
3
+ * Asks before Discard takes the changes out of the view (CI §9: confirm
4
+ * before an irreversible action). When a saved dashboard holds them
5
+ * (`changesSaved`), it says so instead of calling them lost. The safe choice
6
+ * comes first in the DOM, so the dialog opens with focus on "Keep editing";
7
+ * closing it returns focus to Discard (the kit's `DialogContent` hands it
8
+ * back to the element that opened it, see `lib/focus-return.ts`).
9
+ */
10
+ export declare function DiscardDialog({ L, open, onOpenChange, changesSaved, onConfirm, }: {
11
+ L: Required<LayoutBuilderLabels>;
12
+ open: boolean;
13
+ onOpenChange: (open: boolean) => void;
14
+ /** A saved dashboard holds the changes: only the view goes back. */
15
+ changesSaved: boolean;
16
+ onConfirm: () => void;
17
+ }): import("react").JSX.Element;
18
+ //# sourceMappingURL=DiscardDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiscardDialog.d.ts","sourceRoot":"","sources":["../../../src/app/builder/DiscardDialog.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAMtD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,EAC5B,CAAC,EACD,IAAI,EACJ,YAAY,EACZ,YAAY,EACZ,SAAS,GACV,EAAE;IACD,CAAC,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAA;IAChC,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,oEAAoE;IACpE,YAAY,EAAE,OAAO,CAAA;IACrB,SAAS,EAAE,MAAM,IAAI,CAAA;CACtB,+BAqBA"}
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Button } from "../../primitives/button.js";
3
+ import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "../../primitives/dialog.js";
4
+ // -------------------------------------------------------------------------- //
5
+ // Discard confirmation
6
+ // -------------------------------------------------------------------------- //
7
+ /**
8
+ * Asks before Discard takes the changes out of the view (CI §9: confirm
9
+ * before an irreversible action). When a saved dashboard holds them
10
+ * (`changesSaved`), it says so instead of calling them lost. The safe choice
11
+ * comes first in the DOM, so the dialog opens with focus on "Keep editing";
12
+ * closing it returns focus to Discard (the kit's `DialogContent` hands it
13
+ * back to the element that opened it, see `lib/focus-return.ts`).
14
+ */
15
+ export function DiscardDialog({ L, open, onOpenChange, changesSaved, onConfirm, }) {
16
+ return (_jsx(Dialog, { open: open, onOpenChange: onOpenChange, children: _jsxs(DialogContent, { children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { children: L.discardDialogTitle }), _jsx(DialogDescription, { children: changesSaved ? L.discardDialogDescriptionSaved : L.discardDialogDescription })] }), _jsxs(DialogFooter, { children: [_jsx(DialogClose, { asChild: true, children: _jsx(Button, { variant: "outline", children: L.keepEditing }) }), _jsx(Button, { variant: "destructive", onClick: onConfirm, children: L.discardConfirm })] })] }) }));
17
+ }
18
+ //# sourceMappingURL=DiscardDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiscardDialog.js","sourceRoot":"","sources":["../../../src/app/builder/DiscardDialog.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACnD,OAAO,EACL,MAAM,EACN,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,WAAW,GACZ,MAAM,4BAA4B,CAAA;AAGnC,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAEhF;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,CAAC,EACD,IAAI,EACJ,YAAY,EACZ,YAAY,EACZ,SAAS,GAQV;IACC,OAAO,CACL,KAAC,MAAM,IAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,YAC5C,MAAC,aAAa,eACZ,MAAC,YAAY,eACX,KAAC,WAAW,cAAE,CAAC,CAAC,kBAAkB,GAAe,EACjD,KAAC,iBAAiB,cACf,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,GAC1D,IACP,EACf,MAAC,YAAY,eACX,KAAC,WAAW,IAAC,OAAO,kBAClB,KAAC,MAAM,IAAC,OAAO,EAAC,SAAS,YAAE,CAAC,CAAC,WAAW,GAAU,GACtC,EACd,KAAC,MAAM,IAAC,OAAO,EAAC,aAAa,EAAC,OAAO,EAAE,SAAS,YAC7C,CAAC,CAAC,cAAc,GACV,IACI,IACD,GACT,CACV,CAAA;AACH,CAAC"}