@seed-ship/mcp-ui-solid 6.14.0 → 6.15.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.
- package/CHANGELOG.md +19 -0
- package/dist/components/UIResourceRenderer.cjs +100 -75
- package/dist/components/UIResourceRenderer.cjs.map +1 -1
- package/dist/components/UIResourceRenderer.d.ts.map +1 -1
- package/dist/components/UIResourceRenderer.js +100 -75
- package/dist/components/UIResourceRenderer.js.map +1 -1
- package/package.json +1 -1
- package/src/components/UIResourceRenderer.tsx +35 -0
- package/src/components/UnsupportedComponent.test.tsx +77 -0
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,25 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [6.15.0] - 2026-05-31
|
|
9
|
+
|
|
10
|
+
Unknown component types never render a silent blank (audit P1.6).
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- An unrecognized component `type` has no renderer branch, so it previously
|
|
15
|
+
rendered **nothing** — and under `errorMode: 'silent'` it passed the
|
|
16
|
+
validation gate without even an error card, producing a fully invisible
|
|
17
|
+
failure. The validation gate now routes any `UNKNOWN_COMPONENT_TYPE` to a
|
|
18
|
+
visible **"Unsupported component type: X"** notice **regardless of
|
|
19
|
+
`errorMode`**.
|
|
20
|
+
- The privacy-safe telemetry signal already emitted by the gate
|
|
21
|
+
(`validation:failed` with `firstErrorCode: 'UNKNOWN_COMPONENT_TYPE'`) lets
|
|
22
|
+
hosts detect drift; the fallback notice itself stays purely presentational.
|
|
23
|
+
|
|
24
|
+
Behavior change only for previously-invisible unknown types; valid components
|
|
25
|
+
are unaffected.
|
|
26
|
+
|
|
8
27
|
## [6.14.0] - 2026-05-31
|
|
9
28
|
|
|
10
29
|
Make the external quickchart.io chart fallback an explicit host opt-in
|
|
@@ -30,7 +30,7 @@ const PortalDropdownMenu = require("./PortalDropdownMenu.cjs");
|
|
|
30
30
|
const RenderContext = require("./RenderContext.cjs");
|
|
31
31
|
const useAction = require("../hooks/useAction.cjs");
|
|
32
32
|
const marked_esm = require("../node_modules/.pnpm/marked@16.4.2/node_modules/marked/lib/marked.esm.cjs");
|
|
33
|
-
var _tmpl$ = /* @__PURE__ */ web.template(`<svg class="w-3 h-3 text-gray-500 dark:text-gray-400"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z">`), _tmpl$2 = /* @__PURE__ */ web.template(`<button>`), _tmpl$3 = /* @__PURE__ */ web.template(`<svg class="w-3 h-3 text-green-500"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M5 13l4 4L19 7">`), _tmpl$4 = /* @__PURE__ */ web.template(`<div class="p-4 bg-white dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700"><p class="text-red-500 dark:text-red-400 text-sm">Invalid chart data: missing data.datasets`), _tmpl$5 = /* @__PURE__ */ web.template(`<div class=p-3>`), _tmpl$6 = /* @__PURE__ */ web.template(`<div class="absolute inset-0 flex items-center justify-center"><div class="animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600">`), _tmpl$7 = /* @__PURE__ */ web.template(`<div class="absolute inset-0 flex items-center justify-center p-4"><div class=text-center><p class="text-red-600 dark:text-red-400 text-sm font-medium">Chart Error</p><p class="text-gray-600 dark:text-gray-400 text-xs mt-1">`), _tmpl$8 = /* @__PURE__ */ web.template(`<h3 class="text-sm font-semibold text-gray-900 dark:text-white mb-3">`), _tmpl$9 = /* @__PURE__ */ web.template(`<div class="w-full h-full p-4"><!$><!/><div class="w-full h-full"role=img><img class="w-full h-auto max-h-[300px] object-contain">`), _tmpl$0 = /* @__PURE__ */ web.template(`<div class="relative w-full h-full min-h-[300px] bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden"><!$><!/><!$><!/><!$><!/><!$><!/>`), _tmpl$1 = /* @__PURE__ */ web.template(`<tbody class="bg-white dark:bg-gray-800 divide-y divide-gray-200 dark:divide-gray-700">`), _tmpl$10 = /* @__PURE__ */ web.template(`<tr>`), _tmpl$11 = /* @__PURE__ */ web.template(`<td class="px-6 py-4 text-sm text-gray-700 dark:text-gray-200 whitespace-normal break-words leading-relaxed first:pl-6 last:pr-6"><div>`), _tmpl$12 = /* @__PURE__ */ web.template(`<tbody class="bg-white dark:bg-gray-800 relative">`), _tmpl$13 = /* @__PURE__ */ web.template(`<button class="w-full text-left px-3 py-1.5 hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300">Copy TSV`), _tmpl$14 = /* @__PURE__ */ web.template(`<button class="w-full text-left px-3 py-1.5 hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300">Download CSV`), _tmpl$15 = /* @__PURE__ */ web.template(`<button class="w-full text-left px-3 py-1.5 hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300">Download JSON`), _tmpl$16 = /* @__PURE__ */ web.template(`<div class="absolute right-10 top-2 z-10"><button class="opacity-60 hover:opacity-100 px-2 py-1 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-full hover:bg-gray-100 dark:hover:bg-gray-700 transition-all shadow-sm"title="Export table"aria-label="Export table"aria-haspopup=menu><svg class="w-3 h-3 text-gray-500 dark:text-gray-400"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"></path></svg></button><!$><!/>`), _tmpl$17 = /* @__PURE__ */ web.template(`<span class="ml-2 text-xs font-normal text-gray-400">(virtualized: <!$><!/> rows)`), _tmpl$18 = /* @__PURE__ */ web.template(`<h3 class="text-sm font-semibold text-gray-900 dark:text-white mb-3 flex-shrink-0"><!$><!/><!$><!/>`), _tmpl$19 = /* @__PURE__ */ web.template(`<button type=button class="absolute right-2 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 text-sm"aria-label="Clear search">×`), _tmpl$20 = /* @__PURE__ */ web.template(`<div class="relative mb-3"><span class="absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 pointer-events-none text-sm">🔍</span><input type=text class="w-full max-w-xs min-w-[200px] pl-8 pr-8 py-1.5 text-sm border border-gray-200 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-900 dark:text-white placeholder-gray-400 focus:border-blue-400 focus:ring-1 focus:ring-blue-400 outline-none"><!$><!/>`), _tmpl$21 = /* @__PURE__ */ web.template(`<p class="text-xs text-gray-500 dark:text-gray-400 mb-2"><!$><!/> result<!$><!/> on <!$><!/>`), _tmpl$22 = /* @__PURE__ */ web.template(`<div class="mt-3 flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"><span>Showing <!$><!/> - <!$><!/> of <!$><!/>`), _tmpl$23 = /* @__PURE__ */ web.template(`<select class="ml-2 px-1 py-0.5 text-xs border border-gray-200 dark:border-gray-600 rounded bg-white dark:bg-gray-700 text-gray-700 dark:text-gray-300">`), _tmpl$24 = /* @__PURE__ */ web.template(`<span class=text-gray-400>/ page`), _tmpl$25 = /* @__PURE__ */ web.template(`<div class="mt-3 flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"><span><!$><!/>–<!$><!/> / <!$><!/></span><div class="flex items-center gap-2"><button class="px-2 py-1 rounded hover:bg-gray-100 dark:hover:bg-gray-700 disabled:opacity-40 disabled:cursor-not-allowed transition-colors">◀</button><span><!$><!/> / <!$><!/></span><button class="px-2 py-1 rounded hover:bg-gray-100 dark:hover:bg-gray-700 disabled:opacity-40 disabled:cursor-not-allowed transition-colors">▶</button><!$><!/>`), _tmpl$26 = /* @__PURE__ */ web.template(`<div><!$><!/><div><!$><!/><!$><!/><div role=region tabindex=0><table class="min-w-full divide-y divide-gray-200 dark:divide-gray-700 border-separate border-spacing-0"><thead class="bg-gray-100 dark:bg-gray-900 sticky top-0 z-10"><tr></tr></thead><!$><!/></table></div><!$><!/><!$><!/>`), _tmpl$27 = /* @__PURE__ */ web.template(`<th scope=col class="px-6 py-3 text-left text-xs font-semibold text-gray-500 dark:text-gray-400 uppercase tracking-wider border-b border-gray-200 dark:border-gray-700 first:pl-6 last:pr-6 bg-gray-100 dark:bg-gray-900 cursor-pointer select-none hover:bg-gray-200 dark:hover:bg-gray-800 transition-colors"><span class="inline-flex items-center gap-1"><!$><!/><span class="text-[10px] leading-none">`), _tmpl$28 = /* @__PURE__ */ web.template(`<option>`), _tmpl$29 = /* @__PURE__ */ web.template(`<span class="ml-2 text-sm font-medium text-gray-500 dark:text-gray-400">`), _tmpl$30 = /* @__PURE__ */ web.template(`<div class="mt-3 flex items-center"><span><!$><!/> <!$><!/>%`), _tmpl$31 = /* @__PURE__ */ web.template(`<p class="mt-2 text-xs text-gray-500 dark:text-gray-400">`), _tmpl$32 = /* @__PURE__ */ web.template(`<div class="relative w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 p-4 group"><!$><!/><div class="flex flex-col h-full justify-between"><div><p class="text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wide"></p><div class="mt-2 flex items-baseline"><p class="text-2xl font-semibold text-gray-900 dark:text-white"></p><!$><!/></div></div><!$><!/><!$><!/>`), _tmpl$33 = /* @__PURE__ */ web.template(`<div class="relative w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 p-4 group"><!$><!/><div>`), _tmpl$34 = /* @__PURE__ */ web.template(`<div class="w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden flex flex-col"><div class="flex-1 flex items-center justify-center p-4 bg-gray-50 dark:bg-gray-900 min-h-[200px]"><a target=_blank rel="noopener noreferrer"class=cursor-zoom-in><img class="max-w-full max-h-[400px] object-contain rounded shadow-sm hover:opacity-90 transition-opacity"loading=lazy></a></div><div class="p-3 border-t border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800"><p class="text-sm text-gray-600 dark:text-gray-400 text-center italic">`, true, false, false), _tmpl$35 = /* @__PURE__ */ web.template(`<div class="px-4 py-2 border-b border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-900"><h3 class="text-sm font-semibold text-gray-900 dark:text-white">`), _tmpl$36 = /* @__PURE__ */ web.template(`<div class="w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden flex flex-col"><!$><!/><iframe class="w-full border-0 flex-1"loading=lazy>`, true, false, false), _tmpl$37 = /* @__PURE__ */ web.template(`<figcaption class="p-3 border-t border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800"><p class="text-sm text-gray-600 dark:text-gray-400 text-center">`), _tmpl$38 = /* @__PURE__ */ web.template(`<figure><div class="flex-1 flex items-center justify-center p-4 bg-gray-50 dark:bg-gray-900 min-h-[200px]"><a target=_blank rel="noopener noreferrer"class="cursor-zoom-in focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 rounded"><img class="max-w-full max-h-[500px] object-contain rounded shadow-sm hover:opacity-95 transition-opacity"loading=lazy></a></div><!$><!/>`, true, false, false), _tmpl$39 = /* @__PURE__ */ web.template(`<p class="text-xs text-gray-500 dark:text-gray-400 truncate">`), _tmpl$40 = /* @__PURE__ */ web.template(`<a target=_blank rel="noopener noreferrer"><div class="p-2 bg-blue-50 dark:bg-blue-900/30 rounded-full text-blue-600 dark:text-blue-400 group-hover:bg-blue-100 dark:group-hover:bg-blue-900/50 shrink-0 transition-colors"aria-hidden=true><svg xmlns=http://www.w3.org/2000/svg class="w-5 h-5"viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg></div><div class="flex-1 min-w-0"><h4 class="text-sm font-medium text-gray-900 dark:text-white truncate group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors"></h4><!$><!/></div><svg xmlns=http://www.w3.org/2000/svg class="w-4 h-4 text-gray-400 group-hover:text-gray-600 dark:group-hover:text-gray-300 shrink-0 transition-colors"viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round aria-hidden=true><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1=10 y1=14 x2=21 y2=3>`), _tmpl$41 = /* @__PURE__ */ web.template(`<div class="inline-flex items-center gap-1.5 px-2 py-1 rounded-md bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 text-xs text-yellow-800 dark:text-yellow-200"role=alert aria-label="Component validation warning"><svg xmlns=http://www.w3.org/2000/svg class="w-3.5 h-3.5"viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round aria-hidden=true><path d="M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1=12 y1=9 x2=12 y2=13></line><line x1=12 y1=17 x2=12.01 y2=17></line></svg><span>Invalid <!$><!/>`), _tmpl$42 = /* @__PURE__ */ web.template(`<div class="w-full h-full bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-lg p-4"><p class="text-sm font-medium text-red-900 dark:text-red-100">Validation Error</p><p class="text-xs text-red-700 dark:text-red-300 mt-1">`), _tmpl$43 = /* @__PURE__ */ web.template(`<span aria-hidden=true>`), _tmpl$44 = /* @__PURE__ */ web.template(`<a rel="noopener noreferrer"><!$><!/><!$><!/>`), _tmpl$45 = /* @__PURE__ */ web.template(`<span class="animate-spin h-4 w-4 border-2 border-current border-t-transparent rounded-full"aria-hidden=true>`), _tmpl$46 = /* @__PURE__ */ web.template(`<button type=button><!$><!/><!$><!/><!$><!/>`), _tmpl$47 = /* @__PURE__ */ web.template(`<p class="text-xs text-red-600 dark:text-red-400 mt-1">Type: <!$><!/>`), _tmpl$48 = /* @__PURE__ */ web.template(`<div class=mt-3><p class="text-xs font-medium text-red-700 dark:text-red-300">Suggestions:</p><ul class="mt-1 text-xs text-red-600 dark:text-red-400 list-disc list-inside">`), _tmpl$49 = /* @__PURE__ */ web.template(`<p class="text-xs text-red-500 dark:text-red-500 mt-2">`), _tmpl$50 = /* @__PURE__ */ web.template(`<div class="relative w-full bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-lg p-4 group"><!$><!/><div class="flex items-start gap-3"><div class="p-2 bg-red-100 dark:bg-red-900/40 rounded-full shrink-0"><svg class="w-5 h-5 text-red-600 dark:text-red-400"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"></path></svg></div><div class="flex-1 min-w-0"><h4 class="text-sm font-semibold text-red-800 dark:text-red-200">Tool Error: <!$><!/></h4><p class="text-sm text-red-700 dark:text-red-300 mt-1"></p><!$><!/><!$><!/><!$><!/>`), _tmpl$51 = /* @__PURE__ */ web.template(`<li>`), _tmpl$52 = /* @__PURE__ */ web.template(`<div class="px-4 py-2 border-b border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-900"><h3 class="text-sm font-semibold text-gray-900 dark:text-white capitalize">`), _tmpl$53 = /* @__PURE__ */ web.template(`<div class="w-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden"><!$><!/><div class="p-4 prose prose-sm dark:prose-invert max-w-none">`), _tmpl$54 = /* @__PURE__ */ web.template(`<div><div class="grid gap-4"></div><!$><!/>`), _tmpl$55 = /* @__PURE__ */ web.template(`<div>`);
|
|
33
|
+
var _tmpl$ = /* @__PURE__ */ web.template(`<svg class="w-3 h-3 text-gray-500 dark:text-gray-400"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z">`), _tmpl$2 = /* @__PURE__ */ web.template(`<button>`), _tmpl$3 = /* @__PURE__ */ web.template(`<svg class="w-3 h-3 text-green-500"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M5 13l4 4L19 7">`), _tmpl$4 = /* @__PURE__ */ web.template(`<div class="p-4 bg-white dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700"><p class="text-red-500 dark:text-red-400 text-sm">Invalid chart data: missing data.datasets`), _tmpl$5 = /* @__PURE__ */ web.template(`<div class=p-3>`), _tmpl$6 = /* @__PURE__ */ web.template(`<div class="absolute inset-0 flex items-center justify-center"><div class="animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600">`), _tmpl$7 = /* @__PURE__ */ web.template(`<div class="absolute inset-0 flex items-center justify-center p-4"><div class=text-center><p class="text-red-600 dark:text-red-400 text-sm font-medium">Chart Error</p><p class="text-gray-600 dark:text-gray-400 text-xs mt-1">`), _tmpl$8 = /* @__PURE__ */ web.template(`<h3 class="text-sm font-semibold text-gray-900 dark:text-white mb-3">`), _tmpl$9 = /* @__PURE__ */ web.template(`<div class="w-full h-full p-4"><!$><!/><div class="w-full h-full"role=img><img class="w-full h-auto max-h-[300px] object-contain">`), _tmpl$0 = /* @__PURE__ */ web.template(`<div class="relative w-full h-full min-h-[300px] bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden"><!$><!/><!$><!/><!$><!/><!$><!/>`), _tmpl$1 = /* @__PURE__ */ web.template(`<tbody class="bg-white dark:bg-gray-800 divide-y divide-gray-200 dark:divide-gray-700">`), _tmpl$10 = /* @__PURE__ */ web.template(`<tr>`), _tmpl$11 = /* @__PURE__ */ web.template(`<td class="px-6 py-4 text-sm text-gray-700 dark:text-gray-200 whitespace-normal break-words leading-relaxed first:pl-6 last:pr-6"><div>`), _tmpl$12 = /* @__PURE__ */ web.template(`<tbody class="bg-white dark:bg-gray-800 relative">`), _tmpl$13 = /* @__PURE__ */ web.template(`<button class="w-full text-left px-3 py-1.5 hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300">Copy TSV`), _tmpl$14 = /* @__PURE__ */ web.template(`<button class="w-full text-left px-3 py-1.5 hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300">Download CSV`), _tmpl$15 = /* @__PURE__ */ web.template(`<button class="w-full text-left px-3 py-1.5 hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300">Download JSON`), _tmpl$16 = /* @__PURE__ */ web.template(`<div class="absolute right-10 top-2 z-10"><button class="opacity-60 hover:opacity-100 px-2 py-1 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-full hover:bg-gray-100 dark:hover:bg-gray-700 transition-all shadow-sm"title="Export table"aria-label="Export table"aria-haspopup=menu><svg class="w-3 h-3 text-gray-500 dark:text-gray-400"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"></path></svg></button><!$><!/>`), _tmpl$17 = /* @__PURE__ */ web.template(`<span class="ml-2 text-xs font-normal text-gray-400">(virtualized: <!$><!/> rows)`), _tmpl$18 = /* @__PURE__ */ web.template(`<h3 class="text-sm font-semibold text-gray-900 dark:text-white mb-3 flex-shrink-0"><!$><!/><!$><!/>`), _tmpl$19 = /* @__PURE__ */ web.template(`<button type=button class="absolute right-2 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 text-sm"aria-label="Clear search">×`), _tmpl$20 = /* @__PURE__ */ web.template(`<div class="relative mb-3"><span class="absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 pointer-events-none text-sm">🔍</span><input type=text class="w-full max-w-xs min-w-[200px] pl-8 pr-8 py-1.5 text-sm border border-gray-200 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-900 dark:text-white placeholder-gray-400 focus:border-blue-400 focus:ring-1 focus:ring-blue-400 outline-none"><!$><!/>`), _tmpl$21 = /* @__PURE__ */ web.template(`<p class="text-xs text-gray-500 dark:text-gray-400 mb-2"><!$><!/> result<!$><!/> on <!$><!/>`), _tmpl$22 = /* @__PURE__ */ web.template(`<div class="mt-3 flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"><span>Showing <!$><!/> - <!$><!/> of <!$><!/>`), _tmpl$23 = /* @__PURE__ */ web.template(`<select class="ml-2 px-1 py-0.5 text-xs border border-gray-200 dark:border-gray-600 rounded bg-white dark:bg-gray-700 text-gray-700 dark:text-gray-300">`), _tmpl$24 = /* @__PURE__ */ web.template(`<span class=text-gray-400>/ page`), _tmpl$25 = /* @__PURE__ */ web.template(`<div class="mt-3 flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"><span><!$><!/>–<!$><!/> / <!$><!/></span><div class="flex items-center gap-2"><button class="px-2 py-1 rounded hover:bg-gray-100 dark:hover:bg-gray-700 disabled:opacity-40 disabled:cursor-not-allowed transition-colors">◀</button><span><!$><!/> / <!$><!/></span><button class="px-2 py-1 rounded hover:bg-gray-100 dark:hover:bg-gray-700 disabled:opacity-40 disabled:cursor-not-allowed transition-colors">▶</button><!$><!/>`), _tmpl$26 = /* @__PURE__ */ web.template(`<div><!$><!/><div><!$><!/><!$><!/><div role=region tabindex=0><table class="min-w-full divide-y divide-gray-200 dark:divide-gray-700 border-separate border-spacing-0"><thead class="bg-gray-100 dark:bg-gray-900 sticky top-0 z-10"><tr></tr></thead><!$><!/></table></div><!$><!/><!$><!/>`), _tmpl$27 = /* @__PURE__ */ web.template(`<th scope=col class="px-6 py-3 text-left text-xs font-semibold text-gray-500 dark:text-gray-400 uppercase tracking-wider border-b border-gray-200 dark:border-gray-700 first:pl-6 last:pr-6 bg-gray-100 dark:bg-gray-900 cursor-pointer select-none hover:bg-gray-200 dark:hover:bg-gray-800 transition-colors"><span class="inline-flex items-center gap-1"><!$><!/><span class="text-[10px] leading-none">`), _tmpl$28 = /* @__PURE__ */ web.template(`<option>`), _tmpl$29 = /* @__PURE__ */ web.template(`<span class="ml-2 text-sm font-medium text-gray-500 dark:text-gray-400">`), _tmpl$30 = /* @__PURE__ */ web.template(`<div class="mt-3 flex items-center"><span><!$><!/> <!$><!/>%`), _tmpl$31 = /* @__PURE__ */ web.template(`<p class="mt-2 text-xs text-gray-500 dark:text-gray-400">`), _tmpl$32 = /* @__PURE__ */ web.template(`<div class="relative w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 p-4 group"><!$><!/><div class="flex flex-col h-full justify-between"><div><p class="text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wide"></p><div class="mt-2 flex items-baseline"><p class="text-2xl font-semibold text-gray-900 dark:text-white"></p><!$><!/></div></div><!$><!/><!$><!/>`), _tmpl$33 = /* @__PURE__ */ web.template(`<div class="relative w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 p-4 group"><!$><!/><div>`), _tmpl$34 = /* @__PURE__ */ web.template(`<div class="w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden flex flex-col"><div class="flex-1 flex items-center justify-center p-4 bg-gray-50 dark:bg-gray-900 min-h-[200px]"><a target=_blank rel="noopener noreferrer"class=cursor-zoom-in><img class="max-w-full max-h-[400px] object-contain rounded shadow-sm hover:opacity-90 transition-opacity"loading=lazy></a></div><div class="p-3 border-t border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800"><p class="text-sm text-gray-600 dark:text-gray-400 text-center italic">`, true, false, false), _tmpl$35 = /* @__PURE__ */ web.template(`<div class="px-4 py-2 border-b border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-900"><h3 class="text-sm font-semibold text-gray-900 dark:text-white">`), _tmpl$36 = /* @__PURE__ */ web.template(`<div class="w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden flex flex-col"><!$><!/><iframe class="w-full border-0 flex-1"loading=lazy>`, true, false, false), _tmpl$37 = /* @__PURE__ */ web.template(`<figcaption class="p-3 border-t border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800"><p class="text-sm text-gray-600 dark:text-gray-400 text-center">`), _tmpl$38 = /* @__PURE__ */ web.template(`<figure><div class="flex-1 flex items-center justify-center p-4 bg-gray-50 dark:bg-gray-900 min-h-[200px]"><a target=_blank rel="noopener noreferrer"class="cursor-zoom-in focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 rounded"><img class="max-w-full max-h-[500px] object-contain rounded shadow-sm hover:opacity-95 transition-opacity"loading=lazy></a></div><!$><!/>`, true, false, false), _tmpl$39 = /* @__PURE__ */ web.template(`<p class="text-xs text-gray-500 dark:text-gray-400 truncate">`), _tmpl$40 = /* @__PURE__ */ web.template(`<a target=_blank rel="noopener noreferrer"><div class="p-2 bg-blue-50 dark:bg-blue-900/30 rounded-full text-blue-600 dark:text-blue-400 group-hover:bg-blue-100 dark:group-hover:bg-blue-900/50 shrink-0 transition-colors"aria-hidden=true><svg xmlns=http://www.w3.org/2000/svg class="w-5 h-5"viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg></div><div class="flex-1 min-w-0"><h4 class="text-sm font-medium text-gray-900 dark:text-white truncate group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors"></h4><!$><!/></div><svg xmlns=http://www.w3.org/2000/svg class="w-4 h-4 text-gray-400 group-hover:text-gray-600 dark:group-hover:text-gray-300 shrink-0 transition-colors"viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round aria-hidden=true><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1=10 y1=14 x2=21 y2=3>`), _tmpl$41 = /* @__PURE__ */ web.template(`<div class="inline-flex items-center gap-1.5 px-2 py-1 rounded-md bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 text-xs text-yellow-800 dark:text-yellow-200"role=alert aria-label="Component validation warning"><svg xmlns=http://www.w3.org/2000/svg class="w-3.5 h-3.5"viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round aria-hidden=true><path d="M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1=12 y1=9 x2=12 y2=13></line><line x1=12 y1=17 x2=12.01 y2=17></line></svg><span>Invalid <!$><!/>`), _tmpl$42 = /* @__PURE__ */ web.template(`<div class="w-full h-full bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-lg p-4"><p class="text-sm font-medium text-red-900 dark:text-red-100">Validation Error</p><p class="text-xs text-red-700 dark:text-red-300 mt-1">`), _tmpl$43 = /* @__PURE__ */ web.template(`<div role=alert class="w-full rounded-lg border border-amber-300 bg-amber-50 px-3 py-2 text-sm text-amber-800 dark:border-amber-700/50 dark:bg-amber-900/20 dark:text-amber-200">Unsupported component type: <code class=font-mono>`), _tmpl$44 = /* @__PURE__ */ web.template(`<span aria-hidden=true>`), _tmpl$45 = /* @__PURE__ */ web.template(`<a rel="noopener noreferrer"><!$><!/><!$><!/>`), _tmpl$46 = /* @__PURE__ */ web.template(`<span class="animate-spin h-4 w-4 border-2 border-current border-t-transparent rounded-full"aria-hidden=true>`), _tmpl$47 = /* @__PURE__ */ web.template(`<button type=button><!$><!/><!$><!/><!$><!/>`), _tmpl$48 = /* @__PURE__ */ web.template(`<p class="text-xs text-red-600 dark:text-red-400 mt-1">Type: <!$><!/>`), _tmpl$49 = /* @__PURE__ */ web.template(`<div class=mt-3><p class="text-xs font-medium text-red-700 dark:text-red-300">Suggestions:</p><ul class="mt-1 text-xs text-red-600 dark:text-red-400 list-disc list-inside">`), _tmpl$50 = /* @__PURE__ */ web.template(`<p class="text-xs text-red-500 dark:text-red-500 mt-2">`), _tmpl$51 = /* @__PURE__ */ web.template(`<div class="relative w-full bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-lg p-4 group"><!$><!/><div class="flex items-start gap-3"><div class="p-2 bg-red-100 dark:bg-red-900/40 rounded-full shrink-0"><svg class="w-5 h-5 text-red-600 dark:text-red-400"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"></path></svg></div><div class="flex-1 min-w-0"><h4 class="text-sm font-semibold text-red-800 dark:text-red-200">Tool Error: <!$><!/></h4><p class="text-sm text-red-700 dark:text-red-300 mt-1"></p><!$><!/><!$><!/><!$><!/>`), _tmpl$52 = /* @__PURE__ */ web.template(`<li>`), _tmpl$53 = /* @__PURE__ */ web.template(`<div class="px-4 py-2 border-b border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-900"><h3 class="text-sm font-semibold text-gray-900 dark:text-white capitalize">`), _tmpl$54 = /* @__PURE__ */ web.template(`<div class="w-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden"><!$><!/><div class="p-4 prose prose-sm dark:prose-invert max-w-none">`), _tmpl$55 = /* @__PURE__ */ web.template(`<div><div class="grid gap-4"></div><!$><!/>`), _tmpl$56 = /* @__PURE__ */ web.template(`<div>`);
|
|
34
34
|
function CopyButton(props) {
|
|
35
35
|
const [copied, setCopied] = solidJs.createSignal(false);
|
|
36
36
|
const handleCopy = async () => {
|
|
@@ -1163,7 +1163,7 @@ function LinkRenderer(props) {
|
|
|
1163
1163
|
})();
|
|
1164
1164
|
}
|
|
1165
1165
|
function ComponentRenderer(props) {
|
|
1166
|
-
var _a, _b, _c, _d, _e, _f;
|
|
1166
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
1167
1167
|
perf.markRenderStart(props.component.id);
|
|
1168
1168
|
const telemetry = MCPUITelemetryContext.useTelemetry();
|
|
1169
1169
|
solidJs.onMount(() => {
|
|
@@ -1221,6 +1221,13 @@ function ComponentRenderer(props) {
|
|
|
1221
1221
|
}
|
|
1222
1222
|
const mode = props.errorMode ?? "block";
|
|
1223
1223
|
const firstError = ((_f = (_e = validation$1.errors) == null ? void 0 : _e[0]) == null ? void 0 : _f.message) || "Unknown validation error";
|
|
1224
|
+
if ((_g = validation$1.errors) == null ? void 0 : _g.some((e) => e.code === "UNKNOWN_COMPONENT_TYPE")) {
|
|
1225
|
+
return web.createComponent(UnsupportedComponentFallback, {
|
|
1226
|
+
get component() {
|
|
1227
|
+
return props.component;
|
|
1228
|
+
}
|
|
1229
|
+
});
|
|
1230
|
+
}
|
|
1224
1231
|
if (mode === "silent") {
|
|
1225
1232
|
return null;
|
|
1226
1233
|
}
|
|
@@ -1500,10 +1507,28 @@ function ComponentRenderer(props) {
|
|
|
1500
1507
|
}
|
|
1501
1508
|
});
|
|
1502
1509
|
}
|
|
1510
|
+
}), web.createComponent(solidJs.Show, {
|
|
1511
|
+
get when() {
|
|
1512
|
+
return props.component.type === "footer";
|
|
1513
|
+
},
|
|
1514
|
+
get children() {
|
|
1515
|
+
return web.createComponent(FooterRenderer.FooterRenderer, {
|
|
1516
|
+
get params() {
|
|
1517
|
+
return props.component.params;
|
|
1518
|
+
}
|
|
1519
|
+
});
|
|
1520
|
+
}
|
|
1503
1521
|
})];
|
|
1504
1522
|
}
|
|
1505
1523
|
});
|
|
1506
1524
|
}
|
|
1525
|
+
function UnsupportedComponentFallback(props) {
|
|
1526
|
+
return (() => {
|
|
1527
|
+
var _el$188 = web.getNextElement(_tmpl$43), _el$189 = _el$188.firstChild, _el$190 = _el$189.nextSibling;
|
|
1528
|
+
web.insert(_el$190, () => props.component.type);
|
|
1529
|
+
return _el$188;
|
|
1530
|
+
})();
|
|
1531
|
+
}
|
|
1507
1532
|
function ActionRenderer(props) {
|
|
1508
1533
|
const params = props.component.params;
|
|
1509
1534
|
const {
|
|
@@ -1541,27 +1566,27 @@ function ActionRenderer(props) {
|
|
|
1541
1566
|
const isDisabled = () => params.disabled || isExecutable() && isExecuting();
|
|
1542
1567
|
if (params.type === "link" || params.action === "link") {
|
|
1543
1568
|
return (() => {
|
|
1544
|
-
var _el$
|
|
1545
|
-
_el$
|
|
1546
|
-
web.insert(_el$
|
|
1569
|
+
var _el$191 = web.getNextElement(_tmpl$45), _el$193 = _el$191.firstChild, [_el$194, _co$39] = web.getNextMarker(_el$193.nextSibling), _el$195 = _el$194.nextSibling, [_el$196, _co$40] = web.getNextMarker(_el$195.nextSibling);
|
|
1570
|
+
_el$191.$$click = handleClick;
|
|
1571
|
+
web.insert(_el$191, web.createComponent(solidJs.Show, {
|
|
1547
1572
|
get when() {
|
|
1548
1573
|
return params.icon;
|
|
1549
1574
|
},
|
|
1550
1575
|
get children() {
|
|
1551
|
-
var _el$
|
|
1552
|
-
web.insert(_el$
|
|
1553
|
-
return _el$
|
|
1576
|
+
var _el$192 = web.getNextElement(_tmpl$44);
|
|
1577
|
+
web.insert(_el$192, () => params.icon);
|
|
1578
|
+
return _el$192;
|
|
1554
1579
|
}
|
|
1555
|
-
}), _el$
|
|
1556
|
-
web.insert(_el$
|
|
1580
|
+
}), _el$194, _co$39);
|
|
1581
|
+
web.insert(_el$191, () => params.label, _el$196, _co$40);
|
|
1557
1582
|
web.effect((_p$) => {
|
|
1558
1583
|
var _v$34 = params.url || "#", _v$35 = params.url ? "_blank" : void 0, _v$36 = params.ariaLabel || params.label, _v$37 = `inline-flex items-center gap-2 px-4 py-2 rounded-md text-sm font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500
|
|
1559
1584
|
${params.variant === "primary" ? "bg-blue-600 text-white hover:bg-blue-700" : params.variant === "outline" ? "border border-gray-300 text-gray-700 hover:bg-gray-50 dark:border-gray-600 dark:text-gray-300 dark:hover:bg-gray-800" : "text-blue-600 hover:text-blue-800 dark:text-blue-400 dark:hover:text-blue-300"}
|
|
1560
1585
|
${params.className || ""}`;
|
|
1561
|
-
_v$34 !== _p$.e && web.setAttribute(_el$
|
|
1562
|
-
_v$35 !== _p$.t && web.setAttribute(_el$
|
|
1563
|
-
_v$36 !== _p$.a && web.setAttribute(_el$
|
|
1564
|
-
_v$37 !== _p$.o && web.className(_el$
|
|
1586
|
+
_v$34 !== _p$.e && web.setAttribute(_el$191, "href", _p$.e = _v$34);
|
|
1587
|
+
_v$35 !== _p$.t && web.setAttribute(_el$191, "target", _p$.t = _v$35);
|
|
1588
|
+
_v$36 !== _p$.a && web.setAttribute(_el$191, "aria-label", _p$.a = _v$36);
|
|
1589
|
+
_v$37 !== _p$.o && web.className(_el$191, _p$.o = _v$37);
|
|
1565
1590
|
return _p$;
|
|
1566
1591
|
}, {
|
|
1567
1592
|
e: void 0,
|
|
@@ -1570,41 +1595,41 @@ function ActionRenderer(props) {
|
|
|
1570
1595
|
o: void 0
|
|
1571
1596
|
});
|
|
1572
1597
|
web.runHydrationEvents();
|
|
1573
|
-
return _el$
|
|
1598
|
+
return _el$191;
|
|
1574
1599
|
})();
|
|
1575
1600
|
}
|
|
1576
1601
|
return (() => {
|
|
1577
|
-
var _el$
|
|
1578
|
-
_el$
|
|
1579
|
-
web.insert(_el$
|
|
1602
|
+
var _el$197 = web.getNextElement(_tmpl$47), _el$200 = _el$197.firstChild, [_el$201, _co$41] = web.getNextMarker(_el$200.nextSibling), _el$202 = _el$201.nextSibling, [_el$203, _co$42] = web.getNextMarker(_el$202.nextSibling), _el$204 = _el$203.nextSibling, [_el$205, _co$43] = web.getNextMarker(_el$204.nextSibling);
|
|
1603
|
+
_el$197.$$click = handleClick;
|
|
1604
|
+
web.insert(_el$197, web.createComponent(solidJs.Show, {
|
|
1580
1605
|
get when() {
|
|
1581
1606
|
return web.memo(() => !!isExecuting())() && isExecutable();
|
|
1582
1607
|
},
|
|
1583
1608
|
get children() {
|
|
1584
|
-
return web.getNextElement(_tmpl$
|
|
1609
|
+
return web.getNextElement(_tmpl$46);
|
|
1585
1610
|
}
|
|
1586
|
-
}), _el$
|
|
1587
|
-
web.insert(_el$
|
|
1611
|
+
}), _el$201, _co$41);
|
|
1612
|
+
web.insert(_el$197, web.createComponent(solidJs.Show, {
|
|
1588
1613
|
get when() {
|
|
1589
1614
|
return web.memo(() => !!params.icon)() && !(isExecuting() && isExecutable());
|
|
1590
1615
|
},
|
|
1591
1616
|
get children() {
|
|
1592
|
-
var _el$
|
|
1593
|
-
web.insert(_el$
|
|
1594
|
-
return _el$
|
|
1617
|
+
var _el$199 = web.getNextElement(_tmpl$44);
|
|
1618
|
+
web.insert(_el$199, () => params.icon);
|
|
1619
|
+
return _el$199;
|
|
1595
1620
|
}
|
|
1596
|
-
}), _el$
|
|
1597
|
-
web.insert(_el$
|
|
1621
|
+
}), _el$203, _co$42);
|
|
1622
|
+
web.insert(_el$197, () => params.label, _el$205, _co$43);
|
|
1598
1623
|
web.effect((_p$) => {
|
|
1599
1624
|
var _v$38 = isDisabled(), _v$39 = isExecuting() && isExecutable(), _v$40 = params.ariaLabel || params.label, _v$41 = `inline-flex items-center gap-2 px-4 py-2 rounded-md text-sm font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500
|
|
1600
1625
|
${params.variant === "primary" ? "bg-blue-600 text-white hover:bg-blue-700 shadow-sm" : params.variant === "secondary" ? "bg-gray-100 text-gray-900 hover:bg-gray-200 dark:bg-gray-700 dark:text-white dark:hover:bg-gray-600" : params.variant === "outline" ? "border border-gray-300 text-gray-700 hover:bg-gray-50 dark:border-gray-600 dark:text-gray-300 dark:hover:bg-gray-800" : params.variant === "danger" ? "bg-red-600 text-white hover:bg-red-700" : "bg-transparent text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-800"}
|
|
1601
1626
|
${isDisabled() ? "opacity-50 cursor-not-allowed" : ""}
|
|
1602
1627
|
${params.size === "sm" ? "px-3 py-1.5 text-xs" : params.size === "lg" ? "px-6 py-3 text-base" : ""}
|
|
1603
1628
|
${params.className || ""}`;
|
|
1604
|
-
_v$38 !== _p$.e && web.setProperty(_el$
|
|
1605
|
-
_v$39 !== _p$.t && web.setAttribute(_el$
|
|
1606
|
-
_v$40 !== _p$.a && web.setAttribute(_el$
|
|
1607
|
-
_v$41 !== _p$.o && web.className(_el$
|
|
1629
|
+
_v$38 !== _p$.e && web.setProperty(_el$197, "disabled", _p$.e = _v$38);
|
|
1630
|
+
_v$39 !== _p$.t && web.setAttribute(_el$197, "aria-busy", _p$.t = _v$39);
|
|
1631
|
+
_v$40 !== _p$.a && web.setAttribute(_el$197, "aria-label", _p$.a = _v$40);
|
|
1632
|
+
_v$41 !== _p$.o && web.className(_el$197, _p$.o = _v$41);
|
|
1608
1633
|
return _p$;
|
|
1609
1634
|
}, {
|
|
1610
1635
|
e: void 0,
|
|
@@ -1613,7 +1638,7 @@ function ActionRenderer(props) {
|
|
|
1613
1638
|
o: void 0
|
|
1614
1639
|
});
|
|
1615
1640
|
web.runHydrationEvents();
|
|
1616
|
-
return _el$
|
|
1641
|
+
return _el$197;
|
|
1617
1642
|
})();
|
|
1618
1643
|
}
|
|
1619
1644
|
function ErrorCardRenderer(props) {
|
|
@@ -1621,55 +1646,55 @@ function ErrorCardRenderer(props) {
|
|
|
1621
1646
|
return `Error in ${props.error.tool || "unknown tool"}: ${props.error.message || "Unknown error"}`;
|
|
1622
1647
|
};
|
|
1623
1648
|
return (() => {
|
|
1624
|
-
var _el$
|
|
1625
|
-
web.insert(_el$
|
|
1649
|
+
var _el$206 = web.getNextElement(_tmpl$51), _el$229 = _el$206.firstChild, [_el$230, _co$49] = web.getNextMarker(_el$229.nextSibling), _el$207 = _el$230.nextSibling, _el$208 = _el$207.firstChild, _el$209 = _el$208.nextSibling, _el$210 = _el$209.firstChild, _el$211 = _el$210.firstChild, _el$212 = _el$211.nextSibling, [_el$213, _co$44] = web.getNextMarker(_el$212.nextSibling), _el$214 = _el$210.nextSibling, _el$223 = _el$214.nextSibling, [_el$224, _co$46] = web.getNextMarker(_el$223.nextSibling), _el$225 = _el$224.nextSibling, [_el$226, _co$47] = web.getNextMarker(_el$225.nextSibling), _el$227 = _el$226.nextSibling, [_el$228, _co$48] = web.getNextMarker(_el$227.nextSibling);
|
|
1650
|
+
web.insert(_el$206, web.createComponent(CopyButton, {
|
|
1626
1651
|
getText: getErrorText,
|
|
1627
1652
|
title: "Copy error details",
|
|
1628
1653
|
position: "top-right"
|
|
1629
|
-
}), _el$
|
|
1630
|
-
web.insert(_el$
|
|
1631
|
-
web.insert(_el$
|
|
1632
|
-
web.insert(_el$
|
|
1654
|
+
}), _el$230, _co$49);
|
|
1655
|
+
web.insert(_el$210, () => props.error.tool || "Unknown", _el$213, _co$44);
|
|
1656
|
+
web.insert(_el$214, () => props.error.message || "An error occurred during tool execution");
|
|
1657
|
+
web.insert(_el$209, web.createComponent(solidJs.Show, {
|
|
1633
1658
|
get when() {
|
|
1634
1659
|
return props.error.type;
|
|
1635
1660
|
},
|
|
1636
1661
|
get children() {
|
|
1637
|
-
var _el$
|
|
1638
|
-
web.insert(_el$
|
|
1639
|
-
return _el$
|
|
1662
|
+
var _el$215 = web.getNextElement(_tmpl$48), _el$216 = _el$215.firstChild, _el$217 = _el$216.nextSibling, [_el$218, _co$45] = web.getNextMarker(_el$217.nextSibling);
|
|
1663
|
+
web.insert(_el$215, () => props.error.type, _el$218, _co$45);
|
|
1664
|
+
return _el$215;
|
|
1640
1665
|
}
|
|
1641
|
-
}), _el$
|
|
1642
|
-
web.insert(_el$
|
|
1666
|
+
}), _el$224, _co$46);
|
|
1667
|
+
web.insert(_el$209, web.createComponent(solidJs.Show, {
|
|
1643
1668
|
get when() {
|
|
1644
1669
|
var _a;
|
|
1645
1670
|
return (_a = props.error.suggestions) == null ? void 0 : _a.length;
|
|
1646
1671
|
},
|
|
1647
1672
|
get children() {
|
|
1648
|
-
var _el$
|
|
1649
|
-
web.insert(_el$
|
|
1673
|
+
var _el$219 = web.getNextElement(_tmpl$49), _el$220 = _el$219.firstChild, _el$221 = _el$220.nextSibling;
|
|
1674
|
+
web.insert(_el$221, web.createComponent(solidJs.For, {
|
|
1650
1675
|
get each() {
|
|
1651
1676
|
return props.error.suggestions;
|
|
1652
1677
|
},
|
|
1653
1678
|
children: (suggestion) => (() => {
|
|
1654
|
-
var _el$
|
|
1655
|
-
web.insert(_el$
|
|
1656
|
-
return _el$
|
|
1679
|
+
var _el$231 = web.getNextElement(_tmpl$52);
|
|
1680
|
+
web.insert(_el$231, suggestion);
|
|
1681
|
+
return _el$231;
|
|
1657
1682
|
})()
|
|
1658
1683
|
}));
|
|
1659
|
-
return _el$
|
|
1684
|
+
return _el$219;
|
|
1660
1685
|
}
|
|
1661
|
-
}), _el$
|
|
1662
|
-
web.insert(_el$
|
|
1686
|
+
}), _el$226, _co$47);
|
|
1687
|
+
web.insert(_el$209, web.createComponent(solidJs.Show, {
|
|
1663
1688
|
get when() {
|
|
1664
1689
|
return props.error.timestamp;
|
|
1665
1690
|
},
|
|
1666
1691
|
get children() {
|
|
1667
|
-
var _el$
|
|
1668
|
-
web.insert(_el$
|
|
1669
|
-
return _el$
|
|
1692
|
+
var _el$222 = web.getNextElement(_tmpl$50);
|
|
1693
|
+
web.insert(_el$222, () => new Date(props.error.timestamp).toLocaleString());
|
|
1694
|
+
return _el$222;
|
|
1670
1695
|
}
|
|
1671
|
-
}), _el$
|
|
1672
|
-
return _el$
|
|
1696
|
+
}), _el$228, _co$48);
|
|
1697
|
+
return _el$206;
|
|
1673
1698
|
})();
|
|
1674
1699
|
}
|
|
1675
1700
|
function isErrorResponse(content) {
|
|
@@ -1692,20 +1717,20 @@ function UIResourceHtmlRenderer(props) {
|
|
|
1692
1717
|
return ((_a = props.resource.metadata) == null ? void 0 : _a.title) || ((_b = props.resource.uri) == null ? void 0 : _b.replace("ui://deposium/", "")) || "Resource";
|
|
1693
1718
|
};
|
|
1694
1719
|
return (() => {
|
|
1695
|
-
var _el$
|
|
1696
|
-
web.insert(_el$
|
|
1720
|
+
var _el$232 = web.getNextElement(_tmpl$54), _el$236 = _el$232.firstChild, [_el$237, _co$50] = web.getNextMarker(_el$236.nextSibling), _el$235 = _el$237.nextSibling;
|
|
1721
|
+
web.insert(_el$232, web.createComponent(solidJs.Show, {
|
|
1697
1722
|
get when() {
|
|
1698
1723
|
var _a;
|
|
1699
1724
|
return ((_a = props.resource.metadata) == null ? void 0 : _a.title) || props.resource.uri;
|
|
1700
1725
|
},
|
|
1701
1726
|
get children() {
|
|
1702
|
-
var _el$
|
|
1703
|
-
web.insert(_el$
|
|
1704
|
-
return _el$
|
|
1727
|
+
var _el$233 = web.getNextElement(_tmpl$53), _el$234 = _el$233.firstChild;
|
|
1728
|
+
web.insert(_el$234, resourceTitle);
|
|
1729
|
+
return _el$233;
|
|
1705
1730
|
}
|
|
1706
|
-
}), _el$
|
|
1707
|
-
web.effect(() => web.setProperty(_el$
|
|
1708
|
-
return _el$
|
|
1731
|
+
}), _el$237, _co$50);
|
|
1732
|
+
web.effect(() => web.setProperty(_el$235, "innerHTML", htmlContent()));
|
|
1733
|
+
return _el$232;
|
|
1709
1734
|
})();
|
|
1710
1735
|
}
|
|
1711
1736
|
const UIResourceRenderer = (props) => {
|
|
@@ -1811,8 +1836,8 @@ const UIResourceRenderer = (props) => {
|
|
|
1811
1836
|
return web.createComponent(RenderContext.RenderProvider, {
|
|
1812
1837
|
renderComponent,
|
|
1813
1838
|
get children() {
|
|
1814
|
-
var _el$
|
|
1815
|
-
web.spread(_el$
|
|
1839
|
+
var _el$238 = web.getNextElement(_tmpl$55), _el$239 = _el$238.firstChild, _el$240 = _el$239.nextSibling, [_el$241, _co$51] = web.getNextMarker(_el$240.nextSibling);
|
|
1840
|
+
web.spread(_el$238, web.mergeProps({
|
|
1816
1841
|
get ["class"]() {
|
|
1817
1842
|
return `w-full ${props.class || ""}`;
|
|
1818
1843
|
}
|
|
@@ -1821,13 +1846,13 @@ const UIResourceRenderer = (props) => {
|
|
|
1821
1846
|
} : {
|
|
1822
1847
|
"data-mcp-ui-component-id": outerKey()
|
|
1823
1848
|
}), false, true);
|
|
1824
|
-
web.insert(_el$
|
|
1849
|
+
web.insert(_el$239, web.createComponent(solidJs.For, {
|
|
1825
1850
|
get each() {
|
|
1826
1851
|
return layoutData.components;
|
|
1827
1852
|
},
|
|
1828
1853
|
children: (component) => (() => {
|
|
1829
|
-
var _el$
|
|
1830
|
-
web.insert(_el$
|
|
1854
|
+
var _el$242 = web.getNextElement(_tmpl$56);
|
|
1855
|
+
web.insert(_el$242, web.createComponent(ComponentRenderer, {
|
|
1831
1856
|
component,
|
|
1832
1857
|
get onError() {
|
|
1833
1858
|
return props.onError;
|
|
@@ -1844,17 +1869,17 @@ const UIResourceRenderer = (props) => {
|
|
|
1844
1869
|
}));
|
|
1845
1870
|
web.effect((_p$) => {
|
|
1846
1871
|
var _v$42 = getGridStyleString(component), _v$43 = stableKey.getUiResourceStableKey(component);
|
|
1847
|
-
_p$.e = web.style(_el$
|
|
1848
|
-
_v$43 !== _p$.t && web.setAttribute(_el$
|
|
1872
|
+
_p$.e = web.style(_el$242, _v$42, _p$.e);
|
|
1873
|
+
_v$43 !== _p$.t && web.setAttribute(_el$242, "data-mcp-ui-component-id", _p$.t = _v$43);
|
|
1849
1874
|
return _p$;
|
|
1850
1875
|
}, {
|
|
1851
1876
|
e: void 0,
|
|
1852
1877
|
t: void 0
|
|
1853
1878
|
});
|
|
1854
|
-
return _el$
|
|
1879
|
+
return _el$242;
|
|
1855
1880
|
})()
|
|
1856
1881
|
}));
|
|
1857
|
-
web.insert(_el$
|
|
1882
|
+
web.insert(_el$238, web.createComponent(solidJs.Show, {
|
|
1858
1883
|
get when() {
|
|
1859
1884
|
return shouldShowAutoFooter();
|
|
1860
1885
|
},
|
|
@@ -1865,10 +1890,10 @@ const UIResourceRenderer = (props) => {
|
|
|
1865
1890
|
}
|
|
1866
1891
|
});
|
|
1867
1892
|
}
|
|
1868
|
-
}), _el$
|
|
1869
|
-
web.effect((_$p) => web.style(_el$
|
|
1893
|
+
}), _el$241, _co$51);
|
|
1894
|
+
web.effect((_$p) => web.style(_el$239, gridContainerStyle(), _$p));
|
|
1870
1895
|
web.runHydrationEvents();
|
|
1871
|
-
return _el$
|
|
1896
|
+
return _el$238;
|
|
1872
1897
|
}
|
|
1873
1898
|
});
|
|
1874
1899
|
};
|