@lobehub/ui 5.49.0 → 5.50.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.
Files changed (78) hide show
  1. package/es/Empty/Empty.d.mts +1 -2
  2. package/es/Empty/Empty.mjs +107 -53
  3. package/es/Empty/Empty.mjs.map +1 -1
  4. package/es/Empty/style.mjs +48 -0
  5. package/es/Empty/style.mjs.map +1 -0
  6. package/es/Empty/type.d.mts +7 -8
  7. package/es/HtmlPreview/HtmlPreview.mjs +5 -2
  8. package/es/HtmlPreview/HtmlPreview.mjs.map +1 -1
  9. package/es/Markdown/type.d.mts +1 -0
  10. package/es/base-ui/Badge/Badge.d.mts +6 -0
  11. package/es/base-ui/Badge/Badge.mjs +73 -0
  12. package/es/base-ui/Badge/Badge.mjs.map +1 -0
  13. package/es/base-ui/Badge/index.d.mts +3 -0
  14. package/es/base-ui/Badge/style.mjs +112 -0
  15. package/es/base-ui/Badge/style.mjs.map +1 -0
  16. package/es/base-ui/Badge/type.d.mts +19 -0
  17. package/es/base-ui/Input/style.d.mts +1 -1
  18. package/es/base-ui/Pagination/Pagination.d.mts +6 -0
  19. package/es/base-ui/Pagination/Pagination.mjs +123 -0
  20. package/es/base-ui/Pagination/Pagination.mjs.map +1 -0
  21. package/es/base-ui/Pagination/helpers.mjs +18 -0
  22. package/es/base-ui/Pagination/helpers.mjs.map +1 -0
  23. package/es/base-ui/Pagination/index.d.mts +3 -0
  24. package/es/base-ui/Pagination/style.mjs +92 -0
  25. package/es/base-ui/Pagination/style.mjs.map +1 -0
  26. package/es/base-ui/Pagination/type.d.mts +22 -0
  27. package/es/base-ui/Progress/Progress.d.mts +6 -0
  28. package/es/base-ui/Progress/Progress.mjs +179 -0
  29. package/es/base-ui/Progress/Progress.mjs.map +1 -0
  30. package/es/base-ui/Progress/index.d.mts +3 -0
  31. package/es/base-ui/Progress/style.mjs +203 -0
  32. package/es/base-ui/Progress/style.mjs.map +1 -0
  33. package/es/base-ui/Progress/type.d.mts +24 -0
  34. package/es/base-ui/Result/Result.d.mts +6 -0
  35. package/es/base-ui/Result/Result.mjs +69 -0
  36. package/es/base-ui/Result/Result.mjs.map +1 -0
  37. package/es/base-ui/Result/index.d.mts +3 -0
  38. package/es/base-ui/Result/style.mjs +55 -0
  39. package/es/base-ui/Result/style.mjs.map +1 -0
  40. package/es/base-ui/Result/type.d.mts +14 -0
  41. package/es/base-ui/Spin/NetworkGlyph.mjs +70 -0
  42. package/es/base-ui/Spin/NetworkGlyph.mjs.map +1 -0
  43. package/es/base-ui/Spin/Spin.d.mts +6 -0
  44. package/es/base-ui/Spin/Spin.mjs +100 -0
  45. package/es/base-ui/Spin/Spin.mjs.map +1 -0
  46. package/es/base-ui/Spin/index.d.mts +3 -0
  47. package/es/base-ui/Spin/style.mjs +166 -0
  48. package/es/base-ui/Spin/style.mjs.map +1 -0
  49. package/es/base-ui/Spin/type.d.mts +18 -0
  50. package/es/base-ui/Upload/Upload.d.mts +6 -0
  51. package/es/base-ui/Upload/Upload.mjs +148 -0
  52. package/es/base-ui/Upload/Upload.mjs.map +1 -0
  53. package/es/base-ui/Upload/UploadDragger.d.mts +6 -0
  54. package/es/base-ui/Upload/UploadDragger.mjs +14 -0
  55. package/es/base-ui/Upload/UploadDragger.mjs.map +1 -0
  56. package/es/base-ui/Upload/helpers.mjs +17 -0
  57. package/es/base-ui/Upload/helpers.mjs.map +1 -0
  58. package/es/base-ui/Upload/index.d.mts +4 -0
  59. package/es/base-ui/Upload/style.mjs +74 -0
  60. package/es/base-ui/Upload/style.mjs.map +1 -0
  61. package/es/base-ui/Upload/type.d.mts +24 -0
  62. package/es/base-ui/index.d.mts +20 -1
  63. package/es/base-ui/index.mjs +10 -3
  64. package/es/hooks/useMarkdown/useMarkdownRehypePlugins.mjs +2 -0
  65. package/es/hooks/useMarkdown/useMarkdownRehypePlugins.mjs.map +1 -1
  66. package/es/index.d.mts +20 -4
  67. package/es/index.mjs +8 -2
  68. package/es/static-css/baseline.mjs +0 -1
  69. package/es/static-css/baseline.mjs.map +1 -1
  70. package/package.json +2 -1
  71. package/es/NeuralNetworkLoading/NeuralNetworkLoading.d.mts +0 -6
  72. package/es/NeuralNetworkLoading/NeuralNetworkLoading.mjs +0 -142
  73. package/es/NeuralNetworkLoading/NeuralNetworkLoading.mjs.map +0 -1
  74. package/es/NeuralNetworkLoading/index.d.mts +0 -3
  75. package/es/NeuralNetworkLoading/index.d.ts +0 -1
  76. package/es/NeuralNetworkLoading/index.js +0 -1
  77. package/es/NeuralNetworkLoading/index.mjs +0 -2
  78. package/es/NeuralNetworkLoading/type.d.mts +0 -11
@@ -0,0 +1,203 @@
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
+ font-family: ${cssVar.fontFamilyCode};
44
+ font-variant-numeric: tabular-nums;
45
+ color: ${cssVar.colorText};
46
+ `,
47
+ circleRoot: css`
48
+ position: relative;
49
+ display: inline-flex;
50
+ align-items: center;
51
+ justify-content: center;
52
+ `,
53
+ circleSvg: css`
54
+ rotate: -90deg;
55
+ `,
56
+ circleTrack: css`
57
+ fill: none;
58
+ stroke: ${cssVar.colorFillTertiary};
59
+ `,
60
+ insetBarWrapper: css`
61
+ position: relative;
62
+ overflow: hidden;
63
+ height: 100%;
64
+ border-radius: 999px;
65
+ `,
66
+ insetCap: css`
67
+ position: absolute;
68
+ inset-block: 0;
69
+ inset-inline-end: 0;
70
+
71
+ width: 4px;
72
+ border-radius: 999px;
73
+
74
+ opacity: 0.6;
75
+ background: ${cssVar.colorBgContainer};
76
+ `,
77
+ insetTrack: css`
78
+ padding: 2px;
79
+ border-radius: 999px;
80
+ background: ${cssVar.colorFillTertiary};
81
+ `,
82
+ lineLg: css`
83
+ height: 6px;
84
+ `,
85
+ lineMd: css`
86
+ height: 4px;
87
+ `,
88
+ lineMeta: css`
89
+ display: flex;
90
+ gap: 12px;
91
+ align-items: baseline;
92
+ justify-content: space-between;
93
+
94
+ font-size: ${cssVar.fontSizeSM};
95
+ color: ${cssVar.colorTextSecondary};
96
+ `,
97
+ lineRoot: css`
98
+ display: flex;
99
+ flex-direction: column;
100
+ gap: 6px;
101
+ width: 100%;
102
+ `,
103
+ lineSm: css`
104
+ height: 2px;
105
+ `,
106
+ lineTrack: css`
107
+ overflow: hidden;
108
+ border-radius: 999px;
109
+ background: ${cssVar.colorFillTertiary};
110
+ `,
111
+ lineValue: css`
112
+ font-family: ${cssVar.fontFamilyCode};
113
+ font-variant-numeric: tabular-nums;
114
+ color: ${cssVar.colorText};
115
+ `,
116
+ rowInfo: css`
117
+ min-width: 3.5ch;
118
+
119
+ font-family: ${cssVar.fontFamilyCode};
120
+ font-size: ${cssVar.fontSizeSM};
121
+ font-variant-numeric: tabular-nums;
122
+ color: ${cssVar.colorTextSecondary};
123
+ text-align: end;
124
+ `,
125
+ rowRoot: css`
126
+ display: flex;
127
+ flex: 1;
128
+ gap: 10px;
129
+ align-items: center;
130
+
131
+ width: 100%;
132
+ `,
133
+ rowTrack: css`
134
+ flex: 1;
135
+ `,
136
+ segment: css`
137
+ flex: 1;
138
+ border-radius: 1px;
139
+ background: ${cssVar.colorFillTertiary};
140
+ `,
141
+ segmentOn: css`
142
+ background: ${cssVar.colorPrimary};
143
+ `,
144
+ segments: css`
145
+ display: flex;
146
+ flex: 1;
147
+ gap: 2px;
148
+ min-width: 0;
149
+ `
150
+ }));
151
+ const trackHeight = cva(void 0, {
152
+ compoundVariants: [
153
+ {
154
+ className: styles.lineSm,
155
+ family: "line",
156
+ size: "small"
157
+ },
158
+ {
159
+ className: styles.lineMd,
160
+ family: "line",
161
+ size: "middle"
162
+ },
163
+ {
164
+ className: styles.lineLg,
165
+ family: "line",
166
+ size: "large"
167
+ },
168
+ {
169
+ className: styles.blockSm,
170
+ family: "block",
171
+ size: "small"
172
+ },
173
+ {
174
+ className: styles.blockMd,
175
+ family: "block",
176
+ size: "middle"
177
+ },
178
+ {
179
+ className: styles.blockLg,
180
+ family: "block",
181
+ size: "large"
182
+ }
183
+ ],
184
+ defaultVariants: {
185
+ family: "line",
186
+ size: "middle"
187
+ },
188
+ variants: {
189
+ family: {
190
+ block: null,
191
+ line: null
192
+ },
193
+ size: {
194
+ large: null,
195
+ middle: null,
196
+ small: null
197
+ }
198
+ }
199
+ });
200
+ //#endregion
201
+ export { styles, trackHeight };
202
+
203
+ //# 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 font-family: ${cssVar.fontFamilyCode};\n font-variant-numeric: tabular-nums;\n color: ${cssVar.colorText};\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;;mBAEE,OAAO,eAAe;;aAE5B,OAAO,UAAU;;CAE5B,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,6 @@
1
+ import { ResultProps } from "./type.mjs";
2
+ //#region src/base-ui/Result/Result.d.ts
3
+ declare const Result: import("react").NamedExoticComponent<ResultProps>;
4
+ //#endregion
5
+ export { Result as default };
6
+ //# sourceMappingURL=Result.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: 28,
11
+ strokeWidth: 2.5
12
+ }),
13
+ info: /* @__PURE__ */ jsx(Info, {
14
+ size: 28,
15
+ strokeWidth: 2
16
+ }),
17
+ success: /* @__PURE__ */ jsx(Check, {
18
+ size: 28,
19
+ strokeWidth: 2.5
20
+ }),
21
+ warning: /* @__PURE__ */ jsx(TriangleAlert, {
22
+ size: 28,
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={28} strokeWidth={2.5} />,\n info: <Info size={28} strokeWidth={2} />,\n success: <Check size={28} strokeWidth={2.5} />,\n warning: <TriangleAlert size={28} 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,3 @@
1
+ import { ResultProps, ResultStatus } from "./type.mjs";
2
+ import Result from "./Result.mjs";
3
+ export { type ResultProps, type ResultStatus, Result as default };
@@ -0,0 +1,55 @@
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
+ gap: 8px;
7
+ align-items: center;
8
+ justify-content: center;
9
+
10
+ margin-block-start: 10px;
11
+ `,
12
+ icon: css`
13
+ display: flex;
14
+ flex-shrink: 0;
15
+ align-items: center;
16
+ justify-content: center;
17
+
18
+ width: 56px;
19
+ height: 56px;
20
+ margin-block-end: 8px;
21
+ border-radius: 50%;
22
+ `,
23
+ root: css`
24
+ display: flex;
25
+ flex-direction: column;
26
+ gap: 6px;
27
+ align-items: center;
28
+
29
+ padding-block: 16px;
30
+ padding-inline: 8px;
31
+
32
+ text-align: center;
33
+ `,
34
+ subTitle: css`
35
+ max-width: 36ch;
36
+ margin: 0;
37
+ font-size: 13px;
38
+ color: ${cssVar.colorTextTertiary};
39
+ `,
40
+ title: css`
41
+ margin: 0;
42
+ font-size: 16px;
43
+ font-weight: 600;
44
+ text-wrap: balance;
45
+ `
46
+ }));
47
+ const statusColor = {
48
+ error: cssVar.colorError,
49
+ success: cssVar.colorSuccess,
50
+ warning: cssVar.colorWarning
51
+ };
52
+ //#endregion
53
+ export { statusColor, styles };
54
+
55
+ //# 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 gap: 8px;\n align-items: center;\n justify-content: center;\n\n margin-block-start: 10px;\n `,\n icon: css`\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n\n width: 56px;\n height: 56px;\n margin-block-end: 8px;\n border-radius: 50%;\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: 16px;\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;;;;;;;;CAQV,MAAM,GAAG;;;;;;;;;;;CAWT,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,6 @@
1
+ import { SpinProps } from "./type.mjs";
2
+ //#region src/base-ui/Spin/Spin.d.ts
3
+ declare const Spin: import("react").NamedExoticComponent<SpinProps>;
4
+ //#endregion
5
+ export { Spin as default };
6
+ //# sourceMappingURL=Spin.d.mts.map
@@ -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"}
@@ -0,0 +1,3 @@
1
+ import { SpinProps, SpinSize, SpinVariant } from "./type.mjs";
2
+ import Spin from "./Spin.mjs";
3
+ export { type SpinProps, type SpinSize, type SpinVariant, Spin as default };