@seed-ship/mcp-ui-solid 4.3.6 → 4.3.7

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(`<button type=button class="absolute right-2 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 text-sm"aria-label="Clear search">&times;`), _tmpl$20 = /* @__PURE__ */ web.template(`<div class="relative mb-3"><span class="absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 pointer-events-none text-sm">🔍</span><input type=text class="w-full max-w-xs min-w-[200px] pl-8 pr-8 py-1.5 text-sm border border-gray-200 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-900 dark:text-white placeholder-gray-400 focus:border-blue-400 focus:ring-1 focus:ring-blue-400 outline-none"><!$><!/>`), _tmpl$21 = /* @__PURE__ */ web.template(`<p class="text-xs text-gray-500 dark:text-gray-400 mb-2"><!$><!/> result<!$><!/> on <!$><!/>`), _tmpl$22 = /* @__PURE__ */ web.template(`<div class="mt-3 flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"><span>Showing <!$><!/> - <!$><!/> of <!$><!/>`), _tmpl$23 = /* @__PURE__ */ web.template(`<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$24 = /* @__PURE__ */ web.template(`<button class="px-4 py-1.5 rounded-md bg-gray-100 dark:bg-gray-700 hover:bg-gray-200 dark:hover:bg-gray-600 text-gray-700 dark:text-gray-300 transition-colors"><!$><!/> (<!$><!/> suivant<!$><!/>)`), _tmpl$25 = /* @__PURE__ */ web.template(`<div class="mt-3 flex flex-col items-center gap-2 text-xs text-gray-500 dark:text-gray-400"><span><!$><!/>&ndash;<!$><!/> of <!$><!/></span><!$><!/>`), _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 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 sticky top-0 z-10"><tr></tr></thead><!$><!/></table></div><!$><!/><!$><!/><!$><!/>`), _tmpl$27 = /* @__PURE__ */ web.template(`<th scope=col class="px-6 py-3 text-left text-xs font-semibold text-gray-500 dark:text-gray-400 uppercase tracking-wider border-b border-gray-200 dark:border-gray-700 first:pl-6 last:pr-6 bg-gray-50 dark:bg-gray-900 cursor-pointer select-none hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors"><span class="inline-flex items-center gap-1"><!$><!/><span class="text-[10px] leading-none">`), _tmpl$28 = /* @__PURE__ */ web.template(`<span class="ml-2 text-sm font-medium text-gray-500 dark:text-gray-400">`), _tmpl$29 = /* @__PURE__ */ web.template(`<div class="mt-3 flex items-center"><span><!$><!/> <!$><!/>%`), _tmpl$30 = /* @__PURE__ */ web.template(`<p class="mt-2 text-xs text-gray-500 dark:text-gray-400">`), _tmpl$31 = /* @__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$32 = /* @__PURE__ */ web.template(`<div class="relative w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 p-4 group"><!$><!/><div>`), _tmpl$33 = /* @__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$34 = /* @__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$35 = /* @__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$36 = /* @__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$37 = /* @__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$38 = /* @__PURE__ */ web.template(`<p class="text-xs text-gray-500 dark:text-gray-400 truncate">`), _tmpl$39 = /* @__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$40 = /* @__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$41 = /* @__PURE__ */ web.template(`<span aria-hidden=true>`), _tmpl$42 = /* @__PURE__ */ web.template(`<a rel="noopener noreferrer"><!$><!/><!$><!/>`), _tmpl$43 = /* @__PURE__ */ web.template(`<span class="animate-spin h-4 w-4 border-2 border-current border-t-transparent rounded-full"aria-hidden=true>`), _tmpl$44 = /* @__PURE__ */ web.template(`<button><!$><!/><!$><!/><!$><!/>`), _tmpl$45 = /* @__PURE__ */ web.template(`<p class="text-xs text-red-600 dark:text-red-400 mt-1">Type: <!$><!/>`), _tmpl$46 = /* @__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$47 = /* @__PURE__ */ web.template(`<p class="text-xs text-red-500 dark:text-red-500 mt-2">`), _tmpl$48 = /* @__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$49 = /* @__PURE__ */ web.template(`<li>`), _tmpl$50 = /* @__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$51 = /* @__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$52 = /* @__PURE__ */ web.template(`<div><div class="grid gap-4"></div><!$><!/>`), _tmpl$53 = /* @__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(`<button type=button class="absolute right-2 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 text-sm"aria-label="Clear search">&times;`), _tmpl$20 = /* @__PURE__ */ web.template(`<div class="relative mb-3"><span class="absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 pointer-events-none text-sm">🔍</span><input type=text class="w-full max-w-xs min-w-[200px] pl-8 pr-8 py-1.5 text-sm border border-gray-200 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-900 dark:text-white placeholder-gray-400 focus:border-blue-400 focus:ring-1 focus:ring-blue-400 outline-none"><!$><!/>`), _tmpl$21 = /* @__PURE__ */ web.template(`<p class="text-xs text-gray-500 dark:text-gray-400 mb-2"><!$><!/> result<!$><!/> on <!$><!/>`), _tmpl$22 = /* @__PURE__ */ web.template(`<div class="mt-3 flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"><span>Showing <!$><!/> - <!$><!/> of <!$><!/>`), _tmpl$23 = /* @__PURE__ */ web.template(`<select class="ml-2 px-1 py-0.5 text-xs border border-gray-200 dark:border-gray-600 rounded bg-white dark:bg-gray-700 text-gray-700 dark:text-gray-300">`), _tmpl$24 = /* @__PURE__ */ web.template(`<span class=text-gray-400>/ page`), _tmpl$25 = /* @__PURE__ */ web.template(`<div class="mt-3 flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"><span><!$><!/>&ndash;<!$><!/> / <!$><!/></span><div class="flex items-center gap-2"><button class="px-2 py-1 rounded hover:bg-gray-100 dark:hover:bg-gray-700 disabled:opacity-40 disabled:cursor-not-allowed transition-colors">&#x25C0;</button><span><!$><!/> / <!$><!/></span><button class="px-2 py-1 rounded hover:bg-gray-100 dark:hover:bg-gray-700 disabled:opacity-40 disabled:cursor-not-allowed transition-colors">&#x25B6;</button><!$><!/>`), _tmpl$26 = /* @__PURE__ */ 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-100 dark:bg-gray-900 sticky top-0 z-10"><tr></tr></thead><!$><!/></table></div><!$><!/><!$><!/>`), _tmpl$27 = /* @__PURE__ */ web.template(`<th scope=col class="px-6 py-3 text-left text-xs font-semibold text-gray-500 dark:text-gray-400 uppercase tracking-wider border-b border-gray-200 dark:border-gray-700 first:pl-6 last:pr-6 bg-gray-100 dark:bg-gray-900 cursor-pointer select-none hover:bg-gray-200 dark:hover:bg-gray-800 transition-colors"><span class="inline-flex items-center gap-1"><!$><!/><span class="text-[10px] leading-none">`), _tmpl$28 = /* @__PURE__ */ web.template(`<option>`), _tmpl$29 = /* @__PURE__ */ web.template(`<span class="ml-2 text-sm font-medium text-gray-500 dark:text-gray-400">`), _tmpl$30 = /* @__PURE__ */ web.template(`<div class="mt-3 flex items-center"><span><!$><!/> <!$><!/>%`), _tmpl$31 = /* @__PURE__ */ web.template(`<p class="mt-2 text-xs text-gray-500 dark:text-gray-400">`), _tmpl$32 = /* @__PURE__ */ web.template(`<div class="relative w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 p-4 group"><!$><!/><div class="flex flex-col h-full justify-between"><div><p class="text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wide"></p><div class="mt-2 flex items-baseline"><p class="text-2xl font-semibold text-gray-900 dark:text-white"></p><!$><!/></div></div><!$><!/><!$><!/>`), _tmpl$33 = /* @__PURE__ */ web.template(`<div class="relative w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 p-4 group"><!$><!/><div>`), _tmpl$34 = /* @__PURE__ */ web.template(`<div class="w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden flex flex-col"><div class="flex-1 flex items-center justify-center p-4 bg-gray-50 dark:bg-gray-900 min-h-[200px]"><a target=_blank rel="noopener noreferrer"class=cursor-zoom-in><img class="max-w-full max-h-[400px] object-contain rounded shadow-sm hover:opacity-90 transition-opacity"loading=lazy></a></div><div class="p-3 border-t border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800"><p class="text-sm text-gray-600 dark:text-gray-400 text-center italic">`, true, false, false), _tmpl$35 = /* @__PURE__ */ web.template(`<div class="px-4 py-2 border-b border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-900"><h3 class="text-sm font-semibold text-gray-900 dark:text-white">`), _tmpl$36 = /* @__PURE__ */ web.template(`<div class="w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden flex flex-col"><!$><!/><iframe class="w-full border-0 flex-1"loading=lazy>`, true, false, false), _tmpl$37 = /* @__PURE__ */ web.template(`<figcaption class="p-3 border-t border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800"><p class="text-sm text-gray-600 dark:text-gray-400 text-center">`), _tmpl$38 = /* @__PURE__ */ web.template(`<figure><div class="flex-1 flex items-center justify-center p-4 bg-gray-50 dark:bg-gray-900 min-h-[200px]"><a target=_blank rel="noopener noreferrer"class="cursor-zoom-in focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 rounded"><img class="max-w-full max-h-[500px] object-contain rounded shadow-sm hover:opacity-95 transition-opacity"loading=lazy></a></div><!$><!/>`, true, false, false), _tmpl$39 = /* @__PURE__ */ web.template(`<p class="text-xs text-gray-500 dark:text-gray-400 truncate">`), _tmpl$40 = /* @__PURE__ */ web.template(`<a target=_blank rel="noopener noreferrer"><div class="p-2 bg-blue-50 dark:bg-blue-900/30 rounded-full text-blue-600 dark:text-blue-400 group-hover:bg-blue-100 dark:group-hover:bg-blue-900/50 shrink-0 transition-colors"aria-hidden=true><svg xmlns=http://www.w3.org/2000/svg class="w-5 h-5"viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg></div><div class="flex-1 min-w-0"><h4 class="text-sm font-medium text-gray-900 dark:text-white truncate group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors"></h4><!$><!/></div><svg xmlns=http://www.w3.org/2000/svg class="w-4 h-4 text-gray-400 group-hover:text-gray-600 dark:group-hover:text-gray-300 shrink-0 transition-colors"viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round aria-hidden=true><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1=10 y1=14 x2=21 y2=3>`), _tmpl$41 = /* @__PURE__ */ web.template(`<div class="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$42 = /* @__PURE__ */ web.template(`<span aria-hidden=true>`), _tmpl$43 = /* @__PURE__ */ web.template(`<a rel="noopener noreferrer"><!$><!/><!$><!/>`), _tmpl$44 = /* @__PURE__ */ web.template(`<span class="animate-spin h-4 w-4 border-2 border-current border-t-transparent rounded-full"aria-hidden=true>`), _tmpl$45 = /* @__PURE__ */ web.template(`<button><!$><!/><!$><!/><!$><!/>`), _tmpl$46 = /* @__PURE__ */ web.template(`<p class="text-xs text-red-600 dark:text-red-400 mt-1">Type: <!$><!/>`), _tmpl$47 = /* @__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$48 = /* @__PURE__ */ web.template(`<p class="text-xs text-red-500 dark:text-red-500 mt-2">`), _tmpl$49 = /* @__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$50 = /* @__PURE__ */ web.template(`<li>`), _tmpl$51 = /* @__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$52 = /* @__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$53 = /* @__PURE__ */ web.template(`<div><div class="grid gap-4"></div><!$><!/>`), _tmpl$54 = /* @__PURE__ */ web.template(`<div>`);
25
25
  function CopyButton(props) {
26
26
  const [copied, setCopied] = solidJs.createSignal(false);
27
27
  const handleCopy = async () => {
@@ -282,7 +282,6 @@ function TableRenderer(props) {
282
282
  setSortDir("asc");
283
283
  }
284
284
  setClientPage(0);
285
- setProgressivePages(1);
286
285
  };
287
286
  const sortedRows = solidJs.createMemo(() => {
288
287
  var _a;
@@ -323,7 +322,6 @@ function TableRenderer(props) {
323
322
  searchTimer = setTimeout(() => {
324
323
  setDebouncedQuery(value);
325
324
  setClientPage(0);
326
- setProgressivePages(1);
327
325
  }, 200);
328
326
  };
329
327
  const normalize = (s) => s.normalize("NFD").replace(/[\u0300-\u036f]/g, "").toLowerCase();
@@ -338,28 +336,45 @@ function TableRenderer(props) {
338
336
  }));
339
337
  });
340
338
  const isExpanded = ExpandableWrapper.useExpanded();
341
- const fullPageSize = () => tableParams.pageSize ?? 25;
342
- const chatPageSize = () => tableParams.chatPageSize ?? Math.min(10, fullPageSize());
343
- const clientPageSize = () => isExpanded() ? fullPageSize() : chatPageSize();
339
+ const defaultPageSize = () => tableParams.pageSize ?? 25;
340
+ const chatDefault = () => tableParams.chatPageSize ?? Math.min(10, defaultPageSize());
341
+ const [userPageSize, setUserPageSize] = solidJs.createSignal(null);
342
+ const clientPageSize = () => {
343
+ const ups = userPageSize();
344
+ if (ups !== null) return ups;
345
+ return isExpanded() ? defaultPageSize() : chatDefault();
346
+ };
347
+ const showAll = () => userPageSize() === 0;
344
348
  const hasServerPagination = () => !!tableParams.pagination;
345
- const isProgressiveMode = () => !!tableParams.showAllLabel;
346
- const needsClientPagination = () => !hasServerPagination() && clientPageSize() > 0 && filteredRows().length > clientPageSize();
349
+ const needsClientPagination = () => !hasServerPagination() && !showAll() && clientPageSize() > 0 && filteredRows().length > clientPageSize();
347
350
  const [clientPage, setClientPage] = solidJs.createSignal(tableParams.initialPage ?? 0);
348
- const [progressivePages, setProgressivePages] = solidJs.createSignal(1);
349
351
  const clientTotalPages = () => needsClientPagination() ? Math.ceil(filteredRows().length / clientPageSize()) : 1;
350
352
  const clientVisibleRows = solidJs.createMemo(() => {
351
- if (!needsClientPagination()) return filteredRows();
352
- if (isProgressiveMode()) {
353
- return filteredRows().slice(0, progressivePages() * clientPageSize());
354
- }
353
+ if (showAll() || !needsClientPagination()) return filteredRows();
355
354
  const start = clientPage() * clientPageSize();
356
355
  return filteredRows().slice(start, start + clientPageSize());
357
356
  });
358
- const clientRangeStart = () => needsClientPagination() ? isProgressiveMode() ? 1 : clientPage() * clientPageSize() + 1 : 1;
359
- const clientRangeEnd = () => needsClientPagination() ? isProgressiveMode() ? Math.min(progressivePages() * clientPageSize(), filteredRows().length) : Math.min((clientPage() + 1) * clientPageSize(), filteredRows().length) : filteredRows().length;
360
- const progressiveHasMore = () => isProgressiveMode() && needsClientPagination() && progressivePages() < clientTotalPages();
361
- const progressiveRemaining = () => filteredRows().length - progressivePages() * clientPageSize();
362
- const showMoreLabel = () => tableParams.showAllLabel || "Show more";
357
+ const clientRangeStart = () => needsClientPagination() ? clientPage() * clientPageSize() + 1 : 1;
358
+ const clientRangeEnd = () => needsClientPagination() ? Math.min((clientPage() + 1) * clientPageSize(), filteredRows().length) : filteredRows().length;
359
+ const pageSizeOptions = () => {
360
+ const total = filteredRows().length;
361
+ const opts = [];
362
+ for (const n of [10, 30, 60, 100]) {
363
+ if (n < total) opts.push({
364
+ value: n,
365
+ label: String(n)
366
+ });
367
+ }
368
+ opts.push({
369
+ value: 0,
370
+ label: "All"
371
+ });
372
+ return opts;
373
+ };
374
+ const handlePageSizeChange = (val) => {
375
+ setUserPageSize(val === 0 ? 0 : val);
376
+ setClientPage(0);
377
+ };
363
378
  const [virtualizer, setVirtualizer] = solidJs.createSignal(null);
364
379
  const [isVirtualizing, setIsVirtualizing] = solidJs.createSignal(false);
365
380
  const shouldVirtualize = solidJs.createMemo(() => {
@@ -553,7 +568,7 @@ ${dataRows}`;
553
568
  },
554
569
  copyLabel: "Copy table (CSV)",
555
570
  get children() {
556
- var _el$29 = web.getNextElement(_tmpl$26), _el$142 = _el$29.firstChild, [_el$143, _co$35] = web.getNextMarker(_el$142.nextSibling), _el$44 = _el$143.nextSibling, _el$132 = _el$44.firstChild, [_el$133, _co$30] = web.getNextMarker(_el$132.nextSibling), _el$134 = _el$133.nextSibling, [_el$135, _co$31] = web.getNextMarker(_el$134.nextSibling), _el$70 = _el$135.nextSibling, _el$71 = _el$70.firstChild, _el$72 = _el$71.firstChild, _el$73 = _el$72.firstChild, _el$74 = _el$72.nextSibling, [_el$75, _co$14] = web.getNextMarker(_el$74.nextSibling), _el$136 = _el$70.nextSibling, [_el$137, _co$32] = web.getNextMarker(_el$136.nextSibling), _el$138 = _el$137.nextSibling, [_el$139, _co$33] = web.getNextMarker(_el$138.nextSibling), _el$140 = _el$139.nextSibling, [_el$141, _co$34] = web.getNextMarker(_el$140.nextSibling);
571
+ var _el$29 = web.getNextElement(_tmpl$26), _el$120 = _el$29.firstChild, [_el$121, _co$28] = web.getNextMarker(_el$120.nextSibling), _el$44 = _el$121.nextSibling, _el$112 = _el$44.firstChild, [_el$113, _co$24] = web.getNextMarker(_el$112.nextSibling), _el$114 = _el$113.nextSibling, [_el$115, _co$25] = web.getNextMarker(_el$114.nextSibling), _el$70 = _el$115.nextSibling, _el$71 = _el$70.firstChild, _el$72 = _el$71.firstChild, _el$73 = _el$72.firstChild, _el$74 = _el$72.nextSibling, [_el$75, _co$14] = web.getNextMarker(_el$74.nextSibling), _el$116 = _el$70.nextSibling, [_el$117, _co$26] = web.getNextMarker(_el$116.nextSibling), _el$118 = _el$117.nextSibling, [_el$119, _co$27] = web.getNextMarker(_el$118.nextSibling);
557
572
  web.insert(_el$29, web.createComponent(solidJs.Show, {
558
573
  when: exportable,
559
574
  get fallback() {
@@ -611,7 +626,7 @@ ${dataRows}`;
611
626
  web.runHydrationEvents();
612
627
  return _el$30;
613
628
  }
614
- }), _el$143, _co$35);
629
+ }), _el$121, _co$28);
615
630
  web.insert(_el$44, web.createComponent(solidJs.Show, {
616
631
  get when() {
617
632
  return tableParams.title;
@@ -636,7 +651,7 @@ ${dataRows}`;
636
651
  }), _el$54, _co$1);
637
652
  return _el$45;
638
653
  }
639
- }), _el$133, _co$30);
654
+ }), _el$113, _co$24);
640
655
  web.insert(_el$44, web.createComponent(solidJs.Show, {
641
656
  get when() {
642
657
  return isSearchable();
@@ -677,7 +692,7 @@ ${dataRows}`;
677
692
  }
678
693
  })];
679
694
  }
680
- }), _el$135, _co$31);
695
+ }), _el$115, _co$25);
681
696
  var _ref$ = scrollContainerRef;
682
697
  typeof _ref$ === "function" ? web.use(_ref$, _el$70) : scrollContainerRef = _el$70;
683
698
  web.insert(_el$73, web.createComponent(solidJs.For, {
@@ -685,10 +700,10 @@ ${dataRows}`;
685
700
  return tableParams.columns;
686
701
  },
687
702
  children: (column) => (() => {
688
- var _el$144 = web.getNextElement(_tmpl$27), _el$145 = _el$144.firstChild, _el$147 = _el$145.firstChild, [_el$148, _co$36] = web.getNextMarker(_el$147.nextSibling), _el$146 = _el$148.nextSibling;
689
- web.addEventListener(_el$144, "click", () => handleSort(column.key));
690
- web.insert(_el$145, () => column.label, _el$148, _co$36);
691
- web.insert(_el$146, () => sortIndicator(column.key));
703
+ var _el$122 = web.getNextElement(_tmpl$27), _el$123 = _el$122.firstChild, _el$125 = _el$123.firstChild, [_el$126, _co$29] = web.getNextMarker(_el$125.nextSibling), _el$124 = _el$126.nextSibling;
704
+ web.addEventListener(_el$122, "click", () => handleSort(column.key));
705
+ web.insert(_el$123, () => column.label, _el$126, _co$29);
706
+ web.insert(_el$124, () => sortIndicator(column.key));
692
707
  web.effect((_p$) => {
693
708
  var _v$11 = column.width ? {
694
709
  width: column.width
@@ -696,16 +711,16 @@ ${dataRows}`;
696
711
  "opacity-30": sortKey() !== column.key,
697
712
  "opacity-100 text-blue-600 dark:text-blue-400": sortKey() === column.key
698
713
  };
699
- _p$.e = web.style(_el$144, _v$11, _p$.e);
700
- _v$12 !== _p$.t && web.setAttribute(_el$144, "title", _p$.t = _v$12);
701
- _p$.a = web.classList(_el$146, _v$13, _p$.a);
714
+ _p$.e = web.style(_el$122, _v$11, _p$.e);
715
+ _v$12 !== _p$.t && web.setAttribute(_el$122, "title", _p$.t = _v$12);
716
+ _p$.a = web.classList(_el$124, _v$13, _p$.a);
702
717
  return _p$;
703
718
  }, {
704
719
  e: void 0,
705
720
  t: void 0,
706
721
  a: void 0
707
722
  });
708
- return _el$144;
723
+ return _el$122;
709
724
  })()
710
725
  }));
711
726
  web.insert(_el$71, web.createComponent(solidJs.Show, {
@@ -730,24 +745,48 @@ ${dataRows}`;
730
745
  web.insert(_el$77, () => tableParams.pagination.totalRows, _el$88, _co$17);
731
746
  return _el$76;
732
747
  }
733
- }), _el$137, _co$32);
748
+ }), _el$117, _co$26);
734
749
  web.insert(_el$44, web.createComponent(solidJs.Show, {
735
750
  get when() {
736
- return web.memo(() => !!needsClientPagination())() && !isProgressiveMode();
751
+ return needsClientPagination();
737
752
  },
738
753
  get children() {
739
- var _el$89 = web.getNextElement(_tmpl$23), _el$90 = _el$89.firstChild, _el$91 = _el$90.firstChild, _el$94 = _el$91.nextSibling, [_el$95, _co$18] = web.getNextMarker(_el$94.nextSibling), _el$92 = _el$95.nextSibling, _el$96 = _el$92.nextSibling, [_el$97, _co$19] = web.getNextMarker(_el$96.nextSibling), _el$93 = _el$97.nextSibling, _el$98 = _el$93.nextSibling, [_el$99, _co$20] = web.getNextMarker(_el$98.nextSibling), _el$100 = _el$90.nextSibling, _el$101 = _el$100.firstChild, _el$102 = _el$101.nextSibling, _el$103 = _el$102.firstChild, _el$105 = _el$103.nextSibling, [_el$106, _co$21] = web.getNextMarker(_el$105.nextSibling), _el$104 = _el$106.nextSibling, _el$107 = _el$104.nextSibling, [_el$108, _co$22] = web.getNextMarker(_el$107.nextSibling), _el$109 = _el$102.nextSibling;
740
- web.insert(_el$90, clientRangeStart, _el$95, _co$18);
741
- web.insert(_el$90, clientRangeEnd, _el$97, _co$19);
742
- web.insert(_el$90, () => filteredRows().length.toLocaleString("fr-FR"), _el$99, _co$20);
743
- _el$101.$$click = () => setClientPage((p) => p - 1);
744
- web.insert(_el$102, () => clientPage() + 1, _el$106, _co$21);
745
- web.insert(_el$102, clientTotalPages, _el$108, _co$22);
746
- _el$109.$$click = () => setClientPage((p) => p + 1);
754
+ var _el$89 = web.getNextElement(_tmpl$25), _el$90 = _el$89.firstChild, _el$93 = _el$90.firstChild, [_el$94, _co$18] = web.getNextMarker(_el$93.nextSibling), _el$91 = _el$94.nextSibling, _el$95 = _el$91.nextSibling, [_el$96, _co$19] = web.getNextMarker(_el$95.nextSibling), _el$92 = _el$96.nextSibling, _el$97 = _el$92.nextSibling, [_el$98, _co$20] = web.getNextMarker(_el$97.nextSibling), _el$99 = _el$90.nextSibling, _el$100 = _el$99.firstChild, _el$101 = _el$100.nextSibling, _el$103 = _el$101.firstChild, [_el$104, _co$21] = web.getNextMarker(_el$103.nextSibling), _el$102 = _el$104.nextSibling, _el$105 = _el$102.nextSibling, [_el$106, _co$22] = web.getNextMarker(_el$105.nextSibling), _el$107 = _el$101.nextSibling, _el$110 = _el$107.nextSibling, [_el$111, _co$23] = web.getNextMarker(_el$110.nextSibling);
755
+ web.insert(_el$90, clientRangeStart, _el$94, _co$18);
756
+ web.insert(_el$90, clientRangeEnd, _el$96, _co$19);
757
+ web.insert(_el$90, () => filteredRows().length.toLocaleString("fr-FR"), _el$98, _co$20);
758
+ _el$100.$$click = () => setClientPage((p) => p - 1);
759
+ web.insert(_el$101, () => clientPage() + 1, _el$104, _co$21);
760
+ web.insert(_el$101, clientTotalPages, _el$106, _co$22);
761
+ _el$107.$$click = () => setClientPage((p) => p + 1);
762
+ web.insert(_el$99, web.createComponent(solidJs.Show, {
763
+ get when() {
764
+ return web.memo(() => !!isExpanded())() && filteredRows().length > 10;
765
+ },
766
+ get children() {
767
+ return [(() => {
768
+ var _el$108 = web.getNextElement(_tmpl$23);
769
+ _el$108.addEventListener("change", (e) => handlePageSizeChange(Number(e.currentTarget.value)));
770
+ web.insert(_el$108, web.createComponent(solidJs.For, {
771
+ get each() {
772
+ return pageSizeOptions();
773
+ },
774
+ children: (opt) => (() => {
775
+ var _el$127 = web.getNextElement(_tmpl$28);
776
+ web.insert(_el$127, () => opt.label);
777
+ web.effect(() => web.setProperty(_el$127, "value", opt.value));
778
+ return _el$127;
779
+ })()
780
+ }));
781
+ web.effect(() => web.setProperty(_el$108, "value", clientPageSize()));
782
+ return _el$108;
783
+ })(), web.getNextElement(_tmpl$24)];
784
+ }
785
+ }), _el$111, _co$23);
747
786
  web.effect((_p$) => {
748
787
  var _v$8 = clientPage() === 0, _v$9 = clientPage() >= clientTotalPages() - 1;
749
- _v$8 !== _p$.e && web.setProperty(_el$101, "disabled", _p$.e = _v$8);
750
- _v$9 !== _p$.t && web.setProperty(_el$109, "disabled", _p$.t = _v$9);
788
+ _v$8 !== _p$.e && web.setProperty(_el$100, "disabled", _p$.e = _v$8);
789
+ _v$9 !== _p$.t && web.setProperty(_el$107, "disabled", _p$.t = _v$9);
751
790
  return _p$;
752
791
  }, {
753
792
  e: void 0,
@@ -756,40 +795,16 @@ ${dataRows}`;
756
795
  web.runHydrationEvents();
757
796
  return _el$89;
758
797
  }
759
- }), _el$139, _co$33);
760
- web.insert(_el$44, web.createComponent(solidJs.Show, {
761
- get when() {
762
- return web.memo(() => !!needsClientPagination())() && isProgressiveMode();
763
- },
764
- get children() {
765
- var _el$110 = web.getNextElement(_tmpl$25), _el$111 = _el$110.firstChild, _el$114 = _el$111.firstChild, [_el$115, _co$23] = web.getNextMarker(_el$114.nextSibling), _el$112 = _el$115.nextSibling, _el$116 = _el$112.nextSibling, [_el$117, _co$24] = web.getNextMarker(_el$116.nextSibling), _el$113 = _el$117.nextSibling, _el$118 = _el$113.nextSibling, [_el$119, _co$25] = web.getNextMarker(_el$118.nextSibling), _el$130 = _el$111.nextSibling, [_el$131, _co$29] = web.getNextMarker(_el$130.nextSibling);
766
- web.insert(_el$111, clientRangeStart, _el$115, _co$23);
767
- web.insert(_el$111, clientRangeEnd, _el$117, _co$24);
768
- web.insert(_el$111, () => filteredRows().length.toLocaleString("fr-FR"), _el$119, _co$25);
769
- web.insert(_el$110, web.createComponent(solidJs.Show, {
770
- get when() {
771
- return progressiveHasMore();
772
- },
773
- get children() {
774
- var _el$120 = web.getNextElement(_tmpl$24), _el$124 = _el$120.firstChild, [_el$125, _co$26] = web.getNextMarker(_el$124.nextSibling), _el$121 = _el$125.nextSibling, _el$126 = _el$121.nextSibling, [_el$127, _co$27] = web.getNextMarker(_el$126.nextSibling), _el$122 = _el$127.nextSibling, _el$128 = _el$122.nextSibling, [_el$129, _co$28] = web.getNextMarker(_el$128.nextSibling);
775
- _el$129.nextSibling;
776
- _el$120.$$click = () => setProgressivePages((p) => p + 1);
777
- web.insert(_el$120, showMoreLabel, _el$125, _co$26);
778
- web.insert(_el$120, () => Math.min(progressiveRemaining(), clientPageSize()), _el$127, _co$27);
779
- web.insert(_el$120, () => Math.min(progressiveRemaining(), clientPageSize()) > 1 ? "es" : "e", _el$129, _co$28);
780
- web.runHydrationEvents();
781
- return _el$120;
782
- }
783
- }), _el$131, _co$29);
784
- return _el$110;
785
- }
786
- }), _el$141, _co$34);
798
+ }), _el$119, _co$27);
787
799
  web.effect((_p$) => {
788
800
  var _v$0 = isVirtualizing() ? {
789
801
  "max-height": "500px",
790
802
  "overflow-y": "auto"
791
803
  } : clientVisibleRows().length > 8 ? {
792
- "max-height": isExpanded() ? "70vh" : "400px",
804
+ "max-height": isExpanded() ? "calc(100vh - 180px)" : "400px",
805
+ "overflow-y": "auto"
806
+ } : isExpanded() ? {
807
+ "max-height": "calc(100vh - 180px)",
793
808
  "overflow-y": "auto"
794
809
  } : {}, _v$1 = tableParams.title || "Data table", _v$10 = tableParams.title ? `${tableId}-title` : void 0;
795
810
  _p$.e = web.style(_el$70, _v$0, _p$.e);
@@ -814,51 +829,51 @@ function MetricRenderer(props) {
814
829
  return `${title}: ${value}${unit ? " " + unit : ""}`;
815
830
  };
816
831
  return (() => {
817
- var _el$149 = web.getNextElement(_tmpl$31), _el$171 = _el$149.firstChild, [_el$172, _co$42] = web.getNextMarker(_el$171.nextSibling), _el$150 = _el$172.nextSibling, _el$151 = _el$150.firstChild, _el$152 = _el$151.firstChild, _el$153 = _el$152.nextSibling, _el$154 = _el$153.firstChild, _el$156 = _el$154.nextSibling, [_el$157, _co$37] = web.getNextMarker(_el$156.nextSibling), _el$167 = _el$151.nextSibling, [_el$168, _co$40] = web.getNextMarker(_el$167.nextSibling), _el$169 = _el$168.nextSibling, [_el$170, _co$41] = web.getNextMarker(_el$169.nextSibling);
818
- web.insert(_el$149, web.createComponent(CopyButton, {
832
+ var _el$128 = web.getNextElement(_tmpl$32), _el$150 = _el$128.firstChild, [_el$151, _co$35] = web.getNextMarker(_el$150.nextSibling), _el$129 = _el$151.nextSibling, _el$130 = _el$129.firstChild, _el$131 = _el$130.firstChild, _el$132 = _el$131.nextSibling, _el$133 = _el$132.firstChild, _el$135 = _el$133.nextSibling, [_el$136, _co$30] = web.getNextMarker(_el$135.nextSibling), _el$146 = _el$130.nextSibling, [_el$147, _co$33] = web.getNextMarker(_el$146.nextSibling), _el$148 = _el$147.nextSibling, [_el$149, _co$34] = web.getNextMarker(_el$148.nextSibling);
833
+ web.insert(_el$128, web.createComponent(CopyButton, {
819
834
  getText: getMetricText,
820
835
  title: "Copy metric",
821
836
  position: "top-right"
822
- }), _el$172, _co$42);
823
- web.insert(_el$152, () => metricParams.title);
824
- web.insert(_el$154, () => metricParams.value);
825
- web.insert(_el$153, web.createComponent(solidJs.Show, {
837
+ }), _el$151, _co$35);
838
+ web.insert(_el$131, () => metricParams.title);
839
+ web.insert(_el$133, () => metricParams.value);
840
+ web.insert(_el$132, web.createComponent(solidJs.Show, {
826
841
  get when() {
827
842
  return metricParams.unit;
828
843
  },
829
844
  get children() {
830
- var _el$155 = web.getNextElement(_tmpl$28);
831
- web.insert(_el$155, () => metricParams.unit);
832
- return _el$155;
845
+ var _el$134 = web.getNextElement(_tmpl$29);
846
+ web.insert(_el$134, () => metricParams.unit);
847
+ return _el$134;
833
848
  }
834
- }), _el$157, _co$37);
835
- web.insert(_el$150, web.createComponent(solidJs.Show, {
849
+ }), _el$136, _co$30);
850
+ web.insert(_el$129, web.createComponent(solidJs.Show, {
836
851
  get when() {
837
852
  return metricParams.trend;
838
853
  },
839
854
  get children() {
840
- var _el$158 = web.getNextElement(_tmpl$29), _el$159 = _el$158.firstChild, _el$162 = _el$159.firstChild, [_el$163, _co$38] = web.getNextMarker(_el$162.nextSibling), _el$160 = _el$163.nextSibling, _el$164 = _el$160.nextSibling, [_el$165, _co$39] = web.getNextMarker(_el$164.nextSibling);
841
- _el$165.nextSibling;
842
- web.insert(_el$159, (() => {
855
+ var _el$137 = web.getNextElement(_tmpl$30), _el$138 = _el$137.firstChild, _el$141 = _el$138.firstChild, [_el$142, _co$31] = web.getNextMarker(_el$141.nextSibling), _el$139 = _el$142.nextSibling, _el$143 = _el$139.nextSibling, [_el$144, _co$32] = web.getNextMarker(_el$143.nextSibling);
856
+ _el$144.nextSibling;
857
+ web.insert(_el$138, (() => {
843
858
  var _c$ = web.memo(() => metricParams.trend.direction === "up");
844
859
  return () => _c$() ? "�" : metricParams.trend.direction === "down" ? "�" : "�";
845
- })(), _el$163, _co$38);
846
- web.insert(_el$159, () => Math.abs(metricParams.trend.value), _el$165, _co$39);
847
- web.effect(() => web.className(_el$159, `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"}`));
848
- return _el$158;
860
+ })(), _el$142, _co$31);
861
+ web.insert(_el$138, () => Math.abs(metricParams.trend.value), _el$144, _co$32);
862
+ web.effect(() => web.className(_el$138, `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"}`));
863
+ return _el$137;
849
864
  }
850
- }), _el$168, _co$40);
851
- web.insert(_el$150, web.createComponent(solidJs.Show, {
865
+ }), _el$147, _co$33);
866
+ web.insert(_el$129, web.createComponent(solidJs.Show, {
852
867
  get when() {
853
868
  return metricParams.subtitle;
854
869
  },
855
870
  get children() {
856
- var _el$166 = web.getNextElement(_tmpl$30);
857
- web.insert(_el$166, () => metricParams.subtitle);
858
- return _el$166;
871
+ var _el$145 = web.getNextElement(_tmpl$31);
872
+ web.insert(_el$145, () => metricParams.subtitle);
873
+ return _el$145;
859
874
  }
860
- }), _el$170, _co$41);
861
- return _el$149;
875
+ }), _el$149, _co$34);
876
+ return _el$128;
862
877
  })();
863
878
  }
864
879
  function extractImageFromMarkdown(content) {
@@ -899,62 +914,62 @@ function TextRenderer(props) {
899
914
  },
900
915
  get fallback() {
901
916
  return (() => {
902
- var _el$173 = web.getNextElement(_tmpl$32), _el$175 = _el$173.firstChild, [_el$176, _co$43] = web.getNextMarker(_el$175.nextSibling), _el$174 = _el$176.nextSibling;
903
- web.insert(_el$173, web.createComponent(CopyButton, {
917
+ var _el$152 = web.getNextElement(_tmpl$33), _el$154 = _el$152.firstChild, [_el$155, _co$36] = web.getNextMarker(_el$154.nextSibling), _el$153 = _el$155.nextSibling;
918
+ web.insert(_el$152, web.createComponent(CopyButton, {
904
919
  getText: getTextContent,
905
920
  title: "Copy text",
906
921
  position: "top-right"
907
- }), _el$176, _co$43);
922
+ }), _el$155, _co$36);
908
923
  web.effect((_p$) => {
909
924
  var _v$14 = `prose prose-sm dark:prose-invert max-w-none ${textParams.className || ""}`, _v$15 = htmlContent();
910
- _v$14 !== _p$.e && web.className(_el$174, _p$.e = _v$14);
911
- _v$15 !== _p$.t && web.setProperty(_el$174, "innerHTML", _p$.t = _v$15);
925
+ _v$14 !== _p$.e && web.className(_el$153, _p$.e = _v$14);
926
+ _v$15 !== _p$.t && web.setProperty(_el$153, "innerHTML", _p$.t = _v$15);
912
927
  return _p$;
913
928
  }, {
914
929
  e: void 0,
915
930
  t: void 0
916
931
  });
917
- return _el$173;
932
+ return _el$152;
918
933
  })();
919
934
  },
920
935
  children: (data) => (() => {
921
- var _el$177 = web.getNextElement(_tmpl$33), _el$178 = _el$177.firstChild, _el$179 = _el$178.firstChild, _el$180 = _el$179.firstChild, _el$181 = _el$178.nextSibling, _el$182 = _el$181.firstChild;
922
- web.insert(_el$182, () => data().credit);
936
+ var _el$156 = web.getNextElement(_tmpl$34), _el$157 = _el$156.firstChild, _el$158 = _el$157.firstChild, _el$159 = _el$158.firstChild, _el$160 = _el$157.nextSibling, _el$161 = _el$160.firstChild;
937
+ web.insert(_el$161, () => data().credit);
923
938
  web.effect((_p$) => {
924
939
  var _v$16 = data().linkUrl, _v$17 = data().imageUrl, _v$18 = data().alt;
925
- _v$16 !== _p$.e && web.setAttribute(_el$179, "href", _p$.e = _v$16);
926
- _v$17 !== _p$.t && web.setAttribute(_el$180, "src", _p$.t = _v$17);
927
- _v$18 !== _p$.a && web.setAttribute(_el$180, "alt", _p$.a = _v$18);
940
+ _v$16 !== _p$.e && web.setAttribute(_el$158, "href", _p$.e = _v$16);
941
+ _v$17 !== _p$.t && web.setAttribute(_el$159, "src", _p$.t = _v$17);
942
+ _v$18 !== _p$.a && web.setAttribute(_el$159, "alt", _p$.a = _v$18);
928
943
  return _p$;
929
944
  }, {
930
945
  e: void 0,
931
946
  t: void 0,
932
947
  a: void 0
933
948
  });
934
- return _el$177;
949
+ return _el$156;
935
950
  })()
936
951
  });
937
952
  }
938
953
  function IframeRenderer(props) {
939
954
  const params = props.component.params;
940
955
  return (() => {
941
- var _el$183 = web.getNextElement(_tmpl$35), _el$187 = _el$183.firstChild, [_el$188, _co$44] = web.getNextMarker(_el$187.nextSibling), _el$186 = _el$188.nextSibling;
942
- web.insert(_el$183, web.createComponent(solidJs.Show, {
956
+ var _el$162 = web.getNextElement(_tmpl$36), _el$166 = _el$162.firstChild, [_el$167, _co$37] = web.getNextMarker(_el$166.nextSibling), _el$165 = _el$167.nextSibling;
957
+ web.insert(_el$162, web.createComponent(solidJs.Show, {
943
958
  get when() {
944
959
  return params.title;
945
960
  },
946
961
  get children() {
947
- var _el$184 = web.getNextElement(_tmpl$34), _el$185 = _el$184.firstChild;
948
- web.insert(_el$185, () => params.title);
949
- return _el$184;
962
+ var _el$163 = web.getNextElement(_tmpl$35), _el$164 = _el$163.firstChild;
963
+ web.insert(_el$164, () => params.title);
964
+ return _el$163;
950
965
  }
951
- }), _el$188, _co$44);
966
+ }), _el$167, _co$37);
952
967
  web.effect((_p$) => {
953
968
  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);
954
- _v$19 !== _p$.e && web.setAttribute(_el$186, "src", _p$.e = _v$19);
955
- _v$20 !== _p$.t && web.setAttribute(_el$186, "title", _p$.t = _v$20);
956
- _p$.a = web.style(_el$186, _v$21, _p$.a);
957
- _v$22 !== _p$.o && web.setAttribute(_el$186, "sandbox", _p$.o = _v$22);
969
+ _v$19 !== _p$.e && web.setAttribute(_el$165, "src", _p$.e = _v$19);
970
+ _v$20 !== _p$.t && web.setAttribute(_el$165, "title", _p$.t = _v$20);
971
+ _p$.a = web.style(_el$165, _v$21, _p$.a);
972
+ _v$22 !== _p$.o && web.setAttribute(_el$165, "sandbox", _p$.o = _v$22);
958
973
  return _p$;
959
974
  }, {
960
975
  e: void 0,
@@ -962,30 +977,30 @@ function IframeRenderer(props) {
962
977
  a: void 0,
963
978
  o: void 0
964
979
  });
965
- return _el$183;
980
+ return _el$162;
966
981
  })();
967
982
  }
968
983
  function ImageRenderer(props) {
969
984
  const params = props.component.params;
970
985
  return (() => {
971
- var _el$189 = web.getNextElement(_tmpl$37), _el$190 = _el$189.firstChild, _el$191 = _el$190.firstChild, _el$192 = _el$191.firstChild, _el$195 = _el$190.nextSibling, [_el$196, _co$45] = web.getNextMarker(_el$195.nextSibling);
972
- web.insert(_el$189, web.createComponent(solidJs.Show, {
986
+ var _el$168 = web.getNextElement(_tmpl$38), _el$169 = _el$168.firstChild, _el$170 = _el$169.firstChild, _el$171 = _el$170.firstChild, _el$174 = _el$169.nextSibling, [_el$175, _co$38] = web.getNextMarker(_el$174.nextSibling);
987
+ web.insert(_el$168, web.createComponent(solidJs.Show, {
973
988
  get when() {
974
989
  return params.caption;
975
990
  },
976
991
  get children() {
977
- var _el$193 = web.getNextElement(_tmpl$36), _el$194 = _el$193.firstChild;
978
- web.insert(_el$194, () => params.caption);
979
- return _el$193;
992
+ var _el$172 = web.getNextElement(_tmpl$37), _el$173 = _el$172.firstChild;
993
+ web.insert(_el$173, () => params.caption);
994
+ return _el$172;
980
995
  }
981
- }), _el$196, _co$45);
996
+ }), _el$175, _co$38);
982
997
  web.effect((_p$) => {
983
998
  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";
984
- _v$23 !== _p$.e && web.className(_el$189, _p$.e = _v$23);
985
- _v$24 !== _p$.t && web.setAttribute(_el$191, "href", _p$.t = _v$24);
986
- _v$25 !== _p$.a && web.setAttribute(_el$191, "aria-label", _p$.a = _v$25);
987
- _v$26 !== _p$.o && web.setAttribute(_el$192, "src", _p$.o = _v$26);
988
- _v$27 !== _p$.i && web.setAttribute(_el$192, "alt", _p$.i = _v$27);
999
+ _v$23 !== _p$.e && web.className(_el$168, _p$.e = _v$23);
1000
+ _v$24 !== _p$.t && web.setAttribute(_el$170, "href", _p$.t = _v$24);
1001
+ _v$25 !== _p$.a && web.setAttribute(_el$170, "aria-label", _p$.a = _v$25);
1002
+ _v$26 !== _p$.o && web.setAttribute(_el$171, "src", _p$.o = _v$26);
1003
+ _v$27 !== _p$.i && web.setAttribute(_el$171, "alt", _p$.i = _v$27);
989
1004
  return _p$;
990
1005
  }, {
991
1006
  e: void 0,
@@ -994,30 +1009,30 @@ function ImageRenderer(props) {
994
1009
  o: void 0,
995
1010
  i: void 0
996
1011
  });
997
- return _el$189;
1012
+ return _el$168;
998
1013
  })();
999
1014
  }
1000
1015
  function LinkRenderer(props) {
1001
1016
  const params = props.component.params;
1002
1017
  return (() => {
1003
- var _el$197 = web.getNextElement(_tmpl$39), _el$198 = _el$197.firstChild, _el$199 = _el$198.nextSibling, _el$200 = _el$199.firstChild, _el$202 = _el$200.nextSibling, [_el$203, _co$46] = web.getNextMarker(_el$202.nextSibling);
1004
- _el$197.$$click = (e) => e.stopPropagation();
1005
- web.insert(_el$200, () => params.label || params.url);
1006
- web.insert(_el$199, web.createComponent(solidJs.Show, {
1018
+ var _el$176 = web.getNextElement(_tmpl$40), _el$177 = _el$176.firstChild, _el$178 = _el$177.nextSibling, _el$179 = _el$178.firstChild, _el$181 = _el$179.nextSibling, [_el$182, _co$39] = web.getNextMarker(_el$181.nextSibling);
1019
+ _el$176.$$click = (e) => e.stopPropagation();
1020
+ web.insert(_el$179, () => params.label || params.url);
1021
+ web.insert(_el$178, web.createComponent(solidJs.Show, {
1007
1022
  get when() {
1008
1023
  return params.description;
1009
1024
  },
1010
1025
  get children() {
1011
- var _el$201 = web.getNextElement(_tmpl$38);
1012
- web.insert(_el$201, () => params.description);
1013
- return _el$201;
1026
+ var _el$180 = web.getNextElement(_tmpl$39);
1027
+ web.insert(_el$180, () => params.description);
1028
+ return _el$180;
1014
1029
  }
1015
- }), _el$203, _co$46);
1030
+ }), _el$182, _co$39);
1016
1031
  web.effect((_p$) => {
1017
1032
  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 || ""}`;
1018
- _v$28 !== _p$.e && web.setAttribute(_el$197, "href", _p$.e = _v$28);
1019
- _v$29 !== _p$.t && web.setAttribute(_el$197, "aria-label", _p$.t = _v$29);
1020
- _v$30 !== _p$.a && web.className(_el$197, _p$.a = _v$30);
1033
+ _v$28 !== _p$.e && web.setAttribute(_el$176, "href", _p$.e = _v$28);
1034
+ _v$29 !== _p$.t && web.setAttribute(_el$176, "aria-label", _p$.t = _v$29);
1035
+ _v$30 !== _p$.a && web.className(_el$176, _p$.a = _v$30);
1021
1036
  return _p$;
1022
1037
  }, {
1023
1038
  e: void 0,
@@ -1025,7 +1040,7 @@ function LinkRenderer(props) {
1025
1040
  a: void 0
1026
1041
  });
1027
1042
  web.runHydrationEvents();
1028
- return _el$197;
1043
+ return _el$176;
1029
1044
  })();
1030
1045
  }
1031
1046
  function ComponentRenderer(props) {
@@ -1039,12 +1054,12 @@ function ComponentRenderer(props) {
1039
1054
  details: validation$1.errors
1040
1055
  });
1041
1056
  return (() => {
1042
- var _el$204 = web.getNextElement(_tmpl$40), _el$205 = _el$204.firstChild, _el$206 = _el$205.nextSibling;
1043
- web.insert(_el$206, () => {
1057
+ var _el$183 = web.getNextElement(_tmpl$41), _el$184 = _el$183.firstChild, _el$185 = _el$184.nextSibling;
1058
+ web.insert(_el$185, () => {
1044
1059
  var _a2, _b;
1045
1060
  return ((_b = (_a2 = validation$1.errors) == null ? void 0 : _a2[0]) == null ? void 0 : _b.message) || "Unknown validation error";
1046
1061
  });
1047
- return _el$204;
1062
+ return _el$183;
1048
1063
  })();
1049
1064
  }
1050
1065
  return web.createComponent(GenerativeUIErrorBoundary.GenerativeUIErrorBoundary, {
@@ -1290,27 +1305,27 @@ function ActionRenderer(props) {
1290
1305
  const isDisabled = () => params.disabled || params.action === "tool-call" && isExecuting();
1291
1306
  if (params.type === "link" || params.action === "link") {
1292
1307
  return (() => {
1293
- var _el$207 = web.getNextElement(_tmpl$42), _el$209 = _el$207.firstChild, [_el$210, _co$47] = web.getNextMarker(_el$209.nextSibling), _el$211 = _el$210.nextSibling, [_el$212, _co$48] = web.getNextMarker(_el$211.nextSibling);
1294
- _el$207.$$click = handleClick;
1295
- web.insert(_el$207, web.createComponent(solidJs.Show, {
1308
+ var _el$186 = web.getNextElement(_tmpl$43), _el$188 = _el$186.firstChild, [_el$189, _co$40] = web.getNextMarker(_el$188.nextSibling), _el$190 = _el$189.nextSibling, [_el$191, _co$41] = web.getNextMarker(_el$190.nextSibling);
1309
+ _el$186.$$click = handleClick;
1310
+ web.insert(_el$186, web.createComponent(solidJs.Show, {
1296
1311
  get when() {
1297
1312
  return params.icon;
1298
1313
  },
1299
1314
  get children() {
1300
- var _el$208 = web.getNextElement(_tmpl$41);
1301
- web.insert(_el$208, () => params.icon);
1302
- return _el$208;
1315
+ var _el$187 = web.getNextElement(_tmpl$42);
1316
+ web.insert(_el$187, () => params.icon);
1317
+ return _el$187;
1303
1318
  }
1304
- }), _el$210, _co$47);
1305
- web.insert(_el$207, () => params.label, _el$212, _co$48);
1319
+ }), _el$189, _co$40);
1320
+ web.insert(_el$186, () => params.label, _el$191, _co$41);
1306
1321
  web.effect((_p$) => {
1307
1322
  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
1308
1323
  ${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"}
1309
1324
  ${params.className || ""}`;
1310
- _v$31 !== _p$.e && web.setAttribute(_el$207, "href", _p$.e = _v$31);
1311
- _v$32 !== _p$.t && web.setAttribute(_el$207, "target", _p$.t = _v$32);
1312
- _v$33 !== _p$.a && web.setAttribute(_el$207, "aria-label", _p$.a = _v$33);
1313
- _v$34 !== _p$.o && web.className(_el$207, _p$.o = _v$34);
1325
+ _v$31 !== _p$.e && web.setAttribute(_el$186, "href", _p$.e = _v$31);
1326
+ _v$32 !== _p$.t && web.setAttribute(_el$186, "target", _p$.t = _v$32);
1327
+ _v$33 !== _p$.a && web.setAttribute(_el$186, "aria-label", _p$.a = _v$33);
1328
+ _v$34 !== _p$.o && web.className(_el$186, _p$.o = _v$34);
1314
1329
  return _p$;
1315
1330
  }, {
1316
1331
  e: void 0,
@@ -1319,42 +1334,42 @@ function ActionRenderer(props) {
1319
1334
  o: void 0
1320
1335
  });
1321
1336
  web.runHydrationEvents();
1322
- return _el$207;
1337
+ return _el$186;
1323
1338
  })();
1324
1339
  }
1325
1340
  return (() => {
1326
- var _el$213 = web.getNextElement(_tmpl$44), _el$216 = _el$213.firstChild, [_el$217, _co$49] = web.getNextMarker(_el$216.nextSibling), _el$218 = _el$217.nextSibling, [_el$219, _co$50] = web.getNextMarker(_el$218.nextSibling), _el$220 = _el$219.nextSibling, [_el$221, _co$51] = web.getNextMarker(_el$220.nextSibling);
1327
- _el$213.$$click = handleClick;
1328
- web.insert(_el$213, web.createComponent(solidJs.Show, {
1341
+ var _el$192 = web.getNextElement(_tmpl$45), _el$195 = _el$192.firstChild, [_el$196, _co$42] = web.getNextMarker(_el$195.nextSibling), _el$197 = _el$196.nextSibling, [_el$198, _co$43] = web.getNextMarker(_el$197.nextSibling), _el$199 = _el$198.nextSibling, [_el$200, _co$44] = web.getNextMarker(_el$199.nextSibling);
1342
+ _el$192.$$click = handleClick;
1343
+ web.insert(_el$192, web.createComponent(solidJs.Show, {
1329
1344
  get when() {
1330
1345
  return web.memo(() => !!isExecuting())() && params.action === "tool-call";
1331
1346
  },
1332
1347
  get children() {
1333
- return web.getNextElement(_tmpl$43);
1348
+ return web.getNextElement(_tmpl$44);
1334
1349
  }
1335
- }), _el$217, _co$49);
1336
- web.insert(_el$213, web.createComponent(solidJs.Show, {
1350
+ }), _el$196, _co$42);
1351
+ web.insert(_el$192, web.createComponent(solidJs.Show, {
1337
1352
  get when() {
1338
1353
  return web.memo(() => !!params.icon)() && !(isExecuting() && params.action === "tool-call");
1339
1354
  },
1340
1355
  get children() {
1341
- var _el$215 = web.getNextElement(_tmpl$41);
1342
- web.insert(_el$215, () => params.icon);
1343
- return _el$215;
1356
+ var _el$194 = web.getNextElement(_tmpl$42);
1357
+ web.insert(_el$194, () => params.icon);
1358
+ return _el$194;
1344
1359
  }
1345
- }), _el$219, _co$50);
1346
- web.insert(_el$213, () => params.label, _el$221, _co$51);
1360
+ }), _el$198, _co$43);
1361
+ web.insert(_el$192, () => params.label, _el$200, _co$44);
1347
1362
  web.effect((_p$) => {
1348
1363
  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
1349
1364
  ${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"}
1350
1365
  ${isDisabled() ? "opacity-50 cursor-not-allowed" : ""}
1351
1366
  ${params.size === "sm" ? "px-3 py-1.5 text-xs" : params.size === "lg" ? "px-6 py-3 text-base" : ""}
1352
1367
  ${params.className || ""}`;
1353
- _v$35 !== _p$.e && web.setAttribute(_el$213, "type", _p$.e = _v$35);
1354
- _v$36 !== _p$.t && web.setProperty(_el$213, "disabled", _p$.t = _v$36);
1355
- _v$37 !== _p$.a && web.setAttribute(_el$213, "aria-busy", _p$.a = _v$37);
1356
- _v$38 !== _p$.o && web.setAttribute(_el$213, "aria-label", _p$.o = _v$38);
1357
- _v$39 !== _p$.i && web.className(_el$213, _p$.i = _v$39);
1368
+ _v$35 !== _p$.e && web.setAttribute(_el$192, "type", _p$.e = _v$35);
1369
+ _v$36 !== _p$.t && web.setProperty(_el$192, "disabled", _p$.t = _v$36);
1370
+ _v$37 !== _p$.a && web.setAttribute(_el$192, "aria-busy", _p$.a = _v$37);
1371
+ _v$38 !== _p$.o && web.setAttribute(_el$192, "aria-label", _p$.o = _v$38);
1372
+ _v$39 !== _p$.i && web.className(_el$192, _p$.i = _v$39);
1358
1373
  return _p$;
1359
1374
  }, {
1360
1375
  e: void 0,
@@ -1364,7 +1379,7 @@ function ActionRenderer(props) {
1364
1379
  i: void 0
1365
1380
  });
1366
1381
  web.runHydrationEvents();
1367
- return _el$213;
1382
+ return _el$192;
1368
1383
  })();
1369
1384
  }
1370
1385
  function ErrorCardRenderer(props) {
@@ -1372,55 +1387,55 @@ function ErrorCardRenderer(props) {
1372
1387
  return `Error in ${props.error.tool || "unknown tool"}: ${props.error.message || "Unknown error"}`;
1373
1388
  };
1374
1389
  return (() => {
1375
- var _el$222 = web.getNextElement(_tmpl$48), _el$245 = _el$222.firstChild, [_el$246, _co$57] = web.getNextMarker(_el$245.nextSibling), _el$223 = _el$246.nextSibling, _el$224 = _el$223.firstChild, _el$225 = _el$224.nextSibling, _el$226 = _el$225.firstChild, _el$227 = _el$226.firstChild, _el$228 = _el$227.nextSibling, [_el$229, _co$52] = web.getNextMarker(_el$228.nextSibling), _el$230 = _el$226.nextSibling, _el$239 = _el$230.nextSibling, [_el$240, _co$54] = web.getNextMarker(_el$239.nextSibling), _el$241 = _el$240.nextSibling, [_el$242, _co$55] = web.getNextMarker(_el$241.nextSibling), _el$243 = _el$242.nextSibling, [_el$244, _co$56] = web.getNextMarker(_el$243.nextSibling);
1376
- web.insert(_el$222, web.createComponent(CopyButton, {
1390
+ var _el$201 = web.getNextElement(_tmpl$49), _el$224 = _el$201.firstChild, [_el$225, _co$50] = web.getNextMarker(_el$224.nextSibling), _el$202 = _el$225.nextSibling, _el$203 = _el$202.firstChild, _el$204 = _el$203.nextSibling, _el$205 = _el$204.firstChild, _el$206 = _el$205.firstChild, _el$207 = _el$206.nextSibling, [_el$208, _co$45] = web.getNextMarker(_el$207.nextSibling), _el$209 = _el$205.nextSibling, _el$218 = _el$209.nextSibling, [_el$219, _co$47] = web.getNextMarker(_el$218.nextSibling), _el$220 = _el$219.nextSibling, [_el$221, _co$48] = web.getNextMarker(_el$220.nextSibling), _el$222 = _el$221.nextSibling, [_el$223, _co$49] = web.getNextMarker(_el$222.nextSibling);
1391
+ web.insert(_el$201, web.createComponent(CopyButton, {
1377
1392
  getText: getErrorText,
1378
1393
  title: "Copy error details",
1379
1394
  position: "top-right"
1380
- }), _el$246, _co$57);
1381
- web.insert(_el$226, () => props.error.tool || "Unknown", _el$229, _co$52);
1382
- web.insert(_el$230, () => props.error.message || "An error occurred during tool execution");
1383
- web.insert(_el$225, web.createComponent(solidJs.Show, {
1395
+ }), _el$225, _co$50);
1396
+ web.insert(_el$205, () => props.error.tool || "Unknown", _el$208, _co$45);
1397
+ web.insert(_el$209, () => props.error.message || "An error occurred during tool execution");
1398
+ web.insert(_el$204, web.createComponent(solidJs.Show, {
1384
1399
  get when() {
1385
1400
  return props.error.type;
1386
1401
  },
1387
1402
  get children() {
1388
- var _el$231 = web.getNextElement(_tmpl$45), _el$232 = _el$231.firstChild, _el$233 = _el$232.nextSibling, [_el$234, _co$53] = web.getNextMarker(_el$233.nextSibling);
1389
- web.insert(_el$231, () => props.error.type, _el$234, _co$53);
1390
- return _el$231;
1403
+ var _el$210 = web.getNextElement(_tmpl$46), _el$211 = _el$210.firstChild, _el$212 = _el$211.nextSibling, [_el$213, _co$46] = web.getNextMarker(_el$212.nextSibling);
1404
+ web.insert(_el$210, () => props.error.type, _el$213, _co$46);
1405
+ return _el$210;
1391
1406
  }
1392
- }), _el$240, _co$54);
1393
- web.insert(_el$225, web.createComponent(solidJs.Show, {
1407
+ }), _el$219, _co$47);
1408
+ web.insert(_el$204, web.createComponent(solidJs.Show, {
1394
1409
  get when() {
1395
1410
  var _a;
1396
1411
  return (_a = props.error.suggestions) == null ? void 0 : _a.length;
1397
1412
  },
1398
1413
  get children() {
1399
- var _el$235 = web.getNextElement(_tmpl$46), _el$236 = _el$235.firstChild, _el$237 = _el$236.nextSibling;
1400
- web.insert(_el$237, web.createComponent(solidJs.For, {
1414
+ var _el$214 = web.getNextElement(_tmpl$47), _el$215 = _el$214.firstChild, _el$216 = _el$215.nextSibling;
1415
+ web.insert(_el$216, web.createComponent(solidJs.For, {
1401
1416
  get each() {
1402
1417
  return props.error.suggestions;
1403
1418
  },
1404
1419
  children: (suggestion) => (() => {
1405
- var _el$247 = web.getNextElement(_tmpl$49);
1406
- web.insert(_el$247, suggestion);
1407
- return _el$247;
1420
+ var _el$226 = web.getNextElement(_tmpl$50);
1421
+ web.insert(_el$226, suggestion);
1422
+ return _el$226;
1408
1423
  })()
1409
1424
  }));
1410
- return _el$235;
1425
+ return _el$214;
1411
1426
  }
1412
- }), _el$242, _co$55);
1413
- web.insert(_el$225, web.createComponent(solidJs.Show, {
1427
+ }), _el$221, _co$48);
1428
+ web.insert(_el$204, web.createComponent(solidJs.Show, {
1414
1429
  get when() {
1415
1430
  return props.error.timestamp;
1416
1431
  },
1417
1432
  get children() {
1418
- var _el$238 = web.getNextElement(_tmpl$47);
1419
- web.insert(_el$238, () => new Date(props.error.timestamp).toLocaleString());
1420
- return _el$238;
1433
+ var _el$217 = web.getNextElement(_tmpl$48);
1434
+ web.insert(_el$217, () => new Date(props.error.timestamp).toLocaleString());
1435
+ return _el$217;
1421
1436
  }
1422
- }), _el$244, _co$56);
1423
- return _el$222;
1437
+ }), _el$223, _co$49);
1438
+ return _el$201;
1424
1439
  })();
1425
1440
  }
1426
1441
  function isErrorResponse(content) {
@@ -1443,20 +1458,20 @@ function UIResourceHtmlRenderer(props) {
1443
1458
  return ((_a = props.resource.metadata) == null ? void 0 : _a.title) || ((_b = props.resource.uri) == null ? void 0 : _b.replace("ui://deposium/", "")) || "Resource";
1444
1459
  };
1445
1460
  return (() => {
1446
- var _el$248 = web.getNextElement(_tmpl$51), _el$252 = _el$248.firstChild, [_el$253, _co$58] = web.getNextMarker(_el$252.nextSibling), _el$251 = _el$253.nextSibling;
1447
- web.insert(_el$248, web.createComponent(solidJs.Show, {
1461
+ var _el$227 = web.getNextElement(_tmpl$52), _el$231 = _el$227.firstChild, [_el$232, _co$51] = web.getNextMarker(_el$231.nextSibling), _el$230 = _el$232.nextSibling;
1462
+ web.insert(_el$227, web.createComponent(solidJs.Show, {
1448
1463
  get when() {
1449
1464
  var _a;
1450
1465
  return ((_a = props.resource.metadata) == null ? void 0 : _a.title) || props.resource.uri;
1451
1466
  },
1452
1467
  get children() {
1453
- var _el$249 = web.getNextElement(_tmpl$50), _el$250 = _el$249.firstChild;
1454
- web.insert(_el$250, resourceTitle);
1455
- return _el$249;
1468
+ var _el$228 = web.getNextElement(_tmpl$51), _el$229 = _el$228.firstChild;
1469
+ web.insert(_el$229, resourceTitle);
1470
+ return _el$228;
1456
1471
  }
1457
- }), _el$253, _co$58);
1458
- web.effect(() => web.setProperty(_el$251, "innerHTML", htmlContent()));
1459
- return _el$248;
1472
+ }), _el$232, _co$51);
1473
+ web.effect(() => web.setProperty(_el$230, "innerHTML", htmlContent()));
1474
+ return _el$227;
1460
1475
  })();
1461
1476
  }
1462
1477
  const UIResourceRenderer = (props) => {
@@ -1536,24 +1551,24 @@ const UIResourceRenderer = (props) => {
1536
1551
  return web.createComponent(RenderContext.RenderProvider, {
1537
1552
  renderComponent,
1538
1553
  get children() {
1539
- var _el$254 = web.getNextElement(_tmpl$52), _el$255 = _el$254.firstChild, _el$256 = _el$255.nextSibling, [_el$257, _co$59] = web.getNextMarker(_el$256.nextSibling);
1540
- web.insert(_el$255, web.createComponent(solidJs.For, {
1554
+ var _el$233 = web.getNextElement(_tmpl$53), _el$234 = _el$233.firstChild, _el$235 = _el$234.nextSibling, [_el$236, _co$52] = web.getNextMarker(_el$235.nextSibling);
1555
+ web.insert(_el$234, web.createComponent(solidJs.For, {
1541
1556
  get each() {
1542
1557
  return layoutData.components;
1543
1558
  },
1544
1559
  children: (component) => (() => {
1545
- var _el$258 = web.getNextElement(_tmpl$53);
1546
- web.insert(_el$258, web.createComponent(ComponentRenderer, {
1560
+ var _el$237 = web.getNextElement(_tmpl$54);
1561
+ web.insert(_el$237, web.createComponent(ComponentRenderer, {
1547
1562
  component,
1548
1563
  get onError() {
1549
1564
  return props.onError;
1550
1565
  }
1551
1566
  }));
1552
- web.effect((_$p) => web.style(_el$258, getGridStyleString(component), _$p));
1553
- return _el$258;
1567
+ web.effect((_$p) => web.style(_el$237, getGridStyleString(component), _$p));
1568
+ return _el$237;
1554
1569
  })()
1555
1570
  }));
1556
- web.insert(_el$254, web.createComponent(solidJs.Show, {
1571
+ web.insert(_el$233, web.createComponent(solidJs.Show, {
1557
1572
  get when() {
1558
1573
  return shouldShowAutoFooter();
1559
1574
  },
@@ -1564,17 +1579,17 @@ const UIResourceRenderer = (props) => {
1564
1579
  }
1565
1580
  });
1566
1581
  }
1567
- }), _el$257, _co$59);
1582
+ }), _el$236, _co$52);
1568
1583
  web.effect((_p$) => {
1569
1584
  var _v$40 = `w-full ${props.class || ""}`, _v$41 = gridContainerStyle();
1570
- _v$40 !== _p$.e && web.className(_el$254, _p$.e = _v$40);
1571
- _p$.t = web.style(_el$255, _v$41, _p$.t);
1585
+ _v$40 !== _p$.e && web.className(_el$233, _p$.e = _v$40);
1586
+ _p$.t = web.style(_el$234, _v$41, _p$.t);
1572
1587
  return _p$;
1573
1588
  }, {
1574
1589
  e: void 0,
1575
1590
  t: void 0
1576
1591
  });
1577
- return _el$254;
1592
+ return _el$233;
1578
1593
  }
1579
1594
  });
1580
1595
  };