@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.
@@ -1 +1 @@
1
- {"version":3,"file":"UIResourceRenderer.d.ts","sourceRoot":"","sources":["../../src/components/UIResourceRenderer.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,SAAS,EAAyE,MAAM,UAAU,CAAA;AAE3G,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAA0B,MAAM,UAAU,CAAA;AAM5F,OAAO,EAIL,KAAK,kBAAkB,EACxB,MAAM,mCAAmC,CAAA;AAG1C;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,aAAa,GAAG,QAAQ,CAAA;AAkEpE;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,OAAO,EAAE,WAAW,GAAG,QAAQ,CAAA;IAE/B;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAA;IAExC;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,mBAAmB,CAAA;IAE/B;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,OAAO,GAAG,gBAAgB,CAAA;IAE3C;;;;;;;;;;;;;;;;;OAiBG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAA;IAEjC;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,IAAI,CAAA;IAErD;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B;AAmMD;;GAEG;AACH;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAYlE;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,GAAG,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC,CAAA;IACjG;;;;;OAKG;IACH,MAAM,CAAC,EAAE,CACP,EAAE,EAAE,MAAM,EACV,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,SAAS,KACrF,MAAM,CAAA;CACZ;AA8DD,wBAAgB,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,MAAM,CAkG7E;AAirCD;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAAS,CAAC,uBAAuB,CA6IjE,CAAA"}
1
+ {"version":3,"file":"UIResourceRenderer.d.ts","sourceRoot":"","sources":["../../src/components/UIResourceRenderer.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,SAAS,EAAyE,MAAM,UAAU,CAAA;AAE3G,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAA0B,MAAM,UAAU,CAAA;AAM5F,OAAO,EAIL,KAAK,kBAAkB,EACxB,MAAM,mCAAmC,CAAA;AAG1C;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,aAAa,GAAG,QAAQ,CAAA;AAkEpE;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,OAAO,EAAE,WAAW,GAAG,QAAQ,CAAA;IAE/B;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAA;IAExC;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,mBAAmB,CAAA;IAE/B;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,OAAO,GAAG,gBAAgB,CAAA;IAE3C;;;;;;;;;;;;;;;;;OAiBG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAA;IAEjC;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,IAAI,CAAA;IAErD;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B;AAmMD;;GAEG;AACH;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAYlE;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,GAAG,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC,CAAA;IACjG;;;;;OAKG;IACH,MAAM,CAAC,EAAE,CACP,EAAE,EAAE,MAAM,EACV,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,SAAS,KACrF,MAAM,CAAA;CACZ;AA8DD,wBAAgB,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,MAAM,CAkG7E;AAotCD;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAAS,CAAC,uBAAuB,CA6IjE,CAAA"}
@@ -28,7 +28,7 @@ import { PortalDropdownMenu } from "./PortalDropdownMenu.js";
28
28
  import { RenderProvider } from "./RenderContext.js";
29
29
  import { useAction } from "../hooks/useAction.js";
30
30
  import { marked as k } from "../node_modules/.pnpm/marked@16.4.2/node_modules/marked/lib/marked.esm.js";
31
- var _tmpl$ = /* @__PURE__ */ 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__ */ template(`<button>`), _tmpl$3 = /* @__PURE__ */ 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__ */ 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__ */ template(`<div class=p-3>`), _tmpl$6 = /* @__PURE__ */ 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__ */ 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__ */ template(`<h3 class="text-sm font-semibold text-gray-900 dark:text-white mb-3">`), _tmpl$9 = /* @__PURE__ */ 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__ */ 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__ */ template(`<tbody class="bg-white dark:bg-gray-800 divide-y divide-gray-200 dark:divide-gray-700">`), _tmpl$10 = /* @__PURE__ */ template(`<tr>`), _tmpl$11 = /* @__PURE__ */ 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__ */ template(`<tbody class="bg-white dark:bg-gray-800 relative">`), _tmpl$13 = /* @__PURE__ */ 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__ */ 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__ */ 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__ */ 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__ */ template(`<span class="ml-2 text-xs font-normal text-gray-400">(virtualized: <!$><!/> rows)`), _tmpl$18 = /* @__PURE__ */ template(`<h3 class="text-sm font-semibold text-gray-900 dark:text-white mb-3 flex-shrink-0"><!$><!/><!$><!/>`), _tmpl$19 = /* @__PURE__ */ 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">&times;`), _tmpl$20 = /* @__PURE__ */ 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__ */ template(`<p class="text-xs text-gray-500 dark:text-gray-400 mb-2"><!$><!/> result<!$><!/> on <!$><!/>`), _tmpl$22 = /* @__PURE__ */ 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__ */ 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__ */ template(`<span class=text-gray-400>/ page`), _tmpl$25 = /* @__PURE__ */ template(`<div class="mt-3 flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"><span><!$><!/>&ndash;<!$><!/> / <!$><!/></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">&#x25C0;</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">&#x25B6;</button><!$><!/>`), _tmpl$26 = /* @__PURE__ */ 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__ */ 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__ */ template(`<option>`), _tmpl$29 = /* @__PURE__ */ template(`<span class="ml-2 text-sm font-medium text-gray-500 dark:text-gray-400">`), _tmpl$30 = /* @__PURE__ */ template(`<div class="mt-3 flex items-center"><span><!$><!/> <!$><!/>%`), _tmpl$31 = /* @__PURE__ */ template(`<p class="mt-2 text-xs text-gray-500 dark:text-gray-400">`), _tmpl$32 = /* @__PURE__ */ 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__ */ 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__ */ 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__ */ 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__ */ 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__ */ 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__ */ 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__ */ template(`<p class="text-xs text-gray-500 dark:text-gray-400 truncate">`), _tmpl$40 = /* @__PURE__ */ 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__ */ 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__ */ 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__ */ template(`<span aria-hidden=true>`), _tmpl$44 = /* @__PURE__ */ template(`<a rel="noopener noreferrer"><!$><!/><!$><!/>`), _tmpl$45 = /* @__PURE__ */ template(`<span class="animate-spin h-4 w-4 border-2 border-current border-t-transparent rounded-full"aria-hidden=true>`), _tmpl$46 = /* @__PURE__ */ template(`<button type=button><!$><!/><!$><!/><!$><!/>`), _tmpl$47 = /* @__PURE__ */ template(`<p class="text-xs text-red-600 dark:text-red-400 mt-1">Type: <!$><!/>`), _tmpl$48 = /* @__PURE__ */ 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__ */ template(`<p class="text-xs text-red-500 dark:text-red-500 mt-2">`), _tmpl$50 = /* @__PURE__ */ 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__ */ template(`<li>`), _tmpl$52 = /* @__PURE__ */ 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__ */ 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__ */ template(`<div><div class="grid gap-4"></div><!$><!/>`), _tmpl$55 = /* @__PURE__ */ template(`<div>`);
31
+ var _tmpl$ = /* @__PURE__ */ 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__ */ template(`<button>`), _tmpl$3 = /* @__PURE__ */ 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__ */ 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__ */ template(`<div class=p-3>`), _tmpl$6 = /* @__PURE__ */ 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__ */ 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__ */ template(`<h3 class="text-sm font-semibold text-gray-900 dark:text-white mb-3">`), _tmpl$9 = /* @__PURE__ */ 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__ */ 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__ */ template(`<tbody class="bg-white dark:bg-gray-800 divide-y divide-gray-200 dark:divide-gray-700">`), _tmpl$10 = /* @__PURE__ */ template(`<tr>`), _tmpl$11 = /* @__PURE__ */ 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__ */ template(`<tbody class="bg-white dark:bg-gray-800 relative">`), _tmpl$13 = /* @__PURE__ */ 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__ */ 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__ */ 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__ */ 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__ */ template(`<span class="ml-2 text-xs font-normal text-gray-400">(virtualized: <!$><!/> rows)`), _tmpl$18 = /* @__PURE__ */ template(`<h3 class="text-sm font-semibold text-gray-900 dark:text-white mb-3 flex-shrink-0"><!$><!/><!$><!/>`), _tmpl$19 = /* @__PURE__ */ 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">&times;`), _tmpl$20 = /* @__PURE__ */ 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__ */ template(`<p class="text-xs text-gray-500 dark:text-gray-400 mb-2"><!$><!/> result<!$><!/> on <!$><!/>`), _tmpl$22 = /* @__PURE__ */ 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__ */ 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__ */ template(`<span class=text-gray-400>/ page`), _tmpl$25 = /* @__PURE__ */ template(`<div class="mt-3 flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"><span><!$><!/>&ndash;<!$><!/> / <!$><!/></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">&#x25C0;</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">&#x25B6;</button><!$><!/>`), _tmpl$26 = /* @__PURE__ */ 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__ */ 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__ */ template(`<option>`), _tmpl$29 = /* @__PURE__ */ template(`<span class="ml-2 text-sm font-medium text-gray-500 dark:text-gray-400">`), _tmpl$30 = /* @__PURE__ */ template(`<div class="mt-3 flex items-center"><span><!$><!/> <!$><!/>%`), _tmpl$31 = /* @__PURE__ */ template(`<p class="mt-2 text-xs text-gray-500 dark:text-gray-400">`), _tmpl$32 = /* @__PURE__ */ 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__ */ 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__ */ 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__ */ 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__ */ 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__ */ 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__ */ 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__ */ template(`<p class="text-xs text-gray-500 dark:text-gray-400 truncate">`), _tmpl$40 = /* @__PURE__ */ 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__ */ 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__ */ 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__ */ 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__ */ template(`<span aria-hidden=true>`), _tmpl$45 = /* @__PURE__ */ template(`<a rel="noopener noreferrer"><!$><!/><!$><!/>`), _tmpl$46 = /* @__PURE__ */ template(`<span class="animate-spin h-4 w-4 border-2 border-current border-t-transparent rounded-full"aria-hidden=true>`), _tmpl$47 = /* @__PURE__ */ template(`<button type=button><!$><!/><!$><!/><!$><!/>`), _tmpl$48 = /* @__PURE__ */ template(`<p class="text-xs text-red-600 dark:text-red-400 mt-1">Type: <!$><!/>`), _tmpl$49 = /* @__PURE__ */ 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__ */ template(`<p class="text-xs text-red-500 dark:text-red-500 mt-2">`), _tmpl$51 = /* @__PURE__ */ 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__ */ template(`<li>`), _tmpl$53 = /* @__PURE__ */ 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__ */ 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__ */ template(`<div><div class="grid gap-4"></div><!$><!/>`), _tmpl$56 = /* @__PURE__ */ template(`<div>`);
32
32
  function CopyButton(props) {
33
33
  const [copied, setCopied] = createSignal(false);
34
34
  const handleCopy = async () => {
@@ -1161,7 +1161,7 @@ function LinkRenderer(props) {
1161
1161
  })();
1162
1162
  }
1163
1163
  function ComponentRenderer(props) {
1164
- var _a, _b, _c, _d, _e, _f;
1164
+ var _a, _b, _c, _d, _e, _f, _g;
1165
1165
  markRenderStart(props.component.id);
1166
1166
  const telemetry = useTelemetry();
1167
1167
  onMount(() => {
@@ -1219,6 +1219,13 @@ function ComponentRenderer(props) {
1219
1219
  }
1220
1220
  const mode = props.errorMode ?? "block";
1221
1221
  const firstError = ((_f = (_e = validation.errors) == null ? void 0 : _e[0]) == null ? void 0 : _f.message) || "Unknown validation error";
1222
+ if ((_g = validation.errors) == null ? void 0 : _g.some((e) => e.code === "UNKNOWN_COMPONENT_TYPE")) {
1223
+ return createComponent(UnsupportedComponentFallback, {
1224
+ get component() {
1225
+ return props.component;
1226
+ }
1227
+ });
1228
+ }
1222
1229
  if (mode === "silent") {
1223
1230
  return null;
1224
1231
  }
@@ -1498,10 +1505,28 @@ function ComponentRenderer(props) {
1498
1505
  }
1499
1506
  });
1500
1507
  }
1508
+ }), createComponent(Show, {
1509
+ get when() {
1510
+ return props.component.type === "footer";
1511
+ },
1512
+ get children() {
1513
+ return createComponent(FooterRenderer, {
1514
+ get params() {
1515
+ return props.component.params;
1516
+ }
1517
+ });
1518
+ }
1501
1519
  })];
1502
1520
  }
1503
1521
  });
1504
1522
  }
1523
+ function UnsupportedComponentFallback(props) {
1524
+ return (() => {
1525
+ var _el$188 = getNextElement(_tmpl$43), _el$189 = _el$188.firstChild, _el$190 = _el$189.nextSibling;
1526
+ insert(_el$190, () => props.component.type);
1527
+ return _el$188;
1528
+ })();
1529
+ }
1505
1530
  function ActionRenderer(props) {
1506
1531
  const params = props.component.params;
1507
1532
  const {
@@ -1539,27 +1564,27 @@ function ActionRenderer(props) {
1539
1564
  const isDisabled = () => params.disabled || isExecutable() && isExecuting();
1540
1565
  if (params.type === "link" || params.action === "link") {
1541
1566
  return (() => {
1542
- var _el$188 = getNextElement(_tmpl$44), _el$190 = _el$188.firstChild, [_el$191, _co$39] = getNextMarker(_el$190.nextSibling), _el$192 = _el$191.nextSibling, [_el$193, _co$40] = getNextMarker(_el$192.nextSibling);
1543
- _el$188.$$click = handleClick;
1544
- insert(_el$188, createComponent(Show, {
1567
+ var _el$191 = getNextElement(_tmpl$45), _el$193 = _el$191.firstChild, [_el$194, _co$39] = getNextMarker(_el$193.nextSibling), _el$195 = _el$194.nextSibling, [_el$196, _co$40] = getNextMarker(_el$195.nextSibling);
1568
+ _el$191.$$click = handleClick;
1569
+ insert(_el$191, createComponent(Show, {
1545
1570
  get when() {
1546
1571
  return params.icon;
1547
1572
  },
1548
1573
  get children() {
1549
- var _el$189 = getNextElement(_tmpl$43);
1550
- insert(_el$189, () => params.icon);
1551
- return _el$189;
1574
+ var _el$192 = getNextElement(_tmpl$44);
1575
+ insert(_el$192, () => params.icon);
1576
+ return _el$192;
1552
1577
  }
1553
- }), _el$191, _co$39);
1554
- insert(_el$188, () => params.label, _el$193, _co$40);
1578
+ }), _el$194, _co$39);
1579
+ insert(_el$191, () => params.label, _el$196, _co$40);
1555
1580
  effect((_p$) => {
1556
1581
  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
1557
1582
  ${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"}
1558
1583
  ${params.className || ""}`;
1559
- _v$34 !== _p$.e && setAttribute(_el$188, "href", _p$.e = _v$34);
1560
- _v$35 !== _p$.t && setAttribute(_el$188, "target", _p$.t = _v$35);
1561
- _v$36 !== _p$.a && setAttribute(_el$188, "aria-label", _p$.a = _v$36);
1562
- _v$37 !== _p$.o && className(_el$188, _p$.o = _v$37);
1584
+ _v$34 !== _p$.e && setAttribute(_el$191, "href", _p$.e = _v$34);
1585
+ _v$35 !== _p$.t && setAttribute(_el$191, "target", _p$.t = _v$35);
1586
+ _v$36 !== _p$.a && setAttribute(_el$191, "aria-label", _p$.a = _v$36);
1587
+ _v$37 !== _p$.o && className(_el$191, _p$.o = _v$37);
1563
1588
  return _p$;
1564
1589
  }, {
1565
1590
  e: void 0,
@@ -1568,41 +1593,41 @@ function ActionRenderer(props) {
1568
1593
  o: void 0
1569
1594
  });
1570
1595
  runHydrationEvents();
1571
- return _el$188;
1596
+ return _el$191;
1572
1597
  })();
1573
1598
  }
1574
1599
  return (() => {
1575
- var _el$194 = getNextElement(_tmpl$46), _el$197 = _el$194.firstChild, [_el$198, _co$41] = getNextMarker(_el$197.nextSibling), _el$199 = _el$198.nextSibling, [_el$200, _co$42] = getNextMarker(_el$199.nextSibling), _el$201 = _el$200.nextSibling, [_el$202, _co$43] = getNextMarker(_el$201.nextSibling);
1576
- _el$194.$$click = handleClick;
1577
- insert(_el$194, createComponent(Show, {
1600
+ var _el$197 = getNextElement(_tmpl$47), _el$200 = _el$197.firstChild, [_el$201, _co$41] = getNextMarker(_el$200.nextSibling), _el$202 = _el$201.nextSibling, [_el$203, _co$42] = getNextMarker(_el$202.nextSibling), _el$204 = _el$203.nextSibling, [_el$205, _co$43] = getNextMarker(_el$204.nextSibling);
1601
+ _el$197.$$click = handleClick;
1602
+ insert(_el$197, createComponent(Show, {
1578
1603
  get when() {
1579
1604
  return memo(() => !!isExecuting())() && isExecutable();
1580
1605
  },
1581
1606
  get children() {
1582
- return getNextElement(_tmpl$45);
1607
+ return getNextElement(_tmpl$46);
1583
1608
  }
1584
- }), _el$198, _co$41);
1585
- insert(_el$194, createComponent(Show, {
1609
+ }), _el$201, _co$41);
1610
+ insert(_el$197, createComponent(Show, {
1586
1611
  get when() {
1587
1612
  return memo(() => !!params.icon)() && !(isExecuting() && isExecutable());
1588
1613
  },
1589
1614
  get children() {
1590
- var _el$196 = getNextElement(_tmpl$43);
1591
- insert(_el$196, () => params.icon);
1592
- return _el$196;
1615
+ var _el$199 = getNextElement(_tmpl$44);
1616
+ insert(_el$199, () => params.icon);
1617
+ return _el$199;
1593
1618
  }
1594
- }), _el$200, _co$42);
1595
- insert(_el$194, () => params.label, _el$202, _co$43);
1619
+ }), _el$203, _co$42);
1620
+ insert(_el$197, () => params.label, _el$205, _co$43);
1596
1621
  effect((_p$) => {
1597
1622
  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
1598
1623
  ${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"}
1599
1624
  ${isDisabled() ? "opacity-50 cursor-not-allowed" : ""}
1600
1625
  ${params.size === "sm" ? "px-3 py-1.5 text-xs" : params.size === "lg" ? "px-6 py-3 text-base" : ""}
1601
1626
  ${params.className || ""}`;
1602
- _v$38 !== _p$.e && setProperty(_el$194, "disabled", _p$.e = _v$38);
1603
- _v$39 !== _p$.t && setAttribute(_el$194, "aria-busy", _p$.t = _v$39);
1604
- _v$40 !== _p$.a && setAttribute(_el$194, "aria-label", _p$.a = _v$40);
1605
- _v$41 !== _p$.o && className(_el$194, _p$.o = _v$41);
1627
+ _v$38 !== _p$.e && setProperty(_el$197, "disabled", _p$.e = _v$38);
1628
+ _v$39 !== _p$.t && setAttribute(_el$197, "aria-busy", _p$.t = _v$39);
1629
+ _v$40 !== _p$.a && setAttribute(_el$197, "aria-label", _p$.a = _v$40);
1630
+ _v$41 !== _p$.o && className(_el$197, _p$.o = _v$41);
1606
1631
  return _p$;
1607
1632
  }, {
1608
1633
  e: void 0,
@@ -1611,7 +1636,7 @@ function ActionRenderer(props) {
1611
1636
  o: void 0
1612
1637
  });
1613
1638
  runHydrationEvents();
1614
- return _el$194;
1639
+ return _el$197;
1615
1640
  })();
1616
1641
  }
1617
1642
  function ErrorCardRenderer(props) {
@@ -1619,55 +1644,55 @@ function ErrorCardRenderer(props) {
1619
1644
  return `Error in ${props.error.tool || "unknown tool"}: ${props.error.message || "Unknown error"}`;
1620
1645
  };
1621
1646
  return (() => {
1622
- var _el$203 = getNextElement(_tmpl$50), _el$226 = _el$203.firstChild, [_el$227, _co$49] = getNextMarker(_el$226.nextSibling), _el$204 = _el$227.nextSibling, _el$205 = _el$204.firstChild, _el$206 = _el$205.nextSibling, _el$207 = _el$206.firstChild, _el$208 = _el$207.firstChild, _el$209 = _el$208.nextSibling, [_el$210, _co$44] = getNextMarker(_el$209.nextSibling), _el$211 = _el$207.nextSibling, _el$220 = _el$211.nextSibling, [_el$221, _co$46] = getNextMarker(_el$220.nextSibling), _el$222 = _el$221.nextSibling, [_el$223, _co$47] = getNextMarker(_el$222.nextSibling), _el$224 = _el$223.nextSibling, [_el$225, _co$48] = getNextMarker(_el$224.nextSibling);
1623
- insert(_el$203, createComponent(CopyButton, {
1647
+ var _el$206 = getNextElement(_tmpl$51), _el$229 = _el$206.firstChild, [_el$230, _co$49] = 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] = getNextMarker(_el$212.nextSibling), _el$214 = _el$210.nextSibling, _el$223 = _el$214.nextSibling, [_el$224, _co$46] = getNextMarker(_el$223.nextSibling), _el$225 = _el$224.nextSibling, [_el$226, _co$47] = getNextMarker(_el$225.nextSibling), _el$227 = _el$226.nextSibling, [_el$228, _co$48] = getNextMarker(_el$227.nextSibling);
1648
+ insert(_el$206, createComponent(CopyButton, {
1624
1649
  getText: getErrorText,
1625
1650
  title: "Copy error details",
1626
1651
  position: "top-right"
1627
- }), _el$227, _co$49);
1628
- insert(_el$207, () => props.error.tool || "Unknown", _el$210, _co$44);
1629
- insert(_el$211, () => props.error.message || "An error occurred during tool execution");
1630
- insert(_el$206, createComponent(Show, {
1652
+ }), _el$230, _co$49);
1653
+ insert(_el$210, () => props.error.tool || "Unknown", _el$213, _co$44);
1654
+ insert(_el$214, () => props.error.message || "An error occurred during tool execution");
1655
+ insert(_el$209, createComponent(Show, {
1631
1656
  get when() {
1632
1657
  return props.error.type;
1633
1658
  },
1634
1659
  get children() {
1635
- var _el$212 = getNextElement(_tmpl$47), _el$213 = _el$212.firstChild, _el$214 = _el$213.nextSibling, [_el$215, _co$45] = getNextMarker(_el$214.nextSibling);
1636
- insert(_el$212, () => props.error.type, _el$215, _co$45);
1637
- return _el$212;
1660
+ var _el$215 = getNextElement(_tmpl$48), _el$216 = _el$215.firstChild, _el$217 = _el$216.nextSibling, [_el$218, _co$45] = getNextMarker(_el$217.nextSibling);
1661
+ insert(_el$215, () => props.error.type, _el$218, _co$45);
1662
+ return _el$215;
1638
1663
  }
1639
- }), _el$221, _co$46);
1640
- insert(_el$206, createComponent(Show, {
1664
+ }), _el$224, _co$46);
1665
+ insert(_el$209, createComponent(Show, {
1641
1666
  get when() {
1642
1667
  var _a;
1643
1668
  return (_a = props.error.suggestions) == null ? void 0 : _a.length;
1644
1669
  },
1645
1670
  get children() {
1646
- var _el$216 = getNextElement(_tmpl$48), _el$217 = _el$216.firstChild, _el$218 = _el$217.nextSibling;
1647
- insert(_el$218, createComponent(For, {
1671
+ var _el$219 = getNextElement(_tmpl$49), _el$220 = _el$219.firstChild, _el$221 = _el$220.nextSibling;
1672
+ insert(_el$221, createComponent(For, {
1648
1673
  get each() {
1649
1674
  return props.error.suggestions;
1650
1675
  },
1651
1676
  children: (suggestion) => (() => {
1652
- var _el$228 = getNextElement(_tmpl$51);
1653
- insert(_el$228, suggestion);
1654
- return _el$228;
1677
+ var _el$231 = getNextElement(_tmpl$52);
1678
+ insert(_el$231, suggestion);
1679
+ return _el$231;
1655
1680
  })()
1656
1681
  }));
1657
- return _el$216;
1682
+ return _el$219;
1658
1683
  }
1659
- }), _el$223, _co$47);
1660
- insert(_el$206, createComponent(Show, {
1684
+ }), _el$226, _co$47);
1685
+ insert(_el$209, createComponent(Show, {
1661
1686
  get when() {
1662
1687
  return props.error.timestamp;
1663
1688
  },
1664
1689
  get children() {
1665
- var _el$219 = getNextElement(_tmpl$49);
1666
- insert(_el$219, () => new Date(props.error.timestamp).toLocaleString());
1667
- return _el$219;
1690
+ var _el$222 = getNextElement(_tmpl$50);
1691
+ insert(_el$222, () => new Date(props.error.timestamp).toLocaleString());
1692
+ return _el$222;
1668
1693
  }
1669
- }), _el$225, _co$48);
1670
- return _el$203;
1694
+ }), _el$228, _co$48);
1695
+ return _el$206;
1671
1696
  })();
1672
1697
  }
1673
1698
  function isErrorResponse(content) {
@@ -1690,20 +1715,20 @@ function UIResourceHtmlRenderer(props) {
1690
1715
  return ((_a = props.resource.metadata) == null ? void 0 : _a.title) || ((_b = props.resource.uri) == null ? void 0 : _b.replace("ui://deposium/", "")) || "Resource";
1691
1716
  };
1692
1717
  return (() => {
1693
- var _el$229 = getNextElement(_tmpl$53), _el$233 = _el$229.firstChild, [_el$234, _co$50] = getNextMarker(_el$233.nextSibling), _el$232 = _el$234.nextSibling;
1694
- insert(_el$229, createComponent(Show, {
1718
+ var _el$232 = getNextElement(_tmpl$54), _el$236 = _el$232.firstChild, [_el$237, _co$50] = getNextMarker(_el$236.nextSibling), _el$235 = _el$237.nextSibling;
1719
+ insert(_el$232, createComponent(Show, {
1695
1720
  get when() {
1696
1721
  var _a;
1697
1722
  return ((_a = props.resource.metadata) == null ? void 0 : _a.title) || props.resource.uri;
1698
1723
  },
1699
1724
  get children() {
1700
- var _el$230 = getNextElement(_tmpl$52), _el$231 = _el$230.firstChild;
1701
- insert(_el$231, resourceTitle);
1702
- return _el$230;
1725
+ var _el$233 = getNextElement(_tmpl$53), _el$234 = _el$233.firstChild;
1726
+ insert(_el$234, resourceTitle);
1727
+ return _el$233;
1703
1728
  }
1704
- }), _el$234, _co$50);
1705
- effect(() => setProperty(_el$232, "innerHTML", htmlContent()));
1706
- return _el$229;
1729
+ }), _el$237, _co$50);
1730
+ effect(() => setProperty(_el$235, "innerHTML", htmlContent()));
1731
+ return _el$232;
1707
1732
  })();
1708
1733
  }
1709
1734
  const UIResourceRenderer = (props) => {
@@ -1809,8 +1834,8 @@ const UIResourceRenderer = (props) => {
1809
1834
  return createComponent(RenderProvider, {
1810
1835
  renderComponent,
1811
1836
  get children() {
1812
- var _el$235 = getNextElement(_tmpl$54), _el$236 = _el$235.firstChild, _el$237 = _el$236.nextSibling, [_el$238, _co$51] = getNextMarker(_el$237.nextSibling);
1813
- spread(_el$235, mergeProps({
1837
+ var _el$238 = getNextElement(_tmpl$55), _el$239 = _el$238.firstChild, _el$240 = _el$239.nextSibling, [_el$241, _co$51] = getNextMarker(_el$240.nextSibling);
1838
+ spread(_el$238, mergeProps({
1814
1839
  get ["class"]() {
1815
1840
  return `w-full ${props.class || ""}`;
1816
1841
  }
@@ -1819,13 +1844,13 @@ const UIResourceRenderer = (props) => {
1819
1844
  } : {
1820
1845
  "data-mcp-ui-component-id": outerKey()
1821
1846
  }), false, true);
1822
- insert(_el$236, createComponent(For, {
1847
+ insert(_el$239, createComponent(For, {
1823
1848
  get each() {
1824
1849
  return layoutData.components;
1825
1850
  },
1826
1851
  children: (component) => (() => {
1827
- var _el$239 = getNextElement(_tmpl$55);
1828
- insert(_el$239, createComponent(ComponentRenderer, {
1852
+ var _el$242 = getNextElement(_tmpl$56);
1853
+ insert(_el$242, createComponent(ComponentRenderer, {
1829
1854
  component,
1830
1855
  get onError() {
1831
1856
  return props.onError;
@@ -1842,17 +1867,17 @@ const UIResourceRenderer = (props) => {
1842
1867
  }));
1843
1868
  effect((_p$) => {
1844
1869
  var _v$42 = getGridStyleString(component), _v$43 = getUiResourceStableKey(component);
1845
- _p$.e = style(_el$239, _v$42, _p$.e);
1846
- _v$43 !== _p$.t && setAttribute(_el$239, "data-mcp-ui-component-id", _p$.t = _v$43);
1870
+ _p$.e = style(_el$242, _v$42, _p$.e);
1871
+ _v$43 !== _p$.t && setAttribute(_el$242, "data-mcp-ui-component-id", _p$.t = _v$43);
1847
1872
  return _p$;
1848
1873
  }, {
1849
1874
  e: void 0,
1850
1875
  t: void 0
1851
1876
  });
1852
- return _el$239;
1877
+ return _el$242;
1853
1878
  })()
1854
1879
  }));
1855
- insert(_el$235, createComponent(Show, {
1880
+ insert(_el$238, createComponent(Show, {
1856
1881
  get when() {
1857
1882
  return shouldShowAutoFooter();
1858
1883
  },
@@ -1863,10 +1888,10 @@ const UIResourceRenderer = (props) => {
1863
1888
  }
1864
1889
  });
1865
1890
  }
1866
- }), _el$238, _co$51);
1867
- effect((_$p) => style(_el$236, gridContainerStyle(), _$p));
1891
+ }), _el$241, _co$51);
1892
+ effect((_$p) => style(_el$239, gridContainerStyle(), _$p));
1868
1893
  runHydrationEvents();
1869
- return _el$235;
1894
+ return _el$238;
1870
1895
  }
1871
1896
  });
1872
1897
  };