@frontmcp/ui 0.12.2 → 1.0.0-beta.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 (310) hide show
  1. package/README.md +279 -72
  2. package/bridge/adapters/claude.adapter.d.ts.map +1 -1
  3. package/bridge/adapters/gemini.adapter.d.ts.map +1 -1
  4. package/bridge/index.js +2 -36
  5. package/components/Alert/Alert.d.ts +11 -0
  6. package/components/Alert/Alert.d.ts.map +1 -0
  7. package/components/Alert/index.d.ts +4 -0
  8. package/components/Alert/index.d.ts.map +1 -0
  9. package/components/Alert/index.js +61 -0
  10. package/components/Avatar/Avatar.d.ts +10 -0
  11. package/components/Avatar/Avatar.d.ts.map +1 -0
  12. package/components/Avatar/index.d.ts +4 -0
  13. package/components/Avatar/index.d.ts.map +1 -0
  14. package/components/Avatar/index.js +43 -0
  15. package/components/Badge/Badge.d.ts +13 -0
  16. package/components/Badge/Badge.d.ts.map +1 -0
  17. package/components/Badge/index.d.ts +4 -0
  18. package/components/Badge/index.d.ts.map +1 -0
  19. package/{render → components/Badge}/index.js +54 -42
  20. package/components/Button/Button.d.ts +16 -0
  21. package/components/Button/Button.d.ts.map +1 -0
  22. package/components/Button/index.d.ts +4 -0
  23. package/components/Button/index.d.ts.map +1 -0
  24. package/components/Button/index.js +91 -0
  25. package/components/Card/Card.d.ts +25 -0
  26. package/components/Card/Card.d.ts.map +1 -0
  27. package/components/Card/index.d.ts +4 -0
  28. package/components/Card/index.d.ts.map +1 -0
  29. package/components/Card/index.js +110 -0
  30. package/components/List/List.d.ts +15 -0
  31. package/components/List/List.d.ts.map +1 -0
  32. package/components/List/index.d.ts +4 -0
  33. package/components/List/index.d.ts.map +1 -0
  34. package/components/List/index.js +58 -0
  35. package/components/Loader/Loader.d.ts +28 -0
  36. package/components/Loader/Loader.d.ts.map +1 -0
  37. package/components/Loader/LoaderContext.d.ts +20 -0
  38. package/components/Loader/LoaderContext.d.ts.map +1 -0
  39. package/components/Loader/index.d.ts +6 -0
  40. package/components/Loader/index.d.ts.map +1 -0
  41. package/components/Loader/index.js +174 -0
  42. package/components/Modal/Modal.d.ts +22 -0
  43. package/components/Modal/Modal.d.ts.map +1 -0
  44. package/components/Modal/index.d.ts +4 -0
  45. package/components/Modal/index.d.ts.map +1 -0
  46. package/components/Modal/index.js +80 -0
  47. package/components/Select/Select.d.ts +21 -0
  48. package/components/Select/Select.d.ts.map +1 -0
  49. package/components/Select/index.d.ts +4 -0
  50. package/components/Select/index.d.ts.map +1 -0
  51. package/components/Select/index.js +78 -0
  52. package/components/Table/Table.d.ts +15 -0
  53. package/components/Table/Table.d.ts.map +1 -0
  54. package/components/Table/index.d.ts +4 -0
  55. package/components/Table/index.d.ts.map +1 -0
  56. package/components/Table/index.js +70 -0
  57. package/components/TextField/TextField.d.ts +19 -0
  58. package/components/TextField/TextField.d.ts.map +1 -0
  59. package/components/TextField/index.d.ts +4 -0
  60. package/components/TextField/index.d.ts.map +1 -0
  61. package/components/TextField/index.js +77 -0
  62. package/components/index.d.ts +22 -28
  63. package/components/index.d.ts.map +1 -1
  64. package/components/index.js +523 -2521
  65. package/esm/bridge/index.mjs +2 -6
  66. package/esm/components/Alert/index.mjs +28 -0
  67. package/esm/components/Avatar/index.mjs +10 -0
  68. package/esm/components/Badge/index.mjs +56 -0
  69. package/esm/components/Button/index.mjs +58 -0
  70. package/esm/components/Card/index.mjs +77 -0
  71. package/esm/components/List/index.mjs +25 -0
  72. package/esm/components/Loader/index.mjs +141 -0
  73. package/esm/components/Modal/index.mjs +47 -0
  74. package/esm/components/Select/index.mjs +45 -0
  75. package/esm/components/Table/index.mjs +37 -0
  76. package/esm/components/TextField/index.mjs +44 -0
  77. package/esm/components/index.mjs +513 -2415
  78. package/esm/index.mjs +62 -4652
  79. package/esm/package.json +372 -16
  80. package/esm/react/index.mjs +2 -285
  81. package/esm/renderer/charts/index.mjs +336 -0
  82. package/esm/renderer/common/index.mjs +135 -0
  83. package/esm/renderer/csv/index.mjs +193 -0
  84. package/esm/renderer/flow/index.mjs +259 -0
  85. package/esm/renderer/html/index.mjs +99 -0
  86. package/esm/renderer/image/index.mjs +125 -0
  87. package/esm/renderer/index.mjs +2173 -0
  88. package/esm/renderer/maps/index.mjs +217 -0
  89. package/esm/renderer/math/index.mjs +229 -0
  90. package/esm/renderer/mdx/index.mjs +261 -0
  91. package/esm/renderer/media/index.mjs +235 -0
  92. package/esm/renderer/mermaid/index.mjs +220 -0
  93. package/esm/renderer/pdf/index.mjs +229 -0
  94. package/esm/renderer/react/index.mjs +230 -0
  95. package/esm/runtime/index.mjs +194 -0
  96. package/esm/theme/index.mjs +93 -0
  97. package/index.d.ts +10 -18
  98. package/index.d.ts.map +1 -1
  99. package/index.js +63 -4806
  100. package/package.json +372 -16
  101. package/react/index.d.ts +8 -54
  102. package/react/index.d.ts.map +1 -1
  103. package/react/index.js +2 -295
  104. package/renderer/auto-detect.d.ts +39 -0
  105. package/renderer/auto-detect.d.ts.map +1 -0
  106. package/renderer/charts/index.d.ts +22 -0
  107. package/renderer/charts/index.d.ts.map +1 -0
  108. package/renderer/charts/index.js +367 -0
  109. package/renderer/common/index.d.ts +5 -0
  110. package/renderer/common/index.d.ts.map +1 -0
  111. package/renderer/common/index.js +158 -0
  112. package/renderer/common/inject-stylesheet.d.ts +9 -0
  113. package/renderer/common/inject-stylesheet.d.ts.map +1 -0
  114. package/renderer/common/lazy-import.d.ts +85 -0
  115. package/renderer/common/lazy-import.d.ts.map +1 -0
  116. package/renderer/common/use-lazy-module.d.ts +13 -0
  117. package/renderer/common/use-lazy-module.d.ts.map +1 -0
  118. package/renderer/common/use-renderer-theme.d.ts +35 -0
  119. package/renderer/common/use-renderer-theme.d.ts.map +1 -0
  120. package/renderer/csv/index.d.ts +12 -0
  121. package/renderer/csv/index.d.ts.map +1 -0
  122. package/renderer/csv/index.js +224 -0
  123. package/renderer/flow/index.d.ts +40 -0
  124. package/renderer/flow/index.d.ts.map +1 -0
  125. package/renderer/flow/index.js +290 -0
  126. package/renderer/html/index.d.ts +12 -0
  127. package/renderer/html/index.d.ts.map +1 -0
  128. package/renderer/html/index.js +130 -0
  129. package/renderer/image/index.d.ts +11 -0
  130. package/renderer/image/index.d.ts.map +1 -0
  131. package/renderer/image/index.js +156 -0
  132. package/renderer/index.d.ts +32 -0
  133. package/renderer/index.d.ts.map +1 -0
  134. package/renderer/index.js +2206 -0
  135. package/renderer/maps/index.d.ts +27 -0
  136. package/renderer/maps/index.d.ts.map +1 -0
  137. package/renderer/maps/index.js +248 -0
  138. package/renderer/math/index.d.ts +11 -0
  139. package/renderer/math/index.d.ts.map +1 -0
  140. package/renderer/math/index.js +260 -0
  141. package/renderer/mdx/index.d.ts +10 -0
  142. package/renderer/mdx/index.d.ts.map +1 -0
  143. package/renderer/mdx/index.js +292 -0
  144. package/renderer/media/index.d.ts +20 -0
  145. package/renderer/media/index.d.ts.map +1 -0
  146. package/renderer/media/index.js +266 -0
  147. package/renderer/mermaid/index.d.ts +11 -0
  148. package/renderer/mermaid/index.d.ts.map +1 -0
  149. package/renderer/mermaid/index.js +251 -0
  150. package/renderer/pdf/index.d.ts +10 -0
  151. package/renderer/pdf/index.d.ts.map +1 -0
  152. package/renderer/pdf/index.js +260 -0
  153. package/renderer/react/index.d.ts +45 -0
  154. package/renderer/react/index.d.ts.map +1 -0
  155. package/renderer/react/index.js +261 -0
  156. package/renderer/types.d.ts +24 -0
  157. package/renderer/types.d.ts.map +1 -0
  158. package/runtime/babel-runtime.d.ts +70 -0
  159. package/runtime/babel-runtime.d.ts.map +1 -0
  160. package/runtime/content-detector.d.ts +43 -0
  161. package/runtime/content-detector.d.ts.map +1 -0
  162. package/runtime/index.d.ts +10 -0
  163. package/runtime/index.d.ts.map +1 -0
  164. package/runtime/index.js +217 -0
  165. package/theme/FrontMcpThemeProvider.d.ts +4 -0
  166. package/theme/FrontMcpThemeProvider.d.ts.map +1 -0
  167. package/theme/create-theme.d.ts +9 -0
  168. package/theme/create-theme.d.ts.map +1 -0
  169. package/theme/index.d.ts +5 -0
  170. package/theme/index.d.ts.map +1 -0
  171. package/theme/index.js +126 -0
  172. package/theme/types.d.ts +28 -0
  173. package/theme/types.d.ts.map +1 -0
  174. package/theme/use-theme.d.ts +3 -0
  175. package/theme/use-theme.d.ts.map +1 -0
  176. package/bundler/browser-components.d.ts +0 -42
  177. package/bundler/browser-components.d.ts.map +0 -1
  178. package/bundler/bundler.d.ts +0 -282
  179. package/bundler/bundler.d.ts.map +0 -1
  180. package/bundler/index.d.ts +0 -43
  181. package/bundler/index.d.ts.map +0 -1
  182. package/bundler/index.js +0 -3168
  183. package/bundler/types.d.ts +0 -883
  184. package/bundler/types.d.ts.map +0 -1
  185. package/components/alert.d.ts +0 -83
  186. package/components/alert.d.ts.map +0 -1
  187. package/components/alert.schema.d.ts +0 -98
  188. package/components/alert.schema.d.ts.map +0 -1
  189. package/components/avatar.d.ts +0 -77
  190. package/components/avatar.d.ts.map +0 -1
  191. package/components/avatar.schema.d.ts +0 -170
  192. package/components/avatar.schema.d.ts.map +0 -1
  193. package/components/badge.d.ts +0 -78
  194. package/components/badge.d.ts.map +0 -1
  195. package/components/badge.schema.d.ts +0 -91
  196. package/components/badge.schema.d.ts.map +0 -1
  197. package/components/button.d.ts +0 -100
  198. package/components/button.d.ts.map +0 -1
  199. package/components/button.schema.d.ts +0 -120
  200. package/components/button.schema.d.ts.map +0 -1
  201. package/components/card.d.ts +0 -76
  202. package/components/card.d.ts.map +0 -1
  203. package/components/card.schema.d.ts +0 -93
  204. package/components/card.schema.d.ts.map +0 -1
  205. package/components/form.d.ts +0 -227
  206. package/components/form.d.ts.map +0 -1
  207. package/components/form.schema.d.ts +0 -365
  208. package/components/form.schema.d.ts.map +0 -1
  209. package/components/list.d.ts +0 -121
  210. package/components/list.d.ts.map +0 -1
  211. package/components/list.schema.d.ts +0 -129
  212. package/components/list.schema.d.ts.map +0 -1
  213. package/components/modal.d.ts +0 -100
  214. package/components/modal.d.ts.map +0 -1
  215. package/components/modal.schema.d.ts +0 -151
  216. package/components/modal.schema.d.ts.map +0 -1
  217. package/components/table.d.ts +0 -91
  218. package/components/table.d.ts.map +0 -1
  219. package/components/table.schema.d.ts +0 -123
  220. package/components/table.schema.d.ts.map +0 -1
  221. package/esm/bundler/index.mjs +0 -3136
  222. package/esm/layouts/index.mjs +0 -409
  223. package/esm/render/index.mjs +0 -45
  224. package/esm/renderers/index.mjs +0 -621
  225. package/esm/universal/index.mjs +0 -1946
  226. package/esm/web-components/index.mjs +0 -2023
  227. package/layouts/base.d.ts +0 -86
  228. package/layouts/base.d.ts.map +0 -1
  229. package/layouts/index.d.ts +0 -8
  230. package/layouts/index.d.ts.map +0 -1
  231. package/layouts/index.js +0 -437
  232. package/layouts/presets.d.ts +0 -134
  233. package/layouts/presets.d.ts.map +0 -1
  234. package/react/Alert.d.ts +0 -101
  235. package/react/Alert.d.ts.map +0 -1
  236. package/react/Badge.d.ts +0 -100
  237. package/react/Badge.d.ts.map +0 -1
  238. package/react/Button.d.ts +0 -108
  239. package/react/Button.d.ts.map +0 -1
  240. package/react/Card.d.ts +0 -103
  241. package/react/Card.d.ts.map +0 -1
  242. package/react/types.d.ts +0 -105
  243. package/react/types.d.ts.map +0 -1
  244. package/render/index.d.ts +0 -8
  245. package/render/index.d.ts.map +0 -1
  246. package/render/prerender.d.ts +0 -57
  247. package/render/prerender.d.ts.map +0 -1
  248. package/renderers/index.d.ts +0 -26
  249. package/renderers/index.d.ts.map +0 -1
  250. package/renderers/index.js +0 -666
  251. package/renderers/mdx.renderer.d.ts +0 -99
  252. package/renderers/mdx.renderer.d.ts.map +0 -1
  253. package/renderers/react.adapter.d.ts +0 -70
  254. package/renderers/react.adapter.d.ts.map +0 -1
  255. package/renderers/react.renderer.d.ts +0 -105
  256. package/renderers/react.renderer.d.ts.map +0 -1
  257. package/renderers/transpiler.d.ts +0 -49
  258. package/renderers/transpiler.d.ts.map +0 -1
  259. package/universal/UniversalApp.d.ts +0 -108
  260. package/universal/UniversalApp.d.ts.map +0 -1
  261. package/universal/cached-runtime.d.ts +0 -139
  262. package/universal/cached-runtime.d.ts.map +0 -1
  263. package/universal/context.d.ts +0 -122
  264. package/universal/context.d.ts.map +0 -1
  265. package/universal/index.d.ts +0 -57
  266. package/universal/index.d.ts.map +0 -1
  267. package/universal/index.js +0 -2032
  268. package/universal/renderers/html.renderer.d.ts +0 -36
  269. package/universal/renderers/html.renderer.d.ts.map +0 -1
  270. package/universal/renderers/index.d.ts +0 -112
  271. package/universal/renderers/index.d.ts.map +0 -1
  272. package/universal/renderers/markdown.renderer.d.ts +0 -33
  273. package/universal/renderers/markdown.renderer.d.ts.map +0 -1
  274. package/universal/renderers/mdx.renderer.d.ts +0 -38
  275. package/universal/renderers/mdx.renderer.d.ts.map +0 -1
  276. package/universal/renderers/react.renderer.d.ts +0 -46
  277. package/universal/renderers/react.renderer.d.ts.map +0 -1
  278. package/universal/runtime-builder.d.ts +0 -33
  279. package/universal/runtime-builder.d.ts.map +0 -1
  280. package/universal/store.d.ts +0 -135
  281. package/universal/store.d.ts.map +0 -1
  282. package/universal/types.d.ts +0 -199
  283. package/universal/types.d.ts.map +0 -1
  284. package/web-components/core/attribute-parser.d.ts +0 -82
  285. package/web-components/core/attribute-parser.d.ts.map +0 -1
  286. package/web-components/core/base-element.d.ts +0 -197
  287. package/web-components/core/base-element.d.ts.map +0 -1
  288. package/web-components/core/index.d.ts +0 -9
  289. package/web-components/core/index.d.ts.map +0 -1
  290. package/web-components/elements/fmcp-alert.d.ts +0 -46
  291. package/web-components/elements/fmcp-alert.d.ts.map +0 -1
  292. package/web-components/elements/fmcp-badge.d.ts +0 -47
  293. package/web-components/elements/fmcp-badge.d.ts.map +0 -1
  294. package/web-components/elements/fmcp-button.d.ts +0 -117
  295. package/web-components/elements/fmcp-button.d.ts.map +0 -1
  296. package/web-components/elements/fmcp-card.d.ts +0 -53
  297. package/web-components/elements/fmcp-card.d.ts.map +0 -1
  298. package/web-components/elements/fmcp-input.d.ts +0 -96
  299. package/web-components/elements/fmcp-input.d.ts.map +0 -1
  300. package/web-components/elements/fmcp-select.d.ts +0 -100
  301. package/web-components/elements/fmcp-select.d.ts.map +0 -1
  302. package/web-components/elements/index.d.ts +0 -13
  303. package/web-components/elements/index.d.ts.map +0 -1
  304. package/web-components/index.d.ts +0 -49
  305. package/web-components/index.d.ts.map +0 -1
  306. package/web-components/index.js +0 -2058
  307. package/web-components/register.d.ts +0 -57
  308. package/web-components/register.d.ts.map +0 -1
  309. package/web-components/types.d.ts +0 -122
  310. package/web-components/types.d.ts.map +0 -1
package/react/index.js CHANGED
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
- var __create = Object.create;
3
2
  var __defProp = Object.defineProperty;
4
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
6
  var __export = (target, all) => {
9
7
  for (var name in all)
@@ -17,32 +15,12 @@ var __copyProps = (to, from, except, desc) => {
17
15
  }
18
16
  return to;
19
17
  };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
19
 
30
20
  // libs/ui/src/react/index.ts
31
21
  var react_exports = {};
32
22
  __export(react_exports, {
33
- Alert: () => Alert,
34
- Badge: () => Badge,
35
- Button: () => Button,
36
- Card: () => Card,
37
23
  McpBridgeProvider: () => McpBridgeProvider,
38
- renderAlert: () => renderAlert,
39
- renderAlertSync: () => renderAlertSync,
40
- renderBadge: () => renderBadge,
41
- renderBadgeSync: () => renderBadgeSync,
42
- renderButton: () => renderButton,
43
- renderButtonSync: () => renderButtonSync,
44
- renderCard: () => renderCard,
45
- renderCardSync: () => renderCardSync,
46
24
  useCallTool: () => useCallTool,
47
25
  useCapability: () => useCapability,
48
26
  useDisplayMode: () => useDisplayMode,
@@ -59,248 +37,6 @@ __export(react_exports, {
59
37
  });
60
38
  module.exports = __toCommonJS(react_exports);
61
39
 
62
- // libs/ui/src/react/Card.tsx
63
- var import_styles = require("@frontmcp/uipack/styles");
64
-
65
- // libs/ui/src/render/prerender.ts
66
- async function renderToString(element) {
67
- const { prerender } = await import("react-dom/static");
68
- const { prelude } = await prerender(element);
69
- const reader = prelude.getReader();
70
- const chunks = [];
71
- while (true) {
72
- const { done, value } = await reader.read();
73
- if (done) break;
74
- if (value) chunks.push(value);
75
- }
76
- const totalLength = chunks.reduce((acc, chunk) => acc + chunk.length, 0);
77
- const combined = new Uint8Array(totalLength);
78
- let offset = 0;
79
- for (const chunk of chunks) {
80
- combined.set(chunk, offset);
81
- offset += chunk.length;
82
- }
83
- return new TextDecoder().decode(combined);
84
- }
85
- function renderToStringSync(element) {
86
- const ReactDOMServer = require("react-dom/server");
87
- return ReactDOMServer.renderToStaticMarkup(element);
88
- }
89
-
90
- // libs/ui/src/react/Card.tsx
91
- var import_jsx_runtime = require("react/jsx-runtime");
92
- function Card({
93
- title,
94
- subtitle,
95
- headerActions,
96
- footer,
97
- variant = "default",
98
- size = "md",
99
- className,
100
- id,
101
- clickable,
102
- href,
103
- children
104
- }) {
105
- const variantClasses = (0, import_styles.getCardVariantClasses)(variant);
106
- const sizeClasses = (0, import_styles.getCardSizeClasses)(size);
107
- const clickableClasses = clickable ? "cursor-pointer hover:shadow-md transition-shadow" : "";
108
- const allClasses = (0, import_styles.cn)(variantClasses, sizeClasses, clickableClasses, className);
109
- const hasHeader = title || subtitle || headerActions;
110
- const content = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
111
- hasHeader && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-start justify-between mb-4", children: [
112
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
113
- title && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h3", { className: "text-lg font-semibold text-text-primary", children: title }),
114
- subtitle && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-sm text-text-secondary mt-1", children: subtitle })
115
- ] }),
116
- headerActions && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex items-center gap-2", children: headerActions })
117
- ] }),
118
- children,
119
- footer && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "mt-4 pt-4 border-t border-divider", children: footer })
120
- ] });
121
- if (href) {
122
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("a", { href, className: allClasses, id, children: content });
123
- }
124
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: allClasses, id, children: content });
125
- }
126
- async function renderCard(props) {
127
- const { children, headerActions, footer, ...rest } = props;
128
- const element = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
129
- Card,
130
- {
131
- ...rest,
132
- headerActions: headerActions ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { dangerouslySetInnerHTML: { __html: headerActions } }) : void 0,
133
- footer: footer ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { dangerouslySetInnerHTML: { __html: footer } }) : void 0,
134
- children: children ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { dangerouslySetInnerHTML: { __html: children } }) : void 0
135
- }
136
- );
137
- return renderToString(element);
138
- }
139
- function renderCardSync(props) {
140
- const { children, headerActions, footer, ...rest } = props;
141
- const element = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
142
- Card,
143
- {
144
- ...rest,
145
- headerActions: headerActions ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { dangerouslySetInnerHTML: { __html: headerActions } }) : void 0,
146
- footer: footer ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { dangerouslySetInnerHTML: { __html: footer } }) : void 0,
147
- children: children ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { dangerouslySetInnerHTML: { __html: children } }) : void 0
148
- }
149
- );
150
- return renderToStringSync(element);
151
- }
152
-
153
- // libs/ui/src/react/Badge.tsx
154
- var import_styles2 = require("@frontmcp/uipack/styles");
155
- var import_jsx_runtime2 = require("react/jsx-runtime");
156
- function Badge({
157
- variant = "default",
158
- size = "md",
159
- pill = false,
160
- icon,
161
- dot = false,
162
- className,
163
- removable = false,
164
- onRemove,
165
- children
166
- }) {
167
- if (dot) {
168
- const dotClasses = (0, import_styles2.cn)(
169
- "inline-block rounded-full",
170
- (0, import_styles2.getBadgeDotSizeClasses)(size),
171
- (0, import_styles2.getBadgeDotVariantClasses)(variant),
172
- className
173
- );
174
- const label = typeof children === "string" ? children : void 0;
175
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: dotClasses, "aria-label": label, title: label });
176
- }
177
- const variantClasses = (0, import_styles2.getBadgeVariantClasses)(variant);
178
- const sizeClasses = (0, import_styles2.getBadgeSizeClasses)(size);
179
- const baseClasses = (0, import_styles2.cn)(
180
- "inline-flex items-center font-medium",
181
- pill ? "rounded-full" : "rounded-md",
182
- variantClasses,
183
- sizeClasses,
184
- className
185
- );
186
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("span", { className: baseClasses, children: [
187
- icon && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: "mr-1", children: icon }),
188
- children,
189
- removable && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
190
- "button",
191
- {
192
- type: "button",
193
- className: "ml-1.5 -mr-1 hover:opacity-70 transition-opacity",
194
- "aria-label": "Remove",
195
- onClick: onRemove,
196
- children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("svg", { className: "w-3 h-3", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "M6 18L18 6M6 6l12 12" }) })
197
- }
198
- )
199
- ] });
200
- }
201
- async function renderBadge(props) {
202
- const { children, icon, ...rest } = props;
203
- const element = /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Badge, { ...rest, icon: icon ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { dangerouslySetInnerHTML: { __html: icon } }) : void 0, children });
204
- return renderToString(element);
205
- }
206
- function renderBadgeSync(props) {
207
- const { children, icon, ...rest } = props;
208
- const element = /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Badge, { ...rest, icon: icon ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { dangerouslySetInnerHTML: { __html: icon } }) : void 0, children });
209
- return renderToStringSync(element);
210
- }
211
-
212
- // libs/ui/src/react/Button.tsx
213
- var import_styles3 = require("@frontmcp/uipack/styles");
214
- var import_jsx_runtime3 = require("react/jsx-runtime");
215
- function Button({
216
- variant = "primary",
217
- size = "md",
218
- disabled = false,
219
- loading = false,
220
- fullWidth = false,
221
- iconPosition = "left",
222
- icon,
223
- iconOnly = false,
224
- type = "button",
225
- className,
226
- onClick,
227
- children
228
- }) {
229
- const variantClasses = (0, import_styles3.getButtonVariantClasses)(variant);
230
- const sizeClasses = (0, import_styles3.getButtonSizeClasses)(size, iconOnly);
231
- const disabledClasses = disabled || loading ? "opacity-50 cursor-not-allowed" : "";
232
- const widthClasses = fullWidth ? "w-full" : "";
233
- const allClasses = (0, import_styles3.cn)(import_styles3.BUTTON_BASE_CLASSES, variantClasses, sizeClasses, disabledClasses, widthClasses, className);
234
- const iconElement = icon && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: iconPosition === "left" ? "mr-2" : "ml-2", children: icon });
235
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("button", { type, className: allClasses, disabled: disabled || loading, onClick, children: [
236
- loading && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "mr-2", dangerouslySetInnerHTML: { __html: import_styles3.LOADING_SPINNER } }),
237
- !loading && icon && iconPosition === "left" && iconElement,
238
- !iconOnly && children,
239
- !loading && icon && iconPosition === "right" && iconElement
240
- ] });
241
- }
242
- async function renderButton(props) {
243
- const { children, icon, ...rest } = props;
244
- const element = /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Button, { ...rest, icon: icon ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { dangerouslySetInnerHTML: { __html: icon } }) : void 0, children });
245
- return renderToString(element);
246
- }
247
- function renderButtonSync(props) {
248
- const { children, icon, ...rest } = props;
249
- const element = /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Button, { ...rest, icon: icon ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { dangerouslySetInnerHTML: { __html: icon } }) : void 0, children });
250
- return renderToStringSync(element);
251
- }
252
-
253
- // libs/ui/src/react/Alert.tsx
254
- var import_styles4 = require("@frontmcp/uipack/styles");
255
- var import_jsx_runtime4 = require("react/jsx-runtime");
256
- function Alert({
257
- variant = "info",
258
- title,
259
- icon,
260
- showIcon = true,
261
- dismissible = false,
262
- onDismiss,
263
- className,
264
- children
265
- }) {
266
- const variantStyles = (0, import_styles4.getAlertVariantClasses)(variant);
267
- const allClasses = (0, import_styles4.cn)(import_styles4.ALERT_BASE_CLASSES, variantStyles.container, className);
268
- const iconContent = icon || (showIcon ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
269
- "span",
270
- {
271
- className: (0, import_styles4.cn)("flex-shrink-0", variantStyles.icon),
272
- dangerouslySetInnerHTML: { __html: import_styles4.ALERT_ICONS[variant] }
273
- }
274
- ) : null);
275
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: allClasses, role: "alert", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "flex", children: [
276
- iconContent && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "flex-shrink-0 mr-3", children: iconContent }),
277
- /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "flex-1", children: [
278
- title && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("h4", { className: "font-semibold mb-1", children: title }),
279
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "text-sm", children })
280
- ] }),
281
- dismissible && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
282
- "button",
283
- {
284
- type: "button",
285
- className: "flex-shrink-0 ml-3 hover:opacity-70 transition-opacity",
286
- "aria-label": "Dismiss",
287
- onClick: onDismiss,
288
- children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { dangerouslySetInnerHTML: { __html: import_styles4.CLOSE_ICON } })
289
- }
290
- )
291
- ] }) });
292
- }
293
- async function renderAlert(props) {
294
- const { children, icon, ...rest } = props;
295
- const element = /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Alert, { ...rest, icon: icon ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { dangerouslySetInnerHTML: { __html: icon } }) : void 0, children });
296
- return renderToString(element);
297
- }
298
- function renderAlertSync(props) {
299
- const { children, icon, ...rest } = props;
300
- const element = /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Alert, { ...rest, icon: icon ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { dangerouslySetInnerHTML: { __html: icon } }) : void 0, children });
301
- return renderToStringSync(element);
302
- }
303
-
304
40
  // libs/ui/src/react/hooks/context.tsx
305
41
  var import_react = require("react");
306
42
 
@@ -841,7 +577,7 @@ var FrontMcpBridge = class {
841
577
  };
842
578
 
843
579
  // libs/ui/src/react/hooks/context.tsx
844
- var import_jsx_runtime5 = require("react/jsx-runtime");
580
+ var import_jsx_runtime = require("react/jsx-runtime");
845
581
  var McpBridgeContext = (0, import_react.createContext)(null);
846
582
  function McpBridgeProvider({ children, config, onReady, onError }) {
847
583
  const [bridge, setBridge] = (0, import_react.useState)(null);
@@ -887,7 +623,7 @@ function McpBridgeProvider({ children, config, onReady, onError }) {
887
623
  }),
888
624
  [bridge, loading, error]
889
625
  );
890
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(McpBridgeContext.Provider, { value: contextValue, children });
626
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(McpBridgeContext.Provider, { value: contextValue, children });
891
627
  }
892
628
  var SSR_DEFAULT_CONTEXT = {
893
629
  bridge: null,
@@ -1185,32 +921,3 @@ function useOpenLink() {
1185
921
  [bridge]
1186
922
  );
1187
923
  }
1188
- // Annotate the CommonJS export names for ESM import in node:
1189
- 0 && (module.exports = {
1190
- Alert,
1191
- Badge,
1192
- Button,
1193
- Card,
1194
- McpBridgeProvider,
1195
- renderAlert,
1196
- renderAlertSync,
1197
- renderBadge,
1198
- renderBadgeSync,
1199
- renderButton,
1200
- renderButtonSync,
1201
- renderCard,
1202
- renderCardSync,
1203
- useCallTool,
1204
- useCapability,
1205
- useDisplayMode,
1206
- useHostContext,
1207
- useMcpBridge,
1208
- useMcpBridgeContext,
1209
- useOpenLink,
1210
- useSendMessage,
1211
- useStructuredContent,
1212
- useTheme,
1213
- useToolCalls,
1214
- useToolInput,
1215
- useToolOutput
1216
- });
@@ -0,0 +1,39 @@
1
+ import React from 'react';
2
+ import { type RuntimeContentType } from '../runtime/content-detector';
3
+ import type { RenderOptions, ContentRenderer, ContentType } from './types';
4
+ export type DetectedContentType = RuntimeContentType | 'pdf' | 'csv';
5
+ export declare function detectContentType(content: string): DetectedContentType;
6
+ /**
7
+ * Register a content renderer. Higher priority renderers are checked first.
8
+ * If a renderer with the same type is already registered, it is replaced.
9
+ */
10
+ export declare function registerRenderer(renderer: ContentRenderer): void;
11
+ /**
12
+ * Clear all registered renderers. Useful for testing.
13
+ */
14
+ export declare function clearRegistry(): void;
15
+ /**
16
+ * Get a renderer by content type string.
17
+ */
18
+ export declare function getRenderer(type: string): ContentRenderer | undefined;
19
+ /**
20
+ * Get all registered renderers (sorted by priority, descending).
21
+ */
22
+ export declare function getRegisteredRenderers(): readonly ContentRenderer[];
23
+ /**
24
+ * Render content by auto-detecting type and finding a matching renderer.
25
+ */
26
+ export declare function renderContent(content: string, options?: RenderOptions): React.ReactElement;
27
+ export interface ContentViewProps {
28
+ content: string;
29
+ options?: RenderOptions;
30
+ fallback?: React.ReactNode;
31
+ }
32
+ /**
33
+ * React component that auto-detects content type and renders it
34
+ * with Suspense boundary for lazy-loaded renderers.
35
+ */
36
+ export declare function ContentView({ content, options, fallback }: ContentViewProps): React.ReactElement;
37
+ export { registerRenderer as addRenderer };
38
+ export type { ContentType };
39
+ //# sourceMappingURL=auto-detect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-detect.d.ts","sourceRoot":"","sources":["../../src/renderer/auto-detect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,EAAuC,KAAK,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAC3G,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3E,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,GAAG,KAAK,GAAG,KAAK,CAAC;AAsBrE,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,mBAAmB,CAItE;AAaD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAQhE;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAGpC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAErE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,SAAS,eAAe,EAAE,CAEnE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,KAAK,CAAC,YAAY,CAiB1F;AAMD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,gBAAgB,GAAG,KAAK,CAAC,YAAY,CAMhG;AAMD,OAAO,EAAE,gBAAgB,IAAI,WAAW,EAAE,CAAC;AAC3C,YAAY,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import type { ContentRenderer, RenderOptions } from '../types';
3
+ export interface ChartData {
4
+ type: 'bar' | 'line' | 'area' | 'pie' | 'scatter' | 'radar' | 'composed';
5
+ data: Record<string, unknown>[];
6
+ xKey?: string;
7
+ yKeys?: string[];
8
+ colors?: string[];
9
+ labels?: Record<string, string>;
10
+ title?: string;
11
+ width?: number;
12
+ height?: number;
13
+ }
14
+ export declare function isChart(content: string): boolean;
15
+ export declare class ChartsRenderer implements ContentRenderer {
16
+ readonly type = "chart";
17
+ readonly priority = 80;
18
+ canHandle(content: string): boolean;
19
+ render(content: string, options?: RenderOptions): React.ReactElement;
20
+ }
21
+ export declare const chartsRenderer: ChartsRenderer;
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/renderer/charts/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAQvC,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAM/D,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;IACzE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAQD,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAIhD;AA4QD,qBAAa,cAAe,YAAW,eAAe;IACpD,QAAQ,CAAC,IAAI,WAAW;IACxB,QAAQ,CAAC,QAAQ,MAAM;IAEvB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAInC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,KAAK,CAAC,YAAY;CAWrE;AAED,eAAO,MAAM,cAAc,gBAAuB,CAAC"}