@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,103 +0,0 @@
1
- /**
2
- * @file Card.tsx
3
- * @description React Card component with static HTML rendering support.
4
- *
5
- * This is the single source of truth for the Card component. It can be used:
6
- * 1. As a React component: `<Card title="Hello">Content</Card>`
7
- * 2. As a static HTML generator: `await renderCard({ title: 'Hello', children: 'Content' })`
8
- *
9
- * @example React usage
10
- * ```tsx
11
- * import { Card } from '@frontmcp/ui/react';
12
- *
13
- * function App() {
14
- * return (
15
- * <Card title="Welcome" variant="elevated">
16
- * <p>Card content goes here</p>
17
- * </Card>
18
- * );
19
- * }
20
- * ```
21
- *
22
- * @example Static HTML generation
23
- * ```typescript
24
- * import { renderCard } from '@frontmcp/ui/react';
25
- *
26
- * const html = await renderCard({
27
- * title: 'Product',
28
- * subtitle: 'Details',
29
- * variant: 'elevated',
30
- * children: '<p>Product description...</p>',
31
- * });
32
- * ```
33
- *
34
- * @module @frontmcp/ui/react/Card
35
- */
36
- import type { ReactNode, ReactElement } from 'react';
37
- import { type CardVariant, type CardSize } from '../styles/variants';
38
- /**
39
- * Card component props
40
- */
41
- export interface CardProps {
42
- /** Card title */
43
- title?: string;
44
- /** Card subtitle/description */
45
- subtitle?: string;
46
- /** Header actions (React elements) */
47
- headerActions?: ReactNode;
48
- /** Footer content (React elements) */
49
- footer?: ReactNode;
50
- /** Card variant */
51
- variant?: CardVariant;
52
- /** Card size (padding) */
53
- size?: CardSize;
54
- /** Additional CSS classes */
55
- className?: string;
56
- /** Card ID */
57
- id?: string;
58
- /** Clickable card (adds hover effects) */
59
- clickable?: boolean;
60
- /** Click handler URL */
61
- href?: string;
62
- /** Card content */
63
- children?: ReactNode;
64
- }
65
- /**
66
- * Card component.
67
- *
68
- * A versatile container component for grouping related content.
69
- * Uses Tailwind CSS classes for styling.
70
- */
71
- export declare function Card({ title, subtitle, headerActions, footer, variant, size, className, id, clickable, href, children, }: CardProps): ReactElement;
72
- /**
73
- * Props for static render functions (children is always a string)
74
- */
75
- export interface CardRenderProps extends Omit<CardProps, 'children' | 'headerActions' | 'footer'> {
76
- /** Card content as HTML string */
77
- children?: string;
78
- /** Header actions as HTML string */
79
- headerActions?: string;
80
- /** Footer content as HTML string */
81
- footer?: string;
82
- }
83
- /**
84
- * Render Card component to static HTML string (async).
85
- *
86
- * Uses React 19's prerender API for optimal static HTML generation.
87
- *
88
- * @param props - Card props (with string children)
89
- * @returns Promise resolving to HTML string
90
- */
91
- export declare function renderCard(props: CardRenderProps): Promise<string>;
92
- /**
93
- * Render Card component to static HTML string (sync).
94
- *
95
- * Uses React's renderToStaticMarkup for synchronous rendering.
96
- * Does NOT wait for Suspense boundaries.
97
- *
98
- * @param props - Card props (with string children)
99
- * @returns HTML string
100
- */
101
- export declare function renderCardSync(props: CardRenderProps): string;
102
- export type { CardVariant, CardSize };
103
- export default Card;
package/src/react/Card.js DELETED
@@ -1,55 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Card = Card;
4
- exports.renderCard = renderCard;
5
- exports.renderCardSync = renderCardSync;
6
- const jsx_runtime_1 = require("react/jsx-runtime");
7
- const variants_1 = require("../styles/variants");
8
- const prerender_1 = require("../render/prerender");
9
- /**
10
- * Card component.
11
- *
12
- * A versatile container component for grouping related content.
13
- * Uses Tailwind CSS classes for styling.
14
- */
15
- function Card({ title, subtitle, headerActions, footer, variant = 'default', size = 'md', className, id, clickable, href, children, }) {
16
- const variantClasses = (0, variants_1.getCardVariantClasses)(variant);
17
- const sizeClasses = (0, variants_1.getCardSizeClasses)(size);
18
- const clickableClasses = clickable ? 'cursor-pointer hover:shadow-md transition-shadow' : '';
19
- const allClasses = (0, variants_1.cn)(variantClasses, sizeClasses, clickableClasses, className);
20
- const hasHeader = title || subtitle || headerActions;
21
- const content = ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [hasHeader && ((0, jsx_runtime_1.jsxs)("div", { className: "flex items-start justify-between mb-4", children: [(0, jsx_runtime_1.jsxs)("div", { children: [title && (0, jsx_runtime_1.jsx)("h3", { className: "text-lg font-semibold text-text-primary", children: title }), subtitle && (0, jsx_runtime_1.jsx)("p", { className: "text-sm text-text-secondary mt-1", children: subtitle })] }), headerActions && (0, jsx_runtime_1.jsx)("div", { className: "flex items-center gap-2", children: headerActions })] })), children, footer && (0, jsx_runtime_1.jsx)("div", { className: "mt-4 pt-4 border-t border-divider", children: footer })] }));
22
- if (href) {
23
- return ((0, jsx_runtime_1.jsx)("a", { href: href, className: allClasses, id: id, children: content }));
24
- }
25
- return ((0, jsx_runtime_1.jsx)("div", { className: allClasses, id: id, children: content }));
26
- }
27
- /**
28
- * Render Card component to static HTML string (async).
29
- *
30
- * Uses React 19's prerender API for optimal static HTML generation.
31
- *
32
- * @param props - Card props (with string children)
33
- * @returns Promise resolving to HTML string
34
- */
35
- async function renderCard(props) {
36
- const { children, headerActions, footer, ...rest } = props;
37
- const element = ((0, jsx_runtime_1.jsx)(Card, { ...rest, headerActions: headerActions ? (0, jsx_runtime_1.jsx)("span", { dangerouslySetInnerHTML: { __html: headerActions } }) : undefined, footer: footer ? (0, jsx_runtime_1.jsx)("span", { dangerouslySetInnerHTML: { __html: footer } }) : undefined, children: children ? (0, jsx_runtime_1.jsx)("span", { dangerouslySetInnerHTML: { __html: children } }) : undefined }));
38
- return (0, prerender_1.renderToString)(element);
39
- }
40
- /**
41
- * Render Card component to static HTML string (sync).
42
- *
43
- * Uses React's renderToStaticMarkup for synchronous rendering.
44
- * Does NOT wait for Suspense boundaries.
45
- *
46
- * @param props - Card props (with string children)
47
- * @returns HTML string
48
- */
49
- function renderCardSync(props) {
50
- const { children, headerActions, footer, ...rest } = props;
51
- const element = ((0, jsx_runtime_1.jsx)(Card, { ...rest, headerActions: headerActions ? (0, jsx_runtime_1.jsx)("span", { dangerouslySetInnerHTML: { __html: headerActions } }) : undefined, footer: footer ? (0, jsx_runtime_1.jsx)("span", { dangerouslySetInnerHTML: { __html: footer } }) : undefined, children: children ? (0, jsx_runtime_1.jsx)("span", { dangerouslySetInnerHTML: { __html: children } }) : undefined }));
52
- return (0, prerender_1.renderToStringSync)(element);
53
- }
54
- exports.default = Card;
55
- //# sourceMappingURL=Card.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Card.js","sourceRoot":"","sources":["../../../src/react/Card.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * @file Card.tsx\n * @description React Card component with static HTML rendering support.\n *\n * This is the single source of truth for the Card component. It can be used:\n * 1. As a React component: `<Card title=\"Hello\">Content</Card>`\n * 2. As a static HTML generator: `await renderCard({ title: 'Hello', children: 'Content' })`\n *\n * @example React usage\n * ```tsx\n * import { Card } from '@frontmcp/ui/react';\n *\n * function App() {\n * return (\n * <Card title=\"Welcome\" variant=\"elevated\">\n * <p>Card content goes here</p>\n * </Card>\n * );\n * }\n * ```\n *\n * @example Static HTML generation\n * ```typescript\n * import { renderCard } from '@frontmcp/ui/react';\n *\n * const html = await renderCard({\n * title: 'Product',\n * subtitle: 'Details',\n * variant: 'elevated',\n * children: '<p>Product description...</p>',\n * });\n * ```\n *\n * @module @frontmcp/ui/react/Card\n */\n\nimport React from 'react';\nimport type { ReactNode, ReactElement } from 'react';\nimport { type CardVariant, type CardSize, getCardVariantClasses, getCardSizeClasses, cn } from '../styles/variants';\nimport { renderToString, renderToStringSync } from '../render/prerender';\n\n/**\n * Card component props\n */\nexport interface CardProps {\n /** Card title */\n title?: string;\n /** Card subtitle/description */\n subtitle?: string;\n /** Header actions (React elements) */\n headerActions?: ReactNode;\n /** Footer content (React elements) */\n footer?: ReactNode;\n /** Card variant */\n variant?: CardVariant;\n /** Card size (padding) */\n size?: CardSize;\n /** Additional CSS classes */\n className?: string;\n /** Card ID */\n id?: string;\n /** Clickable card (adds hover effects) */\n clickable?: boolean;\n /** Click handler URL */\n href?: string;\n /** Card content */\n children?: ReactNode;\n}\n\n/**\n * Card component.\n *\n * A versatile container component for grouping related content.\n * Uses Tailwind CSS classes for styling.\n */\nexport function Card({\n title,\n subtitle,\n headerActions,\n footer,\n variant = 'default',\n size = 'md',\n className,\n id,\n clickable,\n href,\n children,\n}: CardProps): ReactElement {\n const variantClasses = getCardVariantClasses(variant);\n const sizeClasses = getCardSizeClasses(size);\n const clickableClasses = clickable ? 'cursor-pointer hover:shadow-md transition-shadow' : '';\n const allClasses = cn(variantClasses, sizeClasses, clickableClasses, className);\n\n const hasHeader = title || subtitle || headerActions;\n\n const content = (\n <>\n {hasHeader && (\n <div className=\"flex items-start justify-between mb-4\">\n <div>\n {title && <h3 className=\"text-lg font-semibold text-text-primary\">{title}</h3>}\n {subtitle && <p className=\"text-sm text-text-secondary mt-1\">{subtitle}</p>}\n </div>\n {headerActions && <div className=\"flex items-center gap-2\">{headerActions}</div>}\n </div>\n )}\n {children}\n {footer && <div className=\"mt-4 pt-4 border-t border-divider\">{footer}</div>}\n </>\n );\n\n if (href) {\n return (\n <a href={href} className={allClasses} id={id}>\n {content}\n </a>\n );\n }\n\n return (\n <div className={allClasses} id={id}>\n {content}\n </div>\n );\n}\n\n/**\n * Props for static render functions (children is always a string)\n */\nexport interface CardRenderProps extends Omit<CardProps, 'children' | 'headerActions' | 'footer'> {\n /** Card content as HTML string */\n children?: string;\n /** Header actions as HTML string */\n headerActions?: string;\n /** Footer content as HTML string */\n footer?: string;\n}\n\n/**\n * Render Card component to static HTML string (async).\n *\n * Uses React 19's prerender API for optimal static HTML generation.\n *\n * @param props - Card props (with string children)\n * @returns Promise resolving to HTML string\n */\nexport async function renderCard(props: CardRenderProps): Promise<string> {\n const { children, headerActions, footer, ...rest } = props;\n const element = (\n <Card\n {...rest}\n headerActions={headerActions ? <span dangerouslySetInnerHTML={{ __html: headerActions }} /> : undefined}\n footer={footer ? <span dangerouslySetInnerHTML={{ __html: footer }} /> : undefined}\n >\n {children ? <span dangerouslySetInnerHTML={{ __html: children }} /> : undefined}\n </Card>\n );\n return renderToString(element);\n}\n\n/**\n * Render Card component to static HTML string (sync).\n *\n * Uses React's renderToStaticMarkup for synchronous rendering.\n * Does NOT wait for Suspense boundaries.\n *\n * @param props - Card props (with string children)\n * @returns HTML string\n */\nexport function renderCardSync(props: CardRenderProps): string {\n const { children, headerActions, footer, ...rest } = props;\n const element = (\n <Card\n {...rest}\n headerActions={headerActions ? <span dangerouslySetInnerHTML={{ __html: headerActions }} /> : undefined}\n footer={footer ? <span dangerouslySetInnerHTML={{ __html: footer }} /> : undefined}\n >\n {children ? <span dangerouslySetInnerHTML={{ __html: children }} /> : undefined}\n </Card>\n );\n return renderToStringSync(element);\n}\n\n// Re-export types\nexport type { CardVariant, CardSize };\n\nexport default Card;\n"]}
@@ -1,178 +0,0 @@
1
- /**
2
- * @file context.tsx
3
- * @description React context for FrontMcpBridge.
4
- *
5
- * Provides a context provider that initializes and exposes the MCP bridge
6
- * to all child components via hooks.
7
- *
8
- * @example
9
- * ```tsx
10
- * import { McpBridgeProvider, useMcpBridge } from '@frontmcp/ui/react';
11
- *
12
- * function App() {
13
- * return (
14
- * <McpBridgeProvider>
15
- * <MyComponent />
16
- * </McpBridgeProvider>
17
- * );
18
- * }
19
- * ```
20
- *
21
- * @module @frontmcp/ui/react/hooks
22
- */
23
- import { type ReactNode } from 'react';
24
- import type { FrontMcpBridgeInterface, BridgeConfig, AdapterCapabilities, HostContext, DisplayMode } from '../../bridge/types';
25
- /**
26
- * MCP Bridge context value.
27
- */
28
- export interface McpBridgeContextValue {
29
- /** The bridge instance (null until initialized) */
30
- bridge: FrontMcpBridgeInterface | null;
31
- /** Whether the bridge is currently initializing */
32
- loading: boolean;
33
- /** Initialization error, if any */
34
- error: Error | null;
35
- /** Whether the bridge is initialized and ready */
36
- ready: boolean;
37
- /** Current adapter ID */
38
- adapterId: string | undefined;
39
- /** Current adapter capabilities */
40
- capabilities: AdapterCapabilities | undefined;
41
- }
42
- /**
43
- * Props for McpBridgeProvider.
44
- */
45
- export interface McpBridgeProviderProps {
46
- /** Child components */
47
- children: ReactNode;
48
- /** Bridge configuration */
49
- config?: BridgeConfig;
50
- /** Callback when bridge is ready */
51
- onReady?: (bridge: FrontMcpBridgeInterface) => void;
52
- /** Callback when bridge initialization fails */
53
- onError?: (error: Error) => void;
54
- }
55
- /**
56
- * Provider component that initializes the MCP bridge.
57
- *
58
- * @example Basic usage
59
- * ```tsx
60
- * <McpBridgeProvider>
61
- * <App />
62
- * </McpBridgeProvider>
63
- * ```
64
- *
65
- * @example With configuration
66
- * ```tsx
67
- * <McpBridgeProvider
68
- * config={{ debug: true, forceAdapter: 'generic' }}
69
- * onReady={(bridge) => console.log('Bridge ready:', bridge.adapterId)}
70
- * onError={(err) => console.error('Bridge error:', err)}
71
- * >
72
- * <App />
73
- * </McpBridgeProvider>
74
- * ```
75
- */
76
- export declare function McpBridgeProvider({ children, config, onReady, onError }: McpBridgeProviderProps): import("react/jsx-runtime").JSX.Element;
77
- /**
78
- * Hook to access the MCP bridge context.
79
- *
80
- * During client-side rendering, must be used within a McpBridgeProvider.
81
- * During SSR (outside of provider), returns a default "not ready" state.
82
- *
83
- * @example
84
- * ```tsx
85
- * function MyComponent() {
86
- * const { bridge, loading, error, ready } = useMcpBridgeContext();
87
- *
88
- * if (loading) return <div>Loading...</div>;
89
- * if (error) return <div>Error: {error.message}</div>;
90
- * if (!ready) return null;
91
- *
92
- * return <div>Adapter: {bridge.adapterId}</div>;
93
- * }
94
- * ```
95
- */
96
- export declare function useMcpBridgeContext(): McpBridgeContextValue;
97
- /**
98
- * Hook to get the MCP bridge instance.
99
- * Returns null while loading or if not initialized.
100
- *
101
- * @example
102
- * ```tsx
103
- * function MyComponent() {
104
- * const bridge = useMcpBridge();
105
- *
106
- * if (!bridge) return <div>Loading...</div>;
107
- *
108
- * const theme = bridge.getTheme();
109
- * const input = bridge.getToolInput();
110
- *
111
- * return <div>Theme: {theme}</div>;
112
- * }
113
- * ```
114
- */
115
- export declare function useMcpBridge(): FrontMcpBridgeInterface | null;
116
- /**
117
- * Hook to get the current theme from the bridge.
118
- * Automatically updates when theme changes.
119
- *
120
- * @example
121
- * ```tsx
122
- * function MyComponent() {
123
- * const theme = useTheme();
124
- * return <div className={theme === 'dark' ? 'bg-black' : 'bg-white'}>...</div>;
125
- * }
126
- * ```
127
- */
128
- export declare function useTheme(): 'light' | 'dark';
129
- /**
130
- * Hook to get the current display mode from the bridge.
131
- * Automatically updates when display mode changes.
132
- *
133
- * @example
134
- * ```tsx
135
- * function MyComponent() {
136
- * const displayMode = useDisplayMode();
137
- * return <div>Mode: {displayMode}</div>;
138
- * }
139
- * ```
140
- */
141
- export declare function useDisplayMode(): DisplayMode;
142
- /**
143
- * Hook to get the full host context from the bridge.
144
- * Automatically updates when context changes.
145
- *
146
- * @example
147
- * ```tsx
148
- * function MyComponent() {
149
- * const context = useHostContext();
150
- * return (
151
- * <div>
152
- * Theme: {context?.theme}
153
- * Locale: {context?.locale}
154
- * </div>
155
- * );
156
- * }
157
- * ```
158
- */
159
- export declare function useHostContext(): HostContext | null;
160
- /**
161
- * Hook to check if the bridge has a specific capability.
162
- *
163
- * @example
164
- * ```tsx
165
- * function MyComponent() {
166
- * const canCallTools = useCapability('canCallTools');
167
- * const canSendMessages = useCapability('canSendMessages');
168
- *
169
- * return (
170
- * <div>
171
- * {canCallTools && <button>Call Tool</button>}
172
- * {canSendMessages && <button>Send Message</button>}
173
- * </div>
174
- * );
175
- * }
176
- * ```
177
- */
178
- export declare function useCapability(cap: keyof AdapterCapabilities): boolean;
@@ -1,287 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.McpBridgeProvider = McpBridgeProvider;
4
- exports.useMcpBridgeContext = useMcpBridgeContext;
5
- exports.useMcpBridge = useMcpBridge;
6
- exports.useTheme = useTheme;
7
- exports.useDisplayMode = useDisplayMode;
8
- exports.useHostContext = useHostContext;
9
- exports.useCapability = useCapability;
10
- const jsx_runtime_1 = require("react/jsx-runtime");
11
- /**
12
- * @file context.tsx
13
- * @description React context for FrontMcpBridge.
14
- *
15
- * Provides a context provider that initializes and exposes the MCP bridge
16
- * to all child components via hooks.
17
- *
18
- * @example
19
- * ```tsx
20
- * import { McpBridgeProvider, useMcpBridge } from '@frontmcp/ui/react';
21
- *
22
- * function App() {
23
- * return (
24
- * <McpBridgeProvider>
25
- * <MyComponent />
26
- * </McpBridgeProvider>
27
- * );
28
- * }
29
- * ```
30
- *
31
- * @module @frontmcp/ui/react/hooks
32
- */
33
- const react_1 = require("react");
34
- const bridge_factory_1 = require("../../bridge/core/bridge-factory");
35
- // ============================================
36
- // Context
37
- // ============================================
38
- const McpBridgeContext = (0, react_1.createContext)(null);
39
- /**
40
- * Provider component that initializes the MCP bridge.
41
- *
42
- * @example Basic usage
43
- * ```tsx
44
- * <McpBridgeProvider>
45
- * <App />
46
- * </McpBridgeProvider>
47
- * ```
48
- *
49
- * @example With configuration
50
- * ```tsx
51
- * <McpBridgeProvider
52
- * config={{ debug: true, forceAdapter: 'generic' }}
53
- * onReady={(bridge) => console.log('Bridge ready:', bridge.adapterId)}
54
- * onError={(err) => console.error('Bridge error:', err)}
55
- * >
56
- * <App />
57
- * </McpBridgeProvider>
58
- * ```
59
- */
60
- function McpBridgeProvider({ children, config, onReady, onError }) {
61
- const [bridge, setBridge] = (0, react_1.useState)(null);
62
- const [loading, setLoading] = (0, react_1.useState)(true);
63
- const [error, setError] = (0, react_1.useState)(null);
64
- (0, react_1.useEffect)(() => {
65
- let mounted = true;
66
- let bridgeInstance = null;
67
- const initBridge = async () => {
68
- try {
69
- bridgeInstance = new bridge_factory_1.FrontMcpBridge(config);
70
- await bridgeInstance.initialize();
71
- if (mounted) {
72
- setBridge(bridgeInstance);
73
- setLoading(false);
74
- onReady?.(bridgeInstance);
75
- }
76
- }
77
- catch (err) {
78
- if (mounted) {
79
- const error = err instanceof Error ? err : new Error(String(err));
80
- setError(error);
81
- setLoading(false);
82
- onError?.(error);
83
- }
84
- }
85
- };
86
- initBridge();
87
- return () => {
88
- mounted = false;
89
- if (bridgeInstance) {
90
- bridgeInstance.dispose();
91
- }
92
- };
93
- }, [config, onReady, onError]);
94
- const contextValue = (0, react_1.useMemo)(() => ({
95
- bridge,
96
- loading,
97
- error,
98
- ready: !loading && !error && bridge !== null,
99
- adapterId: bridge?.adapterId,
100
- capabilities: bridge?.capabilities,
101
- }), [bridge, loading, error]);
102
- return (0, jsx_runtime_1.jsx)(McpBridgeContext.Provider, { value: contextValue, children: children });
103
- }
104
- // ============================================
105
- // Hooks
106
- // ============================================
107
- /**
108
- * Default context value for SSR.
109
- * When the component is rendered outside of McpBridgeProvider (e.g., during SSR),
110
- * this value is returned instead of throwing an error.
111
- */
112
- const SSR_DEFAULT_CONTEXT = {
113
- bridge: null,
114
- loading: false,
115
- error: null,
116
- ready: false,
117
- adapterId: undefined,
118
- capabilities: undefined,
119
- };
120
- /**
121
- * Hook to access the MCP bridge context.
122
- *
123
- * During client-side rendering, must be used within a McpBridgeProvider.
124
- * During SSR (outside of provider), returns a default "not ready" state.
125
- *
126
- * @example
127
- * ```tsx
128
- * function MyComponent() {
129
- * const { bridge, loading, error, ready } = useMcpBridgeContext();
130
- *
131
- * if (loading) return <div>Loading...</div>;
132
- * if (error) return <div>Error: {error.message}</div>;
133
- * if (!ready) return null;
134
- *
135
- * return <div>Adapter: {bridge.adapterId}</div>;
136
- * }
137
- * ```
138
- */
139
- function useMcpBridgeContext() {
140
- const context = (0, react_1.useContext)(McpBridgeContext);
141
- // During SSR or outside of provider, return default context instead of throwing
142
- if (!context) {
143
- return SSR_DEFAULT_CONTEXT;
144
- }
145
- return context;
146
- }
147
- /**
148
- * Hook to get the MCP bridge instance.
149
- * Returns null while loading or if not initialized.
150
- *
151
- * @example
152
- * ```tsx
153
- * function MyComponent() {
154
- * const bridge = useMcpBridge();
155
- *
156
- * if (!bridge) return <div>Loading...</div>;
157
- *
158
- * const theme = bridge.getTheme();
159
- * const input = bridge.getToolInput();
160
- *
161
- * return <div>Theme: {theme}</div>;
162
- * }
163
- * ```
164
- */
165
- function useMcpBridge() {
166
- const { bridge } = useMcpBridgeContext();
167
- return bridge;
168
- }
169
- /**
170
- * Hook to get the current theme from the bridge.
171
- * Automatically updates when theme changes.
172
- *
173
- * @example
174
- * ```tsx
175
- * function MyComponent() {
176
- * const theme = useTheme();
177
- * return <div className={theme === 'dark' ? 'bg-black' : 'bg-white'}>...</div>;
178
- * }
179
- * ```
180
- */
181
- function useTheme() {
182
- const { bridge, ready } = useMcpBridgeContext();
183
- const [theme, setTheme] = (0, react_1.useState)('light');
184
- (0, react_1.useEffect)(() => {
185
- if (!ready || !bridge)
186
- return;
187
- // Get initial theme
188
- setTheme(bridge.getTheme());
189
- // Subscribe to changes
190
- const unsubscribe = bridge.onContextChange((changes) => {
191
- if (changes.theme) {
192
- setTheme(changes.theme);
193
- }
194
- });
195
- return unsubscribe;
196
- }, [bridge, ready]);
197
- return theme;
198
- }
199
- /**
200
- * Hook to get the current display mode from the bridge.
201
- * Automatically updates when display mode changes.
202
- *
203
- * @example
204
- * ```tsx
205
- * function MyComponent() {
206
- * const displayMode = useDisplayMode();
207
- * return <div>Mode: {displayMode}</div>;
208
- * }
209
- * ```
210
- */
211
- function useDisplayMode() {
212
- const { bridge, ready } = useMcpBridgeContext();
213
- const [displayMode, setDisplayMode] = (0, react_1.useState)('inline');
214
- (0, react_1.useEffect)(() => {
215
- if (!ready || !bridge)
216
- return;
217
- // Get initial display mode
218
- setDisplayMode(bridge.getDisplayMode());
219
- // Subscribe to changes
220
- const unsubscribe = bridge.onContextChange((changes) => {
221
- if (changes.displayMode) {
222
- setDisplayMode(changes.displayMode);
223
- }
224
- });
225
- return unsubscribe;
226
- }, [bridge, ready]);
227
- return displayMode;
228
- }
229
- /**
230
- * Hook to get the full host context from the bridge.
231
- * Automatically updates when context changes.
232
- *
233
- * @example
234
- * ```tsx
235
- * function MyComponent() {
236
- * const context = useHostContext();
237
- * return (
238
- * <div>
239
- * Theme: {context?.theme}
240
- * Locale: {context?.locale}
241
- * </div>
242
- * );
243
- * }
244
- * ```
245
- */
246
- function useHostContext() {
247
- const { bridge, ready } = useMcpBridgeContext();
248
- const [context, setContext] = (0, react_1.useState)(null);
249
- (0, react_1.useEffect)(() => {
250
- if (!ready || !bridge)
251
- return;
252
- // Get initial context
253
- const adapter = bridge.getAdapter?.();
254
- if (adapter) {
255
- setContext(adapter.getHostContext());
256
- }
257
- // Subscribe to changes
258
- const unsubscribe = bridge.onContextChange((changes) => {
259
- setContext((prev) => (prev ? { ...prev, ...changes } : null));
260
- });
261
- return unsubscribe;
262
- }, [bridge, ready]);
263
- return context;
264
- }
265
- /**
266
- * Hook to check if the bridge has a specific capability.
267
- *
268
- * @example
269
- * ```tsx
270
- * function MyComponent() {
271
- * const canCallTools = useCapability('canCallTools');
272
- * const canSendMessages = useCapability('canSendMessages');
273
- *
274
- * return (
275
- * <div>
276
- * {canCallTools && <button>Call Tool</button>}
277
- * {canSendMessages && <button>Send Message</button>}
278
- * </div>
279
- * );
280
- * }
281
- * ```
282
- */
283
- function useCapability(cap) {
284
- const { capabilities } = useMcpBridgeContext();
285
- return capabilities?.[cap] === true;
286
- }
287
- //# sourceMappingURL=context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../../src/react/hooks/context.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * @file context.tsx\n * @description React context for FrontMcpBridge.\n *\n * Provides a context provider that initializes and exposes the MCP bridge\n * to all child components via hooks.\n *\n * @example\n * ```tsx\n * import { McpBridgeProvider, useMcpBridge } from '@frontmcp/ui/react';\n *\n * function App() {\n * return (\n * <McpBridgeProvider>\n * <MyComponent />\n * </McpBridgeProvider>\n * );\n * }\n * ```\n *\n * @module @frontmcp/ui/react/hooks\n */\n\nimport { createContext, useContext, useEffect, useState, useCallback, useMemo, type ReactNode } from 'react';\nimport type {\n FrontMcpBridgeInterface,\n BridgeConfig,\n AdapterCapabilities,\n HostContext,\n DisplayMode,\n} from '../../bridge/types';\nimport { FrontMcpBridge } from '../../bridge/core/bridge-factory';\n\n// ============================================\n// Types\n// ============================================\n\n/**\n * MCP Bridge context value.\n */\nexport interface McpBridgeContextValue {\n /** The bridge instance (null until initialized) */\n bridge: FrontMcpBridgeInterface | null;\n /** Whether the bridge is currently initializing */\n loading: boolean;\n /** Initialization error, if any */\n error: Error | null;\n /** Whether the bridge is initialized and ready */\n ready: boolean;\n /** Current adapter ID */\n adapterId: string | undefined;\n /** Current adapter capabilities */\n capabilities: AdapterCapabilities | undefined;\n}\n\n/**\n * Props for McpBridgeProvider.\n */\nexport interface McpBridgeProviderProps {\n /** Child components */\n children: ReactNode;\n /** Bridge configuration */\n config?: BridgeConfig;\n /** Callback when bridge is ready */\n onReady?: (bridge: FrontMcpBridgeInterface) => void;\n /** Callback when bridge initialization fails */\n onError?: (error: Error) => void;\n}\n\n// ============================================\n// Context\n// ============================================\n\nconst McpBridgeContext = createContext<McpBridgeContextValue | null>(null);\n\n/**\n * Provider component that initializes the MCP bridge.\n *\n * @example Basic usage\n * ```tsx\n * <McpBridgeProvider>\n * <App />\n * </McpBridgeProvider>\n * ```\n *\n * @example With configuration\n * ```tsx\n * <McpBridgeProvider\n * config={{ debug: true, forceAdapter: 'generic' }}\n * onReady={(bridge) => console.log('Bridge ready:', bridge.adapterId)}\n * onError={(err) => console.error('Bridge error:', err)}\n * >\n * <App />\n * </McpBridgeProvider>\n * ```\n */\nexport function McpBridgeProvider({ children, config, onReady, onError }: McpBridgeProviderProps) {\n const [bridge, setBridge] = useState<FrontMcpBridgeInterface | null>(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n useEffect(() => {\n let mounted = true;\n let bridgeInstance: FrontMcpBridge | null = null;\n\n const initBridge = async () => {\n try {\n bridgeInstance = new FrontMcpBridge(config);\n await bridgeInstance.initialize();\n\n if (mounted) {\n setBridge(bridgeInstance);\n setLoading(false);\n onReady?.(bridgeInstance);\n }\n } catch (err) {\n if (mounted) {\n const error = err instanceof Error ? err : new Error(String(err));\n setError(error);\n setLoading(false);\n onError?.(error);\n }\n }\n };\n\n initBridge();\n\n return () => {\n mounted = false;\n if (bridgeInstance) {\n bridgeInstance.dispose();\n }\n };\n }, [config, onReady, onError]);\n\n const contextValue = useMemo<McpBridgeContextValue>(\n () => ({\n bridge,\n loading,\n error,\n ready: !loading && !error && bridge !== null,\n adapterId: bridge?.adapterId,\n capabilities: bridge?.capabilities,\n }),\n [bridge, loading, error],\n );\n\n return <McpBridgeContext.Provider value={contextValue}>{children}</McpBridgeContext.Provider>;\n}\n\n// ============================================\n// Hooks\n// ============================================\n\n/**\n * Default context value for SSR.\n * When the component is rendered outside of McpBridgeProvider (e.g., during SSR),\n * this value is returned instead of throwing an error.\n */\nconst SSR_DEFAULT_CONTEXT: McpBridgeContextValue = {\n bridge: null,\n loading: false,\n error: null,\n ready: false,\n adapterId: undefined,\n capabilities: undefined,\n};\n\n/**\n * Hook to access the MCP bridge context.\n *\n * During client-side rendering, must be used within a McpBridgeProvider.\n * During SSR (outside of provider), returns a default \"not ready\" state.\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const { bridge, loading, error, ready } = useMcpBridgeContext();\n *\n * if (loading) return <div>Loading...</div>;\n * if (error) return <div>Error: {error.message}</div>;\n * if (!ready) return null;\n *\n * return <div>Adapter: {bridge.adapterId}</div>;\n * }\n * ```\n */\nexport function useMcpBridgeContext(): McpBridgeContextValue {\n const context = useContext(McpBridgeContext);\n\n // During SSR or outside of provider, return default context instead of throwing\n if (!context) {\n return SSR_DEFAULT_CONTEXT;\n }\n\n return context;\n}\n\n/**\n * Hook to get the MCP bridge instance.\n * Returns null while loading or if not initialized.\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const bridge = useMcpBridge();\n *\n * if (!bridge) return <div>Loading...</div>;\n *\n * const theme = bridge.getTheme();\n * const input = bridge.getToolInput();\n *\n * return <div>Theme: {theme}</div>;\n * }\n * ```\n */\nexport function useMcpBridge(): FrontMcpBridgeInterface | null {\n const { bridge } = useMcpBridgeContext();\n return bridge;\n}\n\n/**\n * Hook to get the current theme from the bridge.\n * Automatically updates when theme changes.\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const theme = useTheme();\n * return <div className={theme === 'dark' ? 'bg-black' : 'bg-white'}>...</div>;\n * }\n * ```\n */\nexport function useTheme(): 'light' | 'dark' {\n const { bridge, ready } = useMcpBridgeContext();\n const [theme, setTheme] = useState<'light' | 'dark'>('light');\n\n useEffect(() => {\n if (!ready || !bridge) return;\n\n // Get initial theme\n setTheme(bridge.getTheme());\n\n // Subscribe to changes\n const unsubscribe = bridge.onContextChange((changes) => {\n if (changes.theme) {\n setTheme(changes.theme);\n }\n });\n\n return unsubscribe;\n }, [bridge, ready]);\n\n return theme;\n}\n\n/**\n * Hook to get the current display mode from the bridge.\n * Automatically updates when display mode changes.\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const displayMode = useDisplayMode();\n * return <div>Mode: {displayMode}</div>;\n * }\n * ```\n */\nexport function useDisplayMode(): DisplayMode {\n const { bridge, ready } = useMcpBridgeContext();\n const [displayMode, setDisplayMode] = useState<DisplayMode>('inline');\n\n useEffect(() => {\n if (!ready || !bridge) return;\n\n // Get initial display mode\n setDisplayMode(bridge.getDisplayMode());\n\n // Subscribe to changes\n const unsubscribe = bridge.onContextChange((changes) => {\n if (changes.displayMode) {\n setDisplayMode(changes.displayMode);\n }\n });\n\n return unsubscribe;\n }, [bridge, ready]);\n\n return displayMode;\n}\n\n/**\n * Hook to get the full host context from the bridge.\n * Automatically updates when context changes.\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const context = useHostContext();\n * return (\n * <div>\n * Theme: {context?.theme}\n * Locale: {context?.locale}\n * </div>\n * );\n * }\n * ```\n */\nexport function useHostContext(): HostContext | null {\n const { bridge, ready } = useMcpBridgeContext();\n const [context, setContext] = useState<HostContext | null>(null);\n\n useEffect(() => {\n if (!ready || !bridge) return;\n\n // Get initial context\n const adapter = bridge.getAdapter?.();\n if (adapter) {\n setContext(adapter.getHostContext());\n }\n\n // Subscribe to changes\n const unsubscribe = bridge.onContextChange((changes) => {\n setContext((prev) => (prev ? { ...prev, ...changes } : null));\n });\n\n return unsubscribe;\n }, [bridge, ready]);\n\n return context;\n}\n\n/**\n * Hook to check if the bridge has a specific capability.\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const canCallTools = useCapability('canCallTools');\n * const canSendMessages = useCapability('canSendMessages');\n *\n * return (\n * <div>\n * {canCallTools && <button>Call Tool</button>}\n * {canSendMessages && <button>Send Message</button>}\n * </div>\n * );\n * }\n * ```\n */\nexport function useCapability(cap: keyof AdapterCapabilities): boolean {\n const { capabilities } = useMcpBridgeContext();\n return capabilities?.[cap] === true;\n}\n"]}