@seed-ship/mcp-ui-solid 6.23.0 → 6.24.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.
Files changed (79) hide show
  1. package/CHANGELOG.md +125 -0
  2. package/README.md +107 -2
  3. package/dist/components/ChartJSRenderer.cjs +192 -66
  4. package/dist/components/ChartJSRenderer.cjs.map +1 -1
  5. package/dist/components/ChartJSRenderer.d.ts.map +1 -1
  6. package/dist/components/ChartJSRenderer.js +192 -66
  7. package/dist/components/ChartJSRenderer.js.map +1 -1
  8. package/dist/components/DegradedFallback.cjs +34 -2
  9. package/dist/components/DegradedFallback.cjs.map +1 -1
  10. package/dist/components/DegradedFallback.d.ts +7 -0
  11. package/dist/components/DegradedFallback.d.ts.map +1 -1
  12. package/dist/components/DegradedFallback.js +34 -2
  13. package/dist/components/DegradedFallback.js.map +1 -1
  14. package/dist/components/MissingValue.cjs +43 -0
  15. package/dist/components/MissingValue.cjs.map +1 -0
  16. package/dist/components/MissingValue.d.ts +27 -0
  17. package/dist/components/MissingValue.d.ts.map +1 -0
  18. package/dist/components/MissingValue.js +43 -0
  19. package/dist/components/MissingValue.js.map +1 -0
  20. package/dist/components/UIResourceRenderer.cjs +237 -199
  21. package/dist/components/UIResourceRenderer.cjs.map +1 -1
  22. package/dist/components/UIResourceRenderer.d.ts.map +1 -1
  23. package/dist/components/UIResourceRenderer.js +237 -199
  24. package/dist/components/UIResourceRenderer.js.map +1 -1
  25. package/dist/components/chart-data-table.cjs +30 -5
  26. package/dist/components/chart-data-table.cjs.map +1 -1
  27. package/dist/components/chart-data-table.d.ts +18 -1
  28. package/dist/components/chart-data-table.d.ts.map +1 -1
  29. package/dist/components/chart-data-table.js +30 -5
  30. package/dist/components/chart-data-table.js.map +1 -1
  31. package/dist/components/chart-missing-plugin.cjs +194 -0
  32. package/dist/components/chart-missing-plugin.cjs.map +1 -0
  33. package/dist/components/chart-missing-plugin.d.ts +127 -0
  34. package/dist/components/chart-missing-plugin.d.ts.map +1 -0
  35. package/dist/components/chart-missing-plugin.js +194 -0
  36. package/dist/components/chart-missing-plugin.js.map +1 -0
  37. package/dist/context/MCPUIStringsContext.cjs +12 -1
  38. package/dist/context/MCPUIStringsContext.cjs.map +1 -1
  39. package/dist/context/MCPUIStringsContext.d.ts +62 -0
  40. package/dist/context/MCPUIStringsContext.d.ts.map +1 -1
  41. package/dist/context/MCPUIStringsContext.js +12 -1
  42. package/dist/context/MCPUIStringsContext.js.map +1 -1
  43. package/dist/services/component-registry.cjs +9 -2
  44. package/dist/services/component-registry.cjs.map +1 -1
  45. package/dist/services/component-registry.d.ts.map +1 -1
  46. package/dist/services/component-registry.js +9 -2
  47. package/dist/services/component-registry.js.map +1 -1
  48. package/dist/services/validation.cjs +31 -8
  49. package/dist/services/validation.cjs.map +1 -1
  50. package/dist/services/validation.d.ts.map +1 -1
  51. package/dist/services/validation.js +31 -8
  52. package/dist/services/validation.js.map +1 -1
  53. package/dist/types/index.d.ts +14 -2
  54. package/dist/types/index.d.ts.map +1 -1
  55. package/dist/utils/degraded-projections.cjs +19 -3
  56. package/dist/utils/degraded-projections.cjs.map +1 -1
  57. package/dist/utils/degraded-projections.d.ts +22 -2
  58. package/dist/utils/degraded-projections.d.ts.map +1 -1
  59. package/dist/utils/degraded-projections.js +19 -3
  60. package/dist/utils/degraded-projections.js.map +1 -1
  61. package/dist/utils/missing-value.cjs +60 -0
  62. package/dist/utils/missing-value.cjs.map +1 -0
  63. package/dist/utils/missing-value.d.ts +79 -0
  64. package/dist/utils/missing-value.d.ts.map +1 -0
  65. package/dist/utils/missing-value.js +60 -0
  66. package/dist/utils/missing-value.js.map +1 -0
  67. package/package.json +3 -3
  68. package/src/components/ChartJSRenderer.tsx +159 -6
  69. package/src/components/DegradedFallback.tsx +24 -2
  70. package/src/components/MissingValue.tsx +61 -0
  71. package/src/components/UIResourceRenderer.tsx +42 -9
  72. package/src/components/chart-data-table.ts +50 -6
  73. package/src/components/chart-missing-plugin.ts +334 -0
  74. package/src/context/MCPUIStringsContext.tsx +76 -0
  75. package/src/services/component-registry.ts +10 -2
  76. package/src/services/validation.ts +44 -9
  77. package/src/types/index.ts +13 -1
  78. package/src/utils/degraded-projections.ts +44 -4
  79. package/src/utils/missing-value.ts +127 -0
@@ -37,6 +37,8 @@ const duplicateMountRegistry = require("../utils/duplicate-mount-registry.cjs");
37
37
  const MCPUITelemetryContext = require("../context/MCPUITelemetryContext.cjs");
38
38
  const MCPUIStringsContext = require("../context/MCPUIStringsContext.cjs");
39
39
  const MCPUIConfigContext = require("../context/MCPUIConfigContext.cjs");
40
+ const missingValue = require("../utils/missing-value.cjs");
41
+ const MissingValue = require("./MissingValue.cjs");
40
42
  const iframeCoep = require("../utils/iframe-coep.cjs");
41
43
  const IframeFallbackLink = require("./IframeFallbackLink.cjs");
42
44
  const GridRenderer = require("./GridRenderer.cjs");
@@ -63,7 +65,7 @@ const marked = require("marked");
63
65
  const MCPUIMathContext = require("../context/MCPUIMathContext.cjs");
64
66
  const mathMarkdown = require("../utils/math-markdown.cjs");
65
67
  const formatString = require("../utils/format-string.cjs");
66
- 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 data-mcp-ui-action=copy type=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">`), _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"></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">`), _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">`), _tmpl$14 = /* @__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"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$15 = /* @__PURE__ */ web.template(`<span class="ml-2 text-xs font-normal text-gray-400">`), _tmpl$16 = /* @__PURE__ */ web.template(`<h3 class="text-sm font-semibold text-gray-900 dark:text-white mb-3 flex-shrink-0"><!$><!/><!$><!/>`), _tmpl$17 = /* @__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">&times;`), _tmpl$18 = /* @__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$19 = /* @__PURE__ */ web.template(`<p class="text-xs text-gray-500 dark:text-gray-400 mb-2">`), _tmpl$20 = /* @__PURE__ */ web.template(`<div class="mt-3 flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"><span>`), _tmpl$21 = /* @__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"data-mcp-ui-action=page-size>`), _tmpl$22 = /* @__PURE__ */ web.template(`<span class=text-gray-400>`), _tmpl$23 = /* @__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 type=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"data-mcp-ui-action=page-prev><span aria-hidden=true>&#x25C0;</span></button><span aria-live=polite><!$><!/> / <!$><!/></span><button type=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"data-mcp-ui-action=page-next><span aria-hidden=true>&#x25B6;</span></button><!$><!/>`), _tmpl$24 = /* @__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$25 = /* @__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$26 = /* @__PURE__ */ web.template(`<option>`), _tmpl$27 = /* @__PURE__ */ web.template(`<span class="ml-2 text-sm font-medium text-gray-500 dark:text-gray-400">`), _tmpl$28 = /* @__PURE__ */ web.template(`<div class="mt-3 flex items-center"><span><!$><!/> <!$><!/>%`), _tmpl$29 = /* @__PURE__ */ web.template(`<p class="mt-2 text-xs text-gray-500 dark:text-gray-400">`), _tmpl$30 = /* @__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$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"><!$><!/><!$><!/>`), _tmpl$32 = /* @__PURE__ */ web.template(`<img class="max-w-full max-h-[400px] object-contain rounded shadow-sm hover:opacity-90 transition-opacity"loading=lazy>`, true, false, false), _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]"></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">`), _tmpl$34 = /* @__PURE__ */ web.template(`<a target=_blank rel="noopener noreferrer"class=cursor-zoom-in>`), _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></iframe><!$><!/>`, 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><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>`), _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"></p><p class="text-xs text-red-700 dark:text-red-300 mt-1">`), _tmpl$43 = /* @__PURE__ */ web.template(`<div role=alert class="w-full rounded-lg border border-amber-300 bg-amber-50 px-3 py-2 text-sm text-amber-800 dark:border-amber-700/50 dark:bg-amber-900/20 dark:text-amber-200"><!$><!/> <code class=font-mono>`), _tmpl$44 = /* @__PURE__ */ web.template(`<span aria-hidden=true>`), _tmpl$45 = /* @__PURE__ */ web.template(`<a rel="noopener noreferrer"><!$><!/><!$><!/>`), _tmpl$46 = /* @__PURE__ */ web.template(`<span class="animate-spin h-4 w-4 border-2 border-current border-t-transparent rounded-full"aria-hidden=true>`), _tmpl$47 = /* @__PURE__ */ web.template(`<button type=button><!$><!/><!$><!/><!$><!/>`), _tmpl$48 = /* @__PURE__ */ web.template(`<p class="text-xs text-red-600 dark:text-red-400 mt-1">`), _tmpl$49 = /* @__PURE__ */ web.template(`<div class=mt-3><p class="text-xs font-medium text-red-700 dark:text-red-300"></p><ul class="mt-1 text-xs text-red-600 dark:text-red-400 list-disc list-inside">`), _tmpl$50 = /* @__PURE__ */ web.template(`<p class="text-xs text-red-500 dark:text-red-500 mt-2">`), _tmpl$51 = /* @__PURE__ */ web.template(`<div class="relative w-full bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-lg p-4 group"><!$><!/><div class="flex items-start gap-3"><div class="p-2 bg-red-100 dark:bg-red-900/40 rounded-full shrink-0"><svg class="w-5 h-5 text-red-600 dark:text-red-400"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"></path></svg></div><div class="flex-1 min-w-0"><h4 class="text-sm font-semibold text-red-800 dark:text-red-200"></h4><p class="text-sm text-red-700 dark:text-red-300 mt-1"></p><!$><!/><!$><!/><!$><!/>`), _tmpl$52 = /* @__PURE__ */ web.template(`<li>`), _tmpl$53 = /* @__PURE__ */ web.template(`<div class="px-4 py-2 border-b border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-900"><h3 class="text-sm font-semibold text-gray-900 dark:text-white capitalize">`), _tmpl$54 = /* @__PURE__ */ web.template(`<div class="w-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden"><!$><!/><!$><!/>`), _tmpl$55 = /* @__PURE__ */ web.template(`<div><div class="grid gap-4"data-mcp-ui-grid></div><!$><!/>`), _tmpl$56 = /* @__PURE__ */ web.template(`<div class=min-w-0>`);
68
+ 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 data-mcp-ui-action=copy type=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">`), _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"></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">`), _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">`), _tmpl$14 = /* @__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"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$15 = /* @__PURE__ */ web.template(`<span class="ml-2 text-xs font-normal text-gray-400">`), _tmpl$16 = /* @__PURE__ */ web.template(`<h3 class="text-sm font-semibold text-gray-900 dark:text-white mb-3 flex-shrink-0"><!$><!/><!$><!/>`), _tmpl$17 = /* @__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">&times;`), _tmpl$18 = /* @__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$19 = /* @__PURE__ */ web.template(`<p class="text-xs text-gray-500 dark:text-gray-400 mb-2">`), _tmpl$20 = /* @__PURE__ */ web.template(`<div class="mt-3 flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"><span>`), _tmpl$21 = /* @__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"data-mcp-ui-action=page-size>`), _tmpl$22 = /* @__PURE__ */ web.template(`<span class=text-gray-400>`), _tmpl$23 = /* @__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 type=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"data-mcp-ui-action=page-prev><span aria-hidden=true>&#x25C0;</span></button><span aria-live=polite><!$><!/> / <!$><!/></span><button type=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"data-mcp-ui-action=page-next><span aria-hidden=true>&#x25B6;</span></button><!$><!/>`), _tmpl$24 = /* @__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$25 = /* @__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$26 = /* @__PURE__ */ web.template(`<option>`), _tmpl$27 = /* @__PURE__ */ web.template(`<span class="ml-2 text-sm font-medium text-gray-500 dark:text-gray-400">`), _tmpl$28 = /* @__PURE__ */ web.template(`<div class="mt-3 flex items-center"><span><!$><!/> <!$><!/>%`), _tmpl$29 = /* @__PURE__ */ web.template(`<p class="mt-2 text-xs text-gray-500 dark:text-gray-400">`), _tmpl$30 = /* @__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$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"><!$><!/><!$><!/>`), _tmpl$32 = /* @__PURE__ */ web.template(`<img class="max-w-full max-h-[400px] object-contain rounded shadow-sm hover:opacity-90 transition-opacity"loading=lazy>`, true, false, false), _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]"></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">`), _tmpl$34 = /* @__PURE__ */ web.template(`<a target=_blank rel="noopener noreferrer"class=cursor-zoom-in>`), _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></iframe><!$><!/>`, 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><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>`), _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"></p><p class="text-xs text-red-700 dark:text-red-300 mt-1">`), _tmpl$43 = /* @__PURE__ */ web.template(`<div role=alert class="w-full rounded-lg border border-amber-300 bg-amber-50 px-3 py-2 text-sm text-amber-800 dark:border-amber-700/50 dark:bg-amber-900/20 dark:text-amber-200"><!$><!/> <code class=font-mono>`), _tmpl$44 = /* @__PURE__ */ web.template(`<span aria-hidden=true>`), _tmpl$45 = /* @__PURE__ */ web.template(`<a rel="noopener noreferrer"><!$><!/><!$><!/>`), _tmpl$46 = /* @__PURE__ */ web.template(`<span class="animate-spin h-4 w-4 border-2 border-current border-t-transparent rounded-full"aria-hidden=true>`), _tmpl$47 = /* @__PURE__ */ web.template(`<button type=button><!$><!/><!$><!/><!$><!/>`), _tmpl$48 = /* @__PURE__ */ web.template(`<p class="text-xs text-red-600 dark:text-red-400 mt-1">`), _tmpl$49 = /* @__PURE__ */ web.template(`<div class=mt-3><p class="text-xs font-medium text-red-700 dark:text-red-300"></p><ul class="mt-1 text-xs text-red-600 dark:text-red-400 list-disc list-inside">`), _tmpl$50 = /* @__PURE__ */ web.template(`<p class="text-xs text-red-500 dark:text-red-500 mt-2">`), _tmpl$51 = /* @__PURE__ */ web.template(`<div class="relative w-full bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-lg p-4 group"><!$><!/><div class="flex items-start gap-3"><div class="p-2 bg-red-100 dark:bg-red-900/40 rounded-full shrink-0"><svg class="w-5 h-5 text-red-600 dark:text-red-400"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"></path></svg></div><div class="flex-1 min-w-0"><h4 class="text-sm font-semibold text-red-800 dark:text-red-200"></h4><p class="text-sm text-red-700 dark:text-red-300 mt-1"></p><!$><!/><!$><!/><!$><!/>`), _tmpl$52 = /* @__PURE__ */ web.template(`<li>`), _tmpl$53 = /* @__PURE__ */ web.template(`<div class="px-4 py-2 border-b border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-900"><h3 class="text-sm font-semibold text-gray-900 dark:text-white capitalize">`), _tmpl$54 = /* @__PURE__ */ web.template(`<div class="w-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden"><!$><!/><!$><!/>`), _tmpl$55 = /* @__PURE__ */ web.template(`<div><div class="grid gap-4"data-mcp-ui-grid></div><!$><!/>`), _tmpl$56 = /* @__PURE__ */ web.template(`<div class=min-w-0>`);
67
69
  function CopyButton(props) {
68
70
  const strings = MCPUIStringsContext.useMCPUIStrings();
69
71
  const [copied, setCopied] = solidJs.createSignal(false);
@@ -218,7 +220,8 @@ function ChartRenderer(props) {
218
220
  return strings.chartQuickchartCaption;
219
221
  }
220
222
  }, () => degradedProjections.chartToDegradedTable(params() ?? {}, {
221
- series: strings.degradedSeries
223
+ series: strings.degradedSeries,
224
+ withUnit: strings.chartLabelWithUnit
222
225
  }))));
223
226
  return _el$7;
224
227
  }
@@ -399,8 +402,7 @@ function renderCellValue(value, citationCtx, mathRenderer) {
399
402
  }
400
403
  }
401
404
  let strValue = String(value);
402
- strValue = strValue.replace(/\s*[–-]\s*undefined\s*$/gi, "");
403
- strValue = strValue.replace(/^undefined\s*[–-]\s*/gi, "");
405
+ strValue = missingValue.stripUndefinedDebris(strValue);
404
406
  if (strValue.trim().toLowerCase() === "undefined") {
405
407
  return "-";
406
408
  }
@@ -471,12 +473,14 @@ function TableRenderer(props) {
471
473
  const dir = sortDir();
472
474
  if (!key || !dir) return r;
473
475
  const col = columns().find((c) => c.key === key);
474
- const isNum = (col == null ? void 0 : col.type) === "number" || r.length > 0 && typeof ((_a = r[0]) == null ? void 0 : _a[key]) === "number";
476
+ const firstObserved = (_a = r.find((row) => !missingValue.isMissingCellValue(row == null ? void 0 : row[key]))) == null ? void 0 : _a[key];
477
+ const isNum = (col == null ? void 0 : col.type) === "number" || typeof firstObserved === "number";
475
478
  return [...r].sort((a, b) => {
476
479
  const va = a[key], vb = b[key];
477
- if (va == null && vb == null) return 0;
478
- if (va == null) return 1;
479
- if (vb == null) return -1;
480
+ const missA = missingValue.isMissingCellValue(va), missB = missingValue.isMissingCellValue(vb);
481
+ if (missA && missB) return 0;
482
+ if (missA) return 1;
483
+ if (missB) return -1;
480
484
  let cmp;
481
485
  if (isNum) {
482
486
  cmp = (Number(va) || 0) - (Number(vb) || 0);
@@ -512,7 +516,7 @@ function TableRenderer(props) {
512
516
  const cols = columns();
513
517
  return sortedRows().filter((row) => cols.some((col) => {
514
518
  const val = row[col.key];
515
- if (val == null) return false;
519
+ if (missingValue.isMissingCellValue(val)) return false;
516
520
  return normalize(String(val)).includes(q);
517
521
  }));
518
522
  });
@@ -680,6 +684,10 @@ ${dataRows}`;
680
684
  }
681
685
  };
682
686
  const tableId = `table-${Math.random().toString(36).slice(2, 9)}`;
687
+ const hasMissingCells = solidJs.createMemo(() => {
688
+ const cols = columns();
689
+ return allRows().some((row) => cols.some((col) => missingValue.isMissingCellValue(row == null ? void 0 : row[col.key])));
690
+ });
683
691
  const StandardTableBody = () => (() => {
684
692
  var _el$25 = web.getNextElement(_tmpl$1);
685
693
  web.insert(_el$25, web.createComponent(solidJs.For, {
@@ -694,8 +702,18 @@ ${dataRows}`;
694
702
  },
695
703
  children: (column) => (() => {
696
704
  var _el$27 = web.getNextElement(_tmpl$11);
697
- web.insert(_el$27, web.createComponent(SafeHtml.SafeHtml, {
698
- html: () => highlightQuery(renderCellValue(row[column.key], citationCtx, mathRenderer()), debouncedQuery())
705
+ web.insert(_el$27, web.createComponent(solidJs.Show, {
706
+ get when() {
707
+ return !missingValue.isMissingCellValue(row[column.key]);
708
+ },
709
+ get fallback() {
710
+ return web.createComponent(MissingValue.MissingValueMark, {});
711
+ },
712
+ get children() {
713
+ return web.createComponent(SafeHtml.SafeHtml, {
714
+ html: () => highlightQuery(renderCellValue(row[column.key], citationCtx, mathRenderer()), debouncedQuery())
715
+ });
716
+ }
699
717
  }));
700
718
  return _el$27;
701
719
  })()
@@ -729,8 +747,18 @@ ${dataRows}`;
729
747
  },
730
748
  children: (column) => (() => {
731
749
  var _el$30 = web.getNextElement(_tmpl$11);
732
- web.insert(_el$30, web.createComponent(SafeHtml.SafeHtml, {
733
- html: () => highlightQuery(renderCellValue(row[column.key], citationCtx, mathRenderer()), debouncedQuery())
750
+ web.insert(_el$30, web.createComponent(solidJs.Show, {
751
+ get when() {
752
+ return !missingValue.isMissingCellValue(row[column.key]);
753
+ },
754
+ get fallback() {
755
+ return web.createComponent(MissingValue.MissingValueMark, {});
756
+ },
757
+ get children() {
758
+ return web.createComponent(SafeHtml.SafeHtml, {
759
+ html: () => highlightQuery(renderCellValue(row[column.key], citationCtx, mathRenderer()), debouncedQuery())
760
+ });
761
+ }
734
762
  }));
735
763
  return _el$30;
736
764
  })()
@@ -766,7 +794,7 @@ ${dataRows}`;
766
794
  },
767
795
  onExpandedChange: setSelfExpanded,
768
796
  get children() {
769
- var _el$31 = web.getNextElement(_tmpl$24), _el$92 = _el$31.firstChild, [_el$93, _co$19] = web.getNextMarker(_el$92.nextSibling), _el$39 = _el$93.nextSibling, _el$84 = _el$39.firstChild, [_el$85, _co$15] = web.getNextMarker(_el$84.nextSibling), _el$86 = _el$85.nextSibling, [_el$87, _co$16] = web.getNextMarker(_el$86.nextSibling), _el$53 = _el$87.nextSibling, _el$54 = _el$53.firstChild, _el$55 = _el$54.firstChild, _el$56 = _el$55.firstChild, _el$57 = _el$55.nextSibling, [_el$58, _co$0] = web.getNextMarker(_el$57.nextSibling), _el$88 = _el$53.nextSibling, [_el$89, _co$17] = web.getNextMarker(_el$88.nextSibling), _el$90 = _el$89.nextSibling, [_el$91, _co$18] = web.getNextMarker(_el$90.nextSibling);
797
+ var _el$31 = web.getNextElement(_tmpl$24), _el$94 = _el$31.firstChild, [_el$95, _co$20] = web.getNextMarker(_el$94.nextSibling), _el$39 = _el$95.nextSibling, _el$84 = _el$39.firstChild, [_el$85, _co$15] = web.getNextMarker(_el$84.nextSibling), _el$86 = _el$85.nextSibling, [_el$87, _co$16] = web.getNextMarker(_el$86.nextSibling), _el$53 = _el$87.nextSibling, _el$54 = _el$53.firstChild, _el$55 = _el$54.firstChild, _el$56 = _el$55.firstChild, _el$57 = _el$55.nextSibling, [_el$58, _co$0] = web.getNextMarker(_el$57.nextSibling), _el$88 = _el$53.nextSibling, [_el$89, _co$17] = web.getNextMarker(_el$88.nextSibling), _el$90 = _el$89.nextSibling, [_el$91, _co$18] = web.getNextMarker(_el$90.nextSibling), _el$92 = _el$91.nextSibling, [_el$93, _co$19] = web.getNextMarker(_el$92.nextSibling);
770
798
  web.insert(_el$31, web.createComponent(solidJs.Show, {
771
799
  when: exportable,
772
800
  get fallback() {
@@ -841,7 +869,7 @@ ${dataRows}`;
841
869
  web.runHydrationEvents();
842
870
  return _el$32;
843
871
  }
844
- }), _el$93, _co$19);
872
+ }), _el$95, _co$20);
845
873
  web.insert(_el$39, web.createComponent(solidJs.Show, {
846
874
  get when() {
847
875
  return tableParams.title;
@@ -918,10 +946,10 @@ ${dataRows}`;
918
946
  return tableParams.columns;
919
947
  },
920
948
  children: (column) => (() => {
921
- var _el$94 = web.getNextElement(_tmpl$25), _el$95 = _el$94.firstChild, _el$97 = _el$95.firstChild, [_el$98, _co$20] = web.getNextMarker(_el$97.nextSibling), _el$96 = _el$98.nextSibling;
922
- web.addEventListener(_el$94, "click", () => handleSort(column.key));
923
- web.insert(_el$95, () => column.label, _el$98, _co$20);
924
- web.insert(_el$96, () => sortIndicator(column.key));
949
+ var _el$96 = web.getNextElement(_tmpl$25), _el$97 = _el$96.firstChild, _el$99 = _el$97.firstChild, [_el$100, _co$21] = web.getNextMarker(_el$99.nextSibling), _el$98 = _el$100.nextSibling;
950
+ web.addEventListener(_el$96, "click", () => handleSort(column.key));
951
+ web.insert(_el$97, () => column.label, _el$100, _co$21);
952
+ web.insert(_el$98, () => sortIndicator(column.key));
925
953
  web.effect((_p$) => {
926
954
  var _v$20 = column.width ? {
927
955
  width: column.width
@@ -931,16 +959,16 @@ ${dataRows}`;
931
959
  "opacity-30": sortKey() !== column.key,
932
960
  "opacity-100 text-blue-600 dark:text-blue-400": sortKey() === column.key
933
961
  };
934
- _p$.e = web.style(_el$94, _v$20, _p$.e);
935
- _v$21 !== _p$.t && web.setAttribute(_el$94, "title", _p$.t = _v$21);
936
- _p$.a = web.classList(_el$96, _v$22, _p$.a);
962
+ _p$.e = web.style(_el$96, _v$20, _p$.e);
963
+ _v$21 !== _p$.t && web.setAttribute(_el$96, "title", _p$.t = _v$21);
964
+ _p$.a = web.classList(_el$98, _v$22, _p$.a);
937
965
  return _p$;
938
966
  }, {
939
967
  e: void 0,
940
968
  t: void 0,
941
969
  a: void 0
942
970
  });
943
- return _el$94;
971
+ return _el$96;
944
972
  })()
945
973
  }));
946
974
  web.insert(_el$54, web.createComponent(solidJs.Show, {
@@ -954,6 +982,16 @@ ${dataRows}`;
954
982
  return web.createComponent(VirtualizedTableBody, {});
955
983
  }
956
984
  }), _el$58, _co$0);
985
+ web.insert(_el$39, web.createComponent(solidJs.Show, {
986
+ get when() {
987
+ return hasMissingCells();
988
+ },
989
+ get children() {
990
+ return web.createComponent(MissingValue.MissingValueLegend, {
991
+ "class": "mt-2 px-1"
992
+ });
993
+ }
994
+ }), _el$89, _co$17);
957
995
  web.insert(_el$39, web.createComponent(solidJs.Show, {
958
996
  get when() {
959
997
  return tableParams.pagination;
@@ -967,7 +1005,7 @@ ${dataRows}`;
967
1005
  }));
968
1006
  return _el$59;
969
1007
  }
970
- }), _el$89, _co$17);
1008
+ }), _el$91, _co$18);
971
1009
  web.insert(_el$39, web.createComponent(solidJs.Show, {
972
1010
  get when() {
973
1011
  return needsClientPagination();
@@ -994,10 +1032,10 @@ ${dataRows}`;
994
1032
  return pageSizeOptions();
995
1033
  },
996
1034
  children: (opt) => (() => {
997
- var _el$99 = web.getNextElement(_tmpl$26);
998
- web.insert(_el$99, () => opt.label);
999
- web.effect(() => web.setProperty(_el$99, "value", opt.value));
1000
- return _el$99;
1035
+ var _el$101 = web.getNextElement(_tmpl$26);
1036
+ web.insert(_el$101, () => opt.label);
1037
+ web.effect(() => web.setProperty(_el$101, "value", opt.value));
1038
+ return _el$101;
1001
1039
  })()
1002
1040
  }));
1003
1041
  web.effect(() => web.setAttribute(_el$80, "aria-label", strings.paginationPageSize));
@@ -1026,7 +1064,7 @@ ${dataRows}`;
1026
1064
  web.runHydrationEvents();
1027
1065
  return _el$61;
1028
1066
  }
1029
- }), _el$91, _co$18);
1067
+ }), _el$93, _co$19);
1030
1068
  web.effect((_p$) => {
1031
1069
  var _v$14 = `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"} ${tableParams.className || ""}`, _v$15 = `p-4 ${isExpanded() ? "flex-1 min-h-0 flex flex-col" : ""}`, _v$16 = `overflow-x-auto ${isExpanded() ? "flex-1 min-h-0" : ""}`, _v$17 = (
1032
1070
  // v6.1.0 — when expanded, the scroll container fills the
@@ -1087,53 +1125,53 @@ function MetricRenderer(props) {
1087
1125
  return `${title}: ${value}${unit ? " " + unit : ""}`;
1088
1126
  };
1089
1127
  return (() => {
1090
- var _el$100 = web.getNextElement(_tmpl$30), _el$122 = _el$100.firstChild, [_el$123, _co$26] = web.getNextMarker(_el$122.nextSibling), _el$101 = _el$123.nextSibling, _el$102 = _el$101.firstChild, _el$103 = _el$102.firstChild, _el$104 = _el$103.nextSibling, _el$105 = _el$104.firstChild, _el$107 = _el$105.nextSibling, [_el$108, _co$21] = web.getNextMarker(_el$107.nextSibling), _el$118 = _el$102.nextSibling, [_el$119, _co$24] = web.getNextMarker(_el$118.nextSibling), _el$120 = _el$119.nextSibling, [_el$121, _co$25] = web.getNextMarker(_el$120.nextSibling);
1091
- web.insert(_el$100, web.createComponent(CopyButton, {
1128
+ var _el$102 = web.getNextElement(_tmpl$30), _el$124 = _el$102.firstChild, [_el$125, _co$27] = web.getNextMarker(_el$124.nextSibling), _el$103 = _el$125.nextSibling, _el$104 = _el$103.firstChild, _el$105 = _el$104.firstChild, _el$106 = _el$105.nextSibling, _el$107 = _el$106.firstChild, _el$109 = _el$107.nextSibling, [_el$110, _co$22] = web.getNextMarker(_el$109.nextSibling), _el$120 = _el$104.nextSibling, [_el$121, _co$25] = web.getNextMarker(_el$120.nextSibling), _el$122 = _el$121.nextSibling, [_el$123, _co$26] = web.getNextMarker(_el$122.nextSibling);
1129
+ web.insert(_el$102, web.createComponent(CopyButton, {
1092
1130
  getText: getMetricText,
1093
1131
  get title() {
1094
1132
  return strings.copyMetric;
1095
1133
  },
1096
1134
  position: "top-right"
1097
- }), _el$123, _co$26);
1098
- web.insert(_el$103, () => metricParams.title);
1099
- web.insert(_el$105, () => metricParams.value);
1100
- web.insert(_el$104, web.createComponent(solidJs.Show, {
1135
+ }), _el$125, _co$27);
1136
+ web.insert(_el$105, () => metricParams.title);
1137
+ web.insert(_el$107, () => metricParams.value);
1138
+ web.insert(_el$106, web.createComponent(solidJs.Show, {
1101
1139
  get when() {
1102
1140
  return metricParams.unit;
1103
1141
  },
1104
1142
  get children() {
1105
- var _el$106 = web.getNextElement(_tmpl$27);
1106
- web.insert(_el$106, () => metricParams.unit);
1107
- return _el$106;
1143
+ var _el$108 = web.getNextElement(_tmpl$27);
1144
+ web.insert(_el$108, () => metricParams.unit);
1145
+ return _el$108;
1108
1146
  }
1109
- }), _el$108, _co$21);
1110
- web.insert(_el$101, web.createComponent(solidJs.Show, {
1147
+ }), _el$110, _co$22);
1148
+ web.insert(_el$103, web.createComponent(solidJs.Show, {
1111
1149
  get when() {
1112
1150
  return metricParams.trend;
1113
1151
  },
1114
1152
  get children() {
1115
- var _el$109 = web.getNextElement(_tmpl$28), _el$110 = _el$109.firstChild, _el$113 = _el$110.firstChild, [_el$114, _co$22] = web.getNextMarker(_el$113.nextSibling), _el$111 = _el$114.nextSibling, _el$115 = _el$111.nextSibling, [_el$116, _co$23] = web.getNextMarker(_el$115.nextSibling);
1116
- _el$116.nextSibling;
1117
- web.insert(_el$110, (() => {
1153
+ var _el$111 = web.getNextElement(_tmpl$28), _el$112 = _el$111.firstChild, _el$115 = _el$112.firstChild, [_el$116, _co$23] = web.getNextMarker(_el$115.nextSibling), _el$113 = _el$116.nextSibling, _el$117 = _el$113.nextSibling, [_el$118, _co$24] = web.getNextMarker(_el$117.nextSibling);
1154
+ _el$118.nextSibling;
1155
+ web.insert(_el$112, (() => {
1118
1156
  var _c$ = web.memo(() => metricParams.trend.direction === "up");
1119
1157
  return () => _c$() ? "�" : metricParams.trend.direction === "down" ? "�" : "�";
1120
- })(), _el$114, _co$22);
1121
- web.insert(_el$110, () => Math.abs(metricParams.trend.value), _el$116, _co$23);
1122
- web.effect(() => web.className(_el$110, `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"}`));
1123
- return _el$109;
1158
+ })(), _el$116, _co$23);
1159
+ web.insert(_el$112, () => Math.abs(metricParams.trend.value), _el$118, _co$24);
1160
+ web.effect(() => web.className(_el$112, `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"}`));
1161
+ return _el$111;
1124
1162
  }
1125
- }), _el$119, _co$24);
1126
- web.insert(_el$101, web.createComponent(solidJs.Show, {
1163
+ }), _el$121, _co$25);
1164
+ web.insert(_el$103, web.createComponent(solidJs.Show, {
1127
1165
  get when() {
1128
1166
  return metricParams.subtitle;
1129
1167
  },
1130
1168
  get children() {
1131
- var _el$117 = web.getNextElement(_tmpl$29);
1132
- web.insert(_el$117, () => metricParams.subtitle);
1133
- return _el$117;
1169
+ var _el$119 = web.getNextElement(_tmpl$29);
1170
+ web.insert(_el$119, () => metricParams.subtitle);
1171
+ return _el$119;
1134
1172
  }
1135
- }), _el$121, _co$25);
1136
- return _el$100;
1173
+ }), _el$123, _co$26);
1174
+ return _el$102;
1137
1175
  })();
1138
1176
  }
1139
1177
  function extractImageFromMarkdown(content, fallbackAlt) {
@@ -1193,40 +1231,40 @@ function TextRenderer(props) {
1193
1231
  },
1194
1232
  get fallback() {
1195
1233
  return (() => {
1196
- var _el$124 = web.getNextElement(_tmpl$31), _el$125 = _el$124.firstChild, [_el$126, _co$27] = web.getNextMarker(_el$125.nextSibling), _el$127 = _el$126.nextSibling, [_el$128, _co$28] = web.getNextMarker(_el$127.nextSibling);
1197
- web.insert(_el$124, web.createComponent(CopyButton, {
1234
+ var _el$126 = web.getNextElement(_tmpl$31), _el$127 = _el$126.firstChild, [_el$128, _co$28] = web.getNextMarker(_el$127.nextSibling), _el$129 = _el$128.nextSibling, [_el$130, _co$29] = web.getNextMarker(_el$129.nextSibling);
1235
+ web.insert(_el$126, web.createComponent(CopyButton, {
1198
1236
  getText: getTextContent,
1199
1237
  get title() {
1200
1238
  return strings.copyText;
1201
1239
  },
1202
1240
  position: "top-right"
1203
- }), _el$126, _co$27);
1204
- web.insert(_el$124, web.createComponent(SafeHtml.SafeHtml, {
1241
+ }), _el$128, _co$28);
1242
+ web.insert(_el$126, web.createComponent(SafeHtml.SafeHtml, {
1205
1243
  get ["class"]() {
1206
1244
  return `prose prose-sm dark:prose-invert max-w-none ${textParams.className || ""}`;
1207
1245
  },
1208
1246
  html: htmlContent
1209
- }), _el$128, _co$28);
1210
- return _el$124;
1247
+ }), _el$130, _co$29);
1248
+ return _el$126;
1211
1249
  })();
1212
1250
  },
1213
1251
  children: (data) => {
1214
1252
  const image = () => (() => {
1215
- var _el$129 = web.getNextElement(_tmpl$32);
1253
+ var _el$131 = web.getNextElement(_tmpl$32);
1216
1254
  web.effect((_p$) => {
1217
1255
  var _v$23 = data().imageUrl, _v$24 = data().alt;
1218
- _v$23 !== _p$.e && web.setAttribute(_el$129, "src", _p$.e = _v$23);
1219
- _v$24 !== _p$.t && web.setAttribute(_el$129, "alt", _p$.t = _v$24);
1256
+ _v$23 !== _p$.e && web.setAttribute(_el$131, "src", _p$.e = _v$23);
1257
+ _v$24 !== _p$.t && web.setAttribute(_el$131, "alt", _p$.t = _v$24);
1220
1258
  return _p$;
1221
1259
  }, {
1222
1260
  e: void 0,
1223
1261
  t: void 0
1224
1262
  });
1225
- return _el$129;
1263
+ return _el$131;
1226
1264
  })();
1227
1265
  return (() => {
1228
- var _el$130 = web.getNextElement(_tmpl$33), _el$131 = _el$130.firstChild, _el$132 = _el$131.nextSibling, _el$133 = _el$132.firstChild;
1229
- web.insert(_el$131, web.createComponent(solidJs.Show, {
1266
+ var _el$132 = web.getNextElement(_tmpl$33), _el$133 = _el$132.firstChild, _el$134 = _el$133.nextSibling, _el$135 = _el$134.firstChild;
1267
+ web.insert(_el$133, web.createComponent(solidJs.Show, {
1230
1268
  get when() {
1231
1269
  return data().linkUrl;
1232
1270
  },
@@ -1234,14 +1272,14 @@ function TextRenderer(props) {
1234
1272
  return image();
1235
1273
  },
1236
1274
  children: (href) => (() => {
1237
- var _el$134 = web.getNextElement(_tmpl$34);
1238
- web.insert(_el$134, image);
1239
- web.effect(() => web.setAttribute(_el$134, "href", href()));
1240
- return _el$134;
1275
+ var _el$136 = web.getNextElement(_tmpl$34);
1276
+ web.insert(_el$136, image);
1277
+ web.effect(() => web.setAttribute(_el$136, "href", href()));
1278
+ return _el$136;
1241
1279
  })()
1242
1280
  }));
1243
- web.insert(_el$133, () => data().credit);
1244
- return _el$130;
1281
+ web.insert(_el$135, () => data().credit);
1282
+ return _el$132;
1245
1283
  })();
1246
1284
  }
1247
1285
  });
@@ -1254,34 +1292,34 @@ function IframeRenderer(props) {
1254
1292
  customTrustedDomains: config.customTrustedIframeDomains
1255
1293
  });
1256
1294
  return (() => {
1257
- var _el$135 = web.getNextElement(_tmpl$36), _el$139 = _el$135.firstChild, [_el$140, _co$29] = web.getNextMarker(_el$139.nextSibling), _el$138 = _el$140.nextSibling, _el$141 = _el$138.nextSibling, [_el$142, _co$30] = web.getNextMarker(_el$141.nextSibling);
1258
- web.insert(_el$135, web.createComponent(solidJs.Show, {
1295
+ var _el$137 = web.getNextElement(_tmpl$36), _el$141 = _el$137.firstChild, [_el$142, _co$30] = web.getNextMarker(_el$141.nextSibling), _el$140 = _el$142.nextSibling, _el$143 = _el$140.nextSibling, [_el$144, _co$31] = web.getNextMarker(_el$143.nextSibling);
1296
+ web.insert(_el$137, web.createComponent(solidJs.Show, {
1259
1297
  get when() {
1260
1298
  return params.title;
1261
1299
  },
1262
1300
  get children() {
1263
- var _el$136 = web.getNextElement(_tmpl$35), _el$137 = _el$136.firstChild;
1264
- web.insert(_el$137, () => params.title);
1265
- return _el$136;
1301
+ var _el$138 = web.getNextElement(_tmpl$35), _el$139 = _el$138.firstChild;
1302
+ web.insert(_el$139, () => params.title);
1303
+ return _el$138;
1266
1304
  }
1267
- }), _el$140, _co$29);
1268
- web.insert(_el$135, web.createComponent(IframeFallbackLink.IframeFallbackLink, {
1305
+ }), _el$142, _co$30);
1306
+ web.insert(_el$137, web.createComponent(IframeFallbackLink.IframeFallbackLink, {
1269
1307
  get url() {
1270
1308
  return params.url;
1271
1309
  },
1272
1310
  "class": "border-t border-gray-200 dark:border-gray-700"
1273
- }), _el$142, _co$30);
1311
+ }), _el$144, _co$31);
1274
1312
  web.effect((_p$) => {
1275
1313
  var _v$25 = params.url, _v$26 = params.title || strings.iframeTitle, _v$27 = `height: ${params.height || "400px"}; min-height: 300px;`, _v$28 = validation.getIframeSandbox(params.url, trustOptions()), _v$29 = iframeCoep.shouldSetCredentialless(params.url, config, {
1276
1314
  // This iframe's sandbox never carries `allow-same-origin` for an
1277
1315
  // untrusted host, so it already runs without cookies.
1278
1316
  sandboxedWithoutSameOrigin: !validation.isTrustedIframeDomain(params.url, trustOptions())
1279
1317
  }) || void 0;
1280
- _v$25 !== _p$.e && web.setAttribute(_el$138, "src", _p$.e = _v$25);
1281
- _v$26 !== _p$.t && web.setAttribute(_el$138, "title", _p$.t = _v$26);
1282
- _p$.a = web.style(_el$138, _v$27, _p$.a);
1283
- _v$28 !== _p$.o && web.setAttribute(_el$138, "sandbox", _p$.o = _v$28);
1284
- _v$29 !== _p$.i && web.setAttribute(_el$138, "credentialless", _p$.i = _v$29);
1318
+ _v$25 !== _p$.e && web.setAttribute(_el$140, "src", _p$.e = _v$25);
1319
+ _v$26 !== _p$.t && web.setAttribute(_el$140, "title", _p$.t = _v$26);
1320
+ _p$.a = web.style(_el$140, _v$27, _p$.a);
1321
+ _v$28 !== _p$.o && web.setAttribute(_el$140, "sandbox", _p$.o = _v$28);
1322
+ _v$29 !== _p$.i && web.setAttribute(_el$140, "credentialless", _p$.i = _v$29);
1285
1323
  return _p$;
1286
1324
  }, {
1287
1325
  e: void 0,
@@ -1290,35 +1328,35 @@ function IframeRenderer(props) {
1290
1328
  o: void 0,
1291
1329
  i: void 0
1292
1330
  });
1293
- return _el$135;
1331
+ return _el$137;
1294
1332
  })();
1295
1333
  }
1296
1334
  function ImageRenderer(props) {
1297
1335
  const strings = MCPUIStringsContext.useMCPUIStrings();
1298
1336
  const params = props.component.params;
1299
1337
  return (() => {
1300
- var _el$143 = web.getNextElement(_tmpl$38), _el$144 = _el$143.firstChild, _el$145 = _el$144.firstChild, _el$146 = _el$145.firstChild, _el$149 = _el$144.nextSibling, [_el$150, _co$31] = web.getNextMarker(_el$149.nextSibling);
1301
- web.insert(_el$143, web.createComponent(solidJs.Show, {
1338
+ var _el$145 = web.getNextElement(_tmpl$38), _el$146 = _el$145.firstChild, _el$147 = _el$146.firstChild, _el$148 = _el$147.firstChild, _el$151 = _el$146.nextSibling, [_el$152, _co$32] = web.getNextMarker(_el$151.nextSibling);
1339
+ web.insert(_el$145, web.createComponent(solidJs.Show, {
1302
1340
  get when() {
1303
1341
  return params.caption;
1304
1342
  },
1305
1343
  get children() {
1306
- var _el$147 = web.getNextElement(_tmpl$37), _el$148 = _el$147.firstChild;
1307
- web.insert(_el$148, () => params.caption);
1308
- return _el$147;
1344
+ var _el$149 = web.getNextElement(_tmpl$37), _el$150 = _el$149.firstChild;
1345
+ web.insert(_el$150, () => params.caption);
1346
+ return _el$149;
1309
1347
  }
1310
- }), _el$150, _co$31);
1348
+ }), _el$152, _co$32);
1311
1349
  web.effect((_p$) => {
1312
1350
  var _v$30 = `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$31 = safeUrl.safeUrl(params.url), _v$32 = formatString.formatMCPUIString(strings.imageViewFullSize, {
1313
1351
  alt: params.alt || strings.imageAltFallback
1314
1352
  }), _v$33 = safeUrl.safeUrl(params.url, {
1315
1353
  allowDataImage: true
1316
1354
  }), _v$34 = params.alt || strings.imageAlt;
1317
- _v$30 !== _p$.e && web.className(_el$143, _p$.e = _v$30);
1318
- _v$31 !== _p$.t && web.setAttribute(_el$145, "href", _p$.t = _v$31);
1319
- _v$32 !== _p$.a && web.setAttribute(_el$145, "aria-label", _p$.a = _v$32);
1320
- _v$33 !== _p$.o && web.setAttribute(_el$146, "src", _p$.o = _v$33);
1321
- _v$34 !== _p$.i && web.setAttribute(_el$146, "alt", _p$.i = _v$34);
1355
+ _v$30 !== _p$.e && web.className(_el$145, _p$.e = _v$30);
1356
+ _v$31 !== _p$.t && web.setAttribute(_el$147, "href", _p$.t = _v$31);
1357
+ _v$32 !== _p$.a && web.setAttribute(_el$147, "aria-label", _p$.a = _v$32);
1358
+ _v$33 !== _p$.o && web.setAttribute(_el$148, "src", _p$.o = _v$33);
1359
+ _v$34 !== _p$.i && web.setAttribute(_el$148, "alt", _p$.i = _v$34);
1322
1360
  return _p$;
1323
1361
  }, {
1324
1362
  e: void 0,
@@ -1327,34 +1365,34 @@ function ImageRenderer(props) {
1327
1365
  o: void 0,
1328
1366
  i: void 0
1329
1367
  });
1330
- return _el$143;
1368
+ return _el$145;
1331
1369
  })();
1332
1370
  }
1333
1371
  function LinkRenderer(props) {
1334
1372
  const strings = MCPUIStringsContext.useMCPUIStrings();
1335
1373
  const params = props.component.params;
1336
1374
  return (() => {
1337
- var _el$151 = web.getNextElement(_tmpl$40), _el$152 = _el$151.firstChild, _el$153 = _el$152.nextSibling, _el$154 = _el$153.firstChild, _el$156 = _el$154.nextSibling, [_el$157, _co$32] = web.getNextMarker(_el$156.nextSibling);
1338
- _el$151.$$click = (e) => e.stopPropagation();
1339
- web.insert(_el$154, () => params.label || params.url);
1340
- web.insert(_el$153, web.createComponent(solidJs.Show, {
1375
+ var _el$153 = web.getNextElement(_tmpl$40), _el$154 = _el$153.firstChild, _el$155 = _el$154.nextSibling, _el$156 = _el$155.firstChild, _el$158 = _el$156.nextSibling, [_el$159, _co$33] = web.getNextMarker(_el$158.nextSibling);
1376
+ _el$153.$$click = (e) => e.stopPropagation();
1377
+ web.insert(_el$156, () => params.label || params.url);
1378
+ web.insert(_el$155, web.createComponent(solidJs.Show, {
1341
1379
  get when() {
1342
1380
  return params.description;
1343
1381
  },
1344
1382
  get children() {
1345
- var _el$155 = web.getNextElement(_tmpl$39);
1346
- web.insert(_el$155, () => params.description);
1347
- return _el$155;
1383
+ var _el$157 = web.getNextElement(_tmpl$39);
1384
+ web.insert(_el$157, () => params.description);
1385
+ return _el$157;
1348
1386
  }
1349
- }), _el$157, _co$32);
1387
+ }), _el$159, _co$33);
1350
1388
  web.effect((_p$) => {
1351
1389
  var _v$35 = safeUrl.safeUrl(params.url), _v$36 = formatString.formatMCPUIString(strings.linkOpensInNewTab, {
1352
1390
  label: params.label || strings.linkLabel,
1353
1391
  description: params.description || params.url
1354
1392
  }), _v$37 = `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 || ""}`;
1355
- _v$35 !== _p$.e && web.setAttribute(_el$151, "href", _p$.e = _v$35);
1356
- _v$36 !== _p$.t && web.setAttribute(_el$151, "aria-label", _p$.t = _v$36);
1357
- _v$37 !== _p$.a && web.className(_el$151, _p$.a = _v$37);
1393
+ _v$35 !== _p$.e && web.setAttribute(_el$153, "href", _p$.e = _v$35);
1394
+ _v$36 !== _p$.t && web.setAttribute(_el$153, "aria-label", _p$.t = _v$36);
1395
+ _v$37 !== _p$.a && web.className(_el$153, _p$.a = _v$37);
1358
1396
  return _p$;
1359
1397
  }, {
1360
1398
  e: void 0,
@@ -1362,7 +1400,7 @@ function LinkRenderer(props) {
1362
1400
  a: void 0
1363
1401
  });
1364
1402
  web.runHydrationEvents();
1365
- return _el$151;
1403
+ return _el$153;
1366
1404
  })();
1367
1405
  }
1368
1406
  function ComponentRenderer(props) {
@@ -1441,20 +1479,20 @@ function ComponentRenderer(props) {
1441
1479
  }
1442
1480
  if (mode === "inline-warn") {
1443
1481
  return (() => {
1444
- var _el$158 = web.getNextElement(_tmpl$41), _el$159 = _el$158.firstChild, _el$160 = _el$159.nextSibling;
1445
- web.setAttribute(_el$158, "title", firstError);
1446
- web.insert(_el$160, () => formatString.formatMCPUIString(strings.invalidComponent, {
1482
+ var _el$160 = web.getNextElement(_tmpl$41), _el$161 = _el$160.firstChild, _el$162 = _el$161.nextSibling;
1483
+ web.setAttribute(_el$160, "title", firstError);
1484
+ web.insert(_el$162, () => formatString.formatMCPUIString(strings.invalidComponent, {
1447
1485
  type: props.component.type
1448
1486
  }));
1449
- web.effect(() => web.setAttribute(_el$158, "aria-label", strings.validationWarning));
1450
- return _el$158;
1487
+ web.effect(() => web.setAttribute(_el$160, "aria-label", strings.validationWarning));
1488
+ return _el$160;
1451
1489
  })();
1452
1490
  }
1453
1491
  return (() => {
1454
- var _el$161 = web.getNextElement(_tmpl$42), _el$162 = _el$161.firstChild, _el$163 = _el$162.nextSibling;
1455
- web.insert(_el$162, () => strings.validationError);
1456
- web.insert(_el$163, firstError);
1457
- return _el$161;
1492
+ var _el$163 = web.getNextElement(_tmpl$42), _el$164 = _el$163.firstChild, _el$165 = _el$164.nextSibling;
1493
+ web.insert(_el$164, () => strings.validationError);
1494
+ web.insert(_el$165, firstError);
1495
+ return _el$163;
1458
1496
  })();
1459
1497
  }
1460
1498
  return web.createComponent(GenerativeUIErrorBoundary.GenerativeUIErrorBoundary, {
@@ -1748,10 +1786,10 @@ function ComponentRenderer(props) {
1748
1786
  function UnsupportedComponentFallback(props) {
1749
1787
  const strings = MCPUIStringsContext.useMCPUIStrings();
1750
1788
  return (() => {
1751
- var _el$164 = web.getNextElement(_tmpl$43), _el$167 = _el$164.firstChild, [_el$168, _co$33] = web.getNextMarker(_el$167.nextSibling), _el$165 = _el$168.nextSibling, _el$166 = _el$165.nextSibling;
1752
- web.insert(_el$164, () => strings.unsupportedComponentType, _el$168, _co$33);
1753
- web.insert(_el$166, () => props.component.type);
1754
- return _el$164;
1789
+ var _el$166 = web.getNextElement(_tmpl$43), _el$169 = _el$166.firstChild, [_el$170, _co$34] = web.getNextMarker(_el$169.nextSibling), _el$167 = _el$170.nextSibling, _el$168 = _el$167.nextSibling;
1790
+ web.insert(_el$166, () => strings.unsupportedComponentType, _el$170, _co$34);
1791
+ web.insert(_el$168, () => props.component.type);
1792
+ return _el$166;
1755
1793
  })();
1756
1794
  }
1757
1795
  function ActionRenderer(props) {
@@ -1791,27 +1829,27 @@ function ActionRenderer(props) {
1791
1829
  const isDisabled = () => params.disabled || isExecutable() && isExecuting();
1792
1830
  if (params.type === "link" || params.action === "link") {
1793
1831
  return (() => {
1794
- var _el$169 = web.getNextElement(_tmpl$45), _el$171 = _el$169.firstChild, [_el$172, _co$34] = web.getNextMarker(_el$171.nextSibling), _el$173 = _el$172.nextSibling, [_el$174, _co$35] = web.getNextMarker(_el$173.nextSibling);
1795
- _el$169.$$click = handleClick;
1796
- web.insert(_el$169, web.createComponent(solidJs.Show, {
1832
+ var _el$171 = web.getNextElement(_tmpl$45), _el$173 = _el$171.firstChild, [_el$174, _co$35] = web.getNextMarker(_el$173.nextSibling), _el$175 = _el$174.nextSibling, [_el$176, _co$36] = web.getNextMarker(_el$175.nextSibling);
1833
+ _el$171.$$click = handleClick;
1834
+ web.insert(_el$171, web.createComponent(solidJs.Show, {
1797
1835
  get when() {
1798
1836
  return params.icon;
1799
1837
  },
1800
1838
  get children() {
1801
- var _el$170 = web.getNextElement(_tmpl$44);
1802
- web.insert(_el$170, () => params.icon);
1803
- return _el$170;
1839
+ var _el$172 = web.getNextElement(_tmpl$44);
1840
+ web.insert(_el$172, () => params.icon);
1841
+ return _el$172;
1804
1842
  }
1805
- }), _el$172, _co$34);
1806
- web.insert(_el$169, () => params.label, _el$174, _co$35);
1843
+ }), _el$174, _co$35);
1844
+ web.insert(_el$171, () => params.label, _el$176, _co$36);
1807
1845
  web.effect((_p$) => {
1808
1846
  var _v$38 = safeUrl.safeUrl(params.url) ?? "#", _v$39 = safeUrl.safeUrl(params.url) ? "_blank" : void 0, _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
1809
1847
  ${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"}
1810
1848
  ${params.className || ""}`;
1811
- _v$38 !== _p$.e && web.setAttribute(_el$169, "href", _p$.e = _v$38);
1812
- _v$39 !== _p$.t && web.setAttribute(_el$169, "target", _p$.t = _v$39);
1813
- _v$40 !== _p$.a && web.setAttribute(_el$169, "aria-label", _p$.a = _v$40);
1814
- _v$41 !== _p$.o && web.className(_el$169, _p$.o = _v$41);
1849
+ _v$38 !== _p$.e && web.setAttribute(_el$171, "href", _p$.e = _v$38);
1850
+ _v$39 !== _p$.t && web.setAttribute(_el$171, "target", _p$.t = _v$39);
1851
+ _v$40 !== _p$.a && web.setAttribute(_el$171, "aria-label", _p$.a = _v$40);
1852
+ _v$41 !== _p$.o && web.className(_el$171, _p$.o = _v$41);
1815
1853
  return _p$;
1816
1854
  }, {
1817
1855
  e: void 0,
@@ -1820,41 +1858,41 @@ function ActionRenderer(props) {
1820
1858
  o: void 0
1821
1859
  });
1822
1860
  web.runHydrationEvents();
1823
- return _el$169;
1861
+ return _el$171;
1824
1862
  })();
1825
1863
  }
1826
1864
  return (() => {
1827
- var _el$175 = web.getNextElement(_tmpl$47), _el$178 = _el$175.firstChild, [_el$179, _co$36] = web.getNextMarker(_el$178.nextSibling), _el$180 = _el$179.nextSibling, [_el$181, _co$37] = web.getNextMarker(_el$180.nextSibling), _el$182 = _el$181.nextSibling, [_el$183, _co$38] = web.getNextMarker(_el$182.nextSibling);
1828
- _el$175.$$click = handleClick;
1829
- web.insert(_el$175, web.createComponent(solidJs.Show, {
1865
+ var _el$177 = web.getNextElement(_tmpl$47), _el$180 = _el$177.firstChild, [_el$181, _co$37] = web.getNextMarker(_el$180.nextSibling), _el$182 = _el$181.nextSibling, [_el$183, _co$38] = web.getNextMarker(_el$182.nextSibling), _el$184 = _el$183.nextSibling, [_el$185, _co$39] = web.getNextMarker(_el$184.nextSibling);
1866
+ _el$177.$$click = handleClick;
1867
+ web.insert(_el$177, web.createComponent(solidJs.Show, {
1830
1868
  get when() {
1831
1869
  return web.memo(() => !!isExecuting())() && isExecutable();
1832
1870
  },
1833
1871
  get children() {
1834
1872
  return web.getNextElement(_tmpl$46);
1835
1873
  }
1836
- }), _el$179, _co$36);
1837
- web.insert(_el$175, web.createComponent(solidJs.Show, {
1874
+ }), _el$181, _co$37);
1875
+ web.insert(_el$177, web.createComponent(solidJs.Show, {
1838
1876
  get when() {
1839
1877
  return web.memo(() => !!params.icon)() && !(isExecuting() && isExecutable());
1840
1878
  },
1841
1879
  get children() {
1842
- var _el$177 = web.getNextElement(_tmpl$44);
1843
- web.insert(_el$177, () => params.icon);
1844
- return _el$177;
1880
+ var _el$179 = web.getNextElement(_tmpl$44);
1881
+ web.insert(_el$179, () => params.icon);
1882
+ return _el$179;
1845
1883
  }
1846
- }), _el$181, _co$37);
1847
- web.insert(_el$175, () => params.label, _el$183, _co$38);
1884
+ }), _el$183, _co$38);
1885
+ web.insert(_el$177, () => params.label, _el$185, _co$39);
1848
1886
  web.effect((_p$) => {
1849
1887
  var _v$42 = isDisabled(), _v$43 = isExecuting() && isExecutable(), _v$44 = params.ariaLabel || params.label, _v$45 = `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
1850
1888
  ${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"}
1851
1889
  ${isDisabled() ? "opacity-50 cursor-not-allowed" : ""}
1852
1890
  ${params.size === "sm" ? "px-3 py-1.5 text-xs" : params.size === "lg" ? "px-6 py-3 text-base" : ""}
1853
1891
  ${params.className || ""}`;
1854
- _v$42 !== _p$.e && web.setProperty(_el$175, "disabled", _p$.e = _v$42);
1855
- _v$43 !== _p$.t && web.setAttribute(_el$175, "aria-busy", _p$.t = _v$43);
1856
- _v$44 !== _p$.a && web.setAttribute(_el$175, "aria-label", _p$.a = _v$44);
1857
- _v$45 !== _p$.o && web.className(_el$175, _p$.o = _v$45);
1892
+ _v$42 !== _p$.e && web.setProperty(_el$177, "disabled", _p$.e = _v$42);
1893
+ _v$43 !== _p$.t && web.setAttribute(_el$177, "aria-busy", _p$.t = _v$43);
1894
+ _v$44 !== _p$.a && web.setAttribute(_el$177, "aria-label", _p$.a = _v$44);
1895
+ _v$45 !== _p$.o && web.className(_el$177, _p$.o = _v$45);
1858
1896
  return _p$;
1859
1897
  }, {
1860
1898
  e: void 0,
@@ -1863,7 +1901,7 @@ function ActionRenderer(props) {
1863
1901
  o: void 0
1864
1902
  });
1865
1903
  web.runHydrationEvents();
1866
- return _el$175;
1904
+ return _el$177;
1867
1905
  })();
1868
1906
  }
1869
1907
  function ErrorCardRenderer(props) {
@@ -1877,62 +1915,62 @@ function ErrorCardRenderer(props) {
1877
1915
  });
1878
1916
  };
1879
1917
  return (() => {
1880
- var _el$184 = web.getNextElement(_tmpl$51), _el$201 = _el$184.firstChild, [_el$202, _co$42] = web.getNextMarker(_el$201.nextSibling), _el$185 = _el$202.nextSibling, _el$186 = _el$185.firstChild, _el$187 = _el$186.nextSibling, _el$188 = _el$187.firstChild, _el$189 = _el$188.nextSibling, _el$195 = _el$189.nextSibling, [_el$196, _co$39] = web.getNextMarker(_el$195.nextSibling), _el$197 = _el$196.nextSibling, [_el$198, _co$40] = web.getNextMarker(_el$197.nextSibling), _el$199 = _el$198.nextSibling, [_el$200, _co$41] = web.getNextMarker(_el$199.nextSibling);
1881
- web.insert(_el$184, web.createComponent(CopyButton, {
1918
+ var _el$186 = web.getNextElement(_tmpl$51), _el$203 = _el$186.firstChild, [_el$204, _co$43] = web.getNextMarker(_el$203.nextSibling), _el$187 = _el$204.nextSibling, _el$188 = _el$187.firstChild, _el$189 = _el$188.nextSibling, _el$190 = _el$189.firstChild, _el$191 = _el$190.nextSibling, _el$197 = _el$191.nextSibling, [_el$198, _co$40] = web.getNextMarker(_el$197.nextSibling), _el$199 = _el$198.nextSibling, [_el$200, _co$41] = web.getNextMarker(_el$199.nextSibling), _el$201 = _el$200.nextSibling, [_el$202, _co$42] = web.getNextMarker(_el$201.nextSibling);
1919
+ web.insert(_el$186, web.createComponent(CopyButton, {
1882
1920
  getText: getErrorText,
1883
1921
  get title() {
1884
1922
  return strings.copyErrorDetails;
1885
1923
  },
1886
1924
  position: "top-right"
1887
- }), _el$202, _co$42);
1888
- web.insert(_el$188, () => formatString.formatMCPUIString(strings.toolErrorTitle, {
1925
+ }), _el$204, _co$43);
1926
+ web.insert(_el$190, () => formatString.formatMCPUIString(strings.toolErrorTitle, {
1889
1927
  tool: props.error.tool || strings.errorUnknownToolName
1890
1928
  }));
1891
- web.insert(_el$189, () => props.error.message || strings.errorToolExecution);
1892
- web.insert(_el$187, web.createComponent(solidJs.Show, {
1929
+ web.insert(_el$191, () => props.error.message || strings.errorToolExecution);
1930
+ web.insert(_el$189, web.createComponent(solidJs.Show, {
1893
1931
  get when() {
1894
1932
  return props.error.type;
1895
1933
  },
1896
1934
  get children() {
1897
- var _el$190 = web.getNextElement(_tmpl$48);
1898
- web.insert(_el$190, () => formatString.formatMCPUIString(strings.errorTypeLabel, {
1935
+ var _el$192 = web.getNextElement(_tmpl$48);
1936
+ web.insert(_el$192, () => formatString.formatMCPUIString(strings.errorTypeLabel, {
1899
1937
  type: props.error.type
1900
1938
  }));
1901
- return _el$190;
1939
+ return _el$192;
1902
1940
  }
1903
- }), _el$196, _co$39);
1904
- web.insert(_el$187, web.createComponent(solidJs.Show, {
1941
+ }), _el$198, _co$40);
1942
+ web.insert(_el$189, web.createComponent(solidJs.Show, {
1905
1943
  get when() {
1906
1944
  var _a;
1907
1945
  return (_a = props.error.suggestions) == null ? void 0 : _a.length;
1908
1946
  },
1909
1947
  get children() {
1910
- var _el$191 = web.getNextElement(_tmpl$49), _el$192 = _el$191.firstChild, _el$193 = _el$192.nextSibling;
1911
- web.insert(_el$192, () => strings.errorSuggestions);
1912
- web.insert(_el$193, web.createComponent(solidJs.For, {
1948
+ var _el$193 = web.getNextElement(_tmpl$49), _el$194 = _el$193.firstChild, _el$195 = _el$194.nextSibling;
1949
+ web.insert(_el$194, () => strings.errorSuggestions);
1950
+ web.insert(_el$195, web.createComponent(solidJs.For, {
1913
1951
  get each() {
1914
1952
  return props.error.suggestions;
1915
1953
  },
1916
1954
  children: (suggestion) => (() => {
1917
- var _el$203 = web.getNextElement(_tmpl$52);
1918
- web.insert(_el$203, suggestion);
1919
- return _el$203;
1955
+ var _el$205 = web.getNextElement(_tmpl$52);
1956
+ web.insert(_el$205, suggestion);
1957
+ return _el$205;
1920
1958
  })()
1921
1959
  }));
1922
- return _el$191;
1960
+ return _el$193;
1923
1961
  }
1924
- }), _el$198, _co$40);
1925
- web.insert(_el$187, web.createComponent(solidJs.Show, {
1962
+ }), _el$200, _co$41);
1963
+ web.insert(_el$189, web.createComponent(solidJs.Show, {
1926
1964
  get when() {
1927
1965
  return web.memo(() => !!mounted())() && props.error.timestamp;
1928
1966
  },
1929
1967
  get children() {
1930
- var _el$194 = web.getNextElement(_tmpl$50);
1931
- web.insert(_el$194, () => new Date(props.error.timestamp).toLocaleString(strings.locale));
1932
- return _el$194;
1968
+ var _el$196 = web.getNextElement(_tmpl$50);
1969
+ web.insert(_el$196, () => new Date(props.error.timestamp).toLocaleString(strings.locale));
1970
+ return _el$196;
1933
1971
  }
1934
- }), _el$200, _co$41);
1935
- return _el$184;
1972
+ }), _el$202, _co$42);
1973
+ return _el$186;
1936
1974
  })();
1937
1975
  }
1938
1976
  function isErrorResponse(content) {
@@ -1956,23 +1994,23 @@ function UIResourceHtmlRenderer(props) {
1956
1994
  return ((_a = props.resource.metadata) == null ? void 0 : _a.title) || ((_b = props.resource.uri) == null ? void 0 : _b.replace("ui://deposium/", "")) || strings.resourceTitle;
1957
1995
  };
1958
1996
  return (() => {
1959
- var _el$204 = web.getNextElement(_tmpl$54), _el$207 = _el$204.firstChild, [_el$208, _co$43] = web.getNextMarker(_el$207.nextSibling), _el$209 = _el$208.nextSibling, [_el$210, _co$44] = web.getNextMarker(_el$209.nextSibling);
1960
- web.insert(_el$204, web.createComponent(solidJs.Show, {
1997
+ var _el$206 = web.getNextElement(_tmpl$54), _el$209 = _el$206.firstChild, [_el$210, _co$44] = web.getNextMarker(_el$209.nextSibling), _el$211 = _el$210.nextSibling, [_el$212, _co$45] = web.getNextMarker(_el$211.nextSibling);
1998
+ web.insert(_el$206, web.createComponent(solidJs.Show, {
1961
1999
  get when() {
1962
2000
  var _a;
1963
2001
  return ((_a = props.resource.metadata) == null ? void 0 : _a.title) || props.resource.uri;
1964
2002
  },
1965
2003
  get children() {
1966
- var _el$205 = web.getNextElement(_tmpl$53), _el$206 = _el$205.firstChild;
1967
- web.insert(_el$206, resourceTitle);
1968
- return _el$205;
2004
+ var _el$207 = web.getNextElement(_tmpl$53), _el$208 = _el$207.firstChild;
2005
+ web.insert(_el$208, resourceTitle);
2006
+ return _el$207;
1969
2007
  }
1970
- }), _el$208, _co$43);
1971
- web.insert(_el$204, web.createComponent(SafeHtml.SafeHtml, {
2008
+ }), _el$210, _co$44);
2009
+ web.insert(_el$206, web.createComponent(SafeHtml.SafeHtml, {
1972
2010
  "class": "p-4 prose prose-sm dark:prose-invert max-w-none",
1973
2011
  html: htmlContent
1974
- }), _el$210, _co$44);
1975
- return _el$204;
2012
+ }), _el$212, _co$45);
2013
+ return _el$206;
1976
2014
  })();
1977
2015
  }
1978
2016
  const UIResourceRenderer = (props) => {
@@ -2078,8 +2116,8 @@ const UIResourceRenderer = (props) => {
2078
2116
  return web.createComponent(RenderContext.RenderProvider, {
2079
2117
  renderComponent,
2080
2118
  get children() {
2081
- var _el$211 = web.getNextElement(_tmpl$55), _el$212 = _el$211.firstChild, _el$213 = _el$212.nextSibling, [_el$214, _co$45] = web.getNextMarker(_el$213.nextSibling);
2082
- web.spread(_el$211, web.mergeProps({
2119
+ var _el$213 = web.getNextElement(_tmpl$55), _el$214 = _el$213.firstChild, _el$215 = _el$214.nextSibling, [_el$216, _co$46] = web.getNextMarker(_el$215.nextSibling);
2120
+ web.spread(_el$213, web.mergeProps({
2083
2121
  get ["class"]() {
2084
2122
  return `w-full ${props.class || ""}`;
2085
2123
  }
@@ -2089,14 +2127,14 @@ const UIResourceRenderer = (props) => {
2089
2127
  "data-mcp-ui-component-id": outerKey()
2090
2128
  }), false, true);
2091
2129
  var _ref$3 = responsiveGrid.ref;
2092
- typeof _ref$3 === "function" ? web.use(_ref$3, _el$212) : responsiveGrid.ref = _el$212;
2093
- web.insert(_el$212, web.createComponent(solidJs.For, {
2130
+ typeof _ref$3 === "function" ? web.use(_ref$3, _el$214) : responsiveGrid.ref = _el$214;
2131
+ web.insert(_el$214, web.createComponent(solidJs.For, {
2094
2132
  get each() {
2095
2133
  return layout().components;
2096
2134
  },
2097
2135
  children: (component) => (() => {
2098
- var _el$215 = web.getNextElement(_tmpl$56);
2099
- web.insert(_el$215, web.createComponent(ComponentRenderer, {
2136
+ var _el$217 = web.getNextElement(_tmpl$56);
2137
+ web.insert(_el$217, web.createComponent(ComponentRenderer, {
2100
2138
  component,
2101
2139
  get onError() {
2102
2140
  return props.onError;
@@ -2113,17 +2151,17 @@ const UIResourceRenderer = (props) => {
2113
2151
  }));
2114
2152
  web.effect((_p$) => {
2115
2153
  var _v$48 = getGridStyleString(component), _v$49 = stableKey.getUiResourceStableKey(component);
2116
- _p$.e = web.style(_el$215, _v$48, _p$.e);
2117
- _v$49 !== _p$.t && web.setAttribute(_el$215, "data-mcp-ui-component-id", _p$.t = _v$49);
2154
+ _p$.e = web.style(_el$217, _v$48, _p$.e);
2155
+ _v$49 !== _p$.t && web.setAttribute(_el$217, "data-mcp-ui-component-id", _p$.t = _v$49);
2118
2156
  return _p$;
2119
2157
  }, {
2120
2158
  e: void 0,
2121
2159
  t: void 0
2122
2160
  });
2123
- return _el$215;
2161
+ return _el$217;
2124
2162
  })()
2125
2163
  }));
2126
- web.insert(_el$211, web.createComponent(solidJs.Show, {
2164
+ web.insert(_el$213, web.createComponent(solidJs.Show, {
2127
2165
  get when() {
2128
2166
  return shouldShowAutoFooter();
2129
2167
  },
@@ -2134,18 +2172,18 @@ const UIResourceRenderer = (props) => {
2134
2172
  }
2135
2173
  });
2136
2174
  }
2137
- }), _el$214, _co$45);
2175
+ }), _el$216, _co$46);
2138
2176
  web.effect((_p$) => {
2139
2177
  var _v$46 = gridContainerStyle(), _v$47 = responsiveGrid.stacked();
2140
- _p$.e = web.style(_el$212, _v$46, _p$.e);
2141
- _v$47 !== _p$.t && web.setAttribute(_el$212, "data-mcp-ui-stacked", _p$.t = _v$47);
2178
+ _p$.e = web.style(_el$214, _v$46, _p$.e);
2179
+ _v$47 !== _p$.t && web.setAttribute(_el$214, "data-mcp-ui-stacked", _p$.t = _v$47);
2142
2180
  return _p$;
2143
2181
  }, {
2144
2182
  e: void 0,
2145
2183
  t: void 0
2146
2184
  });
2147
2185
  web.runHydrationEvents();
2148
- return _el$211;
2186
+ return _el$213;
2149
2187
  }
2150
2188
  });
2151
2189
  };