@miragon/mcp-toolkit-ui 2.6.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 (511) hide show
  1. package/README.md +14 -5
  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.d.ts +7 -2
  7. package/dist/app/builder/BuilderBanners.d.ts.map +1 -1
  8. package/dist/app/builder/BuilderBanners.js +8 -3
  9. package/dist/app/builder/BuilderBanners.js.map +1 -1
  10. package/dist/app/builder/CanvasRow.d.ts +4 -2
  11. package/dist/app/builder/CanvasRow.d.ts.map +1 -1
  12. package/dist/app/builder/CanvasRow.js +29 -17
  13. package/dist/app/builder/CanvasRow.js.map +1 -1
  14. package/dist/app/builder/CatalogueSheet.d.ts.map +1 -1
  15. package/dist/app/builder/CatalogueSheet.js +14 -6
  16. package/dist/app/builder/CatalogueSheet.js.map +1 -1
  17. package/dist/app/builder/CellPropsSheet.d.ts +7 -3
  18. package/dist/app/builder/CellPropsSheet.d.ts.map +1 -1
  19. package/dist/app/builder/CellPropsSheet.js +10 -3
  20. package/dist/app/builder/CellPropsSheet.js.map +1 -1
  21. package/dist/app/builder/DiscardDialog.d.ts +18 -0
  22. package/dist/app/builder/DiscardDialog.d.ts.map +1 -0
  23. package/dist/app/builder/DiscardDialog.js +18 -0
  24. package/dist/app/builder/DiscardDialog.js.map +1 -0
  25. package/dist/app/builder/EmptyHint.d.ts +4 -0
  26. package/dist/app/builder/EmptyHint.d.ts.map +1 -1
  27. package/dist/app/builder/EmptyHint.js +6 -1
  28. package/dist/app/builder/EmptyHint.js.map +1 -1
  29. package/dist/app/builder/LayoutSurface.d.ts +33 -9
  30. package/dist/app/builder/LayoutSurface.d.ts.map +1 -1
  31. package/dist/app/builder/LayoutSurface.js +74 -23
  32. package/dist/app/builder/LayoutSurface.js.map +1 -1
  33. package/dist/app/builder/PipelineStrip.d.ts +5 -2
  34. package/dist/app/builder/PipelineStrip.d.ts.map +1 -1
  35. package/dist/app/builder/PipelineStrip.js +33 -15
  36. package/dist/app/builder/PipelineStrip.js.map +1 -1
  37. package/dist/app/builder/SaveDialog.d.ts +9 -1
  38. package/dist/app/builder/SaveDialog.d.ts.map +1 -1
  39. package/dist/app/builder/SaveDialog.js +9 -3
  40. package/dist/app/builder/SaveDialog.js.map +1 -1
  41. package/dist/app/builder/Toolbar.d.ts +14 -4
  42. package/dist/app/builder/Toolbar.d.ts.map +1 -1
  43. package/dist/app/builder/Toolbar.js +24 -7
  44. package/dist/app/builder/Toolbar.js.map +1 -1
  45. package/dist/app/builder/Workspace.d.ts +23 -3
  46. package/dist/app/builder/Workspace.d.ts.map +1 -1
  47. package/dist/app/builder/Workspace.js +58 -8
  48. package/dist/app/builder/Workspace.js.map +1 -1
  49. package/dist/app/builder/builder-model.d.ts +146 -3
  50. package/dist/app/builder/builder-model.d.ts.map +1 -1
  51. package/dist/app/builder/builder-model.js +196 -5
  52. package/dist/app/builder/builder-model.js.map +1 -1
  53. package/dist/app/builder/labels.d.ts +13 -62
  54. package/dist/app/builder/labels.d.ts.map +1 -1
  55. package/dist/app/builder/labels.js +9 -58
  56. package/dist/app/builder/labels.js.map +1 -1
  57. package/dist/app/builder/reveal.d.ts +10 -0
  58. package/dist/app/builder/reveal.d.ts.map +1 -0
  59. package/dist/app/builder/reveal.js +10 -0
  60. package/dist/app/builder/reveal.js.map +1 -0
  61. package/dist/app/builder/status-chip.d.ts.map +1 -1
  62. package/dist/app/builder/status-chip.js +3 -2
  63. package/dist/app/builder/status-chip.js.map +1 -1
  64. package/dist/app/builder/use-builder-catalogue.d.ts +5 -1
  65. package/dist/app/builder/use-builder-catalogue.d.ts.map +1 -1
  66. package/dist/app/builder/use-builder-catalogue.js +50 -17
  67. package/dist/app/builder/use-builder-catalogue.js.map +1 -1
  68. package/dist/app/builder/use-builder-session.d.ts +30 -0
  69. package/dist/app/builder/use-builder-session.d.ts.map +1 -0
  70. package/dist/app/builder/use-builder-session.js +58 -0
  71. package/dist/app/builder/use-builder-session.js.map +1 -0
  72. package/dist/app/builder/use-display-resolver.d.ts +17 -0
  73. package/dist/app/builder/use-display-resolver.d.ts.map +1 -0
  74. package/dist/app/builder/use-display-resolver.js +16 -0
  75. package/dist/app/builder/use-display-resolver.js.map +1 -0
  76. package/dist/app/builder/use-save-dashboard.d.ts +3 -1
  77. package/dist/app/builder/use-save-dashboard.d.ts.map +1 -1
  78. package/dist/app/builder/use-save-dashboard.js +3 -1
  79. package/dist/app/builder/use-save-dashboard.js.map +1 -1
  80. package/dist/app/index.d.ts +8 -3
  81. package/dist/app/index.d.ts.map +1 -1
  82. package/dist/app/index.js +8 -2
  83. package/dist/app/index.js.map +1 -1
  84. package/dist/app/layout-builder.d.ts +18 -25
  85. package/dist/app/layout-builder.d.ts.map +1 -1
  86. package/dist/app/layout-builder.js +84 -78
  87. package/dist/app/layout-builder.js.map +1 -1
  88. package/dist/app/mcp-app-view-chrome.d.ts +103 -20
  89. package/dist/app/mcp-app-view-chrome.d.ts.map +1 -1
  90. package/dist/app/mcp-app-view-chrome.js +125 -40
  91. package/dist/app/mcp-app-view-chrome.js.map +1 -1
  92. package/dist/app/mcp-app-view-states.d.ts +23 -0
  93. package/dist/app/mcp-app-view-states.d.ts.map +1 -0
  94. package/dist/app/mcp-app-view-states.js +55 -0
  95. package/dist/app/mcp-app-view-states.js.map +1 -0
  96. package/dist/app/mcp-app-view.d.ts +72 -5
  97. package/dist/app/mcp-app-view.d.ts.map +1 -1
  98. package/dist/app/mcp-app-view.js +241 -141
  99. package/dist/app/mcp-app-view.js.map +1 -1
  100. package/dist/app/mcp-toolkit-app.d.ts +8 -2
  101. package/dist/app/mcp-toolkit-app.d.ts.map +1 -1
  102. package/dist/app/mcp-toolkit-app.js +33 -4
  103. package/dist/app/mcp-toolkit-app.js.map +1 -1
  104. package/dist/app/mcp-use-host-bridge.d.ts +15 -6
  105. package/dist/app/mcp-use-host-bridge.d.ts.map +1 -1
  106. package/dist/app/mcp-use-host-bridge.js +51 -22
  107. package/dist/app/mcp-use-host-bridge.js.map +1 -1
  108. package/dist/app/model-context.d.ts +71 -0
  109. package/dist/app/model-context.d.ts.map +1 -0
  110. package/dist/app/model-context.js +101 -0
  111. package/dist/app/model-context.js.map +1 -0
  112. package/dist/app/use-build-mode-focus.d.ts +33 -0
  113. package/dist/app/use-build-mode-focus.d.ts.map +1 -0
  114. package/dist/app/use-build-mode-focus.js +59 -0
  115. package/dist/app/use-build-mode-focus.js.map +1 -0
  116. package/dist/app/use-view-actions.d.ts +31 -0
  117. package/dist/app/use-view-actions.d.ts.map +1 -0
  118. package/dist/app/use-view-actions.js +81 -0
  119. package/dist/app/use-view-actions.js.map +1 -0
  120. package/dist/app/use-view-lifecycle.d.ts +42 -0
  121. package/dist/app/use-view-lifecycle.d.ts.map +1 -0
  122. package/dist/app/use-view-lifecycle.js +81 -0
  123. package/dist/app/use-view-lifecycle.js.map +1 -0
  124. package/dist/app/view-lifecycle.d.ts +185 -0
  125. package/dist/app/view-lifecycle.d.ts.map +1 -0
  126. package/dist/app/view-lifecycle.js +207 -0
  127. package/dist/app/view-lifecycle.js.map +1 -0
  128. package/dist/app/widget-fixture.d.ts +10 -3
  129. package/dist/app/widget-fixture.d.ts.map +1 -1
  130. package/dist/app/widget-fixture.js +21 -8
  131. package/dist/app/widget-fixture.js.map +1 -1
  132. package/dist/app/widget-props-sheet.d.ts +6 -10
  133. package/dist/app/widget-props-sheet.d.ts.map +1 -1
  134. package/dist/app/widget-props-sheet.js +25 -20
  135. package/dist/app/widget-props-sheet.js.map +1 -1
  136. package/dist/app/widget-renderer.d.ts +41 -1
  137. package/dist/app/widget-renderer.d.ts.map +1 -1
  138. package/dist/app/widget-renderer.js +82 -31
  139. package/dist/app/widget-renderer.js.map +1 -1
  140. package/dist/components/DrillButton.d.ts +9 -6
  141. package/dist/components/DrillButton.d.ts.map +1 -1
  142. package/dist/components/DrillButton.js +9 -6
  143. package/dist/components/DrillButton.js.map +1 -1
  144. package/dist/components/EmptyState.d.ts +33 -0
  145. package/dist/components/EmptyState.d.ts.map +1 -0
  146. package/dist/components/EmptyState.js +19 -0
  147. package/dist/components/EmptyState.js.map +1 -0
  148. package/dist/components/ErrorState.d.ts +53 -0
  149. package/dist/components/ErrorState.d.ts.map +1 -0
  150. package/dist/components/ErrorState.js +77 -0
  151. package/dist/components/ErrorState.js.map +1 -0
  152. package/dist/components/FilterBar.d.ts +16 -5
  153. package/dist/components/FilterBar.d.ts.map +1 -1
  154. package/dist/components/FilterBar.js +13 -5
  155. package/dist/components/FilterBar.js.map +1 -1
  156. package/dist/components/GroupCard.d.ts.map +1 -1
  157. package/dist/components/GroupCard.js +2 -1
  158. package/dist/components/GroupCard.js.map +1 -1
  159. package/dist/components/KpiGrid.d.ts +70 -18
  160. package/dist/components/KpiGrid.d.ts.map +1 -1
  161. package/dist/components/KpiGrid.js +112 -23
  162. package/dist/components/KpiGrid.js.map +1 -1
  163. package/dist/components/ListFooter.d.ts +32 -4
  164. package/dist/components/ListFooter.d.ts.map +1 -1
  165. package/dist/components/ListFooter.js +35 -6
  166. package/dist/components/ListFooter.js.map +1 -1
  167. package/dist/components/PagedListFooter.d.ts +57 -0
  168. package/dist/components/PagedListFooter.d.ts.map +1 -0
  169. package/dist/components/PagedListFooter.js +27 -0
  170. package/dist/components/PagedListFooter.js.map +1 -0
  171. package/dist/components/Pills.d.ts +36 -12
  172. package/dist/components/Pills.d.ts.map +1 -1
  173. package/dist/components/Pills.js +29 -8
  174. package/dist/components/Pills.js.map +1 -1
  175. package/dist/components/SectionHeading.d.ts +3 -1
  176. package/dist/components/SectionHeading.d.ts.map +1 -1
  177. package/dist/components/SectionHeading.js +6 -2
  178. package/dist/components/SectionHeading.js.map +1 -1
  179. package/dist/components/Toast.d.ts +43 -0
  180. package/dist/components/Toast.d.ts.map +1 -0
  181. package/dist/components/Toast.js +106 -0
  182. package/dist/components/Toast.js.map +1 -0
  183. package/dist/components/WidgetHeader.d.ts +34 -10
  184. package/dist/components/WidgetHeader.d.ts.map +1 -1
  185. package/dist/components/WidgetHeader.js +11 -6
  186. package/dist/components/WidgetHeader.js.map +1 -1
  187. package/dist/hooks/index.d.ts +4 -4
  188. package/dist/hooks/index.d.ts.map +1 -1
  189. package/dist/hooks/index.js +1 -1
  190. package/dist/hooks/index.js.map +1 -1
  191. package/dist/hooks/tool-result-recovery-model.d.ts +155 -0
  192. package/dist/hooks/tool-result-recovery-model.d.ts.map +1 -0
  193. package/dist/hooks/tool-result-recovery-model.js +273 -0
  194. package/dist/hooks/tool-result-recovery-model.js.map +1 -0
  195. package/dist/hooks/use-tool-query.d.ts +56 -14
  196. package/dist/hooks/use-tool-query.d.ts.map +1 -1
  197. package/dist/hooks/use-tool-query.js +102 -25
  198. package/dist/hooks/use-tool-query.js.map +1 -1
  199. package/dist/hooks/use-tool-result-recovery.d.ts +61 -44
  200. package/dist/hooks/use-tool-result-recovery.d.ts.map +1 -1
  201. package/dist/hooks/use-tool-result-recovery.js +62 -110
  202. package/dist/hooks/use-tool-result-recovery.js.map +1 -1
  203. package/dist/hooks/use-view-data.d.ts +55 -7
  204. package/dist/hooks/use-view-data.d.ts.map +1 -1
  205. package/dist/hooks/use-view-data.js +81 -11
  206. package/dist/hooks/use-view-data.js.map +1 -1
  207. package/dist/hooks/use-view-tool-query.d.ts +12 -7
  208. package/dist/hooks/use-view-tool-query.d.ts.map +1 -1
  209. package/dist/hooks/use-view-tool-query.js +15 -14
  210. package/dist/hooks/use-view-tool-query.js.map +1 -1
  211. package/dist/index.d.ts +27 -13
  212. package/dist/index.d.ts.map +1 -1
  213. package/dist/index.js +29 -7
  214. package/dist/index.js.map +1 -1
  215. package/dist/lib/focus-return.d.ts +61 -0
  216. package/dist/lib/focus-return.d.ts.map +1 -0
  217. package/dist/lib/focus-return.js +46 -0
  218. package/dist/lib/focus-return.js.map +1 -0
  219. package/dist/lib/focus-ring.d.ts +18 -0
  220. package/dist/lib/focus-ring.d.ts.map +1 -0
  221. package/dist/lib/focus-ring.js +18 -0
  222. package/dist/lib/focus-ring.js.map +1 -0
  223. package/dist/lib/icon-stroke.d.ts +12 -0
  224. package/dist/lib/icon-stroke.d.ts.map +1 -0
  225. package/dist/lib/icon-stroke.js +12 -0
  226. package/dist/lib/icon-stroke.js.map +1 -0
  227. package/dist/lib/parse-tool-result.d.ts +23 -1
  228. package/dist/lib/parse-tool-result.d.ts.map +1 -1
  229. package/dist/lib/parse-tool-result.js +38 -2
  230. package/dist/lib/parse-tool-result.js.map +1 -1
  231. package/dist/lib/toast-model.d.ts +86 -0
  232. package/dist/lib/toast-model.d.ts.map +1 -0
  233. package/dist/lib/toast-model.js +102 -0
  234. package/dist/lib/toast-model.js.map +1 -0
  235. package/dist/lib/tone-utils.d.ts +95 -9
  236. package/dist/lib/tone-utils.d.ts.map +1 -1
  237. package/dist/lib/tone-utils.js +100 -9
  238. package/dist/lib/tone-utils.js.map +1 -1
  239. package/dist/lib/tool-query.d.ts +107 -0
  240. package/dist/lib/tool-query.d.ts.map +1 -0
  241. package/dist/lib/tool-query.js +182 -0
  242. package/dist/lib/tool-query.js.map +1 -0
  243. package/dist/lib/tool-result-observer.d.ts +108 -0
  244. package/dist/lib/tool-result-observer.d.ts.map +1 -0
  245. package/dist/lib/tool-result-observer.js +158 -0
  246. package/dist/lib/tool-result-observer.js.map +1 -0
  247. package/dist/lib/typography.d.ts +37 -0
  248. package/dist/lib/typography.d.ts.map +1 -0
  249. package/dist/lib/typography.js +41 -0
  250. package/dist/lib/typography.js.map +1 -0
  251. package/dist/lib/utils.d.ts.map +1 -1
  252. package/dist/lib/utils.js +11 -1
  253. package/dist/lib/utils.js.map +1 -1
  254. package/dist/locale/index.d.ts +3 -1
  255. package/dist/locale/index.d.ts.map +1 -1
  256. package/dist/locale/index.js +2 -1
  257. package/dist/locale/index.js.map +1 -1
  258. package/dist/locale/locale-provider.d.ts +42 -1
  259. package/dist/locale/locale-provider.d.ts.map +1 -1
  260. package/dist/locale/locale-provider.js +44 -3
  261. package/dist/locale/locale-provider.js.map +1 -1
  262. package/dist/locale/message-types.d.ts +336 -0
  263. package/dist/locale/message-types.d.ts.map +1 -0
  264. package/dist/locale/message-types.js +7 -0
  265. package/dist/locale/message-types.js.map +1 -0
  266. package/dist/locale/messages-de.d.ts +9 -0
  267. package/dist/locale/messages-de.d.ts.map +1 -0
  268. package/dist/locale/messages-de.js +185 -0
  269. package/dist/locale/messages-de.js.map +1 -0
  270. package/dist/locale/messages-en.d.ts +8 -0
  271. package/dist/locale/messages-en.d.ts.map +1 -0
  272. package/dist/locale/messages-en.js +184 -0
  273. package/dist/locale/messages-en.js.map +1 -0
  274. package/dist/locale/toolkit-messages.d.ts +57 -0
  275. package/dist/locale/toolkit-messages.d.ts.map +1 -0
  276. package/dist/locale/toolkit-messages.js +103 -0
  277. package/dist/locale/toolkit-messages.js.map +1 -0
  278. package/dist/primitives/alert.d.ts +1 -1
  279. package/dist/primitives/alert.d.ts.map +1 -1
  280. package/dist/primitives/alert.js +6 -2
  281. package/dist/primitives/alert.js.map +1 -1
  282. package/dist/primitives/badge.d.ts +1 -1
  283. package/dist/primitives/badge.d.ts.map +1 -1
  284. package/dist/primitives/badge.js +19 -6
  285. package/dist/primitives/badge.js.map +1 -1
  286. package/dist/primitives/button.d.ts +1 -1
  287. package/dist/primitives/button.d.ts.map +1 -1
  288. package/dist/primitives/button.js +12 -8
  289. package/dist/primitives/button.js.map +1 -1
  290. package/dist/primitives/card.js +4 -4
  291. package/dist/primitives/card.js.map +1 -1
  292. package/dist/primitives/dialog.d.ts +7 -3
  293. package/dist/primitives/dialog.d.ts.map +1 -1
  294. package/dist/primitives/dialog.js +22 -8
  295. package/dist/primitives/dialog.js.map +1 -1
  296. package/dist/primitives/input.d.ts.map +1 -1
  297. package/dist/primitives/input.js +4 -1
  298. package/dist/primitives/input.js.map +1 -1
  299. package/dist/primitives/scroll-area.js +1 -1
  300. package/dist/primitives/scroll-area.js.map +1 -1
  301. package/dist/primitives/select.d.ts.map +1 -1
  302. package/dist/primitives/select.js +6 -3
  303. package/dist/primitives/select.js.map +1 -1
  304. package/dist/primitives/sheet.d.ts +3 -1
  305. package/dist/primitives/sheet.d.ts.map +1 -1
  306. package/dist/primitives/sheet.js +17 -7
  307. package/dist/primitives/sheet.js.map +1 -1
  308. package/dist/primitives/skeleton.js +1 -1
  309. package/dist/primitives/skeleton.js.map +1 -1
  310. package/dist/primitives/switch.d.ts.map +1 -1
  311. package/dist/primitives/switch.js +2 -1
  312. package/dist/primitives/switch.js.map +1 -1
  313. package/dist/primitives/tabs.d.ts.map +1 -1
  314. package/dist/primitives/tabs.js +5 -3
  315. package/dist/primitives/tabs.js.map +1 -1
  316. package/dist/providers/query-provider.d.ts +32 -1
  317. package/dist/providers/query-provider.d.ts.map +1 -1
  318. package/dist/providers/query-provider.js +53 -4
  319. package/dist/providers/query-provider.js.map +1 -1
  320. package/dist/render-cases-primitives.js +1 -1
  321. package/dist/render-cases-primitives.js.map +1 -1
  322. package/dist/render-cases.d.ts.map +1 -1
  323. package/dist/render-cases.js +48 -6
  324. package/dist/render-cases.js.map +1 -1
  325. package/dist/render-effects.d.ts +42 -0
  326. package/dist/render-effects.d.ts.map +1 -0
  327. package/dist/render-effects.js +81 -0
  328. package/dist/render-effects.js.map +1 -0
  329. package/dist/render-scan.d.ts +25 -0
  330. package/dist/render-scan.d.ts.map +1 -0
  331. package/dist/render-scan.js +66 -0
  332. package/dist/render-scan.js.map +1 -0
  333. package/dist/theme/cd-tokens.d.ts +66 -0
  334. package/dist/theme/cd-tokens.d.ts.map +1 -0
  335. package/dist/theme/cd-tokens.js +64 -0
  336. package/dist/theme/cd-tokens.js.map +1 -0
  337. package/dist/theme/create-theme.d.ts +214 -39
  338. package/dist/theme/create-theme.d.ts.map +1 -1
  339. package/dist/theme/create-theme.js +204 -13
  340. package/dist/theme/create-theme.js.map +1 -1
  341. package/dist/theme/fonts.d.ts +38 -0
  342. package/dist/theme/fonts.d.ts.map +1 -0
  343. package/dist/theme/fonts.js +56 -0
  344. package/dist/theme/fonts.js.map +1 -0
  345. package/dist/theme/host-fonts.d.ts +39 -0
  346. package/dist/theme/host-fonts.d.ts.map +1 -0
  347. package/dist/theme/host-fonts.js +44 -0
  348. package/dist/theme/host-fonts.js.map +1 -0
  349. package/dist/theme/index.d.ts +8 -1
  350. package/dist/theme/index.d.ts.map +1 -1
  351. package/dist/theme/index.js +5 -1
  352. package/dist/theme/index.js.map +1 -1
  353. package/dist/theme/portal-container.d.ts +16 -0
  354. package/dist/theme/portal-container.d.ts.map +1 -0
  355. package/dist/theme/portal-container.js +19 -0
  356. package/dist/theme/portal-container.js.map +1 -0
  357. package/dist/theme/presets.d.ts +24 -9
  358. package/dist/theme/presets.d.ts.map +1 -1
  359. package/dist/theme/presets.js +44 -11
  360. package/dist/theme/presets.js.map +1 -1
  361. package/dist/theme/theme-provider.d.ts +27 -9
  362. package/dist/theme/theme-provider.d.ts.map +1 -1
  363. package/dist/theme/theme-provider.js +42 -20
  364. package/dist/theme/theme-provider.js.map +1 -1
  365. package/package.json +11 -5
  366. package/src/app/adapt-data-widget.tsx +2 -42
  367. package/src/app/builder/BuilderBanners.tsx +26 -13
  368. package/src/app/builder/CanvasRow.tsx +79 -32
  369. package/src/app/builder/CatalogueSheet.tsx +58 -35
  370. package/src/app/builder/CellPropsSheet.tsx +17 -2
  371. package/src/app/builder/DiscardDialog.tsx +59 -0
  372. package/src/app/builder/EmptyHint.tsx +16 -11
  373. package/src/app/builder/LayoutSurface.tsx +207 -67
  374. package/src/app/builder/PipelineStrip.tsx +265 -156
  375. package/src/app/builder/SaveDialog.tsx +25 -14
  376. package/src/app/builder/Toolbar.tsx +154 -57
  377. package/src/app/builder/Workspace.tsx +226 -56
  378. package/src/app/builder/builder-feedback.test.tsx +75 -0
  379. package/src/app/builder/builder-model.test.ts +5 -0
  380. package/src/app/builder/builder-model.ts +346 -6
  381. package/src/app/builder/builder-model.ux.test.ts +456 -0
  382. package/src/app/builder/builder-ux.test.tsx +844 -0
  383. package/src/app/builder/labels.ts +15 -121
  384. package/src/app/builder/reveal.ts +10 -0
  385. package/src/app/builder/status-chip.tsx +8 -4
  386. package/src/app/builder/use-builder-catalogue.ts +62 -19
  387. package/src/app/builder/use-builder-session.ts +68 -0
  388. package/src/app/builder/use-display-resolver.ts +24 -0
  389. package/src/app/builder/use-save-dashboard.ts +5 -0
  390. package/src/app/index.ts +20 -3
  391. package/src/app/layout-builder.tsx +193 -186
  392. package/src/app/mcp-app-view-chrome.test.tsx +487 -14
  393. package/src/app/mcp-app-view-chrome.tsx +328 -100
  394. package/src/app/mcp-app-view-states.tsx +140 -0
  395. package/src/app/mcp-app-view.effects.test.tsx +292 -0
  396. package/src/app/mcp-app-view.test.tsx +478 -0
  397. package/src/app/mcp-app-view.tsx +447 -190
  398. package/src/app/mcp-toolkit-app.test.tsx +40 -0
  399. package/src/app/mcp-toolkit-app.tsx +39 -8
  400. package/src/app/mcp-use-host-bridge.test.tsx +180 -0
  401. package/src/app/mcp-use-host-bridge.tsx +67 -24
  402. package/src/app/model-context.test.tsx +116 -0
  403. package/src/app/model-context.tsx +125 -0
  404. package/src/app/use-build-mode-focus.ts +62 -0
  405. package/src/app/use-view-actions.ts +89 -0
  406. package/src/app/use-view-lifecycle.ts +122 -0
  407. package/src/app/view-lifecycle.test.ts +443 -0
  408. package/src/app/view-lifecycle.ts +334 -0
  409. package/src/app/widget-fixture.effects.test.tsx +51 -0
  410. package/src/app/widget-fixture.render.test.tsx +81 -0
  411. package/src/app/widget-fixture.tsx +34 -11
  412. package/src/app/widget-props-sheet.tsx +67 -39
  413. package/src/app/widget-renderer.render.test.tsx +131 -0
  414. package/src/app/widget-renderer.tsx +136 -38
  415. package/src/components/DrillButton.tsx +24 -10
  416. package/src/components/EmptyState.tsx +83 -0
  417. package/src/components/ErrorState.tsx +204 -0
  418. package/src/components/FilterBar.test.tsx +82 -0
  419. package/src/components/FilterBar.tsx +56 -27
  420. package/src/components/GroupCard.tsx +3 -2
  421. package/src/components/KpiGrid.test.tsx +279 -0
  422. package/src/components/KpiGrid.tsx +329 -91
  423. package/src/components/ListFooter.test.tsx +116 -0
  424. package/src/components/ListFooter.tsx +110 -12
  425. package/src/components/PagedListFooter.test.tsx +140 -0
  426. package/src/components/PagedListFooter.tsx +107 -0
  427. package/src/components/Pills.test.tsx +77 -0
  428. package/src/components/Pills.tsx +78 -16
  429. package/src/components/SectionHeading.tsx +9 -3
  430. package/src/components/Toast.tsx +206 -0
  431. package/src/components/WidgetHeader.test.tsx +78 -0
  432. package/src/components/WidgetHeader.tsx +63 -16
  433. package/src/components/feedback-states.test.tsx +314 -0
  434. package/src/components/tone-figures.test.tsx +58 -0
  435. package/src/fonts.css +19 -0
  436. package/src/globals.css +9 -165
  437. package/src/hooks/index.ts +6 -3
  438. package/src/hooks/tool-result-recovery-model.test.ts +744 -0
  439. package/src/hooks/tool-result-recovery-model.ts +418 -0
  440. package/src/hooks/use-tool-query.effects.test.tsx +205 -0
  441. package/src/hooks/use-tool-query.ts +156 -33
  442. package/src/hooks/use-tool-result-recovery.effects.test.tsx +141 -0
  443. package/src/hooks/use-tool-result-recovery.test.ts +28 -5
  444. package/src/hooks/use-tool-result-recovery.ts +101 -131
  445. package/src/hooks/use-view-data.test.tsx +169 -0
  446. package/src/hooks/use-view-data.ts +131 -10
  447. package/src/hooks/use-view-tool-query.ts +25 -19
  448. package/src/i18n-coverage.test.tsx +425 -0
  449. package/src/index.ts +102 -13
  450. package/src/lib/focus-return.test.ts +288 -0
  451. package/src/lib/focus-return.ts +96 -0
  452. package/src/lib/focus-ring.ts +20 -0
  453. package/src/lib/icon-stroke.test.ts +59 -0
  454. package/src/lib/icon-stroke.ts +13 -0
  455. package/src/lib/parse-tool-result.test.ts +46 -1
  456. package/src/lib/parse-tool-result.ts +40 -2
  457. package/src/lib/toast-model.test.ts +233 -0
  458. package/src/lib/toast-model.ts +165 -0
  459. package/src/lib/tone-utils.test.ts +125 -16
  460. package/src/lib/tone-utils.ts +144 -15
  461. package/src/lib/tool-query.test.ts +569 -0
  462. package/src/lib/tool-query.ts +253 -0
  463. package/src/lib/tool-result-observer.test.ts +296 -0
  464. package/src/lib/tool-result-observer.ts +211 -0
  465. package/src/lib/typography.test.ts +45 -0
  466. package/src/lib/typography.ts +47 -0
  467. package/src/lib/utils.ts +12 -1
  468. package/src/locale/index.ts +14 -1
  469. package/src/locale/locale-provider.test.tsx +87 -0
  470. package/src/locale/locale-provider.tsx +90 -3
  471. package/src/locale/message-types.ts +337 -0
  472. package/src/locale/messages-de.ts +198 -0
  473. package/src/locale/messages-en.ts +196 -0
  474. package/src/locale/toolkit-messages.test.ts +349 -0
  475. package/src/locale/toolkit-messages.ts +143 -0
  476. package/src/no-hardcoded-copy.test.ts +432 -0
  477. package/src/primitives/alert.tsx +7 -2
  478. package/src/primitives/badge.tsx +19 -7
  479. package/src/primitives/button.tsx +13 -8
  480. package/src/primitives/card.tsx +4 -4
  481. package/src/primitives/dialog.tsx +42 -8
  482. package/src/primitives/input.tsx +5 -3
  483. package/src/primitives/scroll-area.tsx +1 -1
  484. package/src/primitives/select.tsx +7 -4
  485. package/src/primitives/sheet.tsx +33 -6
  486. package/src/primitives/skeleton.tsx +1 -1
  487. package/src/primitives/switch.tsx +4 -2
  488. package/src/primitives/tabs.tsx +9 -6
  489. package/src/providers/query-provider.test.tsx +154 -0
  490. package/src/providers/query-provider.tsx +66 -5
  491. package/src/render-cases-primitives.tsx +1 -1
  492. package/src/render-cases.tsx +82 -6
  493. package/src/render-effects.tsx +96 -0
  494. package/src/render-scan.ts +75 -0
  495. package/src/theme/cd-tokens.generated.css +48 -0
  496. package/src/theme/cd-tokens.test.ts +109 -0
  497. package/src/theme/cd-tokens.ts +67 -0
  498. package/src/theme/create-theme.test.ts +253 -5
  499. package/src/theme/create-theme.ts +341 -41
  500. package/src/theme/fonts.test.ts +85 -0
  501. package/src/theme/fonts.ts +72 -0
  502. package/src/theme/host-fonts.test.ts +135 -0
  503. package/src/theme/host-fonts.ts +52 -0
  504. package/src/theme/index.ts +15 -1
  505. package/src/theme/portal-container.ts +20 -0
  506. package/src/theme/presets.ts +44 -11
  507. package/src/theme/theme-css.test.ts +619 -0
  508. package/src/theme/theme-provider.test.tsx +82 -0
  509. package/src/theme/theme-provider.tsx +60 -24
  510. package/src/theme.css +344 -0
  511. package/ui-catalog.json +783 -49
@@ -0,0 +1,337 @@
1
+ /**
2
+ * The shapes of the toolkit's message catalogs (see `toolkit-messages.ts`).
3
+ * Types only, kept apart from the catalogs so `messages-en.ts` /
4
+ * `messages-de.ts` can implement them without an import cycle.
5
+ */
6
+
7
+ /** Strings shared by several components. */
8
+ export interface CommonMessages {
9
+ /** Accessible name of the close button in dialogs and sheets. */
10
+ close: string
11
+ /** Retry action of error states. */
12
+ retry: string
13
+ /** Summary of a technical-details disclosure. */
14
+ details: string
15
+ /** Accessible name of a toast's close button. */
16
+ dismiss: string
17
+ /**
18
+ * @deprecated No longer rendered: the toast region is a plain live region
19
+ * with fixed attributes and takes no name. Kept so a catalog that sets it
20
+ * still type-checks.
21
+ */
22
+ notifications: string
23
+ /** Title of a widget's error state when its data could not be loaded. */
24
+ loadFailed: string
25
+ /** The line under {@link CommonMessages.loadFailed}: what you can do (a retry follows). */
26
+ loadFailedHint: string
27
+ }
28
+
29
+ /** Strings of the `McpAppView` chrome (placeholder, error state, toolbar, step errors). */
30
+ export interface ViewMessages {
31
+ /** Placeholder text while the view's data is on its way. */
32
+ loading: string
33
+ /** Shown instead of the placeholder when the host cancelled the rendering call. */
34
+ cancelled: string
35
+ /** Accessible name of the refresh icon button. */
36
+ refresh: string
37
+ /** Accessible name of the refresh icon button while a refresh runs. */
38
+ refreshing: string
39
+ /** Accessible name of the fullscreen icon button (inline view). */
40
+ enterFullscreen: string
41
+ /** Accessible name of the fullscreen icon button (fullscreen view). */
42
+ exitFullscreen: string
43
+ /** Label of the button that opens the view builder. */
44
+ build: string
45
+ /** Shown under the placeholder once loading takes longer than `slowHintAfterMs`. */
46
+ slowHint: string
47
+ /** Title of the error state when the view could not be loaded. */
48
+ errorTitle: string
49
+ /** One line under the error title: what you can do next (a retry button follows). */
50
+ errorHint: string
51
+ /**
52
+ * The line under an error title when no retry is offered (the originating
53
+ * tool is unknown, or the view cannot refresh): what you can do instead.
54
+ */
55
+ errorHintNoRetry: string
56
+ /** Retry button of the error state and of the step-error alert. */
57
+ retry: string
58
+ /**
59
+ * Title of the notice shown instead of the view when the tool ran, the chat
60
+ * did not pass its result to the view, and the view must not run it again
61
+ * on its own (the recovery policy forbids it). Nothing failed.
62
+ */
63
+ blockedTitle: string
64
+ /** The line under {@link ViewMessages.blockedTitle} when the notice offers to load the view. */
65
+ blockedHint: string
66
+ /**
67
+ * The line under {@link ViewMessages.blockedTitle} when the tool writes, so
68
+ * the view offers no button that would run it again: what you can do instead.
69
+ */
70
+ blockedHintNoRetry: string
71
+ /** Button of that notice: loads the view by running the (non-writing) tool again. */
72
+ blockedRetry: string
73
+ /** Summary of the error's technical-details disclosure. */
74
+ errorDetails: string
75
+ /** Title of the alert that lists the data steps that failed. */
76
+ stepErrorsTitle: string
77
+ /** The line under the step-error title when a retry is offered: what it does. */
78
+ stepErrorsHint: string
79
+ /** Toast title when a refresh failed: what happened, in one short sentence. */
80
+ refreshFailed: string
81
+ /** Toast line under {@link ViewMessages.refreshFailed}: what you see now and can do. */
82
+ refreshFailedHint: string
83
+ /** Toast title when the host rejected a display-mode change. */
84
+ fullscreenFailed: string
85
+ /** Toast line under {@link ViewMessages.fullscreenFailed}: what you can do. */
86
+ fullscreenFailedHint: string
87
+ /**
88
+ * The line under the toolbar title of a view that loaded its data again
89
+ * itself (the host did not pass the original result along, or the user
90
+ * retried or refreshed), with the time pre-formatted (`formatClockTime`, in
91
+ * the language of these words). It must carry its meaning in its own
92
+ * words: there is no tooltip, so touch and keyboard users read only this.
93
+ */
94
+ dataAsOf: (time: string) => string
95
+ }
96
+
97
+ /** Strings of `ListFooter`. */
98
+ export interface ListFooterMessages {
99
+ /** The honest count line, e.g. "Showing 8 of 42 tasks". Numbers arrive pre-formatted. */
100
+ showing: (params: { shown: string; total: string; noun: string }) => string
101
+ /** Plural noun used when the caller passes none. */
102
+ defaultNoun: string
103
+ loadMore: string
104
+ loadingMore: string
105
+ /** Status while a new first page is in flight over the rows on screen. */
106
+ updating: string
107
+ /**
108
+ * Status at zero rows, for screen readers only (the caller's empty state is
109
+ * what you see): a search that finds nothing is announced like any count.
110
+ */
111
+ noResults: string
112
+ /** Title when a new first page failed and the previous rows stay on screen. */
113
+ refreshFailed: string
114
+ /** The line under {@link ListFooterMessages.refreshFailed}: what you see and can do. */
115
+ refreshFailedHint: string
116
+ /** Title when loading the next page failed. */
117
+ loadMoreFailed: string
118
+ /** The line under {@link ListFooterMessages.loadMoreFailed}: what you see and can do. */
119
+ loadMoreFailedHint: string
120
+ }
121
+
122
+ /** Strings of `FilterBar`. */
123
+ export interface FilterBarMessages {
124
+ /** Placeholder of the search input. */
125
+ searchPlaceholder: string
126
+ /** Accessible name of the search input (a placeholder is no label). */
127
+ searchLabel: string
128
+ /** Accessible name of the chip group. */
129
+ chipsLabel: string
130
+ }
131
+
132
+ /** Strings of the widget renderer's fallbacks. */
133
+ export interface RendererMessages {
134
+ /** A layout cell names a widget id the bundle does not contain. */
135
+ widgetUnavailable: string
136
+ /** A widget threw while rendering. */
137
+ widgetCrashed: string
138
+ /** Builder canvas/preview: the cell has no data yet. */
139
+ noDataYet: string
140
+ }
141
+
142
+ /** Strings of the visual view builder (`LayoutBuilder`). */
143
+ export interface BuilderMessages {
144
+ title: string
145
+ builderBadge: string
146
+ previewBadge: string
147
+ catalogue: string
148
+ /** Toolbar button that opens the save dialog: saves the draft as a dashboard. */
149
+ save: string
150
+ /**
151
+ * @deprecated Since 2.8 the builder's commit button is Apply
152
+ * ({@link BuilderMessages.apply}). An override of `done`, in the builder's
153
+ * `labels` or a `LocaleProvider`'s `toolkitMessages`, still labels it unless
154
+ * the same override sets `apply`.
155
+ */
156
+ done: string
157
+ /** Primary action: show the edited view in place and leave the builder (saves nothing). */
158
+ apply: string
159
+ /** Tooltip of {@link BuilderMessages.apply}: what it does, and that it saves nothing. */
160
+ applyHint: string
161
+ /** Leave the builder without the edits: the view stays as it was before editing. */
162
+ discard: string
163
+ /** Tooltip of {@link BuilderMessages.discard}. */
164
+ discardHint: string
165
+ /**
166
+ * Tooltip of {@link BuilderMessages.discard} in a builder without a view to
167
+ * apply to (no `onExit`): Discard resets the draft in place.
168
+ */
169
+ discardHintStandalone: string
170
+ /** Tooltip of {@link BuilderMessages.save}: what a dashboard is for. */
171
+ saveHint: string
172
+ /**
173
+ * Marker next to the title while the draft has changes that would be lost:
174
+ * neither the view before editing nor a saved dashboard holds them.
175
+ */
176
+ unsavedChanges: string
177
+ /** Title of the confirmation before unsaved changes are discarded. */
178
+ discardDialogTitle: string
179
+ /** What discarding does to the view, when no saved dashboard holds the changes. */
180
+ discardDialogDescription: string
181
+ /** What discarding does to the view, when a saved dashboard holds the changes. */
182
+ discardDialogDescriptionSaved: string
183
+ /** Safe choice of the discard confirmation (it keeps the draft). */
184
+ keepEditing: string
185
+ /** Destructive choice of the discard confirmation. */
186
+ discardConfirm: string
187
+ /** Toggle that shows the technical parts: data sources, catalogue, ids. */
188
+ advanced: string
189
+ /** Tooltip of {@link BuilderMessages.advanced}: what it shows. */
190
+ advancedHint: string
191
+ /** Accessible name of a tab's rename button, with the tab's label. */
192
+ renameTabNamed: (label: string) => string
193
+ /** Accessible name of a tab's remove button, with the tab's label. */
194
+ removeTabNamed: (label: string) => string
195
+ /** Marks the row that receives the next element added from the list. */
196
+ rowTarget: string
197
+ /** Lead word of a step's output line ("provides …"), next to {@link BuilderMessages.catalogueNeedsKeys}. */
198
+ stepProvides: string
199
+ /** Accessible name of a key's value field, with the key name (or none yet). */
200
+ keyValueFor: (key: string) => string
201
+ viewLayoutTab: string
202
+ viewPipelineTab: string
203
+ viewPreviewTab: string
204
+ saveDialogTitle: string
205
+ /** What the save dialog does, and that Apply (not Save) changes the view. */
206
+ saveDialogDescription: string
207
+ /**
208
+ * {@link BuilderMessages.saveDialogDescription} in a builder without a view
209
+ * to apply to (no `onExit`): no Apply to point to.
210
+ */
211
+ saveDialogDescriptionStandalone: string
212
+ saveNameLabel: string
213
+ saveDescriptionLabel: string
214
+ saveConfirm: string
215
+ cancel: string
216
+ pipelineHeader: string
217
+ keysHeader: string
218
+ stepsHeader: string
219
+ keyName: string
220
+ keyValue: string
221
+ stepContextId: string
222
+ stepPickerLabel: string
223
+ addKey: string
224
+ addStep: string
225
+ emptyKeys: string
226
+ emptySteps: string
227
+ statusUpToDate: string
228
+ statusPending: string
229
+ statusRefreshing: string
230
+ paletteHeader: string
231
+ /** Status line of the palette while the first catalogue answer is on its way. */
232
+ paletteLoading: string
233
+ /** The palette has no element (the catalogue answered with none). */
234
+ paletteEmpty: string
235
+ canvasEmpty: string
236
+ canvasDropHint: string
237
+ addRow: string
238
+ addTab: string
239
+ removeRow: string
240
+ renameTab: string
241
+ removeTab: string
242
+ tabsLabel: string
243
+ catalogueDescription: string
244
+ catalogueKeys: string
245
+ catalogueSteps: string
246
+ catalogueUnreachable: string
247
+ catalogueUnreachableEmpty: string
248
+ catalogueProducedBy: string
249
+ catalogueConsumedBy: string
250
+ catalogueNeedsKeys: string
251
+ cataloguePickKey: string
252
+ catalogueAddProducingStep: string
253
+ catalogueLive: string
254
+ catalogueMissing: string
255
+ /** Title of the error state when the catalogue fetch fails (the raw reason goes under Details). */
256
+ catalogueError: string
257
+ /** What to do when the catalogue fetch fails (the state offers a retry). */
258
+ catalogueErrorHint: string
259
+ /** Heading for the pipeline-validation warning banner. */
260
+ validationWarning: string
261
+ /** Title of the save dialog's error state when a save fails (the raw reason goes under Details). */
262
+ saveError: string
263
+ /** What to do when a save fails (the dialog's Save button is the retry). */
264
+ saveErrorHint: string
265
+ /** Inline message when a tab rename is rejected (duplicate label). */
266
+ renameDuplicate: string
267
+ /** Toolbar stat: keys present in the live context. */
268
+ statsLive: string
269
+ /** Toolbar stat: widgets the current keys and steps can feed. */
270
+ statsReachable: string
271
+ /** Toolbar stat: widgets nothing can feed yet. */
272
+ statsUnreachable: string
273
+ /** Empty layout view: title. */
274
+ emptyHintTitle: string
275
+ /** Empty layout view: what to do. */
276
+ emptyHintBody: string
277
+ /** Empty layout view: button that switches to the data-sources tab. */
278
+ openDataSources: string
279
+ saveNamePlaceholder: string
280
+ saveDescriptionPlaceholder: string
281
+ /** Toast after a successful save. */
282
+ saved: (name: string) => string
283
+ /** Hint next to the tab strip. */
284
+ renameHint: string
285
+ /** Tooltip of a tab trigger. */
286
+ renameTitle: string
287
+ /** Note next to the data-sources header. */
288
+ autoApplies: string
289
+ noMoreKeys: string
290
+ /** Tooltip of the detected value type next to a key value. */
291
+ parsedType: string
292
+ /** Name of a detected value type (`valueTypeLabel` code: str, num, bool, arr, obj, null). */
293
+ valueType: (code: string) => string
294
+ removeKey: string
295
+ removeStep: string
296
+ noInputs: string
297
+ noOutputs: string
298
+ rowLabel: (index: number) => string
299
+ elementCount: (count: number) => string
300
+ moveRowUp: string
301
+ moveRowDown: string
302
+ columnSpan: string
303
+ configureElement: string
304
+ configureElementSet: (count: number) => string
305
+ removeElement: string
306
+ resizeElement: string
307
+ noKeysRegistered: string
308
+ noStepsRegistered: string
309
+ /** Prefix for "used by" lines that list steps. */
310
+ catalogueStepPrefix: string
311
+ /** Prefix for "used by" lines that list widgets. */
312
+ catalogueElementPrefix: string
313
+ }
314
+
315
+ /** Strings of the builder's per-cell props sheet. */
316
+ export interface PropsSheetMessages {
317
+ title: string
318
+ description: string
319
+ apply: string
320
+ cancel: string
321
+ reset: string
322
+ noProps: string
323
+ unsetOption: string
324
+ unsupportedType: (type: string) => string
325
+ }
326
+
327
+ /** One locale's complete toolkit catalog. */
328
+ export interface ToolkitMessages {
329
+ common: CommonMessages
330
+ view: ViewMessages
331
+ listFooter: ListFooterMessages
332
+ filterBar: FilterBarMessages
333
+ pills: { live: string }
334
+ renderer: RendererMessages
335
+ builder: BuilderMessages
336
+ propsSheet: PropsSheetMessages
337
+ }
@@ -0,0 +1,198 @@
1
+ import type { ToolkitMessages } from "./message-types.js"
2
+
3
+ /**
4
+ * German catalog. du-Ansprache, aktive Sätze, normale Groß- und
5
+ * Kleinschreibung, „…“ als Auslassung, kein Gedankenstrich als Verbinder.
6
+ * Fehlertexte sagen, was passiert ist und was du tun kannst. Guarded by
7
+ * `toolkit-messages.test.ts`.
8
+ */
9
+ export const de: ToolkitMessages = {
10
+ common: {
11
+ close: "Schließen",
12
+ retry: "Erneut versuchen",
13
+ details: "Details",
14
+ dismiss: "Hinweis schließen",
15
+ notifications: "Hinweise",
16
+ loadFailed: "Der Inhalt konnte nicht geladen werden",
17
+ loadFailedHint: "Versuch es noch mal. Klappt es wieder nicht, frag im Chat nach.",
18
+ },
19
+ view: {
20
+ loading: "Ansicht wird geladen…",
21
+ cancelled: "Abgebrochen. Frag im Chat noch mal nach dieser Ansicht.",
22
+ refresh: "Aktualisieren",
23
+ refreshing: "Wird aktualisiert…",
24
+ enterFullscreen: "Vollbild",
25
+ exitFullscreen: "Vollbild verlassen",
26
+ build: "Ansicht bearbeiten",
27
+ slowHint: "Das dauert länger als üblich. Wenn nichts passiert, frag im Chat noch mal nach.",
28
+ errorTitle: "Die Ansicht konnte nicht geladen werden",
29
+ errorHint: "Versuch es noch mal. Klappt es wieder nicht, frag im Chat nach.",
30
+ errorHintNoRetry: "Frag im Chat noch mal nach dieser Ansicht.",
31
+ retry: "Erneut versuchen",
32
+ blockedTitle: "Der Chat hat das Ergebnis nicht an die Ansicht weitergegeben",
33
+ blockedHint: "Lade die Ansicht selbst oder frag im Chat nach dem aktuellen Stand.",
34
+ blockedHintNoRetry:
35
+ "Die Aktion ist schon gelaufen, deshalb startet die Ansicht sie nicht noch mal. Frag im Chat nach dem aktuellen Stand.",
36
+ blockedRetry: "Ansicht laden",
37
+ errorDetails: "Details",
38
+ stepErrorsTitle: "Ein Teil der Daten konnte nicht geladen werden",
39
+ stepErrorsHint: "Versuch es noch mal, um die fehlenden Daten zu laden.",
40
+ refreshFailed: "Aktualisieren hat nicht geklappt.",
41
+ refreshFailedHint: "Du siehst den zuletzt geladenen Stand. Versuch es gleich noch mal.",
42
+ fullscreenFailed: "Die Darstellung ließ sich nicht umschalten.",
43
+ fullscreenFailedHint: "Die Ansicht bleibt, wie sie ist. Versuch es gleich noch mal.",
44
+ dataAsOf: (time) => `Neu geladen um ${time} Uhr`,
45
+ },
46
+ listFooter: {
47
+ showing: ({ shown, total, noun }) => `Zeigt ${shown} von ${total} ${noun}`.trimEnd(),
48
+ defaultNoun: "Zeilen",
49
+ loadMore: "Mehr laden",
50
+ loadingMore: "Wird geladen…",
51
+ updating: "Wird aktualisiert…",
52
+ noResults: "Keine Einträge",
53
+ refreshFailed: "Die Liste konnte nicht aktualisiert werden",
54
+ refreshFailedHint: "Du siehst das vorherige Ergebnis. Versuch es gleich noch mal.",
55
+ loadMoreFailed: "Weitere Einträge konnten nicht geladen werden",
56
+ loadMoreFailedHint: "Die Einträge oben sind aktuell. Versuch es gleich noch mal.",
57
+ },
58
+ filterBar: { searchPlaceholder: "Filtern…", searchLabel: "Filtern", chipsLabel: "Filter" },
59
+ pills: { live: "Live" },
60
+ renderer: {
61
+ widgetUnavailable: "Dieses Element ist in dieser Version nicht verfügbar.",
62
+ widgetCrashed: "Dieses Element konnte nicht angezeigt werden.",
63
+ noDataYet: "Noch keine Daten. Nach dem nächsten Aktualisieren sind sie da.",
64
+ },
65
+ builder: {
66
+ title: "Ansicht bearbeiten",
67
+ builderBadge: "Bearbeitung",
68
+ previewBadge: "Vorschau",
69
+ catalogue: "Katalog",
70
+ save: "Als Dashboard speichern",
71
+ done: "Fertig",
72
+ apply: "Übernehmen",
73
+ applyHint: "Zeigt deine Änderungen in dieser Ansicht und speichert nichts.",
74
+ discard: "Verwerfen",
75
+ discardHint: "Beendet die Bearbeitung. Die Ansicht bleibt, wie sie war.",
76
+ discardHintStandalone: "Setzt deine Änderungen zurück.",
77
+ saveHint: "Speichert das Layout als Dashboard, das du später wieder öffnen kannst.",
78
+ unsavedChanges: "Ungespeicherte Änderungen",
79
+ discardDialogTitle: "Änderungen verwerfen?",
80
+ discardDialogDescription:
81
+ "Deine Änderungen an dieser Ansicht gehen verloren. Die Ansicht bleibt, wie sie vor dem Bearbeiten war.",
82
+ discardDialogDescriptionSaved:
83
+ "Die Ansicht springt auf den Stand vor dem Bearbeiten zurück. Dein gespeichertes Dashboard behält deine Änderungen.",
84
+ keepEditing: "Weiter bearbeiten",
85
+ discardConfirm: "Änderungen verwerfen",
86
+ advanced: "Erweitert",
87
+ advancedHint: "Zeigt Datenquellen, Katalog und technische IDs.",
88
+ renameTabNamed: (label) => `Tab „${label}“ umbenennen`,
89
+ removeTabNamed: (label) => `Tab „${label}“ entfernen`,
90
+ rowTarget: "Neue Elemente landen hier",
91
+ stepProvides: "liefert",
92
+ keyValueFor: (key) => (key ? `Wert von ${key}` : "Wert"),
93
+ viewLayoutTab: "Layout",
94
+ viewPipelineTab: "Datenquellen",
95
+ viewPreviewTab: "Vorschau",
96
+ saveDialogTitle: "Als Dashboard speichern",
97
+ saveDialogDescription:
98
+ "Speichert das Layout mit seinen Datenquellen als Dashboard, das du später wieder öffnen kannst. Diese Ansicht änderst du mit „Übernehmen“.",
99
+ saveDialogDescriptionStandalone:
100
+ "Speichert das Layout mit seinen Datenquellen als Dashboard, das du später wieder öffnen kannst.",
101
+ saveNameLabel: "Name",
102
+ saveDescriptionLabel: "Beschreibung",
103
+ saveConfirm: "Dashboard speichern",
104
+ cancel: "Abbrechen",
105
+ pipelineHeader: "Datenquellen",
106
+ keysHeader: "Schlüssel",
107
+ stepsHeader: "Schritte",
108
+ keyName: "Schlüssel",
109
+ keyValue: 'Wert, "Text", true, {…}',
110
+ stepContextId: "Schritt-ID",
111
+ stepPickerLabel: "Schritt wählen",
112
+ addKey: "Schlüssel hinzufügen",
113
+ addStep: "Schritt hinzufügen",
114
+ emptyKeys: "Noch keine Schlüssel.",
115
+ emptySteps: "Noch keine Schritte.",
116
+ statusUpToDate: "Aktuell",
117
+ statusPending: "Wird gleich aktualisiert…",
118
+ statusRefreshing: "Wird aktualisiert…",
119
+ paletteHeader: "Elemente",
120
+ paletteLoading: "Elemente werden geladen…",
121
+ paletteEmpty: "Noch keine Elemente verfügbar. Elemente erscheinen, sobald ihre Daten da sind.",
122
+ canvasEmpty: "Zieh ein Element hierher oder klick eins in der Liste an.",
123
+ canvasDropHint: "Zum Hinzufügen loslassen",
124
+ addRow: "Zeile hinzufügen",
125
+ addTab: "Tab hinzufügen",
126
+ removeRow: "Zeile entfernen",
127
+ renameTab: "Tab umbenennen",
128
+ removeTab: "Tab entfernen",
129
+ tabsLabel: "Tabs",
130
+ catalogueDescription:
131
+ "Alle Schlüssel und Elemente, die der Server kennt, ob gerade verfügbar oder nicht.",
132
+ catalogueKeys: "Schlüssel",
133
+ catalogueSteps: "Schritte",
134
+ catalogueUnreachable: "Nicht verfügbare Elemente",
135
+ catalogueUnreachableEmpty: "Alle Elemente sind verfügbar.",
136
+ catalogueProducedBy: "erzeugt von",
137
+ catalogueConsumedBy: "genutzt von",
138
+ catalogueNeedsKeys: "braucht",
139
+ cataloguePickKey: "Als Schlüssel hinzufügen",
140
+ catalogueAddProducingStep: "Erzeugenden Schritt hinzufügen",
141
+ catalogueLive: "vorhanden",
142
+ catalogueMissing: "fehlt",
143
+ catalogueError: "Der Katalog ließ sich nicht aktualisieren",
144
+ catalogueErrorHint:
145
+ "Die angezeigten Elemente und Datenquellen sind vielleicht nicht aktuell. Versuch es noch mal. Klappt es wieder nicht, frag im Chat nach.",
146
+ validationWarning: "So lässt sich die Ansicht nicht darstellen",
147
+ saveError: "Das Dashboard ließ sich nicht speichern",
148
+ saveErrorHint:
149
+ "Deine Änderungen sind noch da. Versuch gleich noch mal zu speichern. Klappt es wieder nicht, frag im Chat nach.",
150
+ renameDuplicate: "Einen Tab mit diesem Namen gibt es schon.",
151
+ statsLive: "vorhanden",
152
+ statsReachable: "verfügbar",
153
+ statsUnreachable: "nicht verfügbar",
154
+ emptyHintTitle: "Noch keine Elemente verfügbar.",
155
+ emptyHintBody:
156
+ "Füg unter Datenquellen einen Schlüssel oder einen Schritt hinzu. Elemente erscheinen, sobald ihre Daten da sind.",
157
+ openDataSources: "Datenquellen öffnen",
158
+ saveNamePlaceholder: "Name des Dashboards",
159
+ saveDescriptionPlaceholder: "Optional",
160
+ saved: (name) => `Dashboard „${name}“ gespeichert.`,
161
+ renameHint: "Einen Tab benennst du mit F2, per Doppelklick oder über den Stift um.",
162
+ renameTitle: "F2 oder Doppelklick zum Umbenennen",
163
+ autoApplies: "Änderungen erscheinen sofort in der Vorschau",
164
+ noMoreKeys: "Keine weiteren Schlüssel verfügbar.",
165
+ parsedType: "Erkannter Typ",
166
+ valueType: (code) =>
167
+ ({ str: "Text", num: "Zahl", bool: "Ja/Nein", arr: "Liste", obj: "Objekt", null: "leer" })[
168
+ code
169
+ ] ?? code,
170
+ removeKey: "Schlüssel entfernen",
171
+ removeStep: "Schritt entfernen",
172
+ noInputs: "keine Eingaben",
173
+ noOutputs: "keine Ausgaben",
174
+ rowLabel: (index) => `Zeile ${index}`,
175
+ elementCount: (count) => (count === 1 ? "1 Element" : `${count} Elemente`),
176
+ moveRowUp: "Zeile nach oben schieben",
177
+ moveRowDown: "Zeile nach unten schieben",
178
+ columnSpan: "Spaltenbreite",
179
+ configureElement: "Element konfigurieren",
180
+ configureElementSet: (count) => `Element konfigurieren (${count} gesetzt)`,
181
+ removeElement: "Element entfernen",
182
+ resizeElement: "Elementbreite ändern",
183
+ noKeysRegistered: "Keine Schlüssel registriert.",
184
+ noStepsRegistered: "Keine Schritte registriert.",
185
+ catalogueStepPrefix: "Schritt",
186
+ catalogueElementPrefix: "Element",
187
+ },
188
+ propsSheet: {
189
+ title: "Element konfigurieren",
190
+ description: "Einstellungen für dieses Element.",
191
+ apply: "Übernehmen",
192
+ cancel: "Abbrechen",
193
+ reset: "Zurücksetzen",
194
+ noProps: "Dieses Element hat keine Einstellungen.",
195
+ unsetOption: "Nicht gesetzt",
196
+ unsupportedType: (type) => `Diesen Feldtyp (${type}) kannst du hier nicht bearbeiten.`,
197
+ },
198
+ }