@lobehub/ui 5.59.0 → 5.61.0
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/es/ActionIcon/style.mjs +8 -2
- package/es/ActionIcon/style.mjs.map +1 -1
- package/es/EmojiPicker/AvatarUploader.mjs +1 -1
- package/es/Form/components/FormSubmitFooter.mjs +1 -1
- package/es/awesome/Grainient/Grainient.d.mts +11 -0
- package/es/awesome/Grainient/Grainient.mjs +311 -0
- package/es/awesome/Grainient/Grainient.mjs.map +1 -0
- package/es/awesome/Grainient/index.d.mts +3 -0
- package/es/awesome/Grainient/style.mjs +25 -0
- package/es/awesome/Grainient/style.mjs.map +1 -0
- package/es/awesome/Grainient/type.d.mts +122 -0
- package/es/awesome/index.d.mts +4 -1
- package/es/awesome/index.mjs +2 -1
- package/es/base-ui/ActionIcon/style.mjs +8 -2
- package/es/base-ui/ActionIcon/style.mjs.map +1 -1
- package/es/base-ui/Input/style.d.mts +1 -1
- package/es/base-ui/Pagination/Pagination.mjs +158 -41
- package/es/base-ui/Pagination/Pagination.mjs.map +1 -1
- package/es/base-ui/Pagination/helpers.mjs +3 -3
- package/es/base-ui/Pagination/helpers.mjs.map +1 -1
- package/es/base-ui/Pagination/index.d.mts +2 -2
- package/es/base-ui/Pagination/style.mjs +39 -0
- package/es/base-ui/Pagination/style.mjs.map +1 -1
- package/es/base-ui/Pagination/type.d.mts +42 -4
- package/es/base-ui/QRCode/QRCode.mjs +1 -1
- package/es/base-ui/Table/Column.d.mts +9 -0
- package/es/base-ui/Table/Column.mjs +7 -0
- package/es/base-ui/Table/Column.mjs.map +1 -0
- package/es/base-ui/Table/ColumnGroup.d.mts +12 -0
- package/es/base-ui/Table/ColumnGroup.mjs +7 -0
- package/es/base-ui/Table/ColumnGroup.mjs.map +1 -0
- package/es/base-ui/Table/ExpandIcon.mjs +33 -0
- package/es/base-ui/Table/ExpandIcon.mjs.map +1 -0
- package/es/base-ui/Table/FilterDropdown.mjs +284 -0
- package/es/base-ui/Table/FilterDropdown.mjs.map +1 -0
- package/es/base-ui/Table/LoadingSkeleton.mjs +83 -0
- package/es/base-ui/Table/LoadingSkeleton.mjs.map +1 -0
- package/es/base-ui/Table/Table.d.mts +21 -3
- package/es/base-ui/Table/Table.mjs +444 -97
- package/es/base-ui/Table/Table.mjs.map +1 -1
- package/es/base-ui/Table/columnUtils.mjs +56 -0
- package/es/base-ui/Table/columnUtils.mjs.map +1 -0
- package/es/base-ui/Table/index.d.mts +4 -2
- package/es/base-ui/Table/selectionUtils.d.mts +9 -0
- package/es/base-ui/Table/selectionUtils.mjs +128 -0
- package/es/base-ui/Table/selectionUtils.mjs.map +1 -0
- package/es/base-ui/Table/semantic.mjs +55 -0
- package/es/base-ui/Table/semantic.mjs.map +1 -0
- package/es/base-ui/Table/style.mjs +801 -161
- package/es/base-ui/Table/style.mjs.map +1 -1
- package/es/base-ui/Table/type.d.mts +471 -37
- package/es/base-ui/Table/useBreakpoint.mjs +41 -0
- package/es/base-ui/Table/useBreakpoint.mjs.map +1 -0
- package/es/base-ui/Table/useFilter.mjs +64 -0
- package/es/base-ui/Table/useFilter.mjs.map +1 -0
- package/es/base-ui/Table/useSelection.mjs +421 -0
- package/es/base-ui/Table/useSelection.mjs.map +1 -0
- package/es/base-ui/Table/useSorter.mjs +152 -0
- package/es/base-ui/Table/useSorter.mjs.map +1 -0
- package/es/base-ui/Table/useTableState.mjs +82 -55
- package/es/base-ui/Table/useTableState.mjs.map +1 -1
- package/es/base-ui/index.d.mts +6 -4
- package/es/base-ui/index.mjs +9 -9
- package/es/chat/EditableMessageList/EditableMessageList.mjs +1 -1
- package/es/chat/MessageInput/MessageInput.mjs +1 -1
- package/es/chat/MessageModal/MessageModal.mjs +1 -1
- package/es/chat/TokenTag/TokenTag.mjs +1 -1
- package/es/dashboard/AuthLayout/Aside.d.mts +10 -0
- package/es/dashboard/AuthLayout/Aside.mjs +30 -0
- package/es/dashboard/AuthLayout/Aside.mjs.map +1 -0
- package/es/dashboard/AuthLayout/AuthLayout.d.mts +3 -1
- package/es/dashboard/AuthLayout/AuthLayout.mjs +93 -37
- package/es/dashboard/AuthLayout/AuthLayout.mjs.map +1 -1
- package/es/dashboard/AuthLayout/index.d.mts +3 -2
- package/es/dashboard/AuthLayout/style.mjs +120 -1
- package/es/dashboard/AuthLayout/style.mjs.map +1 -1
- package/es/dashboard/AuthLayout/type.d.mts +39 -3
- package/es/dashboard/AuthTools/AuthLocaleSwitch.d.mts +10 -0
- package/es/dashboard/AuthTools/AuthLocaleSwitch.mjs +32 -0
- package/es/dashboard/AuthTools/AuthLocaleSwitch.mjs.map +1 -0
- package/es/dashboard/AuthTools/AuthThemeSwitch.d.mts +10 -0
- package/es/dashboard/AuthTools/AuthThemeSwitch.mjs +59 -0
- package/es/dashboard/AuthTools/AuthThemeSwitch.mjs.map +1 -0
- package/es/dashboard/AuthTools/index.d.mts +4 -0
- package/es/dashboard/AuthTools/style.mjs +63 -0
- package/es/dashboard/AuthTools/style.mjs.map +1 -0
- package/es/dashboard/AuthTools/type.d.mts +30 -0
- package/es/dashboard/ConsoleNav/Skeleton.d.mts +15 -0
- package/es/dashboard/ConsoleNav/Skeleton.mjs +81 -0
- package/es/dashboard/ConsoleNav/Skeleton.mjs.map +1 -0
- package/es/dashboard/ConsoleNav/index.d.mts +3 -2
- package/es/dashboard/ConsoleNav/style.mjs +15 -0
- package/es/dashboard/ConsoleNav/style.mjs.map +1 -1
- package/es/dashboard/ConsoleNav/type.d.mts +14 -1
- package/es/dashboard/ConsoleShell/ConsoleShell.d.mts +1 -1
- package/es/dashboard/ConsoleShell/ConsoleShell.mjs +11 -3
- package/es/dashboard/ConsoleShell/ConsoleShell.mjs.map +1 -1
- package/es/dashboard/ConsoleShell/style.mjs +6 -0
- package/es/dashboard/ConsoleShell/style.mjs.map +1 -1
- package/es/dashboard/ConsoleShell/type.d.mts +9 -0
- package/es/dashboard/FilterSidebar/FilterSidebar.mjs +18 -17
- package/es/dashboard/FilterSidebar/FilterSidebar.mjs.map +1 -1
- package/es/dashboard/FilterStrip/FilterStrip.mjs +36 -32
- package/es/dashboard/FilterStrip/FilterStrip.mjs.map +1 -1
- package/es/dashboard/FilterStrip/style.mjs +2 -1
- package/es/dashboard/FilterStrip/style.mjs.map +1 -1
- package/es/dashboard/MetricStrip/MetricCell.mjs +81 -0
- package/es/dashboard/MetricStrip/MetricCell.mjs.map +1 -0
- package/es/dashboard/MetricStrip/MetricStrip.d.mts +5 -2
- package/es/dashboard/MetricStrip/MetricStrip.mjs +33 -62
- package/es/dashboard/MetricStrip/MetricStrip.mjs.map +1 -1
- package/es/dashboard/MetricStrip/style.mjs +49 -4
- package/es/dashboard/MetricStrip/style.mjs.map +1 -1
- package/es/dashboard/MetricStrip/type.d.mts +12 -0
- package/es/dashboard/PageSkeleton/PageSkeleton.mjs +20 -18
- package/es/dashboard/PageSkeleton/PageSkeleton.mjs.map +1 -1
- package/es/dashboard/PageSkeleton/style.mjs +1 -1
- package/es/dashboard/PageSkeleton/style.mjs.map +1 -1
- package/es/dashboard/PanelSurface/PanelSurface.mjs +4 -1
- package/es/dashboard/PanelSurface/PanelSurface.mjs.map +1 -1
- package/es/dashboard/StatCard/StatCard.d.mts +2 -1
- package/es/dashboard/StatCard/StatCard.mjs +24 -72
- package/es/dashboard/StatCard/StatCard.mjs.map +1 -1
- package/es/dashboard/StatCard/type.d.mts +16 -5
- package/es/dashboard/Surface/Surface.mjs +26 -10
- package/es/dashboard/Surface/Surface.mjs.map +1 -1
- package/es/dashboard/Surface/index.d.mts +2 -2
- package/es/dashboard/Surface/link.d.mts +6 -1
- package/es/dashboard/Surface/link.mjs +12 -1
- package/es/dashboard/Surface/link.mjs.map +1 -1
- package/es/dashboard/Surface/style.d.mts +22 -3
- package/es/dashboard/Surface/style.mjs +95 -26
- package/es/dashboard/Surface/style.mjs.map +1 -1
- package/es/dashboard/index.d.mts +10 -4
- package/es/dashboard/index.mjs +7 -3
- package/es/i18n/resources/en/index.d.mts +3 -2
- package/es/i18n/resources/en/index.mjs +4 -2
- package/es/i18n/resources/en/index.mjs.map +1 -1
- package/es/i18n/resources/en/table.d.mts +23 -0
- package/es/i18n/resources/en/table.mjs +24 -0
- package/es/i18n/resources/en/table.mjs.map +1 -0
- package/es/i18n/resources/zhCn/index.d.mts +3 -2
- package/es/i18n/resources/zhCn/index.mjs +4 -2
- package/es/i18n/resources/zhCn/index.mjs.map +1 -1
- package/es/i18n/resources/zhCn/table.d.mts +23 -0
- package/es/i18n/resources/zhCn/table.mjs +24 -0
- package/es/i18n/resources/zhCn/table.mjs.map +1 -0
- package/es/i18n/types.d.mts +2 -1
- package/es/index.mjs +2 -2
- package/package.json +2 -2
- package/es/base-ui/Table/FilterMenu.mjs +0 -45
- package/es/base-ui/Table/FilterMenu.mjs.map +0 -1
- package/es/base-ui/Table/TableBody.mjs +0 -59
- package/es/base-ui/Table/TableBody.mjs.map +0 -1
- package/es/base-ui/Table/TableHead.mjs +0 -50
- package/es/base-ui/Table/TableHead.mjs.map +0 -1
- package/es/base-ui/Table/features.mjs +0 -12
- package/es/base-ui/Table/features.mjs.map +0 -1
- package/es/base-ui/Table/fixedOffsets.mjs +0 -29
- package/es/base-ui/Table/fixedOffsets.mjs.map +0 -1
- package/es/base-ui/Table/toColumnDefs.mjs +0 -26
- package/es/base-ui/Table/toColumnDefs.mjs.map +0 -1
- package/es/dashboard/StatCard/style.mjs +0 -135
- package/es/dashboard/StatCard/style.mjs.map +0 -1
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { styles } from "./style.mjs";
|
|
3
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
+
import { cx } from "antd-style";
|
|
5
|
+
//#region src/dashboard/AuthLayout/Aside.tsx
|
|
6
|
+
/** Inset art panel for `AuthLayout`'s `aside` slot, with a scrim and copy at the bottom. */
|
|
7
|
+
function AuthLayoutAside({ background, className, kicker, line, ...rest }) {
|
|
8
|
+
return /* @__PURE__ */ jsx("div", {
|
|
9
|
+
className: cx(styles.asidePlate, className),
|
|
10
|
+
...rest,
|
|
11
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
12
|
+
className: styles.asidePanel,
|
|
13
|
+
children: [background, kicker || line ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("div", { className: styles.asideScrim }), /* @__PURE__ */ jsxs("div", {
|
|
14
|
+
className: styles.asideCopy,
|
|
15
|
+
children: [kicker ? /* @__PURE__ */ jsx("p", {
|
|
16
|
+
className: styles.asideKicker,
|
|
17
|
+
children: kicker
|
|
18
|
+
}) : null, line ? /* @__PURE__ */ jsx("p", {
|
|
19
|
+
className: styles.asideLine,
|
|
20
|
+
children: line
|
|
21
|
+
}) : null]
|
|
22
|
+
})] }) : null]
|
|
23
|
+
})
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
AuthLayoutAside.displayName = "AuthLayoutAside";
|
|
27
|
+
//#endregion
|
|
28
|
+
export { AuthLayoutAside as default };
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=Aside.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Aside.mjs","names":[],"sources":["../../../src/dashboard/AuthLayout/Aside.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\n\nimport { styles } from './style';\nimport type { AuthLayoutAsideProps } from './type';\n\n/** Inset art panel for `AuthLayout`'s `aside` slot, with a scrim and copy at the bottom. */\nfunction AuthLayoutAside({ background, className, kicker, line, ...rest }: AuthLayoutAsideProps) {\n return (\n <div className={cx(styles.asidePlate, className)} {...rest}>\n <div className={styles.asidePanel}>\n {background}\n {kicker || line ? (\n <>\n <div className={styles.asideScrim} />\n <div className={styles.asideCopy}>\n {kicker ? <p className={styles.asideKicker}>{kicker}</p> : null}\n {line ? <p className={styles.asideLine}>{line}</p> : null}\n </div>\n </>\n ) : null}\n </div>\n </div>\n );\n}\n\nAuthLayoutAside.displayName = 'AuthLayoutAside';\n\nexport default AuthLayoutAside;\n"],"mappings":";;;;;;AAQA,SAAS,gBAAgB,EAAE,YAAY,WAAW,QAAQ,MAAM,GAAG,QAA8B;CAC/F,OACE,oBAAC,OAAD;EAAK,WAAW,GAAG,OAAO,YAAY,SAAS;EAAG,GAAI;EACpD,UAAA,qBAAC,OAAD;GAAK,WAAW,OAAO;GAAvB,UAAA,CACG,YACA,UAAU,OACT,qBAAA,UAAA,EAAA,UAAA,CACE,oBAAC,OAAD,EAAK,WAAW,OAAO,WAAa,CAAA,GACpC,qBAAC,OAAD;IAAK,WAAW,OAAO;IAAvB,UAAA,CACG,SAAS,oBAAC,KAAD;KAAG,WAAW,OAAO;KAAc,UAAA;IAAU,CAAA,IAAI,MAC1D,OAAO,oBAAC,KAAD;KAAG,WAAW,OAAO;KAAY,UAAA;IAAQ,CAAA,IAAI,IAClD;GACL,CAAA,CAAA,EAAA,CAAA,IACA,IACD;;CACF,CAAA;AAET;AAEA,gBAAgB,cAAc"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { AuthLayoutProps } from "./type.mjs";
|
|
2
|
+
import AuthLayoutAside from "./Aside.mjs";
|
|
2
3
|
//#region src/dashboard/AuthLayout/AuthLayout.d.ts
|
|
3
|
-
declare function AuthLayout({ aside, brand, children, className, description, title, tools, ...rest }: AuthLayoutProps): import("react").JSX.Element;
|
|
4
|
+
declare function AuthLayout({ alert, aside, background, brand, card, children, className, description, footer, loading, logo, title, tools, variant, ...rest }: AuthLayoutProps): import("react").JSX.Element;
|
|
4
5
|
declare namespace AuthLayout {
|
|
5
6
|
var displayName: string;
|
|
7
|
+
var Aside: typeof AuthLayoutAside;
|
|
6
8
|
}
|
|
7
9
|
//#endregion
|
|
8
10
|
export { AuthLayout as default };
|
|
@@ -1,53 +1,109 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import FlexBasic_default from "../../Flex/FlexBasic.mjs";
|
|
3
|
+
import Skeleton from "../../base-ui/Skeleton/index.mjs";
|
|
3
4
|
import Text from "../../base-ui/Text/Text.mjs";
|
|
4
|
-
import { styles } from "
|
|
5
|
-
import
|
|
5
|
+
import { styles } from "./style.mjs";
|
|
6
|
+
import AuthLayoutAside from "./Aside.mjs";
|
|
7
|
+
import { useSurfaceCardClassName } from "../Surface/link.mjs";
|
|
8
|
+
import { isValidElement } from "react";
|
|
6
9
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
10
|
import { cx } from "antd-style";
|
|
8
11
|
//#region src/dashboard/AuthLayout/AuthLayout.tsx
|
|
9
|
-
|
|
12
|
+
const FormSkeleton = () => /* @__PURE__ */ jsxs(FlexBasic_default, {
|
|
13
|
+
"aria-hidden": true,
|
|
14
|
+
gap: 12,
|
|
15
|
+
children: [
|
|
16
|
+
/* @__PURE__ */ jsx(Skeleton, {
|
|
17
|
+
height: 36,
|
|
18
|
+
radius: 8,
|
|
19
|
+
width: "100%"
|
|
20
|
+
}),
|
|
21
|
+
/* @__PURE__ */ jsx(Skeleton, {
|
|
22
|
+
height: 36,
|
|
23
|
+
radius: 8,
|
|
24
|
+
width: "100%"
|
|
25
|
+
}),
|
|
26
|
+
/* @__PURE__ */ jsx(Skeleton, {
|
|
27
|
+
height: 36,
|
|
28
|
+
radius: 8,
|
|
29
|
+
width: "100%"
|
|
30
|
+
})
|
|
31
|
+
]
|
|
32
|
+
});
|
|
33
|
+
function AuthLayout({ alert, aside, background = "plain", brand, card = true, children, className, description, footer, loading, logo, title, tools, variant = "default", ...rest }) {
|
|
34
|
+
const cardClassName = useSurfaceCardClassName();
|
|
10
35
|
const split = Boolean(aside);
|
|
36
|
+
const art = isValidElement(background) ? background : null;
|
|
37
|
+
const heading = title === void 0 || title === null ? null : typeof title === "string" ? /* @__PURE__ */ jsx(Text, {
|
|
38
|
+
as: "h1",
|
|
39
|
+
className: styles.title,
|
|
40
|
+
weight: "bold",
|
|
41
|
+
children: title
|
|
42
|
+
}) : /* @__PURE__ */ jsx("div", {
|
|
43
|
+
className: styles.titleNode,
|
|
44
|
+
children: title
|
|
45
|
+
});
|
|
46
|
+
const intro = logo || heading || description ? /* @__PURE__ */ jsxs(FlexBasic_default, {
|
|
47
|
+
gap: 8,
|
|
48
|
+
children: [
|
|
49
|
+
logo ? /* @__PURE__ */ jsx("div", {
|
|
50
|
+
className: styles.logo,
|
|
51
|
+
children: logo
|
|
52
|
+
}) : null,
|
|
53
|
+
heading,
|
|
54
|
+
description ? /* @__PURE__ */ jsx(Text, {
|
|
55
|
+
className: styles.description,
|
|
56
|
+
type: "secondary",
|
|
57
|
+
children: description
|
|
58
|
+
}) : null
|
|
59
|
+
]
|
|
60
|
+
}) : null;
|
|
11
61
|
return /* @__PURE__ */ jsxs("div", {
|
|
12
|
-
className:
|
|
62
|
+
className: cx(styles.page, background === "grid" && styles.grid, className),
|
|
63
|
+
"data-auth-layout": "",
|
|
13
64
|
...rest,
|
|
14
|
-
children: [
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
65
|
+
children: [
|
|
66
|
+
art ? /* @__PURE__ */ jsx("div", {
|
|
67
|
+
className: styles.backdrop,
|
|
68
|
+
children: art
|
|
69
|
+
}) : null,
|
|
70
|
+
/* @__PURE__ */ jsxs("header", {
|
|
71
|
+
className: styles.header,
|
|
72
|
+
children: [brand, tools ? /* @__PURE__ */ jsx("div", {
|
|
73
|
+
className: styles.tools,
|
|
74
|
+
children: tools
|
|
75
|
+
}) : null]
|
|
76
|
+
}),
|
|
77
|
+
/* @__PURE__ */ jsx("main", {
|
|
78
|
+
className: styles.main,
|
|
79
|
+
children: card ? /* @__PURE__ */ jsx("div", {
|
|
80
|
+
"data-auth-card": "",
|
|
81
|
+
className: cx(styles.lift, split && styles.liftSplit, cardClassName, variant === "elevated" && styles.elevated),
|
|
82
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
83
|
+
className: cx(styles.frame, split && styles.split),
|
|
84
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
85
|
+
className: cx(styles.form, split && styles.formSplit),
|
|
86
|
+
children: [
|
|
87
|
+
intro,
|
|
88
|
+
alert,
|
|
89
|
+
loading ? /* @__PURE__ */ jsx(FormSkeleton, {}) : children,
|
|
90
|
+
footer ? /* @__PURE__ */ jsx("div", {
|
|
91
|
+
className: styles.footer,
|
|
92
|
+
children: footer
|
|
93
|
+
}) : null
|
|
94
|
+
]
|
|
95
|
+
}), aside ? /* @__PURE__ */ jsx("div", {
|
|
96
|
+
className: styles.aside,
|
|
97
|
+
children: aside
|
|
98
|
+
}) : null]
|
|
99
|
+
})
|
|
100
|
+
}) : children
|
|
46
101
|
})
|
|
47
|
-
|
|
102
|
+
]
|
|
48
103
|
});
|
|
49
104
|
}
|
|
50
105
|
AuthLayout.displayName = "AuthLayout";
|
|
106
|
+
AuthLayout.Aside = AuthLayoutAside;
|
|
51
107
|
//#endregion
|
|
52
108
|
export { AuthLayout as default };
|
|
53
109
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthLayout.mjs","names":["
|
|
1
|
+
{"version":3,"file":"AuthLayout.mjs","names":["Flexbox","Aside"],"sources":["../../../src/dashboard/AuthLayout/AuthLayout.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { isValidElement } from 'react';\n\nimport Skeleton from '@/base-ui/Skeleton';\nimport Text from '@/base-ui/Text';\nimport { Flexbox } from '@/Flex';\n\nimport { useSurfaceCardClassName } from '../Surface/link';\nimport Aside from './Aside';\nimport { styles } from './style';\nimport type { AuthLayoutProps } from './type';\n\nconst FormSkeleton = () => (\n <Flexbox aria-hidden gap={12}>\n <Skeleton height={36} radius={8} width=\"100%\" />\n <Skeleton height={36} radius={8} width=\"100%\" />\n <Skeleton height={36} radius={8} width=\"100%\" />\n </Flexbox>\n);\n\nfunction AuthLayout({\n alert,\n aside,\n background = 'plain',\n brand,\n card = true,\n children,\n className,\n description,\n footer,\n loading,\n logo,\n title,\n tools,\n variant = 'default',\n ...rest\n}: AuthLayoutProps) {\n const cardClassName = useSurfaceCardClassName();\n const split = Boolean(aside);\n const art = isValidElement(background) ? background : null;\n const heading =\n title === undefined || title === null ? null : typeof title === 'string' ? (\n <Text as=\"h1\" className={styles.title} weight=\"bold\">\n {title}\n </Text>\n ) : (\n <div className={styles.titleNode}>{title}</div>\n );\n const intro =\n logo || heading || description ? (\n <Flexbox gap={8}>\n {logo ? <div className={styles.logo}>{logo}</div> : null}\n {heading}\n {description ? (\n <Text className={styles.description} type=\"secondary\">\n {description}\n </Text>\n ) : null}\n </Flexbox>\n ) : null;\n\n return (\n <div\n className={cx(styles.page, background === 'grid' && styles.grid, className)}\n data-auth-layout=\"\"\n {...rest}\n >\n {art ? <div className={styles.backdrop}>{art}</div> : null}\n <header className={styles.header}>\n {brand}\n {tools ? <div className={styles.tools}>{tools}</div> : null}\n </header>\n <main className={styles.main}>\n {card ? (\n <div\n data-auth-card=\"\"\n className={cx(\n styles.lift,\n split && styles.liftSplit,\n cardClassName,\n variant === 'elevated' && styles.elevated,\n )}\n >\n <div className={cx(styles.frame, split && styles.split)}>\n <div className={cx(styles.form, split && styles.formSplit)}>\n {intro}\n {alert}\n {loading ? <FormSkeleton /> : children}\n {footer ? <div className={styles.footer}>{footer}</div> : null}\n </div>\n {aside ? <div className={styles.aside}>{aside}</div> : null}\n </div>\n </div>\n ) : (\n children\n )}\n </main>\n </div>\n );\n}\n\nAuthLayout.displayName = 'AuthLayout';\nAuthLayout.Aside = Aside;\n\nexport default AuthLayout;\n"],"mappings":";;;;;;;;;;;AAcA,MAAM,qBACJ,qBAACA,mBAAD;CAAS,eAAA;CAAY,KAAK;CAA1B,UAAA;EACE,oBAAC,UAAD;GAAU,QAAQ;GAAI,QAAQ;GAAG,OAAM;EAAQ,CAAA;EAC/C,oBAAC,UAAD;GAAU,QAAQ;GAAI,QAAQ;GAAG,OAAM;EAAQ,CAAA;EAC/C,oBAAC,UAAD;GAAU,QAAQ;GAAI,QAAQ;GAAG,OAAM;EAAQ,CAAA;CACxC;;AAGX,SAAS,WAAW,EAClB,OACA,OACA,aAAa,SACb,OACA,OAAO,MACP,UACA,WACA,aACA,QACA,SACA,MACA,OACA,OACA,UAAU,WACV,GAAG,QACe;CAClB,MAAM,gBAAgB,wBAAwB;CAC9C,MAAM,QAAQ,QAAQ,KAAK;CAC3B,MAAM,MAAM,eAAe,UAAU,IAAI,aAAa;CACtD,MAAM,UACJ,UAAU,KAAA,KAAa,UAAU,OAAO,OAAO,OAAO,UAAU,WAC9D,oBAAC,MAAD;EAAM,IAAG;EAAK,WAAW,OAAO;EAAO,QAAO;EAC3C,UAAA;CACG,CAAA,IAEN,oBAAC,OAAD;EAAK,WAAW,OAAO;EAAY,UAAA;CAAW,CAAA;CAElD,MAAM,QACJ,QAAQ,WAAW,cACjB,qBAACA,mBAAD;EAAS,KAAK;EAAd,UAAA;GACG,OAAO,oBAAC,OAAD;IAAK,WAAW,OAAO;IAAO,UAAA;GAAU,CAAA,IAAI;GACnD;GACA,cACC,oBAAC,MAAD;IAAM,WAAW,OAAO;IAAa,MAAK;IACvC,UAAA;GACG,CAAA,IACJ;EACG;CACP,CAAA,IAAA;CAEN,OACE,qBAAC,OAAD;EACE,WAAW,GAAG,OAAO,MAAM,eAAe,UAAU,OAAO,MAAM,SAAS;EAC1E,oBAAiB;EACjB,GAAI;EAHN,UAAA;GAKG,MAAM,oBAAC,OAAD;IAAK,WAAW,OAAO;IAAW,UAAA;GAAS,CAAA,IAAI;GACtD,qBAAC,UAAD;IAAQ,WAAW,OAAO;IAA1B,UAAA,CACG,OACA,QAAQ,oBAAC,OAAD;KAAK,WAAW,OAAO;KAAQ,UAAA;IAAW,CAAA,IAAI,IACjD;;GACR,oBAAC,QAAD;IAAM,WAAW,OAAO;IACrB,UAAA,OACC,oBAAC,OAAD;KACE,kBAAe;KACf,WAAW,GACT,OAAO,MACP,SAAS,OAAO,WAChB,eACA,YAAY,cAAc,OAAO,QACnC;KAEA,UAAA,qBAAC,OAAD;MAAK,WAAW,GAAG,OAAO,OAAO,SAAS,OAAO,KAAK;MAAtD,UAAA,CACE,qBAAC,OAAD;OAAK,WAAW,GAAG,OAAO,MAAM,SAAS,OAAO,SAAS;OAAzD,UAAA;QACG;QACA;QACA,UAAU,oBAAC,cAAD,CAAe,CAAA,IAAI;QAC7B,SAAS,oBAAC,OAAD;SAAK,WAAW,OAAO;SAAS,UAAA;QAAY,CAAA,IAAI;OACvD;MACJ,CAAA,GAAA,QAAQ,oBAAC,OAAD;OAAK,WAAW,OAAO;OAAQ,UAAA;MAAW,CAAA,IAAI,IACpD;;IACF,CAAA,IAEL;GAEE,CAAA;EACH;;AAET;AAEA,WAAW,cAAc;AACzB,WAAW,QAAQC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import { AuthLayoutProps } from "./type.mjs";
|
|
1
|
+
import { AuthLayoutAsideProps, AuthLayoutBackground, AuthLayoutProps, AuthLayoutVariant } from "./type.mjs";
|
|
2
|
+
import AuthLayoutAside from "./Aside.mjs";
|
|
2
3
|
import AuthLayout from "./AuthLayout.mjs";
|
|
3
|
-
export { type AuthLayoutProps, AuthLayout as default };
|
|
4
|
+
export { AuthLayoutAside, type AuthLayoutAsideProps, type AuthLayoutBackground, type AuthLayoutProps, type AuthLayoutVariant, AuthLayout as default };
|
|
@@ -16,10 +16,91 @@ const styles = createStaticStyles(({ css, cssVar, responsive }) => ({
|
|
|
16
16
|
${responsive.laptop} {
|
|
17
17
|
display: none;
|
|
18
18
|
}
|
|
19
|
+
`,
|
|
20
|
+
asideCopy: css`
|
|
21
|
+
pointer-events: none;
|
|
22
|
+
|
|
23
|
+
position: absolute;
|
|
24
|
+
z-index: 2;
|
|
25
|
+
inset-block-end: 64px;
|
|
26
|
+
inset-inline: 40px;
|
|
27
|
+
|
|
28
|
+
display: flex;
|
|
29
|
+
flex-direction: column;
|
|
30
|
+
gap: 8px;
|
|
31
|
+
`,
|
|
32
|
+
asideKicker: css`
|
|
33
|
+
margin: 0;
|
|
34
|
+
|
|
35
|
+
font-size: ${cssVar.fontSize};
|
|
36
|
+
line-height: 1.4;
|
|
37
|
+
color: #fff;
|
|
38
|
+
|
|
39
|
+
opacity: 0.82;
|
|
40
|
+
`,
|
|
41
|
+
asideLine: css`
|
|
42
|
+
margin: 0;
|
|
43
|
+
|
|
44
|
+
font-size: ${cssVar.fontSizeHeading2};
|
|
45
|
+
font-weight: 600;
|
|
46
|
+
line-height: 1.25;
|
|
47
|
+
color: #fff;
|
|
48
|
+
letter-spacing: -0.02em;
|
|
49
|
+
`,
|
|
50
|
+
asidePanel: css`
|
|
51
|
+
position: absolute;
|
|
52
|
+
inset: 8px;
|
|
53
|
+
|
|
54
|
+
overflow: hidden;
|
|
55
|
+
|
|
56
|
+
border-radius: 20px;
|
|
57
|
+
|
|
58
|
+
background: linear-gradient(165deg, #ff9ffc 0%, #5227ff 46%, #b497cf 100%);
|
|
59
|
+
`,
|
|
60
|
+
asidePlate: css`
|
|
61
|
+
position: absolute;
|
|
62
|
+
inset: 0;
|
|
63
|
+
background: var(--lobe-surface-bg-solid, ${cssVar.colorBgContainer});
|
|
64
|
+
`,
|
|
65
|
+
asideScrim: css`
|
|
66
|
+
pointer-events: none;
|
|
67
|
+
|
|
68
|
+
position: absolute;
|
|
69
|
+
z-index: 1;
|
|
70
|
+
inset-block-end: 0;
|
|
71
|
+
inset-inline: 0;
|
|
72
|
+
|
|
73
|
+
block-size: 58%;
|
|
74
|
+
|
|
75
|
+
background: linear-gradient(to top, rgb(24 10 48 / 42%), transparent);
|
|
76
|
+
`,
|
|
77
|
+
backdrop: css`
|
|
78
|
+
pointer-events: none;
|
|
79
|
+
position: absolute;
|
|
80
|
+
z-index: 0;
|
|
81
|
+
inset: 0;
|
|
19
82
|
`,
|
|
20
83
|
description: css`
|
|
21
84
|
line-height: 1.6;
|
|
22
85
|
color: ${cssVar.colorTextSecondary};
|
|
86
|
+
`,
|
|
87
|
+
elevated: css`
|
|
88
|
+
&&&,
|
|
89
|
+
&&&:hover {
|
|
90
|
+
border-radius: 28px;
|
|
91
|
+
}
|
|
92
|
+
`,
|
|
93
|
+
footer: css`
|
|
94
|
+
margin: 0;
|
|
95
|
+
font-size: ${cssVar.fontSizeSM};
|
|
96
|
+
line-height: 1.6;
|
|
97
|
+
color: ${cssVar.colorTextSecondary};
|
|
98
|
+
|
|
99
|
+
a {
|
|
100
|
+
font-weight: 600;
|
|
101
|
+
color: ${cssVar.colorLink};
|
|
102
|
+
text-decoration: none;
|
|
103
|
+
}
|
|
23
104
|
`,
|
|
24
105
|
form: css`
|
|
25
106
|
display: flex;
|
|
@@ -56,8 +137,28 @@ const styles = createStaticStyles(({ css, cssVar, responsive }) => ({
|
|
|
56
137
|
inline-size: 100%;
|
|
57
138
|
min-inline-size: 0;
|
|
58
139
|
border-radius: inherit;
|
|
140
|
+
`,
|
|
141
|
+
grid: css`
|
|
142
|
+
&& {
|
|
143
|
+
background-color: color-mix(in srgb, ${cssVar.colorBgLayout}, ${cssVar.colorBgElevated} 70%);
|
|
144
|
+
background-image:
|
|
145
|
+
linear-gradient(
|
|
146
|
+
color-mix(in srgb, ${cssVar.colorText} 5%, transparent) 1px,
|
|
147
|
+
transparent 1px
|
|
148
|
+
),
|
|
149
|
+
linear-gradient(
|
|
150
|
+
90deg,
|
|
151
|
+
color-mix(in srgb, ${cssVar.colorText} 5%, transparent) 1px,
|
|
152
|
+
transparent 1px
|
|
153
|
+
);
|
|
154
|
+
background-position: -1px -1px;
|
|
155
|
+
background-size: 32px 32px;
|
|
156
|
+
}
|
|
59
157
|
`,
|
|
60
158
|
header: css`
|
|
159
|
+
position: relative;
|
|
160
|
+
z-index: 1;
|
|
161
|
+
|
|
61
162
|
display: flex;
|
|
62
163
|
flex: none;
|
|
63
164
|
gap: 12px;
|
|
@@ -68,6 +169,7 @@ const styles = createStaticStyles(({ css, cssVar, responsive }) => ({
|
|
|
68
169
|
padding-inline: 16px;
|
|
69
170
|
`,
|
|
70
171
|
lift: css`
|
|
172
|
+
position: relative;
|
|
71
173
|
display: flex;
|
|
72
174
|
inline-size: min(440px, 100%);
|
|
73
175
|
`,
|
|
@@ -77,8 +179,15 @@ const styles = createStaticStyles(({ css, cssVar, responsive }) => ({
|
|
|
77
179
|
${responsive.laptop} {
|
|
78
180
|
inline-size: min(440px, 100%);
|
|
79
181
|
}
|
|
182
|
+
`,
|
|
183
|
+
logo: css`
|
|
184
|
+
display: flex;
|
|
185
|
+
margin-block-end: 8px;
|
|
80
186
|
`,
|
|
81
187
|
main: css`
|
|
188
|
+
position: relative;
|
|
189
|
+
z-index: 1;
|
|
190
|
+
|
|
82
191
|
display: grid;
|
|
83
192
|
flex: 1;
|
|
84
193
|
place-items: center;
|
|
@@ -87,11 +196,17 @@ const styles = createStaticStyles(({ css, cssVar, responsive }) => ({
|
|
|
87
196
|
padding-inline: 16px;
|
|
88
197
|
`,
|
|
89
198
|
page: css`
|
|
199
|
+
position: relative;
|
|
200
|
+
|
|
201
|
+
overflow: auto;
|
|
90
202
|
display: flex;
|
|
203
|
+
flex: 1;
|
|
91
204
|
flex-direction: column;
|
|
92
205
|
|
|
206
|
+
box-sizing: border-box;
|
|
207
|
+
inline-size: 100%;
|
|
93
208
|
block-size: 100%;
|
|
94
|
-
min-block-size:
|
|
209
|
+
min-block-size: 100dvh;
|
|
95
210
|
|
|
96
211
|
background: ${cssVar.colorBgLayout};
|
|
97
212
|
`,
|
|
@@ -106,6 +221,10 @@ const styles = createStaticStyles(({ css, cssVar, responsive }) => ({
|
|
|
106
221
|
margin: 0;
|
|
107
222
|
font-size: ${cssVar.fontSizeHeading3};
|
|
108
223
|
line-height: ${cssVar.lineHeightHeading3};
|
|
224
|
+
`,
|
|
225
|
+
titleNode: css`
|
|
226
|
+
display: flex;
|
|
227
|
+
min-inline-size: 0;
|
|
109
228
|
`,
|
|
110
229
|
tools: css`
|
|
111
230
|
display: flex;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/dashboard/AuthLayout/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css, cssVar, responsive }) => ({\n aside: css`\n position: relative;\n\n flex: none;\n\n box-sizing: border-box;\n inline-size: 50%;\n min-inline-size: 0;\n max-inline-size: 50%;\n\n background: ${cssVar.colorFillSecondary};\n\n ${responsive.laptop} {\n display: none;\n }\n `,\n description: css`\n line-height: 1.6;\n color: ${cssVar.colorTextSecondary};\n `,\n form: css`\n display: flex;\n flex: none;\n flex-direction: column;\n gap: 24px;\n justify-content: center;\n\n box-sizing: border-box;\n inline-size: 100%;\n min-inline-size: 0;\n padding-block: 40px;\n padding-inline: 36px;\n\n ${responsive.laptop} {\n padding-block: 28px;\n padding-inline: 24px;\n }\n `,\n formSplit: css`\n inline-size: 50%;\n max-inline-size: 50%;\n\n ${responsive.laptop} {\n inline-size: 100%;\n max-inline-size: 100%;\n }\n `,\n frame: css`\n overflow: hidden;\n display: flex;\n flex: none;\n\n inline-size: 100%;\n min-inline-size: 0;\n border-radius: inherit;\n `,\n header: css`\n display: flex;\n flex: none;\n gap: 12px;\n align-items: center;\n justify-content: space-between;\n\n block-size: 56px;\n padding-inline: 16px;\n `,\n lift: css`\n display: flex;\n inline-size: min(440px, 100%);\n `,\n liftSplit: css`\n inline-size: min(880px, 100%);\n\n ${responsive.laptop} {\n inline-size: min(440px, 100%);\n }\n `,\n main: css`\n display: grid;\n flex: 1;\n place-items: center;\n\n padding-block: 24px 48px;\n padding-inline: 16px;\n `,\n page: css`\n display: flex;\n flex-direction: column;\n\n block-size: 100%;\n min-block-size:
|
|
1
|
+
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/dashboard/AuthLayout/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css, cssVar, responsive }) => ({\n aside: css`\n position: relative;\n\n flex: none;\n\n box-sizing: border-box;\n inline-size: 50%;\n min-inline-size: 0;\n max-inline-size: 50%;\n\n background: ${cssVar.colorFillSecondary};\n\n ${responsive.laptop} {\n display: none;\n }\n `,\n asideCopy: css`\n pointer-events: none;\n\n position: absolute;\n z-index: 2;\n inset-block-end: 64px;\n inset-inline: 40px;\n\n display: flex;\n flex-direction: column;\n gap: 8px;\n `,\n asideKicker: css`\n margin: 0;\n\n font-size: ${cssVar.fontSize};\n line-height: 1.4;\n color: #fff;\n\n opacity: 0.82;\n `,\n asideLine: css`\n margin: 0;\n\n font-size: ${cssVar.fontSizeHeading2};\n font-weight: 600;\n line-height: 1.25;\n color: #fff;\n letter-spacing: -0.02em;\n `,\n asidePanel: css`\n position: absolute;\n inset: 8px;\n\n overflow: hidden;\n\n border-radius: 20px;\n\n background: linear-gradient(165deg, #ff9ffc 0%, #5227ff 46%, #b497cf 100%);\n `,\n asidePlate: css`\n position: absolute;\n inset: 0;\n background: var(--lobe-surface-bg-solid, ${cssVar.colorBgContainer});\n `,\n asideScrim: css`\n pointer-events: none;\n\n position: absolute;\n z-index: 1;\n inset-block-end: 0;\n inset-inline: 0;\n\n block-size: 58%;\n\n background: linear-gradient(to top, rgb(24 10 48 / 42%), transparent);\n `,\n backdrop: css`\n pointer-events: none;\n position: absolute;\n z-index: 0;\n inset: 0;\n `,\n description: css`\n line-height: 1.6;\n color: ${cssVar.colorTextSecondary};\n `,\n elevated: css`\n &&&,\n &&&:hover {\n border-radius: 28px;\n }\n `,\n footer: css`\n margin: 0;\n font-size: ${cssVar.fontSizeSM};\n line-height: 1.6;\n color: ${cssVar.colorTextSecondary};\n\n a {\n font-weight: 600;\n color: ${cssVar.colorLink};\n text-decoration: none;\n }\n `,\n form: css`\n display: flex;\n flex: none;\n flex-direction: column;\n gap: 24px;\n justify-content: center;\n\n box-sizing: border-box;\n inline-size: 100%;\n min-inline-size: 0;\n padding-block: 40px;\n padding-inline: 36px;\n\n ${responsive.laptop} {\n padding-block: 28px;\n padding-inline: 24px;\n }\n `,\n formSplit: css`\n inline-size: 50%;\n max-inline-size: 50%;\n\n ${responsive.laptop} {\n inline-size: 100%;\n max-inline-size: 100%;\n }\n `,\n frame: css`\n overflow: hidden;\n display: flex;\n flex: none;\n\n inline-size: 100%;\n min-inline-size: 0;\n border-radius: inherit;\n `,\n grid: css`\n && {\n background-color: color-mix(in srgb, ${cssVar.colorBgLayout}, ${cssVar.colorBgElevated} 70%);\n background-image:\n linear-gradient(\n color-mix(in srgb, ${cssVar.colorText} 5%, transparent) 1px,\n transparent 1px\n ),\n linear-gradient(\n 90deg,\n color-mix(in srgb, ${cssVar.colorText} 5%, transparent) 1px,\n transparent 1px\n );\n background-position: -1px -1px;\n background-size: 32px 32px;\n }\n `,\n header: css`\n position: relative;\n z-index: 1;\n\n display: flex;\n flex: none;\n gap: 12px;\n align-items: center;\n justify-content: space-between;\n\n block-size: 56px;\n padding-inline: 16px;\n `,\n lift: css`\n position: relative;\n display: flex;\n inline-size: min(440px, 100%);\n `,\n liftSplit: css`\n inline-size: min(880px, 100%);\n\n ${responsive.laptop} {\n inline-size: min(440px, 100%);\n }\n `,\n logo: css`\n display: flex;\n margin-block-end: 8px;\n `,\n main: css`\n position: relative;\n z-index: 1;\n\n display: grid;\n flex: 1;\n place-items: center;\n\n padding-block: 24px 48px;\n padding-inline: 16px;\n `,\n page: css`\n position: relative;\n\n overflow: auto;\n display: flex;\n flex: 1;\n flex-direction: column;\n\n box-sizing: border-box;\n inline-size: 100%;\n block-size: 100%;\n min-block-size: 100dvh;\n\n background: ${cssVar.colorBgLayout};\n `,\n split: css`\n min-block-size: 520px;\n\n ${responsive.laptop} {\n min-block-size: 0;\n }\n `,\n title: css`\n margin: 0;\n font-size: ${cssVar.fontSizeHeading3};\n line-height: ${cssVar.lineHeightHeading3};\n `,\n titleNode: css`\n display: flex;\n min-inline-size: 0;\n `,\n tools: css`\n display: flex;\n gap: 6px;\n align-items: center;\n margin-inline-start: auto;\n `,\n}));\n"],"mappings":";;AAEA,MAAa,SAAS,oBAAoB,EAAE,KAAK,QAAQ,kBAAkB;CACzE,OAAO,GAAG;;;;;;;;;;kBAUM,OAAO,mBAAmB;;MAEtC,WAAW,OAAO;;;;CAItB,WAAW,GAAG;;;;;;;;;;;;CAYd,aAAa,GAAG;;;iBAGD,OAAO,SAAS;;;;;;CAM/B,WAAW,GAAG;;;iBAGC,OAAO,iBAAiB;;;;;;CAMvC,YAAY,GAAG;;;;;;;;;;CAUf,YAAY,GAAG;;;+CAG8B,OAAO,iBAAiB;;CAErE,YAAY,GAAG;;;;;;;;;;;;CAYf,UAAU,GAAG;;;;;;CAMb,aAAa,GAAG;;aAEL,OAAO,mBAAmB;;CAErC,UAAU,GAAG;;;;;;CAMb,QAAQ,GAAG;;iBAEI,OAAO,WAAW;;aAEtB,OAAO,mBAAmB;;;;eAIxB,OAAO,UAAU;;;;CAI9B,MAAM,GAAG;;;;;;;;;;;;;MAaL,WAAW,OAAO;;;;;CAKtB,WAAW,GAAG;;;;MAIV,WAAW,OAAO;;;;;CAKtB,OAAO,GAAG;;;;;;;;;CASV,MAAM,GAAG;;6CAEkC,OAAO,cAAc,IAAI,OAAO,gBAAgB;;;+BAG9D,OAAO,UAAU;;;;;+BAKjB,OAAO,UAAU;;;;;;;CAO9C,QAAQ,GAAG;;;;;;;;;;;;;CAaX,MAAM,GAAG;;;;;CAKT,WAAW,GAAG;;;MAGV,WAAW,OAAO;;;;CAItB,MAAM,GAAG;;;;CAIT,MAAM,GAAG;;;;;;;;;;;CAWT,MAAM,GAAG;;;;;;;;;;;;;kBAaO,OAAO,cAAc;;CAErC,OAAO,GAAG;;;MAGN,WAAW,OAAO;;;;CAItB,OAAO,GAAG;;iBAEK,OAAO,iBAAiB;mBACtB,OAAO,mBAAmB;;CAE3C,WAAW,GAAG;;;;CAId,OAAO,GAAG;;;;;;AAMZ,EAAE"}
|
|
@@ -1,16 +1,52 @@
|
|
|
1
1
|
import { HTMLAttributes, ReactNode } from "react";
|
|
2
2
|
//#region src/dashboard/AuthLayout/type.d.ts
|
|
3
|
+
type AuthLayoutBackground = 'plain' | 'grid';
|
|
4
|
+
type AuthLayoutVariant = 'default' | 'elevated';
|
|
3
5
|
interface AuthLayoutProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
|
|
4
|
-
/**
|
|
6
|
+
/** Message shown above the form, such as an error `Alert`. */
|
|
7
|
+
alert?: ReactNode;
|
|
8
|
+
/** Optional panel beside the form. Hidden below the laptop breakpoint. See `AuthLayout.Aside`. */
|
|
5
9
|
aside?: ReactNode;
|
|
10
|
+
/**
|
|
11
|
+
* Page backdrop. `grid` draws a 32px line grid over a mix of the layout and elevated colors.
|
|
12
|
+
* Any other node is rendered behind the content.
|
|
13
|
+
* @default 'plain'
|
|
14
|
+
*/
|
|
15
|
+
background?: AuthLayoutBackground | ReactNode;
|
|
6
16
|
/** Home mark rendered in the corner. Pass your own logo. */
|
|
7
17
|
brand?: ReactNode;
|
|
18
|
+
/**
|
|
19
|
+
* Render the sign-in card. Set `false` to keep only the header, tools and backdrop,
|
|
20
|
+
* for status pages that center their own content.
|
|
21
|
+
* @default true
|
|
22
|
+
*/
|
|
23
|
+
card?: boolean;
|
|
8
24
|
children?: ReactNode;
|
|
9
25
|
description?: ReactNode;
|
|
10
|
-
|
|
26
|
+
/** Small secondary line under the form, such as support links. */
|
|
27
|
+
footer?: ReactNode;
|
|
28
|
+
/** Replace the form with a skeleton. Title and description stay. */
|
|
29
|
+
loading?: boolean;
|
|
30
|
+
/** Mark shown above the title. */
|
|
31
|
+
logo?: ReactNode;
|
|
32
|
+
/** A string renders as the page heading. Other nodes render as is. */
|
|
33
|
+
title?: ReactNode;
|
|
11
34
|
/** Corner actions, such as a theme switch. */
|
|
12
35
|
tools?: ReactNode;
|
|
36
|
+
/**
|
|
37
|
+
* Card shape. `elevated` uses a 28px radius for standalone sign-in pages.
|
|
38
|
+
* @default 'default'
|
|
39
|
+
*/
|
|
40
|
+
variant?: AuthLayoutVariant;
|
|
41
|
+
}
|
|
42
|
+
interface AuthLayoutAsideProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
|
|
43
|
+
/** Art behind the copy, such as `<Grainient />`. Defaults to a static gradient. */
|
|
44
|
+
background?: ReactNode;
|
|
45
|
+
/** Small line above the headline. */
|
|
46
|
+
kicker?: ReactNode;
|
|
47
|
+
/** Headline at the bottom of the panel. */
|
|
48
|
+
line?: ReactNode;
|
|
13
49
|
}
|
|
14
50
|
//#endregion
|
|
15
|
-
export { AuthLayoutProps };
|
|
51
|
+
export { AuthLayoutAsideProps, AuthLayoutBackground, AuthLayoutProps, AuthLayoutVariant };
|
|
16
52
|
//# sourceMappingURL=type.d.mts.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AuthLocaleSwitchProps } from "./type.mjs";
|
|
2
|
+
//#region src/dashboard/AuthTools/AuthLocaleSwitch.d.ts
|
|
3
|
+
/** Pill language select for auth corner tools. Controlled; pass your locale list. */
|
|
4
|
+
declare function AuthLocaleSwitch({ 'aria-label': ariaLabel, className, onChange, options, style, value }: AuthLocaleSwitchProps): import("react").JSX.Element;
|
|
5
|
+
declare namespace AuthLocaleSwitch {
|
|
6
|
+
var displayName: string;
|
|
7
|
+
}
|
|
8
|
+
//#endregion
|
|
9
|
+
export { AuthLocaleSwitch as default };
|
|
10
|
+
//# sourceMappingURL=AuthLocaleSwitch.d.mts.map
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import Icon from "../../Icon/Icon.mjs";
|
|
3
|
+
import Select from "../../base-ui/Select/Select.mjs";
|
|
4
|
+
import { styles } from "./style.mjs";
|
|
5
|
+
import { jsx } from "react/jsx-runtime";
|
|
6
|
+
import { cx } from "antd-style";
|
|
7
|
+
import { GlobeIcon } from "lucide-react";
|
|
8
|
+
//#region src/dashboard/AuthTools/AuthLocaleSwitch.tsx
|
|
9
|
+
/** Pill language select for auth corner tools. Controlled; pass your locale list. */
|
|
10
|
+
function AuthLocaleSwitch({ "aria-label": ariaLabel = "Language", className, onChange, options, style, value }) {
|
|
11
|
+
return /* @__PURE__ */ jsx(Select, {
|
|
12
|
+
"aria-label": ariaLabel,
|
|
13
|
+
className: cx(styles.locale, className),
|
|
14
|
+
options,
|
|
15
|
+
prefix: /* @__PURE__ */ jsx(Icon, {
|
|
16
|
+
className: styles.localeIcon,
|
|
17
|
+
icon: GlobeIcon
|
|
18
|
+
}),
|
|
19
|
+
size: "small",
|
|
20
|
+
style,
|
|
21
|
+
value,
|
|
22
|
+
variant: "outlined",
|
|
23
|
+
onChange: (next) => {
|
|
24
|
+
if (typeof next === "string") onChange?.(next);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
AuthLocaleSwitch.displayName = "AuthLocaleSwitch";
|
|
29
|
+
//#endregion
|
|
30
|
+
export { AuthLocaleSwitch as default };
|
|
31
|
+
|
|
32
|
+
//# sourceMappingURL=AuthLocaleSwitch.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthLocaleSwitch.mjs","names":[],"sources":["../../../src/dashboard/AuthTools/AuthLocaleSwitch.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { GlobeIcon } from 'lucide-react';\n\nimport Select from '@/base-ui/Select';\nimport Icon from '@/Icon';\n\nimport { styles } from './style';\nimport type { AuthLocaleSwitchProps } from './type';\n\n/** Pill language select for auth corner tools. Controlled; pass your locale list. */\nfunction AuthLocaleSwitch({\n 'aria-label': ariaLabel = 'Language',\n className,\n onChange,\n options,\n style,\n value,\n}: AuthLocaleSwitchProps) {\n return (\n <Select\n aria-label={ariaLabel}\n className={cx(styles.locale, className)}\n options={options}\n prefix={<Icon className={styles.localeIcon} icon={GlobeIcon} />}\n size=\"small\"\n style={style}\n value={value}\n variant=\"outlined\"\n onChange={(next: unknown) => {\n if (typeof next === 'string') onChange?.(next);\n }}\n />\n );\n}\n\nAuthLocaleSwitch.displayName = 'AuthLocaleSwitch';\n\nexport default AuthLocaleSwitch;\n"],"mappings":";;;;;;;;;AAYA,SAAS,iBAAiB,EACxB,cAAc,YAAY,YAC1B,WACA,UACA,SACA,OACA,SACwB;CACxB,OACE,oBAAC,QAAD;EACE,cAAY;EACZ,WAAW,GAAG,OAAO,QAAQ,SAAS;EAC7B;EACT,QAAQ,oBAAC,MAAD;GAAM,WAAW,OAAO;GAAY,MAAM;EAAY,CAAA;EAC9D,MAAK;EACE;EACA;EACP,SAAQ;EACR,WAAW,SAAkB;GAC3B,IAAI,OAAO,SAAS,UAAU,WAAW,IAAI;EAC/C;CACD,CAAA;AAEL;AAEA,iBAAiB,cAAc"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AuthThemeSwitchProps } from "./type.mjs";
|
|
2
|
+
//#region src/dashboard/AuthTools/AuthThemeSwitch.d.ts
|
|
3
|
+
/** Compact icon-only theme picker for auth corner tools. Controlled; wire it to your store. */
|
|
4
|
+
declare function AuthThemeSwitch({ className, labels, onChange, style, value }: AuthThemeSwitchProps): import("react").JSX.Element;
|
|
5
|
+
declare namespace AuthThemeSwitch {
|
|
6
|
+
var displayName: string;
|
|
7
|
+
}
|
|
8
|
+
//#endregion
|
|
9
|
+
export { AuthThemeSwitch as default };
|
|
10
|
+
//# sourceMappingURL=AuthThemeSwitch.d.mts.map
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import Icon from "../../Icon/Icon.mjs";
|
|
3
|
+
import Segmented from "../../base-ui/Segmented/Segmented.mjs";
|
|
4
|
+
import { styles } from "./style.mjs";
|
|
5
|
+
import { jsx } from "react/jsx-runtime";
|
|
6
|
+
import { cx } from "antd-style";
|
|
7
|
+
import { Monitor, Moon, Sun } from "lucide-react";
|
|
8
|
+
//#region src/dashboard/AuthTools/AuthThemeSwitch.tsx
|
|
9
|
+
const OPTIONS = [
|
|
10
|
+
{
|
|
11
|
+
icon: Moon,
|
|
12
|
+
value: "dark"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
icon: Monitor,
|
|
16
|
+
value: "auto"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
icon: Sun,
|
|
20
|
+
value: "light"
|
|
21
|
+
}
|
|
22
|
+
];
|
|
23
|
+
const DEFAULT_LABELS = {
|
|
24
|
+
auto: "System",
|
|
25
|
+
dark: "Dark",
|
|
26
|
+
light: "Light"
|
|
27
|
+
};
|
|
28
|
+
/** Compact icon-only theme picker for auth corner tools. Controlled; wire it to your store. */
|
|
29
|
+
function AuthThemeSwitch({ className, labels, onChange, style, value = "auto" }) {
|
|
30
|
+
const names = {
|
|
31
|
+
...DEFAULT_LABELS,
|
|
32
|
+
...labels
|
|
33
|
+
};
|
|
34
|
+
return /* @__PURE__ */ jsx(Segmented, {
|
|
35
|
+
className: cx(styles.theme, className),
|
|
36
|
+
size: "small",
|
|
37
|
+
style,
|
|
38
|
+
value,
|
|
39
|
+
variant: "outlined",
|
|
40
|
+
classNames: {
|
|
41
|
+
indicator: styles.themeIndicator,
|
|
42
|
+
item: styles.themeItem,
|
|
43
|
+
itemIcon: styles.themeIcon,
|
|
44
|
+
itemLabel: styles.themeLabel
|
|
45
|
+
},
|
|
46
|
+
options: OPTIONS.map((option) => ({
|
|
47
|
+
icon: /* @__PURE__ */ jsx(Icon, { icon: option.icon }),
|
|
48
|
+
label: names[option.value],
|
|
49
|
+
title: names[option.value],
|
|
50
|
+
value: option.value
|
|
51
|
+
})),
|
|
52
|
+
onChange: (next) => onChange?.(next)
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
AuthThemeSwitch.displayName = "AuthThemeSwitch";
|
|
56
|
+
//#endregion
|
|
57
|
+
export { AuthThemeSwitch as default };
|
|
58
|
+
|
|
59
|
+
//# sourceMappingURL=AuthThemeSwitch.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthThemeSwitch.mjs","names":[],"sources":["../../../src/dashboard/AuthTools/AuthThemeSwitch.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { Monitor, Moon, Sun } from 'lucide-react';\n\nimport Segmented from '@/base-ui/Segmented';\nimport Icon from '@/Icon';\n\nimport { styles } from './style';\nimport type { AuthThemeMode, AuthThemeSwitchProps } from './type';\n\nconst OPTIONS = [\n { icon: Moon, value: 'dark' },\n { icon: Monitor, value: 'auto' },\n { icon: Sun, value: 'light' },\n] as const;\n\nconst DEFAULT_LABELS: Record<AuthThemeMode, string> = {\n auto: 'System',\n dark: 'Dark',\n light: 'Light',\n};\n\n/** Compact icon-only theme picker for auth corner tools. Controlled; wire it to your store. */\nfunction AuthThemeSwitch({\n className,\n labels,\n onChange,\n style,\n value = 'auto',\n}: AuthThemeSwitchProps) {\n const names = { ...DEFAULT_LABELS, ...labels };\n return (\n <Segmented<AuthThemeMode>\n className={cx(styles.theme, className)}\n size=\"small\"\n style={style}\n value={value}\n variant=\"outlined\"\n classNames={{\n indicator: styles.themeIndicator,\n item: styles.themeItem,\n itemIcon: styles.themeIcon,\n itemLabel: styles.themeLabel,\n }}\n options={OPTIONS.map((option) => ({\n icon: <Icon icon={option.icon} />,\n label: names[option.value],\n title: names[option.value],\n value: option.value,\n }))}\n onChange={(next) => onChange?.(next)}\n />\n );\n}\n\nAuthThemeSwitch.displayName = 'AuthThemeSwitch';\n\nexport default AuthThemeSwitch;\n"],"mappings":";;;;;;;;AAWA,MAAM,UAAU;CACd;EAAE,MAAM;EAAM,OAAO;CAAO;CAC5B;EAAE,MAAM;EAAS,OAAO;CAAO;CAC/B;EAAE,MAAM;EAAK,OAAO;CAAQ;AAC9B;AAEA,MAAM,iBAAgD;CACpD,MAAM;CACN,MAAM;CACN,OAAO;AACT;;AAGA,SAAS,gBAAgB,EACvB,WACA,QACA,UACA,OACA,QAAQ,UACe;CACvB,MAAM,QAAQ;EAAE,GAAG;EAAgB,GAAG;CAAO;CAC7C,OACE,oBAAC,WAAD;EACE,WAAW,GAAG,OAAO,OAAO,SAAS;EACrC,MAAK;EACE;EACA;EACP,SAAQ;EACR,YAAY;GACV,WAAW,OAAO;GAClB,MAAM,OAAO;GACb,UAAU,OAAO;GACjB,WAAW,OAAO;EACpB;EACA,SAAS,QAAQ,KAAK,YAAY;GAChC,MAAM,oBAAC,MAAD,EAAM,MAAM,OAAO,KAAO,CAAA;GAChC,OAAO,MAAM,OAAO;GACpB,OAAO,MAAM,OAAO;GACpB,OAAO,OAAO;EAChB,EAAE;EACF,WAAW,SAAS,WAAW,IAAI;CACpC,CAAA;AAEL;AAEA,gBAAgB,cAAc"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { AuthLocaleOption, AuthLocaleSwitchProps, AuthThemeMode, AuthThemeSwitchProps } from "./type.mjs";
|
|
2
|
+
import AuthLocaleSwitch from "./AuthLocaleSwitch.mjs";
|
|
3
|
+
import AuthThemeSwitch from "./AuthThemeSwitch.mjs";
|
|
4
|
+
export { type AuthLocaleOption, AuthLocaleSwitch, type AuthLocaleSwitchProps, type AuthThemeMode, AuthThemeSwitch, type AuthThemeSwitchProps };
|