@seed-ship/mcp-ui-solid 6.19.1 → 6.20.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 (257) hide show
  1. package/CHANGELOG.md +519 -0
  2. package/README.md +791 -1
  3. package/dist/adapters/connector.cjs +15 -4
  4. package/dist/adapters/connector.cjs.map +1 -1
  5. package/dist/adapters/connector.d.ts +38 -0
  6. package/dist/adapters/connector.d.ts.map +1 -1
  7. package/dist/adapters/connector.js +15 -4
  8. package/dist/adapters/connector.js.map +1 -1
  9. package/dist/adapters/index.d.ts +4 -3
  10. package/dist/adapters/index.d.ts.map +1 -1
  11. package/dist/adapters/macro-run.cjs +25 -13
  12. package/dist/adapters/macro-run.cjs.map +1 -1
  13. package/dist/adapters/macro-run.d.ts +37 -2
  14. package/dist/adapters/macro-run.d.ts.map +1 -1
  15. package/dist/adapters/macro-run.js +25 -13
  16. package/dist/adapters/macro-run.js.map +1 -1
  17. package/dist/adapters.cjs +2 -0
  18. package/dist/adapters.cjs.map +1 -1
  19. package/dist/adapters.js +4 -2
  20. package/dist/components/ActionGroupRenderer.cjs +3 -1
  21. package/dist/components/ActionGroupRenderer.cjs.map +1 -1
  22. package/dist/components/ActionGroupRenderer.d.ts.map +1 -1
  23. package/dist/components/ActionGroupRenderer.js +3 -1
  24. package/dist/components/ActionGroupRenderer.js.map +1 -1
  25. package/dist/components/AgentCard.cjs +11 -8
  26. package/dist/components/AgentCard.cjs.map +1 -1
  27. package/dist/components/AgentCard.d.ts.map +1 -1
  28. package/dist/components/AgentCard.js +11 -8
  29. package/dist/components/AgentCard.js.map +1 -1
  30. package/dist/components/AgentHandoff.cjs +6 -1
  31. package/dist/components/AgentHandoff.cjs.map +1 -1
  32. package/dist/components/AgentHandoff.d.ts.map +1 -1
  33. package/dist/components/AgentHandoff.js +6 -1
  34. package/dist/components/AgentHandoff.js.map +1 -1
  35. package/dist/components/ArtifactRenderer.cjs +25 -6
  36. package/dist/components/ArtifactRenderer.cjs.map +1 -1
  37. package/dist/components/ArtifactRenderer.d.ts.map +1 -1
  38. package/dist/components/ArtifactRenderer.js +25 -6
  39. package/dist/components/ArtifactRenderer.js.map +1 -1
  40. package/dist/components/AutocompleteDropdown.cjs +30 -24
  41. package/dist/components/AutocompleteDropdown.cjs.map +1 -1
  42. package/dist/components/AutocompleteDropdown.d.ts.map +1 -1
  43. package/dist/components/AutocompleteDropdown.js +30 -24
  44. package/dist/components/AutocompleteDropdown.js.map +1 -1
  45. package/dist/components/AutocompleteFormField.cjs +3 -1
  46. package/dist/components/AutocompleteFormField.cjs.map +1 -1
  47. package/dist/components/AutocompleteFormField.d.ts.map +1 -1
  48. package/dist/components/AutocompleteFormField.js +4 -2
  49. package/dist/components/AutocompleteFormField.js.map +1 -1
  50. package/dist/components/BriefingDiff.cjs +45 -39
  51. package/dist/components/BriefingDiff.cjs.map +1 -1
  52. package/dist/components/BriefingDiff.d.ts.map +1 -1
  53. package/dist/components/BriefingDiff.js +45 -39
  54. package/dist/components/BriefingDiff.js.map +1 -1
  55. package/dist/components/CarouselRenderer.cjs +8 -2
  56. package/dist/components/CarouselRenderer.cjs.map +1 -1
  57. package/dist/components/CarouselRenderer.d.ts.map +1 -1
  58. package/dist/components/CarouselRenderer.js +8 -2
  59. package/dist/components/CarouselRenderer.js.map +1 -1
  60. package/dist/components/ChartJSRenderer.cjs +60 -36
  61. package/dist/components/ChartJSRenderer.cjs.map +1 -1
  62. package/dist/components/ChartJSRenderer.d.ts.map +1 -1
  63. package/dist/components/ChartJSRenderer.js +61 -37
  64. package/dist/components/ChartJSRenderer.js.map +1 -1
  65. package/dist/components/ChatPrompt.cjs +15 -9
  66. package/dist/components/ChatPrompt.cjs.map +1 -1
  67. package/dist/components/ChatPrompt.d.ts.map +1 -1
  68. package/dist/components/ChatPrompt.js +15 -9
  69. package/dist/components/ChatPrompt.js.map +1 -1
  70. package/dist/components/CodeBlockRenderer.cjs +34 -16
  71. package/dist/components/CodeBlockRenderer.cjs.map +1 -1
  72. package/dist/components/CodeBlockRenderer.d.ts.map +1 -1
  73. package/dist/components/CodeBlockRenderer.js +34 -16
  74. package/dist/components/CodeBlockRenderer.js.map +1 -1
  75. package/dist/components/DataPreviewSection.cjs +91 -44
  76. package/dist/components/DataPreviewSection.cjs.map +1 -1
  77. package/dist/components/DataPreviewSection.d.ts.map +1 -1
  78. package/dist/components/DataPreviewSection.js +92 -45
  79. package/dist/components/DataPreviewSection.js.map +1 -1
  80. package/dist/components/DegradedFallback.cjs +20 -16
  81. package/dist/components/DegradedFallback.cjs.map +1 -1
  82. package/dist/components/DegradedFallback.d.ts.map +1 -1
  83. package/dist/components/DegradedFallback.js +20 -16
  84. package/dist/components/DegradedFallback.js.map +1 -1
  85. package/dist/components/FooterRenderer.cjs +21 -17
  86. package/dist/components/FooterRenderer.cjs.map +1 -1
  87. package/dist/components/FooterRenderer.d.ts.map +1 -1
  88. package/dist/components/FooterRenderer.js +21 -17
  89. package/dist/components/FooterRenderer.js.map +1 -1
  90. package/dist/components/FormFieldRenderer.cjs +116 -93
  91. package/dist/components/FormFieldRenderer.cjs.map +1 -1
  92. package/dist/components/FormFieldRenderer.d.ts.map +1 -1
  93. package/dist/components/FormFieldRenderer.js +116 -93
  94. package/dist/components/FormFieldRenderer.js.map +1 -1
  95. package/dist/components/FormRenderer.cjs +55 -31
  96. package/dist/components/FormRenderer.cjs.map +1 -1
  97. package/dist/components/FormRenderer.d.ts.map +1 -1
  98. package/dist/components/FormRenderer.js +55 -31
  99. package/dist/components/FormRenderer.js.map +1 -1
  100. package/dist/components/GenerativeUIErrorBoundary.cjs +20 -15
  101. package/dist/components/GenerativeUIErrorBoundary.cjs.map +1 -1
  102. package/dist/components/GenerativeUIErrorBoundary.d.ts.map +1 -1
  103. package/dist/components/GenerativeUIErrorBoundary.js +20 -15
  104. package/dist/components/GenerativeUIErrorBoundary.js.map +1 -1
  105. package/dist/components/GraphRenderer.cjs +56 -33
  106. package/dist/components/GraphRenderer.cjs.map +1 -1
  107. package/dist/components/GraphRenderer.d.ts.map +1 -1
  108. package/dist/components/GraphRenderer.js +56 -33
  109. package/dist/components/GraphRenderer.js.map +1 -1
  110. package/dist/components/ImageGalleryRenderer.cjs +13 -4
  111. package/dist/components/ImageGalleryRenderer.cjs.map +1 -1
  112. package/dist/components/ImageGalleryRenderer.d.ts.map +1 -1
  113. package/dist/components/ImageGalleryRenderer.js +13 -4
  114. package/dist/components/ImageGalleryRenderer.js.map +1 -1
  115. package/dist/components/LightboxOverlay.cjs +16 -8
  116. package/dist/components/LightboxOverlay.cjs.map +1 -1
  117. package/dist/components/LightboxOverlay.d.ts.map +1 -1
  118. package/dist/components/LightboxOverlay.js +17 -9
  119. package/dist/components/LightboxOverlay.js.map +1 -1
  120. package/dist/components/MapRenderer.cjs +59 -29
  121. package/dist/components/MapRenderer.cjs.map +1 -1
  122. package/dist/components/MapRenderer.d.ts +10 -2
  123. package/dist/components/MapRenderer.d.ts.map +1 -1
  124. package/dist/components/MapRenderer.js +60 -30
  125. package/dist/components/MapRenderer.js.map +1 -1
  126. package/dist/components/ModalRenderer.cjs +4 -1
  127. package/dist/components/ModalRenderer.cjs.map +1 -1
  128. package/dist/components/ModalRenderer.d.ts.map +1 -1
  129. package/dist/components/ModalRenderer.js +5 -2
  130. package/dist/components/ModalRenderer.js.map +1 -1
  131. package/dist/components/ScratchpadPanel.cjs +578 -535
  132. package/dist/components/ScratchpadPanel.cjs.map +1 -1
  133. package/dist/components/ScratchpadPanel.d.ts.map +1 -1
  134. package/dist/components/ScratchpadPanel.js +578 -535
  135. package/dist/components/ScratchpadPanel.js.map +1 -1
  136. package/dist/components/StreamingUIRenderer.cjs +92 -28
  137. package/dist/components/StreamingUIRenderer.cjs.map +1 -1
  138. package/dist/components/StreamingUIRenderer.d.ts.map +1 -1
  139. package/dist/components/StreamingUIRenderer.js +92 -28
  140. package/dist/components/StreamingUIRenderer.js.map +1 -1
  141. package/dist/components/UIResourceRenderer.cjs +456 -363
  142. package/dist/components/UIResourceRenderer.cjs.map +1 -1
  143. package/dist/components/UIResourceRenderer.d.ts +21 -0
  144. package/dist/components/UIResourceRenderer.d.ts.map +1 -1
  145. package/dist/components/UIResourceRenderer.js +458 -365
  146. package/dist/components/UIResourceRenderer.js.map +1 -1
  147. package/dist/components/VerifiedText.cjs +39 -20
  148. package/dist/components/VerifiedText.cjs.map +1 -1
  149. package/dist/components/VerifiedText.d.ts +2 -1
  150. package/dist/components/VerifiedText.d.ts.map +1 -1
  151. package/dist/components/VerifiedText.js +39 -20
  152. package/dist/components/VerifiedText.js.map +1 -1
  153. package/dist/components/VideoRenderer.cjs +10 -5
  154. package/dist/components/VideoRenderer.cjs.map +1 -1
  155. package/dist/components/VideoRenderer.d.ts.map +1 -1
  156. package/dist/components/VideoRenderer.js +10 -5
  157. package/dist/components/VideoRenderer.js.map +1 -1
  158. package/dist/components/chart-data-table.cjs +38 -17
  159. package/dist/components/chart-data-table.cjs.map +1 -1
  160. package/dist/components/chart-data-table.d.ts +30 -1
  161. package/dist/components/chart-data-table.d.ts.map +1 -1
  162. package/dist/components/chart-data-table.js +38 -17
  163. package/dist/components/chart-data-table.js.map +1 -1
  164. package/dist/context/MCPActionContext.cjs +3 -1
  165. package/dist/context/MCPActionContext.cjs.map +1 -1
  166. package/dist/context/MCPActionContext.d.ts.map +1 -1
  167. package/dist/context/MCPActionContext.js +3 -1
  168. package/dist/context/MCPActionContext.js.map +1 -1
  169. package/dist/context/MCPUIStringsContext.cjs +285 -2
  170. package/dist/context/MCPUIStringsContext.cjs.map +1 -1
  171. package/dist/context/MCPUIStringsContext.d.ts +600 -3
  172. package/dist/context/MCPUIStringsContext.d.ts.map +1 -1
  173. package/dist/context/MCPUIStringsContext.js +285 -2
  174. package/dist/context/MCPUIStringsContext.js.map +1 -1
  175. package/dist/hooks/index.d.ts +2 -2
  176. package/dist/hooks/index.d.ts.map +1 -1
  177. package/dist/hooks/useStreamingUI.cjs +28 -10
  178. package/dist/hooks/useStreamingUI.cjs.map +1 -1
  179. package/dist/hooks/useStreamingUI.d.ts +37 -0
  180. package/dist/hooks/useStreamingUI.d.ts.map +1 -1
  181. package/dist/hooks/useStreamingUI.js +28 -10
  182. package/dist/hooks/useStreamingUI.js.map +1 -1
  183. package/dist/hooks.cjs +1 -0
  184. package/dist/hooks.cjs.map +1 -1
  185. package/dist/hooks.js +2 -1
  186. package/dist/index.cjs +23 -8
  187. package/dist/index.cjs.map +1 -1
  188. package/dist/index.d.cts +9 -3
  189. package/dist/index.d.ts +9 -3
  190. package/dist/index.d.ts.map +1 -1
  191. package/dist/index.js +18 -3
  192. package/dist/index.js.map +1 -1
  193. package/dist/services/validation.cjs +41 -16
  194. package/dist/services/validation.cjs.map +1 -1
  195. package/dist/services/validation.d.ts +47 -2
  196. package/dist/services/validation.d.ts.map +1 -1
  197. package/dist/services/validation.js +41 -16
  198. package/dist/services/validation.js.map +1 -1
  199. package/dist/utils/degraded-projections.cjs +37 -12
  200. package/dist/utils/degraded-projections.cjs.map +1 -1
  201. package/dist/utils/degraded-projections.d.ts +39 -3
  202. package/dist/utils/degraded-projections.d.ts.map +1 -1
  203. package/dist/utils/degraded-projections.js +37 -12
  204. package/dist/utils/degraded-projections.js.map +1 -1
  205. package/dist/utils/format-string.cjs +10 -0
  206. package/dist/utils/format-string.cjs.map +1 -0
  207. package/dist/utils/format-string.d.ts +26 -0
  208. package/dist/utils/format-string.d.ts.map +1 -0
  209. package/dist/utils/format-string.js +10 -0
  210. package/dist/utils/format-string.js.map +1 -0
  211. package/dist/validation.cjs +3 -0
  212. package/dist/validation.cjs.map +1 -1
  213. package/dist/validation.d.cts +2 -1
  214. package/dist/validation.d.ts +2 -1
  215. package/dist/validation.d.ts.map +1 -1
  216. package/dist/validation.js +4 -1
  217. package/package.json +1 -1
  218. package/src/adapters/connector.ts +58 -4
  219. package/src/adapters/index.ts +12 -2
  220. package/src/adapters/macro-run.ts +71 -11
  221. package/src/components/ActionGroupRenderer.tsx +3 -1
  222. package/src/components/AgentCard.tsx +27 -9
  223. package/src/components/AgentHandoff.tsx +4 -1
  224. package/src/components/ArtifactRenderer.tsx +17 -5
  225. package/src/components/AutocompleteDropdown.tsx +8 -6
  226. package/src/components/AutocompleteFormField.tsx +5 -1
  227. package/src/components/BriefingDiff.tsx +11 -3
  228. package/src/components/CarouselRenderer.tsx +4 -2
  229. package/src/components/ChartJSRenderer.tsx +18 -9
  230. package/src/components/ChatPrompt.tsx +13 -8
  231. package/src/components/CodeBlockRenderer.tsx +12 -10
  232. package/src/components/DataPreviewSection.tsx +92 -26
  233. package/src/components/DegradedFallback.tsx +4 -2
  234. package/src/components/FooterRenderer.tsx +3 -1
  235. package/src/components/FormFieldRenderer.tsx +34 -19
  236. package/src/components/FormRenderer.tsx +38 -10
  237. package/src/components/GenerativeUIErrorBoundary.tsx +8 -3
  238. package/src/components/GraphRenderer.tsx +31 -16
  239. package/src/components/ImageGalleryRenderer.tsx +8 -4
  240. package/src/components/LightboxOverlay.tsx +6 -4
  241. package/src/components/MapRenderer.tsx +57 -20
  242. package/src/components/ModalRenderer.tsx +3 -1
  243. package/src/components/ScratchpadPanel.tsx +95 -44
  244. package/src/components/StreamingUIRenderer.tsx +41 -11
  245. package/src/components/UIResourceRenderer.tsx +145 -63
  246. package/src/components/VerifiedText.tsx +19 -9
  247. package/src/components/VideoRenderer.tsx +6 -4
  248. package/src/components/chart-data-table.ts +68 -14
  249. package/src/context/MCPActionContext.tsx +4 -1
  250. package/src/context/MCPUIStringsContext.tsx +1004 -1
  251. package/src/hooks/index.ts +2 -1
  252. package/src/hooks/useStreamingUI.ts +64 -10
  253. package/src/index.ts +23 -0
  254. package/src/services/validation.ts +93 -16
  255. package/src/utils/degraded-projections.ts +75 -12
  256. package/src/utils/format-string.ts +33 -0
  257. package/src/validation.ts +5 -0
@@ -3,23 +3,26 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const web = require("solid-js/web");
4
4
  const solidJs = require("solid-js");
5
5
  const useConditionalField = require("../hooks/useConditionalField.cjs");
6
- var _tmpl$ = /* @__PURE__ */ web.template(`<span class=mr-1>`), _tmpl$2 = /* @__PURE__ */ web.template(`<span class="text-red-500 ml-1"aria-hidden=true>*`), _tmpl$3 = /* @__PURE__ */ web.template(`<span class="ml-2 text-[10px] font-medium bg-orange-100 dark:bg-orange-900/30 text-orange-600 dark:text-orange-400 px-1.5 py-0.5 rounded">Not supported`), _tmpl$4 = /* @__PURE__ */ web.template(`<span class="ml-2 text-[10px] font-medium bg-yellow-100 dark:bg-yellow-900/30 text-yellow-600 dark:text-yellow-400 px-1.5 py-0.5 rounded">?`), _tmpl$5 = /* @__PURE__ */ web.template(`<label><!$><!/><!$><!/><!$><!/><!$><!/><!$><!/>`), _tmpl$6 = /* @__PURE__ */ web.template(`<input>`), _tmpl$7 = /* @__PURE__ */ web.template(`<input type=number>`), _tmpl$8 = /* @__PURE__ */ web.template(`<input type=date>`), _tmpl$9 = /* @__PURE__ */ web.template(`<textarea>`), _tmpl$0 = /* @__PURE__ */ web.template(`<option value disabled>`), _tmpl$1 = /* @__PURE__ */ web.template(`<select><!$><!/><!$><!/>`), _tmpl$10 = /* @__PURE__ */ web.template(`<label class="flex items-center gap-2 cursor-pointer"><input type=checkbox class="w-4 h-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700"><span class="text-sm text-gray-700 dark:text-gray-300"><!$><!/><!$><!/>`), _tmpl$11 = /* @__PURE__ */ web.template(`<div class=space-y-2 role=radiogroup>`), _tmpl$12 = /* @__PURE__ */ web.template(`<div class="flex items-center gap-3"><input type=range class="flex-1 h-2 bg-gray-200 dark:bg-gray-600 rounded-lg appearance-none cursor-pointer accent-blue-600"><span class="text-sm font-mono text-gray-700 dark:text-gray-300 min-w-[3rem] text-right">`), _tmpl$13 = /* @__PURE__ */ web.template(`<label class="flex items-center gap-2 cursor-pointer"><button type=button role=switch><span></span></button><span class="text-sm text-gray-700 dark:text-gray-300">`), _tmpl$14 = /* @__PURE__ */ web.template(`<fieldset class="border border-gray-200 dark:border-gray-600 rounded-lg p-3"><legend class="text-xs font-medium text-gray-500 dark:text-gray-400 px-1"></legend><p class="text-xs text-gray-400">`), _tmpl$15 = /* @__PURE__ */ web.template(`<input type=text>`), _tmpl$16 = /* @__PURE__ */ web.template(`<p class="text-xs text-amber-500 mt-0.5">Unknown field type: <!$><!/>`), _tmpl$17 = /* @__PURE__ */ web.template(`<p>`), _tmpl$18 = /* @__PURE__ */ web.template(`<p class="text-xs text-gray-500 dark:text-gray-400">`), _tmpl$19 = /* @__PURE__ */ web.template(`<p role=alert class="text-xs text-red-600 dark:text-red-400">`), _tmpl$20 = /* @__PURE__ */ web.template(`<div class=space-y-1><!$><!/><!$><!/><!$><!/><!$><!/><!$><!/><!$><!/>`), _tmpl$21 = /* @__PURE__ */ web.template(`<option>`), _tmpl$22 = /* @__PURE__ */ web.template(`<label class="flex items-center gap-2 cursor-pointer"><input type=radio class="w-4 h-4 border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600"><span class="text-sm text-gray-700 dark:text-gray-300">`), _tmpl$23 = /* @__PURE__ */ web.template(`<div class="flex flex-wrap gap-1 mb-1">`), _tmpl$24 = /* @__PURE__ */ web.template(`<div class="p-2 border-b border-gray-200 dark:border-gray-600 flex-shrink-0"><input type=text placeholder=Filter... class="w-full px-2 py-1 text-sm border border-gray-200 dark:border-gray-600 rounded bg-white dark:bg-gray-700 text-gray-900 dark:text-white focus:border-blue-400 outline-none"autofocus>`), _tmpl$25 = /* @__PURE__ */ web.template(`<p class="px-3 py-2 text-sm text-gray-400">No matches`), _tmpl$26 = /* @__PURE__ */ web.template(`<div class="absolute z-50 mt-1 w-full bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-md shadow-lg"style=max-height:320px;display:flex;flex-direction:column><!$><!/><div style=overflow-y:auto;flex:1;-webkit-overflow-scrolling:touch><!$><!/><!$><!/>`), _tmpl$27 = /* @__PURE__ */ web.template(`<div class=relative><!$><!/><button type=button><span></span><svg class="w-4 h-4 text-gray-400"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M19 9l-7 7-7-7"></path></svg></button><!$><!/>`), _tmpl$28 = /* @__PURE__ */ web.template(`<span class="inline-flex items-center gap-1 px-2 py-0.5 text-xs font-medium bg-blue-100 dark:bg-blue-900/30 text-blue-700 dark:text-blue-300 rounded-full"><!$><!/><button type=button class="hover:text-blue-900 dark:hover:text-blue-100">&times;`), _tmpl$29 = /* @__PURE__ */ web.template(`<label class="flex items-center gap-2 px-3 py-2 hover:bg-gray-100 dark:hover:bg-gray-700 cursor-pointer text-sm"><input type=checkbox class="w-4 h-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600"><span class="text-gray-900 dark:text-white">`), _tmpl$30 = /* @__PURE__ */ web.template(`<div class="flex items-center gap-1 mb-1 text-xs text-gray-400"><span class="animate-spin h-3 w-3 border border-gray-400 border-t-transparent rounded-full"></span>Resolving...`), _tmpl$31 = /* @__PURE__ */ web.template(`<div class="absolute z-20 mt-1 w-full bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-md shadow-lg max-h-72 overflow-y-auto">`), _tmpl$32 = /* @__PURE__ */ web.template(`<div class=relative><!$><!/><!$><!/><input type=text autocomplete=off><!$><!/>`), _tmpl$33 = /* @__PURE__ */ web.template(`<span class="ml-2 text-xs">&#10003;`), _tmpl$34 = /* @__PURE__ */ web.template(`<button type=button><!$><!/><!$><!/>`), _tmpl$35 = /* @__PURE__ */ web.template(`<div><!$><!/><input type=text>`);
6
+ const MCPUIStringsContext = require("../context/MCPUIStringsContext.cjs");
7
+ const formatString = require("../utils/format-string.cjs");
8
+ var _tmpl$ = /* @__PURE__ */ web.template(`<span class=mr-1>`), _tmpl$2 = /* @__PURE__ */ web.template(`<span class="text-red-500 ml-1"aria-hidden=true>*`), _tmpl$3 = /* @__PURE__ */ web.template(`<span class="ml-2 text-[10px] font-medium bg-orange-100 dark:bg-orange-900/30 text-orange-600 dark:text-orange-400 px-1.5 py-0.5 rounded">`), _tmpl$4 = /* @__PURE__ */ web.template(`<span class="ml-2 text-[10px] font-medium bg-yellow-100 dark:bg-yellow-900/30 text-yellow-600 dark:text-yellow-400 px-1.5 py-0.5 rounded">?`), _tmpl$5 = /* @__PURE__ */ web.template(`<label><!$><!/><!$><!/><!$><!/><!$><!/><!$><!/>`), _tmpl$6 = /* @__PURE__ */ web.template(`<input>`), _tmpl$7 = /* @__PURE__ */ web.template(`<input type=number>`), _tmpl$8 = /* @__PURE__ */ web.template(`<input type=date>`), _tmpl$9 = /* @__PURE__ */ web.template(`<textarea>`), _tmpl$0 = /* @__PURE__ */ web.template(`<option value disabled>`), _tmpl$1 = /* @__PURE__ */ web.template(`<select><!$><!/><!$><!/>`), _tmpl$10 = /* @__PURE__ */ web.template(`<label class="flex items-center gap-2 cursor-pointer"><input type=checkbox class="w-4 h-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700"><span class="text-sm text-gray-700 dark:text-gray-300"><!$><!/><!$><!/>`), _tmpl$11 = /* @__PURE__ */ web.template(`<div class=space-y-2 role=radiogroup>`), _tmpl$12 = /* @__PURE__ */ web.template(`<div class="flex items-center gap-3"><input type=range class="flex-1 h-2 bg-gray-200 dark:bg-gray-600 rounded-lg appearance-none cursor-pointer accent-blue-600"><span class="text-sm font-mono text-gray-700 dark:text-gray-300 min-w-[3rem] text-right">`), _tmpl$13 = /* @__PURE__ */ web.template(`<label class="flex items-center gap-2 cursor-pointer"><button type=button role=switch><span></span></button><span class="text-sm text-gray-700 dark:text-gray-300">`), _tmpl$14 = /* @__PURE__ */ web.template(`<fieldset class="border border-gray-200 dark:border-gray-600 rounded-lg p-3"><legend class="text-xs font-medium text-gray-500 dark:text-gray-400 px-1"></legend><p class="text-xs text-gray-400">`), _tmpl$15 = /* @__PURE__ */ web.template(`<input type=text>`), _tmpl$16 = /* @__PURE__ */ web.template(`<p class="text-xs text-amber-500 mt-0.5">`), _tmpl$17 = /* @__PURE__ */ web.template(`<p>`), _tmpl$18 = /* @__PURE__ */ web.template(`<p class="text-xs text-gray-500 dark:text-gray-400">`), _tmpl$19 = /* @__PURE__ */ web.template(`<p role=alert class="text-xs text-red-600 dark:text-red-400">`), _tmpl$20 = /* @__PURE__ */ web.template(`<div class=space-y-1><!$><!/><!$><!/><!$><!/><!$><!/><!$><!/><!$><!/>`), _tmpl$21 = /* @__PURE__ */ web.template(`<option>`), _tmpl$22 = /* @__PURE__ */ web.template(`<label class="flex items-center gap-2 cursor-pointer"><input type=radio class="w-4 h-4 border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600"><span class="text-sm text-gray-700 dark:text-gray-300">`), _tmpl$23 = /* @__PURE__ */ web.template(`<div class="flex flex-wrap gap-1 mb-1">`), _tmpl$24 = /* @__PURE__ */ web.template(`<div class="p-2 border-b border-gray-200 dark:border-gray-600 flex-shrink-0"><input type=text class="w-full px-2 py-1 text-sm border border-gray-200 dark:border-gray-600 rounded bg-white dark:bg-gray-700 text-gray-900 dark:text-white focus:border-blue-400 outline-none"autofocus>`), _tmpl$25 = /* @__PURE__ */ web.template(`<p class="px-3 py-2 text-sm text-gray-400">`), _tmpl$26 = /* @__PURE__ */ web.template(`<div class="absolute z-50 mt-1 w-full bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-md shadow-lg"style=max-height:320px;display:flex;flex-direction:column><!$><!/><div style=overflow-y:auto;flex:1;-webkit-overflow-scrolling:touch><!$><!/><!$><!/>`), _tmpl$27 = /* @__PURE__ */ web.template(`<div class=relative><!$><!/><button type=button><span></span><svg class="w-4 h-4 text-gray-400"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M19 9l-7 7-7-7"></path></svg></button><!$><!/>`), _tmpl$28 = /* @__PURE__ */ web.template(`<span class="inline-flex items-center gap-1 px-2 py-0.5 text-xs font-medium bg-blue-100 dark:bg-blue-900/30 text-blue-700 dark:text-blue-300 rounded-full"><!$><!/><button type=button class="hover:text-blue-900 dark:hover:text-blue-100">&times;`), _tmpl$29 = /* @__PURE__ */ web.template(`<label class="flex items-center gap-2 px-3 py-2 hover:bg-gray-100 dark:hover:bg-gray-700 cursor-pointer text-sm"><input type=checkbox class="w-4 h-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600"><span class="text-gray-900 dark:text-white">`), _tmpl$30 = /* @__PURE__ */ web.template(`<div class="flex items-center gap-1 mb-1 text-xs text-gray-400"><span class="animate-spin h-3 w-3 border border-gray-400 border-t-transparent rounded-full"></span><!$><!/>`), _tmpl$31 = /* @__PURE__ */ web.template(`<div class="absolute z-20 mt-1 w-full bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-md shadow-lg max-h-72 overflow-y-auto">`), _tmpl$32 = /* @__PURE__ */ web.template(`<div class=relative><!$><!/><!$><!/><input type=text autocomplete=off><!$><!/>`), _tmpl$33 = /* @__PURE__ */ web.template(`<span class="ml-2 text-xs">&#10003;`), _tmpl$34 = /* @__PURE__ */ web.template(`<button type=button><!$><!/><!$><!/>`), _tmpl$35 = /* @__PURE__ */ web.template(`<div><!$><!/><input type=text>`);
7
9
  const SOURCE_BADGES = {
8
10
  detected: {
9
11
  icon: "✅",
10
- title: "Detected from message"
12
+ titleKey: "sourceDetected"
11
13
  },
12
14
  inferred: {
13
15
  icon: "🔗",
14
- title: "Inferred from context"
16
+ titleKey: "sourceInferred"
15
17
  },
16
18
  user: {
17
19
  icon: "✏️",
18
- title: "Previously provided"
20
+ titleKey: "sourcePrevious"
19
21
  },
20
22
  default: null
21
23
  };
22
24
  const FormFieldRenderer = (props) => {
25
+ const strings = MCPUIStringsContext.useMCPUIStrings();
23
26
  const {
24
27
  isVisible
25
28
  } = useConditionalField.useConditionalField({
@@ -54,7 +57,7 @@ const FormFieldRenderer = (props) => {
54
57
  return isVisible();
55
58
  },
56
59
  get children() {
57
- var _el$ = web.getNextElement(_tmpl$20), _el$53 = _el$.firstChild, [_el$54, _co$1] = web.getNextMarker(_el$53.nextSibling), _el$55 = _el$54.nextSibling, [_el$56, _co$10] = web.getNextMarker(_el$55.nextSibling), _el$57 = _el$56.nextSibling, [_el$58, _co$11] = web.getNextMarker(_el$57.nextSibling), _el$59 = _el$58.nextSibling, [_el$60, _co$12] = web.getNextMarker(_el$59.nextSibling), _el$61 = _el$60.nextSibling, [_el$62, _co$13] = web.getNextMarker(_el$61.nextSibling), _el$63 = _el$62.nextSibling, [_el$64, _co$14] = web.getNextMarker(_el$63.nextSibling);
60
+ var _el$ = web.getNextElement(_tmpl$20), _el$50 = _el$.firstChild, [_el$51, _co$0] = web.getNextMarker(_el$50.nextSibling), _el$52 = _el$51.nextSibling, [_el$53, _co$1] = web.getNextMarker(_el$52.nextSibling), _el$54 = _el$53.nextSibling, [_el$55, _co$10] = web.getNextMarker(_el$54.nextSibling), _el$56 = _el$55.nextSibling, [_el$57, _co$11] = web.getNextMarker(_el$56.nextSibling), _el$58 = _el$57.nextSibling, [_el$59, _co$12] = web.getNextMarker(_el$58.nextSibling), _el$60 = _el$59.nextSibling, [_el$61, _co$13] = web.getNextMarker(_el$60.nextSibling);
58
61
  _el$.$$click = handleFieldFocus;
59
62
  _el$.$$focusin = handleFieldFocus;
60
63
  web.insert(_el$, web.createComponent(solidJs.Show, {
@@ -70,7 +73,7 @@ const FormFieldRenderer = (props) => {
70
73
  get children() {
71
74
  var _el$3 = web.getNextElement(_tmpl$);
72
75
  web.insert(_el$3, () => sourceBadge().icon);
73
- web.effect(() => web.setAttribute(_el$3, "title", sourceBadge().title));
76
+ web.effect(() => web.setAttribute(_el$3, "title", strings[sourceBadge().titleKey]));
74
77
  return _el$3;
75
78
  }
76
79
  }), _el$8, _co$);
@@ -88,7 +91,9 @@ const FormFieldRenderer = (props) => {
88
91
  return isUnsupported();
89
92
  },
90
93
  get children() {
91
- return web.getNextElement(_tmpl$3);
94
+ var _el$5 = web.getNextElement(_tmpl$3);
95
+ web.insert(_el$5, () => strings.fieldNotSupported);
96
+ return _el$5;
92
97
  }
93
98
  }), _el$12, _co$4);
94
99
  web.insert(_el$2, web.createComponent(solidJs.Show, {
@@ -110,7 +115,7 @@ const FormFieldRenderer = (props) => {
110
115
  });
111
116
  return _el$2;
112
117
  }
113
- }), _el$54, _co$1);
118
+ }), _el$51, _co$0);
114
119
  web.insert(_el$, web.createComponent(solidJs.Switch, {
115
120
  get children() {
116
121
  return [web.createComponent(solidJs.Match, {
@@ -285,11 +290,11 @@ const FormFieldRenderer = (props) => {
285
290
  return props.field.options;
286
291
  },
287
292
  children: (option) => (() => {
288
- var _el$65 = web.getNextElement(_tmpl$21);
289
- web.insert(_el$65, () => option.label);
290
- web.effect(() => web.setProperty(_el$65, "disabled", option.disabled));
291
- web.effect(() => web.setProperty(_el$65, "value", option.value));
292
- return _el$65;
293
+ var _el$62 = web.getNextElement(_tmpl$21);
294
+ web.insert(_el$62, () => option.label);
295
+ web.effect(() => web.setProperty(_el$62, "disabled", option.disabled));
296
+ web.effect(() => web.setProperty(_el$62, "value", option.value));
297
+ return _el$62;
293
298
  })()
294
299
  }), _el$24, _co$7);
295
300
  web.effect((_p$) => {
@@ -405,23 +410,23 @@ const FormFieldRenderer = (props) => {
405
410
  return props.field.options;
406
411
  },
407
412
  children: (option, index) => (() => {
408
- var _el$66 = web.getNextElement(_tmpl$22), _el$67 = _el$66.firstChild, _el$68 = _el$67.nextSibling;
409
- _el$67.addEventListener("change", () => props.onChange(option.value));
410
- web.insert(_el$68, () => option.label);
413
+ var _el$63 = web.getNextElement(_tmpl$22), _el$64 = _el$63.firstChild, _el$65 = _el$64.nextSibling;
414
+ _el$64.addEventListener("change", () => props.onChange(option.value));
415
+ web.insert(_el$65, () => option.label);
411
416
  web.effect((_p$) => {
412
417
  var _v$74 = props.field.name, _v$75 = `${fieldId()}-${index()}`, _v$76 = props.disabled || option.disabled;
413
- _v$74 !== _p$.e && web.setAttribute(_el$67, "name", _p$.e = _v$74);
414
- _v$75 !== _p$.t && web.setAttribute(_el$67, "id", _p$.t = _v$75);
415
- _v$76 !== _p$.a && web.setProperty(_el$67, "disabled", _p$.a = _v$76);
418
+ _v$74 !== _p$.e && web.setAttribute(_el$64, "name", _p$.e = _v$74);
419
+ _v$75 !== _p$.t && web.setAttribute(_el$64, "id", _p$.t = _v$75);
420
+ _v$76 !== _p$.a && web.setProperty(_el$64, "disabled", _p$.a = _v$76);
416
421
  return _p$;
417
422
  }, {
418
423
  e: void 0,
419
424
  t: void 0,
420
425
  a: void 0
421
426
  });
422
- web.effect(() => web.setProperty(_el$67, "value", option.value));
423
- web.effect(() => web.setProperty(_el$67, "checked", props.value === option.value));
424
- return _el$66;
427
+ web.effect(() => web.setProperty(_el$64, "value", option.value));
428
+ web.effect(() => web.setProperty(_el$64, "checked", props.value === option.value));
429
+ return _el$63;
425
430
  })()
426
431
  }));
427
432
  web.effect((_p$) => {
@@ -520,7 +525,7 @@ const FormFieldRenderer = (props) => {
520
525
  get children() {
521
526
  var _el$41 = web.getNextElement(_tmpl$14), _el$42 = _el$41.firstChild, _el$43 = _el$42.nextSibling;
522
527
  web.insert(_el$42, () => props.field.label);
523
- web.insert(_el$43, () => props.field.helpText || "Group container");
528
+ web.insert(_el$43, () => props.field.helpText || strings.fieldGroupContainer);
524
529
  return _el$41;
525
530
  }
526
531
  }), web.createComponent(solidJs.Match, {
@@ -548,63 +553,66 @@ const FormFieldRenderer = (props) => {
548
553
  web.runHydrationEvents();
549
554
  return _el$44;
550
555
  })(), (() => {
551
- var _el$45 = web.getNextElement(_tmpl$16), _el$46 = _el$45.firstChild, _el$47 = _el$46.nextSibling, [_el$48, _co$0] = web.getNextMarker(_el$47.nextSibling);
552
- web.insert(_el$45, () => props.field.type, _el$48, _co$0);
556
+ var _el$45 = web.getNextElement(_tmpl$16);
557
+ web.insert(_el$45, () => formatString.formatMCPUIString(strings.fieldUnknownType, {
558
+ type: props.field.type
559
+ }));
553
560
  return _el$45;
554
561
  })()];
555
562
  }
556
563
  })];
557
564
  }
558
- }), _el$56, _co$10);
565
+ }), _el$53, _co$1);
559
566
  web.insert(_el$, web.createComponent(solidJs.Show, {
560
567
  get when() {
561
568
  return props.field.statusReason;
562
569
  },
563
570
  get children() {
564
- var _el$49 = web.getNextElement(_tmpl$17);
565
- web.insert(_el$49, () => props.field.statusReason);
566
- web.effect(() => web.className(_el$49, `text-xs ${isUnsupported() ? "text-orange-500 dark:text-orange-400" : status() === "unknown" ? "text-yellow-500 dark:text-yellow-400" : status() === "required" ? "text-blue-500 dark:text-blue-400" : "text-gray-500 dark:text-gray-400"}`));
567
- return _el$49;
571
+ var _el$46 = web.getNextElement(_tmpl$17);
572
+ web.insert(_el$46, () => props.field.statusReason);
573
+ web.effect(() => web.className(_el$46, `text-xs ${isUnsupported() ? "text-orange-500 dark:text-orange-400" : status() === "unknown" ? "text-yellow-500 dark:text-yellow-400" : status() === "required" ? "text-blue-500 dark:text-blue-400" : "text-gray-500 dark:text-gray-400"}`));
574
+ return _el$46;
568
575
  }
569
- }), _el$58, _co$11);
576
+ }), _el$55, _co$10);
570
577
  web.insert(_el$, web.createComponent(solidJs.Show, {
571
578
  get when() {
572
579
  return web.memo(() => !!props.field.displayHint)() && props.field.prefill != null;
573
580
  },
574
581
  get children() {
575
- var _el$50 = web.getNextElement(_tmpl$17);
576
- web.insert(_el$50, () => props.field.displayHint);
577
- web.effect(() => web.className(_el$50, `text-xs italic ${isMuted() ? "text-gray-400 dark:text-gray-500" : "text-gray-500 dark:text-gray-400"}`));
578
- return _el$50;
582
+ var _el$47 = web.getNextElement(_tmpl$17);
583
+ web.insert(_el$47, () => props.field.displayHint);
584
+ web.effect(() => web.className(_el$47, `text-xs italic ${isMuted() ? "text-gray-400 dark:text-gray-500" : "text-gray-500 dark:text-gray-400"}`));
585
+ return _el$47;
579
586
  }
580
- }), _el$60, _co$12);
587
+ }), _el$57, _co$11);
581
588
  web.insert(_el$, web.createComponent(solidJs.Show, {
582
589
  get when() {
583
590
  return web.memo(() => !!(props.field.helpText && !props.error && !props.field.statusReason))() && !props.field.displayHint;
584
591
  },
585
592
  get children() {
586
- var _el$51 = web.getNextElement(_tmpl$18);
587
- web.insert(_el$51, () => props.field.helpText);
588
- return _el$51;
593
+ var _el$48 = web.getNextElement(_tmpl$18);
594
+ web.insert(_el$48, () => props.field.helpText);
595
+ return _el$48;
589
596
  }
590
- }), _el$62, _co$13);
597
+ }), _el$59, _co$12);
591
598
  web.insert(_el$, web.createComponent(solidJs.Show, {
592
599
  get when() {
593
600
  return props.error;
594
601
  },
595
602
  get children() {
596
- var _el$52 = web.getNextElement(_tmpl$19);
597
- web.insert(_el$52, () => props.error);
598
- web.effect(() => web.setAttribute(_el$52, "id", errorId()));
599
- return _el$52;
603
+ var _el$49 = web.getNextElement(_tmpl$19);
604
+ web.insert(_el$49, () => props.error);
605
+ web.effect(() => web.setAttribute(_el$49, "id", errorId()));
606
+ return _el$49;
600
607
  }
601
- }), _el$64, _co$14);
608
+ }), _el$61, _co$13);
602
609
  web.runHydrationEvents();
603
610
  return _el$;
604
611
  }
605
612
  });
606
613
  };
607
614
  const MultiSelectField = (props) => {
615
+ const strings = MCPUIStringsContext.useMCPUIStrings();
608
616
  const [open, setOpen] = solidJs.createSignal(false);
609
617
  const [filter, setFilter] = solidJs.createSignal("");
610
618
  const toggle = (val) => {
@@ -628,84 +636,91 @@ const MultiSelectField = (props) => {
628
636
  return (props.field.options || []).filter((o) => o.label.toLowerCase().includes(q) || o.value.toLowerCase().includes(q));
629
637
  };
630
638
  return (() => {
631
- var _el$69 = web.getNextElement(_tmpl$27), _el$84 = _el$69.firstChild, [_el$85, _co$18] = web.getNextMarker(_el$84.nextSibling), _el$71 = _el$85.nextSibling, _el$72 = _el$71.firstChild, _el$86 = _el$71.nextSibling, [_el$87, _co$19] = web.getNextMarker(_el$86.nextSibling);
632
- web.insert(_el$69, web.createComponent(solidJs.Show, {
639
+ var _el$66 = web.getNextElement(_tmpl$27), _el$81 = _el$66.firstChild, [_el$82, _co$17] = web.getNextMarker(_el$81.nextSibling), _el$68 = _el$82.nextSibling, _el$69 = _el$68.firstChild, _el$83 = _el$68.nextSibling, [_el$84, _co$18] = web.getNextMarker(_el$83.nextSibling);
640
+ web.insert(_el$66, web.createComponent(solidJs.Show, {
633
641
  get when() {
634
642
  return props.value.length > 0;
635
643
  },
636
644
  get children() {
637
- var _el$70 = web.getNextElement(_tmpl$23);
638
- web.insert(_el$70, web.createComponent(solidJs.For, {
645
+ var _el$67 = web.getNextElement(_tmpl$23);
646
+ web.insert(_el$67, web.createComponent(solidJs.For, {
639
647
  get each() {
640
648
  return props.value;
641
649
  },
642
650
  children: (val) => (() => {
643
- var _el$88 = web.getNextElement(_tmpl$28), _el$90 = _el$88.firstChild, [_el$91, _co$20] = web.getNextMarker(_el$90.nextSibling), _el$89 = _el$91.nextSibling;
644
- web.insert(_el$88, () => getLabel(val), _el$91, _co$20);
645
- _el$89.$$click = () => removeChip(val);
646
- web.effect(() => web.setAttribute(_el$89, "aria-label", `Remove ${getLabel(val)}`));
651
+ var _el$85 = web.getNextElement(_tmpl$28), _el$87 = _el$85.firstChild, [_el$88, _co$19] = web.getNextMarker(_el$87.nextSibling), _el$86 = _el$88.nextSibling;
652
+ web.insert(_el$85, () => getLabel(val), _el$88, _co$19);
653
+ _el$86.$$click = () => removeChip(val);
654
+ web.effect(() => web.setAttribute(_el$86, "aria-label", formatString.formatMCPUIString(strings.removeItem, {
655
+ name: getLabel(val)
656
+ })));
647
657
  web.runHydrationEvents();
648
- return _el$88;
658
+ return _el$85;
649
659
  })()
650
660
  }));
651
- return _el$70;
661
+ return _el$67;
652
662
  }
653
- }), _el$85, _co$18);
654
- _el$71.$$click = () => {
663
+ }), _el$82, _co$17);
664
+ _el$68.$$click = () => {
655
665
  setOpen(!open());
656
666
  if (!open()) setFilter("");
657
667
  };
658
- web.insert(_el$72, (() => {
668
+ web.insert(_el$69, (() => {
659
669
  var _c$ = web.memo(() => !!props.value.length);
660
- return () => _c$() ? `${props.value.length} selected` : props.field.placeholder || "Select...";
670
+ return () => _c$() ? formatString.formatMCPUIString(strings.fieldSelectedCount, {
671
+ count: props.value.length
672
+ }) : props.field.placeholder || strings.fieldSelectPlaceholder;
661
673
  })());
662
- web.insert(_el$69, web.createComponent(solidJs.Show, {
674
+ web.insert(_el$66, web.createComponent(solidJs.Show, {
663
675
  get when() {
664
676
  return open();
665
677
  },
666
678
  get children() {
667
- var _el$73 = web.getNextElement(_tmpl$26), _el$82 = _el$73.firstChild, [_el$83, _co$17] = web.getNextMarker(_el$82.nextSibling), _el$76 = _el$83.nextSibling, _el$78 = _el$76.firstChild, [_el$79, _co$15] = web.getNextMarker(_el$78.nextSibling), _el$80 = _el$79.nextSibling, [_el$81, _co$16] = web.getNextMarker(_el$80.nextSibling);
668
- web.insert(_el$73, web.createComponent(solidJs.Show, {
679
+ var _el$70 = web.getNextElement(_tmpl$26), _el$79 = _el$70.firstChild, [_el$80, _co$16] = web.getNextMarker(_el$79.nextSibling), _el$73 = _el$80.nextSibling, _el$75 = _el$73.firstChild, [_el$76, _co$14] = web.getNextMarker(_el$75.nextSibling), _el$77 = _el$76.nextSibling, [_el$78, _co$15] = web.getNextMarker(_el$77.nextSibling);
680
+ web.insert(_el$70, web.createComponent(solidJs.Show, {
669
681
  get when() {
670
682
  var _a;
671
683
  return (((_a = props.field.options) == null ? void 0 : _a.length) || 0) > 10;
672
684
  },
673
685
  get children() {
674
- var _el$74 = web.getNextElement(_tmpl$24), _el$75 = _el$74.firstChild;
675
- _el$75.$$input = (e) => setFilter(e.currentTarget.value);
676
- web.effect(() => web.setProperty(_el$75, "value", filter()));
686
+ var _el$71 = web.getNextElement(_tmpl$24), _el$72 = _el$71.firstChild;
687
+ _el$72.$$input = (e) => setFilter(e.currentTarget.value);
688
+ web.effect(() => web.setAttribute(_el$72, "placeholder", strings.filterPlaceholder));
689
+ web.effect(() => web.setProperty(_el$72, "value", filter()));
677
690
  web.runHydrationEvents();
678
- return _el$74;
691
+ return _el$71;
679
692
  }
680
- }), _el$83, _co$17);
681
- web.insert(_el$76, web.createComponent(solidJs.For, {
693
+ }), _el$80, _co$16);
694
+ web.insert(_el$73, web.createComponent(solidJs.For, {
682
695
  get each() {
683
696
  return filteredOptions();
684
697
  },
685
698
  children: (option) => (() => {
686
- var _el$92 = web.getNextElement(_tmpl$29), _el$93 = _el$92.firstChild, _el$94 = _el$93.nextSibling;
687
- _el$93.addEventListener("change", () => toggle(option.value));
688
- web.insert(_el$94, () => option.label);
689
- web.effect(() => web.setProperty(_el$93, "checked", (props.value || []).includes(option.value)));
690
- return _el$92;
699
+ var _el$89 = web.getNextElement(_tmpl$29), _el$90 = _el$89.firstChild, _el$91 = _el$90.nextSibling;
700
+ _el$90.addEventListener("change", () => toggle(option.value));
701
+ web.insert(_el$91, () => option.label);
702
+ web.effect(() => web.setProperty(_el$90, "checked", (props.value || []).includes(option.value)));
703
+ return _el$89;
691
704
  })()
692
- }), _el$79, _co$15);
693
- web.insert(_el$76, web.createComponent(solidJs.Show, {
705
+ }), _el$76, _co$14);
706
+ web.insert(_el$73, web.createComponent(solidJs.Show, {
694
707
  get when() {
695
708
  return filteredOptions().length === 0;
696
709
  },
697
710
  get children() {
698
- return web.getNextElement(_tmpl$25);
711
+ var _el$74 = web.getNextElement(_tmpl$25);
712
+ web.insert(_el$74, () => strings.fieldNoMatches);
713
+ return _el$74;
699
714
  }
700
- }), _el$81, _co$16);
701
- return _el$73;
715
+ }), _el$78, _co$15);
716
+ return _el$70;
702
717
  }
703
- }), _el$87, _co$19);
718
+ }), _el$84, _co$18);
704
719
  web.effect((_p$) => {
705
720
  var _v$77 = props.disabled, _v$78 = `${props.baseClass} text-left flex items-center justify-between`, _v$79 = props.value.length ? "text-gray-900 dark:text-white" : "text-gray-400";
706
- _v$77 !== _p$.e && web.setProperty(_el$71, "disabled", _p$.e = _v$77);
707
- _v$78 !== _p$.t && web.className(_el$71, _p$.t = _v$78);
708
- _v$79 !== _p$.a && web.className(_el$72, _p$.a = _v$79);
721
+ _v$77 !== _p$.e && web.setProperty(_el$68, "disabled", _p$.e = _v$77);
722
+ _v$78 !== _p$.t && web.className(_el$68, _p$.t = _v$78);
723
+ _v$79 !== _p$.a && web.className(_el$69, _p$.a = _v$79);
709
724
  return _p$;
710
725
  }, {
711
726
  e: void 0,
@@ -713,10 +728,11 @@ const MultiSelectField = (props) => {
713
728
  a: void 0
714
729
  });
715
730
  web.runHydrationEvents();
716
- return _el$69;
731
+ return _el$66;
717
732
  })();
718
733
  };
719
734
  const AutocompleteField = (props) => {
735
+ const strings = MCPUIStringsContext.useMCPUIStrings();
720
736
  const [query, setQuery] = solidJs.createSignal("");
721
737
  const [suggestions, setSuggestions] = solidJs.createSignal([]);
722
738
  const [isOpen, setIsOpen] = solidJs.createSignal(false);
@@ -871,16 +887,18 @@ const AutocompleteField = (props) => {
871
887
  if (debounceTimer) clearTimeout(debounceTimer);
872
888
  });
873
889
  return (() => {
874
- var _el$95 = web.getNextElement(_tmpl$32), _el$100 = _el$95.firstChild, [_el$101, _co$21] = web.getNextMarker(_el$100.nextSibling), _el$102 = _el$101.nextSibling, [_el$103, _co$22] = web.getNextMarker(_el$102.nextSibling), _el$98 = _el$103.nextSibling, _el$104 = _el$98.nextSibling, [_el$105, _co$23] = web.getNextMarker(_el$104.nextSibling);
875
- web.insert(_el$95, web.createComponent(solidJs.Show, {
890
+ var _el$92 = web.getNextElement(_tmpl$32), _el$100 = _el$92.firstChild, [_el$101, _co$21] = web.getNextMarker(_el$100.nextSibling), _el$102 = _el$101.nextSibling, [_el$103, _co$22] = web.getNextMarker(_el$102.nextSibling), _el$98 = _el$103.nextSibling, _el$104 = _el$98.nextSibling, [_el$105, _co$23] = web.getNextMarker(_el$104.nextSibling);
891
+ web.insert(_el$92, web.createComponent(solidJs.Show, {
876
892
  get when() {
877
893
  return resolving();
878
894
  },
879
895
  get children() {
880
- return web.getNextElement(_tmpl$30);
896
+ var _el$93 = web.getNextElement(_tmpl$30), _el$94 = _el$93.firstChild, _el$95 = _el$94.nextSibling, [_el$96, _co$20] = web.getNextMarker(_el$95.nextSibling);
897
+ web.insert(_el$93, () => strings.fieldResolving, _el$96, _co$20);
898
+ return _el$93;
881
899
  }
882
900
  }), _el$101, _co$21);
883
- web.insert(_el$95, web.createComponent(solidJs.Show, {
901
+ web.insert(_el$92, web.createComponent(solidJs.Show, {
884
902
  get when() {
885
903
  return web.memo(() => !!isMultiple())() && selectedValues().length > 0;
886
904
  },
@@ -894,7 +912,9 @@ const AutocompleteField = (props) => {
894
912
  var _el$106 = web.getNextElement(_tmpl$28), _el$108 = _el$106.firstChild, [_el$109, _co$24] = web.getNextMarker(_el$108.nextSibling), _el$107 = _el$109.nextSibling;
895
913
  web.insert(_el$106, () => getLabel(val), _el$109, _co$24);
896
914
  _el$107.$$click = () => removeChip(val);
897
- web.effect(() => web.setAttribute(_el$107, "aria-label", `Remove ${getLabel(val)}`));
915
+ web.effect(() => web.setAttribute(_el$107, "aria-label", formatString.formatMCPUIString(strings.removeItem, {
916
+ name: getLabel(val)
917
+ })));
898
918
  web.runHydrationEvents();
899
919
  return _el$106;
900
920
  })()
@@ -907,7 +927,7 @@ const AutocompleteField = (props) => {
907
927
  if (suggestions().length) setIsOpen(true);
908
928
  });
909
929
  _el$98.$$input = (e) => handleInput(e.currentTarget.value);
910
- web.insert(_el$95, web.createComponent(solidJs.Show, {
930
+ web.insert(_el$92, web.createComponent(solidJs.Show, {
911
931
  get when() {
912
932
  return web.memo(() => !!isOpen())() && suggestions().length > 0;
913
933
  },
@@ -950,7 +970,7 @@ const AutocompleteField = (props) => {
950
970
  }
951
971
  }), _el$105, _co$23);
952
972
  web.effect((_p$) => {
953
- var _v$80 = isMultiple() && selectedValues().length ? "Add more..." : props.field.placeholder, _v$81 = props.disabled || resolving(), _v$82 = props.baseClass;
973
+ var _v$80 = isMultiple() && selectedValues().length ? strings.fieldAddMorePlaceholder : props.field.placeholder, _v$81 = props.disabled || resolving(), _v$82 = props.baseClass;
954
974
  _v$80 !== _p$.e && web.setAttribute(_el$98, "placeholder", _p$.e = _v$80);
955
975
  _v$81 !== _p$.t && web.setProperty(_el$98, "disabled", _p$.t = _v$81);
956
976
  _v$82 !== _p$.a && web.className(_el$98, _p$.a = _v$82);
@@ -962,10 +982,11 @@ const AutocompleteField = (props) => {
962
982
  });
963
983
  web.effect(() => web.setProperty(_el$98, "value", query()));
964
984
  web.runHydrationEvents();
965
- return _el$95;
985
+ return _el$92;
966
986
  })();
967
987
  };
968
988
  const TagsField = (props) => {
989
+ const strings = MCPUIStringsContext.useMCPUIStrings();
969
990
  const [input, setInput] = solidJs.createSignal("");
970
991
  const addTag = () => {
971
992
  const val = input().trim();
@@ -1002,7 +1023,9 @@ const TagsField = (props) => {
1002
1023
  var _el$121 = web.getNextElement(_tmpl$28), _el$123 = _el$121.firstChild, [_el$124, _co$28] = web.getNextMarker(_el$123.nextSibling), _el$122 = _el$124.nextSibling;
1003
1024
  web.insert(_el$121, tag, _el$124, _co$28);
1004
1025
  _el$122.$$click = () => removeTag(tag);
1005
- web.setAttribute(_el$122, "aria-label", `Remove ${tag}`);
1026
+ web.effect(() => web.setAttribute(_el$122, "aria-label", formatString.formatMCPUIString(strings.removeItem, {
1027
+ name: tag
1028
+ })));
1006
1029
  web.runHydrationEvents();
1007
1030
  return _el$121;
1008
1031
  })()
@@ -1014,7 +1037,7 @@ const TagsField = (props) => {
1014
1037
  _el$118.$$keydown = handleKeyDown;
1015
1038
  _el$118.$$input = (e) => setInput(e.currentTarget.value);
1016
1039
  web.effect((_p$) => {
1017
- var _v$85 = props.placeholder || "Type and press Enter...", _v$86 = props.disabled, _v$87 = props.baseClass;
1040
+ var _v$85 = props.placeholder || strings.fieldTagsPlaceholder, _v$86 = props.disabled, _v$87 = props.baseClass;
1018
1041
  _v$85 !== _p$.e && web.setAttribute(_el$118, "placeholder", _p$.e = _v$85);
1019
1042
  _v$86 !== _p$.t && web.setProperty(_el$118, "disabled", _p$.t = _v$86);
1020
1043
  _v$87 !== _p$.a && web.className(_el$118, _p$.a = _v$87);