@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
@@ -1458,9 +1458,7 @@ var ExtAppsNotSupportedError = class extends Error {
1458
1458
  var CLAUDE_DOMAINS = ["claude.ai", "anthropic.com"];
1459
1459
  function isValidClaudeDomain(hostname) {
1460
1460
  const lowerHost = hostname.toLowerCase();
1461
- return CLAUDE_DOMAINS.some(
1462
- (domain) => lowerHost === domain || lowerHost.endsWith("." + domain)
1463
- );
1461
+ return CLAUDE_DOMAINS.some((domain) => lowerHost === domain || lowerHost.endsWith("." + domain));
1464
1462
  }
1465
1463
  var ClaudeAdapter = class extends BaseAdapter {
1466
1464
  id = "claude";
@@ -1565,9 +1563,7 @@ function createClaudeAdapter() {
1565
1563
  var GEMINI_DOMAINS = ["gemini.google.com", "bard.google.com"];
1566
1564
  function isValidGeminiDomain(hostname) {
1567
1565
  const lowerHost = hostname.toLowerCase();
1568
- return GEMINI_DOMAINS.some(
1569
- (domain) => lowerHost === domain || lowerHost.endsWith("." + domain)
1570
- );
1566
+ return GEMINI_DOMAINS.some((domain) => lowerHost === domain || lowerHost.endsWith("." + domain));
1571
1567
  }
1572
1568
  var GeminiAdapter = class extends BaseAdapter {
1573
1569
  id = "gemini";
@@ -0,0 +1,28 @@
1
+ // libs/ui/src/components/Alert/Alert.tsx
2
+ import { useState } from "react";
3
+ import MuiAlert from "@mui/material/Alert";
4
+ import AlertTitle from "@mui/material/AlertTitle";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ function Alert({
7
+ severity = "info",
8
+ title,
9
+ dismissible = false,
10
+ onDismiss,
11
+ icon,
12
+ children
13
+ }) {
14
+ const [dismissed, setDismissed] = useState(false);
15
+ if (dismissed) return null;
16
+ const handleClose = dismissible ? () => {
17
+ setDismissed(true);
18
+ onDismiss?.();
19
+ } : void 0;
20
+ return /* @__PURE__ */ jsxs(MuiAlert, { severity, onClose: handleClose, icon, children: [
21
+ title && /* @__PURE__ */ jsx(AlertTitle, { children: title }),
22
+ children
23
+ ] });
24
+ }
25
+ export {
26
+ Alert,
27
+ Alert as default
28
+ };
@@ -0,0 +1,10 @@
1
+ // libs/ui/src/components/Avatar/Avatar.tsx
2
+ import MuiAvatar from "@mui/material/Avatar";
3
+ import { jsx } from "react/jsx-runtime";
4
+ function Avatar({ src, alt, children, size = 40, variant = "circular" }) {
5
+ return /* @__PURE__ */ jsx(MuiAvatar, { src, alt, variant, sx: { width: size, height: size }, children });
6
+ }
7
+ export {
8
+ Avatar,
9
+ Avatar as default
10
+ };
@@ -0,0 +1,56 @@
1
+ // libs/ui/src/components/Badge/Badge.tsx
2
+ import React from "react";
3
+ import Chip from "@mui/material/Chip";
4
+ import { jsx } from "react/jsx-runtime";
5
+ function mapColor(variant) {
6
+ switch (variant) {
7
+ case "default":
8
+ return "default";
9
+ case "primary":
10
+ return "primary";
11
+ case "success":
12
+ return "success";
13
+ case "warning":
14
+ return "warning";
15
+ case "error":
16
+ return "error";
17
+ case "info":
18
+ return "info";
19
+ }
20
+ }
21
+ var DotIndicator = React.createElement("span", {
22
+ style: {
23
+ width: 8,
24
+ height: 8,
25
+ borderRadius: "50%",
26
+ backgroundColor: "currentColor",
27
+ display: "inline-block"
28
+ }
29
+ });
30
+ function Badge({
31
+ variant = "default",
32
+ label,
33
+ dot = false,
34
+ removable = false,
35
+ onRemove,
36
+ size = "small",
37
+ icon
38
+ }) {
39
+ const avatarProp = dot && !icon ? { avatar: DotIndicator } : {};
40
+ return /* @__PURE__ */ jsx(
41
+ Chip,
42
+ {
43
+ label,
44
+ color: mapColor(variant),
45
+ size,
46
+ icon,
47
+ ...avatarProp,
48
+ onDelete: removable && onRemove ? onRemove : void 0,
49
+ variant: "filled"
50
+ }
51
+ );
52
+ }
53
+ export {
54
+ Badge,
55
+ Badge as default
56
+ };
@@ -0,0 +1,58 @@
1
+ // libs/ui/src/components/Button/Button.tsx
2
+ import { styled } from "@mui/material/styles";
3
+ import MuiButton from "@mui/material/Button";
4
+ import CircularProgress from "@mui/material/CircularProgress";
5
+ import { jsx } from "react/jsx-runtime";
6
+ function mapVariant(variant) {
7
+ switch (variant) {
8
+ case "primary":
9
+ return { variant: "contained", color: "primary" };
10
+ case "secondary":
11
+ return { variant: "outlined", color: "secondary" };
12
+ case "danger":
13
+ return { variant: "contained", color: "error" };
14
+ case "ghost":
15
+ return { variant: "text", color: "inherit" };
16
+ }
17
+ }
18
+ var StyledButton = styled(MuiButton, {
19
+ name: "Button",
20
+ slot: "Root"
21
+ })(({ theme }) => ({
22
+ textTransform: "none",
23
+ fontWeight: 500,
24
+ borderRadius: theme.shape.borderRadius
25
+ }));
26
+ function Button({
27
+ variant = "primary",
28
+ size = "medium",
29
+ loading = false,
30
+ disabled = false,
31
+ startIcon,
32
+ endIcon,
33
+ fullWidth = false,
34
+ onClick,
35
+ type = "button",
36
+ children
37
+ }) {
38
+ const mapped = mapVariant(variant);
39
+ return /* @__PURE__ */ jsx(
40
+ StyledButton,
41
+ {
42
+ variant: mapped.variant,
43
+ color: mapped.color,
44
+ size,
45
+ disabled: disabled || loading,
46
+ startIcon: loading ? /* @__PURE__ */ jsx(CircularProgress, { size: 16, color: "inherit" }) : startIcon,
47
+ endIcon,
48
+ fullWidth,
49
+ onClick,
50
+ type,
51
+ children
52
+ }
53
+ );
54
+ }
55
+ export {
56
+ Button,
57
+ Button as default
58
+ };
@@ -0,0 +1,77 @@
1
+ // libs/ui/src/components/Card/Card.tsx
2
+ import { styled } from "@mui/material/styles";
3
+ import MuiCard from "@mui/material/Card";
4
+ import CardHeader from "@mui/material/CardHeader";
5
+ import CardContent from "@mui/material/CardContent";
6
+ import CardActions from "@mui/material/CardActions";
7
+ import CardActionArea from "@mui/material/CardActionArea";
8
+ import { jsx, jsxs } from "react/jsx-runtime";
9
+ var StyledCard = styled(MuiCard, {
10
+ name: "Card",
11
+ slot: "Root"
12
+ })(({ theme }) => ({
13
+ borderRadius: theme.shape.borderRadius,
14
+ transition: theme.transitions.create(["box-shadow", "border-color"], {
15
+ duration: theme.transitions.duration.short
16
+ })
17
+ }));
18
+ var StyledCardHeader = styled(CardHeader, {
19
+ name: "Card",
20
+ slot: "Header"
21
+ })(({ theme }) => ({
22
+ "& .MuiCardHeader-title": {
23
+ fontWeight: 600,
24
+ fontSize: theme.typography.body1.fontSize
25
+ },
26
+ "& .MuiCardHeader-subheader": {
27
+ fontSize: theme.typography.body2.fontSize
28
+ }
29
+ }));
30
+ var StyledCardContent = styled(CardContent, {
31
+ name: "Card",
32
+ slot: "Content"
33
+ })({
34
+ "&:last-child": {
35
+ paddingBottom: 16
36
+ }
37
+ });
38
+ var StyledCardActions = styled(CardActions, {
39
+ name: "Card",
40
+ slot: "Actions"
41
+ })(({ theme }) => ({
42
+ borderTop: `1px solid ${theme.palette.divider}`,
43
+ padding: theme.spacing(1, 2)
44
+ }));
45
+ function Card({
46
+ title,
47
+ subtitle,
48
+ headerActions,
49
+ footer,
50
+ elevation = 1,
51
+ clickable = false,
52
+ onClick,
53
+ slotProps,
54
+ children
55
+ }) {
56
+ const header = title || subtitle || headerActions ? /* @__PURE__ */ jsx(StyledCardHeader, { title, subheader: subtitle, action: headerActions, ...slotProps?.header }) : null;
57
+ const content = /* @__PURE__ */ jsx(StyledCardContent, { ...slotProps?.content, children });
58
+ const actions = footer ? /* @__PURE__ */ jsx(StyledCardActions, { ...slotProps?.actions, children: footer }) : null;
59
+ if (clickable) {
60
+ return /* @__PURE__ */ jsxs(StyledCard, { elevation, ...slotProps?.root, children: [
61
+ /* @__PURE__ */ jsxs(CardActionArea, { onClick, children: [
62
+ header,
63
+ content
64
+ ] }),
65
+ actions
66
+ ] });
67
+ }
68
+ return /* @__PURE__ */ jsxs(StyledCard, { elevation, onClick, ...slotProps?.root, children: [
69
+ header,
70
+ content,
71
+ actions
72
+ ] });
73
+ }
74
+ export {
75
+ Card,
76
+ Card as default
77
+ };
@@ -0,0 +1,25 @@
1
+ // libs/ui/src/components/List/List.tsx
2
+ import React from "react";
3
+ import MuiList from "@mui/material/List";
4
+ import ListItem from "@mui/material/ListItem";
5
+ import ListItemButton from "@mui/material/ListItemButton";
6
+ import ListItemIcon from "@mui/material/ListItemIcon";
7
+ import ListItemText from "@mui/material/ListItemText";
8
+ import Divider from "@mui/material/Divider";
9
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
10
+ function List({ items, dense = false }) {
11
+ return /* @__PURE__ */ jsx(MuiList, { dense, children: items.map((item) => {
12
+ const content = /* @__PURE__ */ jsxs(Fragment, { children: [
13
+ item.icon && /* @__PURE__ */ jsx(ListItemIcon, { children: item.icon }),
14
+ /* @__PURE__ */ jsx(ListItemText, { primary: item.primary, secondary: item.secondary })
15
+ ] });
16
+ return /* @__PURE__ */ jsxs(React.Fragment, { children: [
17
+ item.onClick ? /* @__PURE__ */ jsx(ListItemButton, { onClick: item.onClick, children: content }) : /* @__PURE__ */ jsx(ListItem, { children: content }),
18
+ item.divider && /* @__PURE__ */ jsx(Divider, {})
19
+ ] }, item.id);
20
+ }) });
21
+ }
22
+ export {
23
+ List,
24
+ List as default
25
+ };
@@ -0,0 +1,141 @@
1
+ // libs/ui/src/components/Loader/Loader.tsx
2
+ import Box from "@mui/material/Box";
3
+ import CircularProgress from "@mui/material/CircularProgress";
4
+ import LinearProgress from "@mui/material/LinearProgress";
5
+ import Skeleton from "@mui/material/Skeleton";
6
+ import Backdrop from "@mui/material/Backdrop";
7
+ import Typography from "@mui/material/Typography";
8
+ import { styled } from "@mui/material/styles";
9
+
10
+ // libs/ui/src/components/Loader/LoaderContext.tsx
11
+ import { createContext, useContext, useMemo } from "react";
12
+ import { jsx } from "react/jsx-runtime";
13
+ var LoaderContext = createContext({});
14
+ function LoaderProvider({
15
+ custom,
16
+ children
17
+ }) {
18
+ const value = useMemo(() => ({ customLoader: custom }), [custom]);
19
+ return /* @__PURE__ */ jsx(LoaderContext.Provider, { value, children });
20
+ }
21
+ function useLoaderContext() {
22
+ return useContext(LoaderContext);
23
+ }
24
+
25
+ // libs/ui/src/components/Loader/Loader.tsx
26
+ import { jsx as jsx2, jsxs } from "react/jsx-runtime";
27
+ var LoaderRoot = styled(Box, {
28
+ name: "FrontMcpLoader",
29
+ slot: "Root"
30
+ })({
31
+ display: "inline-flex",
32
+ flexDirection: "column",
33
+ alignItems: "center",
34
+ gap: 8
35
+ });
36
+ var BarRoot = styled(Box, {
37
+ name: "FrontMcpLoader",
38
+ slot: "Bar"
39
+ })({
40
+ width: "100%",
41
+ display: "flex",
42
+ flexDirection: "column",
43
+ gap: 4
44
+ });
45
+ var OverlayRoot = styled(Box, {
46
+ name: "FrontMcpLoader",
47
+ slot: "Overlay"
48
+ })({
49
+ position: "relative"
50
+ });
51
+ function Loader({
52
+ variant = "spinner",
53
+ determinate = false,
54
+ value,
55
+ size = 40,
56
+ color = "primary",
57
+ label,
58
+ skeletonShape = "text",
59
+ skeletonWidth,
60
+ skeletonHeight,
61
+ skeletonLines = 1,
62
+ open = true,
63
+ contained = false,
64
+ children,
65
+ custom
66
+ }) {
67
+ const { customLoader } = useLoaderContext();
68
+ const renderFn = custom ?? customLoader;
69
+ if (renderFn) {
70
+ return renderFn({ variant, label, value });
71
+ }
72
+ switch (variant) {
73
+ case "bar":
74
+ return /* @__PURE__ */ jsxs(BarRoot, { children: [
75
+ /* @__PURE__ */ jsx2(
76
+ LinearProgress,
77
+ {
78
+ variant: determinate ? "determinate" : "indeterminate",
79
+ value: determinate ? value : void 0,
80
+ color
81
+ }
82
+ ),
83
+ label && /* @__PURE__ */ jsx2(Typography, { variant: "caption", color: "text.secondary", children: label })
84
+ ] });
85
+ case "skeleton": {
86
+ const lines = Math.max(1, skeletonLines);
87
+ return /* @__PURE__ */ jsx2(Box, { children: Array.from({ length: lines }, (_, i) => /* @__PURE__ */ jsx2(
88
+ Skeleton,
89
+ {
90
+ variant: skeletonShape,
91
+ width: skeletonWidth ?? (skeletonShape === "circular" ? 40 : "100%"),
92
+ height: skeletonHeight ?? (skeletonShape === "circular" ? 40 : void 0),
93
+ animation: "wave"
94
+ },
95
+ i
96
+ )) });
97
+ }
98
+ case "overlay":
99
+ return /* @__PURE__ */ jsxs(OverlayRoot, { children: [
100
+ children,
101
+ /* @__PURE__ */ jsxs(
102
+ Backdrop,
103
+ {
104
+ open,
105
+ sx: {
106
+ position: contained ? "absolute" : "fixed",
107
+ zIndex: (theme) => theme.zIndex.drawer + 1,
108
+ color: "#fff",
109
+ flexDirection: "column",
110
+ gap: 1
111
+ },
112
+ children: [
113
+ /* @__PURE__ */ jsx2(CircularProgress, { color: "inherit", size }),
114
+ label && /* @__PURE__ */ jsx2(Typography, { variant: "body2", color: "inherit", children: label })
115
+ ]
116
+ }
117
+ )
118
+ ] });
119
+ case "spinner":
120
+ default:
121
+ return /* @__PURE__ */ jsxs(LoaderRoot, { children: [
122
+ /* @__PURE__ */ jsx2(
123
+ CircularProgress,
124
+ {
125
+ variant: determinate ? "determinate" : "indeterminate",
126
+ value: determinate ? value : void 0,
127
+ size,
128
+ color
129
+ }
130
+ ),
131
+ label && /* @__PURE__ */ jsx2(Typography, { variant: "caption", color: "text.secondary", children: label })
132
+ ] });
133
+ }
134
+ }
135
+ export {
136
+ Loader,
137
+ LoaderContext,
138
+ LoaderProvider,
139
+ Loader as default,
140
+ useLoaderContext
141
+ };
@@ -0,0 +1,47 @@
1
+ // libs/ui/src/components/Modal/Modal.tsx
2
+ import { styled } from "@mui/material/styles";
3
+ import Dialog from "@mui/material/Dialog";
4
+ import DialogTitle from "@mui/material/DialogTitle";
5
+ import DialogContent from "@mui/material/DialogContent";
6
+ import DialogActions from "@mui/material/DialogActions";
7
+ import IconButton from "@mui/material/IconButton";
8
+ import { jsx, jsxs } from "react/jsx-runtime";
9
+ var StyledDialogTitle = styled(DialogTitle, {
10
+ name: "Modal",
11
+ slot: "Title"
12
+ })(({ theme }) => ({
13
+ display: "flex",
14
+ alignItems: "center",
15
+ justifyContent: "space-between",
16
+ fontWeight: 600,
17
+ fontSize: theme.typography.h6.fontSize
18
+ }));
19
+ var StyledDialogContent = styled(DialogContent, {
20
+ name: "Modal",
21
+ slot: "Content"
22
+ })(({ theme }) => ({
23
+ paddingTop: `${theme.spacing(2)} !important`
24
+ }));
25
+ function Modal({
26
+ open,
27
+ onClose,
28
+ title,
29
+ actions,
30
+ maxWidth = "sm",
31
+ fullWidth = true,
32
+ slotProps,
33
+ children
34
+ }) {
35
+ return /* @__PURE__ */ jsxs(Dialog, { open, onClose, maxWidth, fullWidth, children: [
36
+ title && /* @__PURE__ */ jsxs(StyledDialogTitle, { ...slotProps?.title, children: [
37
+ title,
38
+ /* @__PURE__ */ jsx(IconButton, { onClick: onClose, size: "small", "aria-label": "close", children: "\u2715" })
39
+ ] }),
40
+ /* @__PURE__ */ jsx(StyledDialogContent, { ...slotProps?.content, children }),
41
+ actions && /* @__PURE__ */ jsx(DialogActions, { ...slotProps?.actions, children: actions })
42
+ ] });
43
+ }
44
+ export {
45
+ Modal,
46
+ Modal as default
47
+ };
@@ -0,0 +1,45 @@
1
+ // libs/ui/src/components/Select/Select.tsx
2
+ import MuiTextField from "@mui/material/TextField";
3
+ import MenuItem from "@mui/material/MenuItem";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ function Select({
6
+ label,
7
+ value,
8
+ defaultValue,
9
+ onChange,
10
+ options,
11
+ placeholder,
12
+ error = false,
13
+ helperText,
14
+ disabled = false,
15
+ required = false,
16
+ fullWidth = true,
17
+ size = "small"
18
+ }) {
19
+ return /* @__PURE__ */ jsxs(
20
+ MuiTextField,
21
+ {
22
+ select: true,
23
+ label,
24
+ value,
25
+ defaultValue,
26
+ onChange: onChange ? (e) => onChange(e.target.value) : void 0,
27
+ error,
28
+ helperText,
29
+ disabled,
30
+ required,
31
+ fullWidth,
32
+ size,
33
+ variant: "outlined",
34
+ ...placeholder ? { SelectProps: { displayEmpty: true } } : {},
35
+ children: [
36
+ placeholder && /* @__PURE__ */ jsx(MenuItem, { value: "", disabled: true, children: placeholder }),
37
+ options.map((opt) => /* @__PURE__ */ jsx(MenuItem, { value: opt.value, children: opt.label }, opt.value))
38
+ ]
39
+ }
40
+ );
41
+ }
42
+ export {
43
+ Select,
44
+ Select as default
45
+ };
@@ -0,0 +1,37 @@
1
+ // libs/ui/src/components/Table/Table.tsx
2
+ import { styled } from "@mui/material/styles";
3
+ import MuiTable from "@mui/material/Table";
4
+ import TableBody from "@mui/material/TableBody";
5
+ import TableCell from "@mui/material/TableCell";
6
+ import TableContainer from "@mui/material/TableContainer";
7
+ import TableHead from "@mui/material/TableHead";
8
+ import TableRow from "@mui/material/TableRow";
9
+ import Paper from "@mui/material/Paper";
10
+ import { jsx, jsxs } from "react/jsx-runtime";
11
+ var StyledHeaderCell = styled(TableCell, {
12
+ name: "Table",
13
+ slot: "HeaderCell"
14
+ })(({ theme }) => ({
15
+ fontWeight: 600,
16
+ backgroundColor: theme.palette.mode === "dark" ? theme.palette.grey[900] : theme.palette.grey[50]
17
+ }));
18
+ var StyledBodyCell = styled(TableCell, {
19
+ name: "Table",
20
+ slot: "BodyCell"
21
+ })({});
22
+ function Table({
23
+ columns,
24
+ rows,
25
+ size = "small",
26
+ stickyHeader = false,
27
+ maxHeight
28
+ }) {
29
+ return /* @__PURE__ */ jsx(TableContainer, { component: Paper, variant: "outlined", sx: maxHeight ? { maxHeight } : void 0, children: /* @__PURE__ */ jsxs(MuiTable, { size, stickyHeader, children: [
30
+ /* @__PURE__ */ jsx(TableHead, { children: /* @__PURE__ */ jsx(TableRow, { children: columns.map((col) => /* @__PURE__ */ jsx(StyledHeaderCell, { align: col.align ?? "left", children: col.label }, col.key)) }) }),
31
+ /* @__PURE__ */ jsx(TableBody, { children: rows.map((row, idx) => /* @__PURE__ */ jsx(TableRow, { hover: true, children: columns.map((col) => /* @__PURE__ */ jsx(StyledBodyCell, { align: col.align ?? "left", children: String(row[col.key] ?? "") }, col.key)) }, idx)) })
32
+ ] }) });
33
+ }
34
+ export {
35
+ Table,
36
+ Table as default
37
+ };
@@ -0,0 +1,44 @@
1
+ // libs/ui/src/components/TextField/TextField.tsx
2
+ import MuiTextField from "@mui/material/TextField";
3
+ import { jsx } from "react/jsx-runtime";
4
+ function TextField({
5
+ label,
6
+ placeholder,
7
+ value,
8
+ defaultValue,
9
+ onChange,
10
+ type = "text",
11
+ multiline = false,
12
+ rows,
13
+ error = false,
14
+ helperText,
15
+ disabled = false,
16
+ required = false,
17
+ fullWidth = true,
18
+ size = "small"
19
+ }) {
20
+ return /* @__PURE__ */ jsx(
21
+ MuiTextField,
22
+ {
23
+ label,
24
+ placeholder,
25
+ value,
26
+ defaultValue,
27
+ onChange: onChange ? (e) => onChange(e.target.value) : void 0,
28
+ type,
29
+ multiline,
30
+ rows,
31
+ error,
32
+ helperText,
33
+ disabled,
34
+ required,
35
+ fullWidth,
36
+ size,
37
+ variant: "outlined"
38
+ }
39
+ );
40
+ }
41
+ export {
42
+ TextField,
43
+ TextField as default
44
+ };