@seed-ship/mcp-ui-solid 6.13.0 → 6.14.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(`<span aria-hidden=true>`), _tmpl$44 = /* @__PURE__ */ web.template(`<a rel="noopener noreferrer"><!$><!/><!$><!/>`), _tmpl$45 = /* @__PURE__ */ web.template(`<span class="animate-spin h-4 w-4 border-2 border-current border-t-transparent rounded-full"aria-hidden=true>`), _tmpl$46 = /* @__PURE__ */ web.template(`<button type=button><!$><!/><!$><!/><!$><!/>`), _tmpl$47 = /* @__PURE__ */ web.template(`<p class="text-xs text-red-600 dark:text-red-400 mt-1">Type: <!$><!/>`), _tmpl$48 = /* @__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$49 = /* @__PURE__ */ web.template(`<p class="text-xs text-red-500 dark:text-red-500 mt-2">`), _tmpl$50 = /* @__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$51 = /* @__PURE__ */ web.template(`<li>`), _tmpl$52 = /* @__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$53 = /* @__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$54 = /* @__PURE__ */ web.template(`<div><div class="grid gap-4"></div><!$><!/>`), _tmpl$55 = /* @__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,7 +1159,7 @@ 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) {
@@ -1189,16 +1226,16 @@ function ComponentRenderer(props) {
1189
1226
  }
1190
1227
  if (mode === "inline-warn") {
1191
1228
  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;
1229
+ 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);
1230
+ web.setAttribute(_el$179, "title", firstError);
1231
+ web.insert(_el$181, () => props.component.type, _el$184, _co$38);
1232
+ return _el$179;
1196
1233
  })();
1197
1234
  }
1198
1235
  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;
1236
+ var _el$185 = web.getNextElement(_tmpl$42), _el$186 = _el$185.firstChild, _el$187 = _el$186.nextSibling;
1237
+ web.insert(_el$187, firstError);
1238
+ return _el$185;
1202
1239
  })();
1203
1240
  }
1204
1241
  return web.createComponent(GenerativeUIErrorBoundary.GenerativeUIErrorBoundary, {
@@ -1227,6 +1264,9 @@ function ComponentRenderer(props) {
1227
1264
  },
1228
1265
  get toolbarVariant() {
1229
1266
  return props.toolbarVariant;
1267
+ },
1268
+ get allowQuickchartFallback() {
1269
+ return props.allowQuickchartFallback;
1230
1270
  }
1231
1271
  });
1232
1272
  }
@@ -1501,27 +1541,27 @@ function ActionRenderer(props) {
1501
1541
  const isDisabled = () => params.disabled || isExecutable() && isExecuting();
1502
1542
  if (params.type === "link" || params.action === "link") {
1503
1543
  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, {
1544
+ var _el$188 = web.getNextElement(_tmpl$44), _el$190 = _el$188.firstChild, [_el$191, _co$39] = web.getNextMarker(_el$190.nextSibling), _el$192 = _el$191.nextSibling, [_el$193, _co$40] = web.getNextMarker(_el$192.nextSibling);
1545
+ _el$188.$$click = handleClick;
1546
+ web.insert(_el$188, web.createComponent(solidJs.Show, {
1507
1547
  get when() {
1508
1548
  return params.icon;
1509
1549
  },
1510
1550
  get children() {
1511
- var _el$186 = web.getNextElement(_tmpl$42);
1512
- web.insert(_el$186, () => params.icon);
1513
- return _el$186;
1551
+ var _el$189 = web.getNextElement(_tmpl$43);
1552
+ web.insert(_el$189, () => params.icon);
1553
+ return _el$189;
1514
1554
  }
1515
- }), _el$188, _co$38);
1516
- web.insert(_el$185, () => params.label, _el$190, _co$39);
1555
+ }), _el$191, _co$39);
1556
+ web.insert(_el$188, () => params.label, _el$193, _co$40);
1517
1557
  web.effect((_p$) => {
1518
1558
  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
1559
  ${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
1560
  ${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);
1561
+ _v$34 !== _p$.e && web.setAttribute(_el$188, "href", _p$.e = _v$34);
1562
+ _v$35 !== _p$.t && web.setAttribute(_el$188, "target", _p$.t = _v$35);
1563
+ _v$36 !== _p$.a && web.setAttribute(_el$188, "aria-label", _p$.a = _v$36);
1564
+ _v$37 !== _p$.o && web.className(_el$188, _p$.o = _v$37);
1525
1565
  return _p$;
1526
1566
  }, {
1527
1567
  e: void 0,
@@ -1530,41 +1570,41 @@ function ActionRenderer(props) {
1530
1570
  o: void 0
1531
1571
  });
1532
1572
  web.runHydrationEvents();
1533
- return _el$185;
1573
+ return _el$188;
1534
1574
  })();
1535
1575
  }
1536
1576
  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, {
1577
+ var _el$194 = web.getNextElement(_tmpl$46), _el$197 = _el$194.firstChild, [_el$198, _co$41] = web.getNextMarker(_el$197.nextSibling), _el$199 = _el$198.nextSibling, [_el$200, _co$42] = web.getNextMarker(_el$199.nextSibling), _el$201 = _el$200.nextSibling, [_el$202, _co$43] = web.getNextMarker(_el$201.nextSibling);
1578
+ _el$194.$$click = handleClick;
1579
+ web.insert(_el$194, web.createComponent(solidJs.Show, {
1540
1580
  get when() {
1541
1581
  return web.memo(() => !!isExecuting())() && isExecutable();
1542
1582
  },
1543
1583
  get children() {
1544
- return web.getNextElement(_tmpl$44);
1584
+ return web.getNextElement(_tmpl$45);
1545
1585
  }
1546
- }), _el$195, _co$40);
1547
- web.insert(_el$191, web.createComponent(solidJs.Show, {
1586
+ }), _el$198, _co$41);
1587
+ web.insert(_el$194, web.createComponent(solidJs.Show, {
1548
1588
  get when() {
1549
1589
  return web.memo(() => !!params.icon)() && !(isExecuting() && isExecutable());
1550
1590
  },
1551
1591
  get children() {
1552
- var _el$193 = web.getNextElement(_tmpl$42);
1553
- web.insert(_el$193, () => params.icon);
1554
- return _el$193;
1592
+ var _el$196 = web.getNextElement(_tmpl$43);
1593
+ web.insert(_el$196, () => params.icon);
1594
+ return _el$196;
1555
1595
  }
1556
- }), _el$197, _co$41);
1557
- web.insert(_el$191, () => params.label, _el$199, _co$42);
1596
+ }), _el$200, _co$42);
1597
+ web.insert(_el$194, () => params.label, _el$202, _co$43);
1558
1598
  web.effect((_p$) => {
1559
1599
  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
1600
  ${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
1601
  ${isDisabled() ? "opacity-50 cursor-not-allowed" : ""}
1562
1602
  ${params.size === "sm" ? "px-3 py-1.5 text-xs" : params.size === "lg" ? "px-6 py-3 text-base" : ""}
1563
1603
  ${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);
1604
+ _v$38 !== _p$.e && web.setProperty(_el$194, "disabled", _p$.e = _v$38);
1605
+ _v$39 !== _p$.t && web.setAttribute(_el$194, "aria-busy", _p$.t = _v$39);
1606
+ _v$40 !== _p$.a && web.setAttribute(_el$194, "aria-label", _p$.a = _v$40);
1607
+ _v$41 !== _p$.o && web.className(_el$194, _p$.o = _v$41);
1568
1608
  return _p$;
1569
1609
  }, {
1570
1610
  e: void 0,
@@ -1573,7 +1613,7 @@ function ActionRenderer(props) {
1573
1613
  o: void 0
1574
1614
  });
1575
1615
  web.runHydrationEvents();
1576
- return _el$191;
1616
+ return _el$194;
1577
1617
  })();
1578
1618
  }
1579
1619
  function ErrorCardRenderer(props) {
@@ -1581,55 +1621,55 @@ function ErrorCardRenderer(props) {
1581
1621
  return `Error in ${props.error.tool || "unknown tool"}: ${props.error.message || "Unknown error"}`;
1582
1622
  };
1583
1623
  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, {
1624
+ var _el$203 = web.getNextElement(_tmpl$50), _el$226 = _el$203.firstChild, [_el$227, _co$49] = web.getNextMarker(_el$226.nextSibling), _el$204 = _el$227.nextSibling, _el$205 = _el$204.firstChild, _el$206 = _el$205.nextSibling, _el$207 = _el$206.firstChild, _el$208 = _el$207.firstChild, _el$209 = _el$208.nextSibling, [_el$210, _co$44] = web.getNextMarker(_el$209.nextSibling), _el$211 = _el$207.nextSibling, _el$220 = _el$211.nextSibling, [_el$221, _co$46] = web.getNextMarker(_el$220.nextSibling), _el$222 = _el$221.nextSibling, [_el$223, _co$47] = web.getNextMarker(_el$222.nextSibling), _el$224 = _el$223.nextSibling, [_el$225, _co$48] = web.getNextMarker(_el$224.nextSibling);
1625
+ web.insert(_el$203, web.createComponent(CopyButton, {
1586
1626
  getText: getErrorText,
1587
1627
  title: "Copy error details",
1588
1628
  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, {
1629
+ }), _el$227, _co$49);
1630
+ web.insert(_el$207, () => props.error.tool || "Unknown", _el$210, _co$44);
1631
+ web.insert(_el$211, () => props.error.message || "An error occurred during tool execution");
1632
+ web.insert(_el$206, web.createComponent(solidJs.Show, {
1593
1633
  get when() {
1594
1634
  return props.error.type;
1595
1635
  },
1596
1636
  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;
1637
+ var _el$212 = web.getNextElement(_tmpl$47), _el$213 = _el$212.firstChild, _el$214 = _el$213.nextSibling, [_el$215, _co$45] = web.getNextMarker(_el$214.nextSibling);
1638
+ web.insert(_el$212, () => props.error.type, _el$215, _co$45);
1639
+ return _el$212;
1600
1640
  }
1601
- }), _el$218, _co$45);
1602
- web.insert(_el$203, web.createComponent(solidJs.Show, {
1641
+ }), _el$221, _co$46);
1642
+ web.insert(_el$206, web.createComponent(solidJs.Show, {
1603
1643
  get when() {
1604
1644
  var _a;
1605
1645
  return (_a = props.error.suggestions) == null ? void 0 : _a.length;
1606
1646
  },
1607
1647
  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, {
1648
+ var _el$216 = web.getNextElement(_tmpl$48), _el$217 = _el$216.firstChild, _el$218 = _el$217.nextSibling;
1649
+ web.insert(_el$218, web.createComponent(solidJs.For, {
1610
1650
  get each() {
1611
1651
  return props.error.suggestions;
1612
1652
  },
1613
1653
  children: (suggestion) => (() => {
1614
- var _el$225 = web.getNextElement(_tmpl$50);
1615
- web.insert(_el$225, suggestion);
1616
- return _el$225;
1654
+ var _el$228 = web.getNextElement(_tmpl$51);
1655
+ web.insert(_el$228, suggestion);
1656
+ return _el$228;
1617
1657
  })()
1618
1658
  }));
1619
- return _el$213;
1659
+ return _el$216;
1620
1660
  }
1621
- }), _el$220, _co$46);
1622
- web.insert(_el$203, web.createComponent(solidJs.Show, {
1661
+ }), _el$223, _co$47);
1662
+ web.insert(_el$206, web.createComponent(solidJs.Show, {
1623
1663
  get when() {
1624
1664
  return props.error.timestamp;
1625
1665
  },
1626
1666
  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;
1667
+ var _el$219 = web.getNextElement(_tmpl$49);
1668
+ web.insert(_el$219, () => new Date(props.error.timestamp).toLocaleString());
1669
+ return _el$219;
1630
1670
  }
1631
- }), _el$222, _co$47);
1632
- return _el$200;
1671
+ }), _el$225, _co$48);
1672
+ return _el$203;
1633
1673
  })();
1634
1674
  }
1635
1675
  function isErrorResponse(content) {
@@ -1652,20 +1692,20 @@ function UIResourceHtmlRenderer(props) {
1652
1692
  return ((_a = props.resource.metadata) == null ? void 0 : _a.title) || ((_b = props.resource.uri) == null ? void 0 : _b.replace("ui://deposium/", "")) || "Resource";
1653
1693
  };
1654
1694
  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, {
1695
+ var _el$229 = web.getNextElement(_tmpl$53), _el$233 = _el$229.firstChild, [_el$234, _co$50] = web.getNextMarker(_el$233.nextSibling), _el$232 = _el$234.nextSibling;
1696
+ web.insert(_el$229, web.createComponent(solidJs.Show, {
1657
1697
  get when() {
1658
1698
  var _a;
1659
1699
  return ((_a = props.resource.metadata) == null ? void 0 : _a.title) || props.resource.uri;
1660
1700
  },
1661
1701
  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;
1702
+ var _el$230 = web.getNextElement(_tmpl$52), _el$231 = _el$230.firstChild;
1703
+ web.insert(_el$231, resourceTitle);
1704
+ return _el$230;
1665
1705
  }
1666
- }), _el$231, _co$49);
1667
- web.effect(() => web.setProperty(_el$229, "innerHTML", htmlContent()));
1668
- return _el$226;
1706
+ }), _el$234, _co$50);
1707
+ web.effect(() => web.setProperty(_el$232, "innerHTML", htmlContent()));
1708
+ return _el$229;
1669
1709
  })();
1670
1710
  }
1671
1711
  const UIResourceRenderer = (props) => {
@@ -1763,13 +1803,16 @@ const UIResourceRenderer = (props) => {
1763
1803
  },
1764
1804
  get toolbarVariant() {
1765
1805
  return props.toolbarVariant;
1806
+ },
1807
+ get allowQuickchartFallback() {
1808
+ return props.allowQuickchartFallback;
1766
1809
  }
1767
1810
  });
1768
1811
  return web.createComponent(RenderContext.RenderProvider, {
1769
1812
  renderComponent,
1770
1813
  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({
1814
+ var _el$235 = web.getNextElement(_tmpl$54), _el$236 = _el$235.firstChild, _el$237 = _el$236.nextSibling, [_el$238, _co$51] = web.getNextMarker(_el$237.nextSibling);
1815
+ web.spread(_el$235, web.mergeProps({
1773
1816
  get ["class"]() {
1774
1817
  return `w-full ${props.class || ""}`;
1775
1818
  }
@@ -1778,13 +1821,13 @@ const UIResourceRenderer = (props) => {
1778
1821
  } : {
1779
1822
  "data-mcp-ui-component-id": outerKey()
1780
1823
  }), false, true);
1781
- web.insert(_el$233, web.createComponent(solidJs.For, {
1824
+ web.insert(_el$236, web.createComponent(solidJs.For, {
1782
1825
  get each() {
1783
1826
  return layoutData.components;
1784
1827
  },
1785
1828
  children: (component) => (() => {
1786
- var _el$236 = web.getNextElement(_tmpl$54);
1787
- web.insert(_el$236, web.createComponent(ComponentRenderer, {
1829
+ var _el$239 = web.getNextElement(_tmpl$55);
1830
+ web.insert(_el$239, web.createComponent(ComponentRenderer, {
1788
1831
  component,
1789
1832
  get onError() {
1790
1833
  return props.onError;
@@ -1794,21 +1837,24 @@ const UIResourceRenderer = (props) => {
1794
1837
  },
1795
1838
  get toolbarVariant() {
1796
1839
  return props.toolbarVariant;
1840
+ },
1841
+ get allowQuickchartFallback() {
1842
+ return props.allowQuickchartFallback;
1797
1843
  }
1798
1844
  }));
1799
1845
  web.effect((_p$) => {
1800
1846
  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);
1847
+ _p$.e = web.style(_el$239, _v$42, _p$.e);
1848
+ _v$43 !== _p$.t && web.setAttribute(_el$239, "data-mcp-ui-component-id", _p$.t = _v$43);
1803
1849
  return _p$;
1804
1850
  }, {
1805
1851
  e: void 0,
1806
1852
  t: void 0
1807
1853
  });
1808
- return _el$236;
1854
+ return _el$239;
1809
1855
  })()
1810
1856
  }));
1811
- web.insert(_el$232, web.createComponent(solidJs.Show, {
1857
+ web.insert(_el$235, web.createComponent(solidJs.Show, {
1812
1858
  get when() {
1813
1859
  return shouldShowAutoFooter();
1814
1860
  },
@@ -1819,10 +1865,10 @@ const UIResourceRenderer = (props) => {
1819
1865
  }
1820
1866
  });
1821
1867
  }
1822
- }), _el$235, _co$50);
1823
- web.effect((_$p) => web.style(_el$233, gridContainerStyle(), _$p));
1868
+ }), _el$238, _co$51);
1869
+ web.effect((_$p) => web.style(_el$236, gridContainerStyle(), _$p));
1824
1870
  web.runHydrationEvents();
1825
- return _el$232;
1871
+ return _el$235;
1826
1872
  }
1827
1873
  });
1828
1874
  };