@seed-ship/mcp-ui-solid 4.0.4 → 4.0.6

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.
@@ -21,7 +21,7 @@ const ExpandableWrapper = require("./ExpandableWrapper.cjs");
21
21
  const RenderContext = require("./RenderContext.cjs");
22
22
  const useAction = require("../hooks/useAction.cjs");
23
23
  const marked_esm = require("../node_modules/.pnpm/marked@16.4.2/node_modules/marked/lib/marked.esm.cjs");
24
- 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="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$6 = /* @__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$7 = /* @__PURE__ */ web.template(`<h3 class="text-sm font-semibold text-gray-900 dark:text-white mb-3">`), _tmpl$8 = /* @__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$9 = /* @__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$0 = /* @__PURE__ */ web.template(`<tbody class="bg-white dark:bg-gray-800 divide-y divide-gray-200 dark:divide-gray-700">`), _tmpl$1 = /* @__PURE__ */ web.template(`<tr>`), _tmpl$10 = /* @__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$11 = /* @__PURE__ */ web.template(`<tbody class="bg-white dark:bg-gray-800 relative">`), _tmpl$12 = /* @__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$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">Download CSV`), _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 JSON`), _tmpl$15 = /* @__PURE__ */ web.template(`<div class="absolute right-0 mt-1 w-36 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-lg shadow-lg py-1 text-sm"><!$><!/><!$><!/><!$><!/>`), _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"><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"><!$><!/><!$><!/>`), _tmpl$19 = /* @__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$20 = /* @__PURE__ */ web.template(`<div class="mt-3 flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"><span>Showing <!$><!/>&ndash;<!$><!/> of <!$><!/></span><div class="flex items-center gap-1"><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; Prev</button><span class=px-2>Page <!$><!/> / <!$><!/></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">Next &#x25B6;`), _tmpl$21 = /* @__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 overflow-hidden group"><!$><!/><div class=p-4><!$><!/><div class=overflow-x-auto 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-50 dark:bg-gray-900/50 sticky top-0 z-10"><tr></tr></thead><!$><!/></table></div><!$><!/><!$><!/>`), _tmpl$22 = /* @__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-50 dark:bg-gray-900/50">`), _tmpl$23 = /* @__PURE__ */ web.template(`<span class="ml-2 text-sm font-medium text-gray-500 dark:text-gray-400">`), _tmpl$24 = /* @__PURE__ */ web.template(`<div class="mt-3 flex items-center"><span><!$><!/> <!$><!/>%`), _tmpl$25 = /* @__PURE__ */ web.template(`<p class="mt-2 text-xs text-gray-500 dark:text-gray-400">`), _tmpl$26 = /* @__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$27 = /* @__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$28 = /* @__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$29 = /* @__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$30 = /* @__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$31 = /* @__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$32 = /* @__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$33 = /* @__PURE__ */ web.template(`<p class="text-xs text-gray-500 dark:text-gray-400 truncate">`), _tmpl$34 = /* @__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$35 = /* @__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$36 = /* @__PURE__ */ web.template(`<span aria-hidden=true>`), _tmpl$37 = /* @__PURE__ */ web.template(`<a rel="noopener noreferrer"><!$><!/><!$><!/>`), _tmpl$38 = /* @__PURE__ */ web.template(`<span class="animate-spin h-4 w-4 border-2 border-current border-t-transparent rounded-full"aria-hidden=true>`), _tmpl$39 = /* @__PURE__ */ web.template(`<button><!$><!/><!$><!/><!$><!/>`), _tmpl$40 = /* @__PURE__ */ web.template(`<p class="text-xs text-red-600 dark:text-red-400 mt-1">Type: <!$><!/>`), _tmpl$41 = /* @__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$42 = /* @__PURE__ */ web.template(`<p class="text-xs text-red-500 dark:text-red-500 mt-2">`), _tmpl$43 = /* @__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$44 = /* @__PURE__ */ web.template(`<li>`), _tmpl$45 = /* @__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$46 = /* @__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$47 = /* @__PURE__ */ web.template(`<div><div class="grid gap-4"></div><!$><!/>`), _tmpl$48 = /* @__PURE__ */ web.template(`<div>`);
24
+ 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="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$6 = /* @__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$7 = /* @__PURE__ */ web.template(`<h3 class="text-sm font-semibold text-gray-900 dark:text-white mb-3">`), _tmpl$8 = /* @__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$9 = /* @__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$0 = /* @__PURE__ */ web.template(`<tbody class="bg-white dark:bg-gray-800 divide-y divide-gray-200 dark:divide-gray-700">`), _tmpl$1 = /* @__PURE__ */ web.template(`<tr>`), _tmpl$10 = /* @__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$11 = /* @__PURE__ */ web.template(`<tbody class="bg-white dark:bg-gray-800 relative">`), _tmpl$12 = /* @__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$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">Download CSV`), _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 JSON`), _tmpl$15 = /* @__PURE__ */ web.template(`<div class="absolute right-0 mt-1 w-36 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-lg shadow-lg py-1 text-sm"><!$><!/><!$><!/><!$><!/>`), _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"><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"><!$><!/><!$><!/>`), _tmpl$19 = /* @__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$20 = /* @__PURE__ */ web.template(`<div class="mt-3 flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"><span>Showing <!$><!/>&ndash;<!$><!/> of <!$><!/></span><div class="flex items-center gap-1"><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; Prev</button><span class=px-2>Page <!$><!/> / <!$><!/></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">Next &#x25B6;`), _tmpl$21 = /* @__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 overflow-hidden group"><!$><!/><div class=p-4><!$><!/><div class=overflow-x-auto 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-50 dark:bg-gray-900/50 sticky top-0 z-10"><tr></tr></thead><!$><!/></table></div><!$><!/><!$><!/>`), _tmpl$22 = /* @__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-50 dark:bg-gray-900/50 cursor-pointer select-none hover:bg-gray-100 dark:hover:bg-gray-800/50 transition-colors"><span class="inline-flex items-center gap-1"><!$><!/><span class="text-[10px] leading-none">`), _tmpl$23 = /* @__PURE__ */ web.template(`<span class="ml-2 text-sm font-medium text-gray-500 dark:text-gray-400">`), _tmpl$24 = /* @__PURE__ */ web.template(`<div class="mt-3 flex items-center"><span><!$><!/> <!$><!/>%`), _tmpl$25 = /* @__PURE__ */ web.template(`<p class="mt-2 text-xs text-gray-500 dark:text-gray-400">`), _tmpl$26 = /* @__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$27 = /* @__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$28 = /* @__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$29 = /* @__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$30 = /* @__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$31 = /* @__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$32 = /* @__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$33 = /* @__PURE__ */ web.template(`<p class="text-xs text-gray-500 dark:text-gray-400 truncate">`), _tmpl$34 = /* @__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$35 = /* @__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$36 = /* @__PURE__ */ web.template(`<span aria-hidden=true>`), _tmpl$37 = /* @__PURE__ */ web.template(`<a rel="noopener noreferrer"><!$><!/><!$><!/>`), _tmpl$38 = /* @__PURE__ */ web.template(`<span class="animate-spin h-4 w-4 border-2 border-current border-t-transparent rounded-full"aria-hidden=true>`), _tmpl$39 = /* @__PURE__ */ web.template(`<button><!$><!/><!$><!/><!$><!/>`), _tmpl$40 = /* @__PURE__ */ web.template(`<p class="text-xs text-red-600 dark:text-red-400 mt-1">Type: <!$><!/>`), _tmpl$41 = /* @__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$42 = /* @__PURE__ */ web.template(`<p class="text-xs text-red-500 dark:text-red-500 mt-2">`), _tmpl$43 = /* @__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$44 = /* @__PURE__ */ web.template(`<li>`), _tmpl$45 = /* @__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$46 = /* @__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$47 = /* @__PURE__ */ web.template(`<div><div class="grid gap-4"></div><!$><!/>`), _tmpl$48 = /* @__PURE__ */ web.template(`<div>`);
25
25
  function CopyButton(props) {
26
26
  const [copied, setCopied] = solidJs.createSignal(false);
27
27
  const handleCopy = async () => {
@@ -266,23 +266,68 @@ function renderCellValue(value) {
266
266
  function TableRenderer(props) {
267
267
  const tableParams = props.component.params;
268
268
  let scrollContainerRef;
269
+ const allRows = () => tableParams.rows || [];
270
+ const columns = () => tableParams.columns || [];
271
+ const [sortKey, setSortKey] = solidJs.createSignal(null);
272
+ const [sortDir, setSortDir] = solidJs.createSignal(null);
273
+ const handleSort = (key) => {
274
+ if (sortKey() === key) {
275
+ if (sortDir() === "asc") setSortDir("desc");
276
+ else {
277
+ setSortKey(null);
278
+ setSortDir(null);
279
+ }
280
+ } else {
281
+ setSortKey(key);
282
+ setSortDir("asc");
283
+ }
284
+ setClientPage(0);
285
+ };
286
+ const sortedRows = solidJs.createMemo(() => {
287
+ var _a;
288
+ const r = allRows();
289
+ const key = sortKey();
290
+ const dir = sortDir();
291
+ if (!key || !dir) return r;
292
+ const col = columns().find((c) => c.key === key);
293
+ const isNum = (col == null ? void 0 : col.type) === "number" || r.length > 0 && typeof ((_a = r[0]) == null ? void 0 : _a[key]) === "number";
294
+ return [...r].sort((a, b) => {
295
+ const va = a[key], vb = b[key];
296
+ if (va == null && vb == null) return 0;
297
+ if (va == null) return 1;
298
+ if (vb == null) return -1;
299
+ let cmp;
300
+ if (isNum) {
301
+ cmp = (Number(va) || 0) - (Number(vb) || 0);
302
+ } else {
303
+ cmp = String(va).localeCompare(String(vb), "fr", {
304
+ sensitivity: "base"
305
+ });
306
+ }
307
+ return dir === "desc" ? -cmp : cmp;
308
+ });
309
+ });
310
+ const sortIndicator = (key) => {
311
+ if (sortKey() !== key) return "↕";
312
+ return sortDir() === "asc" ? "↑" : "↓";
313
+ };
269
314
  const clientPageSize = () => tableParams.pageSize ?? 25;
270
315
  const hasServerPagination = () => !!tableParams.pagination;
271
- const allRows = () => tableParams.rows || [];
272
- const needsClientPagination = () => !hasServerPagination() && clientPageSize() > 0 && allRows().length > clientPageSize();
316
+ const needsClientPagination = () => !hasServerPagination() && clientPageSize() > 0 && sortedRows().length > clientPageSize();
273
317
  const [clientPage, setClientPage] = solidJs.createSignal(tableParams.initialPage ?? 0);
274
- const clientTotalPages = () => needsClientPagination() ? Math.ceil(allRows().length / clientPageSize()) : 1;
318
+ const clientTotalPages = () => needsClientPagination() ? Math.ceil(sortedRows().length / clientPageSize()) : 1;
275
319
  const clientVisibleRows = solidJs.createMemo(() => {
276
- if (!needsClientPagination()) return allRows();
320
+ if (!needsClientPagination()) return sortedRows();
277
321
  const start = clientPage() * clientPageSize();
278
- return allRows().slice(start, start + clientPageSize());
322
+ return sortedRows().slice(start, start + clientPageSize());
279
323
  });
280
324
  const clientRangeStart = () => needsClientPagination() ? clientPage() * clientPageSize() + 1 : 1;
281
- const clientRangeEnd = () => needsClientPagination() ? Math.min((clientPage() + 1) * clientPageSize(), allRows().length) : allRows().length;
325
+ const clientRangeEnd = () => needsClientPagination() ? Math.min((clientPage() + 1) * clientPageSize(), sortedRows().length) : sortedRows().length;
282
326
  const [virtualizer, setVirtualizer] = solidJs.createSignal(null);
283
327
  const [isVirtualizing, setIsVirtualizing] = solidJs.createSignal(false);
284
328
  const shouldVirtualize = solidJs.createMemo(() => {
285
329
  var _a, _b;
330
+ if (needsClientPagination()) return false;
286
331
  const opts = tableParams.virtualize;
287
332
  if (opts === false) return false;
288
333
  if (opts === true) return true;
@@ -333,15 +378,15 @@ function TableRenderer(props) {
333
378
  return String(value);
334
379
  };
335
380
  const getTableText = () => {
336
- const columns = tableParams.columns || [];
381
+ const columns2 = tableParams.columns || [];
337
382
  const rows = tableParams.rows || [];
338
- const header = columns.map((c) => c.label).join(" ");
339
- const dataRows = rows.map((row) => columns.map((c) => getCellValue(row, c.key)).join(" ")).join("\n");
383
+ const header = columns2.map((c) => c.label).join(" ");
384
+ const dataRows = rows.map((row) => columns2.map((c) => getCellValue(row, c.key)).join(" ")).join("\n");
340
385
  return `${header}
341
386
  ${dataRows}`;
342
387
  };
343
388
  const getTableCSV = () => {
344
- const columns = tableParams.columns || [];
389
+ const columns2 = tableParams.columns || [];
345
390
  const rows = tableParams.rows || [];
346
391
  const escapeCSV = (val) => {
347
392
  if (val.includes(",") || val.includes('"') || val.includes("\n")) {
@@ -349,16 +394,16 @@ ${dataRows}`;
349
394
  }
350
395
  return val;
351
396
  };
352
- const header = columns.map((c) => escapeCSV(c.label)).join(",");
353
- const dataRows = rows.map((row) => columns.map((c) => escapeCSV(getCellValue(row, c.key))).join(",")).join("\n");
397
+ const header = columns2.map((c) => escapeCSV(c.label)).join(",");
398
+ const dataRows = rows.map((row) => columns2.map((c) => escapeCSV(getCellValue(row, c.key))).join(",")).join("\n");
354
399
  return `${header}
355
400
  ${dataRows}`;
356
401
  };
357
402
  const getTableJSON = () => {
358
- const columns = tableParams.columns || [];
403
+ const columns2 = tableParams.columns || [];
359
404
  const rows = tableParams.rows || [];
360
405
  return JSON.stringify({
361
- columns: columns.map((c) => ({
406
+ columns: columns2.map((c) => ({
362
407
  key: c.key,
363
408
  label: c.label
364
409
  })),
@@ -562,11 +607,26 @@ ${dataRows}`;
562
607
  return tableParams.columns;
563
608
  },
564
609
  children: (column) => (() => {
565
- var _el$103 = web.getNextElement(_tmpl$22);
566
- web.insert(_el$103, () => column.label);
567
- web.effect((_$p) => web.style(_el$103, column.width ? {
568
- width: column.width
569
- } : {}, _$p));
610
+ var _el$103 = web.getNextElement(_tmpl$22), _el$104 = _el$103.firstChild, _el$106 = _el$104.firstChild, [_el$107, _co$23] = web.getNextMarker(_el$106.nextSibling), _el$105 = _el$107.nextSibling;
611
+ web.addEventListener(_el$103, "click", () => handleSort(column.key));
612
+ web.insert(_el$104, () => column.label, _el$107, _co$23);
613
+ web.insert(_el$105, () => sortIndicator(column.key));
614
+ web.effect((_p$) => {
615
+ var _v$11 = column.width ? {
616
+ width: column.width
617
+ } : {}, _v$12 = `Sort by ${column.label}`, _v$13 = {
618
+ "opacity-30": sortKey() !== column.key,
619
+ "opacity-100 text-blue-600 dark:text-blue-400": sortKey() === column.key
620
+ };
621
+ _p$.e = web.style(_el$103, _v$11, _p$.e);
622
+ _v$12 !== _p$.t && web.setAttribute(_el$103, "title", _p$.t = _v$12);
623
+ _p$.a = web.classList(_el$105, _v$13, _p$.a);
624
+ return _p$;
625
+ }, {
626
+ e: void 0,
627
+ t: void 0,
628
+ a: void 0
629
+ });
570
630
  return _el$103;
571
631
  })()
572
632
  }));
@@ -646,51 +706,51 @@ function MetricRenderer(props) {
646
706
  return `${title}: ${value}${unit ? " " + unit : ""}`;
647
707
  };
648
708
  return (() => {
649
- var _el$104 = web.getNextElement(_tmpl$26), _el$126 = _el$104.firstChild, [_el$127, _co$28] = web.getNextMarker(_el$126.nextSibling), _el$105 = _el$127.nextSibling, _el$106 = _el$105.firstChild, _el$107 = _el$106.firstChild, _el$108 = _el$107.nextSibling, _el$109 = _el$108.firstChild, _el$111 = _el$109.nextSibling, [_el$112, _co$23] = web.getNextMarker(_el$111.nextSibling), _el$122 = _el$106.nextSibling, [_el$123, _co$26] = web.getNextMarker(_el$122.nextSibling), _el$124 = _el$123.nextSibling, [_el$125, _co$27] = web.getNextMarker(_el$124.nextSibling);
650
- web.insert(_el$104, web.createComponent(CopyButton, {
709
+ var _el$108 = web.getNextElement(_tmpl$26), _el$130 = _el$108.firstChild, [_el$131, _co$29] = web.getNextMarker(_el$130.nextSibling), _el$109 = _el$131.nextSibling, _el$110 = _el$109.firstChild, _el$111 = _el$110.firstChild, _el$112 = _el$111.nextSibling, _el$113 = _el$112.firstChild, _el$115 = _el$113.nextSibling, [_el$116, _co$24] = web.getNextMarker(_el$115.nextSibling), _el$126 = _el$110.nextSibling, [_el$127, _co$27] = web.getNextMarker(_el$126.nextSibling), _el$128 = _el$127.nextSibling, [_el$129, _co$28] = web.getNextMarker(_el$128.nextSibling);
710
+ web.insert(_el$108, web.createComponent(CopyButton, {
651
711
  getText: getMetricText,
652
712
  title: "Copy metric",
653
713
  position: "top-right"
654
- }), _el$127, _co$28);
655
- web.insert(_el$107, () => metricParams.title);
656
- web.insert(_el$109, () => metricParams.value);
657
- web.insert(_el$108, web.createComponent(solidJs.Show, {
714
+ }), _el$131, _co$29);
715
+ web.insert(_el$111, () => metricParams.title);
716
+ web.insert(_el$113, () => metricParams.value);
717
+ web.insert(_el$112, web.createComponent(solidJs.Show, {
658
718
  get when() {
659
719
  return metricParams.unit;
660
720
  },
661
721
  get children() {
662
- var _el$110 = web.getNextElement(_tmpl$23);
663
- web.insert(_el$110, () => metricParams.unit);
664
- return _el$110;
722
+ var _el$114 = web.getNextElement(_tmpl$23);
723
+ web.insert(_el$114, () => metricParams.unit);
724
+ return _el$114;
665
725
  }
666
- }), _el$112, _co$23);
667
- web.insert(_el$105, web.createComponent(solidJs.Show, {
726
+ }), _el$116, _co$24);
727
+ web.insert(_el$109, web.createComponent(solidJs.Show, {
668
728
  get when() {
669
729
  return metricParams.trend;
670
730
  },
671
731
  get children() {
672
- var _el$113 = web.getNextElement(_tmpl$24), _el$114 = _el$113.firstChild, _el$117 = _el$114.firstChild, [_el$118, _co$24] = web.getNextMarker(_el$117.nextSibling), _el$115 = _el$118.nextSibling, _el$119 = _el$115.nextSibling, [_el$120, _co$25] = web.getNextMarker(_el$119.nextSibling);
673
- _el$120.nextSibling;
674
- web.insert(_el$114, (() => {
732
+ var _el$117 = web.getNextElement(_tmpl$24), _el$118 = _el$117.firstChild, _el$121 = _el$118.firstChild, [_el$122, _co$25] = web.getNextMarker(_el$121.nextSibling), _el$119 = _el$122.nextSibling, _el$123 = _el$119.nextSibling, [_el$124, _co$26] = web.getNextMarker(_el$123.nextSibling);
733
+ _el$124.nextSibling;
734
+ web.insert(_el$118, (() => {
675
735
  var _c$ = web.memo(() => metricParams.trend.direction === "up");
676
736
  return () => _c$() ? "�" : metricParams.trend.direction === "down" ? "�" : "�";
677
- })(), _el$118, _co$24);
678
- web.insert(_el$114, () => Math.abs(metricParams.trend.value), _el$120, _co$25);
679
- web.effect(() => web.className(_el$114, `text-sm font-medium ${metricParams.trend.direction === "up" ? "text-green-600 dark:text-green-400" : metricParams.trend.direction === "down" ? "text-red-600 dark:text-red-400" : "text-gray-600 dark:text-gray-400"}`));
680
- return _el$113;
737
+ })(), _el$122, _co$25);
738
+ web.insert(_el$118, () => Math.abs(metricParams.trend.value), _el$124, _co$26);
739
+ web.effect(() => web.className(_el$118, `text-sm font-medium ${metricParams.trend.direction === "up" ? "text-green-600 dark:text-green-400" : metricParams.trend.direction === "down" ? "text-red-600 dark:text-red-400" : "text-gray-600 dark:text-gray-400"}`));
740
+ return _el$117;
681
741
  }
682
- }), _el$123, _co$26);
683
- web.insert(_el$105, web.createComponent(solidJs.Show, {
742
+ }), _el$127, _co$27);
743
+ web.insert(_el$109, web.createComponent(solidJs.Show, {
684
744
  get when() {
685
745
  return metricParams.subtitle;
686
746
  },
687
747
  get children() {
688
- var _el$121 = web.getNextElement(_tmpl$25);
689
- web.insert(_el$121, () => metricParams.subtitle);
690
- return _el$121;
748
+ var _el$125 = web.getNextElement(_tmpl$25);
749
+ web.insert(_el$125, () => metricParams.subtitle);
750
+ return _el$125;
691
751
  }
692
- }), _el$125, _co$27);
693
- return _el$104;
752
+ }), _el$129, _co$28);
753
+ return _el$108;
694
754
  })();
695
755
  }
696
756
  function extractImageFromMarkdown(content) {
@@ -731,62 +791,62 @@ function TextRenderer(props) {
731
791
  },
732
792
  get fallback() {
733
793
  return (() => {
734
- var _el$128 = web.getNextElement(_tmpl$27), _el$130 = _el$128.firstChild, [_el$131, _co$29] = web.getNextMarker(_el$130.nextSibling), _el$129 = _el$131.nextSibling;
735
- web.insert(_el$128, web.createComponent(CopyButton, {
794
+ var _el$132 = web.getNextElement(_tmpl$27), _el$134 = _el$132.firstChild, [_el$135, _co$30] = web.getNextMarker(_el$134.nextSibling), _el$133 = _el$135.nextSibling;
795
+ web.insert(_el$132, web.createComponent(CopyButton, {
736
796
  getText: getTextContent,
737
797
  title: "Copy text",
738
798
  position: "top-right"
739
- }), _el$131, _co$29);
799
+ }), _el$135, _co$30);
740
800
  web.effect((_p$) => {
741
- var _v$11 = `prose prose-sm dark:prose-invert max-w-none ${textParams.className || ""}`, _v$12 = htmlContent();
742
- _v$11 !== _p$.e && web.className(_el$129, _p$.e = _v$11);
743
- _v$12 !== _p$.t && web.setProperty(_el$129, "innerHTML", _p$.t = _v$12);
801
+ var _v$14 = `prose prose-sm dark:prose-invert max-w-none ${textParams.className || ""}`, _v$15 = htmlContent();
802
+ _v$14 !== _p$.e && web.className(_el$133, _p$.e = _v$14);
803
+ _v$15 !== _p$.t && web.setProperty(_el$133, "innerHTML", _p$.t = _v$15);
744
804
  return _p$;
745
805
  }, {
746
806
  e: void 0,
747
807
  t: void 0
748
808
  });
749
- return _el$128;
809
+ return _el$132;
750
810
  })();
751
811
  },
752
812
  children: (data) => (() => {
753
- var _el$132 = web.getNextElement(_tmpl$28), _el$133 = _el$132.firstChild, _el$134 = _el$133.firstChild, _el$135 = _el$134.firstChild, _el$136 = _el$133.nextSibling, _el$137 = _el$136.firstChild;
754
- web.insert(_el$137, () => data().credit);
813
+ var _el$136 = web.getNextElement(_tmpl$28), _el$137 = _el$136.firstChild, _el$138 = _el$137.firstChild, _el$139 = _el$138.firstChild, _el$140 = _el$137.nextSibling, _el$141 = _el$140.firstChild;
814
+ web.insert(_el$141, () => data().credit);
755
815
  web.effect((_p$) => {
756
- var _v$13 = data().linkUrl, _v$14 = data().imageUrl, _v$15 = data().alt;
757
- _v$13 !== _p$.e && web.setAttribute(_el$134, "href", _p$.e = _v$13);
758
- _v$14 !== _p$.t && web.setAttribute(_el$135, "src", _p$.t = _v$14);
759
- _v$15 !== _p$.a && web.setAttribute(_el$135, "alt", _p$.a = _v$15);
816
+ var _v$16 = data().linkUrl, _v$17 = data().imageUrl, _v$18 = data().alt;
817
+ _v$16 !== _p$.e && web.setAttribute(_el$138, "href", _p$.e = _v$16);
818
+ _v$17 !== _p$.t && web.setAttribute(_el$139, "src", _p$.t = _v$17);
819
+ _v$18 !== _p$.a && web.setAttribute(_el$139, "alt", _p$.a = _v$18);
760
820
  return _p$;
761
821
  }, {
762
822
  e: void 0,
763
823
  t: void 0,
764
824
  a: void 0
765
825
  });
766
- return _el$132;
826
+ return _el$136;
767
827
  })()
768
828
  });
769
829
  }
770
830
  function IframeRenderer(props) {
771
831
  const params = props.component.params;
772
832
  return (() => {
773
- var _el$138 = web.getNextElement(_tmpl$30), _el$142 = _el$138.firstChild, [_el$143, _co$30] = web.getNextMarker(_el$142.nextSibling), _el$141 = _el$143.nextSibling;
774
- web.insert(_el$138, web.createComponent(solidJs.Show, {
833
+ var _el$142 = web.getNextElement(_tmpl$30), _el$146 = _el$142.firstChild, [_el$147, _co$31] = web.getNextMarker(_el$146.nextSibling), _el$145 = _el$147.nextSibling;
834
+ web.insert(_el$142, web.createComponent(solidJs.Show, {
775
835
  get when() {
776
836
  return params.title;
777
837
  },
778
838
  get children() {
779
- var _el$139 = web.getNextElement(_tmpl$29), _el$140 = _el$139.firstChild;
780
- web.insert(_el$140, () => params.title);
781
- return _el$139;
839
+ var _el$143 = web.getNextElement(_tmpl$29), _el$144 = _el$143.firstChild;
840
+ web.insert(_el$144, () => params.title);
841
+ return _el$143;
782
842
  }
783
- }), _el$143, _co$30);
843
+ }), _el$147, _co$31);
784
844
  web.effect((_p$) => {
785
- var _v$16 = params.url, _v$17 = params.title || "Embedded content", _v$18 = `height: ${params.height || "400px"}; min-height: 300px;`, _v$19 = validation.getIframeSandbox(params.url);
786
- _v$16 !== _p$.e && web.setAttribute(_el$141, "src", _p$.e = _v$16);
787
- _v$17 !== _p$.t && web.setAttribute(_el$141, "title", _p$.t = _v$17);
788
- _p$.a = web.style(_el$141, _v$18, _p$.a);
789
- _v$19 !== _p$.o && web.setAttribute(_el$141, "sandbox", _p$.o = _v$19);
845
+ var _v$19 = params.url, _v$20 = params.title || "Embedded content", _v$21 = `height: ${params.height || "400px"}; min-height: 300px;`, _v$22 = validation.getIframeSandbox(params.url);
846
+ _v$19 !== _p$.e && web.setAttribute(_el$145, "src", _p$.e = _v$19);
847
+ _v$20 !== _p$.t && web.setAttribute(_el$145, "title", _p$.t = _v$20);
848
+ _p$.a = web.style(_el$145, _v$21, _p$.a);
849
+ _v$22 !== _p$.o && web.setAttribute(_el$145, "sandbox", _p$.o = _v$22);
790
850
  return _p$;
791
851
  }, {
792
852
  e: void 0,
@@ -794,30 +854,30 @@ function IframeRenderer(props) {
794
854
  a: void 0,
795
855
  o: void 0
796
856
  });
797
- return _el$138;
857
+ return _el$142;
798
858
  })();
799
859
  }
800
860
  function ImageRenderer(props) {
801
861
  const params = props.component.params;
802
862
  return (() => {
803
- var _el$144 = web.getNextElement(_tmpl$32), _el$145 = _el$144.firstChild, _el$146 = _el$145.firstChild, _el$147 = _el$146.firstChild, _el$150 = _el$145.nextSibling, [_el$151, _co$31] = web.getNextMarker(_el$150.nextSibling);
804
- web.insert(_el$144, web.createComponent(solidJs.Show, {
863
+ var _el$148 = web.getNextElement(_tmpl$32), _el$149 = _el$148.firstChild, _el$150 = _el$149.firstChild, _el$151 = _el$150.firstChild, _el$154 = _el$149.nextSibling, [_el$155, _co$32] = web.getNextMarker(_el$154.nextSibling);
864
+ web.insert(_el$148, web.createComponent(solidJs.Show, {
805
865
  get when() {
806
866
  return params.caption;
807
867
  },
808
868
  get children() {
809
- var _el$148 = web.getNextElement(_tmpl$31), _el$149 = _el$148.firstChild;
810
- web.insert(_el$149, () => params.caption);
811
- return _el$148;
869
+ var _el$152 = web.getNextElement(_tmpl$31), _el$153 = _el$152.firstChild;
870
+ web.insert(_el$153, () => params.caption);
871
+ return _el$152;
812
872
  }
813
- }), _el$151, _co$31);
873
+ }), _el$155, _co$32);
814
874
  web.effect((_p$) => {
815
- var _v$20 = `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 ${params.className || ""}`, _v$21 = params.url, _v$22 = `View full size: ${params.alt || "image"}`, _v$23 = params.url, _v$24 = params.alt || "Image";
816
- _v$20 !== _p$.e && web.className(_el$144, _p$.e = _v$20);
817
- _v$21 !== _p$.t && web.setAttribute(_el$146, "href", _p$.t = _v$21);
818
- _v$22 !== _p$.a && web.setAttribute(_el$146, "aria-label", _p$.a = _v$22);
819
- _v$23 !== _p$.o && web.setAttribute(_el$147, "src", _p$.o = _v$23);
820
- _v$24 !== _p$.i && web.setAttribute(_el$147, "alt", _p$.i = _v$24);
875
+ var _v$23 = `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 ${params.className || ""}`, _v$24 = params.url, _v$25 = `View full size: ${params.alt || "image"}`, _v$26 = params.url, _v$27 = params.alt || "Image";
876
+ _v$23 !== _p$.e && web.className(_el$148, _p$.e = _v$23);
877
+ _v$24 !== _p$.t && web.setAttribute(_el$150, "href", _p$.t = _v$24);
878
+ _v$25 !== _p$.a && web.setAttribute(_el$150, "aria-label", _p$.a = _v$25);
879
+ _v$26 !== _p$.o && web.setAttribute(_el$151, "src", _p$.o = _v$26);
880
+ _v$27 !== _p$.i && web.setAttribute(_el$151, "alt", _p$.i = _v$27);
821
881
  return _p$;
822
882
  }, {
823
883
  e: void 0,
@@ -826,30 +886,30 @@ function ImageRenderer(props) {
826
886
  o: void 0,
827
887
  i: void 0
828
888
  });
829
- return _el$144;
889
+ return _el$148;
830
890
  })();
831
891
  }
832
892
  function LinkRenderer(props) {
833
893
  const params = props.component.params;
834
894
  return (() => {
835
- var _el$152 = web.getNextElement(_tmpl$34), _el$153 = _el$152.firstChild, _el$154 = _el$153.nextSibling, _el$155 = _el$154.firstChild, _el$157 = _el$155.nextSibling, [_el$158, _co$32] = web.getNextMarker(_el$157.nextSibling);
836
- _el$152.$$click = (e) => e.stopPropagation();
837
- web.insert(_el$155, () => params.label || params.url);
838
- web.insert(_el$154, web.createComponent(solidJs.Show, {
895
+ var _el$156 = web.getNextElement(_tmpl$34), _el$157 = _el$156.firstChild, _el$158 = _el$157.nextSibling, _el$159 = _el$158.firstChild, _el$161 = _el$159.nextSibling, [_el$162, _co$33] = web.getNextMarker(_el$161.nextSibling);
896
+ _el$156.$$click = (e) => e.stopPropagation();
897
+ web.insert(_el$159, () => params.label || params.url);
898
+ web.insert(_el$158, web.createComponent(solidJs.Show, {
839
899
  get when() {
840
900
  return params.description;
841
901
  },
842
902
  get children() {
843
- var _el$156 = web.getNextElement(_tmpl$33);
844
- web.insert(_el$156, () => params.description);
845
- return _el$156;
903
+ var _el$160 = web.getNextElement(_tmpl$33);
904
+ web.insert(_el$160, () => params.description);
905
+ return _el$160;
846
906
  }
847
- }), _el$158, _co$32);
907
+ }), _el$162, _co$33);
848
908
  web.effect((_p$) => {
849
- var _v$25 = params.url, _v$26 = `${params.label || "Link"}: ${params.description || params.url} (opens in new tab)`, _v$27 = `flex items-center gap-3 p-4 bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors group h-full focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 ${params.className || ""}`;
850
- _v$25 !== _p$.e && web.setAttribute(_el$152, "href", _p$.e = _v$25);
851
- _v$26 !== _p$.t && web.setAttribute(_el$152, "aria-label", _p$.t = _v$26);
852
- _v$27 !== _p$.a && web.className(_el$152, _p$.a = _v$27);
909
+ var _v$28 = params.url, _v$29 = `${params.label || "Link"}: ${params.description || params.url} (opens in new tab)`, _v$30 = `flex items-center gap-3 p-4 bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors group h-full focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 ${params.className || ""}`;
910
+ _v$28 !== _p$.e && web.setAttribute(_el$156, "href", _p$.e = _v$28);
911
+ _v$29 !== _p$.t && web.setAttribute(_el$156, "aria-label", _p$.t = _v$29);
912
+ _v$30 !== _p$.a && web.className(_el$156, _p$.a = _v$30);
853
913
  return _p$;
854
914
  }, {
855
915
  e: void 0,
@@ -857,7 +917,7 @@ function LinkRenderer(props) {
857
917
  a: void 0
858
918
  });
859
919
  web.runHydrationEvents();
860
- return _el$152;
920
+ return _el$156;
861
921
  })();
862
922
  }
863
923
  function ComponentRenderer(props) {
@@ -871,12 +931,12 @@ function ComponentRenderer(props) {
871
931
  details: validation$1.errors
872
932
  });
873
933
  return (() => {
874
- var _el$159 = web.getNextElement(_tmpl$35), _el$160 = _el$159.firstChild, _el$161 = _el$160.nextSibling;
875
- web.insert(_el$161, () => {
934
+ var _el$163 = web.getNextElement(_tmpl$35), _el$164 = _el$163.firstChild, _el$165 = _el$164.nextSibling;
935
+ web.insert(_el$165, () => {
876
936
  var _a2, _b;
877
937
  return ((_b = (_a2 = validation$1.errors) == null ? void 0 : _a2[0]) == null ? void 0 : _b.message) || "Unknown validation error";
878
938
  });
879
- return _el$159;
939
+ return _el$163;
880
940
  })();
881
941
  }
882
942
  return web.createComponent(GenerativeUIErrorBoundary.GenerativeUIErrorBoundary, {
@@ -1122,27 +1182,27 @@ function ActionRenderer(props) {
1122
1182
  const isDisabled = () => params.disabled || params.action === "tool-call" && isExecuting();
1123
1183
  if (params.type === "link" || params.action === "link") {
1124
1184
  return (() => {
1125
- var _el$162 = web.getNextElement(_tmpl$37), _el$164 = _el$162.firstChild, [_el$165, _co$33] = web.getNextMarker(_el$164.nextSibling), _el$166 = _el$165.nextSibling, [_el$167, _co$34] = web.getNextMarker(_el$166.nextSibling);
1126
- _el$162.$$click = handleClick;
1127
- web.insert(_el$162, web.createComponent(solidJs.Show, {
1185
+ var _el$166 = web.getNextElement(_tmpl$37), _el$168 = _el$166.firstChild, [_el$169, _co$34] = web.getNextMarker(_el$168.nextSibling), _el$170 = _el$169.nextSibling, [_el$171, _co$35] = web.getNextMarker(_el$170.nextSibling);
1186
+ _el$166.$$click = handleClick;
1187
+ web.insert(_el$166, web.createComponent(solidJs.Show, {
1128
1188
  get when() {
1129
1189
  return params.icon;
1130
1190
  },
1131
1191
  get children() {
1132
- var _el$163 = web.getNextElement(_tmpl$36);
1133
- web.insert(_el$163, () => params.icon);
1134
- return _el$163;
1192
+ var _el$167 = web.getNextElement(_tmpl$36);
1193
+ web.insert(_el$167, () => params.icon);
1194
+ return _el$167;
1135
1195
  }
1136
- }), _el$165, _co$33);
1137
- web.insert(_el$162, () => params.label, _el$167, _co$34);
1196
+ }), _el$169, _co$34);
1197
+ web.insert(_el$166, () => params.label, _el$171, _co$35);
1138
1198
  web.effect((_p$) => {
1139
- var _v$28 = params.url || "#", _v$29 = params.url ? "_blank" : void 0, _v$30 = params.ariaLabel || params.label, _v$31 = `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
1199
+ var _v$31 = params.url || "#", _v$32 = params.url ? "_blank" : void 0, _v$33 = params.ariaLabel || params.label, _v$34 = `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
1140
1200
  ${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"}
1141
1201
  ${params.className || ""}`;
1142
- _v$28 !== _p$.e && web.setAttribute(_el$162, "href", _p$.e = _v$28);
1143
- _v$29 !== _p$.t && web.setAttribute(_el$162, "target", _p$.t = _v$29);
1144
- _v$30 !== _p$.a && web.setAttribute(_el$162, "aria-label", _p$.a = _v$30);
1145
- _v$31 !== _p$.o && web.className(_el$162, _p$.o = _v$31);
1202
+ _v$31 !== _p$.e && web.setAttribute(_el$166, "href", _p$.e = _v$31);
1203
+ _v$32 !== _p$.t && web.setAttribute(_el$166, "target", _p$.t = _v$32);
1204
+ _v$33 !== _p$.a && web.setAttribute(_el$166, "aria-label", _p$.a = _v$33);
1205
+ _v$34 !== _p$.o && web.className(_el$166, _p$.o = _v$34);
1146
1206
  return _p$;
1147
1207
  }, {
1148
1208
  e: void 0,
@@ -1151,42 +1211,42 @@ function ActionRenderer(props) {
1151
1211
  o: void 0
1152
1212
  });
1153
1213
  web.runHydrationEvents();
1154
- return _el$162;
1214
+ return _el$166;
1155
1215
  })();
1156
1216
  }
1157
1217
  return (() => {
1158
- var _el$168 = web.getNextElement(_tmpl$39), _el$171 = _el$168.firstChild, [_el$172, _co$35] = web.getNextMarker(_el$171.nextSibling), _el$173 = _el$172.nextSibling, [_el$174, _co$36] = web.getNextMarker(_el$173.nextSibling), _el$175 = _el$174.nextSibling, [_el$176, _co$37] = web.getNextMarker(_el$175.nextSibling);
1159
- _el$168.$$click = handleClick;
1160
- web.insert(_el$168, web.createComponent(solidJs.Show, {
1218
+ var _el$172 = web.getNextElement(_tmpl$39), _el$175 = _el$172.firstChild, [_el$176, _co$36] = web.getNextMarker(_el$175.nextSibling), _el$177 = _el$176.nextSibling, [_el$178, _co$37] = web.getNextMarker(_el$177.nextSibling), _el$179 = _el$178.nextSibling, [_el$180, _co$38] = web.getNextMarker(_el$179.nextSibling);
1219
+ _el$172.$$click = handleClick;
1220
+ web.insert(_el$172, web.createComponent(solidJs.Show, {
1161
1221
  get when() {
1162
1222
  return web.memo(() => !!isExecuting())() && params.action === "tool-call";
1163
1223
  },
1164
1224
  get children() {
1165
1225
  return web.getNextElement(_tmpl$38);
1166
1226
  }
1167
- }), _el$172, _co$35);
1168
- web.insert(_el$168, web.createComponent(solidJs.Show, {
1227
+ }), _el$176, _co$36);
1228
+ web.insert(_el$172, web.createComponent(solidJs.Show, {
1169
1229
  get when() {
1170
1230
  return web.memo(() => !!params.icon)() && !(isExecuting() && params.action === "tool-call");
1171
1231
  },
1172
1232
  get children() {
1173
- var _el$170 = web.getNextElement(_tmpl$36);
1174
- web.insert(_el$170, () => params.icon);
1175
- return _el$170;
1233
+ var _el$174 = web.getNextElement(_tmpl$36);
1234
+ web.insert(_el$174, () => params.icon);
1235
+ return _el$174;
1176
1236
  }
1177
- }), _el$174, _co$36);
1178
- web.insert(_el$168, () => params.label, _el$176, _co$37);
1237
+ }), _el$178, _co$37);
1238
+ web.insert(_el$172, () => params.label, _el$180, _co$38);
1179
1239
  web.effect((_p$) => {
1180
- var _v$32 = params.action === "submit" ? "submit" : "button", _v$33 = isDisabled(), _v$34 = isExecuting() && params.action === "tool-call", _v$35 = params.ariaLabel || params.label, _v$36 = `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
1240
+ var _v$35 = params.action === "submit" ? "submit" : "button", _v$36 = isDisabled(), _v$37 = isExecuting() && params.action === "tool-call", _v$38 = params.ariaLabel || params.label, _v$39 = `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
1181
1241
  ${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"}
1182
1242
  ${isDisabled() ? "opacity-50 cursor-not-allowed" : ""}
1183
1243
  ${params.size === "sm" ? "px-3 py-1.5 text-xs" : params.size === "lg" ? "px-6 py-3 text-base" : ""}
1184
1244
  ${params.className || ""}`;
1185
- _v$32 !== _p$.e && web.setAttribute(_el$168, "type", _p$.e = _v$32);
1186
- _v$33 !== _p$.t && web.setProperty(_el$168, "disabled", _p$.t = _v$33);
1187
- _v$34 !== _p$.a && web.setAttribute(_el$168, "aria-busy", _p$.a = _v$34);
1188
- _v$35 !== _p$.o && web.setAttribute(_el$168, "aria-label", _p$.o = _v$35);
1189
- _v$36 !== _p$.i && web.className(_el$168, _p$.i = _v$36);
1245
+ _v$35 !== _p$.e && web.setAttribute(_el$172, "type", _p$.e = _v$35);
1246
+ _v$36 !== _p$.t && web.setProperty(_el$172, "disabled", _p$.t = _v$36);
1247
+ _v$37 !== _p$.a && web.setAttribute(_el$172, "aria-busy", _p$.a = _v$37);
1248
+ _v$38 !== _p$.o && web.setAttribute(_el$172, "aria-label", _p$.o = _v$38);
1249
+ _v$39 !== _p$.i && web.className(_el$172, _p$.i = _v$39);
1190
1250
  return _p$;
1191
1251
  }, {
1192
1252
  e: void 0,
@@ -1196,7 +1256,7 @@ function ActionRenderer(props) {
1196
1256
  i: void 0
1197
1257
  });
1198
1258
  web.runHydrationEvents();
1199
- return _el$168;
1259
+ return _el$172;
1200
1260
  })();
1201
1261
  }
1202
1262
  function ErrorCardRenderer(props) {
@@ -1204,55 +1264,55 @@ function ErrorCardRenderer(props) {
1204
1264
  return `Error in ${props.error.tool || "unknown tool"}: ${props.error.message || "Unknown error"}`;
1205
1265
  };
1206
1266
  return (() => {
1207
- var _el$177 = web.getNextElement(_tmpl$43), _el$200 = _el$177.firstChild, [_el$201, _co$43] = web.getNextMarker(_el$200.nextSibling), _el$178 = _el$201.nextSibling, _el$179 = _el$178.firstChild, _el$180 = _el$179.nextSibling, _el$181 = _el$180.firstChild, _el$182 = _el$181.firstChild, _el$183 = _el$182.nextSibling, [_el$184, _co$38] = web.getNextMarker(_el$183.nextSibling), _el$185 = _el$181.nextSibling, _el$194 = _el$185.nextSibling, [_el$195, _co$40] = web.getNextMarker(_el$194.nextSibling), _el$196 = _el$195.nextSibling, [_el$197, _co$41] = web.getNextMarker(_el$196.nextSibling), _el$198 = _el$197.nextSibling, [_el$199, _co$42] = web.getNextMarker(_el$198.nextSibling);
1208
- web.insert(_el$177, web.createComponent(CopyButton, {
1267
+ var _el$181 = web.getNextElement(_tmpl$43), _el$204 = _el$181.firstChild, [_el$205, _co$44] = web.getNextMarker(_el$204.nextSibling), _el$182 = _el$205.nextSibling, _el$183 = _el$182.firstChild, _el$184 = _el$183.nextSibling, _el$185 = _el$184.firstChild, _el$186 = _el$185.firstChild, _el$187 = _el$186.nextSibling, [_el$188, _co$39] = web.getNextMarker(_el$187.nextSibling), _el$189 = _el$185.nextSibling, _el$198 = _el$189.nextSibling, [_el$199, _co$41] = web.getNextMarker(_el$198.nextSibling), _el$200 = _el$199.nextSibling, [_el$201, _co$42] = web.getNextMarker(_el$200.nextSibling), _el$202 = _el$201.nextSibling, [_el$203, _co$43] = web.getNextMarker(_el$202.nextSibling);
1268
+ web.insert(_el$181, web.createComponent(CopyButton, {
1209
1269
  getText: getErrorText,
1210
1270
  title: "Copy error details",
1211
1271
  position: "top-right"
1212
- }), _el$201, _co$43);
1213
- web.insert(_el$181, () => props.error.tool || "Unknown", _el$184, _co$38);
1214
- web.insert(_el$185, () => props.error.message || "An error occurred during tool execution");
1215
- web.insert(_el$180, web.createComponent(solidJs.Show, {
1272
+ }), _el$205, _co$44);
1273
+ web.insert(_el$185, () => props.error.tool || "Unknown", _el$188, _co$39);
1274
+ web.insert(_el$189, () => props.error.message || "An error occurred during tool execution");
1275
+ web.insert(_el$184, web.createComponent(solidJs.Show, {
1216
1276
  get when() {
1217
1277
  return props.error.type;
1218
1278
  },
1219
1279
  get children() {
1220
- var _el$186 = web.getNextElement(_tmpl$40), _el$187 = _el$186.firstChild, _el$188 = _el$187.nextSibling, [_el$189, _co$39] = web.getNextMarker(_el$188.nextSibling);
1221
- web.insert(_el$186, () => props.error.type, _el$189, _co$39);
1222
- return _el$186;
1280
+ var _el$190 = web.getNextElement(_tmpl$40), _el$191 = _el$190.firstChild, _el$192 = _el$191.nextSibling, [_el$193, _co$40] = web.getNextMarker(_el$192.nextSibling);
1281
+ web.insert(_el$190, () => props.error.type, _el$193, _co$40);
1282
+ return _el$190;
1223
1283
  }
1224
- }), _el$195, _co$40);
1225
- web.insert(_el$180, web.createComponent(solidJs.Show, {
1284
+ }), _el$199, _co$41);
1285
+ web.insert(_el$184, web.createComponent(solidJs.Show, {
1226
1286
  get when() {
1227
1287
  var _a;
1228
1288
  return (_a = props.error.suggestions) == null ? void 0 : _a.length;
1229
1289
  },
1230
1290
  get children() {
1231
- var _el$190 = web.getNextElement(_tmpl$41), _el$191 = _el$190.firstChild, _el$192 = _el$191.nextSibling;
1232
- web.insert(_el$192, web.createComponent(solidJs.For, {
1291
+ var _el$194 = web.getNextElement(_tmpl$41), _el$195 = _el$194.firstChild, _el$196 = _el$195.nextSibling;
1292
+ web.insert(_el$196, web.createComponent(solidJs.For, {
1233
1293
  get each() {
1234
1294
  return props.error.suggestions;
1235
1295
  },
1236
1296
  children: (suggestion) => (() => {
1237
- var _el$202 = web.getNextElement(_tmpl$44);
1238
- web.insert(_el$202, suggestion);
1239
- return _el$202;
1297
+ var _el$206 = web.getNextElement(_tmpl$44);
1298
+ web.insert(_el$206, suggestion);
1299
+ return _el$206;
1240
1300
  })()
1241
1301
  }));
1242
- return _el$190;
1302
+ return _el$194;
1243
1303
  }
1244
- }), _el$197, _co$41);
1245
- web.insert(_el$180, web.createComponent(solidJs.Show, {
1304
+ }), _el$201, _co$42);
1305
+ web.insert(_el$184, web.createComponent(solidJs.Show, {
1246
1306
  get when() {
1247
1307
  return props.error.timestamp;
1248
1308
  },
1249
1309
  get children() {
1250
- var _el$193 = web.getNextElement(_tmpl$42);
1251
- web.insert(_el$193, () => new Date(props.error.timestamp).toLocaleString());
1252
- return _el$193;
1310
+ var _el$197 = web.getNextElement(_tmpl$42);
1311
+ web.insert(_el$197, () => new Date(props.error.timestamp).toLocaleString());
1312
+ return _el$197;
1253
1313
  }
1254
- }), _el$199, _co$42);
1255
- return _el$177;
1314
+ }), _el$203, _co$43);
1315
+ return _el$181;
1256
1316
  })();
1257
1317
  }
1258
1318
  function isErrorResponse(content) {
@@ -1275,20 +1335,20 @@ function UIResourceHtmlRenderer(props) {
1275
1335
  return ((_a = props.resource.metadata) == null ? void 0 : _a.title) || ((_b = props.resource.uri) == null ? void 0 : _b.replace("ui://deposium/", "")) || "Resource";
1276
1336
  };
1277
1337
  return (() => {
1278
- var _el$203 = web.getNextElement(_tmpl$46), _el$207 = _el$203.firstChild, [_el$208, _co$44] = web.getNextMarker(_el$207.nextSibling), _el$206 = _el$208.nextSibling;
1279
- web.insert(_el$203, web.createComponent(solidJs.Show, {
1338
+ var _el$207 = web.getNextElement(_tmpl$46), _el$211 = _el$207.firstChild, [_el$212, _co$45] = web.getNextMarker(_el$211.nextSibling), _el$210 = _el$212.nextSibling;
1339
+ web.insert(_el$207, web.createComponent(solidJs.Show, {
1280
1340
  get when() {
1281
1341
  var _a;
1282
1342
  return ((_a = props.resource.metadata) == null ? void 0 : _a.title) || props.resource.uri;
1283
1343
  },
1284
1344
  get children() {
1285
- var _el$204 = web.getNextElement(_tmpl$45), _el$205 = _el$204.firstChild;
1286
- web.insert(_el$205, resourceTitle);
1287
- return _el$204;
1345
+ var _el$208 = web.getNextElement(_tmpl$45), _el$209 = _el$208.firstChild;
1346
+ web.insert(_el$209, resourceTitle);
1347
+ return _el$208;
1288
1348
  }
1289
- }), _el$208, _co$44);
1290
- web.effect(() => web.setProperty(_el$206, "innerHTML", htmlContent()));
1291
- return _el$203;
1349
+ }), _el$212, _co$45);
1350
+ web.effect(() => web.setProperty(_el$210, "innerHTML", htmlContent()));
1351
+ return _el$207;
1292
1352
  })();
1293
1353
  }
1294
1354
  const UIResourceRenderer = (props) => {
@@ -1368,24 +1428,24 @@ const UIResourceRenderer = (props) => {
1368
1428
  return web.createComponent(RenderContext.RenderProvider, {
1369
1429
  renderComponent,
1370
1430
  get children() {
1371
- var _el$209 = web.getNextElement(_tmpl$47), _el$210 = _el$209.firstChild, _el$211 = _el$210.nextSibling, [_el$212, _co$45] = web.getNextMarker(_el$211.nextSibling);
1372
- web.insert(_el$210, web.createComponent(solidJs.For, {
1431
+ var _el$213 = web.getNextElement(_tmpl$47), _el$214 = _el$213.firstChild, _el$215 = _el$214.nextSibling, [_el$216, _co$46] = web.getNextMarker(_el$215.nextSibling);
1432
+ web.insert(_el$214, web.createComponent(solidJs.For, {
1373
1433
  get each() {
1374
1434
  return layoutData.components;
1375
1435
  },
1376
1436
  children: (component) => (() => {
1377
- var _el$213 = web.getNextElement(_tmpl$48);
1378
- web.insert(_el$213, web.createComponent(ComponentRenderer, {
1437
+ var _el$217 = web.getNextElement(_tmpl$48);
1438
+ web.insert(_el$217, web.createComponent(ComponentRenderer, {
1379
1439
  component,
1380
1440
  get onError() {
1381
1441
  return props.onError;
1382
1442
  }
1383
1443
  }));
1384
- web.effect((_$p) => web.style(_el$213, getGridStyleString(component), _$p));
1385
- return _el$213;
1444
+ web.effect((_$p) => web.style(_el$217, getGridStyleString(component), _$p));
1445
+ return _el$217;
1386
1446
  })()
1387
1447
  }));
1388
- web.insert(_el$209, web.createComponent(solidJs.Show, {
1448
+ web.insert(_el$213, web.createComponent(solidJs.Show, {
1389
1449
  get when() {
1390
1450
  return shouldShowAutoFooter();
1391
1451
  },
@@ -1396,17 +1456,17 @@ const UIResourceRenderer = (props) => {
1396
1456
  }
1397
1457
  });
1398
1458
  }
1399
- }), _el$212, _co$45);
1459
+ }), _el$216, _co$46);
1400
1460
  web.effect((_p$) => {
1401
- var _v$37 = `w-full ${props.class || ""}`, _v$38 = gridContainerStyle();
1402
- _v$37 !== _p$.e && web.className(_el$209, _p$.e = _v$37);
1403
- _p$.t = web.style(_el$210, _v$38, _p$.t);
1461
+ var _v$40 = `w-full ${props.class || ""}`, _v$41 = gridContainerStyle();
1462
+ _v$40 !== _p$.e && web.className(_el$213, _p$.e = _v$40);
1463
+ _p$.t = web.style(_el$214, _v$41, _p$.t);
1404
1464
  return _p$;
1405
1465
  }, {
1406
1466
  e: void 0,
1407
1467
  t: void 0
1408
1468
  });
1409
- return _el$209;
1469
+ return _el$213;
1410
1470
  }
1411
1471
  });
1412
1472
  };