@seed-ship/mcp-ui-solid 6.13.0 → 6.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -18,6 +18,8 @@ const FormRenderer = require("./FormRenderer.cjs");
18
18
  const ModalRenderer = require("./ModalRenderer.cjs");
19
19
  const ActionGroupRenderer = require("./ActionGroupRenderer.cjs");
20
20
  const ChartJSRenderer = require("./ChartJSRenderer.cjs");
21
+ const DegradedFallback = require("./DegradedFallback.cjs");
22
+ const degradedProjections = require("../utils/degraded-projections.cjs");
21
23
  const ImageGalleryRenderer = require("./ImageGalleryRenderer.cjs");
22
24
  const VideoRenderer = require("./VideoRenderer.cjs");
23
25
  const CodeBlockRenderer = require("./CodeBlockRenderer.cjs");
@@ -28,7 +30,7 @@ const PortalDropdownMenu = require("./PortalDropdownMenu.cjs");
28
30
  const RenderContext = require("./RenderContext.cjs");
29
31
  const useAction = require("../hooks/useAction.cjs");
30
32
  const marked_esm = require("../node_modules/.pnpm/marked@16.4.2/node_modules/marked/lib/marked.esm.cjs");
31
- 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-10 top-2 z-10"><button class="opacity-60 hover:opacity-100 px-2 py-1 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-full hover:bg-gray-100 dark:hover:bg-gray-700 transition-all shadow-sm"title="Export table"aria-label="Export table"aria-haspopup=menu><svg class="w-3 h-3 text-gray-500 dark:text-gray-400"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"></path></svg></button><!$><!/>`), _tmpl$16 = /* @__PURE__ */ web.template(`<span class="ml-2 text-xs font-normal text-gray-400">(virtualized: <!$><!/> rows)`), _tmpl$17 = /* @__PURE__ */ web.template(`<h3 class="text-sm font-semibold text-gray-900 dark:text-white mb-3 flex-shrink-0"><!$><!/><!$><!/>`), _tmpl$18 = /* @__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$19 = /* @__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$20 = /* @__PURE__ */ web.template(`<p class="text-xs text-gray-500 dark:text-gray-400 mb-2"><!$><!/> result<!$><!/> on <!$><!/>`), _tmpl$21 = /* @__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$22 = /* @__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$23 = /* @__PURE__ */ web.template(`<span class=text-gray-400>/ page`), _tmpl$24 = /* @__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$25 = /* @__PURE__ */ web.template(`<div><!$><!/><div><!$><!/><!$><!/><div role=region tabindex=0><table class="min-w-full divide-y divide-gray-200 dark:divide-gray-700 border-separate border-spacing-0"><thead class="bg-gray-100 dark:bg-gray-900 sticky top-0 z-10"><tr></tr></thead><!$><!/></table></div><!$><!/><!$><!/>`), _tmpl$26 = /* @__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$27 = /* @__PURE__ */ web.template(`<option>`), _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="inline-flex items-center gap-1.5 px-2 py-1 rounded-md bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 text-xs text-yellow-800 dark:text-yellow-200"role=alert aria-label="Component validation warning"><svg xmlns=http://www.w3.org/2000/svg class="w-3.5 h-3.5"viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round aria-hidden=true><path d="M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1=12 y1=9 x2=12 y2=13></line><line x1=12 y1=17 x2=12.01 y2=17></line></svg><span>Invalid <!$><!/>`), _tmpl$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 type=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>`);
33
+ var _tmpl$ = /* @__PURE__ */ web.template(`<svg class="w-3 h-3 text-gray-500 dark:text-gray-400"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z">`), _tmpl$2 = /* @__PURE__ */ web.template(`<button>`), _tmpl$3 = /* @__PURE__ */ web.template(`<svg class="w-3 h-3 text-green-500"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M5 13l4 4L19 7">`), _tmpl$4 = /* @__PURE__ */ web.template(`<div class="p-4 bg-white dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700"><p class="text-red-500 dark:text-red-400 text-sm">Invalid chart data: missing data.datasets`), _tmpl$5 = /* @__PURE__ */ web.template(`<div class=p-3>`), _tmpl$6 = /* @__PURE__ */ web.template(`<div class="absolute inset-0 flex items-center justify-center"><div class="animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600">`), _tmpl$7 = /* @__PURE__ */ web.template(`<div class="absolute inset-0 flex items-center justify-center p-4"><div class=text-center><p class="text-red-600 dark:text-red-400 text-sm font-medium">Chart Error</p><p class="text-gray-600 dark:text-gray-400 text-xs mt-1">`), _tmpl$8 = /* @__PURE__ */ web.template(`<h3 class="text-sm font-semibold text-gray-900 dark:text-white mb-3">`), _tmpl$9 = /* @__PURE__ */ web.template(`<div class="w-full h-full p-4"><!$><!/><div class="w-full h-full"role=img><img class="w-full h-auto max-h-[300px] object-contain">`), _tmpl$0 = /* @__PURE__ */ web.template(`<div class="relative w-full h-full min-h-[300px] bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden"><!$><!/><!$><!/><!$><!/><!$><!/>`), _tmpl$1 = /* @__PURE__ */ web.template(`<tbody class="bg-white dark:bg-gray-800 divide-y divide-gray-200 dark:divide-gray-700">`), _tmpl$10 = /* @__PURE__ */ web.template(`<tr>`), _tmpl$11 = /* @__PURE__ */ web.template(`<td class="px-6 py-4 text-sm text-gray-700 dark:text-gray-200 whitespace-normal break-words leading-relaxed first:pl-6 last:pr-6"><div>`), _tmpl$12 = /* @__PURE__ */ web.template(`<tbody class="bg-white dark:bg-gray-800 relative">`), _tmpl$13 = /* @__PURE__ */ web.template(`<button class="w-full text-left px-3 py-1.5 hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300">Copy TSV`), _tmpl$14 = /* @__PURE__ */ web.template(`<button class="w-full text-left px-3 py-1.5 hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300">Download CSV`), _tmpl$15 = /* @__PURE__ */ web.template(`<button class="w-full text-left px-3 py-1.5 hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300">Download JSON`), _tmpl$16 = /* @__PURE__ */ web.template(`<div class="absolute right-10 top-2 z-10"><button class="opacity-60 hover:opacity-100 px-2 py-1 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-full hover:bg-gray-100 dark:hover:bg-gray-700 transition-all shadow-sm"title="Export table"aria-label="Export table"aria-haspopup=menu><svg class="w-3 h-3 text-gray-500 dark:text-gray-400"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"></path></svg></button><!$><!/>`), _tmpl$17 = /* @__PURE__ */ web.template(`<span class="ml-2 text-xs font-normal text-gray-400">(virtualized: <!$><!/> rows)`), _tmpl$18 = /* @__PURE__ */ web.template(`<h3 class="text-sm font-semibold text-gray-900 dark:text-white mb-3 flex-shrink-0"><!$><!/><!$><!/>`), _tmpl$19 = /* @__PURE__ */ web.template(`<button type=button class="absolute right-2 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 text-sm"aria-label="Clear search">&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><!$><!/><div><!$><!/><!$><!/><div role=region tabindex=0><table class="min-w-full divide-y divide-gray-200 dark:divide-gray-700 border-separate border-spacing-0"><thead class="bg-gray-100 dark:bg-gray-900 sticky top-0 z-10"><tr></tr></thead><!$><!/></table></div><!$><!/><!$><!/>`), _tmpl$27 = /* @__PURE__ */ web.template(`<th scope=col class="px-6 py-3 text-left text-xs font-semibold text-gray-500 dark:text-gray-400 uppercase tracking-wider border-b border-gray-200 dark:border-gray-700 first:pl-6 last:pr-6 bg-gray-100 dark:bg-gray-900 cursor-pointer select-none hover:bg-gray-200 dark:hover:bg-gray-800 transition-colors"><span class="inline-flex items-center gap-1"><!$><!/><span class="text-[10px] leading-none">`), _tmpl$28 = /* @__PURE__ */ web.template(`<option>`), _tmpl$29 = /* @__PURE__ */ web.template(`<span class="ml-2 text-sm font-medium text-gray-500 dark:text-gray-400">`), _tmpl$30 = /* @__PURE__ */ web.template(`<div class="mt-3 flex items-center"><span><!$><!/> <!$><!/>%`), _tmpl$31 = /* @__PURE__ */ web.template(`<p class="mt-2 text-xs text-gray-500 dark:text-gray-400">`), _tmpl$32 = /* @__PURE__ */ web.template(`<div class="relative w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 p-4 group"><!$><!/><div class="flex flex-col h-full justify-between"><div><p class="text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wide"></p><div class="mt-2 flex items-baseline"><p class="text-2xl font-semibold text-gray-900 dark:text-white"></p><!$><!/></div></div><!$><!/><!$><!/>`), _tmpl$33 = /* @__PURE__ */ web.template(`<div class="relative w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 p-4 group"><!$><!/><div>`), _tmpl$34 = /* @__PURE__ */ web.template(`<div class="w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden flex flex-col"><div class="flex-1 flex items-center justify-center p-4 bg-gray-50 dark:bg-gray-900 min-h-[200px]"><a target=_blank rel="noopener noreferrer"class=cursor-zoom-in><img class="max-w-full max-h-[400px] object-contain rounded shadow-sm hover:opacity-90 transition-opacity"loading=lazy></a></div><div class="p-3 border-t border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800"><p class="text-sm text-gray-600 dark:text-gray-400 text-center italic">`, true, false, false), _tmpl$35 = /* @__PURE__ */ web.template(`<div class="px-4 py-2 border-b border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-900"><h3 class="text-sm font-semibold text-gray-900 dark:text-white">`), _tmpl$36 = /* @__PURE__ */ web.template(`<div class="w-full h-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden flex flex-col"><!$><!/><iframe class="w-full border-0 flex-1"loading=lazy>`, true, false, false), _tmpl$37 = /* @__PURE__ */ web.template(`<figcaption class="p-3 border-t border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800"><p class="text-sm text-gray-600 dark:text-gray-400 text-center">`), _tmpl$38 = /* @__PURE__ */ web.template(`<figure><div class="flex-1 flex items-center justify-center p-4 bg-gray-50 dark:bg-gray-900 min-h-[200px]"><a target=_blank rel="noopener noreferrer"class="cursor-zoom-in focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 rounded"><img class="max-w-full max-h-[500px] object-contain rounded shadow-sm hover:opacity-95 transition-opacity"loading=lazy></a></div><!$><!/>`, true, false, false), _tmpl$39 = /* @__PURE__ */ web.template(`<p class="text-xs text-gray-500 dark:text-gray-400 truncate">`), _tmpl$40 = /* @__PURE__ */ web.template(`<a target=_blank rel="noopener noreferrer"><div class="p-2 bg-blue-50 dark:bg-blue-900/30 rounded-full text-blue-600 dark:text-blue-400 group-hover:bg-blue-100 dark:group-hover:bg-blue-900/50 shrink-0 transition-colors"aria-hidden=true><svg xmlns=http://www.w3.org/2000/svg class="w-5 h-5"viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg></div><div class="flex-1 min-w-0"><h4 class="text-sm font-medium text-gray-900 dark:text-white truncate group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors"></h4><!$><!/></div><svg xmlns=http://www.w3.org/2000/svg class="w-4 h-4 text-gray-400 group-hover:text-gray-600 dark:group-hover:text-gray-300 shrink-0 transition-colors"viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round aria-hidden=true><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1=10 y1=14 x2=21 y2=3>`), _tmpl$41 = /* @__PURE__ */ web.template(`<div class="inline-flex items-center gap-1.5 px-2 py-1 rounded-md bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 text-xs text-yellow-800 dark:text-yellow-200"role=alert aria-label="Component validation warning"><svg xmlns=http://www.w3.org/2000/svg class="w-3.5 h-3.5"viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round aria-hidden=true><path d="M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1=12 y1=9 x2=12 y2=13></line><line x1=12 y1=17 x2=12.01 y2=17></line></svg><span>Invalid <!$><!/>`), _tmpl$42 = /* @__PURE__ */ web.template(`<div class="w-full h-full bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-lg p-4"><p class="text-sm font-medium text-red-900 dark:text-red-100">Validation Error</p><p class="text-xs text-red-700 dark:text-red-300 mt-1">`), _tmpl$43 = /* @__PURE__ */ web.template(`<div role=alert class="w-full rounded-lg border border-amber-300 bg-amber-50 px-3 py-2 text-sm text-amber-800 dark:border-amber-700/50 dark:bg-amber-900/20 dark:text-amber-200">Unsupported component type: <code class=font-mono>`), _tmpl$44 = /* @__PURE__ */ web.template(`<span aria-hidden=true>`), _tmpl$45 = /* @__PURE__ */ web.template(`<a rel="noopener noreferrer"><!$><!/><!$><!/>`), _tmpl$46 = /* @__PURE__ */ web.template(`<span class="animate-spin h-4 w-4 border-2 border-current border-t-transparent rounded-full"aria-hidden=true>`), _tmpl$47 = /* @__PURE__ */ web.template(`<button type=button><!$><!/><!$><!/><!$><!/>`), _tmpl$48 = /* @__PURE__ */ web.template(`<p class="text-xs text-red-600 dark:text-red-400 mt-1">Type: <!$><!/>`), _tmpl$49 = /* @__PURE__ */ web.template(`<div class=mt-3><p class="text-xs font-medium text-red-700 dark:text-red-300">Suggestions:</p><ul class="mt-1 text-xs text-red-600 dark:text-red-400 list-disc list-inside">`), _tmpl$50 = /* @__PURE__ */ web.template(`<p class="text-xs text-red-500 dark:text-red-500 mt-2">`), _tmpl$51 = /* @__PURE__ */ web.template(`<div class="relative w-full bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-lg p-4 group"><!$><!/><div class="flex items-start gap-3"><div class="p-2 bg-red-100 dark:bg-red-900/40 rounded-full shrink-0"><svg class="w-5 h-5 text-red-600 dark:text-red-400"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"></path></svg></div><div class="flex-1 min-w-0"><h4 class="text-sm font-semibold text-red-800 dark:text-red-200">Tool Error: <!$><!/></h4><p class="text-sm text-red-700 dark:text-red-300 mt-1"></p><!$><!/><!$><!/><!$><!/>`), _tmpl$52 = /* @__PURE__ */ web.template(`<li>`), _tmpl$53 = /* @__PURE__ */ web.template(`<div class="px-4 py-2 border-b border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-900"><h3 class="text-sm font-semibold text-gray-900 dark:text-white capitalize">`), _tmpl$54 = /* @__PURE__ */ web.template(`<div class="w-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden"><!$><!/><div class="p-4 prose prose-sm dark:prose-invert max-w-none">`), _tmpl$55 = /* @__PURE__ */ web.template(`<div><div class="grid gap-4"></div><!$><!/>`), _tmpl$56 = /* @__PURE__ */ web.template(`<div>`);
32
34
  function CopyButton(props) {
33
35
  const [copied, setCopied] = solidJs.createSignal(false);
34
36
  const handleCopy = async () => {
@@ -76,11 +78,26 @@ function ChartRenderer(props) {
76
78
  const [iframeUrl, setIframeUrl] = solidJs.createSignal();
77
79
  const [isLoading, setIsLoading] = solidJs.createSignal(true);
78
80
  const [error, setError] = solidJs.createSignal();
81
+ const [degraded, setDegraded] = solidJs.createSignal(false);
82
+ const telemetry = MCPUITelemetryContext.useTelemetry();
79
83
  const params = () => props.component.params;
80
84
  const rendererPref = () => {
81
85
  var _a2;
82
86
  return ((_a2 = params()) == null ? void 0 : _a2.renderer) || "auto";
83
87
  };
88
+ const allowQuickchart = () => props.allowQuickchartFallback === true;
89
+ const signalBlockedFallback = (reason) => {
90
+ setDegraded(true);
91
+ setIsLoading(false);
92
+ const message = `Chart degraded to a data table: ${reason}`;
93
+ telemetry == null ? void 0 : telemetry.dispatch({
94
+ type: "render:error",
95
+ errorMessage: message,
96
+ id: props.component.id ?? "",
97
+ componentType: "chart",
98
+ ts: Date.now()
99
+ });
100
+ };
84
101
  if (!((_b = (_a = params()) == null ? void 0 : _a.data) == null ? void 0 : _b.datasets)) {
85
102
  return web.getNextElement(_tmpl$4);
86
103
  }
@@ -88,7 +105,11 @@ function ChartRenderer(props) {
88
105
  const pref = rendererPref();
89
106
  if (pref === "iframe") {
90
107
  setUseNative(false);
91
- buildIframeUrl();
108
+ if (allowQuickchart()) {
109
+ buildIframeUrl();
110
+ } else {
111
+ signalBlockedFallback("renderer: 'iframe' requires the external quickchart.io service; set allowQuickchartFallback on the host to enable it.");
112
+ }
92
113
  } else if (pref === "native") {
93
114
  const available = await ChartJSRenderer.isChartJSAvailable();
94
115
  if (available) {
@@ -103,9 +124,12 @@ function ChartRenderer(props) {
103
124
  if (available) {
104
125
  setUseNative(true);
105
126
  setIsLoading(false);
106
- } else {
127
+ } else if (allowQuickchart()) {
107
128
  setUseNative(false);
108
129
  buildIframeUrl();
130
+ } else {
131
+ setUseNative(false);
132
+ signalBlockedFallback("Chart.js peer is not installed.");
109
133
  }
110
134
  }
111
135
  });
@@ -132,46 +156,59 @@ function ChartRenderer(props) {
132
156
  },
133
157
  get fallback() {
134
158
  return (() => {
135
- var _el$5 = web.getNextElement(_tmpl$9), _el$15 = _el$5.firstChild, [_el$16, _co$2] = web.getNextMarker(_el$15.nextSibling), _el$17 = _el$16.nextSibling, [_el$18, _co$3] = web.getNextMarker(_el$17.nextSibling), _el$19 = _el$18.nextSibling, [_el$20, _co$4] = web.getNextMarker(_el$19.nextSibling);
159
+ var _el$5 = web.getNextElement(_tmpl$0), _el$16 = _el$5.firstChild, [_el$17, _co$2] = web.getNextMarker(_el$16.nextSibling), _el$18 = _el$17.nextSibling, [_el$19, _co$3] = web.getNextMarker(_el$18.nextSibling), _el$20 = _el$19.nextSibling, [_el$21, _co$4] = web.getNextMarker(_el$20.nextSibling), _el$22 = _el$21.nextSibling, [_el$23, _co$5] = web.getNextMarker(_el$22.nextSibling);
160
+ web.insert(_el$5, web.createComponent(solidJs.Show, {
161
+ get when() {
162
+ return degraded();
163
+ },
164
+ get children() {
165
+ var _el$6 = web.getNextElement(_tmpl$5);
166
+ web.insert(_el$6, web.createComponent(DegradedFallback.DegradedFallback, web.mergeProps({
167
+ message: "Interactive chart unavailable — install the chart.js peer dependency, or set allowQuickchartFallback to use the external quickchart.io renderer.",
168
+ caption: "Showing the chart data as a table."
169
+ }, () => degradedProjections.chartToDegradedTable(params() ?? {}))));
170
+ return _el$6;
171
+ }
172
+ }), _el$17, _co$2);
136
173
  web.insert(_el$5, web.createComponent(solidJs.Show, {
137
174
  get when() {
138
175
  return isLoading();
139
176
  },
140
177
  get children() {
141
- return web.getNextElement(_tmpl$5);
178
+ return web.getNextElement(_tmpl$6);
142
179
  }
143
- }), _el$16, _co$2);
180
+ }), _el$19, _co$3);
144
181
  web.insert(_el$5, web.createComponent(solidJs.Show, {
145
182
  get when() {
146
183
  return error();
147
184
  },
148
185
  get children() {
149
- var _el$7 = web.getNextElement(_tmpl$6), _el$8 = _el$7.firstChild, _el$9 = _el$8.firstChild, _el$0 = _el$9.nextSibling;
150
- web.insert(_el$0, error);
151
- return _el$7;
186
+ var _el$8 = web.getNextElement(_tmpl$7), _el$9 = _el$8.firstChild, _el$0 = _el$9.firstChild, _el$1 = _el$0.nextSibling;
187
+ web.insert(_el$1, error);
188
+ return _el$8;
152
189
  }
153
- }), _el$18, _co$3);
190
+ }), _el$21, _co$4);
154
191
  web.insert(_el$5, web.createComponent(solidJs.Show, {
155
192
  get when() {
156
193
  return web.memo(() => !!iframeUrl())() && !error();
157
194
  },
158
195
  get children() {
159
- var _el$1 = web.getNextElement(_tmpl$8), _el$13 = _el$1.firstChild, [_el$14, _co$] = web.getNextMarker(_el$13.nextSibling), _el$11 = _el$14.nextSibling, _el$12 = _el$11.firstChild;
160
- web.insert(_el$1, web.createComponent(solidJs.Show, {
196
+ var _el$10 = web.getNextElement(_tmpl$9), _el$14 = _el$10.firstChild, [_el$15, _co$] = web.getNextMarker(_el$14.nextSibling), _el$12 = _el$15.nextSibling, _el$13 = _el$12.firstChild;
197
+ web.insert(_el$10, web.createComponent(solidJs.Show, {
161
198
  get when() {
162
199
  var _a2;
163
200
  return (_a2 = params()) == null ? void 0 : _a2.title;
164
201
  },
165
202
  get children() {
166
- var _el$10 = web.getNextElement(_tmpl$7);
167
- web.insert(_el$10, () => {
203
+ var _el$11 = web.getNextElement(_tmpl$8);
204
+ web.insert(_el$11, () => {
168
205
  var _a2;
169
206
  return (_a2 = params()) == null ? void 0 : _a2.title;
170
207
  });
171
- return _el$10;
208
+ return _el$11;
172
209
  }
173
- }), _el$14, _co$);
174
- _el$12.addEventListener("error", () => {
210
+ }), _el$15, _co$);
211
+ _el$13.addEventListener("error", () => {
175
212
  var _a2;
176
213
  setError("Failed to load chart");
177
214
  (_a2 = props.onError) == null ? void 0 : _a2.call(props, {
@@ -183,18 +220,18 @@ function ChartRenderer(props) {
183
220
  web.effect((_p$) => {
184
221
  var _a2, _b2, _c, _d;
185
222
  var _v$3 = ((_a2 = params()) == null ? void 0 : _a2.title) ? `Chart: ${(_b2 = params()) == null ? void 0 : _b2.title}` : "Chart visualization", _v$4 = iframeUrl(), _v$5 = ((_c = params()) == null ? void 0 : _c.title) ? `Chart: ${(_d = params()) == null ? void 0 : _d.title}` : "Chart visualization";
186
- _v$3 !== _p$.e && web.setAttribute(_el$11, "aria-label", _p$.e = _v$3);
187
- _v$4 !== _p$.t && web.setAttribute(_el$12, "src", _p$.t = _v$4);
188
- _v$5 !== _p$.a && web.setAttribute(_el$12, "alt", _p$.a = _v$5);
223
+ _v$3 !== _p$.e && web.setAttribute(_el$12, "aria-label", _p$.e = _v$3);
224
+ _v$4 !== _p$.t && web.setAttribute(_el$13, "src", _p$.t = _v$4);
225
+ _v$5 !== _p$.a && web.setAttribute(_el$13, "alt", _p$.a = _v$5);
189
226
  return _p$;
190
227
  }, {
191
228
  e: void 0,
192
229
  t: void 0,
193
230
  a: void 0
194
231
  });
195
- return _el$1;
232
+ return _el$10;
196
233
  }
197
- }), _el$20, _co$4);
234
+ }), _el$23, _co$5);
198
235
  return _el$5;
199
236
  })();
200
237
  },
@@ -544,28 +581,28 @@ ${dataRows}`;
544
581
  };
545
582
  const tableId = `table-${Math.random().toString(36).slice(2, 9)}`;
546
583
  const StandardTableBody = () => (() => {
547
- var _el$21 = web.getNextElement(_tmpl$0);
548
- web.insert(_el$21, web.createComponent(solidJs.For, {
584
+ var _el$24 = web.getNextElement(_tmpl$1);
585
+ web.insert(_el$24, web.createComponent(solidJs.For, {
549
586
  get each() {
550
587
  return clientVisibleRows().slice(0, validation.DEFAULT_RESOURCE_LIMITS.maxTableRows);
551
588
  },
552
589
  children: (row, i) => (() => {
553
- var _el$22 = web.getNextElement(_tmpl$1);
554
- web.insert(_el$22, web.createComponent(solidJs.For, {
590
+ var _el$25 = web.getNextElement(_tmpl$10);
591
+ web.insert(_el$25, web.createComponent(solidJs.For, {
555
592
  get each() {
556
593
  return tableParams.columns;
557
594
  },
558
595
  children: (column) => (() => {
559
- var _el$23 = web.getNextElement(_tmpl$10), _el$24 = _el$23.firstChild;
560
- web.effect(() => web.setProperty(_el$24, "innerHTML", highlightQuery(renderCellValue(row[column.key], citationCtx), debouncedQuery())));
561
- return _el$23;
596
+ var _el$26 = web.getNextElement(_tmpl$11), _el$27 = _el$26.firstChild;
597
+ web.effect(() => web.setProperty(_el$27, "innerHTML", highlightQuery(renderCellValue(row[column.key], citationCtx), debouncedQuery())));
598
+ return _el$26;
562
599
  })()
563
600
  }));
564
- web.effect(() => web.className(_el$22, `hover:bg-gray-50 dark:hover:bg-gray-700/50 transition-colors ${i() % 2 === 0 ? "bg-white dark:bg-gray-800" : "bg-gray-50/30 dark:bg-gray-800/50"}`));
565
- return _el$22;
601
+ web.effect(() => web.className(_el$25, `hover:bg-gray-50 dark:hover:bg-gray-700/50 transition-colors ${i() % 2 === 0 ? "bg-white dark:bg-gray-800" : "bg-gray-50/30 dark:bg-gray-800/50"}`));
602
+ return _el$25;
566
603
  })()
567
604
  }));
568
- return _el$21;
605
+ return _el$24;
569
606
  })();
570
607
  const VirtualizedTableBody = () => {
571
608
  const v = virtualizer();
@@ -575,39 +612,39 @@ ${dataRows}`;
575
612
  const opts = virtualizeOpts();
576
613
  const rowHeight = opts.rowHeight ?? 48;
577
614
  return (() => {
578
- var _el$25 = web.getNextElement(_tmpl$11);
579
- web.setStyleProperty(_el$25, "height", `${totalSize}px`);
580
- web.insert(_el$25, web.createComponent(solidJs.For, {
615
+ var _el$28 = web.getNextElement(_tmpl$12);
616
+ web.setStyleProperty(_el$28, "height", `${totalSize}px`);
617
+ web.insert(_el$28, web.createComponent(solidJs.For, {
581
618
  each: items,
582
619
  children: (virtualRow) => {
583
620
  const row = tableParams.rows[virtualRow.index];
584
621
  return (() => {
585
- var _el$26 = web.getNextElement(_tmpl$1);
586
- web.setStyleProperty(_el$26, "height", `${rowHeight}px`);
587
- web.insert(_el$26, web.createComponent(solidJs.For, {
622
+ var _el$29 = web.getNextElement(_tmpl$10);
623
+ web.setStyleProperty(_el$29, "height", `${rowHeight}px`);
624
+ web.insert(_el$29, web.createComponent(solidJs.For, {
588
625
  get each() {
589
626
  return tableParams.columns;
590
627
  },
591
628
  children: (column) => (() => {
592
- var _el$27 = web.getNextElement(_tmpl$10), _el$28 = _el$27.firstChild;
593
- web.effect(() => web.setProperty(_el$28, "innerHTML", highlightQuery(renderCellValue(row[column.key], citationCtx), debouncedQuery())));
594
- return _el$27;
629
+ var _el$30 = web.getNextElement(_tmpl$11), _el$31 = _el$30.firstChild;
630
+ web.effect(() => web.setProperty(_el$31, "innerHTML", highlightQuery(renderCellValue(row[column.key], citationCtx), debouncedQuery())));
631
+ return _el$30;
595
632
  })()
596
633
  }));
597
634
  web.effect((_p$) => {
598
635
  var _v$6 = `hover:bg-gray-50 dark:hover:bg-gray-700/50 transition-colors absolute left-0 right-0 ${virtualRow.index % 2 === 0 ? "bg-white dark:bg-gray-800" : "bg-gray-50/30 dark:bg-gray-800/50"}`, _v$7 = `translateY(${virtualRow.start}px)`;
599
- _v$6 !== _p$.e && web.className(_el$26, _p$.e = _v$6);
600
- _v$7 !== _p$.t && web.setStyleProperty(_el$26, "transform", _p$.t = _v$7);
636
+ _v$6 !== _p$.e && web.className(_el$29, _p$.e = _v$6);
637
+ _v$7 !== _p$.t && web.setStyleProperty(_el$29, "transform", _p$.t = _v$7);
601
638
  return _p$;
602
639
  }, {
603
640
  e: void 0,
604
641
  t: void 0
605
642
  });
606
- return _el$26;
643
+ return _el$29;
607
644
  })();
608
645
  }
609
646
  }));
610
- return _el$25;
647
+ return _el$28;
611
648
  })();
612
649
  };
613
650
  return web.createComponent(ExpandableWrapper.ExpandableWrapper, {
@@ -622,8 +659,8 @@ ${dataRows}`;
622
659
  return props.toolbarVariant;
623
660
  },
624
661
  get children() {
625
- var _el$29 = web.getNextElement(_tmpl$25), _el$113 = _el$29.firstChild, [_el$114, _co$25] = web.getNextMarker(_el$113.nextSibling), _el$37 = _el$114.nextSibling, _el$105 = _el$37.firstChild, [_el$106, _co$21] = web.getNextMarker(_el$105.nextSibling), _el$107 = _el$106.nextSibling, [_el$108, _co$22] = web.getNextMarker(_el$107.nextSibling), _el$63 = _el$108.nextSibling, _el$64 = _el$63.firstChild, _el$65 = _el$64.firstChild, _el$66 = _el$65.firstChild, _el$67 = _el$65.nextSibling, [_el$68, _co$11] = web.getNextMarker(_el$67.nextSibling), _el$109 = _el$63.nextSibling, [_el$110, _co$23] = web.getNextMarker(_el$109.nextSibling), _el$111 = _el$110.nextSibling, [_el$112, _co$24] = web.getNextMarker(_el$111.nextSibling);
626
- web.insert(_el$29, web.createComponent(solidJs.Show, {
662
+ var _el$32 = web.getNextElement(_tmpl$26), _el$116 = _el$32.firstChild, [_el$117, _co$26] = web.getNextMarker(_el$116.nextSibling), _el$40 = _el$117.nextSibling, _el$108 = _el$40.firstChild, [_el$109, _co$22] = web.getNextMarker(_el$108.nextSibling), _el$110 = _el$109.nextSibling, [_el$111, _co$23] = web.getNextMarker(_el$110.nextSibling), _el$66 = _el$111.nextSibling, _el$67 = _el$66.firstChild, _el$68 = _el$67.firstChild, _el$69 = _el$68.firstChild, _el$70 = _el$68.nextSibling, [_el$71, _co$12] = web.getNextMarker(_el$70.nextSibling), _el$112 = _el$66.nextSibling, [_el$113, _co$24] = web.getNextMarker(_el$112.nextSibling), _el$114 = _el$113.nextSibling, [_el$115, _co$25] = web.getNextMarker(_el$114.nextSibling);
663
+ web.insert(_el$32, web.createComponent(solidJs.Show, {
627
664
  when: exportable,
628
665
  get fallback() {
629
666
  return web.createComponent(CopyButton, {
@@ -633,11 +670,11 @@ ${dataRows}`;
633
670
  });
634
671
  },
635
672
  get children() {
636
- var _el$30 = web.getNextElement(_tmpl$15), _el$31 = _el$30.firstChild, _el$35 = _el$31.nextSibling, [_el$36, _co$5] = web.getNextMarker(_el$35.nextSibling);
637
- _el$31.$$click = () => setShowExportMenu(!showExportMenu());
673
+ var _el$33 = web.getNextElement(_tmpl$16), _el$34 = _el$33.firstChild, _el$38 = _el$34.nextSibling, [_el$39, _co$6] = web.getNextMarker(_el$38.nextSibling);
674
+ _el$34.$$click = () => setShowExportMenu(!showExportMenu());
638
675
  var _ref$ = exportTriggerRef;
639
- typeof _ref$ === "function" ? web.use(_ref$, _el$31) : exportTriggerRef = _el$31;
640
- web.insert(_el$30, web.createComponent(PortalDropdownMenu.PortalDropdownMenu, {
676
+ typeof _ref$ === "function" ? web.use(_ref$, _el$34) : exportTriggerRef = _el$34;
677
+ web.insert(_el$33, web.createComponent(PortalDropdownMenu.PortalDropdownMenu, {
641
678
  get open() {
642
679
  return showExportMenu();
643
680
  },
@@ -650,116 +687,116 @@ ${dataRows}`;
650
687
  return exportFormats.includes("tsv");
651
688
  },
652
689
  get children() {
653
- var _el$32 = web.getNextElement(_tmpl$12);
654
- _el$32.$$click = () => handleExport("tsv");
690
+ var _el$35 = web.getNextElement(_tmpl$13);
691
+ _el$35.$$click = () => handleExport("tsv");
655
692
  web.runHydrationEvents();
656
- return _el$32;
693
+ return _el$35;
657
694
  }
658
695
  }), web.createComponent(solidJs.Show, {
659
696
  get when() {
660
697
  return exportFormats.includes("csv");
661
698
  },
662
699
  get children() {
663
- var _el$33 = web.getNextElement(_tmpl$13);
664
- _el$33.$$click = () => handleExport("csv");
700
+ var _el$36 = web.getNextElement(_tmpl$14);
701
+ _el$36.$$click = () => handleExport("csv");
665
702
  web.runHydrationEvents();
666
- return _el$33;
703
+ return _el$36;
667
704
  }
668
705
  }), web.createComponent(solidJs.Show, {
669
706
  get when() {
670
707
  return exportFormats.includes("json");
671
708
  },
672
709
  get children() {
673
- var _el$34 = web.getNextElement(_tmpl$14);
674
- _el$34.$$click = () => handleExport("json");
710
+ var _el$37 = web.getNextElement(_tmpl$15);
711
+ _el$37.$$click = () => handleExport("json");
675
712
  web.runHydrationEvents();
676
- return _el$34;
713
+ return _el$37;
677
714
  }
678
715
  })];
679
716
  }
680
- }), _el$36, _co$5);
681
- web.effect(() => web.setAttribute(_el$31, "aria-expanded", showExportMenu()));
717
+ }), _el$39, _co$6);
718
+ web.effect(() => web.setAttribute(_el$34, "aria-expanded", showExportMenu()));
682
719
  web.runHydrationEvents();
683
- return _el$30;
720
+ return _el$33;
684
721
  }
685
- }), _el$114, _co$25);
686
- web.insert(_el$37, web.createComponent(solidJs.Show, {
722
+ }), _el$117, _co$26);
723
+ web.insert(_el$40, web.createComponent(solidJs.Show, {
687
724
  get when() {
688
725
  return tableParams.title;
689
726
  },
690
727
  get children() {
691
- var _el$38 = web.getNextElement(_tmpl$17), _el$44 = _el$38.firstChild, [_el$45, _co$7] = web.getNextMarker(_el$44.nextSibling), _el$46 = _el$45.nextSibling, [_el$47, _co$8] = web.getNextMarker(_el$46.nextSibling);
692
- web.setAttribute(_el$38, "id", `${tableId}-title`);
693
- web.insert(_el$38, () => tableParams.title, _el$45, _co$7);
694
- web.insert(_el$38, web.createComponent(solidJs.Show, {
728
+ var _el$41 = web.getNextElement(_tmpl$18), _el$47 = _el$41.firstChild, [_el$48, _co$8] = web.getNextMarker(_el$47.nextSibling), _el$49 = _el$48.nextSibling, [_el$50, _co$9] = web.getNextMarker(_el$49.nextSibling);
729
+ web.setAttribute(_el$41, "id", `${tableId}-title`);
730
+ web.insert(_el$41, () => tableParams.title, _el$48, _co$8);
731
+ web.insert(_el$41, web.createComponent(solidJs.Show, {
695
732
  get when() {
696
733
  return isVirtualizing();
697
734
  },
698
735
  get children() {
699
- var _el$39 = web.getNextElement(_tmpl$16), _el$40 = _el$39.firstChild, _el$42 = _el$40.nextSibling, [_el$43, _co$6] = web.getNextMarker(_el$42.nextSibling);
700
- _el$43.nextSibling;
701
- web.insert(_el$39, () => {
736
+ var _el$42 = web.getNextElement(_tmpl$17), _el$43 = _el$42.firstChild, _el$45 = _el$43.nextSibling, [_el$46, _co$7] = web.getNextMarker(_el$45.nextSibling);
737
+ _el$46.nextSibling;
738
+ web.insert(_el$42, () => {
702
739
  var _a;
703
740
  return (_a = tableParams.rows) == null ? void 0 : _a.length;
704
- }, _el$43, _co$6);
705
- return _el$39;
741
+ }, _el$46, _co$7);
742
+ return _el$42;
706
743
  }
707
- }), _el$47, _co$8);
708
- return _el$38;
744
+ }), _el$50, _co$9);
745
+ return _el$41;
709
746
  }
710
- }), _el$106, _co$21);
711
- web.insert(_el$37, web.createComponent(solidJs.Show, {
747
+ }), _el$109, _co$22);
748
+ web.insert(_el$40, web.createComponent(solidJs.Show, {
712
749
  get when() {
713
750
  return isSearchable();
714
751
  },
715
752
  get children() {
716
753
  return [(() => {
717
- var _el$48 = web.getNextElement(_tmpl$19), _el$49 = _el$48.firstChild, _el$50 = _el$49.nextSibling, _el$52 = _el$50.nextSibling, [_el$53, _co$9] = web.getNextMarker(_el$52.nextSibling);
718
- _el$50.$$input = (e) => handleSearch(e.currentTarget.value);
719
- web.insert(_el$48, web.createComponent(solidJs.Show, {
754
+ var _el$51 = web.getNextElement(_tmpl$20), _el$52 = _el$51.firstChild, _el$53 = _el$52.nextSibling, _el$55 = _el$53.nextSibling, [_el$56, _co$0] = web.getNextMarker(_el$55.nextSibling);
755
+ _el$53.$$input = (e) => handleSearch(e.currentTarget.value);
756
+ web.insert(_el$51, web.createComponent(solidJs.Show, {
720
757
  get when() {
721
758
  return searchQuery();
722
759
  },
723
760
  get children() {
724
- var _el$51 = web.getNextElement(_tmpl$18);
725
- _el$51.$$click = () => {
761
+ var _el$54 = web.getNextElement(_tmpl$19);
762
+ _el$54.$$click = () => {
726
763
  handleSearch("");
727
764
  setSearchQuery("");
728
765
  setDebouncedQuery("");
729
766
  };
730
767
  web.runHydrationEvents();
731
- return _el$51;
768
+ return _el$54;
732
769
  }
733
- }), _el$53, _co$9);
734
- web.effect(() => web.setAttribute(_el$50, "placeholder", searchPlaceholder()));
735
- web.effect(() => web.setProperty(_el$50, "value", searchQuery()));
770
+ }), _el$56, _co$0);
771
+ web.effect(() => web.setAttribute(_el$53, "placeholder", searchPlaceholder()));
772
+ web.effect(() => web.setProperty(_el$53, "value", searchQuery()));
736
773
  web.runHydrationEvents();
737
- return _el$48;
774
+ return _el$51;
738
775
  })(), web.createComponent(solidJs.Show, {
739
776
  get when() {
740
777
  return web.memo(() => !!debouncedQuery())() && filteredRows().length !== sortedRows().length;
741
778
  },
742
779
  get children() {
743
- var _el$54 = web.getNextElement(_tmpl$20), _el$57 = _el$54.firstChild, [_el$58, _co$0] = web.getNextMarker(_el$57.nextSibling), _el$55 = _el$58.nextSibling, _el$59 = _el$55.nextSibling, [_el$60, _co$1] = web.getNextMarker(_el$59.nextSibling), _el$56 = _el$60.nextSibling, _el$61 = _el$56.nextSibling, [_el$62, _co$10] = web.getNextMarker(_el$61.nextSibling);
744
- web.insert(_el$54, () => filteredRows().length, _el$58, _co$0);
745
- web.insert(_el$54, () => filteredRows().length !== 1 ? "s" : "", _el$60, _co$1);
746
- web.insert(_el$54, () => sortedRows().length, _el$62, _co$10);
747
- return _el$54;
780
+ var _el$57 = web.getNextElement(_tmpl$21), _el$60 = _el$57.firstChild, [_el$61, _co$1] = web.getNextMarker(_el$60.nextSibling), _el$58 = _el$61.nextSibling, _el$62 = _el$58.nextSibling, [_el$63, _co$10] = web.getNextMarker(_el$62.nextSibling), _el$59 = _el$63.nextSibling, _el$64 = _el$59.nextSibling, [_el$65, _co$11] = web.getNextMarker(_el$64.nextSibling);
781
+ web.insert(_el$57, () => filteredRows().length, _el$61, _co$1);
782
+ web.insert(_el$57, () => filteredRows().length !== 1 ? "s" : "", _el$63, _co$10);
783
+ web.insert(_el$57, () => sortedRows().length, _el$65, _co$11);
784
+ return _el$57;
748
785
  }
749
786
  })];
750
787
  }
751
- }), _el$108, _co$22);
788
+ }), _el$111, _co$23);
752
789
  var _ref$2 = scrollContainerRef;
753
- typeof _ref$2 === "function" ? web.use(_ref$2, _el$63) : scrollContainerRef = _el$63;
754
- web.insert(_el$66, web.createComponent(solidJs.For, {
790
+ typeof _ref$2 === "function" ? web.use(_ref$2, _el$66) : scrollContainerRef = _el$66;
791
+ web.insert(_el$69, web.createComponent(solidJs.For, {
755
792
  get each() {
756
793
  return tableParams.columns;
757
794
  },
758
795
  children: (column) => (() => {
759
- var _el$115 = web.getNextElement(_tmpl$26), _el$116 = _el$115.firstChild, _el$118 = _el$116.firstChild, [_el$119, _co$26] = web.getNextMarker(_el$118.nextSibling), _el$117 = _el$119.nextSibling;
760
- web.addEventListener(_el$115, "click", () => handleSort(column.key));
761
- web.insert(_el$116, () => column.label, _el$119, _co$26);
762
- web.insert(_el$117, () => sortIndicator(column.key));
796
+ var _el$118 = web.getNextElement(_tmpl$27), _el$119 = _el$118.firstChild, _el$121 = _el$119.firstChild, [_el$122, _co$27] = web.getNextMarker(_el$121.nextSibling), _el$120 = _el$122.nextSibling;
797
+ web.addEventListener(_el$118, "click", () => handleSort(column.key));
798
+ web.insert(_el$119, () => column.label, _el$122, _co$27);
799
+ web.insert(_el$120, () => sortIndicator(column.key));
763
800
  web.effect((_p$) => {
764
801
  var _v$14 = column.width ? {
765
802
  width: column.width
@@ -767,19 +804,19 @@ ${dataRows}`;
767
804
  "opacity-30": sortKey() !== column.key,
768
805
  "opacity-100 text-blue-600 dark:text-blue-400": sortKey() === column.key
769
806
  };
770
- _p$.e = web.style(_el$115, _v$14, _p$.e);
771
- _v$15 !== _p$.t && web.setAttribute(_el$115, "title", _p$.t = _v$15);
772
- _p$.a = web.classList(_el$117, _v$16, _p$.a);
807
+ _p$.e = web.style(_el$118, _v$14, _p$.e);
808
+ _v$15 !== _p$.t && web.setAttribute(_el$118, "title", _p$.t = _v$15);
809
+ _p$.a = web.classList(_el$120, _v$16, _p$.a);
773
810
  return _p$;
774
811
  }, {
775
812
  e: void 0,
776
813
  t: void 0,
777
814
  a: void 0
778
815
  });
779
- return _el$115;
816
+ return _el$118;
780
817
  })()
781
818
  }));
782
- web.insert(_el$64, web.createComponent(solidJs.Show, {
819
+ web.insert(_el$67, web.createComponent(solidJs.Show, {
783
820
  get when() {
784
821
  return isVirtualizing();
785
822
  },
@@ -789,69 +826,69 @@ ${dataRows}`;
789
826
  get children() {
790
827
  return web.createComponent(VirtualizedTableBody, {});
791
828
  }
792
- }), _el$68, _co$11);
793
- web.insert(_el$37, web.createComponent(solidJs.Show, {
829
+ }), _el$71, _co$12);
830
+ web.insert(_el$40, web.createComponent(solidJs.Show, {
794
831
  get when() {
795
832
  return tableParams.pagination;
796
833
  },
797
834
  get children() {
798
- var _el$69 = web.getNextElement(_tmpl$21), _el$70 = _el$69.firstChild, _el$71 = _el$70.firstChild, _el$76 = _el$71.nextSibling, [_el$77, _co$12] = web.getNextMarker(_el$76.nextSibling), _el$72 = _el$77.nextSibling, _el$78 = _el$72.nextSibling, [_el$79, _co$13] = web.getNextMarker(_el$78.nextSibling), _el$74 = _el$79.nextSibling, _el$80 = _el$74.nextSibling, [_el$81, _co$14] = web.getNextMarker(_el$80.nextSibling);
799
- web.insert(_el$70, () => tableParams.pagination.currentPage * tableParams.pagination.pageSize + 1, _el$77, _co$12);
800
- web.insert(_el$70, () => Math.min((tableParams.pagination.currentPage + 1) * tableParams.pagination.pageSize, tableParams.pagination.totalRows), _el$79, _co$13);
801
- web.insert(_el$70, () => tableParams.pagination.totalRows, _el$81, _co$14);
802
- return _el$69;
835
+ var _el$72 = web.getNextElement(_tmpl$22), _el$73 = _el$72.firstChild, _el$74 = _el$73.firstChild, _el$79 = _el$74.nextSibling, [_el$80, _co$13] = web.getNextMarker(_el$79.nextSibling), _el$75 = _el$80.nextSibling, _el$81 = _el$75.nextSibling, [_el$82, _co$14] = web.getNextMarker(_el$81.nextSibling), _el$77 = _el$82.nextSibling, _el$83 = _el$77.nextSibling, [_el$84, _co$15] = web.getNextMarker(_el$83.nextSibling);
836
+ web.insert(_el$73, () => tableParams.pagination.currentPage * tableParams.pagination.pageSize + 1, _el$80, _co$13);
837
+ web.insert(_el$73, () => Math.min((tableParams.pagination.currentPage + 1) * tableParams.pagination.pageSize, tableParams.pagination.totalRows), _el$82, _co$14);
838
+ web.insert(_el$73, () => tableParams.pagination.totalRows, _el$84, _co$15);
839
+ return _el$72;
803
840
  }
804
- }), _el$110, _co$23);
805
- web.insert(_el$37, web.createComponent(solidJs.Show, {
841
+ }), _el$113, _co$24);
842
+ web.insert(_el$40, web.createComponent(solidJs.Show, {
806
843
  get when() {
807
844
  return needsClientPagination();
808
845
  },
809
846
  get children() {
810
- var _el$82 = web.getNextElement(_tmpl$24), _el$83 = _el$82.firstChild, _el$86 = _el$83.firstChild, [_el$87, _co$15] = web.getNextMarker(_el$86.nextSibling), _el$84 = _el$87.nextSibling, _el$88 = _el$84.nextSibling, [_el$89, _co$16] = web.getNextMarker(_el$88.nextSibling), _el$85 = _el$89.nextSibling, _el$90 = _el$85.nextSibling, [_el$91, _co$17] = web.getNextMarker(_el$90.nextSibling), _el$92 = _el$83.nextSibling, _el$93 = _el$92.firstChild, _el$94 = _el$93.nextSibling, _el$96 = _el$94.firstChild, [_el$97, _co$18] = web.getNextMarker(_el$96.nextSibling), _el$95 = _el$97.nextSibling, _el$98 = _el$95.nextSibling, [_el$99, _co$19] = web.getNextMarker(_el$98.nextSibling), _el$100 = _el$94.nextSibling, _el$103 = _el$100.nextSibling, [_el$104, _co$20] = web.getNextMarker(_el$103.nextSibling);
811
- web.insert(_el$83, clientRangeStart, _el$87, _co$15);
812
- web.insert(_el$83, clientRangeEnd, _el$89, _co$16);
813
- web.insert(_el$83, () => filteredRows().length.toLocaleString("fr-FR"), _el$91, _co$17);
814
- _el$93.$$click = () => setClientPage((p) => p - 1);
815
- web.insert(_el$94, () => clientPage() + 1, _el$97, _co$18);
816
- web.insert(_el$94, clientTotalPages, _el$99, _co$19);
817
- _el$100.$$click = () => setClientPage((p) => p + 1);
818
- web.insert(_el$92, web.createComponent(solidJs.Show, {
847
+ var _el$85 = web.getNextElement(_tmpl$25), _el$86 = _el$85.firstChild, _el$89 = _el$86.firstChild, [_el$90, _co$16] = web.getNextMarker(_el$89.nextSibling), _el$87 = _el$90.nextSibling, _el$91 = _el$87.nextSibling, [_el$92, _co$17] = web.getNextMarker(_el$91.nextSibling), _el$88 = _el$92.nextSibling, _el$93 = _el$88.nextSibling, [_el$94, _co$18] = web.getNextMarker(_el$93.nextSibling), _el$95 = _el$86.nextSibling, _el$96 = _el$95.firstChild, _el$97 = _el$96.nextSibling, _el$99 = _el$97.firstChild, [_el$100, _co$19] = web.getNextMarker(_el$99.nextSibling), _el$98 = _el$100.nextSibling, _el$101 = _el$98.nextSibling, [_el$102, _co$20] = web.getNextMarker(_el$101.nextSibling), _el$103 = _el$97.nextSibling, _el$106 = _el$103.nextSibling, [_el$107, _co$21] = web.getNextMarker(_el$106.nextSibling);
848
+ web.insert(_el$86, clientRangeStart, _el$90, _co$16);
849
+ web.insert(_el$86, clientRangeEnd, _el$92, _co$17);
850
+ web.insert(_el$86, () => filteredRows().length.toLocaleString("fr-FR"), _el$94, _co$18);
851
+ _el$96.$$click = () => setClientPage((p) => p - 1);
852
+ web.insert(_el$97, () => clientPage() + 1, _el$100, _co$19);
853
+ web.insert(_el$97, clientTotalPages, _el$102, _co$20);
854
+ _el$103.$$click = () => setClientPage((p) => p + 1);
855
+ web.insert(_el$95, web.createComponent(solidJs.Show, {
819
856
  get when() {
820
857
  return web.memo(() => !!isExpanded())() && filteredRows().length > 10;
821
858
  },
822
859
  get children() {
823
860
  return [(() => {
824
- var _el$101 = web.getNextElement(_tmpl$22);
825
- _el$101.addEventListener("change", (e) => handlePageSizeChange(Number(e.currentTarget.value)));
826
- web.insert(_el$101, web.createComponent(solidJs.For, {
861
+ var _el$104 = web.getNextElement(_tmpl$23);
862
+ _el$104.addEventListener("change", (e) => handlePageSizeChange(Number(e.currentTarget.value)));
863
+ web.insert(_el$104, web.createComponent(solidJs.For, {
827
864
  get each() {
828
865
  return pageSizeOptions();
829
866
  },
830
867
  children: (opt) => (() => {
831
- var _el$120 = web.getNextElement(_tmpl$27);
832
- web.insert(_el$120, () => opt.label);
833
- web.effect(() => web.setProperty(_el$120, "value", opt.value));
834
- return _el$120;
868
+ var _el$123 = web.getNextElement(_tmpl$28);
869
+ web.insert(_el$123, () => opt.label);
870
+ web.effect(() => web.setProperty(_el$123, "value", opt.value));
871
+ return _el$123;
835
872
  })()
836
873
  }));
837
- web.effect(() => web.setProperty(_el$101, "value", clientPageSize()));
838
- return _el$101;
839
- })(), web.getNextElement(_tmpl$23)];
874
+ web.effect(() => web.setProperty(_el$104, "value", clientPageSize()));
875
+ return _el$104;
876
+ })(), web.getNextElement(_tmpl$24)];
840
877
  }
841
- }), _el$104, _co$20);
878
+ }), _el$107, _co$21);
842
879
  web.effect((_p$) => {
843
880
  var _v$8 = clientPage() === 0, _v$9 = clientPage() >= clientTotalPages() - 1;
844
- _v$8 !== _p$.e && web.setProperty(_el$93, "disabled", _p$.e = _v$8);
845
- _v$9 !== _p$.t && web.setProperty(_el$100, "disabled", _p$.t = _v$9);
881
+ _v$8 !== _p$.e && web.setProperty(_el$96, "disabled", _p$.e = _v$8);
882
+ _v$9 !== _p$.t && web.setProperty(_el$103, "disabled", _p$.t = _v$9);
846
883
  return _p$;
847
884
  }, {
848
885
  e: void 0,
849
886
  t: void 0
850
887
  });
851
888
  web.runHydrationEvents();
852
- return _el$82;
889
+ return _el$85;
853
890
  }
854
- }), _el$112, _co$24);
891
+ }), _el$115, _co$25);
855
892
  web.effect((_p$) => {
856
893
  var _v$0 = `relative w-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden group ${isExpanded() ? "flex-1 min-h-0 flex flex-col" : "h-full"}`, _v$1 = `p-4 ${isExpanded() ? "flex-1 min-h-0 flex flex-col" : ""}`, _v$10 = `overflow-x-auto ${isExpanded() ? "flex-1 min-h-0" : ""}`, _v$11 = (
857
894
  // v6.1.0 — when expanded, the scroll container fills the
@@ -883,12 +920,12 @@ ${dataRows}`;
883
920
  return {};
884
921
  })()
885
922
  ), _v$12 = tableParams.title || "Data table", _v$13 = tableParams.title ? `${tableId}-title` : void 0;
886
- _v$0 !== _p$.e && web.className(_el$29, _p$.e = _v$0);
887
- _v$1 !== _p$.t && web.className(_el$37, _p$.t = _v$1);
888
- _v$10 !== _p$.a && web.className(_el$63, _p$.a = _v$10);
889
- _p$.o = web.style(_el$63, _v$11, _p$.o);
890
- _v$12 !== _p$.i && web.setAttribute(_el$63, "aria-label", _p$.i = _v$12);
891
- _v$13 !== _p$.n && web.setAttribute(_el$64, "aria-labelledby", _p$.n = _v$13);
923
+ _v$0 !== _p$.e && web.className(_el$32, _p$.e = _v$0);
924
+ _v$1 !== _p$.t && web.className(_el$40, _p$.t = _v$1);
925
+ _v$10 !== _p$.a && web.className(_el$66, _p$.a = _v$10);
926
+ _p$.o = web.style(_el$66, _v$11, _p$.o);
927
+ _v$12 !== _p$.i && web.setAttribute(_el$66, "aria-label", _p$.i = _v$12);
928
+ _v$13 !== _p$.n && web.setAttribute(_el$67, "aria-labelledby", _p$.n = _v$13);
892
929
  return _p$;
893
930
  }, {
894
931
  e: void 0,
@@ -898,7 +935,7 @@ ${dataRows}`;
898
935
  i: void 0,
899
936
  n: void 0
900
937
  });
901
- return _el$29;
938
+ return _el$32;
902
939
  }
903
940
  });
904
941
  }
@@ -911,51 +948,51 @@ function MetricRenderer(props) {
911
948
  return `${title}: ${value}${unit ? " " + unit : ""}`;
912
949
  };
913
950
  return (() => {
914
- var _el$121 = web.getNextElement(_tmpl$31), _el$143 = _el$121.firstChild, [_el$144, _co$32] = web.getNextMarker(_el$143.nextSibling), _el$122 = _el$144.nextSibling, _el$123 = _el$122.firstChild, _el$124 = _el$123.firstChild, _el$125 = _el$124.nextSibling, _el$126 = _el$125.firstChild, _el$128 = _el$126.nextSibling, [_el$129, _co$27] = web.getNextMarker(_el$128.nextSibling), _el$139 = _el$123.nextSibling, [_el$140, _co$30] = web.getNextMarker(_el$139.nextSibling), _el$141 = _el$140.nextSibling, [_el$142, _co$31] = web.getNextMarker(_el$141.nextSibling);
915
- web.insert(_el$121, web.createComponent(CopyButton, {
951
+ var _el$124 = web.getNextElement(_tmpl$32), _el$146 = _el$124.firstChild, [_el$147, _co$33] = web.getNextMarker(_el$146.nextSibling), _el$125 = _el$147.nextSibling, _el$126 = _el$125.firstChild, _el$127 = _el$126.firstChild, _el$128 = _el$127.nextSibling, _el$129 = _el$128.firstChild, _el$131 = _el$129.nextSibling, [_el$132, _co$28] = web.getNextMarker(_el$131.nextSibling), _el$142 = _el$126.nextSibling, [_el$143, _co$31] = web.getNextMarker(_el$142.nextSibling), _el$144 = _el$143.nextSibling, [_el$145, _co$32] = web.getNextMarker(_el$144.nextSibling);
952
+ web.insert(_el$124, web.createComponent(CopyButton, {
916
953
  getText: getMetricText,
917
954
  title: "Copy metric",
918
955
  position: "top-right"
919
- }), _el$144, _co$32);
920
- web.insert(_el$124, () => metricParams.title);
921
- web.insert(_el$126, () => metricParams.value);
922
- web.insert(_el$125, web.createComponent(solidJs.Show, {
956
+ }), _el$147, _co$33);
957
+ web.insert(_el$127, () => metricParams.title);
958
+ web.insert(_el$129, () => metricParams.value);
959
+ web.insert(_el$128, web.createComponent(solidJs.Show, {
923
960
  get when() {
924
961
  return metricParams.unit;
925
962
  },
926
963
  get children() {
927
- var _el$127 = web.getNextElement(_tmpl$28);
928
- web.insert(_el$127, () => metricParams.unit);
929
- return _el$127;
964
+ var _el$130 = web.getNextElement(_tmpl$29);
965
+ web.insert(_el$130, () => metricParams.unit);
966
+ return _el$130;
930
967
  }
931
- }), _el$129, _co$27);
932
- web.insert(_el$122, web.createComponent(solidJs.Show, {
968
+ }), _el$132, _co$28);
969
+ web.insert(_el$125, web.createComponent(solidJs.Show, {
933
970
  get when() {
934
971
  return metricParams.trend;
935
972
  },
936
973
  get children() {
937
- var _el$130 = web.getNextElement(_tmpl$29), _el$131 = _el$130.firstChild, _el$134 = _el$131.firstChild, [_el$135, _co$28] = web.getNextMarker(_el$134.nextSibling), _el$132 = _el$135.nextSibling, _el$136 = _el$132.nextSibling, [_el$137, _co$29] = web.getNextMarker(_el$136.nextSibling);
938
- _el$137.nextSibling;
939
- web.insert(_el$131, (() => {
974
+ var _el$133 = web.getNextElement(_tmpl$30), _el$134 = _el$133.firstChild, _el$137 = _el$134.firstChild, [_el$138, _co$29] = web.getNextMarker(_el$137.nextSibling), _el$135 = _el$138.nextSibling, _el$139 = _el$135.nextSibling, [_el$140, _co$30] = web.getNextMarker(_el$139.nextSibling);
975
+ _el$140.nextSibling;
976
+ web.insert(_el$134, (() => {
940
977
  var _c$ = web.memo(() => metricParams.trend.direction === "up");
941
978
  return () => _c$() ? "�" : metricParams.trend.direction === "down" ? "�" : "�";
942
- })(), _el$135, _co$28);
943
- web.insert(_el$131, () => Math.abs(metricParams.trend.value), _el$137, _co$29);
944
- web.effect(() => web.className(_el$131, `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"}`));
945
- return _el$130;
979
+ })(), _el$138, _co$29);
980
+ web.insert(_el$134, () => Math.abs(metricParams.trend.value), _el$140, _co$30);
981
+ web.effect(() => web.className(_el$134, `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"}`));
982
+ return _el$133;
946
983
  }
947
- }), _el$140, _co$30);
948
- web.insert(_el$122, web.createComponent(solidJs.Show, {
984
+ }), _el$143, _co$31);
985
+ web.insert(_el$125, web.createComponent(solidJs.Show, {
949
986
  get when() {
950
987
  return metricParams.subtitle;
951
988
  },
952
989
  get children() {
953
- var _el$138 = web.getNextElement(_tmpl$30);
954
- web.insert(_el$138, () => metricParams.subtitle);
955
- return _el$138;
990
+ var _el$141 = web.getNextElement(_tmpl$31);
991
+ web.insert(_el$141, () => metricParams.subtitle);
992
+ return _el$141;
956
993
  }
957
- }), _el$142, _co$31);
958
- return _el$121;
994
+ }), _el$145, _co$32);
995
+ return _el$124;
959
996
  })();
960
997
  }
961
998
  function extractImageFromMarkdown(content) {
@@ -996,62 +1033,62 @@ function TextRenderer(props) {
996
1033
  },
997
1034
  get fallback() {
998
1035
  return (() => {
999
- var _el$145 = web.getNextElement(_tmpl$32), _el$147 = _el$145.firstChild, [_el$148, _co$33] = web.getNextMarker(_el$147.nextSibling), _el$146 = _el$148.nextSibling;
1000
- web.insert(_el$145, web.createComponent(CopyButton, {
1036
+ var _el$148 = web.getNextElement(_tmpl$33), _el$150 = _el$148.firstChild, [_el$151, _co$34] = web.getNextMarker(_el$150.nextSibling), _el$149 = _el$151.nextSibling;
1037
+ web.insert(_el$148, web.createComponent(CopyButton, {
1001
1038
  getText: getTextContent,
1002
1039
  title: "Copy text",
1003
1040
  position: "top-right"
1004
- }), _el$148, _co$33);
1041
+ }), _el$151, _co$34);
1005
1042
  web.effect((_p$) => {
1006
1043
  var _v$17 = `prose prose-sm dark:prose-invert max-w-none ${textParams.className || ""}`, _v$18 = htmlContent();
1007
- _v$17 !== _p$.e && web.className(_el$146, _p$.e = _v$17);
1008
- _v$18 !== _p$.t && web.setProperty(_el$146, "innerHTML", _p$.t = _v$18);
1044
+ _v$17 !== _p$.e && web.className(_el$149, _p$.e = _v$17);
1045
+ _v$18 !== _p$.t && web.setProperty(_el$149, "innerHTML", _p$.t = _v$18);
1009
1046
  return _p$;
1010
1047
  }, {
1011
1048
  e: void 0,
1012
1049
  t: void 0
1013
1050
  });
1014
- return _el$145;
1051
+ return _el$148;
1015
1052
  })();
1016
1053
  },
1017
1054
  children: (data) => (() => {
1018
- var _el$149 = web.getNextElement(_tmpl$33), _el$150 = _el$149.firstChild, _el$151 = _el$150.firstChild, _el$152 = _el$151.firstChild, _el$153 = _el$150.nextSibling, _el$154 = _el$153.firstChild;
1019
- web.insert(_el$154, () => data().credit);
1055
+ var _el$152 = web.getNextElement(_tmpl$34), _el$153 = _el$152.firstChild, _el$154 = _el$153.firstChild, _el$155 = _el$154.firstChild, _el$156 = _el$153.nextSibling, _el$157 = _el$156.firstChild;
1056
+ web.insert(_el$157, () => data().credit);
1020
1057
  web.effect((_p$) => {
1021
1058
  var _v$19 = data().linkUrl, _v$20 = data().imageUrl, _v$21 = data().alt;
1022
- _v$19 !== _p$.e && web.setAttribute(_el$151, "href", _p$.e = _v$19);
1023
- _v$20 !== _p$.t && web.setAttribute(_el$152, "src", _p$.t = _v$20);
1024
- _v$21 !== _p$.a && web.setAttribute(_el$152, "alt", _p$.a = _v$21);
1059
+ _v$19 !== _p$.e && web.setAttribute(_el$154, "href", _p$.e = _v$19);
1060
+ _v$20 !== _p$.t && web.setAttribute(_el$155, "src", _p$.t = _v$20);
1061
+ _v$21 !== _p$.a && web.setAttribute(_el$155, "alt", _p$.a = _v$21);
1025
1062
  return _p$;
1026
1063
  }, {
1027
1064
  e: void 0,
1028
1065
  t: void 0,
1029
1066
  a: void 0
1030
1067
  });
1031
- return _el$149;
1068
+ return _el$152;
1032
1069
  })()
1033
1070
  });
1034
1071
  }
1035
1072
  function IframeRenderer(props) {
1036
1073
  const params = props.component.params;
1037
1074
  return (() => {
1038
- var _el$155 = web.getNextElement(_tmpl$35), _el$159 = _el$155.firstChild, [_el$160, _co$34] = web.getNextMarker(_el$159.nextSibling), _el$158 = _el$160.nextSibling;
1039
- web.insert(_el$155, web.createComponent(solidJs.Show, {
1075
+ var _el$158 = web.getNextElement(_tmpl$36), _el$162 = _el$158.firstChild, [_el$163, _co$35] = web.getNextMarker(_el$162.nextSibling), _el$161 = _el$163.nextSibling;
1076
+ web.insert(_el$158, web.createComponent(solidJs.Show, {
1040
1077
  get when() {
1041
1078
  return params.title;
1042
1079
  },
1043
1080
  get children() {
1044
- var _el$156 = web.getNextElement(_tmpl$34), _el$157 = _el$156.firstChild;
1045
- web.insert(_el$157, () => params.title);
1046
- return _el$156;
1081
+ var _el$159 = web.getNextElement(_tmpl$35), _el$160 = _el$159.firstChild;
1082
+ web.insert(_el$160, () => params.title);
1083
+ return _el$159;
1047
1084
  }
1048
- }), _el$160, _co$34);
1085
+ }), _el$163, _co$35);
1049
1086
  web.effect((_p$) => {
1050
1087
  var _v$22 = params.url, _v$23 = params.title || "Embedded content", _v$24 = `height: ${params.height || "400px"}; min-height: 300px;`, _v$25 = validation.getIframeSandbox(params.url);
1051
- _v$22 !== _p$.e && web.setAttribute(_el$158, "src", _p$.e = _v$22);
1052
- _v$23 !== _p$.t && web.setAttribute(_el$158, "title", _p$.t = _v$23);
1053
- _p$.a = web.style(_el$158, _v$24, _p$.a);
1054
- _v$25 !== _p$.o && web.setAttribute(_el$158, "sandbox", _p$.o = _v$25);
1088
+ _v$22 !== _p$.e && web.setAttribute(_el$161, "src", _p$.e = _v$22);
1089
+ _v$23 !== _p$.t && web.setAttribute(_el$161, "title", _p$.t = _v$23);
1090
+ _p$.a = web.style(_el$161, _v$24, _p$.a);
1091
+ _v$25 !== _p$.o && web.setAttribute(_el$161, "sandbox", _p$.o = _v$25);
1055
1092
  return _p$;
1056
1093
  }, {
1057
1094
  e: void 0,
@@ -1059,30 +1096,30 @@ function IframeRenderer(props) {
1059
1096
  a: void 0,
1060
1097
  o: void 0
1061
1098
  });
1062
- return _el$155;
1099
+ return _el$158;
1063
1100
  })();
1064
1101
  }
1065
1102
  function ImageRenderer(props) {
1066
1103
  const params = props.component.params;
1067
1104
  return (() => {
1068
- var _el$161 = web.getNextElement(_tmpl$37), _el$162 = _el$161.firstChild, _el$163 = _el$162.firstChild, _el$164 = _el$163.firstChild, _el$167 = _el$162.nextSibling, [_el$168, _co$35] = web.getNextMarker(_el$167.nextSibling);
1069
- web.insert(_el$161, web.createComponent(solidJs.Show, {
1105
+ var _el$164 = web.getNextElement(_tmpl$38), _el$165 = _el$164.firstChild, _el$166 = _el$165.firstChild, _el$167 = _el$166.firstChild, _el$170 = _el$165.nextSibling, [_el$171, _co$36] = web.getNextMarker(_el$170.nextSibling);
1106
+ web.insert(_el$164, web.createComponent(solidJs.Show, {
1070
1107
  get when() {
1071
1108
  return params.caption;
1072
1109
  },
1073
1110
  get children() {
1074
- var _el$165 = web.getNextElement(_tmpl$36), _el$166 = _el$165.firstChild;
1075
- web.insert(_el$166, () => params.caption);
1076
- return _el$165;
1111
+ var _el$168 = web.getNextElement(_tmpl$37), _el$169 = _el$168.firstChild;
1112
+ web.insert(_el$169, () => params.caption);
1113
+ return _el$168;
1077
1114
  }
1078
- }), _el$168, _co$35);
1115
+ }), _el$171, _co$36);
1079
1116
  web.effect((_p$) => {
1080
1117
  var _v$26 = `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$27 = params.url, _v$28 = `View full size: ${params.alt || "image"}`, _v$29 = params.url, _v$30 = params.alt || "Image";
1081
- _v$26 !== _p$.e && web.className(_el$161, _p$.e = _v$26);
1082
- _v$27 !== _p$.t && web.setAttribute(_el$163, "href", _p$.t = _v$27);
1083
- _v$28 !== _p$.a && web.setAttribute(_el$163, "aria-label", _p$.a = _v$28);
1084
- _v$29 !== _p$.o && web.setAttribute(_el$164, "src", _p$.o = _v$29);
1085
- _v$30 !== _p$.i && web.setAttribute(_el$164, "alt", _p$.i = _v$30);
1118
+ _v$26 !== _p$.e && web.className(_el$164, _p$.e = _v$26);
1119
+ _v$27 !== _p$.t && web.setAttribute(_el$166, "href", _p$.t = _v$27);
1120
+ _v$28 !== _p$.a && web.setAttribute(_el$166, "aria-label", _p$.a = _v$28);
1121
+ _v$29 !== _p$.o && web.setAttribute(_el$167, "src", _p$.o = _v$29);
1122
+ _v$30 !== _p$.i && web.setAttribute(_el$167, "alt", _p$.i = _v$30);
1086
1123
  return _p$;
1087
1124
  }, {
1088
1125
  e: void 0,
@@ -1091,30 +1128,30 @@ function ImageRenderer(props) {
1091
1128
  o: void 0,
1092
1129
  i: void 0
1093
1130
  });
1094
- return _el$161;
1131
+ return _el$164;
1095
1132
  })();
1096
1133
  }
1097
1134
  function LinkRenderer(props) {
1098
1135
  const params = props.component.params;
1099
1136
  return (() => {
1100
- var _el$169 = web.getNextElement(_tmpl$39), _el$170 = _el$169.firstChild, _el$171 = _el$170.nextSibling, _el$172 = _el$171.firstChild, _el$174 = _el$172.nextSibling, [_el$175, _co$36] = web.getNextMarker(_el$174.nextSibling);
1101
- _el$169.$$click = (e) => e.stopPropagation();
1102
- web.insert(_el$172, () => params.label || params.url);
1103
- web.insert(_el$171, web.createComponent(solidJs.Show, {
1137
+ var _el$172 = web.getNextElement(_tmpl$40), _el$173 = _el$172.firstChild, _el$174 = _el$173.nextSibling, _el$175 = _el$174.firstChild, _el$177 = _el$175.nextSibling, [_el$178, _co$37] = web.getNextMarker(_el$177.nextSibling);
1138
+ _el$172.$$click = (e) => e.stopPropagation();
1139
+ web.insert(_el$175, () => params.label || params.url);
1140
+ web.insert(_el$174, web.createComponent(solidJs.Show, {
1104
1141
  get when() {
1105
1142
  return params.description;
1106
1143
  },
1107
1144
  get children() {
1108
- var _el$173 = web.getNextElement(_tmpl$38);
1109
- web.insert(_el$173, () => params.description);
1110
- return _el$173;
1145
+ var _el$176 = web.getNextElement(_tmpl$39);
1146
+ web.insert(_el$176, () => params.description);
1147
+ return _el$176;
1111
1148
  }
1112
- }), _el$175, _co$36);
1149
+ }), _el$178, _co$37);
1113
1150
  web.effect((_p$) => {
1114
1151
  var _v$31 = params.url, _v$32 = `${params.label || "Link"}: ${params.description || params.url} (opens in new tab)`, _v$33 = `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 || ""}`;
1115
- _v$31 !== _p$.e && web.setAttribute(_el$169, "href", _p$.e = _v$31);
1116
- _v$32 !== _p$.t && web.setAttribute(_el$169, "aria-label", _p$.t = _v$32);
1117
- _v$33 !== _p$.a && web.className(_el$169, _p$.a = _v$33);
1152
+ _v$31 !== _p$.e && web.setAttribute(_el$172, "href", _p$.e = _v$31);
1153
+ _v$32 !== _p$.t && web.setAttribute(_el$172, "aria-label", _p$.t = _v$32);
1154
+ _v$33 !== _p$.a && web.className(_el$172, _p$.a = _v$33);
1118
1155
  return _p$;
1119
1156
  }, {
1120
1157
  e: void 0,
@@ -1122,11 +1159,11 @@ function LinkRenderer(props) {
1122
1159
  a: void 0
1123
1160
  });
1124
1161
  web.runHydrationEvents();
1125
- return _el$169;
1162
+ return _el$172;
1126
1163
  })();
1127
1164
  }
1128
1165
  function ComponentRenderer(props) {
1129
- var _a, _b, _c, _d, _e, _f;
1166
+ var _a, _b, _c, _d, _e, _f, _g;
1130
1167
  perf.markRenderStart(props.component.id);
1131
1168
  const telemetry = MCPUITelemetryContext.useTelemetry();
1132
1169
  solidJs.onMount(() => {
@@ -1184,21 +1221,28 @@ function ComponentRenderer(props) {
1184
1221
  }
1185
1222
  const mode = props.errorMode ?? "block";
1186
1223
  const firstError = ((_f = (_e = validation$1.errors) == null ? void 0 : _e[0]) == null ? void 0 : _f.message) || "Unknown validation error";
1224
+ if ((_g = validation$1.errors) == null ? void 0 : _g.some((e) => e.code === "UNKNOWN_COMPONENT_TYPE")) {
1225
+ return web.createComponent(UnsupportedComponentFallback, {
1226
+ get component() {
1227
+ return props.component;
1228
+ }
1229
+ });
1230
+ }
1187
1231
  if (mode === "silent") {
1188
1232
  return null;
1189
1233
  }
1190
1234
  if (mode === "inline-warn") {
1191
1235
  return (() => {
1192
- var _el$176 = web.getNextElement(_tmpl$40), _el$177 = _el$176.firstChild, _el$178 = _el$177.nextSibling, _el$179 = _el$178.firstChild, _el$180 = _el$179.nextSibling, [_el$181, _co$37] = web.getNextMarker(_el$180.nextSibling);
1193
- web.setAttribute(_el$176, "title", firstError);
1194
- web.insert(_el$178, () => props.component.type, _el$181, _co$37);
1195
- return _el$176;
1236
+ var _el$179 = web.getNextElement(_tmpl$41), _el$180 = _el$179.firstChild, _el$181 = _el$180.nextSibling, _el$182 = _el$181.firstChild, _el$183 = _el$182.nextSibling, [_el$184, _co$38] = web.getNextMarker(_el$183.nextSibling);
1237
+ web.setAttribute(_el$179, "title", firstError);
1238
+ web.insert(_el$181, () => props.component.type, _el$184, _co$38);
1239
+ return _el$179;
1196
1240
  })();
1197
1241
  }
1198
1242
  return (() => {
1199
- var _el$182 = web.getNextElement(_tmpl$41), _el$183 = _el$182.firstChild, _el$184 = _el$183.nextSibling;
1200
- web.insert(_el$184, firstError);
1201
- return _el$182;
1243
+ var _el$185 = web.getNextElement(_tmpl$42), _el$186 = _el$185.firstChild, _el$187 = _el$186.nextSibling;
1244
+ web.insert(_el$187, firstError);
1245
+ return _el$185;
1202
1246
  })();
1203
1247
  }
1204
1248
  return web.createComponent(GenerativeUIErrorBoundary.GenerativeUIErrorBoundary, {
@@ -1227,6 +1271,9 @@ function ComponentRenderer(props) {
1227
1271
  },
1228
1272
  get toolbarVariant() {
1229
1273
  return props.toolbarVariant;
1274
+ },
1275
+ get allowQuickchartFallback() {
1276
+ return props.allowQuickchartFallback;
1230
1277
  }
1231
1278
  });
1232
1279
  }
@@ -1460,10 +1507,28 @@ function ComponentRenderer(props) {
1460
1507
  }
1461
1508
  });
1462
1509
  }
1510
+ }), web.createComponent(solidJs.Show, {
1511
+ get when() {
1512
+ return props.component.type === "footer";
1513
+ },
1514
+ get children() {
1515
+ return web.createComponent(FooterRenderer.FooterRenderer, {
1516
+ get params() {
1517
+ return props.component.params;
1518
+ }
1519
+ });
1520
+ }
1463
1521
  })];
1464
1522
  }
1465
1523
  });
1466
1524
  }
1525
+ function UnsupportedComponentFallback(props) {
1526
+ return (() => {
1527
+ var _el$188 = web.getNextElement(_tmpl$43), _el$189 = _el$188.firstChild, _el$190 = _el$189.nextSibling;
1528
+ web.insert(_el$190, () => props.component.type);
1529
+ return _el$188;
1530
+ })();
1531
+ }
1467
1532
  function ActionRenderer(props) {
1468
1533
  const params = props.component.params;
1469
1534
  const {
@@ -1501,27 +1566,27 @@ function ActionRenderer(props) {
1501
1566
  const isDisabled = () => params.disabled || isExecutable() && isExecuting();
1502
1567
  if (params.type === "link" || params.action === "link") {
1503
1568
  return (() => {
1504
- var _el$185 = web.getNextElement(_tmpl$43), _el$187 = _el$185.firstChild, [_el$188, _co$38] = web.getNextMarker(_el$187.nextSibling), _el$189 = _el$188.nextSibling, [_el$190, _co$39] = web.getNextMarker(_el$189.nextSibling);
1505
- _el$185.$$click = handleClick;
1506
- web.insert(_el$185, web.createComponent(solidJs.Show, {
1569
+ var _el$191 = web.getNextElement(_tmpl$45), _el$193 = _el$191.firstChild, [_el$194, _co$39] = web.getNextMarker(_el$193.nextSibling), _el$195 = _el$194.nextSibling, [_el$196, _co$40] = web.getNextMarker(_el$195.nextSibling);
1570
+ _el$191.$$click = handleClick;
1571
+ web.insert(_el$191, web.createComponent(solidJs.Show, {
1507
1572
  get when() {
1508
1573
  return params.icon;
1509
1574
  },
1510
1575
  get children() {
1511
- var _el$186 = web.getNextElement(_tmpl$42);
1512
- web.insert(_el$186, () => params.icon);
1513
- return _el$186;
1576
+ var _el$192 = web.getNextElement(_tmpl$44);
1577
+ web.insert(_el$192, () => params.icon);
1578
+ return _el$192;
1514
1579
  }
1515
- }), _el$188, _co$38);
1516
- web.insert(_el$185, () => params.label, _el$190, _co$39);
1580
+ }), _el$194, _co$39);
1581
+ web.insert(_el$191, () => params.label, _el$196, _co$40);
1517
1582
  web.effect((_p$) => {
1518
1583
  var _v$34 = params.url || "#", _v$35 = params.url ? "_blank" : void 0, _v$36 = params.ariaLabel || params.label, _v$37 = `inline-flex items-center gap-2 px-4 py-2 rounded-md text-sm font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500
1519
1584
  ${params.variant === "primary" ? "bg-blue-600 text-white hover:bg-blue-700" : params.variant === "outline" ? "border border-gray-300 text-gray-700 hover:bg-gray-50 dark:border-gray-600 dark:text-gray-300 dark:hover:bg-gray-800" : "text-blue-600 hover:text-blue-800 dark:text-blue-400 dark:hover:text-blue-300"}
1520
1585
  ${params.className || ""}`;
1521
- _v$34 !== _p$.e && web.setAttribute(_el$185, "href", _p$.e = _v$34);
1522
- _v$35 !== _p$.t && web.setAttribute(_el$185, "target", _p$.t = _v$35);
1523
- _v$36 !== _p$.a && web.setAttribute(_el$185, "aria-label", _p$.a = _v$36);
1524
- _v$37 !== _p$.o && web.className(_el$185, _p$.o = _v$37);
1586
+ _v$34 !== _p$.e && web.setAttribute(_el$191, "href", _p$.e = _v$34);
1587
+ _v$35 !== _p$.t && web.setAttribute(_el$191, "target", _p$.t = _v$35);
1588
+ _v$36 !== _p$.a && web.setAttribute(_el$191, "aria-label", _p$.a = _v$36);
1589
+ _v$37 !== _p$.o && web.className(_el$191, _p$.o = _v$37);
1525
1590
  return _p$;
1526
1591
  }, {
1527
1592
  e: void 0,
@@ -1530,41 +1595,41 @@ function ActionRenderer(props) {
1530
1595
  o: void 0
1531
1596
  });
1532
1597
  web.runHydrationEvents();
1533
- return _el$185;
1598
+ return _el$191;
1534
1599
  })();
1535
1600
  }
1536
1601
  return (() => {
1537
- var _el$191 = web.getNextElement(_tmpl$45), _el$194 = _el$191.firstChild, [_el$195, _co$40] = web.getNextMarker(_el$194.nextSibling), _el$196 = _el$195.nextSibling, [_el$197, _co$41] = web.getNextMarker(_el$196.nextSibling), _el$198 = _el$197.nextSibling, [_el$199, _co$42] = web.getNextMarker(_el$198.nextSibling);
1538
- _el$191.$$click = handleClick;
1539
- web.insert(_el$191, web.createComponent(solidJs.Show, {
1602
+ var _el$197 = web.getNextElement(_tmpl$47), _el$200 = _el$197.firstChild, [_el$201, _co$41] = web.getNextMarker(_el$200.nextSibling), _el$202 = _el$201.nextSibling, [_el$203, _co$42] = web.getNextMarker(_el$202.nextSibling), _el$204 = _el$203.nextSibling, [_el$205, _co$43] = web.getNextMarker(_el$204.nextSibling);
1603
+ _el$197.$$click = handleClick;
1604
+ web.insert(_el$197, web.createComponent(solidJs.Show, {
1540
1605
  get when() {
1541
1606
  return web.memo(() => !!isExecuting())() && isExecutable();
1542
1607
  },
1543
1608
  get children() {
1544
- return web.getNextElement(_tmpl$44);
1609
+ return web.getNextElement(_tmpl$46);
1545
1610
  }
1546
- }), _el$195, _co$40);
1547
- web.insert(_el$191, web.createComponent(solidJs.Show, {
1611
+ }), _el$201, _co$41);
1612
+ web.insert(_el$197, web.createComponent(solidJs.Show, {
1548
1613
  get when() {
1549
1614
  return web.memo(() => !!params.icon)() && !(isExecuting() && isExecutable());
1550
1615
  },
1551
1616
  get children() {
1552
- var _el$193 = web.getNextElement(_tmpl$42);
1553
- web.insert(_el$193, () => params.icon);
1554
- return _el$193;
1617
+ var _el$199 = web.getNextElement(_tmpl$44);
1618
+ web.insert(_el$199, () => params.icon);
1619
+ return _el$199;
1555
1620
  }
1556
- }), _el$197, _co$41);
1557
- web.insert(_el$191, () => params.label, _el$199, _co$42);
1621
+ }), _el$203, _co$42);
1622
+ web.insert(_el$197, () => params.label, _el$205, _co$43);
1558
1623
  web.effect((_p$) => {
1559
1624
  var _v$38 = isDisabled(), _v$39 = isExecuting() && isExecutable(), _v$40 = params.ariaLabel || params.label, _v$41 = `inline-flex items-center gap-2 px-4 py-2 rounded-md text-sm font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500
1560
1625
  ${params.variant === "primary" ? "bg-blue-600 text-white hover:bg-blue-700 shadow-sm" : params.variant === "secondary" ? "bg-gray-100 text-gray-900 hover:bg-gray-200 dark:bg-gray-700 dark:text-white dark:hover:bg-gray-600" : params.variant === "outline" ? "border border-gray-300 text-gray-700 hover:bg-gray-50 dark:border-gray-600 dark:text-gray-300 dark:hover:bg-gray-800" : params.variant === "danger" ? "bg-red-600 text-white hover:bg-red-700" : "bg-transparent text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-800"}
1561
1626
  ${isDisabled() ? "opacity-50 cursor-not-allowed" : ""}
1562
1627
  ${params.size === "sm" ? "px-3 py-1.5 text-xs" : params.size === "lg" ? "px-6 py-3 text-base" : ""}
1563
1628
  ${params.className || ""}`;
1564
- _v$38 !== _p$.e && web.setProperty(_el$191, "disabled", _p$.e = _v$38);
1565
- _v$39 !== _p$.t && web.setAttribute(_el$191, "aria-busy", _p$.t = _v$39);
1566
- _v$40 !== _p$.a && web.setAttribute(_el$191, "aria-label", _p$.a = _v$40);
1567
- _v$41 !== _p$.o && web.className(_el$191, _p$.o = _v$41);
1629
+ _v$38 !== _p$.e && web.setProperty(_el$197, "disabled", _p$.e = _v$38);
1630
+ _v$39 !== _p$.t && web.setAttribute(_el$197, "aria-busy", _p$.t = _v$39);
1631
+ _v$40 !== _p$.a && web.setAttribute(_el$197, "aria-label", _p$.a = _v$40);
1632
+ _v$41 !== _p$.o && web.className(_el$197, _p$.o = _v$41);
1568
1633
  return _p$;
1569
1634
  }, {
1570
1635
  e: void 0,
@@ -1573,7 +1638,7 @@ function ActionRenderer(props) {
1573
1638
  o: void 0
1574
1639
  });
1575
1640
  web.runHydrationEvents();
1576
- return _el$191;
1641
+ return _el$197;
1577
1642
  })();
1578
1643
  }
1579
1644
  function ErrorCardRenderer(props) {
@@ -1581,55 +1646,55 @@ function ErrorCardRenderer(props) {
1581
1646
  return `Error in ${props.error.tool || "unknown tool"}: ${props.error.message || "Unknown error"}`;
1582
1647
  };
1583
1648
  return (() => {
1584
- var _el$200 = web.getNextElement(_tmpl$49), _el$223 = _el$200.firstChild, [_el$224, _co$48] = web.getNextMarker(_el$223.nextSibling), _el$201 = _el$224.nextSibling, _el$202 = _el$201.firstChild, _el$203 = _el$202.nextSibling, _el$204 = _el$203.firstChild, _el$205 = _el$204.firstChild, _el$206 = _el$205.nextSibling, [_el$207, _co$43] = web.getNextMarker(_el$206.nextSibling), _el$208 = _el$204.nextSibling, _el$217 = _el$208.nextSibling, [_el$218, _co$45] = web.getNextMarker(_el$217.nextSibling), _el$219 = _el$218.nextSibling, [_el$220, _co$46] = web.getNextMarker(_el$219.nextSibling), _el$221 = _el$220.nextSibling, [_el$222, _co$47] = web.getNextMarker(_el$221.nextSibling);
1585
- web.insert(_el$200, web.createComponent(CopyButton, {
1649
+ var _el$206 = web.getNextElement(_tmpl$51), _el$229 = _el$206.firstChild, [_el$230, _co$49] = web.getNextMarker(_el$229.nextSibling), _el$207 = _el$230.nextSibling, _el$208 = _el$207.firstChild, _el$209 = _el$208.nextSibling, _el$210 = _el$209.firstChild, _el$211 = _el$210.firstChild, _el$212 = _el$211.nextSibling, [_el$213, _co$44] = web.getNextMarker(_el$212.nextSibling), _el$214 = _el$210.nextSibling, _el$223 = _el$214.nextSibling, [_el$224, _co$46] = web.getNextMarker(_el$223.nextSibling), _el$225 = _el$224.nextSibling, [_el$226, _co$47] = web.getNextMarker(_el$225.nextSibling), _el$227 = _el$226.nextSibling, [_el$228, _co$48] = web.getNextMarker(_el$227.nextSibling);
1650
+ web.insert(_el$206, web.createComponent(CopyButton, {
1586
1651
  getText: getErrorText,
1587
1652
  title: "Copy error details",
1588
1653
  position: "top-right"
1589
- }), _el$224, _co$48);
1590
- web.insert(_el$204, () => props.error.tool || "Unknown", _el$207, _co$43);
1591
- web.insert(_el$208, () => props.error.message || "An error occurred during tool execution");
1592
- web.insert(_el$203, web.createComponent(solidJs.Show, {
1654
+ }), _el$230, _co$49);
1655
+ web.insert(_el$210, () => props.error.tool || "Unknown", _el$213, _co$44);
1656
+ web.insert(_el$214, () => props.error.message || "An error occurred during tool execution");
1657
+ web.insert(_el$209, web.createComponent(solidJs.Show, {
1593
1658
  get when() {
1594
1659
  return props.error.type;
1595
1660
  },
1596
1661
  get children() {
1597
- var _el$209 = web.getNextElement(_tmpl$46), _el$210 = _el$209.firstChild, _el$211 = _el$210.nextSibling, [_el$212, _co$44] = web.getNextMarker(_el$211.nextSibling);
1598
- web.insert(_el$209, () => props.error.type, _el$212, _co$44);
1599
- return _el$209;
1662
+ var _el$215 = web.getNextElement(_tmpl$48), _el$216 = _el$215.firstChild, _el$217 = _el$216.nextSibling, [_el$218, _co$45] = web.getNextMarker(_el$217.nextSibling);
1663
+ web.insert(_el$215, () => props.error.type, _el$218, _co$45);
1664
+ return _el$215;
1600
1665
  }
1601
- }), _el$218, _co$45);
1602
- web.insert(_el$203, web.createComponent(solidJs.Show, {
1666
+ }), _el$224, _co$46);
1667
+ web.insert(_el$209, web.createComponent(solidJs.Show, {
1603
1668
  get when() {
1604
1669
  var _a;
1605
1670
  return (_a = props.error.suggestions) == null ? void 0 : _a.length;
1606
1671
  },
1607
1672
  get children() {
1608
- var _el$213 = web.getNextElement(_tmpl$47), _el$214 = _el$213.firstChild, _el$215 = _el$214.nextSibling;
1609
- web.insert(_el$215, web.createComponent(solidJs.For, {
1673
+ var _el$219 = web.getNextElement(_tmpl$49), _el$220 = _el$219.firstChild, _el$221 = _el$220.nextSibling;
1674
+ web.insert(_el$221, web.createComponent(solidJs.For, {
1610
1675
  get each() {
1611
1676
  return props.error.suggestions;
1612
1677
  },
1613
1678
  children: (suggestion) => (() => {
1614
- var _el$225 = web.getNextElement(_tmpl$50);
1615
- web.insert(_el$225, suggestion);
1616
- return _el$225;
1679
+ var _el$231 = web.getNextElement(_tmpl$52);
1680
+ web.insert(_el$231, suggestion);
1681
+ return _el$231;
1617
1682
  })()
1618
1683
  }));
1619
- return _el$213;
1684
+ return _el$219;
1620
1685
  }
1621
- }), _el$220, _co$46);
1622
- web.insert(_el$203, web.createComponent(solidJs.Show, {
1686
+ }), _el$226, _co$47);
1687
+ web.insert(_el$209, web.createComponent(solidJs.Show, {
1623
1688
  get when() {
1624
1689
  return props.error.timestamp;
1625
1690
  },
1626
1691
  get children() {
1627
- var _el$216 = web.getNextElement(_tmpl$48);
1628
- web.insert(_el$216, () => new Date(props.error.timestamp).toLocaleString());
1629
- return _el$216;
1692
+ var _el$222 = web.getNextElement(_tmpl$50);
1693
+ web.insert(_el$222, () => new Date(props.error.timestamp).toLocaleString());
1694
+ return _el$222;
1630
1695
  }
1631
- }), _el$222, _co$47);
1632
- return _el$200;
1696
+ }), _el$228, _co$48);
1697
+ return _el$206;
1633
1698
  })();
1634
1699
  }
1635
1700
  function isErrorResponse(content) {
@@ -1652,20 +1717,20 @@ function UIResourceHtmlRenderer(props) {
1652
1717
  return ((_a = props.resource.metadata) == null ? void 0 : _a.title) || ((_b = props.resource.uri) == null ? void 0 : _b.replace("ui://deposium/", "")) || "Resource";
1653
1718
  };
1654
1719
  return (() => {
1655
- var _el$226 = web.getNextElement(_tmpl$52), _el$230 = _el$226.firstChild, [_el$231, _co$49] = web.getNextMarker(_el$230.nextSibling), _el$229 = _el$231.nextSibling;
1656
- web.insert(_el$226, web.createComponent(solidJs.Show, {
1720
+ var _el$232 = web.getNextElement(_tmpl$54), _el$236 = _el$232.firstChild, [_el$237, _co$50] = web.getNextMarker(_el$236.nextSibling), _el$235 = _el$237.nextSibling;
1721
+ web.insert(_el$232, web.createComponent(solidJs.Show, {
1657
1722
  get when() {
1658
1723
  var _a;
1659
1724
  return ((_a = props.resource.metadata) == null ? void 0 : _a.title) || props.resource.uri;
1660
1725
  },
1661
1726
  get children() {
1662
- var _el$227 = web.getNextElement(_tmpl$51), _el$228 = _el$227.firstChild;
1663
- web.insert(_el$228, resourceTitle);
1664
- return _el$227;
1727
+ var _el$233 = web.getNextElement(_tmpl$53), _el$234 = _el$233.firstChild;
1728
+ web.insert(_el$234, resourceTitle);
1729
+ return _el$233;
1665
1730
  }
1666
- }), _el$231, _co$49);
1667
- web.effect(() => web.setProperty(_el$229, "innerHTML", htmlContent()));
1668
- return _el$226;
1731
+ }), _el$237, _co$50);
1732
+ web.effect(() => web.setProperty(_el$235, "innerHTML", htmlContent()));
1733
+ return _el$232;
1669
1734
  })();
1670
1735
  }
1671
1736
  const UIResourceRenderer = (props) => {
@@ -1763,13 +1828,16 @@ const UIResourceRenderer = (props) => {
1763
1828
  },
1764
1829
  get toolbarVariant() {
1765
1830
  return props.toolbarVariant;
1831
+ },
1832
+ get allowQuickchartFallback() {
1833
+ return props.allowQuickchartFallback;
1766
1834
  }
1767
1835
  });
1768
1836
  return web.createComponent(RenderContext.RenderProvider, {
1769
1837
  renderComponent,
1770
1838
  get children() {
1771
- var _el$232 = web.getNextElement(_tmpl$53), _el$233 = _el$232.firstChild, _el$234 = _el$233.nextSibling, [_el$235, _co$50] = web.getNextMarker(_el$234.nextSibling);
1772
- web.spread(_el$232, web.mergeProps({
1839
+ var _el$238 = web.getNextElement(_tmpl$55), _el$239 = _el$238.firstChild, _el$240 = _el$239.nextSibling, [_el$241, _co$51] = web.getNextMarker(_el$240.nextSibling);
1840
+ web.spread(_el$238, web.mergeProps({
1773
1841
  get ["class"]() {
1774
1842
  return `w-full ${props.class || ""}`;
1775
1843
  }
@@ -1778,13 +1846,13 @@ const UIResourceRenderer = (props) => {
1778
1846
  } : {
1779
1847
  "data-mcp-ui-component-id": outerKey()
1780
1848
  }), false, true);
1781
- web.insert(_el$233, web.createComponent(solidJs.For, {
1849
+ web.insert(_el$239, web.createComponent(solidJs.For, {
1782
1850
  get each() {
1783
1851
  return layoutData.components;
1784
1852
  },
1785
1853
  children: (component) => (() => {
1786
- var _el$236 = web.getNextElement(_tmpl$54);
1787
- web.insert(_el$236, web.createComponent(ComponentRenderer, {
1854
+ var _el$242 = web.getNextElement(_tmpl$56);
1855
+ web.insert(_el$242, web.createComponent(ComponentRenderer, {
1788
1856
  component,
1789
1857
  get onError() {
1790
1858
  return props.onError;
@@ -1794,21 +1862,24 @@ const UIResourceRenderer = (props) => {
1794
1862
  },
1795
1863
  get toolbarVariant() {
1796
1864
  return props.toolbarVariant;
1865
+ },
1866
+ get allowQuickchartFallback() {
1867
+ return props.allowQuickchartFallback;
1797
1868
  }
1798
1869
  }));
1799
1870
  web.effect((_p$) => {
1800
1871
  var _v$42 = getGridStyleString(component), _v$43 = stableKey.getUiResourceStableKey(component);
1801
- _p$.e = web.style(_el$236, _v$42, _p$.e);
1802
- _v$43 !== _p$.t && web.setAttribute(_el$236, "data-mcp-ui-component-id", _p$.t = _v$43);
1872
+ _p$.e = web.style(_el$242, _v$42, _p$.e);
1873
+ _v$43 !== _p$.t && web.setAttribute(_el$242, "data-mcp-ui-component-id", _p$.t = _v$43);
1803
1874
  return _p$;
1804
1875
  }, {
1805
1876
  e: void 0,
1806
1877
  t: void 0
1807
1878
  });
1808
- return _el$236;
1879
+ return _el$242;
1809
1880
  })()
1810
1881
  }));
1811
- web.insert(_el$232, web.createComponent(solidJs.Show, {
1882
+ web.insert(_el$238, web.createComponent(solidJs.Show, {
1812
1883
  get when() {
1813
1884
  return shouldShowAutoFooter();
1814
1885
  },
@@ -1819,10 +1890,10 @@ const UIResourceRenderer = (props) => {
1819
1890
  }
1820
1891
  });
1821
1892
  }
1822
- }), _el$235, _co$50);
1823
- web.effect((_$p) => web.style(_el$233, gridContainerStyle(), _$p));
1893
+ }), _el$241, _co$51);
1894
+ web.effect((_$p) => web.style(_el$239, gridContainerStyle(), _$p));
1824
1895
  web.runHydrationEvents();
1825
- return _el$232;
1896
+ return _el$238;
1826
1897
  }
1827
1898
  });
1828
1899
  };