@lobehub/ui 5.29.2 → 5.30.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.
@@ -0,0 +1,6 @@
1
+ import { AlertProps } from "./type.mjs";
2
+ //#region src/base-ui/Alert/Alert.d.ts
3
+ declare const Alert: import("react").NamedExoticComponent<AlertProps>;
4
+ //#endregion
5
+ export { Alert as default };
6
+ //# sourceMappingURL=Alert.d.mts.map
@@ -0,0 +1,148 @@
1
+ "use client";
2
+ import Icon from "../../Icon/Icon.mjs";
3
+ import { extraHeaderVariants, extraVariants, integratedVariants, rootVariants, styles, toneVariants } from "./style.mjs";
4
+ import { memo, useEffect, useRef, useState } from "react";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ import { cx } from "antd-style";
7
+ import { AlertTriangle, CheckCircle, ChevronRight, Info, X, XCircle } from "lucide-react";
8
+ //#region src/base-ui/Alert/Alert.tsx
9
+ const typeIcons = {
10
+ error: XCircle,
11
+ info: Info,
12
+ secondary: AlertTriangle,
13
+ success: CheckCircle,
14
+ warning: AlertTriangle
15
+ };
16
+ const Alert = memo(({ action, afterClose, banner = false, className, classNames, closable = false, closeIcon, closeText, colorfulText = false, description, extra, extraDefaultExpand = false, extraIsolate = false, glass = false, icon, iconProps, message, onClose, ref, role = "alert", rootClassName, showIcon = true, style, styles: customStyles, text, title, type = "info", variant = "soft", ...rest }) => {
17
+ const [closed, setClosed] = useState(false);
18
+ const [extraExpanded, setExtraExpanded] = useState(extraDefaultExpand);
19
+ const resolvedTitle = title ?? message;
20
+ const hasDescription = description !== void 0 && description !== null;
21
+ const integratedExtra = Boolean(extra && !extraIsolate);
22
+ const closeConfig = typeof closable === "object" ? closable : {};
23
+ const isClosable = Boolean(closable);
24
+ const { afterClose: configuredAfterClose, closeIcon: configuredCloseIcon, className: closeClassName, disabled: closeDisabled, onClose: configuredOnClose, style: closeStyle, ...closeButtonProps } = closeConfig;
25
+ const afterCloseRef = useRef(configuredAfterClose ?? afterClose);
26
+ afterCloseRef.current = configuredAfterClose ?? afterClose;
27
+ useEffect(() => {
28
+ if (closed) afterCloseRef.current?.();
29
+ }, [closed]);
30
+ if (closed) return null;
31
+ const handleClose = (event) => {
32
+ (configuredOnClose ?? onClose)?.(event);
33
+ setClosed(true);
34
+ };
35
+ const root = /* @__PURE__ */ jsxs("div", {
36
+ ...rest,
37
+ "data-alert-type": type,
38
+ "data-alert-variant": variant,
39
+ ref,
40
+ role,
41
+ className: cx(toneVariants({ type }), rootVariants({
42
+ banner,
43
+ colorfulText,
44
+ glass: integratedExtra ? false : glass,
45
+ hasDescription,
46
+ hasExtra: integratedExtra,
47
+ variant
48
+ }), classNames?.root, classNames?.alert, rootClassName, className),
49
+ style: {
50
+ ...style,
51
+ ...customStyles?.root,
52
+ ...customStyles?.alert
53
+ },
54
+ children: [
55
+ showIcon && /* @__PURE__ */ jsx("span", {
56
+ "aria-hidden": "true",
57
+ className: cx(styles.icon, classNames?.icon),
58
+ style: customStyles?.icon,
59
+ children: /* @__PURE__ */ jsx(Icon, {
60
+ icon: icon ?? typeIcons[type],
61
+ size: hasDescription ? 20 : 18,
62
+ ...iconProps
63
+ })
64
+ }),
65
+ /* @__PURE__ */ jsxs("div", {
66
+ className: cx(styles.content, classNames?.section, classNames?.content),
67
+ style: {
68
+ ...customStyles?.section,
69
+ ...customStyles?.content
70
+ },
71
+ children: [resolvedTitle !== void 0 && resolvedTitle !== null && /* @__PURE__ */ jsx("div", {
72
+ style: customStyles?.title,
73
+ className: cx(styles.title, hasDescription && styles.titleDetailed, classNames?.title),
74
+ children: resolvedTitle
75
+ }), hasDescription && /* @__PURE__ */ jsx("div", {
76
+ className: cx(styles.description, classNames?.description),
77
+ style: customStyles?.description,
78
+ children: description
79
+ })]
80
+ }),
81
+ action && /* @__PURE__ */ jsx("div", {
82
+ className: cx(styles.action, styles.wrappedAction, classNames?.action),
83
+ style: customStyles?.action,
84
+ children: action
85
+ }),
86
+ isClosable && /* @__PURE__ */ jsx("button", {
87
+ ...closeButtonProps,
88
+ "aria-label": closeButtonProps["aria-label"] ?? "Close alert",
89
+ className: cx(styles.close, classNames?.close, closeClassName),
90
+ disabled: closeDisabled,
91
+ style: {
92
+ ...customStyles?.close,
93
+ ...closeStyle
94
+ },
95
+ type: "button",
96
+ onClick: handleClose,
97
+ children: configuredCloseIcon ?? closeIcon ?? closeText ?? /* @__PURE__ */ jsx(X, { size: 14 })
98
+ })
99
+ ]
100
+ });
101
+ if (!extra) return root;
102
+ if (extraIsolate) return /* @__PURE__ */ jsxs("div", {
103
+ className: cx(styles.container, toneVariants({ type }), classNames?.container),
104
+ style: {
105
+ gap: 8,
106
+ ...customStyles?.container
107
+ },
108
+ children: [root, extra]
109
+ });
110
+ return /* @__PURE__ */ jsxs("div", {
111
+ style: customStyles?.container,
112
+ className: cx(styles.container, toneVariants({ type }), integratedVariants({
113
+ banner,
114
+ glass,
115
+ variant
116
+ }), classNames?.container),
117
+ children: [root, /* @__PURE__ */ jsx("div", {
118
+ className: cx(extraVariants({
119
+ banner,
120
+ variant
121
+ }), classNames?.extra),
122
+ style: customStyles?.extra,
123
+ children: /* @__PURE__ */ jsxs("details", {
124
+ open: extraExpanded,
125
+ onToggle: (event) => setExtraExpanded(event.currentTarget.open),
126
+ children: [/* @__PURE__ */ jsxs("summary", {
127
+ className: cx(extraHeaderVariants({ variant }), classNames?.extraHeader),
128
+ style: customStyles?.extraHeader,
129
+ children: [/* @__PURE__ */ jsx(ChevronRight, {
130
+ "aria-hidden": "true",
131
+ className: cx(styles.extraIndicator, classNames?.extraIndicator),
132
+ size: 14,
133
+ style: customStyles?.extraIndicator
134
+ }), /* @__PURE__ */ jsx("span", { children: text?.detail ?? "Show Details" })]
135
+ }), /* @__PURE__ */ jsx("div", {
136
+ className: cx(styles.extraContent, classNames?.extraContent),
137
+ style: customStyles?.extraContent,
138
+ children: extra
139
+ })]
140
+ })
141
+ })]
142
+ });
143
+ });
144
+ Alert.displayName = "BaseAlert";
145
+ //#endregion
146
+ export { Alert as default };
147
+
148
+ //# sourceMappingURL=Alert.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Alert.mjs","names":[],"sources":["../../../src/base-ui/Alert/Alert.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { AlertTriangle, CheckCircle, ChevronRight, Info, X, XCircle } from 'lucide-react';\nimport { memo, useEffect, useRef, useState } from 'react';\n\nimport Icon from '@/Icon';\n\nimport {\n extraHeaderVariants,\n extraVariants,\n integratedVariants,\n rootVariants,\n styles,\n toneVariants,\n} from './style';\nimport type { AlertCloseConfig, AlertProps, AlertType } from './type';\n\nconst typeIcons = {\n error: XCircle,\n info: Info,\n secondary: AlertTriangle,\n success: CheckCircle,\n warning: AlertTriangle,\n} satisfies Record<AlertType, typeof Info>;\n\nconst Alert = memo<AlertProps>(\n ({\n action,\n afterClose,\n banner = false,\n className,\n classNames,\n closable = false,\n closeIcon,\n closeText,\n colorfulText = false,\n description,\n extra,\n extraDefaultExpand = false,\n extraIsolate = false,\n glass = false,\n icon,\n iconProps,\n message,\n onClose,\n ref,\n role = 'alert',\n rootClassName,\n showIcon = true,\n style,\n styles: customStyles,\n text,\n title,\n type = 'info',\n variant = 'soft',\n ...rest\n }) => {\n const [closed, setClosed] = useState(false);\n const [extraExpanded, setExtraExpanded] = useState(extraDefaultExpand);\n const resolvedTitle = title ?? message;\n const hasDescription = description !== undefined && description !== null;\n const integratedExtra = Boolean(extra && !extraIsolate);\n const closeConfig: AlertCloseConfig = typeof closable === 'object' ? closable : {};\n const isClosable = Boolean(closable);\n const {\n afterClose: configuredAfterClose,\n closeIcon: configuredCloseIcon,\n className: closeClassName,\n disabled: closeDisabled,\n onClose: configuredOnClose,\n style: closeStyle,\n ...closeButtonProps\n } = closeConfig;\n const afterCloseRef = useRef(configuredAfterClose ?? afterClose);\n afterCloseRef.current = configuredAfterClose ?? afterClose;\n\n useEffect(() => {\n if (closed) afterCloseRef.current?.();\n }, [closed]);\n\n if (closed) return null;\n\n const handleClose: NonNullable<AlertCloseConfig['onClose']> = (event) => {\n (configuredOnClose ?? onClose)?.(event);\n setClosed(true);\n };\n\n const root = (\n <div\n {...rest}\n data-alert-type={type}\n data-alert-variant={variant}\n ref={ref}\n role={role}\n className={cx(\n toneVariants({ type }),\n rootVariants({\n banner,\n colorfulText,\n glass: integratedExtra ? false : glass,\n hasDescription,\n hasExtra: integratedExtra,\n variant,\n }),\n classNames?.root,\n classNames?.alert,\n rootClassName,\n className,\n )}\n style={{\n ...style,\n ...customStyles?.root,\n ...customStyles?.alert,\n }}\n >\n {showIcon && (\n <span\n aria-hidden=\"true\"\n className={cx(styles.icon, classNames?.icon)}\n style={customStyles?.icon}\n >\n <Icon icon={icon ?? typeIcons[type]} size={hasDescription ? 20 : 18} {...iconProps} />\n </span>\n )}\n <div\n className={cx(styles.content, classNames?.section, classNames?.content)}\n style={{ ...customStyles?.section, ...customStyles?.content }}\n >\n {resolvedTitle !== undefined && resolvedTitle !== null && (\n <div\n style={customStyles?.title}\n className={cx(\n styles.title,\n hasDescription && styles.titleDetailed,\n classNames?.title,\n )}\n >\n {resolvedTitle}\n </div>\n )}\n {hasDescription && (\n <div\n className={cx(styles.description, classNames?.description)}\n style={customStyles?.description}\n >\n {description}\n </div>\n )}\n </div>\n {action && (\n <div\n className={cx(styles.action, styles.wrappedAction, classNames?.action)}\n style={customStyles?.action}\n >\n {action}\n </div>\n )}\n {isClosable && (\n <button\n {...closeButtonProps}\n aria-label={closeButtonProps['aria-label'] ?? 'Close alert'}\n className={cx(styles.close, classNames?.close, closeClassName)}\n disabled={closeDisabled}\n style={{ ...customStyles?.close, ...closeStyle }}\n type=\"button\"\n onClick={handleClose}\n >\n {configuredCloseIcon ?? closeIcon ?? closeText ?? <X size={14} />}\n </button>\n )}\n </div>\n );\n\n if (!extra) return root;\n\n if (extraIsolate) {\n return (\n <div\n className={cx(styles.container, toneVariants({ type }), classNames?.container)}\n style={{ gap: 8, ...customStyles?.container }}\n >\n {root}\n {extra}\n </div>\n );\n }\n\n return (\n <div\n style={customStyles?.container}\n className={cx(\n styles.container,\n toneVariants({ type }),\n integratedVariants({ banner, glass, variant }),\n classNames?.container,\n )}\n >\n {root}\n <div\n className={cx(extraVariants({ banner, variant }), classNames?.extra)}\n style={customStyles?.extra}\n >\n <details\n open={extraExpanded}\n onToggle={(event) => setExtraExpanded(event.currentTarget.open)}\n >\n <summary\n className={cx(extraHeaderVariants({ variant }), classNames?.extraHeader)}\n style={customStyles?.extraHeader}\n >\n <ChevronRight\n aria-hidden=\"true\"\n className={cx(styles.extraIndicator, classNames?.extraIndicator)}\n size={14}\n style={customStyles?.extraIndicator}\n />\n <span>{text?.detail ?? 'Show Details'}</span>\n </summary>\n <div\n className={cx(styles.extraContent, classNames?.extraContent)}\n style={customStyles?.extraContent}\n >\n {extra}\n </div>\n </details>\n </div>\n </div>\n );\n },\n);\n\nAlert.displayName = 'BaseAlert';\n\nexport default Alert;\n"],"mappings":";;;;;;;;AAkBA,MAAM,YAAY;CAChB,OAAO;CACP,MAAM;CACN,WAAW;CACX,SAAS;CACT,SAAS;AACX;AAEA,MAAM,QAAQ,MACX,EACC,QACA,YACA,SAAS,OACT,WACA,YACA,WAAW,OACX,WACA,WACA,eAAe,OACf,aACA,OACA,qBAAqB,OACrB,eAAe,OACf,QAAQ,OACR,MACA,WACA,SACA,SACA,KACA,OAAO,SACP,eACA,WAAW,MACX,OACA,QAAQ,cACR,MACA,OACA,OAAO,QACP,UAAU,QACV,GAAG,WACC;CACJ,MAAM,CAAC,QAAQ,aAAa,SAAS,KAAK;CAC1C,MAAM,CAAC,eAAe,oBAAoB,SAAS,kBAAkB;CACrE,MAAM,gBAAgB,SAAS;CAC/B,MAAM,iBAAiB,gBAAgB,KAAA,KAAa,gBAAgB;CACpE,MAAM,kBAAkB,QAAQ,SAAS,CAAC,YAAY;CACtD,MAAM,cAAgC,OAAO,aAAa,WAAW,WAAW,CAAC;CACjF,MAAM,aAAa,QAAQ,QAAQ;CACnC,MAAM,EACJ,YAAY,sBACZ,WAAW,qBACX,WAAW,gBACX,UAAU,eACV,SAAS,mBACT,OAAO,YACP,GAAG,qBACD;CACJ,MAAM,gBAAgB,OAAO,wBAAwB,UAAU;CAC/D,cAAc,UAAU,wBAAwB;CAEhD,gBAAgB;EACd,IAAI,QAAQ,cAAc,UAAU;CACtC,GAAG,CAAC,MAAM,CAAC;CAEX,IAAI,QAAQ,OAAO;CAEnB,MAAM,eAAyD,UAAU;EACvE,CAAC,qBAAqB,QAAA,GAAW,KAAK;EACtC,UAAU,IAAI;CAChB;CAEA,MAAM,OACJ,qBAAC,OAAD;EACE,GAAI;EACJ,mBAAiB;EACjB,sBAAoB;EACf;EACC;EACN,WAAW,GACT,aAAa,EAAE,KAAK,CAAC,GACrB,aAAa;GACX;GACA;GACA,OAAO,kBAAkB,QAAQ;GACjC;GACA,UAAU;GACV;EACF,CAAC,GACD,YAAY,MACZ,YAAY,OACZ,eACA,SACF;EACA,OAAO;GACL,GAAG;GACH,GAAG,cAAc;GACjB,GAAG,cAAc;EACnB;EAzBF,UAAA;GA2BG,YACC,oBAAC,QAAD;IACE,eAAY;IACZ,WAAW,GAAG,OAAO,MAAM,YAAY,IAAI;IAC3C,OAAO,cAAc;IAErB,UAAA,oBAAC,MAAD;KAAM,MAAM,QAAQ,UAAU;KAAO,MAAM,iBAAiB,KAAK;KAAI,GAAI;IAAY,CAAA;GACjF,CAAA;GAER,qBAAC,OAAD;IACE,WAAW,GAAG,OAAO,SAAS,YAAY,SAAS,YAAY,OAAO;IACtE,OAAO;KAAE,GAAG,cAAc;KAAS,GAAG,cAAc;IAAQ;IAF9D,UAAA,CAIG,kBAAkB,KAAA,KAAa,kBAAkB,QAChD,oBAAC,OAAD;KACE,OAAO,cAAc;KACrB,WAAW,GACT,OAAO,OACP,kBAAkB,OAAO,eACzB,YAAY,KACd;KAEC,UAAA;IACE,CAAA,GAEN,kBACC,oBAAC,OAAD;KACE,WAAW,GAAG,OAAO,aAAa,YAAY,WAAW;KACzD,OAAO,cAAc;KAEpB,UAAA;IACE,CAAA,CAEJ;;GACJ,UACC,oBAAC,OAAD;IACE,WAAW,GAAG,OAAO,QAAQ,OAAO,eAAe,YAAY,MAAM;IACrE,OAAO,cAAc;IAEpB,UAAA;GACE,CAAA;GAEN,cACC,oBAAC,UAAD;IACE,GAAI;IACJ,cAAY,iBAAiB,iBAAiB;IAC9C,WAAW,GAAG,OAAO,OAAO,YAAY,OAAO,cAAc;IAC7D,UAAU;IACV,OAAO;KAAE,GAAG,cAAc;KAAO,GAAG;IAAW;IAC/C,MAAK;IACL,SAAS;IAER,UAAA,uBAAuB,aAAa,aAAa,oBAAC,GAAD,EAAG,MAAM,GAAK,CAAA;GAC1D,CAAA;EAEP;;CAGP,IAAI,CAAC,OAAO,OAAO;CAEnB,IAAI,cACF,OACE,qBAAC,OAAD;EACE,WAAW,GAAG,OAAO,WAAW,aAAa,EAAE,KAAK,CAAC,GAAG,YAAY,SAAS;EAC7E,OAAO;GAAE,KAAK;GAAG,GAAG,cAAc;EAAU;EAF9C,UAAA,CAIG,MACA,KACE;;CAIT,OACE,qBAAC,OAAD;EACE,OAAO,cAAc;EACrB,WAAW,GACT,OAAO,WACP,aAAa,EAAE,KAAK,CAAC,GACrB,mBAAmB;GAAE;GAAQ;GAAO;EAAQ,CAAC,GAC7C,YAAY,SACd;EAPF,UAAA,CASG,MACD,oBAAC,OAAD;GACE,WAAW,GAAG,cAAc;IAAE;IAAQ;GAAQ,CAAC,GAAG,YAAY,KAAK;GACnE,OAAO,cAAc;GAErB,UAAA,qBAAC,WAAD;IACE,MAAM;IACN,WAAW,UAAU,iBAAiB,MAAM,cAAc,IAAI;IAFhE,UAAA,CAIE,qBAAC,WAAD;KACE,WAAW,GAAG,oBAAoB,EAAE,QAAQ,CAAC,GAAG,YAAY,WAAW;KACvE,OAAO,cAAc;KAFvB,UAAA,CAIE,oBAAC,cAAD;MACE,eAAY;MACZ,WAAW,GAAG,OAAO,gBAAgB,YAAY,cAAc;MAC/D,MAAM;MACN,OAAO,cAAc;KACtB,CAAA,GACD,oBAAC,QAAD,EAAA,UAAO,MAAM,UAAU,eAAqB,CAAA,CACrC;IACT,CAAA,GAAA,oBAAC,OAAD;KACE,WAAW,GAAG,OAAO,cAAc,YAAY,YAAY;KAC3D,OAAO,cAAc;KAEpB,UAAA;IACE,CAAA,CACE;;EACN,CAAA,CACF;;AAET,CACF;AAEA,MAAM,cAAc"}
@@ -0,0 +1,4 @@
1
+ import { AlertClassNames, AlertCloseConfig, AlertProps, AlertRef, AlertStyles, AlertType, AlertVariant } from "./type.mjs";
2
+ import Alert from "./Alert.mjs";
3
+ import { styles } from "./style.mjs";
4
+ export { Alert, type AlertClassNames, type AlertCloseConfig, type AlertProps, type AlertRef, type AlertStyles, type AlertType, type AlertVariant, styles as alertStyles };
@@ -0,0 +1,37 @@
1
+ //#region src/base-ui/Alert/style.d.ts
2
+ declare const styles: {
3
+ action: string;
4
+ close: string;
5
+ colorfulText: string;
6
+ container: string;
7
+ content: string;
8
+ description: string;
9
+ detailed: string;
10
+ extra: string;
11
+ extraBanner: string;
12
+ extraContent: string;
13
+ extraHeader: string;
14
+ extraHeaderPlain: string;
15
+ extraIndicator: string;
16
+ extraPlain: string;
17
+ icon: string;
18
+ integrated: string;
19
+ neutralText: string;
20
+ root: string;
21
+ soft: string;
22
+ outlined: string;
23
+ plain: string;
24
+ title: string;
25
+ titleDetailed: string;
26
+ toneError: string;
27
+ toneInfo: string;
28
+ toneSecondary: string;
29
+ toneSuccess: string;
30
+ toneWarning: string;
31
+ unifiedRoot: string;
32
+ banner: string;
33
+ wrappedAction: string;
34
+ };
35
+ //#endregion
36
+ export { styles };
37
+ //# sourceMappingURL=style.d.mts.map
@@ -0,0 +1,419 @@
1
+ import { staticStylish } from "../../styles/theme/customStylishStatic.mjs";
2
+ import { createStaticStyles } from "antd-style";
3
+ import { cva } from "class-variance-authority";
4
+ //#region src/base-ui/Alert/style.ts
5
+ const styles = createStaticStyles(({ css, cssVar }) => ({
6
+ action: css`
7
+ display: flex;
8
+ flex-shrink: 0;
9
+ align-items: center;
10
+
11
+ min-height: 32px;
12
+ margin-inline-start: auto;
13
+ `,
14
+ close: css`
15
+ cursor: pointer;
16
+
17
+ position: relative;
18
+ scale: 1;
19
+
20
+ display: inline-flex;
21
+ flex-shrink: 0;
22
+ align-items: center;
23
+ justify-content: center;
24
+
25
+ width: 32px;
26
+ height: 32px;
27
+ margin: 0;
28
+ padding: 0;
29
+ border: none;
30
+ border-radius: ${cssVar.borderRadiusSM};
31
+
32
+ color: ${cssVar.colorTextTertiary};
33
+
34
+ background: transparent;
35
+
36
+ transition:
37
+ color 160ms ${cssVar.motionEaseOut},
38
+ background-color 160ms ${cssVar.motionEaseOut},
39
+ scale 160ms ${cssVar.motionEaseOut};
40
+
41
+ &::after {
42
+ content: '';
43
+
44
+ position: absolute;
45
+ inset-block-start: 50%;
46
+ inset-inline-start: 50%;
47
+ translate: -50% -50%;
48
+
49
+ width: 40px;
50
+ height: 40px;
51
+ }
52
+
53
+ &:hover:not(:disabled) {
54
+ color: ${cssVar.colorText};
55
+ background: ${cssVar.colorFillTertiary};
56
+ }
57
+
58
+ &:active:not(:disabled) {
59
+ scale: 0.96;
60
+ }
61
+
62
+ &:focus-visible {
63
+ outline: 2px solid ${cssVar.colorPrimaryBorder};
64
+ outline-offset: 1px;
65
+ }
66
+
67
+ &:disabled {
68
+ cursor: not-allowed;
69
+ opacity: 0.45;
70
+ }
71
+
72
+ @media (prefers-reduced-motion: reduce) {
73
+ transition-duration: 0s;
74
+ }
75
+ `,
76
+ colorfulText: css`
77
+ color: var(--lobe-alert-accent);
78
+ `,
79
+ container: css`
80
+ display: flex;
81
+ flex-direction: column;
82
+ width: 100%;
83
+ max-width: 100%;
84
+ `,
85
+ content: css`
86
+ display: flex;
87
+ flex: 1;
88
+ flex-direction: column;
89
+ min-width: 0;
90
+ `,
91
+ description: css`
92
+ font-size: 13px;
93
+ line-height: 20px;
94
+ color: ${cssVar.colorTextSecondary};
95
+ text-wrap: pretty;
96
+ overflow-wrap: anywhere;
97
+ `,
98
+ detailed: css`
99
+ padding-block: 12px;
100
+ padding-inline: 14px;
101
+ `,
102
+ extra: css`
103
+ position: relative;
104
+ max-width: 100%;
105
+ color: ${cssVar.colorText};
106
+ `,
107
+ extraBanner: css`
108
+ border-radius: 0;
109
+ `,
110
+ extraContent: css`
111
+ overflow: hidden;
112
+
113
+ margin-block: 0 12px;
114
+ margin-inline: 12px;
115
+ padding: 8px;
116
+ border-radius: ${cssVar.borderRadiusSM};
117
+
118
+ font-size: 12px;
119
+ color: ${cssVar.colorText};
120
+
121
+ background: ${cssVar.colorFillQuaternary};
122
+ `,
123
+ extraHeader: css`
124
+ cursor: pointer;
125
+ user-select: none;
126
+
127
+ display: flex;
128
+ gap: 6px;
129
+ align-items: center;
130
+
131
+ min-height: 40px;
132
+ padding-block: 8px;
133
+ padding-inline: 14px;
134
+ border-block-start: 1px solid ${cssVar.colorBorderSecondary};
135
+ border-radius: 0;
136
+
137
+ font-size: 12px;
138
+ font-weight: 500;
139
+ line-height: 20px;
140
+ color: ${cssVar.colorTextSecondary};
141
+
142
+ background: transparent;
143
+
144
+ transition:
145
+ color 160ms ${cssVar.motionEaseOut},
146
+ background-color 160ms ${cssVar.motionEaseOut};
147
+
148
+ &::marker,
149
+ &::-webkit-details-marker {
150
+ content: '';
151
+ display: none;
152
+ }
153
+
154
+ &:hover {
155
+ color: ${cssVar.colorText};
156
+ background: ${cssVar.colorFillQuaternary};
157
+ }
158
+
159
+ &:focus-visible {
160
+ outline: 2px solid ${cssVar.colorPrimaryBorder};
161
+ outline-offset: -2px;
162
+ }
163
+ `,
164
+ extraHeaderPlain: css`
165
+ margin-block-start: 6px;
166
+ padding-inline: 0;
167
+ border-block-start-color: ${cssVar.colorBorderSecondary};
168
+ `,
169
+ extraIndicator: css`
170
+ flex-shrink: 0;
171
+ color: ${cssVar.colorTextTertiary};
172
+ transition: transform 160ms ${cssVar.motionEaseOut};
173
+
174
+ details[open] > summary > & {
175
+ transform: rotate(90deg);
176
+ }
177
+
178
+ @media (prefers-reduced-motion: reduce) {
179
+ transition-duration: 0s;
180
+ }
181
+ `,
182
+ extraPlain: css`
183
+ background: transparent;
184
+ `,
185
+ icon: css`
186
+ display: inline-flex;
187
+ flex-shrink: 0;
188
+ align-items: center;
189
+ justify-content: center;
190
+
191
+ height: 20px;
192
+
193
+ color: var(--lobe-alert-accent);
194
+ `,
195
+ integrated: css`
196
+ overflow: hidden;
197
+ border-radius: ${cssVar.borderRadius};
198
+ `,
199
+ neutralText: css`
200
+ color: ${cssVar.colorText};
201
+ `,
202
+ root: css`
203
+ display: flex;
204
+ flex-direction: row;
205
+ gap: 10px;
206
+ align-items: flex-start;
207
+
208
+ box-sizing: border-box;
209
+ width: 100%;
210
+ max-width: 100%;
211
+ padding-block: 10px;
212
+ padding-inline: 12px;
213
+ border: none;
214
+ border-radius: ${cssVar.borderRadius};
215
+
216
+ font-size: 14px;
217
+ color: ${cssVar.colorText};
218
+
219
+ background: var(--lobe-alert-background);
220
+ box-shadow: inset 0 0 0 1px var(--lobe-alert-soft-border);
221
+
222
+ @media (width <= 480px) {
223
+ flex-wrap: wrap;
224
+ }
225
+ `,
226
+ soft: css`
227
+ background: var(--lobe-alert-background);
228
+ box-shadow: inset 0 0 0 1px var(--lobe-alert-soft-border);
229
+ `,
230
+ outlined: css`
231
+ background: transparent;
232
+ box-shadow: inset 0 0 0 1px ${cssVar.colorBorderSecondary};
233
+ `,
234
+ plain: css`
235
+ padding-block: 2px;
236
+ padding-inline: 0;
237
+ background: transparent;
238
+ box-shadow: none;
239
+ `,
240
+ title: css`
241
+ font-size: 14px;
242
+ font-weight: 500;
243
+ line-height: 20px;
244
+ color: inherit;
245
+ text-wrap: pretty;
246
+ overflow-wrap: anywhere;
247
+ `,
248
+ titleDetailed: css`
249
+ font-weight: 500;
250
+ `,
251
+ toneError: css`
252
+ --lobe-alert-accent: ${cssVar.colorError};
253
+ --lobe-alert-background: color-mix(
254
+ in srgb,
255
+ ${cssVar.colorError} 5%,
256
+ ${cssVar.colorBgContainer}
257
+ );
258
+ --lobe-alert-soft-border: color-mix(in srgb, ${cssVar.colorError} 14%, transparent);
259
+ `,
260
+ toneInfo: css`
261
+ --lobe-alert-accent: ${cssVar.colorInfo};
262
+ --lobe-alert-background: color-mix(in srgb, ${cssVar.colorInfo} 5%, ${cssVar.colorBgContainer});
263
+ --lobe-alert-soft-border: color-mix(in srgb, ${cssVar.colorInfo} 14%, transparent);
264
+ `,
265
+ toneSecondary: css`
266
+ --lobe-alert-accent: ${cssVar.colorTextSecondary};
267
+ --lobe-alert-background: color-mix(
268
+ in srgb,
269
+ ${cssVar.colorTextSecondary} 4%,
270
+ ${cssVar.colorBgContainer}
271
+ );
272
+ --lobe-alert-soft-border: color-mix(in srgb, ${cssVar.colorTextSecondary} 12%, transparent);
273
+ `,
274
+ toneSuccess: css`
275
+ --lobe-alert-accent: ${cssVar.colorSuccess};
276
+ --lobe-alert-background: color-mix(
277
+ in srgb,
278
+ ${cssVar.colorSuccess} 5%,
279
+ ${cssVar.colorBgContainer}
280
+ );
281
+ --lobe-alert-soft-border: color-mix(in srgb, ${cssVar.colorSuccess} 14%, transparent);
282
+ `,
283
+ toneWarning: css`
284
+ --lobe-alert-accent: ${cssVar.colorWarning};
285
+ --lobe-alert-background: color-mix(
286
+ in srgb,
287
+ ${cssVar.colorWarning} 5%,
288
+ ${cssVar.colorBgContainer}
289
+ );
290
+ --lobe-alert-soft-border: color-mix(in srgb, ${cssVar.colorWarning} 14%, transparent);
291
+ `,
292
+ unifiedRoot: css`
293
+ border-radius: 0;
294
+ background: transparent;
295
+ box-shadow: none;
296
+ `,
297
+ banner: css`
298
+ border-radius: 0;
299
+ box-shadow: none;
300
+ `,
301
+ wrappedAction: css`
302
+ @media (width <= 480px) {
303
+ order: 4;
304
+ width: calc(100% - 30px);
305
+ margin-block-start: -2px;
306
+ margin-inline-start: 30px;
307
+ }
308
+ `
309
+ }));
310
+ const toneVariants = cva("", {
311
+ defaultVariants: { type: "info" },
312
+ variants: { type: {
313
+ error: styles.toneError,
314
+ info: styles.toneInfo,
315
+ secondary: styles.toneSecondary,
316
+ success: styles.toneSuccess,
317
+ warning: styles.toneWarning
318
+ } }
319
+ });
320
+ const rootVariants = cva(styles.root, {
321
+ compoundVariants: [{
322
+ class: styles.unifiedRoot,
323
+ hasExtra: true
324
+ }],
325
+ defaultVariants: {
326
+ banner: false,
327
+ colorfulText: false,
328
+ glass: false,
329
+ hasDescription: false,
330
+ hasExtra: false,
331
+ variant: "soft"
332
+ },
333
+ variants: {
334
+ banner: {
335
+ false: null,
336
+ true: styles.banner
337
+ },
338
+ colorfulText: {
339
+ false: styles.neutralText,
340
+ true: styles.colorfulText
341
+ },
342
+ glass: {
343
+ false: null,
344
+ true: staticStylish.blur
345
+ },
346
+ hasDescription: {
347
+ false: null,
348
+ true: styles.detailed
349
+ },
350
+ hasExtra: {
351
+ false: null,
352
+ true: null
353
+ },
354
+ variant: {
355
+ borderless: styles.plain,
356
+ filled: styles.soft,
357
+ outlined: styles.outlined,
358
+ plain: styles.plain,
359
+ soft: styles.soft
360
+ }
361
+ }
362
+ });
363
+ const integratedVariants = cva(styles.integrated, {
364
+ defaultVariants: {
365
+ banner: false,
366
+ glass: false,
367
+ variant: "soft"
368
+ },
369
+ variants: {
370
+ banner: {
371
+ false: null,
372
+ true: styles.banner
373
+ },
374
+ glass: {
375
+ false: null,
376
+ true: staticStylish.blur
377
+ },
378
+ variant: {
379
+ borderless: styles.extraPlain,
380
+ filled: styles.soft,
381
+ outlined: styles.outlined,
382
+ plain: styles.extraPlain,
383
+ soft: styles.soft
384
+ }
385
+ }
386
+ });
387
+ const extraVariants = cva(styles.extra, {
388
+ defaultVariants: {
389
+ banner: false,
390
+ variant: "soft"
391
+ },
392
+ variants: {
393
+ banner: {
394
+ false: null,
395
+ true: styles.extraBanner
396
+ },
397
+ variant: {
398
+ borderless: styles.extraPlain,
399
+ filled: null,
400
+ outlined: null,
401
+ plain: styles.extraPlain,
402
+ soft: null
403
+ }
404
+ }
405
+ });
406
+ const extraHeaderVariants = cva(styles.extraHeader, {
407
+ defaultVariants: { variant: "soft" },
408
+ variants: { variant: {
409
+ borderless: styles.extraHeaderPlain,
410
+ filled: null,
411
+ outlined: null,
412
+ plain: styles.extraHeaderPlain,
413
+ soft: null
414
+ } }
415
+ });
416
+ //#endregion
417
+ export { extraHeaderVariants, extraVariants, integratedVariants, rootVariants, styles, toneVariants };
418
+
419
+ //# sourceMappingURL=style.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style.mjs","names":["lobeStaticStylish"],"sources":["../../../src/base-ui/Alert/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { lobeStaticStylish } from '@/styles';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n action: css`\n display: flex;\n flex-shrink: 0;\n align-items: center;\n\n min-height: 32px;\n margin-inline-start: auto;\n `,\n close: css`\n cursor: pointer;\n\n position: relative;\n scale: 1;\n\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n\n width: 32px;\n height: 32px;\n margin: 0;\n padding: 0;\n border: none;\n border-radius: ${cssVar.borderRadiusSM};\n\n color: ${cssVar.colorTextTertiary};\n\n background: transparent;\n\n transition:\n color 160ms ${cssVar.motionEaseOut},\n background-color 160ms ${cssVar.motionEaseOut},\n scale 160ms ${cssVar.motionEaseOut};\n\n &::after {\n content: '';\n\n position: absolute;\n inset-block-start: 50%;\n inset-inline-start: 50%;\n translate: -50% -50%;\n\n width: 40px;\n height: 40px;\n }\n\n &:hover:not(:disabled) {\n color: ${cssVar.colorText};\n background: ${cssVar.colorFillTertiary};\n }\n\n &:active:not(:disabled) {\n scale: 0.96;\n }\n\n &:focus-visible {\n outline: 2px solid ${cssVar.colorPrimaryBorder};\n outline-offset: 1px;\n }\n\n &:disabled {\n cursor: not-allowed;\n opacity: 0.45;\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition-duration: 0s;\n }\n `,\n colorfulText: css`\n color: var(--lobe-alert-accent);\n `,\n container: css`\n display: flex;\n flex-direction: column;\n width: 100%;\n max-width: 100%;\n `,\n content: css`\n display: flex;\n flex: 1;\n flex-direction: column;\n min-width: 0;\n `,\n description: css`\n font-size: 13px;\n line-height: 20px;\n color: ${cssVar.colorTextSecondary};\n text-wrap: pretty;\n overflow-wrap: anywhere;\n `,\n detailed: css`\n padding-block: 12px;\n padding-inline: 14px;\n `,\n extra: css`\n position: relative;\n max-width: 100%;\n color: ${cssVar.colorText};\n `,\n extraBanner: css`\n border-radius: 0;\n `,\n extraContent: css`\n overflow: hidden;\n\n margin-block: 0 12px;\n margin-inline: 12px;\n padding: 8px;\n border-radius: ${cssVar.borderRadiusSM};\n\n font-size: 12px;\n color: ${cssVar.colorText};\n\n background: ${cssVar.colorFillQuaternary};\n `,\n extraHeader: css`\n cursor: pointer;\n user-select: none;\n\n display: flex;\n gap: 6px;\n align-items: center;\n\n min-height: 40px;\n padding-block: 8px;\n padding-inline: 14px;\n border-block-start: 1px solid ${cssVar.colorBorderSecondary};\n border-radius: 0;\n\n font-size: 12px;\n font-weight: 500;\n line-height: 20px;\n color: ${cssVar.colorTextSecondary};\n\n background: transparent;\n\n transition:\n color 160ms ${cssVar.motionEaseOut},\n background-color 160ms ${cssVar.motionEaseOut};\n\n &::marker,\n &::-webkit-details-marker {\n content: '';\n display: none;\n }\n\n &:hover {\n color: ${cssVar.colorText};\n background: ${cssVar.colorFillQuaternary};\n }\n\n &:focus-visible {\n outline: 2px solid ${cssVar.colorPrimaryBorder};\n outline-offset: -2px;\n }\n `,\n extraHeaderPlain: css`\n margin-block-start: 6px;\n padding-inline: 0;\n border-block-start-color: ${cssVar.colorBorderSecondary};\n `,\n extraIndicator: css`\n flex-shrink: 0;\n color: ${cssVar.colorTextTertiary};\n transition: transform 160ms ${cssVar.motionEaseOut};\n\n details[open] > summary > & {\n transform: rotate(90deg);\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition-duration: 0s;\n }\n `,\n extraPlain: css`\n background: transparent;\n `,\n icon: css`\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n\n height: 20px;\n\n color: var(--lobe-alert-accent);\n `,\n integrated: css`\n overflow: hidden;\n border-radius: ${cssVar.borderRadius};\n `,\n neutralText: css`\n color: ${cssVar.colorText};\n `,\n root: css`\n display: flex;\n flex-direction: row;\n gap: 10px;\n align-items: flex-start;\n\n box-sizing: border-box;\n width: 100%;\n max-width: 100%;\n padding-block: 10px;\n padding-inline: 12px;\n border: none;\n border-radius: ${cssVar.borderRadius};\n\n font-size: 14px;\n color: ${cssVar.colorText};\n\n background: var(--lobe-alert-background);\n box-shadow: inset 0 0 0 1px var(--lobe-alert-soft-border);\n\n @media (width <= 480px) {\n flex-wrap: wrap;\n }\n `,\n soft: css`\n background: var(--lobe-alert-background);\n box-shadow: inset 0 0 0 1px var(--lobe-alert-soft-border);\n `,\n outlined: css`\n background: transparent;\n box-shadow: inset 0 0 0 1px ${cssVar.colorBorderSecondary};\n `,\n plain: css`\n padding-block: 2px;\n padding-inline: 0;\n background: transparent;\n box-shadow: none;\n `,\n title: css`\n font-size: 14px;\n font-weight: 500;\n line-height: 20px;\n color: inherit;\n text-wrap: pretty;\n overflow-wrap: anywhere;\n `,\n titleDetailed: css`\n font-weight: 500;\n `,\n toneError: css`\n --lobe-alert-accent: ${cssVar.colorError};\n --lobe-alert-background: color-mix(\n in srgb,\n ${cssVar.colorError} 5%,\n ${cssVar.colorBgContainer}\n );\n --lobe-alert-soft-border: color-mix(in srgb, ${cssVar.colorError} 14%, transparent);\n `,\n toneInfo: css`\n --lobe-alert-accent: ${cssVar.colorInfo};\n --lobe-alert-background: color-mix(in srgb, ${cssVar.colorInfo} 5%, ${cssVar.colorBgContainer});\n --lobe-alert-soft-border: color-mix(in srgb, ${cssVar.colorInfo} 14%, transparent);\n `,\n toneSecondary: css`\n --lobe-alert-accent: ${cssVar.colorTextSecondary};\n --lobe-alert-background: color-mix(\n in srgb,\n ${cssVar.colorTextSecondary} 4%,\n ${cssVar.colorBgContainer}\n );\n --lobe-alert-soft-border: color-mix(in srgb, ${cssVar.colorTextSecondary} 12%, transparent);\n `,\n toneSuccess: css`\n --lobe-alert-accent: ${cssVar.colorSuccess};\n --lobe-alert-background: color-mix(\n in srgb,\n ${cssVar.colorSuccess} 5%,\n ${cssVar.colorBgContainer}\n );\n --lobe-alert-soft-border: color-mix(in srgb, ${cssVar.colorSuccess} 14%, transparent);\n `,\n toneWarning: css`\n --lobe-alert-accent: ${cssVar.colorWarning};\n --lobe-alert-background: color-mix(\n in srgb,\n ${cssVar.colorWarning} 5%,\n ${cssVar.colorBgContainer}\n );\n --lobe-alert-soft-border: color-mix(in srgb, ${cssVar.colorWarning} 14%, transparent);\n `,\n unifiedRoot: css`\n border-radius: 0;\n background: transparent;\n box-shadow: none;\n `,\n banner: css`\n border-radius: 0;\n box-shadow: none;\n `,\n wrappedAction: css`\n @media (width <= 480px) {\n order: 4;\n width: calc(100% - 30px);\n margin-block-start: -2px;\n margin-inline-start: 30px;\n }\n `,\n}));\n\nexport const toneVariants = cva('', {\n defaultVariants: { type: 'info' },\n variants: {\n type: {\n error: styles.toneError,\n info: styles.toneInfo,\n secondary: styles.toneSecondary,\n success: styles.toneSuccess,\n warning: styles.toneWarning,\n },\n },\n});\n\nexport const rootVariants = cva(styles.root, {\n compoundVariants: [{ class: styles.unifiedRoot, hasExtra: true }],\n defaultVariants: {\n banner: false,\n colorfulText: false,\n glass: false,\n hasDescription: false,\n hasExtra: false,\n variant: 'soft',\n },\n variants: {\n banner: { false: null, true: styles.banner },\n colorfulText: { false: styles.neutralText, true: styles.colorfulText },\n glass: { false: null, true: lobeStaticStylish.blur },\n hasDescription: { false: null, true: styles.detailed },\n hasExtra: { false: null, true: null },\n variant: {\n borderless: styles.plain,\n filled: styles.soft,\n outlined: styles.outlined,\n plain: styles.plain,\n soft: styles.soft,\n },\n },\n});\n\nexport const integratedVariants = cva(styles.integrated, {\n defaultVariants: { banner: false, glass: false, variant: 'soft' },\n variants: {\n banner: { false: null, true: styles.banner },\n glass: { false: null, true: lobeStaticStylish.blur },\n variant: {\n borderless: styles.extraPlain,\n filled: styles.soft,\n outlined: styles.outlined,\n plain: styles.extraPlain,\n soft: styles.soft,\n },\n },\n});\n\nexport const extraVariants = cva(styles.extra, {\n defaultVariants: { banner: false, variant: 'soft' },\n variants: {\n banner: { false: null, true: styles.extraBanner },\n variant: {\n borderless: styles.extraPlain,\n filled: null,\n outlined: null,\n plain: styles.extraPlain,\n soft: null,\n },\n },\n});\n\nexport const extraHeaderVariants = cva(styles.extraHeader, {\n defaultVariants: { variant: 'soft' },\n variants: {\n variant: {\n borderless: styles.extraHeaderPlain,\n filled: null,\n outlined: null,\n plain: styles.extraHeaderPlain,\n soft: null,\n },\n },\n});\n"],"mappings":"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"}