@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
@@ -1,23 +1,26 @@
1
1
  import { createComponent, getNextElement, getNextMarker, insert, effect, setAttribute, className, memo, setProperty, runHydrationEvents, template, delegateEvents } from "solid-js/web";
2
2
  import { createSignal, Show, Switch, Match, For, createEffect, onCleanup } from "solid-js";
3
3
  import { useConditionalField } from "../hooks/useConditionalField.js";
4
- var _tmpl$ = /* @__PURE__ */ template(`<span class=mr-1>`), _tmpl$2 = /* @__PURE__ */ template(`<span class="text-red-500 ml-1"aria-hidden=true>*`), _tmpl$3 = /* @__PURE__ */ 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__ */ 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__ */ template(`<label><!$><!/><!$><!/><!$><!/><!$><!/><!$><!/>`), _tmpl$6 = /* @__PURE__ */ template(`<input>`), _tmpl$7 = /* @__PURE__ */ template(`<input type=number>`), _tmpl$8 = /* @__PURE__ */ template(`<input type=date>`), _tmpl$9 = /* @__PURE__ */ template(`<textarea>`), _tmpl$0 = /* @__PURE__ */ template(`<option value disabled>`), _tmpl$1 = /* @__PURE__ */ template(`<select><!$><!/><!$><!/>`), _tmpl$10 = /* @__PURE__ */ 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__ */ template(`<div class=space-y-2 role=radiogroup>`), _tmpl$12 = /* @__PURE__ */ 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__ */ 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__ */ 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__ */ template(`<input type=text>`), _tmpl$16 = /* @__PURE__ */ template(`<p class="text-xs text-amber-500 mt-0.5">Unknown field type: <!$><!/>`), _tmpl$17 = /* @__PURE__ */ template(`<p>`), _tmpl$18 = /* @__PURE__ */ template(`<p class="text-xs text-gray-500 dark:text-gray-400">`), _tmpl$19 = /* @__PURE__ */ template(`<p role=alert class="text-xs text-red-600 dark:text-red-400">`), _tmpl$20 = /* @__PURE__ */ template(`<div class=space-y-1><!$><!/><!$><!/><!$><!/><!$><!/><!$><!/><!$><!/>`), _tmpl$21 = /* @__PURE__ */ template(`<option>`), _tmpl$22 = /* @__PURE__ */ 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__ */ template(`<div class="flex flex-wrap gap-1 mb-1">`), _tmpl$24 = /* @__PURE__ */ 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__ */ template(`<p class="px-3 py-2 text-sm text-gray-400">No matches`), _tmpl$26 = /* @__PURE__ */ 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__ */ 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__ */ 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__ */ 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__ */ 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__ */ 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__ */ template(`<div class=relative><!$><!/><!$><!/><input type=text autocomplete=off><!$><!/>`), _tmpl$33 = /* @__PURE__ */ template(`<span class="ml-2 text-xs">&#10003;`), _tmpl$34 = /* @__PURE__ */ template(`<button type=button><!$><!/><!$><!/>`), _tmpl$35 = /* @__PURE__ */ template(`<div><!$><!/><input type=text>`);
4
+ import { useMCPUIStrings } from "../context/MCPUIStringsContext.js";
5
+ import { formatMCPUIString } from "../utils/format-string.js";
6
+ var _tmpl$ = /* @__PURE__ */ template(`<span class=mr-1>`), _tmpl$2 = /* @__PURE__ */ template(`<span class="text-red-500 ml-1"aria-hidden=true>*`), _tmpl$3 = /* @__PURE__ */ 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__ */ 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__ */ template(`<label><!$><!/><!$><!/><!$><!/><!$><!/><!$><!/>`), _tmpl$6 = /* @__PURE__ */ template(`<input>`), _tmpl$7 = /* @__PURE__ */ template(`<input type=number>`), _tmpl$8 = /* @__PURE__ */ template(`<input type=date>`), _tmpl$9 = /* @__PURE__ */ template(`<textarea>`), _tmpl$0 = /* @__PURE__ */ template(`<option value disabled>`), _tmpl$1 = /* @__PURE__ */ template(`<select><!$><!/><!$><!/>`), _tmpl$10 = /* @__PURE__ */ 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__ */ template(`<div class=space-y-2 role=radiogroup>`), _tmpl$12 = /* @__PURE__ */ 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__ */ 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__ */ 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__ */ template(`<input type=text>`), _tmpl$16 = /* @__PURE__ */ template(`<p class="text-xs text-amber-500 mt-0.5">`), _tmpl$17 = /* @__PURE__ */ template(`<p>`), _tmpl$18 = /* @__PURE__ */ template(`<p class="text-xs text-gray-500 dark:text-gray-400">`), _tmpl$19 = /* @__PURE__ */ template(`<p role=alert class="text-xs text-red-600 dark:text-red-400">`), _tmpl$20 = /* @__PURE__ */ template(`<div class=space-y-1><!$><!/><!$><!/><!$><!/><!$><!/><!$><!/><!$><!/>`), _tmpl$21 = /* @__PURE__ */ template(`<option>`), _tmpl$22 = /* @__PURE__ */ 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__ */ template(`<div class="flex flex-wrap gap-1 mb-1">`), _tmpl$24 = /* @__PURE__ */ 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__ */ template(`<p class="px-3 py-2 text-sm text-gray-400">`), _tmpl$26 = /* @__PURE__ */ 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__ */ 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__ */ 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__ */ 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__ */ 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__ */ 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__ */ template(`<div class=relative><!$><!/><!$><!/><input type=text autocomplete=off><!$><!/>`), _tmpl$33 = /* @__PURE__ */ template(`<span class="ml-2 text-xs">&#10003;`), _tmpl$34 = /* @__PURE__ */ template(`<button type=button><!$><!/><!$><!/>`), _tmpl$35 = /* @__PURE__ */ template(`<div><!$><!/><input type=text>`);
5
7
  const SOURCE_BADGES = {
6
8
  detected: {
7
9
  icon: "✅",
8
- title: "Detected from message"
10
+ titleKey: "sourceDetected"
9
11
  },
10
12
  inferred: {
11
13
  icon: "🔗",
12
- title: "Inferred from context"
14
+ titleKey: "sourceInferred"
13
15
  },
14
16
  user: {
15
17
  icon: "✏️",
16
- title: "Previously provided"
18
+ titleKey: "sourcePrevious"
17
19
  },
18
20
  default: null
19
21
  };
20
22
  const FormFieldRenderer = (props) => {
23
+ const strings = useMCPUIStrings();
21
24
  const {
22
25
  isVisible
23
26
  } = useConditionalField({
@@ -52,7 +55,7 @@ const FormFieldRenderer = (props) => {
52
55
  return isVisible();
53
56
  },
54
57
  get children() {
55
- var _el$ = getNextElement(_tmpl$20), _el$53 = _el$.firstChild, [_el$54, _co$1] = getNextMarker(_el$53.nextSibling), _el$55 = _el$54.nextSibling, [_el$56, _co$10] = getNextMarker(_el$55.nextSibling), _el$57 = _el$56.nextSibling, [_el$58, _co$11] = getNextMarker(_el$57.nextSibling), _el$59 = _el$58.nextSibling, [_el$60, _co$12] = getNextMarker(_el$59.nextSibling), _el$61 = _el$60.nextSibling, [_el$62, _co$13] = getNextMarker(_el$61.nextSibling), _el$63 = _el$62.nextSibling, [_el$64, _co$14] = getNextMarker(_el$63.nextSibling);
58
+ var _el$ = getNextElement(_tmpl$20), _el$50 = _el$.firstChild, [_el$51, _co$0] = getNextMarker(_el$50.nextSibling), _el$52 = _el$51.nextSibling, [_el$53, _co$1] = getNextMarker(_el$52.nextSibling), _el$54 = _el$53.nextSibling, [_el$55, _co$10] = getNextMarker(_el$54.nextSibling), _el$56 = _el$55.nextSibling, [_el$57, _co$11] = getNextMarker(_el$56.nextSibling), _el$58 = _el$57.nextSibling, [_el$59, _co$12] = getNextMarker(_el$58.nextSibling), _el$60 = _el$59.nextSibling, [_el$61, _co$13] = getNextMarker(_el$60.nextSibling);
56
59
  _el$.$$click = handleFieldFocus;
57
60
  _el$.$$focusin = handleFieldFocus;
58
61
  insert(_el$, createComponent(Show, {
@@ -68,7 +71,7 @@ const FormFieldRenderer = (props) => {
68
71
  get children() {
69
72
  var _el$3 = getNextElement(_tmpl$);
70
73
  insert(_el$3, () => sourceBadge().icon);
71
- effect(() => setAttribute(_el$3, "title", sourceBadge().title));
74
+ effect(() => setAttribute(_el$3, "title", strings[sourceBadge().titleKey]));
72
75
  return _el$3;
73
76
  }
74
77
  }), _el$8, _co$);
@@ -86,7 +89,9 @@ const FormFieldRenderer = (props) => {
86
89
  return isUnsupported();
87
90
  },
88
91
  get children() {
89
- return getNextElement(_tmpl$3);
92
+ var _el$5 = getNextElement(_tmpl$3);
93
+ insert(_el$5, () => strings.fieldNotSupported);
94
+ return _el$5;
90
95
  }
91
96
  }), _el$12, _co$4);
92
97
  insert(_el$2, createComponent(Show, {
@@ -108,7 +113,7 @@ const FormFieldRenderer = (props) => {
108
113
  });
109
114
  return _el$2;
110
115
  }
111
- }), _el$54, _co$1);
116
+ }), _el$51, _co$0);
112
117
  insert(_el$, createComponent(Switch, {
113
118
  get children() {
114
119
  return [createComponent(Match, {
@@ -283,11 +288,11 @@ const FormFieldRenderer = (props) => {
283
288
  return props.field.options;
284
289
  },
285
290
  children: (option) => (() => {
286
- var _el$65 = getNextElement(_tmpl$21);
287
- insert(_el$65, () => option.label);
288
- effect(() => setProperty(_el$65, "disabled", option.disabled));
289
- effect(() => setProperty(_el$65, "value", option.value));
290
- return _el$65;
291
+ var _el$62 = getNextElement(_tmpl$21);
292
+ insert(_el$62, () => option.label);
293
+ effect(() => setProperty(_el$62, "disabled", option.disabled));
294
+ effect(() => setProperty(_el$62, "value", option.value));
295
+ return _el$62;
291
296
  })()
292
297
  }), _el$24, _co$7);
293
298
  effect((_p$) => {
@@ -403,23 +408,23 @@ const FormFieldRenderer = (props) => {
403
408
  return props.field.options;
404
409
  },
405
410
  children: (option, index) => (() => {
406
- var _el$66 = getNextElement(_tmpl$22), _el$67 = _el$66.firstChild, _el$68 = _el$67.nextSibling;
407
- _el$67.addEventListener("change", () => props.onChange(option.value));
408
- insert(_el$68, () => option.label);
411
+ var _el$63 = getNextElement(_tmpl$22), _el$64 = _el$63.firstChild, _el$65 = _el$64.nextSibling;
412
+ _el$64.addEventListener("change", () => props.onChange(option.value));
413
+ insert(_el$65, () => option.label);
409
414
  effect((_p$) => {
410
415
  var _v$74 = props.field.name, _v$75 = `${fieldId()}-${index()}`, _v$76 = props.disabled || option.disabled;
411
- _v$74 !== _p$.e && setAttribute(_el$67, "name", _p$.e = _v$74);
412
- _v$75 !== _p$.t && setAttribute(_el$67, "id", _p$.t = _v$75);
413
- _v$76 !== _p$.a && setProperty(_el$67, "disabled", _p$.a = _v$76);
416
+ _v$74 !== _p$.e && setAttribute(_el$64, "name", _p$.e = _v$74);
417
+ _v$75 !== _p$.t && setAttribute(_el$64, "id", _p$.t = _v$75);
418
+ _v$76 !== _p$.a && setProperty(_el$64, "disabled", _p$.a = _v$76);
414
419
  return _p$;
415
420
  }, {
416
421
  e: void 0,
417
422
  t: void 0,
418
423
  a: void 0
419
424
  });
420
- effect(() => setProperty(_el$67, "value", option.value));
421
- effect(() => setProperty(_el$67, "checked", props.value === option.value));
422
- return _el$66;
425
+ effect(() => setProperty(_el$64, "value", option.value));
426
+ effect(() => setProperty(_el$64, "checked", props.value === option.value));
427
+ return _el$63;
423
428
  })()
424
429
  }));
425
430
  effect((_p$) => {
@@ -518,7 +523,7 @@ const FormFieldRenderer = (props) => {
518
523
  get children() {
519
524
  var _el$41 = getNextElement(_tmpl$14), _el$42 = _el$41.firstChild, _el$43 = _el$42.nextSibling;
520
525
  insert(_el$42, () => props.field.label);
521
- insert(_el$43, () => props.field.helpText || "Group container");
526
+ insert(_el$43, () => props.field.helpText || strings.fieldGroupContainer);
522
527
  return _el$41;
523
528
  }
524
529
  }), createComponent(Match, {
@@ -546,63 +551,66 @@ const FormFieldRenderer = (props) => {
546
551
  runHydrationEvents();
547
552
  return _el$44;
548
553
  })(), (() => {
549
- var _el$45 = getNextElement(_tmpl$16), _el$46 = _el$45.firstChild, _el$47 = _el$46.nextSibling, [_el$48, _co$0] = getNextMarker(_el$47.nextSibling);
550
- insert(_el$45, () => props.field.type, _el$48, _co$0);
554
+ var _el$45 = getNextElement(_tmpl$16);
555
+ insert(_el$45, () => formatMCPUIString(strings.fieldUnknownType, {
556
+ type: props.field.type
557
+ }));
551
558
  return _el$45;
552
559
  })()];
553
560
  }
554
561
  })];
555
562
  }
556
- }), _el$56, _co$10);
563
+ }), _el$53, _co$1);
557
564
  insert(_el$, createComponent(Show, {
558
565
  get when() {
559
566
  return props.field.statusReason;
560
567
  },
561
568
  get children() {
562
- var _el$49 = getNextElement(_tmpl$17);
563
- insert(_el$49, () => props.field.statusReason);
564
- effect(() => 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"}`));
565
- return _el$49;
569
+ var _el$46 = getNextElement(_tmpl$17);
570
+ insert(_el$46, () => props.field.statusReason);
571
+ effect(() => 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"}`));
572
+ return _el$46;
566
573
  }
567
- }), _el$58, _co$11);
574
+ }), _el$55, _co$10);
568
575
  insert(_el$, createComponent(Show, {
569
576
  get when() {
570
577
  return memo(() => !!props.field.displayHint)() && props.field.prefill != null;
571
578
  },
572
579
  get children() {
573
- var _el$50 = getNextElement(_tmpl$17);
574
- insert(_el$50, () => props.field.displayHint);
575
- effect(() => className(_el$50, `text-xs italic ${isMuted() ? "text-gray-400 dark:text-gray-500" : "text-gray-500 dark:text-gray-400"}`));
576
- return _el$50;
580
+ var _el$47 = getNextElement(_tmpl$17);
581
+ insert(_el$47, () => props.field.displayHint);
582
+ effect(() => className(_el$47, `text-xs italic ${isMuted() ? "text-gray-400 dark:text-gray-500" : "text-gray-500 dark:text-gray-400"}`));
583
+ return _el$47;
577
584
  }
578
- }), _el$60, _co$12);
585
+ }), _el$57, _co$11);
579
586
  insert(_el$, createComponent(Show, {
580
587
  get when() {
581
588
  return memo(() => !!(props.field.helpText && !props.error && !props.field.statusReason))() && !props.field.displayHint;
582
589
  },
583
590
  get children() {
584
- var _el$51 = getNextElement(_tmpl$18);
585
- insert(_el$51, () => props.field.helpText);
586
- return _el$51;
591
+ var _el$48 = getNextElement(_tmpl$18);
592
+ insert(_el$48, () => props.field.helpText);
593
+ return _el$48;
587
594
  }
588
- }), _el$62, _co$13);
595
+ }), _el$59, _co$12);
589
596
  insert(_el$, createComponent(Show, {
590
597
  get when() {
591
598
  return props.error;
592
599
  },
593
600
  get children() {
594
- var _el$52 = getNextElement(_tmpl$19);
595
- insert(_el$52, () => props.error);
596
- effect(() => setAttribute(_el$52, "id", errorId()));
597
- return _el$52;
601
+ var _el$49 = getNextElement(_tmpl$19);
602
+ insert(_el$49, () => props.error);
603
+ effect(() => setAttribute(_el$49, "id", errorId()));
604
+ return _el$49;
598
605
  }
599
- }), _el$64, _co$14);
606
+ }), _el$61, _co$13);
600
607
  runHydrationEvents();
601
608
  return _el$;
602
609
  }
603
610
  });
604
611
  };
605
612
  const MultiSelectField = (props) => {
613
+ const strings = useMCPUIStrings();
606
614
  const [open, setOpen] = createSignal(false);
607
615
  const [filter, setFilter] = createSignal("");
608
616
  const toggle = (val) => {
@@ -626,84 +634,91 @@ const MultiSelectField = (props) => {
626
634
  return (props.field.options || []).filter((o) => o.label.toLowerCase().includes(q) || o.value.toLowerCase().includes(q));
627
635
  };
628
636
  return (() => {
629
- var _el$69 = getNextElement(_tmpl$27), _el$84 = _el$69.firstChild, [_el$85, _co$18] = getNextMarker(_el$84.nextSibling), _el$71 = _el$85.nextSibling, _el$72 = _el$71.firstChild, _el$86 = _el$71.nextSibling, [_el$87, _co$19] = getNextMarker(_el$86.nextSibling);
630
- insert(_el$69, createComponent(Show, {
637
+ var _el$66 = getNextElement(_tmpl$27), _el$81 = _el$66.firstChild, [_el$82, _co$17] = getNextMarker(_el$81.nextSibling), _el$68 = _el$82.nextSibling, _el$69 = _el$68.firstChild, _el$83 = _el$68.nextSibling, [_el$84, _co$18] = getNextMarker(_el$83.nextSibling);
638
+ insert(_el$66, createComponent(Show, {
631
639
  get when() {
632
640
  return props.value.length > 0;
633
641
  },
634
642
  get children() {
635
- var _el$70 = getNextElement(_tmpl$23);
636
- insert(_el$70, createComponent(For, {
643
+ var _el$67 = getNextElement(_tmpl$23);
644
+ insert(_el$67, createComponent(For, {
637
645
  get each() {
638
646
  return props.value;
639
647
  },
640
648
  children: (val) => (() => {
641
- var _el$88 = getNextElement(_tmpl$28), _el$90 = _el$88.firstChild, [_el$91, _co$20] = getNextMarker(_el$90.nextSibling), _el$89 = _el$91.nextSibling;
642
- insert(_el$88, () => getLabel(val), _el$91, _co$20);
643
- _el$89.$$click = () => removeChip(val);
644
- effect(() => setAttribute(_el$89, "aria-label", `Remove ${getLabel(val)}`));
649
+ var _el$85 = getNextElement(_tmpl$28), _el$87 = _el$85.firstChild, [_el$88, _co$19] = getNextMarker(_el$87.nextSibling), _el$86 = _el$88.nextSibling;
650
+ insert(_el$85, () => getLabel(val), _el$88, _co$19);
651
+ _el$86.$$click = () => removeChip(val);
652
+ effect(() => setAttribute(_el$86, "aria-label", formatMCPUIString(strings.removeItem, {
653
+ name: getLabel(val)
654
+ })));
645
655
  runHydrationEvents();
646
- return _el$88;
656
+ return _el$85;
647
657
  })()
648
658
  }));
649
- return _el$70;
659
+ return _el$67;
650
660
  }
651
- }), _el$85, _co$18);
652
- _el$71.$$click = () => {
661
+ }), _el$82, _co$17);
662
+ _el$68.$$click = () => {
653
663
  setOpen(!open());
654
664
  if (!open()) setFilter("");
655
665
  };
656
- insert(_el$72, (() => {
666
+ insert(_el$69, (() => {
657
667
  var _c$ = memo(() => !!props.value.length);
658
- return () => _c$() ? `${props.value.length} selected` : props.field.placeholder || "Select...";
668
+ return () => _c$() ? formatMCPUIString(strings.fieldSelectedCount, {
669
+ count: props.value.length
670
+ }) : props.field.placeholder || strings.fieldSelectPlaceholder;
659
671
  })());
660
- insert(_el$69, createComponent(Show, {
672
+ insert(_el$66, createComponent(Show, {
661
673
  get when() {
662
674
  return open();
663
675
  },
664
676
  get children() {
665
- var _el$73 = getNextElement(_tmpl$26), _el$82 = _el$73.firstChild, [_el$83, _co$17] = getNextMarker(_el$82.nextSibling), _el$76 = _el$83.nextSibling, _el$78 = _el$76.firstChild, [_el$79, _co$15] = getNextMarker(_el$78.nextSibling), _el$80 = _el$79.nextSibling, [_el$81, _co$16] = getNextMarker(_el$80.nextSibling);
666
- insert(_el$73, createComponent(Show, {
677
+ var _el$70 = getNextElement(_tmpl$26), _el$79 = _el$70.firstChild, [_el$80, _co$16] = getNextMarker(_el$79.nextSibling), _el$73 = _el$80.nextSibling, _el$75 = _el$73.firstChild, [_el$76, _co$14] = getNextMarker(_el$75.nextSibling), _el$77 = _el$76.nextSibling, [_el$78, _co$15] = getNextMarker(_el$77.nextSibling);
678
+ insert(_el$70, createComponent(Show, {
667
679
  get when() {
668
680
  var _a;
669
681
  return (((_a = props.field.options) == null ? void 0 : _a.length) || 0) > 10;
670
682
  },
671
683
  get children() {
672
- var _el$74 = getNextElement(_tmpl$24), _el$75 = _el$74.firstChild;
673
- _el$75.$$input = (e) => setFilter(e.currentTarget.value);
674
- effect(() => setProperty(_el$75, "value", filter()));
684
+ var _el$71 = getNextElement(_tmpl$24), _el$72 = _el$71.firstChild;
685
+ _el$72.$$input = (e) => setFilter(e.currentTarget.value);
686
+ effect(() => setAttribute(_el$72, "placeholder", strings.filterPlaceholder));
687
+ effect(() => setProperty(_el$72, "value", filter()));
675
688
  runHydrationEvents();
676
- return _el$74;
689
+ return _el$71;
677
690
  }
678
- }), _el$83, _co$17);
679
- insert(_el$76, createComponent(For, {
691
+ }), _el$80, _co$16);
692
+ insert(_el$73, createComponent(For, {
680
693
  get each() {
681
694
  return filteredOptions();
682
695
  },
683
696
  children: (option) => (() => {
684
- var _el$92 = getNextElement(_tmpl$29), _el$93 = _el$92.firstChild, _el$94 = _el$93.nextSibling;
685
- _el$93.addEventListener("change", () => toggle(option.value));
686
- insert(_el$94, () => option.label);
687
- effect(() => setProperty(_el$93, "checked", (props.value || []).includes(option.value)));
688
- return _el$92;
697
+ var _el$89 = getNextElement(_tmpl$29), _el$90 = _el$89.firstChild, _el$91 = _el$90.nextSibling;
698
+ _el$90.addEventListener("change", () => toggle(option.value));
699
+ insert(_el$91, () => option.label);
700
+ effect(() => setProperty(_el$90, "checked", (props.value || []).includes(option.value)));
701
+ return _el$89;
689
702
  })()
690
- }), _el$79, _co$15);
691
- insert(_el$76, createComponent(Show, {
703
+ }), _el$76, _co$14);
704
+ insert(_el$73, createComponent(Show, {
692
705
  get when() {
693
706
  return filteredOptions().length === 0;
694
707
  },
695
708
  get children() {
696
- return getNextElement(_tmpl$25);
709
+ var _el$74 = getNextElement(_tmpl$25);
710
+ insert(_el$74, () => strings.fieldNoMatches);
711
+ return _el$74;
697
712
  }
698
- }), _el$81, _co$16);
699
- return _el$73;
713
+ }), _el$78, _co$15);
714
+ return _el$70;
700
715
  }
701
- }), _el$87, _co$19);
716
+ }), _el$84, _co$18);
702
717
  effect((_p$) => {
703
718
  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";
704
- _v$77 !== _p$.e && setProperty(_el$71, "disabled", _p$.e = _v$77);
705
- _v$78 !== _p$.t && className(_el$71, _p$.t = _v$78);
706
- _v$79 !== _p$.a && className(_el$72, _p$.a = _v$79);
719
+ _v$77 !== _p$.e && setProperty(_el$68, "disabled", _p$.e = _v$77);
720
+ _v$78 !== _p$.t && className(_el$68, _p$.t = _v$78);
721
+ _v$79 !== _p$.a && className(_el$69, _p$.a = _v$79);
707
722
  return _p$;
708
723
  }, {
709
724
  e: void 0,
@@ -711,10 +726,11 @@ const MultiSelectField = (props) => {
711
726
  a: void 0
712
727
  });
713
728
  runHydrationEvents();
714
- return _el$69;
729
+ return _el$66;
715
730
  })();
716
731
  };
717
732
  const AutocompleteField = (props) => {
733
+ const strings = useMCPUIStrings();
718
734
  const [query, setQuery] = createSignal("");
719
735
  const [suggestions, setSuggestions] = createSignal([]);
720
736
  const [isOpen, setIsOpen] = createSignal(false);
@@ -869,16 +885,18 @@ const AutocompleteField = (props) => {
869
885
  if (debounceTimer) clearTimeout(debounceTimer);
870
886
  });
871
887
  return (() => {
872
- var _el$95 = getNextElement(_tmpl$32), _el$100 = _el$95.firstChild, [_el$101, _co$21] = getNextMarker(_el$100.nextSibling), _el$102 = _el$101.nextSibling, [_el$103, _co$22] = getNextMarker(_el$102.nextSibling), _el$98 = _el$103.nextSibling, _el$104 = _el$98.nextSibling, [_el$105, _co$23] = getNextMarker(_el$104.nextSibling);
873
- insert(_el$95, createComponent(Show, {
888
+ var _el$92 = getNextElement(_tmpl$32), _el$100 = _el$92.firstChild, [_el$101, _co$21] = getNextMarker(_el$100.nextSibling), _el$102 = _el$101.nextSibling, [_el$103, _co$22] = getNextMarker(_el$102.nextSibling), _el$98 = _el$103.nextSibling, _el$104 = _el$98.nextSibling, [_el$105, _co$23] = getNextMarker(_el$104.nextSibling);
889
+ insert(_el$92, createComponent(Show, {
874
890
  get when() {
875
891
  return resolving();
876
892
  },
877
893
  get children() {
878
- return getNextElement(_tmpl$30);
894
+ var _el$93 = getNextElement(_tmpl$30), _el$94 = _el$93.firstChild, _el$95 = _el$94.nextSibling, [_el$96, _co$20] = getNextMarker(_el$95.nextSibling);
895
+ insert(_el$93, () => strings.fieldResolving, _el$96, _co$20);
896
+ return _el$93;
879
897
  }
880
898
  }), _el$101, _co$21);
881
- insert(_el$95, createComponent(Show, {
899
+ insert(_el$92, createComponent(Show, {
882
900
  get when() {
883
901
  return memo(() => !!isMultiple())() && selectedValues().length > 0;
884
902
  },
@@ -892,7 +910,9 @@ const AutocompleteField = (props) => {
892
910
  var _el$106 = getNextElement(_tmpl$28), _el$108 = _el$106.firstChild, [_el$109, _co$24] = getNextMarker(_el$108.nextSibling), _el$107 = _el$109.nextSibling;
893
911
  insert(_el$106, () => getLabel(val), _el$109, _co$24);
894
912
  _el$107.$$click = () => removeChip(val);
895
- effect(() => setAttribute(_el$107, "aria-label", `Remove ${getLabel(val)}`));
913
+ effect(() => setAttribute(_el$107, "aria-label", formatMCPUIString(strings.removeItem, {
914
+ name: getLabel(val)
915
+ })));
896
916
  runHydrationEvents();
897
917
  return _el$106;
898
918
  })()
@@ -905,7 +925,7 @@ const AutocompleteField = (props) => {
905
925
  if (suggestions().length) setIsOpen(true);
906
926
  });
907
927
  _el$98.$$input = (e) => handleInput(e.currentTarget.value);
908
- insert(_el$95, createComponent(Show, {
928
+ insert(_el$92, createComponent(Show, {
909
929
  get when() {
910
930
  return memo(() => !!isOpen())() && suggestions().length > 0;
911
931
  },
@@ -948,7 +968,7 @@ const AutocompleteField = (props) => {
948
968
  }
949
969
  }), _el$105, _co$23);
950
970
  effect((_p$) => {
951
- var _v$80 = isMultiple() && selectedValues().length ? "Add more..." : props.field.placeholder, _v$81 = props.disabled || resolving(), _v$82 = props.baseClass;
971
+ var _v$80 = isMultiple() && selectedValues().length ? strings.fieldAddMorePlaceholder : props.field.placeholder, _v$81 = props.disabled || resolving(), _v$82 = props.baseClass;
952
972
  _v$80 !== _p$.e && setAttribute(_el$98, "placeholder", _p$.e = _v$80);
953
973
  _v$81 !== _p$.t && setProperty(_el$98, "disabled", _p$.t = _v$81);
954
974
  _v$82 !== _p$.a && className(_el$98, _p$.a = _v$82);
@@ -960,10 +980,11 @@ const AutocompleteField = (props) => {
960
980
  });
961
981
  effect(() => setProperty(_el$98, "value", query()));
962
982
  runHydrationEvents();
963
- return _el$95;
983
+ return _el$92;
964
984
  })();
965
985
  };
966
986
  const TagsField = (props) => {
987
+ const strings = useMCPUIStrings();
967
988
  const [input, setInput] = createSignal("");
968
989
  const addTag = () => {
969
990
  const val = input().trim();
@@ -1000,7 +1021,9 @@ const TagsField = (props) => {
1000
1021
  var _el$121 = getNextElement(_tmpl$28), _el$123 = _el$121.firstChild, [_el$124, _co$28] = getNextMarker(_el$123.nextSibling), _el$122 = _el$124.nextSibling;
1001
1022
  insert(_el$121, tag, _el$124, _co$28);
1002
1023
  _el$122.$$click = () => removeTag(tag);
1003
- setAttribute(_el$122, "aria-label", `Remove ${tag}`);
1024
+ effect(() => setAttribute(_el$122, "aria-label", formatMCPUIString(strings.removeItem, {
1025
+ name: tag
1026
+ })));
1004
1027
  runHydrationEvents();
1005
1028
  return _el$121;
1006
1029
  })()
@@ -1012,7 +1035,7 @@ const TagsField = (props) => {
1012
1035
  _el$118.$$keydown = handleKeyDown;
1013
1036
  _el$118.$$input = (e) => setInput(e.currentTarget.value);
1014
1037
  effect((_p$) => {
1015
- var _v$85 = props.placeholder || "Type and press Enter...", _v$86 = props.disabled, _v$87 = props.baseClass;
1038
+ var _v$85 = props.placeholder || strings.fieldTagsPlaceholder, _v$86 = props.disabled, _v$87 = props.baseClass;
1016
1039
  _v$85 !== _p$.e && setAttribute(_el$118, "placeholder", _p$.e = _v$85);
1017
1040
  _v$86 !== _p$.t && setProperty(_el$118, "disabled", _p$.t = _v$86);
1018
1041
  _v$87 !== _p$.a && className(_el$118, _p$.a = _v$87);