@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,465 +0,0 @@
1
- "use strict";
2
- /**
3
- * @file tools.tsx
4
- * @description React hooks for MCP tool interactions.
5
- *
6
- * Provides hooks for calling tools, accessing tool input/output,
7
- * and managing tool execution state.
8
- *
9
- * @example
10
- * ```tsx
11
- * import { useCallTool, useToolInput, useToolOutput } from '@frontmcp/ui/react';
12
- *
13
- * function WeatherWidget() {
14
- * const input = useToolInput<{ location: string }>();
15
- * const output = useToolOutput<WeatherData>();
16
- * const [callWeather, { data, loading, error }] = useCallTool<WeatherData>('get_weather');
17
- *
18
- * return (
19
- * <div>
20
- * <p>Location: {input?.location}</p>
21
- * <button onClick={() => callWeather({ location: 'NYC' })}>
22
- * Get Weather
23
- * </button>
24
- * {loading && <p>Loading...</p>}
25
- * {data && <p>Temperature: {data.temperature}</p>}
26
- * </div>
27
- * );
28
- * }
29
- * ```
30
- *
31
- * @module @frontmcp/ui/react/hooks
32
- */
33
- Object.defineProperty(exports, "__esModule", { value: true });
34
- exports.useToolInput = useToolInput;
35
- exports.useToolOutput = useToolOutput;
36
- exports.useStructuredContent = useStructuredContent;
37
- exports.useCallTool = useCallTool;
38
- exports.useToolCalls = useToolCalls;
39
- exports.useSendMessage = useSendMessage;
40
- exports.useOpenLink = useOpenLink;
41
- const react_1 = require("react");
42
- const context_1 = require("./context");
43
- // ============================================
44
- // Tool Input/Output Hooks
45
- // ============================================
46
- /**
47
- * Hook to get the current tool input arguments.
48
- * Returns the arguments passed to the tool when it was invoked.
49
- *
50
- * @typeParam T - Expected shape of the tool input
51
- *
52
- * @example
53
- * ```tsx
54
- * interface WeatherInput {
55
- * location: string;
56
- * units?: 'celsius' | 'fahrenheit';
57
- * }
58
- *
59
- * function WeatherWidget() {
60
- * const input = useToolInput<WeatherInput>();
61
- *
62
- * return (
63
- * <div>
64
- * <h1>Weather for {input?.location}</h1>
65
- * <p>Units: {input?.units ?? 'celsius'}</p>
66
- * </div>
67
- * );
68
- * }
69
- * ```
70
- */
71
- function useToolInput() {
72
- const { bridge, ready } = (0, context_1.useMcpBridgeContext)();
73
- if (!ready || !bridge) {
74
- return null;
75
- }
76
- try {
77
- return bridge.getToolInput();
78
- }
79
- catch {
80
- return null;
81
- }
82
- }
83
- /**
84
- * Hook to get the current tool output/result.
85
- * Returns the result data from the tool execution.
86
- *
87
- * @typeParam T - Expected shape of the tool output
88
- *
89
- * @example
90
- * ```tsx
91
- * interface WeatherOutput {
92
- * temperature: number;
93
- * condition: string;
94
- * humidity: number;
95
- * }
96
- *
97
- * function WeatherDisplay() {
98
- * const output = useToolOutput<WeatherOutput>();
99
- *
100
- * if (!output) return <div>No data</div>;
101
- *
102
- * return (
103
- * <div>
104
- * <p>Temperature: {output.temperature}°</p>
105
- * <p>Condition: {output.condition}</p>
106
- * </div>
107
- * );
108
- * }
109
- * ```
110
- */
111
- function useToolOutput() {
112
- const { bridge, ready } = (0, context_1.useMcpBridgeContext)();
113
- const [output, setOutput] = (0, react_1.useState)(null);
114
- (0, react_1.useEffect)(() => {
115
- if (!ready || !bridge)
116
- return;
117
- // Get initial output
118
- try {
119
- const initialOutput = bridge.getToolOutput();
120
- if (initialOutput !== undefined) {
121
- setOutput(initialOutput);
122
- }
123
- }
124
- catch {
125
- // Ignore
126
- }
127
- // Subscribe to tool result updates
128
- const unsubscribe = bridge.onToolResult((result) => {
129
- setOutput(result);
130
- });
131
- return unsubscribe;
132
- }, [bridge, ready]);
133
- return output;
134
- }
135
- /**
136
- * Hook to get the structured content from the tool output.
137
- * This is the parsed/structured version of the tool result.
138
- *
139
- * @typeParam T - Expected shape of the structured content
140
- *
141
- * @example
142
- * ```tsx
143
- * interface WeatherData {
144
- * forecast: Array<{ day: string; temp: number }>;
145
- * }
146
- *
147
- * function ForecastDisplay() {
148
- * const content = useStructuredContent<WeatherData>();
149
- *
150
- * return (
151
- * <ul>
152
- * {content?.forecast.map(day => (
153
- * <li key={day.day}>{day.day}: {day.temp}°</li>
154
- * ))}
155
- * </ul>
156
- * );
157
- * }
158
- * ```
159
- */
160
- function useStructuredContent() {
161
- const { bridge, ready } = (0, context_1.useMcpBridgeContext)();
162
- if (!ready || !bridge) {
163
- return null;
164
- }
165
- try {
166
- const adapter = bridge.getAdapter?.();
167
- if (adapter) {
168
- return adapter.getStructuredContent();
169
- }
170
- return null;
171
- }
172
- catch {
173
- return null;
174
- }
175
- }
176
- // ============================================
177
- // Tool Execution Hooks
178
- // ============================================
179
- /**
180
- * Hook to call an MCP tool with loading and error state management.
181
- *
182
- * Returns a tuple with:
183
- * 1. The call function
184
- * 2. State object (data, loading, error, called)
185
- * 3. Reset function
186
- *
187
- * @typeParam TInput - Shape of the tool input arguments
188
- * @typeParam TOutput - Expected shape of the tool output
189
- *
190
- * @example Basic usage
191
- * ```tsx
192
- * function WeatherButton() {
193
- * const [getWeather, { data, loading, error }] = useCallTool<
194
- * { location: string },
195
- * { temperature: number; condition: string }
196
- * >('get_weather');
197
- *
198
- * return (
199
- * <div>
200
- * <button
201
- * onClick={() => getWeather({ location: 'San Francisco' })}
202
- * disabled={loading}
203
- * >
204
- * {loading ? 'Loading...' : 'Get Weather'}
205
- * </button>
206
- * {error && <p className="error">{error.message}</p>}
207
- * {data && <p>{data.temperature}° - {data.condition}</p>}
208
- * </div>
209
- * );
210
- * }
211
- * ```
212
- *
213
- * @example With callbacks
214
- * ```tsx
215
- * function WeatherWidget() {
216
- * const [getWeather, state, reset] = useCallTool('get_weather', {
217
- * onSuccess: (data) => console.log('Got weather:', data),
218
- * onError: (err) => console.error('Failed:', err),
219
- * });
220
- *
221
- * return (
222
- * <div>
223
- * <button onClick={() => getWeather({ location: 'NYC' })}>
224
- * Get Weather
225
- * </button>
226
- * <button onClick={reset}>Reset</button>
227
- * </div>
228
- * );
229
- * }
230
- * ```
231
- */
232
- function useCallTool(toolName, options = {}) {
233
- const { bridge, ready } = (0, context_1.useMcpBridgeContext)();
234
- const { onSuccess, onError, resetOnToolChange = true } = options;
235
- console.log('useCallTool', toolName, bridge);
236
- const [state, setState] = (0, react_1.useState)({
237
- data: null,
238
- loading: false,
239
- error: null,
240
- called: false,
241
- });
242
- // Reset state when tool name changes
243
- (0, react_1.useEffect)(() => {
244
- if (resetOnToolChange) {
245
- setState({
246
- data: null,
247
- loading: false,
248
- error: null,
249
- called: false,
250
- });
251
- }
252
- }, [toolName, resetOnToolChange]);
253
- const reset = (0, react_1.useCallback)(() => {
254
- setState({
255
- data: null,
256
- loading: false,
257
- error: null,
258
- called: false,
259
- });
260
- }, []);
261
- const callTool = (0, react_1.useCallback)(async (args) => {
262
- if (!ready || !bridge) {
263
- const error = new Error('Bridge not initialized');
264
- setState((prev) => ({ ...prev, error, called: true }));
265
- onError?.(error);
266
- return null;
267
- }
268
- setState((prev) => ({
269
- ...prev,
270
- loading: true,
271
- error: null,
272
- called: true,
273
- }));
274
- try {
275
- const result = await bridge.callTool(toolName, args);
276
- const data = result;
277
- setState({
278
- data,
279
- loading: false,
280
- error: null,
281
- called: true,
282
- });
283
- onSuccess?.(data);
284
- return data;
285
- }
286
- catch (err) {
287
- const error = err instanceof Error ? err : new Error(String(err));
288
- setState({
289
- data: null,
290
- loading: false,
291
- error,
292
- called: true,
293
- });
294
- onError?.(error);
295
- return null;
296
- }
297
- }, [bridge, ready, toolName, onSuccess, onError]);
298
- return [callTool, state, reset];
299
- }
300
- /**
301
- * Hook to manage multiple tool calls.
302
- * Useful when you need to track state for multiple tools.
303
- *
304
- * @example
305
- * ```tsx
306
- * function MultiToolWidget() {
307
- * const tools = useToolCalls({
308
- * weather: 'get_weather',
309
- * news: 'get_news',
310
- * stocks: 'get_stocks',
311
- * });
312
- *
313
- * return (
314
- * <div>
315
- * <button onClick={() => tools.weather.call({ location: 'NYC' })}>
316
- * Get Weather
317
- * </button>
318
- * <button onClick={() => tools.news.call({ topic: 'tech' })}>
319
- * Get News
320
- * </button>
321
- * {tools.weather.loading && <p>Loading weather...</p>}
322
- * {tools.news.data && <p>News: {tools.news.data.headline}</p>}
323
- * </div>
324
- * );
325
- * }
326
- * ```
327
- */
328
- function useToolCalls(toolMap) {
329
- const bridge = (0, context_1.useMcpBridge)();
330
- const [states, setStates] = (0, react_1.useState)(() => {
331
- const initial = {};
332
- for (const key of Object.keys(toolMap)) {
333
- initial[key] = { data: null, loading: false, error: null, called: false };
334
- }
335
- return initial;
336
- });
337
- const createCallFn = (0, react_1.useCallback)((key, toolName) => async (args) => {
338
- if (!bridge) {
339
- setStates((prev) => ({
340
- ...prev,
341
- [key]: {
342
- ...prev[key],
343
- error: new Error('Bridge not initialized'),
344
- called: true,
345
- },
346
- }));
347
- return null;
348
- }
349
- setStates((prev) => ({
350
- ...prev,
351
- [key]: { ...prev[key], loading: true, error: null, called: true },
352
- }));
353
- try {
354
- const result = await bridge.callTool(toolName, args);
355
- setStates((prev) => ({
356
- ...prev,
357
- [key]: { data: result, loading: false, error: null, called: true },
358
- }));
359
- return result;
360
- }
361
- catch (err) {
362
- const error = err instanceof Error ? err : new Error(String(err));
363
- setStates((prev) => ({
364
- ...prev,
365
- [key]: { data: null, loading: false, error, called: true },
366
- }));
367
- return null;
368
- }
369
- }, [bridge]);
370
- const createResetFn = (0, react_1.useCallback)((key) => () => {
371
- setStates((prev) => ({
372
- ...prev,
373
- [key]: { data: null, loading: false, error: null, called: false },
374
- }));
375
- }, []);
376
- // Build result object
377
- const result = {};
378
- for (const [key, toolName] of Object.entries(toolMap)) {
379
- const state = states[key] || {
380
- data: null,
381
- loading: false,
382
- error: null,
383
- called: false,
384
- };
385
- result[key] = {
386
- call: createCallFn(key, toolName),
387
- data: state.data,
388
- loading: state.loading,
389
- error: state.error,
390
- reset: createResetFn(key),
391
- };
392
- }
393
- return result;
394
- }
395
- /**
396
- * Hook to send a message to the conversation.
397
- * Returns a function and state for sending messages.
398
- *
399
- * @example
400
- * ```tsx
401
- * function ChatWidget() {
402
- * const [sendMessage, { loading, error, sent }] = useSendMessage();
403
- *
404
- * return (
405
- * <button
406
- * onClick={() => sendMessage('Here is the weather update!')}
407
- * disabled={loading}
408
- * >
409
- * {loading ? 'Sending...' : 'Send Update'}
410
- * </button>
411
- * );
412
- * }
413
- * ```
414
- */
415
- function useSendMessage() {
416
- const bridge = (0, context_1.useMcpBridge)();
417
- const [state, setState] = (0, react_1.useState)({
418
- loading: false,
419
- error: null,
420
- sent: false,
421
- });
422
- const sendMessage = (0, react_1.useCallback)(async (content) => {
423
- if (!bridge) {
424
- setState({ loading: false, error: new Error('Bridge not initialized'), sent: false });
425
- return;
426
- }
427
- setState({ loading: true, error: null, sent: false });
428
- try {
429
- await bridge.sendMessage(content);
430
- setState({ loading: false, error: null, sent: true });
431
- }
432
- catch (err) {
433
- const error = err instanceof Error ? err : new Error(String(err));
434
- setState({ loading: false, error, sent: false });
435
- }
436
- }, [bridge]);
437
- return [sendMessage, state];
438
- }
439
- /**
440
- * Hook to open external links via the bridge.
441
- *
442
- * @example
443
- * ```tsx
444
- * function LinkButton() {
445
- * const openLink = useOpenLink();
446
- *
447
- * return (
448
- * <button onClick={() => openLink('https://example.com')}>
449
- * Open Website
450
- * </button>
451
- * );
452
- * }
453
- * ```
454
- */
455
- function useOpenLink() {
456
- const bridge = (0, context_1.useMcpBridge)();
457
- return (0, react_1.useCallback)(async (url) => {
458
- if (!bridge) {
459
- console.warn('Bridge not initialized, cannot open link');
460
- return;
461
- }
462
- await bridge.openLink(url);
463
- }, [bridge]);
464
- }
465
- //# sourceMappingURL=tools.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../../src/react/hooks/tools.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * @file tools.tsx\n * @description React hooks for MCP tool interactions.\n *\n * Provides hooks for calling tools, accessing tool input/output,\n * and managing tool execution state.\n *\n * @example\n * ```tsx\n * import { useCallTool, useToolInput, useToolOutput } from '@frontmcp/ui/react';\n *\n * function WeatherWidget() {\n * const input = useToolInput<{ location: string }>();\n * const output = useToolOutput<WeatherData>();\n * const [callWeather, { data, loading, error }] = useCallTool<WeatherData>('get_weather');\n *\n * return (\n * <div>\n * <p>Location: {input?.location}</p>\n * <button onClick={() => callWeather({ location: 'NYC' })}>\n * Get Weather\n * </button>\n * {loading && <p>Loading...</p>}\n * {data && <p>Temperature: {data.temperature}</p>}\n * </div>\n * );\n * }\n * ```\n *\n * @module @frontmcp/ui/react/hooks\n */\n\nimport { useState, useCallback, useEffect } from 'react';\nimport { useMcpBridgeContext, useMcpBridge } from './context';\n\n// ============================================\n// Types\n// ============================================\n\n/**\n * State for tool execution.\n */\nexport interface ToolState<T = unknown> {\n /** Tool result data */\n data: T | null;\n /** Whether the tool is currently executing */\n loading: boolean;\n /** Execution error, if any */\n error: Error | null;\n /** Whether the tool has been called at least once */\n called: boolean;\n}\n\n/**\n * Options for useCallTool hook.\n */\nexport interface UseCallToolOptions {\n /** Automatically reset state when tool name changes */\n resetOnToolChange?: boolean;\n /** Callback when tool execution succeeds */\n onSuccess?: (data: unknown) => void;\n /** Callback when tool execution fails */\n onError?: (error: Error) => void;\n}\n\n/**\n * Return type for useCallTool hook.\n */\nexport type UseCallToolReturn<TInput extends object, TOutput> = [\n /** Function to call the tool */\n (args: TInput) => Promise<TOutput | null>,\n /** Current tool state */\n ToolState<TOutput>,\n /** Reset state to initial values */\n () => void,\n];\n\n// ============================================\n// Tool Input/Output Hooks\n// ============================================\n\n/**\n * Hook to get the current tool input arguments.\n * Returns the arguments passed to the tool when it was invoked.\n *\n * @typeParam T - Expected shape of the tool input\n *\n * @example\n * ```tsx\n * interface WeatherInput {\n * location: string;\n * units?: 'celsius' | 'fahrenheit';\n * }\n *\n * function WeatherWidget() {\n * const input = useToolInput<WeatherInput>();\n *\n * return (\n * <div>\n * <h1>Weather for {input?.location}</h1>\n * <p>Units: {input?.units ?? 'celsius'}</p>\n * </div>\n * );\n * }\n * ```\n */\nexport function useToolInput<T extends object = Record<string, unknown>>(): T | null {\n const { bridge, ready } = useMcpBridgeContext();\n\n if (!ready || !bridge) {\n return null;\n }\n\n try {\n return bridge.getToolInput() as T;\n } catch {\n return null;\n }\n}\n\n/**\n * Hook to get the current tool output/result.\n * Returns the result data from the tool execution.\n *\n * @typeParam T - Expected shape of the tool output\n *\n * @example\n * ```tsx\n * interface WeatherOutput {\n * temperature: number;\n * condition: string;\n * humidity: number;\n * }\n *\n * function WeatherDisplay() {\n * const output = useToolOutput<WeatherOutput>();\n *\n * if (!output) return <div>No data</div>;\n *\n * return (\n * <div>\n * <p>Temperature: {output.temperature}°</p>\n * <p>Condition: {output.condition}</p>\n * </div>\n * );\n * }\n * ```\n */\nexport function useToolOutput<T = unknown>(): T | null {\n const { bridge, ready } = useMcpBridgeContext();\n const [output, setOutput] = useState<T | null>(null);\n\n useEffect(() => {\n if (!ready || !bridge) return;\n\n // Get initial output\n try {\n const initialOutput = bridge.getToolOutput();\n if (initialOutput !== undefined) {\n setOutput(initialOutput as T);\n }\n } catch {\n // Ignore\n }\n\n // Subscribe to tool result updates\n const unsubscribe = bridge.onToolResult((result) => {\n setOutput(result as T);\n });\n\n return unsubscribe;\n }, [bridge, ready]);\n\n return output;\n}\n\n/**\n * Hook to get the structured content from the tool output.\n * This is the parsed/structured version of the tool result.\n *\n * @typeParam T - Expected shape of the structured content\n *\n * @example\n * ```tsx\n * interface WeatherData {\n * forecast: Array<{ day: string; temp: number }>;\n * }\n *\n * function ForecastDisplay() {\n * const content = useStructuredContent<WeatherData>();\n *\n * return (\n * <ul>\n * {content?.forecast.map(day => (\n * <li key={day.day}>{day.day}: {day.temp}°</li>\n * ))}\n * </ul>\n * );\n * }\n * ```\n */\nexport function useStructuredContent<T = unknown>(): T | null {\n const { bridge, ready } = useMcpBridgeContext();\n\n if (!ready || !bridge) {\n return null;\n }\n\n try {\n const adapter = bridge.getAdapter?.();\n if (adapter) {\n return adapter.getStructuredContent() as T;\n }\n return null;\n } catch {\n return null;\n }\n}\n\n// ============================================\n// Tool Execution Hooks\n// ============================================\n\n/**\n * Hook to call an MCP tool with loading and error state management.\n *\n * Returns a tuple with:\n * 1. The call function\n * 2. State object (data, loading, error, called)\n * 3. Reset function\n *\n * @typeParam TInput - Shape of the tool input arguments\n * @typeParam TOutput - Expected shape of the tool output\n *\n * @example Basic usage\n * ```tsx\n * function WeatherButton() {\n * const [getWeather, { data, loading, error }] = useCallTool<\n * { location: string },\n * { temperature: number; condition: string }\n * >('get_weather');\n *\n * return (\n * <div>\n * <button\n * onClick={() => getWeather({ location: 'San Francisco' })}\n * disabled={loading}\n * >\n * {loading ? 'Loading...' : 'Get Weather'}\n * </button>\n * {error && <p className=\"error\">{error.message}</p>}\n * {data && <p>{data.temperature}° - {data.condition}</p>}\n * </div>\n * );\n * }\n * ```\n *\n * @example With callbacks\n * ```tsx\n * function WeatherWidget() {\n * const [getWeather, state, reset] = useCallTool('get_weather', {\n * onSuccess: (data) => console.log('Got weather:', data),\n * onError: (err) => console.error('Failed:', err),\n * });\n *\n * return (\n * <div>\n * <button onClick={() => getWeather({ location: 'NYC' })}>\n * Get Weather\n * </button>\n * <button onClick={reset}>Reset</button>\n * </div>\n * );\n * }\n * ```\n */\nexport function useCallTool<TInput extends object = Record<string, unknown>, TOutput = unknown>(\n toolName: string,\n options: UseCallToolOptions = {},\n): UseCallToolReturn<TInput, TOutput> {\n const { bridge, ready } = useMcpBridgeContext();\n const { onSuccess, onError, resetOnToolChange = true } = options;\n\n console.log('useCallTool', toolName, bridge);\n const [state, setState] = useState<ToolState<TOutput>>({\n data: null,\n loading: false,\n error: null,\n called: false,\n });\n\n // Reset state when tool name changes\n useEffect(() => {\n if (resetOnToolChange) {\n setState({\n data: null,\n loading: false,\n error: null,\n called: false,\n });\n }\n }, [toolName, resetOnToolChange]);\n\n const reset = useCallback(() => {\n setState({\n data: null,\n loading: false,\n error: null,\n called: false,\n });\n }, []);\n\n const callTool = useCallback(\n async (args: TInput): Promise<TOutput | null> => {\n if (!ready || !bridge) {\n const error = new Error('Bridge not initialized');\n setState((prev) => ({ ...prev, error, called: true }));\n onError?.(error);\n return null;\n }\n\n setState((prev) => ({\n ...prev,\n loading: true,\n error: null,\n called: true,\n }));\n\n try {\n const result = await bridge.callTool(toolName, args as Record<string, unknown>);\n const data = result as TOutput;\n\n setState({\n data,\n loading: false,\n error: null,\n called: true,\n });\n\n onSuccess?.(data);\n return data;\n } catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n\n setState({\n data: null,\n loading: false,\n error,\n called: true,\n });\n\n onError?.(error);\n return null;\n }\n },\n [bridge, ready, toolName, onSuccess, onError],\n );\n\n return [callTool, state, reset];\n}\n\n/**\n * Hook to manage multiple tool calls.\n * Useful when you need to track state for multiple tools.\n *\n * @example\n * ```tsx\n * function MultiToolWidget() {\n * const tools = useToolCalls({\n * weather: 'get_weather',\n * news: 'get_news',\n * stocks: 'get_stocks',\n * });\n *\n * return (\n * <div>\n * <button onClick={() => tools.weather.call({ location: 'NYC' })}>\n * Get Weather\n * </button>\n * <button onClick={() => tools.news.call({ topic: 'tech' })}>\n * Get News\n * </button>\n * {tools.weather.loading && <p>Loading weather...</p>}\n * {tools.news.data && <p>News: {tools.news.data.headline}</p>}\n * </div>\n * );\n * }\n * ```\n */\nexport function useToolCalls<T extends Record<string, string>>(\n toolMap: T,\n): {\n [K in keyof T]: {\n call: (args: Record<string, unknown>) => Promise<unknown>;\n data: unknown;\n loading: boolean;\n error: Error | null;\n reset: () => void;\n };\n} {\n const bridge = useMcpBridge();\n const [states, setStates] = useState<Record<string, ToolState<unknown>>>(() => {\n const initial: Record<string, ToolState<unknown>> = {};\n for (const key of Object.keys(toolMap)) {\n initial[key] = { data: null, loading: false, error: null, called: false };\n }\n return initial;\n });\n\n const createCallFn = useCallback(\n (key: string, toolName: string) =>\n async (args: Record<string, unknown>): Promise<unknown> => {\n if (!bridge) {\n setStates((prev) => ({\n ...prev,\n [key]: {\n ...prev[key],\n error: new Error('Bridge not initialized'),\n called: true,\n },\n }));\n return null;\n }\n\n setStates((prev) => ({\n ...prev,\n [key]: { ...prev[key], loading: true, error: null, called: true },\n }));\n\n try {\n const result = await bridge.callTool(toolName, args);\n setStates((prev) => ({\n ...prev,\n [key]: { data: result, loading: false, error: null, called: true },\n }));\n return result;\n } catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n setStates((prev) => ({\n ...prev,\n [key]: { data: null, loading: false, error, called: true },\n }));\n return null;\n }\n },\n [bridge],\n );\n\n const createResetFn = useCallback(\n (key: string) => () => {\n setStates((prev) => ({\n ...prev,\n [key]: { data: null, loading: false, error: null, called: false },\n }));\n },\n [],\n );\n\n // Build result object\n const result = {} as {\n [K in keyof T]: {\n call: (args: Record<string, unknown>) => Promise<unknown>;\n data: unknown;\n loading: boolean;\n error: Error | null;\n reset: () => void;\n };\n };\n\n for (const [key, toolName] of Object.entries(toolMap)) {\n const state = states[key] || {\n data: null,\n loading: false,\n error: null,\n called: false,\n };\n result[key as keyof T] = {\n call: createCallFn(key, toolName),\n data: state.data,\n loading: state.loading,\n error: state.error,\n reset: createResetFn(key),\n };\n }\n\n return result;\n}\n\n/**\n * Hook to send a message to the conversation.\n * Returns a function and state for sending messages.\n *\n * @example\n * ```tsx\n * function ChatWidget() {\n * const [sendMessage, { loading, error, sent }] = useSendMessage();\n *\n * return (\n * <button\n * onClick={() => sendMessage('Here is the weather update!')}\n * disabled={loading}\n * >\n * {loading ? 'Sending...' : 'Send Update'}\n * </button>\n * );\n * }\n * ```\n */\nexport function useSendMessage(): [\n (content: string) => Promise<void>,\n { loading: boolean; error: Error | null; sent: boolean },\n] {\n const bridge = useMcpBridge();\n const [state, setState] = useState({\n loading: false,\n error: null as Error | null,\n sent: false,\n });\n\n const sendMessage = useCallback(\n async (content: string): Promise<void> => {\n if (!bridge) {\n setState({ loading: false, error: new Error('Bridge not initialized'), sent: false });\n return;\n }\n\n setState({ loading: true, error: null, sent: false });\n\n try {\n await bridge.sendMessage(content);\n setState({ loading: false, error: null, sent: true });\n } catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n setState({ loading: false, error, sent: false });\n }\n },\n [bridge],\n );\n\n return [sendMessage, state];\n}\n\n/**\n * Hook to open external links via the bridge.\n *\n * @example\n * ```tsx\n * function LinkButton() {\n * const openLink = useOpenLink();\n *\n * return (\n * <button onClick={() => openLink('https://example.com')}>\n * Open Website\n * </button>\n * );\n * }\n * ```\n */\nexport function useOpenLink(): (url: string) => Promise<void> {\n const bridge = useMcpBridge();\n\n return useCallback(\n async (url: string): Promise<void> => {\n if (!bridge) {\n console.warn('Bridge not initialized, cannot open link');\n return;\n }\n\n await bridge.openLink(url);\n },\n [bridge],\n );\n}\n"]}
@@ -1,80 +0,0 @@
1
- /**
2
- * @file index.ts
3
- * @description React components and hooks for FrontMCP UI.
4
- *
5
- * These are pure React components that can be used:
6
- * 1. As regular React components in your app
7
- * 2. To generate static HTML via render functions
8
- * 3. With hooks to access the MCP bridge
9
- *
10
- * @example React usage
11
- * ```tsx
12
- * import { Card, Badge, Button, Alert } from '@frontmcp/ui/react';
13
- *
14
- * function App() {
15
- * return (
16
- * <Card title="Welcome" variant="elevated">
17
- * <Badge variant="success">New</Badge>
18
- * <p>Card content here</p>
19
- * <Button variant="primary">Click Me</Button>
20
- * </Card>
21
- * );
22
- * }
23
- * ```
24
- *
25
- * @example Static HTML generation
26
- * ```typescript
27
- * import { renderCard, renderBadge } from '@frontmcp/ui/react';
28
- *
29
- * const cardHtml = await renderCard({
30
- * title: 'Welcome',
31
- * variant: 'elevated',
32
- * children: '<p>Content</p>',
33
- * });
34
- * ```
35
- *
36
- * @example Using hooks with the MCP bridge
37
- * ```tsx
38
- * import {
39
- * McpBridgeProvider,
40
- * useMcpBridge,
41
- * useToolInput,
42
- * useCallTool,
43
- * useTheme,
44
- * } from '@frontmcp/ui/react';
45
- *
46
- * function App() {
47
- * return (
48
- * <McpBridgeProvider>
49
- * <WeatherWidget />
50
- * </McpBridgeProvider>
51
- * );
52
- * }
53
- *
54
- * function WeatherWidget() {
55
- * const input = useToolInput<{ location: string }>();
56
- * const theme = useTheme();
57
- * const [getWeather, { data, loading }] = useCallTool('get_weather');
58
- *
59
- * return (
60
- * <Card title={`Weather for ${input?.location}`} variant={theme === 'dark' ? 'elevated' : 'default'}>
61
- * {loading ? 'Loading...' : data?.temperature}
62
- * </Card>
63
- * );
64
- * }
65
- * ```
66
- *
67
- * @module @frontmcp/ui/react
68
- */
69
- export { Card, renderCard, renderCardSync } from './Card';
70
- export { Badge, renderBadge, renderBadgeSync } from './Badge';
71
- export { Button, renderButton, renderButtonSync } from './Button';
72
- export { Alert, renderAlert, renderAlertSync } from './Alert';
73
- export { McpBridgeProvider, useMcpBridgeContext, useMcpBridge, useTheme, useDisplayMode, useHostContext, useCapability, useToolInput, useToolOutput, useStructuredContent, useCallTool, useToolCalls, useSendMessage, useOpenLink, type McpBridgeContextValue, type McpBridgeProviderProps, type ToolState, type UseCallToolOptions, type UseCallToolReturn, } from './hooks';
74
- export type { CardProps, CardRenderProps, CardVariant, CardSize } from './Card';
75
- export type { BadgeProps, BadgeRenderProps, BadgeVariant, BadgeSize } from './Badge';
76
- export type { ButtonProps, ButtonRenderProps, ButtonVariant, ButtonSize } from './Button';
77
- export type { AlertProps, AlertRenderProps, AlertVariant } from './Alert';
78
- export type { FmcpCard, FmcpBadge, FmcpButton, FmcpAlert } from './types';
79
- export type { CardOptions, BadgeOptions, ButtonOptions, AlertOptions } from './types';
80
- export { renderChildrenToString, isBrowser, isServer } from './utils';