@frontmcp/ui 0.5.1 → 0.6.1

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 (805) hide show
  1. package/README.md +140 -362
  2. package/bridge/adapters/base-adapter.d.ts +104 -0
  3. package/bridge/adapters/base-adapter.d.ts.map +1 -0
  4. package/bridge/adapters/claude.adapter.d.ts +67 -0
  5. package/bridge/adapters/claude.adapter.d.ts.map +1 -0
  6. package/bridge/adapters/ext-apps.adapter.d.ts +143 -0
  7. package/bridge/adapters/ext-apps.adapter.d.ts.map +1 -0
  8. package/bridge/adapters/gemini.adapter.d.ts +64 -0
  9. package/bridge/adapters/gemini.adapter.d.ts.map +1 -0
  10. package/bridge/adapters/generic.adapter.d.ts +56 -0
  11. package/bridge/adapters/generic.adapter.d.ts.map +1 -0
  12. package/bridge/adapters/index.d.ts +26 -0
  13. package/bridge/adapters/index.d.ts.map +1 -0
  14. package/bridge/adapters/openai.adapter.d.ts +65 -0
  15. package/bridge/adapters/openai.adapter.d.ts.map +1 -0
  16. package/bridge/core/adapter-registry.d.ts +122 -0
  17. package/bridge/core/adapter-registry.d.ts.map +1 -0
  18. package/bridge/core/bridge-factory.d.ts +199 -0
  19. package/bridge/core/bridge-factory.d.ts.map +1 -0
  20. package/bridge/core/index.d.ts +10 -0
  21. package/bridge/core/index.d.ts.map +1 -0
  22. package/bridge/index.d.ts +62 -0
  23. package/bridge/index.d.ts.map +1 -0
  24. package/bridge/index.js +2540 -0
  25. package/bridge/runtime/iife-generator.d.ts +62 -0
  26. package/bridge/runtime/iife-generator.d.ts.map +1 -0
  27. package/bridge/runtime/index.d.ts +10 -0
  28. package/bridge/runtime/index.d.ts.map +1 -0
  29. package/bridge/types.d.ts +386 -0
  30. package/bridge/types.d.ts.map +1 -0
  31. package/bundler/bundler.d.ts +208 -0
  32. package/bundler/bundler.d.ts.map +1 -0
  33. package/bundler/cache.d.ts +173 -0
  34. package/bundler/cache.d.ts.map +1 -0
  35. package/bundler/file-cache/component-builder.d.ts +167 -0
  36. package/bundler/file-cache/component-builder.d.ts.map +1 -0
  37. package/bundler/file-cache/hash-calculator.d.ts +155 -0
  38. package/bundler/file-cache/hash-calculator.d.ts.map +1 -0
  39. package/bundler/file-cache/index.d.ts +12 -0
  40. package/bundler/file-cache/index.d.ts.map +1 -0
  41. package/bundler/file-cache/storage/filesystem.d.ts +149 -0
  42. package/bundler/file-cache/storage/filesystem.d.ts.map +1 -0
  43. package/bundler/file-cache/storage/index.d.ts +11 -0
  44. package/bundler/file-cache/storage/index.d.ts.map +1 -0
  45. package/bundler/file-cache/storage/interface.d.ts +152 -0
  46. package/bundler/file-cache/storage/interface.d.ts.map +1 -0
  47. package/bundler/file-cache/storage/redis.d.ts +139 -0
  48. package/bundler/file-cache/storage/redis.d.ts.map +1 -0
  49. package/bundler/index.d.ts +43 -0
  50. package/bundler/index.d.ts.map +1 -0
  51. package/bundler/index.js +3707 -0
  52. package/bundler/sandbox/enclave-adapter.d.ts +121 -0
  53. package/bundler/sandbox/enclave-adapter.d.ts.map +1 -0
  54. package/bundler/sandbox/executor.d.ts +14 -0
  55. package/bundler/sandbox/executor.d.ts.map +1 -0
  56. package/bundler/sandbox/policy.d.ts +62 -0
  57. package/bundler/sandbox/policy.d.ts.map +1 -0
  58. package/bundler/types.d.ts +702 -0
  59. package/bundler/types.d.ts.map +1 -0
  60. package/components/alert.d.ts +66 -0
  61. package/components/alert.d.ts.map +1 -0
  62. package/components/alert.schema.d.ts +98 -0
  63. package/components/alert.schema.d.ts.map +1 -0
  64. package/components/avatar.d.ts +77 -0
  65. package/components/avatar.d.ts.map +1 -0
  66. package/components/avatar.schema.d.ts +170 -0
  67. package/components/avatar.schema.d.ts.map +1 -0
  68. package/components/badge.d.ts +64 -0
  69. package/components/badge.d.ts.map +1 -0
  70. package/components/badge.schema.d.ts +91 -0
  71. package/components/badge.schema.d.ts.map +1 -0
  72. package/components/button.d.ts +100 -0
  73. package/components/button.d.ts.map +1 -0
  74. package/components/button.schema.d.ts +120 -0
  75. package/components/button.schema.d.ts.map +1 -0
  76. package/components/card.d.ts +53 -0
  77. package/components/card.d.ts.map +1 -0
  78. package/components/card.schema.d.ts +93 -0
  79. package/components/card.schema.d.ts.map +1 -0
  80. package/components/form.d.ts +212 -0
  81. package/components/form.d.ts.map +1 -0
  82. package/components/form.schema.d.ts +365 -0
  83. package/components/form.schema.d.ts.map +1 -0
  84. package/components/index.d.ts +29 -0
  85. package/components/index.d.ts.map +1 -0
  86. package/components/index.js +2525 -0
  87. package/components/list.d.ts +121 -0
  88. package/components/list.d.ts.map +1 -0
  89. package/components/list.schema.d.ts +129 -0
  90. package/components/list.schema.d.ts.map +1 -0
  91. package/components/modal.d.ts +100 -0
  92. package/components/modal.d.ts.map +1 -0
  93. package/components/modal.schema.d.ts +151 -0
  94. package/components/modal.schema.d.ts.map +1 -0
  95. package/components/table.d.ts +91 -0
  96. package/components/table.d.ts.map +1 -0
  97. package/components/table.schema.d.ts +123 -0
  98. package/components/table.schema.d.ts.map +1 -0
  99. package/esm/bridge/adapters/base-adapter.d.ts +104 -0
  100. package/esm/bridge/adapters/base-adapter.d.ts.map +1 -0
  101. package/esm/bridge/adapters/claude.adapter.d.ts +67 -0
  102. package/esm/bridge/adapters/claude.adapter.d.ts.map +1 -0
  103. package/esm/bridge/adapters/ext-apps.adapter.d.ts +143 -0
  104. package/esm/bridge/adapters/ext-apps.adapter.d.ts.map +1 -0
  105. package/esm/bridge/adapters/gemini.adapter.d.ts +64 -0
  106. package/esm/bridge/adapters/gemini.adapter.d.ts.map +1 -0
  107. package/esm/bridge/adapters/generic.adapter.d.ts +56 -0
  108. package/esm/bridge/adapters/generic.adapter.d.ts.map +1 -0
  109. package/esm/bridge/adapters/index.d.ts +26 -0
  110. package/esm/bridge/adapters/index.d.ts.map +1 -0
  111. package/esm/bridge/adapters/openai.adapter.d.ts +65 -0
  112. package/esm/bridge/adapters/openai.adapter.d.ts.map +1 -0
  113. package/esm/bridge/core/adapter-registry.d.ts +122 -0
  114. package/esm/bridge/core/adapter-registry.d.ts.map +1 -0
  115. package/esm/bridge/core/bridge-factory.d.ts +199 -0
  116. package/esm/bridge/core/bridge-factory.d.ts.map +1 -0
  117. package/esm/bridge/core/index.d.ts +10 -0
  118. package/esm/bridge/core/index.d.ts.map +1 -0
  119. package/esm/bridge/index.d.ts +62 -0
  120. package/esm/bridge/index.d.ts.map +1 -0
  121. package/esm/bridge/index.js +2487 -0
  122. package/esm/bridge/runtime/iife-generator.d.ts +62 -0
  123. package/esm/bridge/runtime/iife-generator.d.ts.map +1 -0
  124. package/esm/bridge/runtime/index.d.ts +10 -0
  125. package/esm/bridge/runtime/index.d.ts.map +1 -0
  126. package/esm/bridge/types.d.ts +386 -0
  127. package/esm/bridge/types.d.ts.map +1 -0
  128. package/esm/bundler/bundler.d.ts +208 -0
  129. package/esm/bundler/bundler.d.ts.map +1 -0
  130. package/esm/bundler/cache.d.ts +173 -0
  131. package/esm/bundler/cache.d.ts.map +1 -0
  132. package/esm/bundler/file-cache/component-builder.d.ts +167 -0
  133. package/esm/bundler/file-cache/component-builder.d.ts.map +1 -0
  134. package/esm/bundler/file-cache/hash-calculator.d.ts +155 -0
  135. package/esm/bundler/file-cache/hash-calculator.d.ts.map +1 -0
  136. package/esm/bundler/file-cache/index.d.ts +12 -0
  137. package/esm/bundler/file-cache/index.d.ts.map +1 -0
  138. package/esm/bundler/file-cache/storage/filesystem.d.ts +149 -0
  139. package/esm/bundler/file-cache/storage/filesystem.d.ts.map +1 -0
  140. package/esm/bundler/file-cache/storage/index.d.ts +11 -0
  141. package/esm/bundler/file-cache/storage/index.d.ts.map +1 -0
  142. package/esm/bundler/file-cache/storage/interface.d.ts +152 -0
  143. package/esm/bundler/file-cache/storage/interface.d.ts.map +1 -0
  144. package/esm/bundler/file-cache/storage/redis.d.ts +139 -0
  145. package/esm/bundler/file-cache/storage/redis.d.ts.map +1 -0
  146. package/esm/bundler/index.d.ts +43 -0
  147. package/esm/bundler/index.d.ts.map +1 -0
  148. package/esm/bundler/index.js +3640 -0
  149. package/esm/bundler/sandbox/enclave-adapter.d.ts +121 -0
  150. package/esm/bundler/sandbox/enclave-adapter.d.ts.map +1 -0
  151. package/esm/bundler/sandbox/executor.d.ts +14 -0
  152. package/esm/bundler/sandbox/executor.d.ts.map +1 -0
  153. package/esm/bundler/sandbox/policy.d.ts +62 -0
  154. package/esm/bundler/sandbox/policy.d.ts.map +1 -0
  155. package/esm/bundler/types.d.ts +702 -0
  156. package/esm/bundler/types.d.ts.map +1 -0
  157. package/esm/components/alert.d.ts +66 -0
  158. package/esm/components/alert.d.ts.map +1 -0
  159. package/esm/components/alert.schema.d.ts +98 -0
  160. package/esm/components/alert.schema.d.ts.map +1 -0
  161. package/esm/components/avatar.d.ts +77 -0
  162. package/esm/components/avatar.d.ts.map +1 -0
  163. package/esm/components/avatar.schema.d.ts +170 -0
  164. package/esm/components/avatar.schema.d.ts.map +1 -0
  165. package/esm/components/badge.d.ts +64 -0
  166. package/esm/components/badge.d.ts.map +1 -0
  167. package/esm/components/badge.schema.d.ts +91 -0
  168. package/esm/components/badge.schema.d.ts.map +1 -0
  169. package/esm/components/button.d.ts +100 -0
  170. package/esm/components/button.d.ts.map +1 -0
  171. package/esm/components/button.schema.d.ts +120 -0
  172. package/esm/components/button.schema.d.ts.map +1 -0
  173. package/esm/components/card.d.ts +53 -0
  174. package/esm/components/card.d.ts.map +1 -0
  175. package/esm/components/card.schema.d.ts +93 -0
  176. package/esm/components/card.schema.d.ts.map +1 -0
  177. package/esm/components/form.d.ts +212 -0
  178. package/esm/components/form.d.ts.map +1 -0
  179. package/esm/components/form.schema.d.ts +365 -0
  180. package/esm/components/form.schema.d.ts.map +1 -0
  181. package/esm/components/index.d.ts +29 -0
  182. package/esm/components/index.d.ts.map +1 -0
  183. package/esm/components/index.js +2396 -0
  184. package/esm/components/list.d.ts +121 -0
  185. package/esm/components/list.d.ts.map +1 -0
  186. package/esm/components/list.schema.d.ts +129 -0
  187. package/esm/components/list.schema.d.ts.map +1 -0
  188. package/esm/components/modal.d.ts +100 -0
  189. package/esm/components/modal.d.ts.map +1 -0
  190. package/esm/components/modal.schema.d.ts +151 -0
  191. package/esm/components/modal.schema.d.ts.map +1 -0
  192. package/esm/components/table.d.ts +91 -0
  193. package/esm/components/table.d.ts.map +1 -0
  194. package/esm/components/table.schema.d.ts +123 -0
  195. package/esm/components/table.schema.d.ts.map +1 -0
  196. package/esm/index.d.ts +40 -0
  197. package/esm/index.d.ts.map +1 -0
  198. package/esm/index.js +8326 -0
  199. package/esm/layouts/base.d.ts +86 -0
  200. package/esm/layouts/base.d.ts.map +1 -0
  201. package/esm/layouts/index.d.ts +8 -0
  202. package/esm/layouts/index.d.ts.map +1 -0
  203. package/esm/layouts/index.js +409 -0
  204. package/esm/layouts/presets.d.ts +134 -0
  205. package/esm/layouts/presets.d.ts.map +1 -0
  206. package/esm/package.json +72 -0
  207. package/esm/pages/consent.d.ts +117 -0
  208. package/esm/pages/consent.d.ts.map +1 -0
  209. package/esm/pages/error.d.ts +101 -0
  210. package/esm/pages/error.d.ts.map +1 -0
  211. package/esm/pages/index.d.ts +9 -0
  212. package/esm/pages/index.d.ts.map +1 -0
  213. package/esm/pages/index.js +1036 -0
  214. package/esm/react/Alert.d.ts +101 -0
  215. package/esm/react/Alert.d.ts.map +1 -0
  216. package/esm/react/Badge.d.ts +100 -0
  217. package/esm/react/Badge.d.ts.map +1 -0
  218. package/esm/react/Button.d.ts +108 -0
  219. package/esm/react/Button.d.ts.map +1 -0
  220. package/esm/react/Card.d.ts +103 -0
  221. package/esm/react/Card.d.ts.map +1 -0
  222. package/esm/react/hooks/context.d.ts +179 -0
  223. package/esm/react/hooks/context.d.ts.map +1 -0
  224. package/esm/react/hooks/index.d.ts +42 -0
  225. package/esm/react/hooks/index.d.ts.map +1 -0
  226. package/esm/react/hooks/tools.d.ts +284 -0
  227. package/esm/react/hooks/tools.d.ts.map +1 -0
  228. package/esm/react/index.d.ts +80 -0
  229. package/esm/react/index.d.ts.map +1 -0
  230. package/esm/react/index.js +3124 -0
  231. package/esm/react/types.d.ts +105 -0
  232. package/esm/react/types.d.ts.map +1 -0
  233. package/esm/react/utils.d.ts +43 -0
  234. package/esm/react/utils.d.ts.map +1 -0
  235. package/esm/render/index.d.ts +8 -0
  236. package/esm/render/index.d.ts.map +1 -0
  237. package/esm/render/index.js +45 -0
  238. package/esm/render/prerender.d.ts +57 -0
  239. package/esm/render/prerender.d.ts.map +1 -0
  240. package/esm/renderers/index.d.ts +21 -0
  241. package/esm/renderers/index.d.ts.map +1 -0
  242. package/esm/renderers/index.js +381 -0
  243. package/esm/renderers/react.adapter.d.ts +70 -0
  244. package/esm/renderers/react.adapter.d.ts.map +1 -0
  245. package/esm/renderers/react.renderer.d.ts +96 -0
  246. package/esm/renderers/react.renderer.d.ts.map +1 -0
  247. package/esm/universal/UniversalApp.d.ts +108 -0
  248. package/esm/universal/UniversalApp.d.ts.map +1 -0
  249. package/esm/universal/cached-runtime.d.ts +115 -0
  250. package/esm/universal/cached-runtime.d.ts.map +1 -0
  251. package/esm/universal/context.d.ts +122 -0
  252. package/esm/universal/context.d.ts.map +1 -0
  253. package/esm/universal/index.d.ts +57 -0
  254. package/esm/universal/index.d.ts.map +1 -0
  255. package/esm/universal/index.js +1755 -0
  256. package/esm/universal/renderers/html.renderer.d.ts +37 -0
  257. package/esm/universal/renderers/html.renderer.d.ts.map +1 -0
  258. package/esm/universal/renderers/index.d.ts +112 -0
  259. package/esm/universal/renderers/index.d.ts.map +1 -0
  260. package/esm/universal/renderers/markdown.renderer.d.ts +33 -0
  261. package/esm/universal/renderers/markdown.renderer.d.ts.map +1 -0
  262. package/esm/universal/renderers/mdx.renderer.d.ts +38 -0
  263. package/esm/universal/renderers/mdx.renderer.d.ts.map +1 -0
  264. package/esm/universal/renderers/react.renderer.d.ts +46 -0
  265. package/esm/universal/renderers/react.renderer.d.ts.map +1 -0
  266. package/esm/universal/runtime-builder.d.ts +33 -0
  267. package/esm/universal/runtime-builder.d.ts.map +1 -0
  268. package/esm/universal/store.d.ts +135 -0
  269. package/esm/universal/store.d.ts.map +1 -0
  270. package/esm/universal/types.d.ts +199 -0
  271. package/esm/universal/types.d.ts.map +1 -0
  272. package/esm/web-components/core/attribute-parser.d.ts +82 -0
  273. package/esm/web-components/core/attribute-parser.d.ts.map +1 -0
  274. package/esm/web-components/core/base-element.d.ts +197 -0
  275. package/esm/web-components/core/base-element.d.ts.map +1 -0
  276. package/esm/web-components/core/index.d.ts +9 -0
  277. package/esm/web-components/core/index.d.ts.map +1 -0
  278. package/esm/web-components/elements/fmcp-alert.d.ts +46 -0
  279. package/esm/web-components/elements/fmcp-alert.d.ts.map +1 -0
  280. package/esm/web-components/elements/fmcp-badge.d.ts +47 -0
  281. package/esm/web-components/elements/fmcp-badge.d.ts.map +1 -0
  282. package/esm/web-components/elements/fmcp-button.d.ts +117 -0
  283. package/esm/web-components/elements/fmcp-button.d.ts.map +1 -0
  284. package/esm/web-components/elements/fmcp-card.d.ts +53 -0
  285. package/esm/web-components/elements/fmcp-card.d.ts.map +1 -0
  286. package/esm/web-components/elements/fmcp-input.d.ts +96 -0
  287. package/esm/web-components/elements/fmcp-input.d.ts.map +1 -0
  288. package/esm/web-components/elements/fmcp-select.d.ts +100 -0
  289. package/esm/web-components/elements/fmcp-select.d.ts.map +1 -0
  290. package/esm/web-components/elements/index.d.ts +13 -0
  291. package/esm/web-components/elements/index.d.ts.map +1 -0
  292. package/esm/web-components/index.d.ts +50 -0
  293. package/esm/web-components/index.d.ts.map +1 -0
  294. package/esm/web-components/index.js +1993 -0
  295. package/esm/web-components/register.d.ts +57 -0
  296. package/esm/web-components/register.d.ts.map +1 -0
  297. package/esm/web-components/types.d.ts +122 -0
  298. package/esm/web-components/types.d.ts.map +1 -0
  299. package/esm/widgets/index.d.ts +8 -0
  300. package/esm/widgets/index.d.ts.map +1 -0
  301. package/esm/widgets/index.js +883 -0
  302. package/esm/widgets/progress.d.ts +133 -0
  303. package/esm/widgets/progress.d.ts.map +1 -0
  304. package/esm/widgets/resource.d.ts +163 -0
  305. package/esm/widgets/resource.d.ts.map +1 -0
  306. package/index.d.ts +40 -0
  307. package/index.d.ts.map +1 -0
  308. package/index.js +8526 -0
  309. package/layouts/base.d.ts +86 -0
  310. package/layouts/base.d.ts.map +1 -0
  311. package/layouts/index.d.ts +8 -0
  312. package/layouts/index.d.ts.map +1 -0
  313. package/layouts/index.js +437 -0
  314. package/layouts/presets.d.ts +134 -0
  315. package/layouts/presets.d.ts.map +1 -0
  316. package/package.json +33 -110
  317. package/pages/consent.d.ts +117 -0
  318. package/pages/consent.d.ts.map +1 -0
  319. package/pages/error.d.ts +101 -0
  320. package/pages/error.d.ts.map +1 -0
  321. package/pages/index.d.ts +9 -0
  322. package/pages/index.d.ts.map +1 -0
  323. package/pages/index.js +1065 -0
  324. package/react/Alert.d.ts +101 -0
  325. package/react/Alert.d.ts.map +1 -0
  326. package/react/Badge.d.ts +100 -0
  327. package/react/Badge.d.ts.map +1 -0
  328. package/react/Button.d.ts +108 -0
  329. package/react/Button.d.ts.map +1 -0
  330. package/react/Card.d.ts +103 -0
  331. package/react/Card.d.ts.map +1 -0
  332. package/react/hooks/context.d.ts +179 -0
  333. package/react/hooks/context.d.ts.map +1 -0
  334. package/react/hooks/index.d.ts +42 -0
  335. package/react/hooks/index.d.ts.map +1 -0
  336. package/react/hooks/tools.d.ts +284 -0
  337. package/react/hooks/tools.d.ts.map +1 -0
  338. package/react/index.d.ts +80 -0
  339. package/react/index.d.ts.map +1 -0
  340. package/react/index.js +3160 -0
  341. package/react/types.d.ts +105 -0
  342. package/react/types.d.ts.map +1 -0
  343. package/react/utils.d.ts +43 -0
  344. package/react/utils.d.ts.map +1 -0
  345. package/render/index.d.ts +8 -0
  346. package/render/index.d.ts.map +1 -0
  347. package/render/index.js +77 -0
  348. package/render/prerender.d.ts +57 -0
  349. package/render/prerender.d.ts.map +1 -0
  350. package/renderers/index.d.ts +21 -0
  351. package/renderers/index.d.ts.map +1 -0
  352. package/renderers/index.js +416 -0
  353. package/renderers/react.adapter.d.ts +70 -0
  354. package/renderers/react.adapter.d.ts.map +1 -0
  355. package/renderers/react.renderer.d.ts +96 -0
  356. package/renderers/react.renderer.d.ts.map +1 -0
  357. package/universal/UniversalApp.d.ts +108 -0
  358. package/universal/UniversalApp.d.ts.map +1 -0
  359. package/universal/cached-runtime.d.ts +115 -0
  360. package/universal/cached-runtime.d.ts.map +1 -0
  361. package/universal/context.d.ts +122 -0
  362. package/universal/context.d.ts.map +1 -0
  363. package/universal/index.d.ts +57 -0
  364. package/universal/index.d.ts.map +1 -0
  365. package/universal/index.js +1841 -0
  366. package/universal/renderers/html.renderer.d.ts +37 -0
  367. package/universal/renderers/html.renderer.d.ts.map +1 -0
  368. package/universal/renderers/index.d.ts +112 -0
  369. package/universal/renderers/index.d.ts.map +1 -0
  370. package/universal/renderers/markdown.renderer.d.ts +33 -0
  371. package/universal/renderers/markdown.renderer.d.ts.map +1 -0
  372. package/universal/renderers/mdx.renderer.d.ts +38 -0
  373. package/universal/renderers/mdx.renderer.d.ts.map +1 -0
  374. package/universal/renderers/react.renderer.d.ts +46 -0
  375. package/universal/renderers/react.renderer.d.ts.map +1 -0
  376. package/universal/runtime-builder.d.ts +33 -0
  377. package/universal/runtime-builder.d.ts.map +1 -0
  378. package/universal/store.d.ts +135 -0
  379. package/universal/store.d.ts.map +1 -0
  380. package/universal/types.d.ts +199 -0
  381. package/universal/types.d.ts.map +1 -0
  382. package/web-components/core/attribute-parser.d.ts +82 -0
  383. package/web-components/core/attribute-parser.d.ts.map +1 -0
  384. package/web-components/core/base-element.d.ts +197 -0
  385. package/web-components/core/base-element.d.ts.map +1 -0
  386. package/web-components/core/index.d.ts +9 -0
  387. package/web-components/core/index.d.ts.map +1 -0
  388. package/web-components/elements/fmcp-alert.d.ts +46 -0
  389. package/web-components/elements/fmcp-alert.d.ts.map +1 -0
  390. package/web-components/elements/fmcp-badge.d.ts +47 -0
  391. package/web-components/elements/fmcp-badge.d.ts.map +1 -0
  392. package/web-components/elements/fmcp-button.d.ts +117 -0
  393. package/web-components/elements/fmcp-button.d.ts.map +1 -0
  394. package/web-components/elements/fmcp-card.d.ts +53 -0
  395. package/web-components/elements/fmcp-card.d.ts.map +1 -0
  396. package/web-components/elements/fmcp-input.d.ts +96 -0
  397. package/web-components/elements/fmcp-input.d.ts.map +1 -0
  398. package/web-components/elements/fmcp-select.d.ts +100 -0
  399. package/web-components/elements/fmcp-select.d.ts.map +1 -0
  400. package/web-components/elements/index.d.ts +13 -0
  401. package/web-components/elements/index.d.ts.map +1 -0
  402. package/web-components/index.d.ts +50 -0
  403. package/web-components/index.d.ts.map +1 -0
  404. package/web-components/index.js +2028 -0
  405. package/web-components/register.d.ts +57 -0
  406. package/web-components/register.d.ts.map +1 -0
  407. package/web-components/types.d.ts +122 -0
  408. package/web-components/types.d.ts.map +1 -0
  409. package/widgets/index.d.ts +8 -0
  410. package/widgets/index.d.ts.map +1 -0
  411. package/widgets/index.js +910 -0
  412. package/widgets/progress.d.ts +133 -0
  413. package/widgets/progress.d.ts.map +1 -0
  414. package/widgets/resource.d.ts +163 -0
  415. package/widgets/resource.d.ts.map +1 -0
  416. package/src/adapters/index.d.ts +0 -10
  417. package/src/adapters/index.js +0 -18
  418. package/src/adapters/index.js.map +0 -1
  419. package/src/adapters/platform-meta.d.ts +0 -165
  420. package/src/adapters/platform-meta.js +0 -310
  421. package/src/adapters/platform-meta.js.map +0 -1
  422. package/src/base-template/bridge.d.ts +0 -89
  423. package/src/base-template/bridge.js +0 -452
  424. package/src/base-template/bridge.js.map +0 -1
  425. package/src/base-template/default-base-template.d.ts +0 -91
  426. package/src/base-template/default-base-template.js +0 -435
  427. package/src/base-template/default-base-template.js.map +0 -1
  428. package/src/base-template/index.d.ts +0 -14
  429. package/src/base-template/index.js +0 -30
  430. package/src/base-template/index.js.map +0 -1
  431. package/src/base-template/polyfills.d.ts +0 -30
  432. package/src/base-template/polyfills.js +0 -190
  433. package/src/base-template/polyfills.js.map +0 -1
  434. package/src/base-template/theme-styles.d.ts +0 -73
  435. package/src/base-template/theme-styles.js +0 -95
  436. package/src/base-template/theme-styles.js.map +0 -1
  437. package/src/bridge/adapters/base-adapter.d.ts +0 -103
  438. package/src/bridge/adapters/base-adapter.js +0 -314
  439. package/src/bridge/adapters/base-adapter.js.map +0 -1
  440. package/src/bridge/adapters/claude.adapter.d.ts +0 -66
  441. package/src/bridge/adapters/claude.adapter.js +0 -145
  442. package/src/bridge/adapters/claude.adapter.js.map +0 -1
  443. package/src/bridge/adapters/ext-apps.adapter.d.ts +0 -142
  444. package/src/bridge/adapters/ext-apps.adapter.js +0 -416
  445. package/src/bridge/adapters/ext-apps.adapter.js.map +0 -1
  446. package/src/bridge/adapters/gemini.adapter.d.ts +0 -63
  447. package/src/bridge/adapters/gemini.adapter.js +0 -160
  448. package/src/bridge/adapters/gemini.adapter.js.map +0 -1
  449. package/src/bridge/adapters/generic.adapter.d.ts +0 -55
  450. package/src/bridge/adapters/generic.adapter.js +0 -108
  451. package/src/bridge/adapters/generic.adapter.js.map +0 -1
  452. package/src/bridge/adapters/index.d.ts +0 -25
  453. package/src/bridge/adapters/index.js +0 -65
  454. package/src/bridge/adapters/index.js.map +0 -1
  455. package/src/bridge/adapters/openai.adapter.d.ts +0 -64
  456. package/src/bridge/adapters/openai.adapter.js +0 -194
  457. package/src/bridge/adapters/openai.adapter.js.map +0 -1
  458. package/src/bridge/core/adapter-registry.d.ts +0 -121
  459. package/src/bridge/core/adapter-registry.js +0 -271
  460. package/src/bridge/core/adapter-registry.js.map +0 -1
  461. package/src/bridge/core/bridge-factory.d.ts +0 -198
  462. package/src/bridge/core/bridge-factory.js +0 -428
  463. package/src/bridge/core/bridge-factory.js.map +0 -1
  464. package/src/bridge/core/index.d.ts +0 -9
  465. package/src/bridge/core/index.js +0 -22
  466. package/src/bridge/core/index.js.map +0 -1
  467. package/src/bridge/index.d.ts +0 -61
  468. package/src/bridge/index.js +0 -94
  469. package/src/bridge/index.js.map +0 -1
  470. package/src/bridge/runtime/iife-generator.d.ts +0 -61
  471. package/src/bridge/runtime/iife-generator.js +0 -940
  472. package/src/bridge/runtime/iife-generator.js.map +0 -1
  473. package/src/bridge/runtime/index.d.ts +0 -8
  474. package/src/bridge/runtime/index.js +0 -16
  475. package/src/bridge/runtime/index.js.map +0 -1
  476. package/src/bridge/types.d.ts +0 -385
  477. package/src/bridge/types.js +0 -11
  478. package/src/bridge/types.js.map +0 -1
  479. package/src/build/cdn-resources.d.ts +0 -140
  480. package/src/build/cdn-resources.js +0 -314
  481. package/src/build/cdn-resources.js.map +0 -1
  482. package/src/build/index.d.ts +0 -294
  483. package/src/build/index.js +0 -325
  484. package/src/build/index.js.map +0 -1
  485. package/src/build/widget-manifest.d.ts +0 -212
  486. package/src/build/widget-manifest.js +0 -652
  487. package/src/build/widget-manifest.js.map +0 -1
  488. package/src/bundler/bundler.d.ts +0 -110
  489. package/src/bundler/bundler.js +0 -432
  490. package/src/bundler/bundler.js.map +0 -1
  491. package/src/bundler/cache.d.ts +0 -172
  492. package/src/bundler/cache.js +0 -250
  493. package/src/bundler/cache.js.map +0 -1
  494. package/src/bundler/index.d.ts +0 -41
  495. package/src/bundler/index.js +0 -73
  496. package/src/bundler/index.js.map +0 -1
  497. package/src/bundler/sandbox/enclave-adapter.d.ts +0 -120
  498. package/src/bundler/sandbox/enclave-adapter.js +0 -339
  499. package/src/bundler/sandbox/enclave-adapter.js.map +0 -1
  500. package/src/bundler/sandbox/executor.d.ts +0 -13
  501. package/src/bundler/sandbox/executor.js +0 -22
  502. package/src/bundler/sandbox/executor.js.map +0 -1
  503. package/src/bundler/sandbox/policy.d.ts +0 -61
  504. package/src/bundler/sandbox/policy.js +0 -238
  505. package/src/bundler/sandbox/policy.js.map +0 -1
  506. package/src/bundler/types.d.ts +0 -347
  507. package/src/bundler/types.js +0 -132
  508. package/src/bundler/types.js.map +0 -1
  509. package/src/components/alert.d.ts +0 -71
  510. package/src/components/alert.js +0 -189
  511. package/src/components/alert.js.map +0 -1
  512. package/src/components/alert.schema.d.ts +0 -114
  513. package/src/components/alert.schema.js +0 -105
  514. package/src/components/alert.schema.js.map +0 -1
  515. package/src/components/avatar.d.ts +0 -76
  516. package/src/components/avatar.js +0 -176
  517. package/src/components/avatar.js.map +0 -1
  518. package/src/components/avatar.schema.d.ts +0 -169
  519. package/src/components/avatar.schema.js +0 -103
  520. package/src/components/avatar.schema.js.map +0 -1
  521. package/src/components/badge.d.ts +0 -70
  522. package/src/components/badge.js +0 -149
  523. package/src/components/badge.js.map +0 -1
  524. package/src/components/badge.schema.d.ts +0 -109
  525. package/src/components/badge.schema.js +0 -96
  526. package/src/components/badge.schema.js.map +0 -1
  527. package/src/components/button.d.ts +0 -111
  528. package/src/components/button.js +0 -336
  529. package/src/components/button.js.map +0 -1
  530. package/src/components/button.schema.d.ts +0 -148
  531. package/src/components/button.schema.js +0 -121
  532. package/src/components/button.schema.js.map +0 -1
  533. package/src/components/card.d.ts +0 -60
  534. package/src/components/card.js +0 -117
  535. package/src/components/card.js.map +0 -1
  536. package/src/components/card.schema.d.ts +0 -113
  537. package/src/components/card.schema.js +0 -98
  538. package/src/components/card.schema.js.map +0 -1
  539. package/src/components/form.d.ts +0 -239
  540. package/src/components/form.js +0 -420
  541. package/src/components/form.js.map +0 -1
  542. package/src/components/form.schema.d.ts +0 -441
  543. package/src/components/form.schema.js +0 -406
  544. package/src/components/form.schema.js.map +0 -1
  545. package/src/components/index.d.ts +0 -29
  546. package/src/components/index.js +0 -98
  547. package/src/components/index.js.map +0 -1
  548. package/src/components/list.d.ts +0 -127
  549. package/src/components/list.js +0 -279
  550. package/src/components/list.js.map +0 -1
  551. package/src/components/list.schema.d.ts +0 -134
  552. package/src/components/list.schema.js +0 -168
  553. package/src/components/list.schema.js.map +0 -1
  554. package/src/components/modal.d.ts +0 -111
  555. package/src/components/modal.js +0 -260
  556. package/src/components/modal.js.map +0 -1
  557. package/src/components/modal.schema.d.ts +0 -186
  558. package/src/components/modal.schema.js +0 -167
  559. package/src/components/modal.schema.js.map +0 -1
  560. package/src/components/table.d.ts +0 -105
  561. package/src/components/table.js +0 -283
  562. package/src/components/table.js.map +0 -1
  563. package/src/components/table.schema.d.ts +0 -159
  564. package/src/components/table.schema.js +0 -173
  565. package/src/components/table.schema.js.map +0 -1
  566. package/src/handlebars/helpers.d.ts +0 -348
  567. package/src/handlebars/helpers.js +0 -605
  568. package/src/handlebars/helpers.js.map +0 -1
  569. package/src/handlebars/index.d.ts +0 -193
  570. package/src/handlebars/index.js +0 -350
  571. package/src/handlebars/index.js.map +0 -1
  572. package/src/index.d.ts +0 -50
  573. package/src/index.js +0 -192
  574. package/src/index.js.map +0 -1
  575. package/src/layouts/base.d.ts +0 -88
  576. package/src/layouts/base.js +0 -227
  577. package/src/layouts/base.js.map +0 -1
  578. package/src/layouts/index.d.ts +0 -7
  579. package/src/layouts/index.js +0 -25
  580. package/src/layouts/index.js.map +0 -1
  581. package/src/layouts/presets.d.ts +0 -133
  582. package/src/layouts/presets.js +0 -277
  583. package/src/layouts/presets.js.map +0 -1
  584. package/src/pages/consent.d.ts +0 -116
  585. package/src/pages/consent.js +0 -218
  586. package/src/pages/consent.js.map +0 -1
  587. package/src/pages/error.d.ts +0 -100
  588. package/src/pages/error.js +0 -263
  589. package/src/pages/error.js.map +0 -1
  590. package/src/pages/index.d.ts +0 -8
  591. package/src/pages/index.js +0 -27
  592. package/src/pages/index.js.map +0 -1
  593. package/src/react/Alert.d.ts +0 -101
  594. package/src/react/Alert.js +0 -51
  595. package/src/react/Alert.js.map +0 -1
  596. package/src/react/Badge.d.ts +0 -100
  597. package/src/react/Badge.js +0 -55
  598. package/src/react/Badge.js.map +0 -1
  599. package/src/react/Button.d.ts +0 -108
  600. package/src/react/Button.js +0 -52
  601. package/src/react/Button.js.map +0 -1
  602. package/src/react/Card.d.ts +0 -103
  603. package/src/react/Card.js +0 -55
  604. package/src/react/Card.js.map +0 -1
  605. package/src/react/hooks/context.d.ts +0 -178
  606. package/src/react/hooks/context.js +0 -287
  607. package/src/react/hooks/context.js.map +0 -1
  608. package/src/react/hooks/index.d.ts +0 -41
  609. package/src/react/hooks/index.js +0 -61
  610. package/src/react/hooks/index.js.map +0 -1
  611. package/src/react/hooks/tools.d.ts +0 -283
  612. package/src/react/hooks/tools.js +0 -465
  613. package/src/react/hooks/tools.js.map +0 -1
  614. package/src/react/index.d.ts +0 -80
  615. package/src/react/index.js +0 -113
  616. package/src/react/index.js.map +0 -1
  617. package/src/react/types.d.ts +0 -105
  618. package/src/react/types.js +0 -12
  619. package/src/react/types.js.map +0 -1
  620. package/src/react/utils.d.ts +0 -42
  621. package/src/react/utils.js +0 -99
  622. package/src/react/utils.js.map +0 -1
  623. package/src/registry/index.d.ts +0 -45
  624. package/src/registry/index.js +0 -67
  625. package/src/registry/index.js.map +0 -1
  626. package/src/registry/render-template.d.ts +0 -86
  627. package/src/registry/render-template.js +0 -239
  628. package/src/registry/render-template.js.map +0 -1
  629. package/src/registry/tool-ui.registry.d.ts +0 -260
  630. package/src/registry/tool-ui.registry.js +0 -438
  631. package/src/registry/tool-ui.registry.js.map +0 -1
  632. package/src/registry/uri-utils.d.ts +0 -55
  633. package/src/registry/uri-utils.js +0 -97
  634. package/src/registry/uri-utils.js.map +0 -1
  635. package/src/render/index.d.ts +0 -7
  636. package/src/render/index.js +0 -14
  637. package/src/render/index.js.map +0 -1
  638. package/src/render/prerender.d.ts +0 -56
  639. package/src/render/prerender.js +0 -98
  640. package/src/render/prerender.js.map +0 -1
  641. package/src/renderers/cache.d.ts +0 -144
  642. package/src/renderers/cache.js +0 -240
  643. package/src/renderers/cache.js.map +0 -1
  644. package/src/renderers/html.renderer.d.ts +0 -122
  645. package/src/renderers/html.renderer.js +0 -204
  646. package/src/renderers/html.renderer.js.map +0 -1
  647. package/src/renderers/index.d.ts +0 -35
  648. package/src/renderers/index.js +0 -70
  649. package/src/renderers/index.js.map +0 -1
  650. package/src/renderers/mdx.renderer.d.ts +0 -119
  651. package/src/renderers/mdx.renderer.js +0 -305
  652. package/src/renderers/mdx.renderer.js.map +0 -1
  653. package/src/renderers/react.renderer.d.ts +0 -95
  654. package/src/renderers/react.renderer.js +0 -260
  655. package/src/renderers/react.renderer.js.map +0 -1
  656. package/src/renderers/registry.d.ts +0 -133
  657. package/src/renderers/registry.js +0 -232
  658. package/src/renderers/registry.js.map +0 -1
  659. package/src/renderers/types.d.ts +0 -341
  660. package/src/renderers/types.js +0 -9
  661. package/src/renderers/types.js.map +0 -1
  662. package/src/renderers/utils/detect.d.ts +0 -106
  663. package/src/renderers/utils/detect.js +0 -267
  664. package/src/renderers/utils/detect.js.map +0 -1
  665. package/src/renderers/utils/hash.d.ts +0 -39
  666. package/src/renderers/utils/hash.js +0 -75
  667. package/src/renderers/utils/hash.js.map +0 -1
  668. package/src/renderers/utils/index.d.ts +0 -8
  669. package/src/renderers/utils/index.js +0 -28
  670. package/src/renderers/utils/index.js.map +0 -1
  671. package/src/renderers/utils/transpiler.d.ts +0 -88
  672. package/src/renderers/utils/transpiler.js +0 -215
  673. package/src/renderers/utils/transpiler.js.map +0 -1
  674. package/src/runtime/adapters/html.adapter.d.ts +0 -58
  675. package/src/runtime/adapters/html.adapter.js +0 -131
  676. package/src/runtime/adapters/html.adapter.js.map +0 -1
  677. package/src/runtime/adapters/index.d.ts +0 -25
  678. package/src/runtime/adapters/index.js +0 -54
  679. package/src/runtime/adapters/index.js.map +0 -1
  680. package/src/runtime/adapters/mdx.adapter.d.ts +0 -72
  681. package/src/runtime/adapters/mdx.adapter.js +0 -241
  682. package/src/runtime/adapters/mdx.adapter.js.map +0 -1
  683. package/src/runtime/adapters/react.adapter.d.ts +0 -69
  684. package/src/runtime/adapters/react.adapter.js +0 -245
  685. package/src/runtime/adapters/react.adapter.js.map +0 -1
  686. package/src/runtime/adapters/types.d.ts +0 -94
  687. package/src/runtime/adapters/types.js +0 -11
  688. package/src/runtime/adapters/types.js.map +0 -1
  689. package/src/runtime/csp.d.ts +0 -37
  690. package/src/runtime/csp.js +0 -140
  691. package/src/runtime/csp.js.map +0 -1
  692. package/src/runtime/index.d.ts +0 -16
  693. package/src/runtime/index.js +0 -72
  694. package/src/runtime/index.js.map +0 -1
  695. package/src/runtime/mcp-bridge.d.ts +0 -100
  696. package/src/runtime/mcp-bridge.js +0 -581
  697. package/src/runtime/mcp-bridge.js.map +0 -1
  698. package/src/runtime/renderer-runtime.d.ts +0 -132
  699. package/src/runtime/renderer-runtime.js +0 -389
  700. package/src/runtime/renderer-runtime.js.map +0 -1
  701. package/src/runtime/sanitizer.d.ts +0 -171
  702. package/src/runtime/sanitizer.js +0 -318
  703. package/src/runtime/sanitizer.js.map +0 -1
  704. package/src/runtime/types.d.ts +0 -414
  705. package/src/runtime/types.js +0 -12
  706. package/src/runtime/types.js.map +0 -1
  707. package/src/runtime/wrapper.d.ts +0 -375
  708. package/src/runtime/wrapper.js +0 -1793
  709. package/src/runtime/wrapper.js.map +0 -1
  710. package/src/styles/index.d.ts +0 -7
  711. package/src/styles/index.js +0 -11
  712. package/src/styles/index.js.map +0 -1
  713. package/src/styles/variants.d.ts +0 -50
  714. package/src/styles/variants.js +0 -175
  715. package/src/styles/variants.js.map +0 -1
  716. package/src/theme/cdn.d.ts +0 -194
  717. package/src/theme/cdn.js +0 -375
  718. package/src/theme/cdn.js.map +0 -1
  719. package/src/theme/index.d.ts +0 -17
  720. package/src/theme/index.js +0 -57
  721. package/src/theme/index.js.map +0 -1
  722. package/src/theme/platforms.d.ts +0 -106
  723. package/src/theme/platforms.js +0 -161
  724. package/src/theme/platforms.js.map +0 -1
  725. package/src/theme/presets/github-openai.d.ts +0 -49
  726. package/src/theme/presets/github-openai.js +0 -189
  727. package/src/theme/presets/github-openai.js.map +0 -1
  728. package/src/theme/presets/index.d.ts +0 -10
  729. package/src/theme/presets/index.js +0 -17
  730. package/src/theme/presets/index.js.map +0 -1
  731. package/src/theme/theme.d.ts +0 -395
  732. package/src/theme/theme.js +0 -332
  733. package/src/theme/theme.js.map +0 -1
  734. package/src/tool-template/builder.d.ts +0 -212
  735. package/src/tool-template/builder.js +0 -397
  736. package/src/tool-template/builder.js.map +0 -1
  737. package/src/tool-template/index.d.ts +0 -15
  738. package/src/tool-template/index.js +0 -38
  739. package/src/tool-template/index.js.map +0 -1
  740. package/src/types/index.d.ts +0 -13
  741. package/src/types/index.js +0 -26
  742. package/src/types/index.js.map +0 -1
  743. package/src/types/ui-config.d.ts +0 -357
  744. package/src/types/ui-config.js +0 -12
  745. package/src/types/ui-config.js.map +0 -1
  746. package/src/types/ui-runtime.d.ts +0 -965
  747. package/src/types/ui-runtime.js +0 -117
  748. package/src/types/ui-runtime.js.map +0 -1
  749. package/src/validation/error-box.d.ts +0 -55
  750. package/src/validation/error-box.js +0 -75
  751. package/src/validation/error-box.js.map +0 -1
  752. package/src/validation/index.d.ts +0 -12
  753. package/src/validation/index.js +0 -21
  754. package/src/validation/index.js.map +0 -1
  755. package/src/validation/wrapper.d.ts +0 -96
  756. package/src/validation/wrapper.js +0 -117
  757. package/src/validation/wrapper.js.map +0 -1
  758. package/src/web-components/core/attribute-parser.d.ts +0 -85
  759. package/src/web-components/core/attribute-parser.js +0 -189
  760. package/src/web-components/core/attribute-parser.js.map +0 -1
  761. package/src/web-components/core/base-element.d.ts +0 -197
  762. package/src/web-components/core/base-element.js +0 -289
  763. package/src/web-components/core/base-element.js.map +0 -1
  764. package/src/web-components/core/index.d.ts +0 -8
  765. package/src/web-components/core/index.js +0 -18
  766. package/src/web-components/core/index.js.map +0 -1
  767. package/src/web-components/elements/fmcp-alert.d.ts +0 -45
  768. package/src/web-components/elements/fmcp-alert.js +0 -93
  769. package/src/web-components/elements/fmcp-alert.js.map +0 -1
  770. package/src/web-components/elements/fmcp-badge.d.ts +0 -46
  771. package/src/web-components/elements/fmcp-badge.js +0 -99
  772. package/src/web-components/elements/fmcp-badge.js.map +0 -1
  773. package/src/web-components/elements/fmcp-button.d.ts +0 -124
  774. package/src/web-components/elements/fmcp-button.js +0 -233
  775. package/src/web-components/elements/fmcp-button.js.map +0 -1
  776. package/src/web-components/elements/fmcp-card.d.ts +0 -52
  777. package/src/web-components/elements/fmcp-card.js +0 -115
  778. package/src/web-components/elements/fmcp-card.js.map +0 -1
  779. package/src/web-components/elements/fmcp-input.d.ts +0 -95
  780. package/src/web-components/elements/fmcp-input.js +0 -248
  781. package/src/web-components/elements/fmcp-input.js.map +0 -1
  782. package/src/web-components/elements/fmcp-select.d.ts +0 -99
  783. package/src/web-components/elements/fmcp-select.js +0 -243
  784. package/src/web-components/elements/fmcp-select.js.map +0 -1
  785. package/src/web-components/elements/index.d.ts +0 -12
  786. package/src/web-components/elements/index.js +0 -34
  787. package/src/web-components/elements/index.js.map +0 -1
  788. package/src/web-components/index.d.ts +0 -49
  789. package/src/web-components/index.js +0 -75
  790. package/src/web-components/index.js.map +0 -1
  791. package/src/web-components/register.d.ts +0 -56
  792. package/src/web-components/register.js +0 -80
  793. package/src/web-components/register.js.map +0 -1
  794. package/src/web-components/types.d.ts +0 -121
  795. package/src/web-components/types.js +0 -25
  796. package/src/web-components/types.js.map +0 -1
  797. package/src/widgets/index.d.ts +0 -7
  798. package/src/widgets/index.js +0 -24
  799. package/src/widgets/index.js.map +0 -1
  800. package/src/widgets/progress.d.ts +0 -132
  801. package/src/widgets/progress.js +0 -303
  802. package/src/widgets/progress.js.map +0 -1
  803. package/src/widgets/resource.d.ts +0 -162
  804. package/src/widgets/resource.js +0 -340
  805. package/src/widgets/resource.js.map +0 -1
@@ -1,85 +0,0 @@
1
- /**
2
- * @file attribute-parser.ts
3
- * @description Attribute parsing utilities for FrontMCP Web Components.
4
- *
5
- * Converts HTML attributes to typed options for component rendering.
6
- * Handles boolean attributes, HTMX attributes, and kebab-to-camel case conversion.
7
- *
8
- * @example Attribute parsing
9
- * ```typescript
10
- * // variant="primary" -> { variant: 'primary' }
11
- * // disabled -> { disabled: true }
12
- * // disabled="false" -> { disabled: false }
13
- * // hx-get="/api" -> { htmx: { get: '/api' } }
14
- * ```
15
- *
16
- * @module @frontmcp/ui/web-components/core/attribute-parser
17
- */
18
- import type { ZodSchema } from 'zod';
19
- /**
20
- * Result of parsing an attribute value
21
- */
22
- export interface ParsedAttribute {
23
- /** The option key (camelCase) */
24
- key: string | null;
25
- /** The parsed value */
26
- value: unknown;
27
- /** Whether this is a nested htmx option */
28
- isHtmx?: boolean;
29
- /** Whether this is a data attribute */
30
- isData?: boolean;
31
- }
32
- /**
33
- * Parse an HTML attribute into a typed option value.
34
- *
35
- * Attribute naming conventions:
36
- * - Simple: `variant="primary"` -> `{ variant: 'primary' }`
37
- * - Boolean: `disabled` -> `{ disabled: true }`
38
- * - Boolean false: `disabled="false"` -> `{ disabled: false }`
39
- * - HTMX: `hx-get="/api"` -> `{ htmx: { get: '/api' } }`
40
- * - Data: `data-foo="bar"` -> `{ data: { foo: 'bar' } }`
41
- *
42
- * @param attrName - The attribute name (kebab-case)
43
- * @param value - The attribute value (null for boolean attributes)
44
- * @returns Parsed attribute with key and typed value
45
- */
46
- export declare function parseAttributeValue(attrName: string, value: string | null): ParsedAttribute;
47
- /**
48
- * Convert kebab-case to camelCase.
49
- *
50
- * @param str - Kebab-case string
51
- * @returns camelCase string
52
- *
53
- * @example
54
- * kebabToCamel('full-width') // 'fullWidth'
55
- * kebabToCamel('icon-before') // 'iconBefore'
56
- */
57
- export declare function kebabToCamel(str: string): string;
58
- /**
59
- * Convert camelCase to kebab-case.
60
- *
61
- * @param str - camelCase string
62
- * @returns kebab-case string
63
- *
64
- * @example
65
- * camelToKebab('fullWidth') // 'full-width'
66
- * camelToKebab('iconBefore') // 'icon-before'
67
- */
68
- export declare function camelToKebab(str: string): string;
69
- /**
70
- * Extract observable attribute names from a Zod schema.
71
- *
72
- * @param schema - Zod schema to extract keys from
73
- * @returns Array of kebab-case attribute names
74
- */
75
- export declare function getObservedAttributesFromSchema<T>(schema: ZodSchema<T>): string[];
76
- /**
77
- * Merge a parsed attribute into an options object.
78
- *
79
- * Handles nested objects for htmx and data attributes.
80
- *
81
- * @param options - Current options object
82
- * @param parsed - Parsed attribute result
83
- * @returns Updated options object
84
- */
85
- export declare function mergeAttributeIntoOptions<T>(options: Partial<T>, parsed: ParsedAttribute): Partial<T>;
@@ -1,189 +0,0 @@
1
- "use strict";
2
- /**
3
- * @file attribute-parser.ts
4
- * @description Attribute parsing utilities for FrontMCP Web Components.
5
- *
6
- * Converts HTML attributes to typed options for component rendering.
7
- * Handles boolean attributes, HTMX attributes, and kebab-to-camel case conversion.
8
- *
9
- * @example Attribute parsing
10
- * ```typescript
11
- * // variant="primary" -> { variant: 'primary' }
12
- * // disabled -> { disabled: true }
13
- * // disabled="false" -> { disabled: false }
14
- * // hx-get="/api" -> { htmx: { get: '/api' } }
15
- * ```
16
- *
17
- * @module @frontmcp/ui/web-components/core/attribute-parser
18
- */
19
- Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.parseAttributeValue = parseAttributeValue;
21
- exports.kebabToCamel = kebabToCamel;
22
- exports.camelToKebab = camelToKebab;
23
- exports.getObservedAttributesFromSchema = getObservedAttributesFromSchema;
24
- exports.mergeAttributeIntoOptions = mergeAttributeIntoOptions;
25
- /**
26
- * Parse an HTML attribute into a typed option value.
27
- *
28
- * Attribute naming conventions:
29
- * - Simple: `variant="primary"` -> `{ variant: 'primary' }`
30
- * - Boolean: `disabled` -> `{ disabled: true }`
31
- * - Boolean false: `disabled="false"` -> `{ disabled: false }`
32
- * - HTMX: `hx-get="/api"` -> `{ htmx: { get: '/api' } }`
33
- * - Data: `data-foo="bar"` -> `{ data: { foo: 'bar' } }`
34
- *
35
- * @param attrName - The attribute name (kebab-case)
36
- * @param value - The attribute value (null for boolean attributes)
37
- * @returns Parsed attribute with key and typed value
38
- */
39
- function parseAttributeValue(attrName, value) {
40
- // Skip internal fmcp attributes
41
- if (attrName.startsWith('data-fmcp-')) {
42
- return { key: null, value: undefined };
43
- }
44
- // Handle HTMX attributes (hx-* -> htmx.*)
45
- if (attrName.startsWith('hx-')) {
46
- const htmxKey = attrName.slice(3); // Remove 'hx-'
47
- return {
48
- key: htmxKey,
49
- value: value ?? '',
50
- isHtmx: true,
51
- };
52
- }
53
- // Handle data attributes (data-* -> data.*)
54
- if (attrName.startsWith('data-')) {
55
- const dataKey = attrName.slice(5); // Remove 'data-'
56
- return {
57
- key: dataKey,
58
- value: value ?? '',
59
- isData: true,
60
- };
61
- }
62
- // Convert kebab-case to camelCase
63
- const camelName = kebabToCamel(attrName);
64
- // Handle boolean attributes (presence = true)
65
- if (value === null || value === '') {
66
- return { key: camelName, value: true };
67
- }
68
- // Handle explicit boolean strings
69
- if (value === 'true') {
70
- return { key: camelName, value: true };
71
- }
72
- if (value === 'false') {
73
- return { key: camelName, value: false };
74
- }
75
- // Handle numeric values
76
- const numValue = Number(value);
77
- if (!isNaN(numValue) && value.trim() !== '') {
78
- return { key: camelName, value: numValue };
79
- }
80
- // Handle JSON values (for complex objects)
81
- if (value.startsWith('{') || value.startsWith('[')) {
82
- try {
83
- return { key: camelName, value: JSON.parse(value) };
84
- }
85
- catch {
86
- // Not valid JSON, treat as string
87
- }
88
- }
89
- // Default: string value
90
- return { key: camelName, value };
91
- }
92
- /**
93
- * Convert kebab-case to camelCase.
94
- *
95
- * @param str - Kebab-case string
96
- * @returns camelCase string
97
- *
98
- * @example
99
- * kebabToCamel('full-width') // 'fullWidth'
100
- * kebabToCamel('icon-before') // 'iconBefore'
101
- */
102
- function kebabToCamel(str) {
103
- return str.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());
104
- }
105
- /**
106
- * Convert camelCase to kebab-case.
107
- *
108
- * @param str - camelCase string
109
- * @returns kebab-case string
110
- *
111
- * @example
112
- * camelToKebab('fullWidth') // 'full-width'
113
- * camelToKebab('iconBefore') // 'icon-before'
114
- */
115
- function camelToKebab(str) {
116
- return str.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`);
117
- }
118
- /**
119
- * Extract observable attribute names from a Zod schema.
120
- *
121
- * @param schema - Zod schema to extract keys from
122
- * @returns Array of kebab-case attribute names
123
- */
124
- function getObservedAttributesFromSchema(schema) {
125
- const attributes = [];
126
- // Extract keys from schema shape (Zod object schemas have a shape property)
127
- const schemaAny = schema;
128
- if (schemaAny.shape) {
129
- for (const key of Object.keys(schemaAny.shape)) {
130
- // Convert camelCase keys to kebab-case attributes
131
- attributes.push(camelToKebab(key));
132
- }
133
- }
134
- // Always include common attributes
135
- const commonAttrs = ['class', 'id', 'style'];
136
- attributes.push(...commonAttrs);
137
- // Include HTMX attributes
138
- const htmxAttrs = [
139
- 'hx-get',
140
- 'hx-post',
141
- 'hx-put',
142
- 'hx-delete',
143
- 'hx-patch',
144
- 'hx-target',
145
- 'hx-swap',
146
- 'hx-trigger',
147
- 'hx-confirm',
148
- 'hx-indicator',
149
- 'hx-push-url',
150
- 'hx-select',
151
- 'hx-vals',
152
- ];
153
- attributes.push(...htmxAttrs);
154
- // Deduplicate
155
- return [...new Set(attributes)];
156
- }
157
- /**
158
- * Merge a parsed attribute into an options object.
159
- *
160
- * Handles nested objects for htmx and data attributes.
161
- *
162
- * @param options - Current options object
163
- * @param parsed - Parsed attribute result
164
- * @returns Updated options object
165
- */
166
- function mergeAttributeIntoOptions(options, parsed) {
167
- if (parsed.key === null || parsed.value === undefined) {
168
- return options;
169
- }
170
- const result = { ...options };
171
- if (parsed.isHtmx) {
172
- // Merge into htmx nested object
173
- const htmx = result['htmx'] ?? {};
174
- htmx[parsed.key] = parsed.value;
175
- result['htmx'] = htmx;
176
- }
177
- else if (parsed.isData) {
178
- // Merge into data nested object
179
- const data = result['data'] ?? {};
180
- data[parsed.key] = String(parsed.value);
181
- result['data'] = data;
182
- }
183
- else {
184
- // Direct assignment
185
- result[parsed.key] = parsed.value;
186
- }
187
- return result;
188
- }
189
- //# sourceMappingURL=attribute-parser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"attribute-parser.js","sourceRoot":"","sources":["../../../../src/web-components/core/attribute-parser.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @file attribute-parser.ts\n * @description Attribute parsing utilities for FrontMCP Web Components.\n *\n * Converts HTML attributes to typed options for component rendering.\n * Handles boolean attributes, HTMX attributes, and kebab-to-camel case conversion.\n *\n * @example Attribute parsing\n * ```typescript\n * // variant=\"primary\" -> { variant: 'primary' }\n * // disabled -> { disabled: true }\n * // disabled=\"false\" -> { disabled: false }\n * // hx-get=\"/api\" -> { htmx: { get: '/api' } }\n * ```\n *\n * @module @frontmcp/ui/web-components/core/attribute-parser\n */\n\nimport type { ZodSchema } from 'zod';\n\n/**\n * Result of parsing an attribute value\n */\nexport interface ParsedAttribute {\n /** The option key (camelCase) */\n key: string | null;\n /** The parsed value */\n value: unknown;\n /** Whether this is a nested htmx option */\n isHtmx?: boolean;\n /** Whether this is a data attribute */\n isData?: boolean;\n}\n\n/**\n * Parse an HTML attribute into a typed option value.\n *\n * Attribute naming conventions:\n * - Simple: `variant=\"primary\"` -> `{ variant: 'primary' }`\n * - Boolean: `disabled` -> `{ disabled: true }`\n * - Boolean false: `disabled=\"false\"` -> `{ disabled: false }`\n * - HTMX: `hx-get=\"/api\"` -> `{ htmx: { get: '/api' } }`\n * - Data: `data-foo=\"bar\"` -> `{ data: { foo: 'bar' } }`\n *\n * @param attrName - The attribute name (kebab-case)\n * @param value - The attribute value (null for boolean attributes)\n * @returns Parsed attribute with key and typed value\n */\nexport function parseAttributeValue(attrName: string, value: string | null): ParsedAttribute {\n // Skip internal fmcp attributes\n if (attrName.startsWith('data-fmcp-')) {\n return { key: null, value: undefined };\n }\n\n // Handle HTMX attributes (hx-* -> htmx.*)\n if (attrName.startsWith('hx-')) {\n const htmxKey = attrName.slice(3); // Remove 'hx-'\n return {\n key: htmxKey,\n value: value ?? '',\n isHtmx: true,\n };\n }\n\n // Handle data attributes (data-* -> data.*)\n if (attrName.startsWith('data-')) {\n const dataKey = attrName.slice(5); // Remove 'data-'\n return {\n key: dataKey,\n value: value ?? '',\n isData: true,\n };\n }\n\n // Convert kebab-case to camelCase\n const camelName = kebabToCamel(attrName);\n\n // Handle boolean attributes (presence = true)\n if (value === null || value === '') {\n return { key: camelName, value: true };\n }\n\n // Handle explicit boolean strings\n if (value === 'true') {\n return { key: camelName, value: true };\n }\n if (value === 'false') {\n return { key: camelName, value: false };\n }\n\n // Handle numeric values\n const numValue = Number(value);\n if (!isNaN(numValue) && value.trim() !== '') {\n return { key: camelName, value: numValue };\n }\n\n // Handle JSON values (for complex objects)\n if (value.startsWith('{') || value.startsWith('[')) {\n try {\n return { key: camelName, value: JSON.parse(value) };\n } catch {\n // Not valid JSON, treat as string\n }\n }\n\n // Default: string value\n return { key: camelName, value };\n}\n\n/**\n * Convert kebab-case to camelCase.\n *\n * @param str - Kebab-case string\n * @returns camelCase string\n *\n * @example\n * kebabToCamel('full-width') // 'fullWidth'\n * kebabToCamel('icon-before') // 'iconBefore'\n */\nexport function kebabToCamel(str: string): string {\n return str.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());\n}\n\n/**\n * Convert camelCase to kebab-case.\n *\n * @param str - camelCase string\n * @returns kebab-case string\n *\n * @example\n * camelToKebab('fullWidth') // 'full-width'\n * camelToKebab('iconBefore') // 'icon-before'\n */\nexport function camelToKebab(str: string): string {\n return str.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`);\n}\n\n/**\n * Extract observable attribute names from a Zod schema.\n *\n * @param schema - Zod schema to extract keys from\n * @returns Array of kebab-case attribute names\n */\nexport function getObservedAttributesFromSchema<T>(schema: ZodSchema<T>): string[] {\n const attributes: string[] = [];\n\n // Extract keys from schema shape (Zod object schemas have a shape property)\n const schemaAny = schema as { shape?: Record<string, unknown> };\n if (schemaAny.shape) {\n for (const key of Object.keys(schemaAny.shape)) {\n // Convert camelCase keys to kebab-case attributes\n attributes.push(camelToKebab(key));\n }\n }\n\n // Always include common attributes\n const commonAttrs = ['class', 'id', 'style'];\n attributes.push(...commonAttrs);\n\n // Include HTMX attributes\n const htmxAttrs = [\n 'hx-get',\n 'hx-post',\n 'hx-put',\n 'hx-delete',\n 'hx-patch',\n 'hx-target',\n 'hx-swap',\n 'hx-trigger',\n 'hx-confirm',\n 'hx-indicator',\n 'hx-push-url',\n 'hx-select',\n 'hx-vals',\n ];\n attributes.push(...htmxAttrs);\n\n // Deduplicate\n return [...new Set(attributes)];\n}\n\n/**\n * Merge a parsed attribute into an options object.\n *\n * Handles nested objects for htmx and data attributes.\n *\n * @param options - Current options object\n * @param parsed - Parsed attribute result\n * @returns Updated options object\n */\nexport function mergeAttributeIntoOptions<T>(options: Partial<T>, parsed: ParsedAttribute): Partial<T> {\n if (parsed.key === null || parsed.value === undefined) {\n return options;\n }\n\n const result = { ...options } as Record<string, unknown>;\n\n if (parsed.isHtmx) {\n // Merge into htmx nested object\n const htmx = (result['htmx'] as Record<string, unknown>) ?? {};\n htmx[parsed.key] = parsed.value;\n result['htmx'] = htmx;\n } else if (parsed.isData) {\n // Merge into data nested object\n const data = (result['data'] as Record<string, string>) ?? {};\n data[parsed.key] = String(parsed.value);\n result['data'] = data;\n } else {\n // Direct assignment\n result[parsed.key] = parsed.value;\n }\n\n return result as Partial<T>;\n}\n"]}
@@ -1,197 +0,0 @@
1
- /**
2
- * @file base-element.ts
3
- * @description Base class for all FrontMCP Web Components.
4
- *
5
- * Provides a foundation for creating Custom Elements with:
6
- * - Zod schema validation
7
- * - Attribute-to-option mapping
8
- * - Property setters for React/Vue compatibility
9
- * - Batched rendering via queueMicrotask
10
- * - Light DOM (no Shadow DOM) for Tailwind compatibility
11
- *
12
- * @example Creating a custom element
13
- * ```typescript
14
- * import { FmcpElement } from '@frontmcp/ui/web-components';
15
- * import { ButtonOptionsSchema, type ButtonOptions } from '@frontmcp/ui/components';
16
- * import { button } from '@frontmcp/ui/components';
17
- *
18
- * class FmcpButton extends FmcpElement<ButtonOptions> {
19
- * protected readonly config = {
20
- * name: 'button',
21
- * schema: ButtonOptionsSchema,
22
- * defaults: { variant: 'primary', size: 'md' },
23
- * };
24
- *
25
- * static get observedAttributes() {
26
- * return getObservedAttributesFromSchema(ButtonOptionsSchema);
27
- * }
28
- *
29
- * protected renderHtml(options: ButtonOptions, content: string): string {
30
- * return button(content, options);
31
- * }
32
- * }
33
- *
34
- * customElements.define('fmcp-button', FmcpButton);
35
- * ```
36
- *
37
- * @module @frontmcp/ui/web-components/core/base-element
38
- */
39
- import type { ZodSchema } from 'zod';
40
- declare const HTMLElementBase: {
41
- new (): HTMLElement;
42
- prototype: HTMLElement;
43
- };
44
- /**
45
- * Configuration for FmcpElement subclasses
46
- */
47
- export interface FmcpElementConfig<TOptions> {
48
- /** Component name (used in error messages) */
49
- name: string;
50
- /** Zod schema for validation */
51
- schema: ZodSchema<TOptions>;
52
- /** Default option values */
53
- defaults?: Partial<TOptions>;
54
- }
55
- /**
56
- * Custom event detail for fmcp:render event
57
- */
58
- export interface FmcpRenderEventDetail<TOptions = unknown> {
59
- options: TOptions;
60
- }
61
- /**
62
- * Base class for all FrontMCP Web Components.
63
- *
64
- * Key features:
65
- * - **Light DOM**: Renders directly to innerHTML (no Shadow DOM)
66
- * - **Attribute Parsing**: Converts HTML attributes to typed options
67
- * - **Property Setters**: React/Vue can set properties directly
68
- * - **Zod Validation**: Invalid options render error box
69
- * - **Batched Rendering**: Multiple changes batch via queueMicrotask
70
- * - **HTMX Support**: hx-* attributes pass through to inner elements
71
- *
72
- * @typeParam TOptions - The component's options type (from Zod schema)
73
- *
74
- * @example Usage in HTML
75
- * ```html
76
- * <fmcp-button variant="primary" disabled>
77
- * Click Me
78
- * </fmcp-button>
79
- * ```
80
- *
81
- * @example Usage in React
82
- * ```tsx
83
- * <fmcp-button
84
- * variant="primary"
85
- * onClick={handleClick}
86
- * >
87
- * Click Me
88
- * </fmcp-button>
89
- * ```
90
- */
91
- export declare abstract class FmcpElement<TOptions> extends HTMLElementBase {
92
- /**
93
- * Configuration provided by subclass.
94
- * Must include component name, Zod schema, and optional defaults.
95
- */
96
- protected abstract readonly config: FmcpElementConfig<TOptions>;
97
- /** Internal options state */
98
- protected _options: Partial<TOptions>;
99
- /** Content passed as children (captured on connect) */
100
- protected _content: string;
101
- /** Whether component has been connected to DOM */
102
- private _connected;
103
- /** Whether a render is pending (for batching) */
104
- private _pendingRender;
105
- /** Whether initial render has completed */
106
- private _initialRenderComplete;
107
- /**
108
- * Called when element is added to DOM.
109
- * Captures content, parses attributes, and renders.
110
- *
111
- * Supports SSR hydration via `data-ssr` attribute:
112
- * - If `data-ssr` is present, content was pre-rendered by server
113
- * - Web component adopts existing content without re-rendering
114
- * - This enables progressive enhancement for LLM platforms
115
- */
116
- connectedCallback(): void;
117
- /**
118
- * Called when element is removed from DOM.
119
- */
120
- disconnectedCallback(): void;
121
- /**
122
- * Called when an observed attribute changes.
123
- * Updates options and schedules re-render.
124
- */
125
- attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void;
126
- /**
127
- * Set all options at once (React pattern).
128
- *
129
- * @example
130
- * ```typescript
131
- * const el = document.querySelector('fmcp-button');
132
- * el.options = { variant: 'danger', size: 'lg' };
133
- * ```
134
- */
135
- set options(value: Partial<TOptions>);
136
- /**
137
- * Get current options.
138
- */
139
- get options(): Partial<TOptions>;
140
- /**
141
- * Parse all current attributes into options.
142
- */
143
- private _parseAttributes;
144
- /**
145
- * Update a single option from an attribute change.
146
- */
147
- private _updateOptionFromAttribute;
148
- /**
149
- * Schedule a render on next microtask.
150
- * Batches multiple attribute/property changes.
151
- */
152
- protected _scheduleRender(): void;
153
- /**
154
- * Perform the actual render.
155
- * Validates options and updates innerHTML.
156
- */
157
- private _render;
158
- /**
159
- * Generate HTML for the component.
160
- * Subclasses must implement this to render their specific HTML.
161
- *
162
- * @param options - Validated options
163
- * @param content - Original innerHTML content
164
- * @returns HTML string to render
165
- */
166
- protected abstract renderHtml(options: TOptions, content: string): string;
167
- /**
168
- * Force an immediate re-render.
169
- *
170
- * @example
171
- * ```typescript
172
- * el.options = { loading: true };
173
- * el.refresh(); // Force immediate render
174
- * ```
175
- */
176
- refresh(): void;
177
- /**
178
- * Get the first child element (the actual rendered component).
179
- *
180
- * @typeParam T - Expected element type
181
- * @returns The first child element or null
182
- *
183
- * @example
184
- * ```typescript
185
- * const button = el.getInnerElement<HTMLButtonElement>();
186
- * button?.focus();
187
- * ```
188
- */
189
- getInnerElement<T extends Element = Element>(): T | null;
190
- /**
191
- * Update content and re-render.
192
- *
193
- * @param content - New content string
194
- */
195
- setContent(content: string): void;
196
- }
197
- export {};