@lobehub/ui 5.49.1 → 5.50.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/es/Empty/Empty.d.mts +1 -2
- package/es/Empty/Empty.mjs +107 -53
- package/es/Empty/Empty.mjs.map +1 -1
- package/es/Empty/style.mjs +48 -0
- package/es/Empty/style.mjs.map +1 -0
- package/es/Empty/type.d.mts +7 -8
- package/es/HtmlPreview/HtmlPreview.mjs +5 -2
- package/es/HtmlPreview/HtmlPreview.mjs.map +1 -1
- package/es/base-ui/Badge/Badge.d.mts +6 -0
- package/es/base-ui/Badge/Badge.mjs +73 -0
- package/es/base-ui/Badge/Badge.mjs.map +1 -0
- package/es/base-ui/Badge/index.d.mts +3 -0
- package/es/base-ui/Badge/style.mjs +112 -0
- package/es/base-ui/Badge/style.mjs.map +1 -0
- package/es/base-ui/Badge/type.d.mts +19 -0
- package/es/base-ui/Pagination/Pagination.d.mts +6 -0
- package/es/base-ui/Pagination/Pagination.mjs +123 -0
- package/es/base-ui/Pagination/Pagination.mjs.map +1 -0
- package/es/base-ui/Pagination/helpers.mjs +18 -0
- package/es/base-ui/Pagination/helpers.mjs.map +1 -0
- package/es/base-ui/Pagination/index.d.mts +3 -0
- package/es/base-ui/Pagination/style.mjs +92 -0
- package/es/base-ui/Pagination/style.mjs.map +1 -0
- package/es/base-ui/Pagination/type.d.mts +22 -0
- package/es/base-ui/Progress/Progress.d.mts +6 -0
- package/es/base-ui/Progress/Progress.mjs +179 -0
- package/es/base-ui/Progress/Progress.mjs.map +1 -0
- package/es/base-ui/Progress/index.d.mts +3 -0
- package/es/base-ui/Progress/style.mjs +205 -0
- package/es/base-ui/Progress/style.mjs.map +1 -0
- package/es/base-ui/Progress/type.d.mts +24 -0
- package/es/base-ui/Result/Result.d.mts +6 -0
- package/es/base-ui/Result/Result.mjs +69 -0
- package/es/base-ui/Result/Result.mjs.map +1 -0
- package/es/base-ui/Result/index.d.mts +3 -0
- package/es/base-ui/Result/style.mjs +66 -0
- package/es/base-ui/Result/style.mjs.map +1 -0
- package/es/base-ui/Result/type.d.mts +14 -0
- package/es/base-ui/Spin/NetworkGlyph.mjs +70 -0
- package/es/base-ui/Spin/NetworkGlyph.mjs.map +1 -0
- package/es/base-ui/Spin/Spin.d.mts +6 -0
- package/es/base-ui/Spin/Spin.mjs +100 -0
- package/es/base-ui/Spin/Spin.mjs.map +1 -0
- package/es/base-ui/Spin/index.d.mts +3 -0
- package/es/base-ui/Spin/style.mjs +166 -0
- package/es/base-ui/Spin/style.mjs.map +1 -0
- package/es/base-ui/Spin/type.d.mts +18 -0
- package/es/base-ui/Upload/Upload.d.mts +6 -0
- package/es/base-ui/Upload/Upload.mjs +148 -0
- package/es/base-ui/Upload/Upload.mjs.map +1 -0
- package/es/base-ui/Upload/UploadDragger.d.mts +6 -0
- package/es/base-ui/Upload/UploadDragger.mjs +14 -0
- package/es/base-ui/Upload/UploadDragger.mjs.map +1 -0
- package/es/base-ui/Upload/helpers.mjs +17 -0
- package/es/base-ui/Upload/helpers.mjs.map +1 -0
- package/es/base-ui/Upload/index.d.mts +4 -0
- package/es/base-ui/Upload/style.mjs +74 -0
- package/es/base-ui/Upload/style.mjs.map +1 -0
- package/es/base-ui/Upload/type.d.mts +24 -0
- package/es/base-ui/index.d.mts +20 -1
- package/es/base-ui/index.mjs +10 -3
- package/es/index.d.mts +20 -4
- package/es/index.mjs +8 -2
- package/es/static-css/baseline.mjs +0 -1
- package/es/static-css/baseline.mjs.map +1 -1
- package/package.json +1 -1
- package/es/NeuralNetworkLoading/NeuralNetworkLoading.d.mts +0 -6
- package/es/NeuralNetworkLoading/NeuralNetworkLoading.mjs +0 -142
- package/es/NeuralNetworkLoading/NeuralNetworkLoading.mjs.map +0 -1
- package/es/NeuralNetworkLoading/index.d.mts +0 -3
- package/es/NeuralNetworkLoading/index.d.ts +0 -1
- package/es/NeuralNetworkLoading/index.js +0 -1
- package/es/NeuralNetworkLoading/index.mjs +0 -2
- package/es/NeuralNetworkLoading/type.d.mts +0 -11
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import { createStaticStyles, keyframes } from "antd-style";
|
|
2
|
+
import { cva } from "class-variance-authority";
|
|
3
|
+
//#region src/base-ui/Progress/style.ts
|
|
4
|
+
const shimmer = keyframes`
|
|
5
|
+
from {
|
|
6
|
+
background-position: -80px 0;
|
|
7
|
+
}
|
|
8
|
+
to {
|
|
9
|
+
background-position: 200px 0;
|
|
10
|
+
}
|
|
11
|
+
`;
|
|
12
|
+
const styles = createStaticStyles(({ css, cssVar }) => ({
|
|
13
|
+
bar: css`
|
|
14
|
+
height: 100%;
|
|
15
|
+
border-radius: 999px;
|
|
16
|
+
transition: width 0.3s;
|
|
17
|
+
`,
|
|
18
|
+
barActive: css`
|
|
19
|
+
background-image: linear-gradient(
|
|
20
|
+
90deg,
|
|
21
|
+
transparent,
|
|
22
|
+
color-mix(in srgb, ${cssVar.colorWhite} 35%, transparent),
|
|
23
|
+
transparent
|
|
24
|
+
);
|
|
25
|
+
background-size: 80px 100%;
|
|
26
|
+
animation: ${shimmer} 1.2s linear infinite;
|
|
27
|
+
|
|
28
|
+
@media (prefers-reduced-motion: reduce) {
|
|
29
|
+
animation: none;
|
|
30
|
+
}
|
|
31
|
+
`,
|
|
32
|
+
blockLg: css`
|
|
33
|
+
height: 12px;
|
|
34
|
+
`,
|
|
35
|
+
blockMd: css`
|
|
36
|
+
height: 8px;
|
|
37
|
+
`,
|
|
38
|
+
blockSm: css`
|
|
39
|
+
height: 4px;
|
|
40
|
+
`,
|
|
41
|
+
circleInfo: css`
|
|
42
|
+
position: absolute;
|
|
43
|
+
|
|
44
|
+
font-variant-numeric: tabular-nums;
|
|
45
|
+
line-height: 1;
|
|
46
|
+
color: ${cssVar.colorText};
|
|
47
|
+
white-space: nowrap;
|
|
48
|
+
`,
|
|
49
|
+
circleRoot: css`
|
|
50
|
+
position: relative;
|
|
51
|
+
display: inline-flex;
|
|
52
|
+
align-items: center;
|
|
53
|
+
justify-content: center;
|
|
54
|
+
`,
|
|
55
|
+
circleSvg: css`
|
|
56
|
+
rotate: -90deg;
|
|
57
|
+
`,
|
|
58
|
+
circleTrack: css`
|
|
59
|
+
fill: none;
|
|
60
|
+
stroke: ${cssVar.colorFillTertiary};
|
|
61
|
+
`,
|
|
62
|
+
insetBarWrapper: css`
|
|
63
|
+
position: relative;
|
|
64
|
+
overflow: hidden;
|
|
65
|
+
height: 100%;
|
|
66
|
+
border-radius: 999px;
|
|
67
|
+
`,
|
|
68
|
+
insetCap: css`
|
|
69
|
+
position: absolute;
|
|
70
|
+
inset-block: 0;
|
|
71
|
+
inset-inline-end: 0;
|
|
72
|
+
|
|
73
|
+
width: 4px;
|
|
74
|
+
border-radius: 999px;
|
|
75
|
+
|
|
76
|
+
opacity: 0.6;
|
|
77
|
+
background: ${cssVar.colorBgContainer};
|
|
78
|
+
`,
|
|
79
|
+
insetTrack: css`
|
|
80
|
+
padding: 2px;
|
|
81
|
+
border-radius: 999px;
|
|
82
|
+
background: ${cssVar.colorFillTertiary};
|
|
83
|
+
`,
|
|
84
|
+
lineLg: css`
|
|
85
|
+
height: 6px;
|
|
86
|
+
`,
|
|
87
|
+
lineMd: css`
|
|
88
|
+
height: 4px;
|
|
89
|
+
`,
|
|
90
|
+
lineMeta: css`
|
|
91
|
+
display: flex;
|
|
92
|
+
gap: 12px;
|
|
93
|
+
align-items: baseline;
|
|
94
|
+
justify-content: space-between;
|
|
95
|
+
|
|
96
|
+
font-size: ${cssVar.fontSizeSM};
|
|
97
|
+
color: ${cssVar.colorTextSecondary};
|
|
98
|
+
`,
|
|
99
|
+
lineRoot: css`
|
|
100
|
+
display: flex;
|
|
101
|
+
flex-direction: column;
|
|
102
|
+
gap: 6px;
|
|
103
|
+
width: 100%;
|
|
104
|
+
`,
|
|
105
|
+
lineSm: css`
|
|
106
|
+
height: 2px;
|
|
107
|
+
`,
|
|
108
|
+
lineTrack: css`
|
|
109
|
+
overflow: hidden;
|
|
110
|
+
border-radius: 999px;
|
|
111
|
+
background: ${cssVar.colorFillTertiary};
|
|
112
|
+
`,
|
|
113
|
+
lineValue: css`
|
|
114
|
+
font-family: ${cssVar.fontFamilyCode};
|
|
115
|
+
font-variant-numeric: tabular-nums;
|
|
116
|
+
color: ${cssVar.colorText};
|
|
117
|
+
`,
|
|
118
|
+
rowInfo: css`
|
|
119
|
+
min-width: 3.5ch;
|
|
120
|
+
|
|
121
|
+
font-family: ${cssVar.fontFamilyCode};
|
|
122
|
+
font-size: ${cssVar.fontSizeSM};
|
|
123
|
+
font-variant-numeric: tabular-nums;
|
|
124
|
+
color: ${cssVar.colorTextSecondary};
|
|
125
|
+
text-align: end;
|
|
126
|
+
`,
|
|
127
|
+
rowRoot: css`
|
|
128
|
+
display: flex;
|
|
129
|
+
flex: 1;
|
|
130
|
+
gap: 10px;
|
|
131
|
+
align-items: center;
|
|
132
|
+
|
|
133
|
+
width: 100%;
|
|
134
|
+
`,
|
|
135
|
+
rowTrack: css`
|
|
136
|
+
flex: 1;
|
|
137
|
+
`,
|
|
138
|
+
segment: css`
|
|
139
|
+
flex: 1;
|
|
140
|
+
border-radius: 1px;
|
|
141
|
+
background: ${cssVar.colorFillTertiary};
|
|
142
|
+
`,
|
|
143
|
+
segmentOn: css`
|
|
144
|
+
background: ${cssVar.colorPrimary};
|
|
145
|
+
`,
|
|
146
|
+
segments: css`
|
|
147
|
+
display: flex;
|
|
148
|
+
flex: 1;
|
|
149
|
+
gap: 2px;
|
|
150
|
+
min-width: 0;
|
|
151
|
+
`
|
|
152
|
+
}));
|
|
153
|
+
const trackHeight = cva(void 0, {
|
|
154
|
+
compoundVariants: [
|
|
155
|
+
{
|
|
156
|
+
className: styles.lineSm,
|
|
157
|
+
family: "line",
|
|
158
|
+
size: "small"
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
className: styles.lineMd,
|
|
162
|
+
family: "line",
|
|
163
|
+
size: "middle"
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
className: styles.lineLg,
|
|
167
|
+
family: "line",
|
|
168
|
+
size: "large"
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
className: styles.blockSm,
|
|
172
|
+
family: "block",
|
|
173
|
+
size: "small"
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
className: styles.blockMd,
|
|
177
|
+
family: "block",
|
|
178
|
+
size: "middle"
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
className: styles.blockLg,
|
|
182
|
+
family: "block",
|
|
183
|
+
size: "large"
|
|
184
|
+
}
|
|
185
|
+
],
|
|
186
|
+
defaultVariants: {
|
|
187
|
+
family: "line",
|
|
188
|
+
size: "middle"
|
|
189
|
+
},
|
|
190
|
+
variants: {
|
|
191
|
+
family: {
|
|
192
|
+
block: null,
|
|
193
|
+
line: null
|
|
194
|
+
},
|
|
195
|
+
size: {
|
|
196
|
+
large: null,
|
|
197
|
+
middle: null,
|
|
198
|
+
small: null
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
//#endregion
|
|
203
|
+
export { styles, trackHeight };
|
|
204
|
+
|
|
205
|
+
//# sourceMappingURL=style.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/base-ui/Progress/style.ts"],"sourcesContent":["import { createStaticStyles, keyframes } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nconst shimmer = keyframes`\n from {\n background-position: -80px 0;\n }\n to {\n background-position: 200px 0;\n }\n`;\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n bar: css`\n height: 100%;\n border-radius: 999px;\n transition: width 0.3s;\n `,\n barActive: css`\n background-image: linear-gradient(\n 90deg,\n transparent,\n color-mix(in srgb, ${cssVar.colorWhite} 35%, transparent),\n transparent\n );\n background-size: 80px 100%;\n animation: ${shimmer} 1.2s linear infinite;\n\n @media (prefers-reduced-motion: reduce) {\n animation: none;\n }\n `,\n blockLg: css`\n height: 12px;\n `,\n blockMd: css`\n height: 8px;\n `,\n blockSm: css`\n height: 4px;\n `,\n circleInfo: css`\n position: absolute;\n\n font-variant-numeric: tabular-nums;\n line-height: 1;\n color: ${cssVar.colorText};\n white-space: nowrap;\n `,\n circleRoot: css`\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n `,\n circleSvg: css`\n rotate: -90deg;\n `,\n circleTrack: css`\n fill: none;\n stroke: ${cssVar.colorFillTertiary};\n `,\n insetBarWrapper: css`\n position: relative;\n overflow: hidden;\n height: 100%;\n border-radius: 999px;\n `,\n insetCap: css`\n position: absolute;\n inset-block: 0;\n inset-inline-end: 0;\n\n width: 4px;\n border-radius: 999px;\n\n opacity: 0.6;\n background: ${cssVar.colorBgContainer};\n `,\n insetTrack: css`\n padding: 2px;\n border-radius: 999px;\n background: ${cssVar.colorFillTertiary};\n `,\n lineLg: css`\n height: 6px;\n `,\n lineMd: css`\n height: 4px;\n `,\n lineMeta: css`\n display: flex;\n gap: 12px;\n align-items: baseline;\n justify-content: space-between;\n\n font-size: ${cssVar.fontSizeSM};\n color: ${cssVar.colorTextSecondary};\n `,\n lineRoot: css`\n display: flex;\n flex-direction: column;\n gap: 6px;\n width: 100%;\n `,\n lineSm: css`\n height: 2px;\n `,\n lineTrack: css`\n overflow: hidden;\n border-radius: 999px;\n background: ${cssVar.colorFillTertiary};\n `,\n lineValue: css`\n font-family: ${cssVar.fontFamilyCode};\n font-variant-numeric: tabular-nums;\n color: ${cssVar.colorText};\n `,\n rowInfo: css`\n min-width: 3.5ch;\n\n font-family: ${cssVar.fontFamilyCode};\n font-size: ${cssVar.fontSizeSM};\n font-variant-numeric: tabular-nums;\n color: ${cssVar.colorTextSecondary};\n text-align: end;\n `,\n rowRoot: css`\n display: flex;\n flex: 1;\n gap: 10px;\n align-items: center;\n\n width: 100%;\n `,\n rowTrack: css`\n flex: 1;\n `,\n segment: css`\n flex: 1;\n border-radius: 1px;\n background: ${cssVar.colorFillTertiary};\n `,\n segmentOn: css`\n background: ${cssVar.colorPrimary};\n `,\n segments: css`\n display: flex;\n flex: 1;\n gap: 2px;\n min-width: 0;\n `,\n}));\n\nexport const trackHeight = cva(undefined, {\n compoundVariants: [\n { className: styles.lineSm, family: 'line', size: 'small' },\n { className: styles.lineMd, family: 'line', size: 'middle' },\n { className: styles.lineLg, family: 'line', size: 'large' },\n { className: styles.blockSm, family: 'block', size: 'small' },\n { className: styles.blockMd, family: 'block', size: 'middle' },\n { className: styles.blockLg, family: 'block', size: 'large' },\n ],\n defaultVariants: {\n family: 'line',\n size: 'middle',\n },\n variants: {\n family: {\n block: null,\n line: null,\n },\n size: {\n large: null,\n middle: null,\n small: null,\n },\n },\n});\n"],"mappings":";;;AAGA,MAAM,UAAU,SAAS;;;;;;;;AASzB,MAAa,SAAS,oBAAoB,EAAE,KAAK,cAAc;CAC7D,KAAK,GAAG;;;;;CAKR,WAAW,GAAG;;;;2BAIW,OAAO,WAAW;;;;iBAI5B,QAAQ;;;;;;CAMvB,SAAS,GAAG;;;CAGZ,SAAS,GAAG;;;CAGZ,SAAS,GAAG;;;CAGZ,YAAY,GAAG;;;;;aAKJ,OAAO,UAAU;;;CAG5B,YAAY,GAAG;;;;;;CAMf,WAAW,GAAG;;;CAGd,aAAa,GAAG;;cAEJ,OAAO,kBAAkB;;CAErC,iBAAiB,GAAG;;;;;;CAMpB,UAAU,GAAG;;;;;;;;;kBASG,OAAO,iBAAiB;;CAExC,YAAY,GAAG;;;kBAGC,OAAO,kBAAkB;;CAEzC,QAAQ,GAAG;;;CAGX,QAAQ,GAAG;;;CAGX,UAAU,GAAG;;;;;;iBAME,OAAO,WAAW;aACtB,OAAO,mBAAmB;;CAErC,UAAU,GAAG;;;;;;CAMb,QAAQ,GAAG;;;CAGX,WAAW,GAAG;;;kBAGE,OAAO,kBAAkB;;CAEzC,WAAW,GAAG;mBACG,OAAO,eAAe;;aAE5B,OAAO,UAAU;;CAE5B,SAAS,GAAG;;;mBAGK,OAAO,eAAe;iBACxB,OAAO,WAAW;;aAEtB,OAAO,mBAAmB;;;CAGrC,SAAS,GAAG;;;;;;;;CAQZ,UAAU,GAAG;;;CAGb,SAAS,GAAG;;;kBAGI,OAAO,kBAAkB;;CAEzC,WAAW,GAAG;kBACE,OAAO,aAAa;;CAEpC,UAAU,GAAG;;;;;;AAMf,EAAE;AAEF,MAAa,cAAc,IAAI,KAAA,GAAW;CACxC,kBAAkB;EAChB;GAAE,WAAW,OAAO;GAAQ,QAAQ;GAAQ,MAAM;EAAQ;EAC1D;GAAE,WAAW,OAAO;GAAQ,QAAQ;GAAQ,MAAM;EAAS;EAC3D;GAAE,WAAW,OAAO;GAAQ,QAAQ;GAAQ,MAAM;EAAQ;EAC1D;GAAE,WAAW,OAAO;GAAS,QAAQ;GAAS,MAAM;EAAQ;EAC5D;GAAE,WAAW,OAAO;GAAS,QAAQ;GAAS,MAAM;EAAS;EAC7D;GAAE,WAAW,OAAO;GAAS,QAAQ;GAAS,MAAM;EAAQ;CAC9D;CACA,iBAAiB;EACf,QAAQ;EACR,MAAM;CACR;CACA,UAAU;EACR,QAAQ;GACN,OAAO;GACP,MAAM;EACR;EACA,MAAM;GACJ,OAAO;GACP,QAAQ;GACR,OAAO;EACT;CACF;AACF,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { CSSProperties, ComponentProps, ReactNode, Ref } from "react";
|
|
2
|
+
//#region src/base-ui/Progress/type.d.ts
|
|
3
|
+
type ProgressType = 'line' | 'circle';
|
|
4
|
+
type ProgressVariant = 'line' | 'segments' | 'inset';
|
|
5
|
+
type ProgressStatus = 'normal' | 'active' | 'success' | 'exception';
|
|
6
|
+
type ProgressSize = 'small' | 'middle' | 'large' | number;
|
|
7
|
+
interface ProgressProps extends Omit<ComponentProps<'div'>, 'children'> {
|
|
8
|
+
className?: string;
|
|
9
|
+
format?: (percent: number) => ReactNode;
|
|
10
|
+
label?: ReactNode;
|
|
11
|
+
percent: number;
|
|
12
|
+
ref?: Ref<HTMLDivElement>;
|
|
13
|
+
segments?: number;
|
|
14
|
+
showInfo?: boolean;
|
|
15
|
+
size?: ProgressSize;
|
|
16
|
+
status?: ProgressStatus;
|
|
17
|
+
strokeColor?: string;
|
|
18
|
+
style?: CSSProperties;
|
|
19
|
+
type?: ProgressType;
|
|
20
|
+
variant?: ProgressVariant;
|
|
21
|
+
}
|
|
22
|
+
//#endregion
|
|
23
|
+
export { ProgressProps, ProgressSize, ProgressStatus, ProgressType, ProgressVariant };
|
|
24
|
+
//# sourceMappingURL=type.d.mts.map
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { statusColor, styles } from "./style.mjs";
|
|
3
|
+
import { memo, useMemo } from "react";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
import { cssVar, cx } from "antd-style";
|
|
6
|
+
import { Check, Info, TriangleAlert, X } from "lucide-react";
|
|
7
|
+
//#region src/base-ui/Result/Result.tsx
|
|
8
|
+
const statusIcon = {
|
|
9
|
+
error: /* @__PURE__ */ jsx(X, {
|
|
10
|
+
size: 36,
|
|
11
|
+
strokeWidth: 2.5
|
|
12
|
+
}),
|
|
13
|
+
info: /* @__PURE__ */ jsx(Info, {
|
|
14
|
+
size: 36,
|
|
15
|
+
strokeWidth: 2
|
|
16
|
+
}),
|
|
17
|
+
success: /* @__PURE__ */ jsx(Check, {
|
|
18
|
+
size: 36,
|
|
19
|
+
strokeWidth: 2.5
|
|
20
|
+
}),
|
|
21
|
+
warning: /* @__PURE__ */ jsx(TriangleAlert, {
|
|
22
|
+
size: 36,
|
|
23
|
+
strokeWidth: 2
|
|
24
|
+
})
|
|
25
|
+
};
|
|
26
|
+
const Result = memo(({ children, className, extra, icon, ref, status = "info", style, subTitle, title, ...rest }) => {
|
|
27
|
+
const iconStyle = useMemo(() => {
|
|
28
|
+
if (status === "info") return {
|
|
29
|
+
background: cssVar.colorFillTertiary,
|
|
30
|
+
color: cssVar.colorTextSecondary
|
|
31
|
+
};
|
|
32
|
+
const color = statusColor[status];
|
|
33
|
+
return {
|
|
34
|
+
background: `color-mix(in srgb, ${color} 12%, transparent)`,
|
|
35
|
+
color
|
|
36
|
+
};
|
|
37
|
+
}, [status]);
|
|
38
|
+
return /* @__PURE__ */ jsxs("section", {
|
|
39
|
+
className: cx(styles.root, className),
|
|
40
|
+
ref,
|
|
41
|
+
style,
|
|
42
|
+
...rest,
|
|
43
|
+
children: [
|
|
44
|
+
/* @__PURE__ */ jsx("div", {
|
|
45
|
+
className: styles.icon,
|
|
46
|
+
style: iconStyle,
|
|
47
|
+
children: icon ?? statusIcon[status]
|
|
48
|
+
}),
|
|
49
|
+
title && /* @__PURE__ */ jsx("h3", {
|
|
50
|
+
className: styles.title,
|
|
51
|
+
children: title
|
|
52
|
+
}),
|
|
53
|
+
subTitle && /* @__PURE__ */ jsx("p", {
|
|
54
|
+
className: styles.subTitle,
|
|
55
|
+
children: subTitle
|
|
56
|
+
}),
|
|
57
|
+
extra && /* @__PURE__ */ jsx("div", {
|
|
58
|
+
className: styles.extra,
|
|
59
|
+
children: extra
|
|
60
|
+
}),
|
|
61
|
+
children
|
|
62
|
+
]
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
Result.displayName = "Result";
|
|
66
|
+
//#endregion
|
|
67
|
+
export { Result as default };
|
|
68
|
+
|
|
69
|
+
//# sourceMappingURL=Result.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Result.mjs","names":[],"sources":["../../../src/base-ui/Result/Result.tsx"],"sourcesContent":["'use client';\n\nimport { cssVar, cx } from 'antd-style';\nimport { Check, Info, TriangleAlert, X } from 'lucide-react';\nimport { memo, useMemo } from 'react';\n\nimport { statusColor, styles } from './style';\nimport type { ResultProps } from './type';\n\nconst statusIcon = {\n error: <X size={36} strokeWidth={2.5} />,\n info: <Info size={36} strokeWidth={2} />,\n success: <Check size={36} strokeWidth={2.5} />,\n warning: <TriangleAlert size={36} strokeWidth={2} />,\n};\n\nconst Result = memo<ResultProps>(\n ({ children, className, extra, icon, ref, status = 'info', style, subTitle, title, ...rest }) => {\n const iconStyle = useMemo(() => {\n if (status === 'info') {\n return { background: cssVar.colorFillTertiary, color: cssVar.colorTextSecondary };\n }\n const color = statusColor[status];\n return { background: `color-mix(in srgb, ${color} 12%, transparent)`, color };\n }, [status]);\n\n return (\n <section className={cx(styles.root, className)} ref={ref} style={style} {...rest}>\n <div className={styles.icon} style={iconStyle}>\n {icon ?? statusIcon[status]}\n </div>\n {title && <h3 className={styles.title}>{title}</h3>}\n {subTitle && <p className={styles.subTitle}>{subTitle}</p>}\n {extra && <div className={styles.extra}>{extra}</div>}\n {children}\n </section>\n );\n },\n);\n\nResult.displayName = 'Result';\n\nexport default Result;\n"],"mappings":";;;;;;;AASA,MAAM,aAAa;CACjB,OAAO,oBAAC,GAAD;EAAG,MAAM;EAAI,aAAa;CAAM,CAAA;CACvC,MAAM,oBAAC,MAAD;EAAM,MAAM;EAAI,aAAa;CAAI,CAAA;CACvC,SAAS,oBAAC,OAAD;EAAO,MAAM;EAAI,aAAa;CAAM,CAAA;CAC7C,SAAS,oBAAC,eAAD;EAAe,MAAM;EAAI,aAAa;CAAI,CAAA;AACrD;AAEA,MAAM,SAAS,MACZ,EAAE,UAAU,WAAW,OAAO,MAAM,KAAK,SAAS,QAAQ,OAAO,UAAU,OAAO,GAAG,WAAW;CAC/F,MAAM,YAAY,cAAc;EAC9B,IAAI,WAAW,QACb,OAAO;GAAE,YAAY,OAAO;GAAmB,OAAO,OAAO;EAAmB;EAElF,MAAM,QAAQ,YAAY;EAC1B,OAAO;GAAE,YAAY,sBAAsB,MAAM;GAAqB;EAAM;CAC9E,GAAG,CAAC,MAAM,CAAC;CAEX,OACE,qBAAC,WAAD;EAAS,WAAW,GAAG,OAAO,MAAM,SAAS;EAAQ;EAAY;EAAO,GAAI;EAA5E,UAAA;GACE,oBAAC,OAAD;IAAK,WAAW,OAAO;IAAM,OAAO;IACjC,UAAA,QAAQ,WAAW;GACjB,CAAA;GACJ,SAAS,oBAAC,MAAD;IAAI,WAAW,OAAO;IAAQ,UAAA;GAAU,CAAA;GACjD,YAAY,oBAAC,KAAD;IAAG,WAAW,OAAO;IAAW,UAAA;GAAY,CAAA;GACxD,SAAS,oBAAC,OAAD;IAAK,WAAW,OAAO;IAAQ,UAAA;GAAW,CAAA;GACnD;EACM;;AAEb,CACF;AAEA,OAAO,cAAc"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { createStaticStyles, cssVar } from "antd-style";
|
|
2
|
+
//#region src/base-ui/Result/style.ts
|
|
3
|
+
const styles = createStaticStyles(({ css, cssVar }) => ({
|
|
4
|
+
extra: css`
|
|
5
|
+
display: flex;
|
|
6
|
+
flex-wrap: wrap;
|
|
7
|
+
gap: 8px;
|
|
8
|
+
align-items: center;
|
|
9
|
+
align-self: stretch;
|
|
10
|
+
justify-content: center;
|
|
11
|
+
|
|
12
|
+
margin-block-start: 10px;
|
|
13
|
+
|
|
14
|
+
> :is(div, section, form) {
|
|
15
|
+
flex: 1 1 100%;
|
|
16
|
+
}
|
|
17
|
+
`,
|
|
18
|
+
icon: css`
|
|
19
|
+
display: flex;
|
|
20
|
+
flex-shrink: 0;
|
|
21
|
+
align-items: center;
|
|
22
|
+
justify-content: center;
|
|
23
|
+
|
|
24
|
+
width: 72px;
|
|
25
|
+
height: 72px;
|
|
26
|
+
margin-block-end: 12px;
|
|
27
|
+
border-radius: 50%;
|
|
28
|
+
|
|
29
|
+
svg {
|
|
30
|
+
width: 36px;
|
|
31
|
+
height: 36px;
|
|
32
|
+
}
|
|
33
|
+
`,
|
|
34
|
+
root: css`
|
|
35
|
+
display: flex;
|
|
36
|
+
flex-direction: column;
|
|
37
|
+
gap: 6px;
|
|
38
|
+
align-items: center;
|
|
39
|
+
|
|
40
|
+
padding-block: 16px;
|
|
41
|
+
padding-inline: 8px;
|
|
42
|
+
|
|
43
|
+
text-align: center;
|
|
44
|
+
`,
|
|
45
|
+
subTitle: css`
|
|
46
|
+
max-width: 36ch;
|
|
47
|
+
margin: 0;
|
|
48
|
+
font-size: 13px;
|
|
49
|
+
color: ${cssVar.colorTextTertiary};
|
|
50
|
+
`,
|
|
51
|
+
title: css`
|
|
52
|
+
margin: 0;
|
|
53
|
+
font-size: 20px;
|
|
54
|
+
font-weight: 600;
|
|
55
|
+
text-wrap: balance;
|
|
56
|
+
`
|
|
57
|
+
}));
|
|
58
|
+
const statusColor = {
|
|
59
|
+
error: cssVar.colorError,
|
|
60
|
+
success: cssVar.colorSuccess,
|
|
61
|
+
warning: cssVar.colorWarning
|
|
62
|
+
};
|
|
63
|
+
//#endregion
|
|
64
|
+
export { statusColor, styles };
|
|
65
|
+
|
|
66
|
+
//# sourceMappingURL=style.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/base-ui/Result/style.ts"],"sourcesContent":["import { createStaticStyles, cssVar } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n extra: css`\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n align-items: center;\n align-self: stretch;\n justify-content: center;\n\n margin-block-start: 10px;\n\n > :is(div, section, form) {\n flex: 1 1 100%;\n }\n `,\n icon: css`\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n\n width: 72px;\n height: 72px;\n margin-block-end: 12px;\n border-radius: 50%;\n\n svg {\n width: 36px;\n height: 36px;\n }\n `,\n root: css`\n display: flex;\n flex-direction: column;\n gap: 6px;\n align-items: center;\n\n padding-block: 16px;\n padding-inline: 8px;\n\n text-align: center;\n `,\n subTitle: css`\n max-width: 36ch;\n margin: 0;\n font-size: 13px;\n color: ${cssVar.colorTextTertiary};\n `,\n title: css`\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n text-wrap: balance;\n `,\n}));\n\nexport const statusColor: Record<'success' | 'error' | 'warning', string> = {\n error: cssVar.colorError,\n success: cssVar.colorSuccess,\n warning: cssVar.colorWarning,\n};\n"],"mappings":";;AAEA,MAAa,SAAS,oBAAoB,EAAE,KAAK,cAAc;CAC7D,OAAO,GAAG;;;;;;;;;;;;;;CAcV,MAAM,GAAG;;;;;;;;;;;;;;;;CAgBT,MAAM,GAAG;;;;;;;;;;;CAWT,UAAU,GAAG;;;;aAIF,OAAO,kBAAkB;;CAEpC,OAAO,GAAG;;;;;;AAMZ,EAAE;AAEF,MAAa,cAA+D;CAC1E,OAAO,OAAO;CACd,SAAS,OAAO;CAChB,SAAS,OAAO;AAClB"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ComponentProps, ReactNode, Ref } from "react";
|
|
2
|
+
//#region src/base-ui/Result/type.d.ts
|
|
3
|
+
type ResultStatus = 'success' | 'error' | 'info' | 'warning';
|
|
4
|
+
interface ResultProps extends Omit<ComponentProps<'section'>, 'title'> {
|
|
5
|
+
extra?: ReactNode;
|
|
6
|
+
icon?: ReactNode;
|
|
7
|
+
ref?: Ref<HTMLElement>;
|
|
8
|
+
status?: ResultStatus;
|
|
9
|
+
subTitle?: ReactNode;
|
|
10
|
+
title?: ReactNode;
|
|
11
|
+
}
|
|
12
|
+
//#endregion
|
|
13
|
+
export { ResultProps, ResultStatus };
|
|
14
|
+
//# sourceMappingURL=type.d.mts.map
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { styles } from "./style.mjs";
|
|
2
|
+
import { memo } from "react";
|
|
3
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
+
//#region src/base-ui/Spin/NetworkGlyph.tsx
|
|
5
|
+
const layers = [
|
|
6
|
+
0,
|
|
7
|
+
1,
|
|
8
|
+
2
|
|
9
|
+
];
|
|
10
|
+
const unit = 25;
|
|
11
|
+
const nodes = layers.flatMap((layer) => layers.map((row) => ({
|
|
12
|
+
x: unit + layer * unit,
|
|
13
|
+
y: unit + row * unit
|
|
14
|
+
})));
|
|
15
|
+
const lines = layers.slice(0, -1).flatMap((layer) => layers.flatMap((from) => layers.map((to) => ({
|
|
16
|
+
x1: unit + layer * unit,
|
|
17
|
+
x2: unit + (layer + 1) * unit,
|
|
18
|
+
y1: unit + from * unit,
|
|
19
|
+
y2: unit + to * unit
|
|
20
|
+
}))));
|
|
21
|
+
const particles = [
|
|
22
|
+
0,
|
|
23
|
+
1,
|
|
24
|
+
2
|
|
25
|
+
];
|
|
26
|
+
const minRenderedPx = (units, px, floorPx) => Math.max(units, floorPx * 100 / px);
|
|
27
|
+
const NetworkGlyph = memo(({ px }) => {
|
|
28
|
+
const boxStyle = {
|
|
29
|
+
"--spin-node-size": `${minRenderedPx(6, px, 2)}px`,
|
|
30
|
+
"--spin-particle-size": `${minRenderedPx(3, px, 1.5)}px`,
|
|
31
|
+
"transform": `scale(${px / 100})`
|
|
32
|
+
};
|
|
33
|
+
return /* @__PURE__ */ jsx("span", {
|
|
34
|
+
className: styles.network,
|
|
35
|
+
style: {
|
|
36
|
+
height: px,
|
|
37
|
+
width: px
|
|
38
|
+
},
|
|
39
|
+
children: /* @__PURE__ */ jsxs("span", {
|
|
40
|
+
className: styles.networkBox,
|
|
41
|
+
style: boxStyle,
|
|
42
|
+
children: [
|
|
43
|
+
/* @__PURE__ */ jsx("svg", {
|
|
44
|
+
className: styles.networkLines,
|
|
45
|
+
viewBox: "0 0 100 100",
|
|
46
|
+
children: lines.map((line) => /* @__PURE__ */ jsx("line", { ...line }, `${line.x1}-${line.y1}-${line.y2}`))
|
|
47
|
+
}),
|
|
48
|
+
nodes.map(({ x, y }, index) => /* @__PURE__ */ jsx("i", {
|
|
49
|
+
className: styles.networkNode,
|
|
50
|
+
style: {
|
|
51
|
+
animationDelay: `${index * .2}s`,
|
|
52
|
+
left: x,
|
|
53
|
+
top: y
|
|
54
|
+
}
|
|
55
|
+
}, `${x}-${y}`)),
|
|
56
|
+
particles.map((index) => /* @__PURE__ */ jsx("i", {
|
|
57
|
+
className: styles.networkParticle,
|
|
58
|
+
style: { animationDelay: `${index * .6}s` }
|
|
59
|
+
}, index)),
|
|
60
|
+
/* @__PURE__ */ jsx("b", { className: styles.networkCore }),
|
|
61
|
+
/* @__PURE__ */ jsx("u", { className: styles.networkRing })
|
|
62
|
+
]
|
|
63
|
+
})
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
NetworkGlyph.displayName = "NetworkGlyph";
|
|
67
|
+
//#endregion
|
|
68
|
+
export { NetworkGlyph as default };
|
|
69
|
+
|
|
70
|
+
//# sourceMappingURL=NetworkGlyph.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NetworkGlyph.mjs","names":[],"sources":["../../../src/base-ui/Spin/NetworkGlyph.tsx"],"sourcesContent":["import type { CSSProperties } from 'react';\nimport { memo } from 'react';\n\nimport { styles } from './style';\n\nconst layers = [0, 1, 2] as const;\nconst unit = 25;\n\nconst nodes = layers.flatMap((layer) =>\n layers.map((row) => ({ x: unit + layer * unit, y: unit + row * unit })),\n);\n\nconst lines = layers.slice(0, -1).flatMap((layer) =>\n layers.flatMap((from) =>\n layers.map((to) => ({\n x1: unit + layer * unit,\n x2: unit + (layer + 1) * unit,\n y1: unit + from * unit,\n y2: unit + to * unit,\n })),\n ),\n);\n\nconst particles = [0, 1, 2] as const;\n\nconst minRenderedPx = (units: number, px: number, floorPx: number) =>\n Math.max(units, (floorPx * 100) / px);\n\nconst NetworkGlyph = memo<{ px: number }>(({ px }) => {\n const boxStyle = {\n '--spin-node-size': `${minRenderedPx(6, px, 2)}px`,\n '--spin-particle-size': `${minRenderedPx(3, px, 1.5)}px`,\n 'transform': `scale(${px / 100})`,\n } as CSSProperties;\n\n return (\n <span className={styles.network} style={{ height: px, width: px }}>\n <span className={styles.networkBox} style={boxStyle}>\n <svg className={styles.networkLines} viewBox=\"0 0 100 100\">\n {lines.map((line) => (\n <line key={`${line.x1}-${line.y1}-${line.y2}`} {...line} />\n ))}\n </svg>\n {nodes.map(({ x, y }, index) => (\n <i\n className={styles.networkNode}\n key={`${x}-${y}`}\n style={{ animationDelay: `${index * 0.2}s`, left: x, top: y }}\n />\n ))}\n {particles.map((index) => (\n <i\n className={styles.networkParticle}\n key={index}\n style={{ animationDelay: `${index * 0.6}s` }}\n />\n ))}\n <b className={styles.networkCore} />\n <u className={styles.networkRing} />\n </span>\n </span>\n );\n});\n\nNetworkGlyph.displayName = 'NetworkGlyph';\n\nexport default NetworkGlyph;\n"],"mappings":";;;;AAKA,MAAM,SAAS;CAAC;CAAG;CAAG;AAAC;AACvB,MAAM,OAAO;AAEb,MAAM,QAAQ,OAAO,SAAS,UAC5B,OAAO,KAAK,SAAS;CAAE,GAAG,OAAO,QAAQ;CAAM,GAAG,OAAO,MAAM;AAAK,EAAE,CACxE;AAEA,MAAM,QAAQ,OAAO,MAAM,GAAG,EAAE,CAAC,CAAC,SAAS,UACzC,OAAO,SAAS,SACd,OAAO,KAAK,QAAQ;CAClB,IAAI,OAAO,QAAQ;CACnB,IAAI,QAAQ,QAAQ,KAAK;CACzB,IAAI,OAAO,OAAO;CAClB,IAAI,OAAO,KAAK;AAClB,EAAE,CACJ,CACF;AAEA,MAAM,YAAY;CAAC;CAAG;CAAG;AAAC;AAE1B,MAAM,iBAAiB,OAAe,IAAY,YAChD,KAAK,IAAI,OAAQ,UAAU,MAAO,EAAE;AAEtC,MAAM,eAAe,MAAsB,EAAE,SAAS;CACpD,MAAM,WAAW;EACf,oBAAoB,GAAG,cAAc,GAAG,IAAI,CAAC,EAAE;EAC/C,wBAAwB,GAAG,cAAc,GAAG,IAAI,GAAG,EAAE;EACrD,aAAa,SAAS,KAAK,IAAI;CACjC;CAEA,OACE,oBAAC,QAAD;EAAM,WAAW,OAAO;EAAS,OAAO;GAAE,QAAQ;GAAI,OAAO;EAAG;EAC9D,UAAA,qBAAC,QAAD;GAAM,WAAW,OAAO;GAAY,OAAO;GAA3C,UAAA;IACE,oBAAC,OAAD;KAAK,WAAW,OAAO;KAAc,SAAQ;KAC1C,UAAA,MAAM,KAAK,SACV,oBAAC,QAAD,EAA+C,GAAI,KAAO,GAA/C,GAAG,KAAK,GAAG,GAAG,KAAK,GAAG,GAAG,KAAK,IAAiB,CAC3D;IACE,CAAA;IACJ,MAAM,KAAK,EAAE,GAAG,KAAK,UACpB,oBAAC,KAAD;KACE,WAAW,OAAO;KAElB,OAAO;MAAE,gBAAgB,GAAG,QAAQ,GAAI;MAAI,MAAM;MAAG,KAAK;KAAE;IAC7D,GAFM,GAAG,EAAE,GAAG,GAEd,CACF;IACA,UAAU,KAAK,UACd,oBAAC,KAAD;KACE,WAAW,OAAO;KAElB,OAAO,EAAE,gBAAgB,GAAG,QAAQ,GAAI,GAAG;IAC5C,GAFM,KAEN,CACF;IACD,oBAAC,KAAD,EAAG,WAAW,OAAO,YAAc,CAAA;IACnC,oBAAC,KAAD,EAAG,WAAW,OAAO,YAAc,CAAA;GAC/B;;CACF,CAAA;AAEV,CAAC;AAED,aAAa,cAAc"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import Icon from "../../Icon/Icon.mjs";
|
|
3
|
+
import { styles } from "./style.mjs";
|
|
4
|
+
import NetworkGlyph from "./NetworkGlyph.mjs";
|
|
5
|
+
import { memo, useMemo } from "react";
|
|
6
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
import { cx } from "antd-style";
|
|
8
|
+
import { LoaderCircle } from "lucide-react";
|
|
9
|
+
//#region src/base-ui/Spin/Spin.tsx
|
|
10
|
+
const sizeMap = {
|
|
11
|
+
large: 32,
|
|
12
|
+
middle: 20,
|
|
13
|
+
small: 14
|
|
14
|
+
};
|
|
15
|
+
const resolveSize = (size) => typeof size === "number" ? size : sizeMap[size];
|
|
16
|
+
const Spin = memo(({ children, className, indicator, percent, ref, size = "middle", spinning = true, style, tip, variant = "default", ...rest }) => {
|
|
17
|
+
const px = useMemo(() => resolveSize(size), [size]);
|
|
18
|
+
const glyph = useMemo(() => {
|
|
19
|
+
if (indicator) return indicator;
|
|
20
|
+
if (variant === "network") return /* @__PURE__ */ jsx(NetworkGlyph, { px });
|
|
21
|
+
if (typeof percent === "number") {
|
|
22
|
+
const clamped = Math.min(100, Math.max(0, percent));
|
|
23
|
+
const circumference = 2 * Math.PI * 9;
|
|
24
|
+
const offset = circumference * (1 - clamped / 100);
|
|
25
|
+
return /* @__PURE__ */ jsxs("svg", {
|
|
26
|
+
className: cx(styles.glyph, styles.ring),
|
|
27
|
+
height: px,
|
|
28
|
+
viewBox: "0 0 24 24",
|
|
29
|
+
width: px,
|
|
30
|
+
children: [/* @__PURE__ */ jsx("circle", {
|
|
31
|
+
className: styles.ringTrack,
|
|
32
|
+
cx: 12,
|
|
33
|
+
cy: 12,
|
|
34
|
+
fill: "none",
|
|
35
|
+
r: 9,
|
|
36
|
+
strokeWidth: 2.5
|
|
37
|
+
}), /* @__PURE__ */ jsx("circle", {
|
|
38
|
+
className: styles.ringProgress,
|
|
39
|
+
cx: 12,
|
|
40
|
+
cy: 12,
|
|
41
|
+
fill: "none",
|
|
42
|
+
r: 9,
|
|
43
|
+
strokeDasharray: circumference,
|
|
44
|
+
strokeDashoffset: offset,
|
|
45
|
+
strokeLinecap: "round",
|
|
46
|
+
strokeWidth: 2.5
|
|
47
|
+
})]
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
return /* @__PURE__ */ jsx(Icon, {
|
|
51
|
+
spin: true,
|
|
52
|
+
className: styles.glyph,
|
|
53
|
+
icon: LoaderCircle,
|
|
54
|
+
size: px
|
|
55
|
+
});
|
|
56
|
+
}, [
|
|
57
|
+
indicator,
|
|
58
|
+
variant,
|
|
59
|
+
percent,
|
|
60
|
+
px
|
|
61
|
+
]);
|
|
62
|
+
if (!spinning) return children ?? null;
|
|
63
|
+
if (!children) return /* @__PURE__ */ jsx("div", {
|
|
64
|
+
"aria-busy": true,
|
|
65
|
+
"aria-live": "polite",
|
|
66
|
+
className: cx(styles.root, className),
|
|
67
|
+
ref,
|
|
68
|
+
role: "status",
|
|
69
|
+
style,
|
|
70
|
+
...rest,
|
|
71
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
72
|
+
"aria-hidden": true,
|
|
73
|
+
children: glyph
|
|
74
|
+
})
|
|
75
|
+
});
|
|
76
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
77
|
+
className: cx(styles.wrapper, className),
|
|
78
|
+
ref,
|
|
79
|
+
style,
|
|
80
|
+
...rest,
|
|
81
|
+
children: [children, /* @__PURE__ */ jsxs("div", {
|
|
82
|
+
"aria-busy": true,
|
|
83
|
+
"aria-live": "polite",
|
|
84
|
+
className: styles.overlay,
|
|
85
|
+
role: "status",
|
|
86
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
87
|
+
"aria-hidden": true,
|
|
88
|
+
children: glyph
|
|
89
|
+
}), tip && /* @__PURE__ */ jsx("span", {
|
|
90
|
+
className: styles.tip,
|
|
91
|
+
children: tip
|
|
92
|
+
})]
|
|
93
|
+
})]
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
Spin.displayName = "Spin";
|
|
97
|
+
//#endregion
|
|
98
|
+
export { Spin as default };
|
|
99
|
+
|
|
100
|
+
//# sourceMappingURL=Spin.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Spin.mjs","names":[],"sources":["../../../src/base-ui/Spin/Spin.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { LoaderCircle } from 'lucide-react';\nimport { memo, useMemo } from 'react';\n\nimport Icon from '@/Icon';\n\nimport NetworkGlyph from './NetworkGlyph';\nimport { styles } from './style';\nimport type { SpinProps, SpinSize } from './type';\n\nconst sizeMap: Record<'small' | 'middle' | 'large', number> = {\n large: 32,\n middle: 20,\n small: 14,\n};\n\nconst resolveSize = (size: SpinSize) => (typeof size === 'number' ? size : sizeMap[size]);\n\nconst Spin = memo<SpinProps>(\n ({\n children,\n className,\n indicator,\n percent,\n ref,\n size = 'middle',\n spinning = true,\n style,\n tip,\n variant = 'default',\n ...rest\n }) => {\n const px = useMemo(() => resolveSize(size), [size]);\n\n const glyph = useMemo(() => {\n if (indicator) return indicator;\n\n if (variant === 'network') return <NetworkGlyph px={px} />;\n\n if (typeof percent === 'number') {\n const clamped = Math.min(100, Math.max(0, percent));\n const circumference = 2 * Math.PI * 9;\n const offset = circumference * (1 - clamped / 100);\n\n return (\n <svg className={cx(styles.glyph, styles.ring)} height={px} viewBox=\"0 0 24 24\" width={px}>\n <circle\n className={styles.ringTrack}\n cx={12}\n cy={12}\n fill=\"none\"\n r={9}\n strokeWidth={2.5}\n />\n <circle\n className={styles.ringProgress}\n cx={12}\n cy={12}\n fill=\"none\"\n r={9}\n strokeDasharray={circumference}\n strokeDashoffset={offset}\n strokeLinecap=\"round\"\n strokeWidth={2.5}\n />\n </svg>\n );\n }\n\n return <Icon spin className={styles.glyph} icon={LoaderCircle} size={px} />;\n }, [indicator, variant, percent, px]);\n\n if (!spinning) return children ?? null;\n\n if (!children) {\n return (\n <div\n aria-busy\n aria-live=\"polite\"\n className={cx(styles.root, className)}\n ref={ref}\n role=\"status\"\n style={style}\n {...rest}\n >\n <span aria-hidden>{glyph}</span>\n </div>\n );\n }\n\n return (\n <div className={cx(styles.wrapper, className)} ref={ref} style={style} {...rest}>\n {children}\n <div aria-busy aria-live=\"polite\" className={styles.overlay} role=\"status\">\n <span aria-hidden>{glyph}</span>\n {tip && <span className={styles.tip}>{tip}</span>}\n </div>\n </div>\n );\n },\n);\n\nSpin.displayName = 'Spin';\n\nexport default Spin;\n"],"mappings":";;;;;;;;;AAYA,MAAM,UAAwD;CAC5D,OAAO;CACP,QAAQ;CACR,OAAO;AACT;AAEA,MAAM,eAAe,SAAoB,OAAO,SAAS,WAAW,OAAO,QAAQ;AAEnF,MAAM,OAAO,MACV,EACC,UACA,WACA,WACA,SACA,KACA,OAAO,UACP,WAAW,MACX,OACA,KACA,UAAU,WACV,GAAG,WACC;CACJ,MAAM,KAAK,cAAc,YAAY,IAAI,GAAG,CAAC,IAAI,CAAC;CAElD,MAAM,QAAQ,cAAc;EAC1B,IAAI,WAAW,OAAO;EAEtB,IAAI,YAAY,WAAW,OAAO,oBAAC,cAAD,EAAkB,GAAK,CAAA;EAEzD,IAAI,OAAO,YAAY,UAAU;GAC/B,MAAM,UAAU,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC;GAClD,MAAM,gBAAgB,IAAI,KAAK,KAAK;GACpC,MAAM,SAAS,iBAAiB,IAAI,UAAU;GAE9C,OACE,qBAAC,OAAD;IAAK,WAAW,GAAG,OAAO,OAAO,OAAO,IAAI;IAAG,QAAQ;IAAI,SAAQ;IAAY,OAAO;IAAtF,UAAA,CACE,oBAAC,UAAD;KACE,WAAW,OAAO;KAClB,IAAI;KACJ,IAAI;KACJ,MAAK;KACL,GAAG;KACH,aAAa;IACd,CAAA,GACD,oBAAC,UAAD;KACE,WAAW,OAAO;KAClB,IAAI;KACJ,IAAI;KACJ,MAAK;KACL,GAAG;KACH,iBAAiB;KACjB,kBAAkB;KAClB,eAAc;KACd,aAAa;IACd,CAAA,CACE;;EAET;EAEA,OAAO,oBAAC,MAAD;GAAM,MAAA;GAAK,WAAW,OAAO;GAAO,MAAM;GAAc,MAAM;EAAK,CAAA;CAC5E,GAAG;EAAC;EAAW;EAAS;EAAS;CAAE,CAAC;CAEpC,IAAI,CAAC,UAAU,OAAO,YAAY;CAElC,IAAI,CAAC,UACH,OACE,oBAAC,OAAD;EACE,aAAA;EACA,aAAU;EACV,WAAW,GAAG,OAAO,MAAM,SAAS;EAC/B;EACL,MAAK;EACE;EACP,GAAI;EAEJ,UAAA,oBAAC,QAAD;GAAM,eAAA;GAAa,UAAA;EAAY,CAAA;CAC5B,CAAA;CAIT,OACE,qBAAC,OAAD;EAAK,WAAW,GAAG,OAAO,SAAS,SAAS;EAAQ;EAAY;EAAO,GAAI;EAA3E,UAAA,CACG,UACD,qBAAC,OAAD;GAAK,aAAA;GAAU,aAAU;GAAS,WAAW,OAAO;GAAS,MAAK;GAAlE,UAAA,CACE,oBAAC,QAAD;IAAM,eAAA;IAAa,UAAA;GAAY,CAAA,GAC9B,OAAO,oBAAC,QAAD;IAAM,WAAW,OAAO;IAAM,UAAA;GAAU,CAAA,CAC7C;EACF,CAAA,CAAA;;AAET,CACF;AAEA,KAAK,cAAc"}
|