@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,289 +0,0 @@
1
- "use strict";
2
- /**
3
- * @file base-element.ts
4
- * @description Base class for all FrontMCP Web Components.
5
- *
6
- * Provides a foundation for creating Custom Elements with:
7
- * - Zod schema validation
8
- * - Attribute-to-option mapping
9
- * - Property setters for React/Vue compatibility
10
- * - Batched rendering via queueMicrotask
11
- * - Light DOM (no Shadow DOM) for Tailwind compatibility
12
- *
13
- * @example Creating a custom element
14
- * ```typescript
15
- * import { FmcpElement } from '@frontmcp/ui/web-components';
16
- * import { ButtonOptionsSchema, type ButtonOptions } from '@frontmcp/ui/components';
17
- * import { button } from '@frontmcp/ui/components';
18
- *
19
- * class FmcpButton extends FmcpElement<ButtonOptions> {
20
- * protected readonly config = {
21
- * name: 'button',
22
- * schema: ButtonOptionsSchema,
23
- * defaults: { variant: 'primary', size: 'md' },
24
- * };
25
- *
26
- * static get observedAttributes() {
27
- * return getObservedAttributesFromSchema(ButtonOptionsSchema);
28
- * }
29
- *
30
- * protected renderHtml(options: ButtonOptions, content: string): string {
31
- * return button(content, options);
32
- * }
33
- * }
34
- *
35
- * customElements.define('fmcp-button', FmcpButton);
36
- * ```
37
- *
38
- * @module @frontmcp/ui/web-components/core/base-element
39
- */
40
- Object.defineProperty(exports, "__esModule", { value: true });
41
- exports.FmcpElement = void 0;
42
- const error_box_1 = require("../../validation/error-box");
43
- const attribute_parser_1 = require("./attribute-parser");
44
- // Server-side stub for HTMLElement (Node.js doesn't have DOM)
45
- // This allows the module to be imported without errors, but the actual
46
- // web components can only be used in browser environments.
47
- const HTMLElementBase = typeof HTMLElement !== 'undefined'
48
- ? HTMLElement
49
- : class {
50
- innerHTML = '';
51
- dispatchEvent() {
52
- return true;
53
- }
54
- getAttribute() {
55
- return null;
56
- }
57
- };
58
- /**
59
- * Base class for all FrontMCP Web Components.
60
- *
61
- * Key features:
62
- * - **Light DOM**: Renders directly to innerHTML (no Shadow DOM)
63
- * - **Attribute Parsing**: Converts HTML attributes to typed options
64
- * - **Property Setters**: React/Vue can set properties directly
65
- * - **Zod Validation**: Invalid options render error box
66
- * - **Batched Rendering**: Multiple changes batch via queueMicrotask
67
- * - **HTMX Support**: hx-* attributes pass through to inner elements
68
- *
69
- * @typeParam TOptions - The component's options type (from Zod schema)
70
- *
71
- * @example Usage in HTML
72
- * ```html
73
- * <fmcp-button variant="primary" disabled>
74
- * Click Me
75
- * </fmcp-button>
76
- * ```
77
- *
78
- * @example Usage in React
79
- * ```tsx
80
- * <fmcp-button
81
- * variant="primary"
82
- * onClick={handleClick}
83
- * >
84
- * Click Me
85
- * </fmcp-button>
86
- * ```
87
- */
88
- class FmcpElement extends HTMLElementBase {
89
- /** Internal options state */
90
- _options = {};
91
- /** Content passed as children (captured on connect) */
92
- _content = '';
93
- /** Whether component has been connected to DOM */
94
- _connected = false;
95
- /** Whether a render is pending (for batching) */
96
- _pendingRender = false;
97
- /** Whether initial render has completed */
98
- _initialRenderComplete = false;
99
- // ============================================
100
- // Lifecycle Callbacks
101
- // ============================================
102
- /**
103
- * Called when element is added to DOM.
104
- * Captures content, parses attributes, and renders.
105
- *
106
- * Supports SSR hydration via `data-ssr` attribute:
107
- * - If `data-ssr` is present, content was pre-rendered by server
108
- * - Web component adopts existing content without re-rendering
109
- * - This enables progressive enhancement for LLM platforms
110
- */
111
- connectedCallback() {
112
- this._connected = true;
113
- // Check for SSR hydration marker
114
- const isHydrating = this.hasAttribute('data-ssr');
115
- if (isHydrating) {
116
- // Content already rendered by server, adopt it
117
- this._content = this.innerHTML;
118
- this._initialRenderComplete = true;
119
- this.removeAttribute('data-ssr');
120
- // Parse attributes for property access (but don't re-render)
121
- this._parseAttributes();
122
- return;
123
- }
124
- // Normal client-side rendering path
125
- // Capture initial content before first render
126
- // (so we can use it as the component's text/children)
127
- if (!this._initialRenderComplete) {
128
- this._content = this.innerHTML;
129
- }
130
- // Parse all current attributes into options
131
- this._parseAttributes();
132
- // Initial render
133
- this._render();
134
- }
135
- /**
136
- * Called when element is removed from DOM.
137
- */
138
- disconnectedCallback() {
139
- this._connected = false;
140
- }
141
- /**
142
- * Called when an observed attribute changes.
143
- * Updates options and schedules re-render.
144
- */
145
- attributeChangedCallback(name, oldValue, newValue) {
146
- // Skip if value unchanged
147
- if (oldValue === newValue)
148
- return;
149
- // Update the corresponding option
150
- this._updateOptionFromAttribute(name, newValue);
151
- // Schedule re-render (batched)
152
- this._scheduleRender();
153
- }
154
- // ============================================
155
- // Property Accessors (React/Vue Compatibility)
156
- // ============================================
157
- /**
158
- * Set all options at once (React pattern).
159
- *
160
- * @example
161
- * ```typescript
162
- * const el = document.querySelector('fmcp-button');
163
- * el.options = { variant: 'danger', size: 'lg' };
164
- * ```
165
- */
166
- set options(value) {
167
- this._options = { ...this._options, ...value };
168
- this._scheduleRender();
169
- }
170
- /**
171
- * Get current options.
172
- */
173
- get options() {
174
- return { ...this._options };
175
- }
176
- // ============================================
177
- // Attribute Parsing
178
- // ============================================
179
- /**
180
- * Parse all current attributes into options.
181
- */
182
- _parseAttributes() {
183
- for (const attr of Array.from(this.attributes)) {
184
- this._updateOptionFromAttribute(attr.name, attr.value);
185
- }
186
- }
187
- /**
188
- * Update a single option from an attribute change.
189
- */
190
- _updateOptionFromAttribute(attrName, value) {
191
- const parsed = (0, attribute_parser_1.parseAttributeValue)(attrName, value);
192
- this._options = (0, attribute_parser_1.mergeAttributeIntoOptions)(this._options, parsed);
193
- }
194
- // ============================================
195
- // Rendering
196
- // ============================================
197
- /**
198
- * Schedule a render on next microtask.
199
- * Batches multiple attribute/property changes.
200
- */
201
- _scheduleRender() {
202
- if (!this._connected || this._pendingRender)
203
- return;
204
- this._pendingRender = true;
205
- queueMicrotask(() => {
206
- this._pendingRender = false;
207
- if (this._connected) {
208
- this._render();
209
- }
210
- });
211
- }
212
- /**
213
- * Perform the actual render.
214
- * Validates options and updates innerHTML.
215
- */
216
- _render() {
217
- // Merge defaults with current options
218
- const mergedOptions = {
219
- ...this.config.defaults,
220
- ...this._options,
221
- };
222
- // Validate with Zod schema
223
- const result = this.config.schema.safeParse(mergedOptions);
224
- if (!result.success) {
225
- // Render validation error box
226
- const firstError = result.error.issues[0];
227
- const invalidParam = firstError?.path.join('.') || 'options';
228
- this.innerHTML = (0, error_box_1.validationErrorBox)({
229
- componentName: this.config.name,
230
- invalidParam,
231
- });
232
- this._initialRenderComplete = true;
233
- return;
234
- }
235
- // Generate HTML using subclass implementation
236
- const html = this.renderHtml(result.data, this._content);
237
- // Update Light DOM
238
- this.innerHTML = html;
239
- this._initialRenderComplete = true;
240
- // Dispatch render event for debugging/testing
241
- this.dispatchEvent(new CustomEvent('fmcp:render', {
242
- bubbles: true,
243
- detail: { options: result.data },
244
- }));
245
- }
246
- // ============================================
247
- // Public API
248
- // ============================================
249
- /**
250
- * Force an immediate re-render.
251
- *
252
- * @example
253
- * ```typescript
254
- * el.options = { loading: true };
255
- * el.refresh(); // Force immediate render
256
- * ```
257
- */
258
- refresh() {
259
- if (this._connected) {
260
- this._render();
261
- }
262
- }
263
- /**
264
- * Get the first child element (the actual rendered component).
265
- *
266
- * @typeParam T - Expected element type
267
- * @returns The first child element or null
268
- *
269
- * @example
270
- * ```typescript
271
- * const button = el.getInnerElement<HTMLButtonElement>();
272
- * button?.focus();
273
- * ```
274
- */
275
- getInnerElement() {
276
- return this.firstElementChild;
277
- }
278
- /**
279
- * Update content and re-render.
280
- *
281
- * @param content - New content string
282
- */
283
- setContent(content) {
284
- this._content = content;
285
- this._scheduleRender();
286
- }
287
- }
288
- exports.FmcpElement = FmcpElement;
289
- //# sourceMappingURL=base-element.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base-element.js","sourceRoot":"","sources":["../../../../src/web-components/core/base-element.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @file base-element.ts\n * @description Base class for all FrontMCP Web Components.\n *\n * Provides a foundation for creating Custom Elements with:\n * - Zod schema validation\n * - Attribute-to-option mapping\n * - Property setters for React/Vue compatibility\n * - Batched rendering via queueMicrotask\n * - Light DOM (no Shadow DOM) for Tailwind compatibility\n *\n * @example Creating a custom element\n * ```typescript\n * import { FmcpElement } from '@frontmcp/ui/web-components';\n * import { ButtonOptionsSchema, type ButtonOptions } from '@frontmcp/ui/components';\n * import { button } from '@frontmcp/ui/components';\n *\n * class FmcpButton extends FmcpElement<ButtonOptions> {\n * protected readonly config = {\n * name: 'button',\n * schema: ButtonOptionsSchema,\n * defaults: { variant: 'primary', size: 'md' },\n * };\n *\n * static get observedAttributes() {\n * return getObservedAttributesFromSchema(ButtonOptionsSchema);\n * }\n *\n * protected renderHtml(options: ButtonOptions, content: string): string {\n * return button(content, options);\n * }\n * }\n *\n * customElements.define('fmcp-button', FmcpButton);\n * ```\n *\n * @module @frontmcp/ui/web-components/core/base-element\n */\n\nimport type { ZodSchema } from 'zod';\nimport { validationErrorBox } from '../../validation/error-box';\nimport { parseAttributeValue, mergeAttributeIntoOptions } from './attribute-parser';\n\n// Server-side stub for HTMLElement (Node.js doesn't have DOM)\n// This allows the module to be imported without errors, but the actual\n// web components can only be used in browser environments.\nconst HTMLElementBase =\n typeof HTMLElement !== 'undefined'\n ? HTMLElement\n : (class {\n innerHTML = '';\n dispatchEvent() {\n return true;\n }\n getAttribute() {\n return null;\n }\n } as unknown as typeof HTMLElement);\n\n/**\n * Configuration for FmcpElement subclasses\n */\nexport interface FmcpElementConfig<TOptions> {\n /** Component name (used in error messages) */\n name: string;\n /** Zod schema for validation */\n schema: ZodSchema<TOptions>;\n /** Default option values */\n defaults?: Partial<TOptions>;\n}\n\n/**\n * Custom event detail for fmcp:render event\n */\nexport interface FmcpRenderEventDetail<TOptions = unknown> {\n options: TOptions;\n}\n\n/**\n * Base class for all FrontMCP Web Components.\n *\n * Key features:\n * - **Light DOM**: Renders directly to innerHTML (no Shadow DOM)\n * - **Attribute Parsing**: Converts HTML attributes to typed options\n * - **Property Setters**: React/Vue can set properties directly\n * - **Zod Validation**: Invalid options render error box\n * - **Batched Rendering**: Multiple changes batch via queueMicrotask\n * - **HTMX Support**: hx-* attributes pass through to inner elements\n *\n * @typeParam TOptions - The component's options type (from Zod schema)\n *\n * @example Usage in HTML\n * ```html\n * <fmcp-button variant=\"primary\" disabled>\n * Click Me\n * </fmcp-button>\n * ```\n *\n * @example Usage in React\n * ```tsx\n * <fmcp-button\n * variant=\"primary\"\n * onClick={handleClick}\n * >\n * Click Me\n * </fmcp-button>\n * ```\n */\nexport abstract class FmcpElement<TOptions> extends HTMLElementBase {\n /**\n * Configuration provided by subclass.\n * Must include component name, Zod schema, and optional defaults.\n */\n protected abstract readonly config: FmcpElementConfig<TOptions>;\n\n /** Internal options state */\n protected _options: Partial<TOptions> = {};\n\n /** Content passed as children (captured on connect) */\n protected _content: string = '';\n\n /** Whether component has been connected to DOM */\n private _connected = false;\n\n /** Whether a render is pending (for batching) */\n private _pendingRender = false;\n\n /** Whether initial render has completed */\n private _initialRenderComplete = false;\n\n // ============================================\n // Lifecycle Callbacks\n // ============================================\n\n /**\n * Called when element is added to DOM.\n * Captures content, parses attributes, and renders.\n *\n * Supports SSR hydration via `data-ssr` attribute:\n * - If `data-ssr` is present, content was pre-rendered by server\n * - Web component adopts existing content without re-rendering\n * - This enables progressive enhancement for LLM platforms\n */\n connectedCallback(): void {\n this._connected = true;\n\n // Check for SSR hydration marker\n const isHydrating = this.hasAttribute('data-ssr');\n\n if (isHydrating) {\n // Content already rendered by server, adopt it\n this._content = this.innerHTML;\n this._initialRenderComplete = true;\n this.removeAttribute('data-ssr');\n // Parse attributes for property access (but don't re-render)\n this._parseAttributes();\n return;\n }\n\n // Normal client-side rendering path\n // Capture initial content before first render\n // (so we can use it as the component's text/children)\n if (!this._initialRenderComplete) {\n this._content = this.innerHTML;\n }\n\n // Parse all current attributes into options\n this._parseAttributes();\n\n // Initial render\n this._render();\n }\n\n /**\n * Called when element is removed from DOM.\n */\n disconnectedCallback(): void {\n this._connected = false;\n }\n\n /**\n * Called when an observed attribute changes.\n * Updates options and schedules re-render.\n */\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void {\n // Skip if value unchanged\n if (oldValue === newValue) return;\n\n // Update the corresponding option\n this._updateOptionFromAttribute(name, newValue);\n\n // Schedule re-render (batched)\n this._scheduleRender();\n }\n\n // ============================================\n // Property Accessors (React/Vue Compatibility)\n // ============================================\n\n /**\n * Set all options at once (React pattern).\n *\n * @example\n * ```typescript\n * const el = document.querySelector('fmcp-button');\n * el.options = { variant: 'danger', size: 'lg' };\n * ```\n */\n set options(value: Partial<TOptions>) {\n this._options = { ...this._options, ...value };\n this._scheduleRender();\n }\n\n /**\n * Get current options.\n */\n get options(): Partial<TOptions> {\n return { ...this._options };\n }\n\n // ============================================\n // Attribute Parsing\n // ============================================\n\n /**\n * Parse all current attributes into options.\n */\n private _parseAttributes(): void {\n for (const attr of Array.from(this.attributes)) {\n this._updateOptionFromAttribute(attr.name, attr.value);\n }\n }\n\n /**\n * Update a single option from an attribute change.\n */\n private _updateOptionFromAttribute(attrName: string, value: string | null): void {\n const parsed = parseAttributeValue(attrName, value);\n this._options = mergeAttributeIntoOptions(this._options, parsed);\n }\n\n // ============================================\n // Rendering\n // ============================================\n\n /**\n * Schedule a render on next microtask.\n * Batches multiple attribute/property changes.\n */\n protected _scheduleRender(): void {\n if (!this._connected || this._pendingRender) return;\n\n this._pendingRender = true;\n queueMicrotask(() => {\n this._pendingRender = false;\n if (this._connected) {\n this._render();\n }\n });\n }\n\n /**\n * Perform the actual render.\n * Validates options and updates innerHTML.\n */\n private _render(): void {\n // Merge defaults with current options\n const mergedOptions = {\n ...this.config.defaults,\n ...this._options,\n } as TOptions;\n\n // Validate with Zod schema\n const result = this.config.schema.safeParse(mergedOptions);\n\n if (!result.success) {\n // Render validation error box\n const firstError = result.error.issues[0];\n const invalidParam = firstError?.path.join('.') || 'options';\n\n this.innerHTML = validationErrorBox({\n componentName: this.config.name,\n invalidParam,\n });\n\n this._initialRenderComplete = true;\n return;\n }\n\n // Generate HTML using subclass implementation\n const html = this.renderHtml(result.data, this._content);\n\n // Update Light DOM\n this.innerHTML = html;\n\n this._initialRenderComplete = true;\n\n // Dispatch render event for debugging/testing\n this.dispatchEvent(\n new CustomEvent<FmcpRenderEventDetail<TOptions>>('fmcp:render', {\n bubbles: true,\n detail: { options: result.data },\n }),\n );\n }\n\n /**\n * Generate HTML for the component.\n * Subclasses must implement this to render their specific HTML.\n *\n * @param options - Validated options\n * @param content - Original innerHTML content\n * @returns HTML string to render\n */\n protected abstract renderHtml(options: TOptions, content: string): string;\n\n // ============================================\n // Public API\n // ============================================\n\n /**\n * Force an immediate re-render.\n *\n * @example\n * ```typescript\n * el.options = { loading: true };\n * el.refresh(); // Force immediate render\n * ```\n */\n public refresh(): void {\n if (this._connected) {\n this._render();\n }\n }\n\n /**\n * Get the first child element (the actual rendered component).\n *\n * @typeParam T - Expected element type\n * @returns The first child element or null\n *\n * @example\n * ```typescript\n * const button = el.getInnerElement<HTMLButtonElement>();\n * button?.focus();\n * ```\n */\n public getInnerElement<T extends Element = Element>(): T | null {\n return this.firstElementChild as T | null;\n }\n\n /**\n * Update content and re-render.\n *\n * @param content - New content string\n */\n public setContent(content: string): void {\n this._content = content;\n this._scheduleRender();\n }\n}\n"]}
@@ -1,8 +0,0 @@
1
- /**
2
- * @file core/index.ts
3
- * @description Core utilities for FrontMCP Web Components.
4
- *
5
- * @module @frontmcp/ui/web-components/core
6
- */
7
- export { FmcpElement, type FmcpElementConfig, type FmcpRenderEventDetail } from './base-element';
8
- export { parseAttributeValue, kebabToCamel, camelToKebab, getObservedAttributesFromSchema, mergeAttributeIntoOptions, type ParsedAttribute, } from './attribute-parser';
@@ -1,18 +0,0 @@
1
- "use strict";
2
- /**
3
- * @file core/index.ts
4
- * @description Core utilities for FrontMCP Web Components.
5
- *
6
- * @module @frontmcp/ui/web-components/core
7
- */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.mergeAttributeIntoOptions = exports.getObservedAttributesFromSchema = exports.camelToKebab = exports.kebabToCamel = exports.parseAttributeValue = exports.FmcpElement = void 0;
10
- var base_element_1 = require("./base-element");
11
- Object.defineProperty(exports, "FmcpElement", { enumerable: true, get: function () { return base_element_1.FmcpElement; } });
12
- var attribute_parser_1 = require("./attribute-parser");
13
- Object.defineProperty(exports, "parseAttributeValue", { enumerable: true, get: function () { return attribute_parser_1.parseAttributeValue; } });
14
- Object.defineProperty(exports, "kebabToCamel", { enumerable: true, get: function () { return attribute_parser_1.kebabToCamel; } });
15
- Object.defineProperty(exports, "camelToKebab", { enumerable: true, get: function () { return attribute_parser_1.camelToKebab; } });
16
- Object.defineProperty(exports, "getObservedAttributesFromSchema", { enumerable: true, get: function () { return attribute_parser_1.getObservedAttributesFromSchema; } });
17
- Object.defineProperty(exports, "mergeAttributeIntoOptions", { enumerable: true, get: function () { return attribute_parser_1.mergeAttributeIntoOptions; } });
18
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/web-components/core/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,+CAAiG;AAAxF,2GAAA,WAAW,OAAA;AAEpB,uDAO4B;AAN1B,uHAAA,mBAAmB,OAAA;AACnB,gHAAA,YAAY,OAAA;AACZ,gHAAA,YAAY,OAAA;AACZ,mIAAA,+BAA+B,OAAA;AAC/B,6HAAA,yBAAyB,OAAA","sourcesContent":["/**\n * @file core/index.ts\n * @description Core utilities for FrontMCP Web Components.\n *\n * @module @frontmcp/ui/web-components/core\n */\n\nexport { FmcpElement, type FmcpElementConfig, type FmcpRenderEventDetail } from './base-element';\n\nexport {\n parseAttributeValue,\n kebabToCamel,\n camelToKebab,\n getObservedAttributesFromSchema,\n mergeAttributeIntoOptions,\n type ParsedAttribute,\n} from './attribute-parser';\n"]}
@@ -1,45 +0,0 @@
1
- /**
2
- * @file fmcp-alert.ts
3
- * @description FrontMCP Alert Web Component.
4
- *
5
- * A custom element wrapper around the alert() HTML function.
6
- *
7
- * @example Basic usage
8
- * ```html
9
- * <fmcp-alert variant="success">Operation completed!</fmcp-alert>
10
- * <fmcp-alert variant="danger" title="Error">Something went wrong</fmcp-alert>
11
- * ```
12
- *
13
- * @example Dismissible alert
14
- * ```html
15
- * <fmcp-alert variant="info" dismissible>
16
- * Click X to dismiss
17
- * </fmcp-alert>
18
- * ```
19
- *
20
- * @module @frontmcp/ui/web-components/elements/fmcp-alert
21
- */
22
- import { FmcpElement, type FmcpElementConfig } from '../core';
23
- import { type AlertOptions } from '../../components/alert';
24
- /**
25
- * FmcpAlert Web Component
26
- */
27
- export declare class FmcpAlert extends FmcpElement<AlertOptions> {
28
- protected readonly config: FmcpElementConfig<AlertOptions>;
29
- static get observedAttributes(): string[];
30
- protected renderHtml(options: AlertOptions, content: string): string;
31
- set variant(value: AlertOptions['variant']);
32
- get variant(): AlertOptions['variant'];
33
- set alertTitle(value: string | undefined);
34
- get alertTitle(): string | undefined;
35
- set showIcon(value: boolean);
36
- get showIcon(): boolean;
37
- set dismissible(value: boolean);
38
- get dismissible(): boolean;
39
- set actions(value: string | undefined);
40
- get actions(): string | undefined;
41
- }
42
- /**
43
- * Register the fmcp-alert custom element.
44
- */
45
- export declare function registerFmcpAlert(): void;
@@ -1,93 +0,0 @@
1
- "use strict";
2
- /**
3
- * @file fmcp-alert.ts
4
- * @description FrontMCP Alert Web Component.
5
- *
6
- * A custom element wrapper around the alert() HTML function.
7
- *
8
- * @example Basic usage
9
- * ```html
10
- * <fmcp-alert variant="success">Operation completed!</fmcp-alert>
11
- * <fmcp-alert variant="danger" title="Error">Something went wrong</fmcp-alert>
12
- * ```
13
- *
14
- * @example Dismissible alert
15
- * ```html
16
- * <fmcp-alert variant="info" dismissible>
17
- * Click X to dismiss
18
- * </fmcp-alert>
19
- * ```
20
- *
21
- * @module @frontmcp/ui/web-components/elements/fmcp-alert
22
- */
23
- Object.defineProperty(exports, "__esModule", { value: true });
24
- exports.FmcpAlert = void 0;
25
- exports.registerFmcpAlert = registerFmcpAlert;
26
- const core_1 = require("../core");
27
- const alert_1 = require("../../components/alert");
28
- const alert_schema_1 = require("../../components/alert.schema");
29
- /**
30
- * FmcpAlert Web Component
31
- */
32
- class FmcpAlert extends core_1.FmcpElement {
33
- config = {
34
- name: 'alert',
35
- schema: alert_schema_1.AlertOptionsSchema,
36
- defaults: {
37
- variant: 'info',
38
- showIcon: true,
39
- },
40
- };
41
- static get observedAttributes() {
42
- return (0, core_1.getObservedAttributesFromSchema)(alert_schema_1.AlertOptionsSchema);
43
- }
44
- renderHtml(options, content) {
45
- return (0, alert_1.alert)(content, options);
46
- }
47
- // Property setters
48
- set variant(value) {
49
- this._options.variant = value;
50
- this._scheduleRender();
51
- }
52
- get variant() {
53
- return this._options.variant;
54
- }
55
- set alertTitle(value) {
56
- this._options.title = value;
57
- this._scheduleRender();
58
- }
59
- get alertTitle() {
60
- return this._options.title;
61
- }
62
- set showIcon(value) {
63
- this._options.showIcon = value;
64
- this._scheduleRender();
65
- }
66
- get showIcon() {
67
- return this._options.showIcon ?? true;
68
- }
69
- set dismissible(value) {
70
- this._options.dismissible = value;
71
- this._scheduleRender();
72
- }
73
- get dismissible() {
74
- return this._options.dismissible ?? false;
75
- }
76
- set actions(value) {
77
- this._options.actions = value;
78
- this._scheduleRender();
79
- }
80
- get actions() {
81
- return this._options.actions;
82
- }
83
- }
84
- exports.FmcpAlert = FmcpAlert;
85
- /**
86
- * Register the fmcp-alert custom element.
87
- */
88
- function registerFmcpAlert() {
89
- if (typeof customElements !== 'undefined' && !customElements.get('fmcp-alert')) {
90
- customElements.define('fmcp-alert', FmcpAlert);
91
- }
92
- }
93
- //# sourceMappingURL=fmcp-alert.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fmcp-alert.js","sourceRoot":"","sources":["../../../../src/web-components/elements/fmcp-alert.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;;AAwEH,8CAIC;AA1ED,kCAA+F;AAC/F,kDAAkE;AAClE,gEAAmE;AAEnE;;GAEG;AACH,MAAa,SAAU,SAAQ,kBAAyB;IACnC,MAAM,GAAoC;QAC3D,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,iCAAkB;QAC1B,QAAQ,EAAE;YACR,OAAO,EAAE,MAAM;YACf,QAAQ,EAAE,IAAI;SACf;KACF,CAAC;IAEF,MAAM,KAAK,kBAAkB;QAC3B,OAAO,IAAA,sCAA+B,EAAC,iCAAkB,CAAC,CAAC;IAC7D,CAAC;IAES,UAAU,CAAC,OAAqB,EAAE,OAAe;QACzD,OAAO,IAAA,aAAK,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,mBAAmB;IACnB,IAAI,OAAO,CAAC,KAA8B;QACxC,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IAC/B,CAAC;IAED,IAAI,UAAU,CAAC,KAAyB;QACtC,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC7B,CAAC;IAED,IAAI,QAAQ,CAAC,KAAc;QACzB,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,IAAI,CAAC;IACxC,CAAC;IAED,IAAI,WAAW,CAAC,KAAc;QAC5B,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC;QAClC,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,KAAK,CAAC;IAC5C,CAAC;IAED,IAAI,OAAO,CAAC,KAAyB;QACnC,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IAC/B,CAAC;CACF;AA1DD,8BA0DC;AAED;;GAEG;AACH,SAAgB,iBAAiB;IAC/B,IAAI,OAAO,cAAc,KAAK,WAAW,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;QAC/E,cAAc,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IACjD,CAAC;AACH,CAAC","sourcesContent":["/**\n * @file fmcp-alert.ts\n * @description FrontMCP Alert Web Component.\n *\n * A custom element wrapper around the alert() HTML function.\n *\n * @example Basic usage\n * ```html\n * <fmcp-alert variant=\"success\">Operation completed!</fmcp-alert>\n * <fmcp-alert variant=\"danger\" title=\"Error\">Something went wrong</fmcp-alert>\n * ```\n *\n * @example Dismissible alert\n * ```html\n * <fmcp-alert variant=\"info\" dismissible>\n * Click X to dismiss\n * </fmcp-alert>\n * ```\n *\n * @module @frontmcp/ui/web-components/elements/fmcp-alert\n */\n\nimport { FmcpElement, type FmcpElementConfig, getObservedAttributesFromSchema } from '../core';\nimport { alert, type AlertOptions } from '../../components/alert';\nimport { AlertOptionsSchema } from '../../components/alert.schema';\n\n/**\n * FmcpAlert Web Component\n */\nexport class FmcpAlert extends FmcpElement<AlertOptions> {\n protected readonly config: FmcpElementConfig<AlertOptions> = {\n name: 'alert',\n schema: AlertOptionsSchema,\n defaults: {\n variant: 'info',\n showIcon: true,\n },\n };\n\n static get observedAttributes(): string[] {\n return getObservedAttributesFromSchema(AlertOptionsSchema);\n }\n\n protected renderHtml(options: AlertOptions, content: string): string {\n return alert(content, options);\n }\n\n // Property setters\n set variant(value: AlertOptions['variant']) {\n this._options.variant = value;\n this._scheduleRender();\n }\n get variant(): AlertOptions['variant'] {\n return this._options.variant;\n }\n\n set alertTitle(value: string | undefined) {\n this._options.title = value;\n this._scheduleRender();\n }\n get alertTitle(): string | undefined {\n return this._options.title;\n }\n\n set showIcon(value: boolean) {\n this._options.showIcon = value;\n this._scheduleRender();\n }\n get showIcon(): boolean {\n return this._options.showIcon ?? true;\n }\n\n set dismissible(value: boolean) {\n this._options.dismissible = value;\n this._scheduleRender();\n }\n get dismissible(): boolean {\n return this._options.dismissible ?? false;\n }\n\n set actions(value: string | undefined) {\n this._options.actions = value;\n this._scheduleRender();\n }\n get actions(): string | undefined {\n return this._options.actions;\n }\n}\n\n/**\n * Register the fmcp-alert custom element.\n */\nexport function registerFmcpAlert(): void {\n if (typeof customElements !== 'undefined' && !customElements.get('fmcp-alert')) {\n customElements.define('fmcp-alert', FmcpAlert);\n }\n}\n"]}
@@ -1,46 +0,0 @@
1
- /**
2
- * @file fmcp-badge.ts
3
- * @description FrontMCP Badge Web Component.
4
- *
5
- * A custom element wrapper around the badge() HTML function.
6
- *
7
- * @example Basic usage
8
- * ```html
9
- * <fmcp-badge>Default</fmcp-badge>
10
- * <fmcp-badge variant="success">Active</fmcp-badge>
11
- * <fmcp-badge variant="danger" pill>Error</fmcp-badge>
12
- * ```
13
- *
14
- * @example Removable badge
15
- * ```html
16
- * <fmcp-badge removable>Tag</fmcp-badge>
17
- * ```
18
- *
19
- * @module @frontmcp/ui/web-components/elements/fmcp-badge
20
- */
21
- import { FmcpElement, type FmcpElementConfig } from '../core';
22
- import { type BadgeOptions } from '../../components/badge';
23
- /**
24
- * FmcpBadge Web Component
25
- */
26
- export declare class FmcpBadge extends FmcpElement<BadgeOptions> {
27
- protected readonly config: FmcpElementConfig<BadgeOptions>;
28
- static get observedAttributes(): string[];
29
- protected renderHtml(options: BadgeOptions, content: string): string;
30
- set variant(value: BadgeOptions['variant']);
31
- get variant(): BadgeOptions['variant'];
32
- set size(value: BadgeOptions['size']);
33
- get size(): BadgeOptions['size'];
34
- set pill(value: boolean);
35
- get pill(): boolean;
36
- set dot(value: boolean);
37
- get dot(): boolean;
38
- set removable(value: boolean);
39
- get removable(): boolean;
40
- set icon(value: string | undefined);
41
- get icon(): string | undefined;
42
- }
43
- /**
44
- * Register the fmcp-badge custom element.
45
- */
46
- export declare function registerFmcpBadge(): void;
@@ -1,99 +0,0 @@
1
- "use strict";
2
- /**
3
- * @file fmcp-badge.ts
4
- * @description FrontMCP Badge Web Component.
5
- *
6
- * A custom element wrapper around the badge() HTML function.
7
- *
8
- * @example Basic usage
9
- * ```html
10
- * <fmcp-badge>Default</fmcp-badge>
11
- * <fmcp-badge variant="success">Active</fmcp-badge>
12
- * <fmcp-badge variant="danger" pill>Error</fmcp-badge>
13
- * ```
14
- *
15
- * @example Removable badge
16
- * ```html
17
- * <fmcp-badge removable>Tag</fmcp-badge>
18
- * ```
19
- *
20
- * @module @frontmcp/ui/web-components/elements/fmcp-badge
21
- */
22
- Object.defineProperty(exports, "__esModule", { value: true });
23
- exports.FmcpBadge = void 0;
24
- exports.registerFmcpBadge = registerFmcpBadge;
25
- const core_1 = require("../core");
26
- const badge_1 = require("../../components/badge");
27
- const badge_schema_1 = require("../../components/badge.schema");
28
- /**
29
- * FmcpBadge Web Component
30
- */
31
- class FmcpBadge extends core_1.FmcpElement {
32
- config = {
33
- name: 'badge',
34
- schema: badge_schema_1.BadgeOptionsSchema,
35
- defaults: {
36
- variant: 'default',
37
- size: 'md',
38
- },
39
- };
40
- static get observedAttributes() {
41
- return (0, core_1.getObservedAttributesFromSchema)(badge_schema_1.BadgeOptionsSchema);
42
- }
43
- renderHtml(options, content) {
44
- return (0, badge_1.badge)(content, options);
45
- }
46
- // Property setters
47
- set variant(value) {
48
- this._options.variant = value;
49
- this._scheduleRender();
50
- }
51
- get variant() {
52
- return this._options.variant;
53
- }
54
- set size(value) {
55
- this._options.size = value;
56
- this._scheduleRender();
57
- }
58
- get size() {
59
- return this._options.size;
60
- }
61
- set pill(value) {
62
- this._options.pill = value;
63
- this._scheduleRender();
64
- }
65
- get pill() {
66
- return this._options.pill ?? false;
67
- }
68
- set dot(value) {
69
- this._options.dot = value;
70
- this._scheduleRender();
71
- }
72
- get dot() {
73
- return this._options.dot ?? false;
74
- }
75
- set removable(value) {
76
- this._options.removable = value;
77
- this._scheduleRender();
78
- }
79
- get removable() {
80
- return this._options.removable ?? false;
81
- }
82
- set icon(value) {
83
- this._options.icon = value;
84
- this._scheduleRender();
85
- }
86
- get icon() {
87
- return this._options.icon;
88
- }
89
- }
90
- exports.FmcpBadge = FmcpBadge;
91
- /**
92
- * Register the fmcp-badge custom element.
93
- */
94
- function registerFmcpBadge() {
95
- if (typeof customElements !== 'undefined' && !customElements.get('fmcp-badge')) {
96
- customElements.define('fmcp-badge', FmcpBadge);
97
- }
98
- }
99
- //# sourceMappingURL=fmcp-badge.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fmcp-badge.js","sourceRoot":"","sources":["../../../../src/web-components/elements/fmcp-badge.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;AAgFH,8CAIC;AAlFD,kCAA+F;AAC/F,kDAAkE;AAClE,gEAAmE;AAEnE;;GAEG;AACH,MAAa,SAAU,SAAQ,kBAAyB;IACnC,MAAM,GAAoC;QAC3D,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,iCAAkB;QAC1B,QAAQ,EAAE;YACR,OAAO,EAAE,SAAS;YAClB,IAAI,EAAE,IAAI;SACX;KACF,CAAC;IAEF,MAAM,KAAK,kBAAkB;QAC3B,OAAO,IAAA,sCAA+B,EAAC,iCAAkB,CAAC,CAAC;IAC7D,CAAC;IAES,UAAU,CAAC,OAAqB,EAAE,OAAe;QACzD,OAAO,IAAA,aAAK,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,mBAAmB;IACnB,IAAI,OAAO,CAAC,KAA8B;QACxC,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IAC/B,CAAC;IAED,IAAI,IAAI,CAAC,KAA2B;QAClC,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,IAAI,IAAI,CAAC,KAAc;QACrB,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,KAAK,CAAC;IACrC,CAAC;IAED,IAAI,GAAG,CAAC,KAAc;QACpB,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,KAAK,CAAC;IACpC,CAAC;IAED,IAAI,SAAS,CAAC,KAAc;QAC1B,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;QAChC,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,KAAK,CAAC;IAC1C,CAAC;IAED,IAAI,IAAI,CAAC,KAAyB;QAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC5B,CAAC;CACF;AAlED,8BAkEC;AAED;;GAEG;AACH,SAAgB,iBAAiB;IAC/B,IAAI,OAAO,cAAc,KAAK,WAAW,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;QAC/E,cAAc,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IACjD,CAAC;AACH,CAAC","sourcesContent":["/**\n * @file fmcp-badge.ts\n * @description FrontMCP Badge Web Component.\n *\n * A custom element wrapper around the badge() HTML function.\n *\n * @example Basic usage\n * ```html\n * <fmcp-badge>Default</fmcp-badge>\n * <fmcp-badge variant=\"success\">Active</fmcp-badge>\n * <fmcp-badge variant=\"danger\" pill>Error</fmcp-badge>\n * ```\n *\n * @example Removable badge\n * ```html\n * <fmcp-badge removable>Tag</fmcp-badge>\n * ```\n *\n * @module @frontmcp/ui/web-components/elements/fmcp-badge\n */\n\nimport { FmcpElement, type FmcpElementConfig, getObservedAttributesFromSchema } from '../core';\nimport { badge, type BadgeOptions } from '../../components/badge';\nimport { BadgeOptionsSchema } from '../../components/badge.schema';\n\n/**\n * FmcpBadge Web Component\n */\nexport class FmcpBadge extends FmcpElement<BadgeOptions> {\n protected readonly config: FmcpElementConfig<BadgeOptions> = {\n name: 'badge',\n schema: BadgeOptionsSchema,\n defaults: {\n variant: 'default',\n size: 'md',\n },\n };\n\n static get observedAttributes(): string[] {\n return getObservedAttributesFromSchema(BadgeOptionsSchema);\n }\n\n protected renderHtml(options: BadgeOptions, content: string): string {\n return badge(content, options);\n }\n\n // Property setters\n set variant(value: BadgeOptions['variant']) {\n this._options.variant = value;\n this._scheduleRender();\n }\n get variant(): BadgeOptions['variant'] {\n return this._options.variant;\n }\n\n set size(value: BadgeOptions['size']) {\n this._options.size = value;\n this._scheduleRender();\n }\n get size(): BadgeOptions['size'] {\n return this._options.size;\n }\n\n set pill(value: boolean) {\n this._options.pill = value;\n this._scheduleRender();\n }\n get pill(): boolean {\n return this._options.pill ?? false;\n }\n\n set dot(value: boolean) {\n this._options.dot = value;\n this._scheduleRender();\n }\n get dot(): boolean {\n return this._options.dot ?? false;\n }\n\n set removable(value: boolean) {\n this._options.removable = value;\n this._scheduleRender();\n }\n get removable(): boolean {\n return this._options.removable ?? false;\n }\n\n set icon(value: string | undefined) {\n this._options.icon = value;\n this._scheduleRender();\n }\n get icon(): string | undefined {\n return this._options.icon;\n }\n}\n\n/**\n * Register the fmcp-badge custom element.\n */\nexport function registerFmcpBadge(): void {\n if (typeof customElements !== 'undefined' && !customElements.get('fmcp-badge')) {\n customElements.define('fmcp-badge', FmcpBadge);\n }\n}\n"]}