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