@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.
- package/README.md +279 -72
- package/bridge/adapters/claude.adapter.d.ts.map +1 -1
- package/bridge/adapters/gemini.adapter.d.ts.map +1 -1
- package/bridge/index.js +2 -36
- package/components/Alert/Alert.d.ts +11 -0
- package/components/Alert/Alert.d.ts.map +1 -0
- package/components/Alert/index.d.ts +4 -0
- package/components/Alert/index.d.ts.map +1 -0
- package/components/Alert/index.js +61 -0
- package/components/Avatar/Avatar.d.ts +10 -0
- package/components/Avatar/Avatar.d.ts.map +1 -0
- package/components/Avatar/index.d.ts +4 -0
- package/components/Avatar/index.d.ts.map +1 -0
- package/components/Avatar/index.js +43 -0
- package/components/Badge/Badge.d.ts +13 -0
- package/components/Badge/Badge.d.ts.map +1 -0
- package/components/Badge/index.d.ts +4 -0
- package/components/Badge/index.d.ts.map +1 -0
- package/{render → components/Badge}/index.js +54 -42
- package/components/Button/Button.d.ts +16 -0
- package/components/Button/Button.d.ts.map +1 -0
- package/components/Button/index.d.ts +4 -0
- package/components/Button/index.d.ts.map +1 -0
- package/components/Button/index.js +91 -0
- package/components/Card/Card.d.ts +25 -0
- package/components/Card/Card.d.ts.map +1 -0
- package/components/Card/index.d.ts +4 -0
- package/components/Card/index.d.ts.map +1 -0
- package/components/Card/index.js +110 -0
- package/components/List/List.d.ts +15 -0
- package/components/List/List.d.ts.map +1 -0
- package/components/List/index.d.ts +4 -0
- package/components/List/index.d.ts.map +1 -0
- package/components/List/index.js +58 -0
- package/components/Loader/Loader.d.ts +28 -0
- package/components/Loader/Loader.d.ts.map +1 -0
- package/components/Loader/LoaderContext.d.ts +20 -0
- package/components/Loader/LoaderContext.d.ts.map +1 -0
- package/components/Loader/index.d.ts +6 -0
- package/components/Loader/index.d.ts.map +1 -0
- package/components/Loader/index.js +174 -0
- package/components/Modal/Modal.d.ts +22 -0
- package/components/Modal/Modal.d.ts.map +1 -0
- package/components/Modal/index.d.ts +4 -0
- package/components/Modal/index.d.ts.map +1 -0
- package/components/Modal/index.js +80 -0
- package/components/Select/Select.d.ts +21 -0
- package/components/Select/Select.d.ts.map +1 -0
- package/components/Select/index.d.ts +4 -0
- package/components/Select/index.d.ts.map +1 -0
- package/components/Select/index.js +78 -0
- package/components/Table/Table.d.ts +15 -0
- package/components/Table/Table.d.ts.map +1 -0
- package/components/Table/index.d.ts +4 -0
- package/components/Table/index.d.ts.map +1 -0
- package/components/Table/index.js +70 -0
- package/components/TextField/TextField.d.ts +19 -0
- package/components/TextField/TextField.d.ts.map +1 -0
- package/components/TextField/index.d.ts +4 -0
- package/components/TextField/index.d.ts.map +1 -0
- package/components/TextField/index.js +77 -0
- package/components/index.d.ts +22 -28
- package/components/index.d.ts.map +1 -1
- package/components/index.js +523 -2521
- package/esm/bridge/index.mjs +2 -6
- package/esm/components/Alert/index.mjs +28 -0
- package/esm/components/Avatar/index.mjs +10 -0
- package/esm/components/Badge/index.mjs +56 -0
- package/esm/components/Button/index.mjs +58 -0
- package/esm/components/Card/index.mjs +77 -0
- package/esm/components/List/index.mjs +25 -0
- package/esm/components/Loader/index.mjs +141 -0
- package/esm/components/Modal/index.mjs +47 -0
- package/esm/components/Select/index.mjs +45 -0
- package/esm/components/Table/index.mjs +37 -0
- package/esm/components/TextField/index.mjs +44 -0
- package/esm/components/index.mjs +513 -2415
- package/esm/index.mjs +62 -4652
- package/esm/package.json +372 -16
- package/esm/react/index.mjs +2 -285
- package/esm/renderer/charts/index.mjs +336 -0
- package/esm/renderer/common/index.mjs +135 -0
- package/esm/renderer/csv/index.mjs +193 -0
- package/esm/renderer/flow/index.mjs +259 -0
- package/esm/renderer/html/index.mjs +99 -0
- package/esm/renderer/image/index.mjs +125 -0
- package/esm/renderer/index.mjs +2173 -0
- package/esm/renderer/maps/index.mjs +217 -0
- package/esm/renderer/math/index.mjs +229 -0
- package/esm/renderer/mdx/index.mjs +261 -0
- package/esm/renderer/media/index.mjs +235 -0
- package/esm/renderer/mermaid/index.mjs +220 -0
- package/esm/renderer/pdf/index.mjs +229 -0
- package/esm/renderer/react/index.mjs +230 -0
- package/esm/runtime/index.mjs +194 -0
- package/esm/theme/index.mjs +93 -0
- package/index.d.ts +10 -18
- package/index.d.ts.map +1 -1
- package/index.js +63 -4806
- package/package.json +372 -16
- package/react/index.d.ts +8 -54
- package/react/index.d.ts.map +1 -1
- package/react/index.js +2 -295
- package/renderer/auto-detect.d.ts +39 -0
- package/renderer/auto-detect.d.ts.map +1 -0
- package/renderer/charts/index.d.ts +22 -0
- package/renderer/charts/index.d.ts.map +1 -0
- package/renderer/charts/index.js +367 -0
- package/renderer/common/index.d.ts +5 -0
- package/renderer/common/index.d.ts.map +1 -0
- package/renderer/common/index.js +158 -0
- package/renderer/common/inject-stylesheet.d.ts +9 -0
- package/renderer/common/inject-stylesheet.d.ts.map +1 -0
- package/renderer/common/lazy-import.d.ts +85 -0
- package/renderer/common/lazy-import.d.ts.map +1 -0
- package/renderer/common/use-lazy-module.d.ts +13 -0
- package/renderer/common/use-lazy-module.d.ts.map +1 -0
- package/renderer/common/use-renderer-theme.d.ts +35 -0
- package/renderer/common/use-renderer-theme.d.ts.map +1 -0
- package/renderer/csv/index.d.ts +12 -0
- package/renderer/csv/index.d.ts.map +1 -0
- package/renderer/csv/index.js +224 -0
- package/renderer/flow/index.d.ts +40 -0
- package/renderer/flow/index.d.ts.map +1 -0
- package/renderer/flow/index.js +290 -0
- package/renderer/html/index.d.ts +12 -0
- package/renderer/html/index.d.ts.map +1 -0
- package/renderer/html/index.js +130 -0
- package/renderer/image/index.d.ts +11 -0
- package/renderer/image/index.d.ts.map +1 -0
- package/renderer/image/index.js +156 -0
- package/renderer/index.d.ts +32 -0
- package/renderer/index.d.ts.map +1 -0
- package/renderer/index.js +2206 -0
- package/renderer/maps/index.d.ts +27 -0
- package/renderer/maps/index.d.ts.map +1 -0
- package/renderer/maps/index.js +248 -0
- package/renderer/math/index.d.ts +11 -0
- package/renderer/math/index.d.ts.map +1 -0
- package/renderer/math/index.js +260 -0
- package/renderer/mdx/index.d.ts +10 -0
- package/renderer/mdx/index.d.ts.map +1 -0
- package/renderer/mdx/index.js +292 -0
- package/renderer/media/index.d.ts +20 -0
- package/renderer/media/index.d.ts.map +1 -0
- package/renderer/media/index.js +266 -0
- package/renderer/mermaid/index.d.ts +11 -0
- package/renderer/mermaid/index.d.ts.map +1 -0
- package/renderer/mermaid/index.js +251 -0
- package/renderer/pdf/index.d.ts +10 -0
- package/renderer/pdf/index.d.ts.map +1 -0
- package/renderer/pdf/index.js +260 -0
- package/renderer/react/index.d.ts +45 -0
- package/renderer/react/index.d.ts.map +1 -0
- package/renderer/react/index.js +261 -0
- package/renderer/types.d.ts +24 -0
- package/renderer/types.d.ts.map +1 -0
- package/runtime/babel-runtime.d.ts +70 -0
- package/runtime/babel-runtime.d.ts.map +1 -0
- package/runtime/content-detector.d.ts +43 -0
- package/runtime/content-detector.d.ts.map +1 -0
- package/runtime/index.d.ts +10 -0
- package/runtime/index.d.ts.map +1 -0
- package/runtime/index.js +217 -0
- package/theme/FrontMcpThemeProvider.d.ts +4 -0
- package/theme/FrontMcpThemeProvider.d.ts.map +1 -0
- package/theme/create-theme.d.ts +9 -0
- package/theme/create-theme.d.ts.map +1 -0
- package/theme/index.d.ts +5 -0
- package/theme/index.d.ts.map +1 -0
- package/theme/index.js +126 -0
- package/theme/types.d.ts +28 -0
- package/theme/types.d.ts.map +1 -0
- package/theme/use-theme.d.ts +3 -0
- package/theme/use-theme.d.ts.map +1 -0
- package/bundler/browser-components.d.ts +0 -42
- package/bundler/browser-components.d.ts.map +0 -1
- package/bundler/bundler.d.ts +0 -282
- package/bundler/bundler.d.ts.map +0 -1
- package/bundler/index.d.ts +0 -43
- package/bundler/index.d.ts.map +0 -1
- package/bundler/index.js +0 -3168
- package/bundler/types.d.ts +0 -883
- package/bundler/types.d.ts.map +0 -1
- package/components/alert.d.ts +0 -83
- package/components/alert.d.ts.map +0 -1
- package/components/alert.schema.d.ts +0 -98
- package/components/alert.schema.d.ts.map +0 -1
- package/components/avatar.d.ts +0 -77
- package/components/avatar.d.ts.map +0 -1
- package/components/avatar.schema.d.ts +0 -170
- package/components/avatar.schema.d.ts.map +0 -1
- package/components/badge.d.ts +0 -78
- package/components/badge.d.ts.map +0 -1
- package/components/badge.schema.d.ts +0 -91
- package/components/badge.schema.d.ts.map +0 -1
- package/components/button.d.ts +0 -100
- package/components/button.d.ts.map +0 -1
- package/components/button.schema.d.ts +0 -120
- package/components/button.schema.d.ts.map +0 -1
- package/components/card.d.ts +0 -76
- package/components/card.d.ts.map +0 -1
- package/components/card.schema.d.ts +0 -93
- package/components/card.schema.d.ts.map +0 -1
- package/components/form.d.ts +0 -227
- package/components/form.d.ts.map +0 -1
- package/components/form.schema.d.ts +0 -365
- package/components/form.schema.d.ts.map +0 -1
- package/components/list.d.ts +0 -121
- package/components/list.d.ts.map +0 -1
- package/components/list.schema.d.ts +0 -129
- package/components/list.schema.d.ts.map +0 -1
- package/components/modal.d.ts +0 -100
- package/components/modal.d.ts.map +0 -1
- package/components/modal.schema.d.ts +0 -151
- package/components/modal.schema.d.ts.map +0 -1
- package/components/table.d.ts +0 -91
- package/components/table.d.ts.map +0 -1
- package/components/table.schema.d.ts +0 -123
- package/components/table.schema.d.ts.map +0 -1
- package/esm/bundler/index.mjs +0 -3136
- package/esm/layouts/index.mjs +0 -409
- package/esm/render/index.mjs +0 -45
- package/esm/renderers/index.mjs +0 -621
- package/esm/universal/index.mjs +0 -1946
- package/esm/web-components/index.mjs +0 -2023
- package/layouts/base.d.ts +0 -86
- package/layouts/base.d.ts.map +0 -1
- package/layouts/index.d.ts +0 -8
- package/layouts/index.d.ts.map +0 -1
- package/layouts/index.js +0 -437
- package/layouts/presets.d.ts +0 -134
- package/layouts/presets.d.ts.map +0 -1
- package/react/Alert.d.ts +0 -101
- package/react/Alert.d.ts.map +0 -1
- package/react/Badge.d.ts +0 -100
- package/react/Badge.d.ts.map +0 -1
- package/react/Button.d.ts +0 -108
- package/react/Button.d.ts.map +0 -1
- package/react/Card.d.ts +0 -103
- package/react/Card.d.ts.map +0 -1
- package/react/types.d.ts +0 -105
- package/react/types.d.ts.map +0 -1
- package/render/index.d.ts +0 -8
- package/render/index.d.ts.map +0 -1
- package/render/prerender.d.ts +0 -57
- package/render/prerender.d.ts.map +0 -1
- package/renderers/index.d.ts +0 -26
- package/renderers/index.d.ts.map +0 -1
- package/renderers/index.js +0 -666
- package/renderers/mdx.renderer.d.ts +0 -99
- package/renderers/mdx.renderer.d.ts.map +0 -1
- package/renderers/react.adapter.d.ts +0 -70
- package/renderers/react.adapter.d.ts.map +0 -1
- package/renderers/react.renderer.d.ts +0 -105
- package/renderers/react.renderer.d.ts.map +0 -1
- package/renderers/transpiler.d.ts +0 -49
- package/renderers/transpiler.d.ts.map +0 -1
- package/universal/UniversalApp.d.ts +0 -108
- package/universal/UniversalApp.d.ts.map +0 -1
- package/universal/cached-runtime.d.ts +0 -139
- package/universal/cached-runtime.d.ts.map +0 -1
- package/universal/context.d.ts +0 -122
- package/universal/context.d.ts.map +0 -1
- package/universal/index.d.ts +0 -57
- package/universal/index.d.ts.map +0 -1
- package/universal/index.js +0 -2032
- package/universal/renderers/html.renderer.d.ts +0 -36
- package/universal/renderers/html.renderer.d.ts.map +0 -1
- package/universal/renderers/index.d.ts +0 -112
- package/universal/renderers/index.d.ts.map +0 -1
- package/universal/renderers/markdown.renderer.d.ts +0 -33
- package/universal/renderers/markdown.renderer.d.ts.map +0 -1
- package/universal/renderers/mdx.renderer.d.ts +0 -38
- package/universal/renderers/mdx.renderer.d.ts.map +0 -1
- package/universal/renderers/react.renderer.d.ts +0 -46
- package/universal/renderers/react.renderer.d.ts.map +0 -1
- package/universal/runtime-builder.d.ts +0 -33
- package/universal/runtime-builder.d.ts.map +0 -1
- package/universal/store.d.ts +0 -135
- package/universal/store.d.ts.map +0 -1
- package/universal/types.d.ts +0 -199
- package/universal/types.d.ts.map +0 -1
- package/web-components/core/attribute-parser.d.ts +0 -82
- package/web-components/core/attribute-parser.d.ts.map +0 -1
- package/web-components/core/base-element.d.ts +0 -197
- package/web-components/core/base-element.d.ts.map +0 -1
- package/web-components/core/index.d.ts +0 -9
- package/web-components/core/index.d.ts.map +0 -1
- package/web-components/elements/fmcp-alert.d.ts +0 -46
- package/web-components/elements/fmcp-alert.d.ts.map +0 -1
- package/web-components/elements/fmcp-badge.d.ts +0 -47
- package/web-components/elements/fmcp-badge.d.ts.map +0 -1
- package/web-components/elements/fmcp-button.d.ts +0 -117
- package/web-components/elements/fmcp-button.d.ts.map +0 -1
- package/web-components/elements/fmcp-card.d.ts +0 -53
- package/web-components/elements/fmcp-card.d.ts.map +0 -1
- package/web-components/elements/fmcp-input.d.ts +0 -96
- package/web-components/elements/fmcp-input.d.ts.map +0 -1
- package/web-components/elements/fmcp-select.d.ts +0 -100
- package/web-components/elements/fmcp-select.d.ts.map +0 -1
- package/web-components/elements/index.d.ts +0 -13
- package/web-components/elements/index.d.ts.map +0 -1
- package/web-components/index.d.ts +0 -49
- package/web-components/index.d.ts.map +0 -1
- package/web-components/index.js +0 -2058
- package/web-components/register.d.ts +0 -57
- package/web-components/register.d.ts.map +0 -1
- package/web-components/types.d.ts +0 -122
- package/web-components/types.d.ts.map +0 -1
package/esm/bridge/index.mjs
CHANGED
|
@@ -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
|
+
};
|