wssf-kage-ui 0.1.2 → 0.1.3

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 (83) hide show
  1. package/dist/cjs/Alert/index.d.ts +37 -0
  2. package/dist/cjs/Alert/index.js +124 -0
  3. package/dist/cjs/Alert/style.less +248 -0
  4. package/dist/cjs/Drawer/index.d.ts +57 -0
  5. package/dist/cjs/Drawer/index.js +203 -0
  6. package/dist/cjs/Drawer/style.less +215 -0
  7. package/dist/cjs/FloatButton/index.d.ts +54 -0
  8. package/dist/cjs/FloatButton/index.js +119 -0
  9. package/dist/cjs/FloatButton/style.less +266 -0
  10. package/dist/cjs/Message/index.d.ts +38 -0
  11. package/dist/cjs/Message/index.js +292 -0
  12. package/dist/cjs/Message/style.less +183 -0
  13. package/dist/cjs/Modal/index.d.ts +63 -0
  14. package/dist/cjs/Modal/index.js +254 -0
  15. package/dist/cjs/Modal/style.less +298 -0
  16. package/dist/cjs/Notification/index.d.ts +48 -0
  17. package/dist/cjs/Notification/index.js +340 -0
  18. package/dist/cjs/Notification/style.less +260 -0
  19. package/dist/cjs/Popconfirm/index.d.ts +58 -0
  20. package/dist/cjs/Popconfirm/index.js +393 -0
  21. package/dist/cjs/Popconfirm/style.less +417 -0
  22. package/dist/cjs/Progress/index.d.ts +43 -0
  23. package/dist/cjs/Progress/index.js +213 -0
  24. package/dist/cjs/Progress/style.less +206 -0
  25. package/dist/cjs/Result/index.d.ts +25 -0
  26. package/dist/cjs/Result/index.js +63 -0
  27. package/dist/cjs/Result/style.less +111 -0
  28. package/dist/cjs/Skeleton/index.d.ts +88 -0
  29. package/dist/cjs/Skeleton/index.js +207 -0
  30. package/dist/cjs/Skeleton/style.less +487 -0
  31. package/dist/cjs/Spin/index.d.ts +25 -0
  32. package/dist/cjs/Spin/index.js +98 -0
  33. package/dist/cjs/Spin/style.less +169 -0
  34. package/dist/cjs/Tree/index.d.ts +82 -0
  35. package/dist/cjs/Tree/index.js +226 -0
  36. package/dist/cjs/Tree/style.less +313 -0
  37. package/dist/cjs/Watermark/index.d.ts +41 -0
  38. package/dist/cjs/Watermark/index.js +353 -0
  39. package/dist/cjs/Watermark/style.less +31 -0
  40. package/dist/cjs/index.d.ts +27 -1
  41. package/dist/cjs/index.js +91 -0
  42. package/dist/esm/Alert/index.d.ts +37 -0
  43. package/dist/esm/Alert/index.js +121 -0
  44. package/dist/esm/Alert/style.less +248 -0
  45. package/dist/esm/Drawer/index.d.ts +57 -0
  46. package/dist/esm/Drawer/index.js +202 -0
  47. package/dist/esm/Drawer/style.less +215 -0
  48. package/dist/esm/FloatButton/index.d.ts +54 -0
  49. package/dist/esm/FloatButton/index.js +123 -0
  50. package/dist/esm/FloatButton/style.less +266 -0
  51. package/dist/esm/Message/index.d.ts +38 -0
  52. package/dist/esm/Message/index.js +294 -0
  53. package/dist/esm/Message/style.less +183 -0
  54. package/dist/esm/Modal/index.d.ts +63 -0
  55. package/dist/esm/Modal/index.js +251 -0
  56. package/dist/esm/Modal/style.less +298 -0
  57. package/dist/esm/Notification/index.d.ts +48 -0
  58. package/dist/esm/Notification/index.js +345 -0
  59. package/dist/esm/Notification/style.less +260 -0
  60. package/dist/esm/Popconfirm/index.d.ts +58 -0
  61. package/dist/esm/Popconfirm/index.js +389 -0
  62. package/dist/esm/Popconfirm/style.less +417 -0
  63. package/dist/esm/Progress/index.d.ts +43 -0
  64. package/dist/esm/Progress/index.js +208 -0
  65. package/dist/esm/Progress/style.less +206 -0
  66. package/dist/esm/Result/index.d.ts +25 -0
  67. package/dist/esm/Result/index.js +57 -0
  68. package/dist/esm/Result/style.less +111 -0
  69. package/dist/esm/Skeleton/index.d.ts +88 -0
  70. package/dist/esm/Skeleton/index.js +213 -0
  71. package/dist/esm/Skeleton/style.less +487 -0
  72. package/dist/esm/Spin/index.d.ts +25 -0
  73. package/dist/esm/Spin/index.js +95 -0
  74. package/dist/esm/Spin/style.less +169 -0
  75. package/dist/esm/Tree/index.d.ts +82 -0
  76. package/dist/esm/Tree/index.js +225 -0
  77. package/dist/esm/Tree/style.less +313 -0
  78. package/dist/esm/Watermark/index.d.ts +41 -0
  79. package/dist/esm/Watermark/index.js +349 -0
  80. package/dist/esm/Watermark/style.less +31 -0
  81. package/dist/esm/index.d.ts +27 -1
  82. package/dist/esm/index.js +14 -1
  83. package/package.json +1 -1
@@ -0,0 +1,206 @@
1
+ // Progress 进度条组件样式
2
+
3
+ @prefix: kage-progress;
4
+
5
+ // 颜色变量
6
+ @progress-default-color: #1890ff;
7
+ @progress-success-color: #52c41a;
8
+ @progress-exception-color: #ff4d4f;
9
+ @progress-trail-color: #f0f0f0;
10
+ @progress-text-color: rgba(0, 0, 0, 0.85);
11
+
12
+ // ============ 主容器 ============
13
+ .@{prefix} {
14
+ display: flex;
15
+ align-items: center;
16
+ box-sizing: border-box;
17
+ width: 100%;
18
+
19
+ * {
20
+ box-sizing: border-box;
21
+ }
22
+ }
23
+
24
+ .@{prefix}-line {
25
+ display: flex;
26
+ align-items: center;
27
+ width: 100%;
28
+ }
29
+
30
+ // ============ 线形进度条 ============
31
+ .@{prefix}-outer {
32
+ display: inline-block;
33
+ flex: 1;
34
+ margin-right: 0;
35
+ padding-right: 0;
36
+ vertical-align: middle;
37
+ }
38
+
39
+ .@{prefix}-inner {
40
+ position: relative;
41
+ display: inline-block;
42
+ width: 100%;
43
+ height: 100%;
44
+ overflow: hidden;
45
+ vertical-align: middle;
46
+ background-color: @progress-trail-color;
47
+ border-radius: 100px;
48
+ }
49
+
50
+ .@{prefix}-bg {
51
+ position: relative;
52
+ height: 100%;
53
+ background-color: @progress-default-color;
54
+ border-radius: 100px;
55
+ transition: all 0.4s cubic-bezier(0.08, 0.82, 0.17, 1);
56
+ }
57
+
58
+ .@{prefix}-bg-active {
59
+ &::before {
60
+ position: absolute;
61
+ top: 0;
62
+ left: 0;
63
+ bottom: 0;
64
+ background: #fff;
65
+ border-radius: 10px;
66
+ opacity: 0;
67
+ animation: progress-active 2.4s cubic-bezier(0.23, 1, 0.32, 1) infinite;
68
+ content: '';
69
+ }
70
+ }
71
+
72
+ @keyframes progress-active {
73
+ 0% {
74
+ width: 0;
75
+ opacity: 0.1;
76
+ }
77
+ 20% {
78
+ width: 0;
79
+ opacity: 0.5;
80
+ }
81
+ 100% {
82
+ width: 100%;
83
+ opacity: 0;
84
+ }
85
+ }
86
+
87
+ .@{prefix}-success-bg {
88
+ position: absolute;
89
+ top: 0;
90
+ left: 0;
91
+ height: 100%;
92
+ background-color: @progress-success-color;
93
+ border-radius: 100px;
94
+ transition: all 0.4s cubic-bezier(0.08, 0.82, 0.17, 1);
95
+ z-index: 1;
96
+ }
97
+
98
+ // ============ 步骤进度条 ============
99
+ .@{prefix}-steps {
100
+ display: flex;
101
+ gap: 2px;
102
+ width: 100%;
103
+ }
104
+
105
+ .@{prefix}-step {
106
+ height: 8px;
107
+ background-color: @progress-trail-color;
108
+ border-radius: 1px;
109
+ transition: all 0.3s;
110
+
111
+ &-active {
112
+ background-color: @progress-default-color;
113
+ }
114
+
115
+ &-success {
116
+ background-color: @progress-success-color;
117
+ }
118
+ }
119
+
120
+ // ============ 圆形进度条 ============
121
+ .@{prefix}-circle {
122
+ position: relative;
123
+ display: inline-block;
124
+ line-height: 1;
125
+ }
126
+
127
+ .@{prefix}-circle-trail {
128
+ transition: stroke-dashoffset 0.3s ease;
129
+ }
130
+
131
+ .@{prefix}-circle-path {
132
+ transition: stroke-dashoffset 0.3s ease;
133
+ }
134
+
135
+ .@{prefix}-circle-text {
136
+ position: absolute;
137
+ top: 50%;
138
+ left: 50%;
139
+ width: 100%;
140
+ margin: 0;
141
+ padding: 0;
142
+ color: @progress-text-color;
143
+ font-size: 1em;
144
+ line-height: 1;
145
+ text-align: center;
146
+ transform: translate(-50%, -50%);
147
+ pointer-events: none;
148
+ }
149
+
150
+ // ============ 文本 ============
151
+ .@{prefix}-text {
152
+ display: inline-block;
153
+ width: 2em;
154
+ margin-left: 8px;
155
+ color: @progress-text-color;
156
+ font-size: 14px;
157
+ line-height: 1;
158
+ text-align: left;
159
+ vertical-align: middle;
160
+ word-break: normal;
161
+ }
162
+
163
+ // ============ 状态 ============
164
+ .@{prefix}-status-success {
165
+ .@{prefix}-bg {
166
+ background-color: @progress-success-color;
167
+ }
168
+ }
169
+
170
+ .@{prefix}-status-exception {
171
+ .@{prefix}-bg {
172
+ background-color: @progress-exception-color;
173
+ }
174
+ }
175
+
176
+ // ============ 暗色模式适配 ============
177
+ [data-theme='dark'],
178
+ [data-prefers-color-scheme='dark'],
179
+ [data-prefers-color='dark'],
180
+ html.dark,
181
+ body.dark,
182
+ .dark {
183
+ .@{prefix} {
184
+ .@{prefix}-inner {
185
+ background-color: rgba(255, 255, 255, 0.08);
186
+ }
187
+
188
+ .@{prefix}-trail {
189
+ background-color: rgba(255, 255, 255, 0.08);
190
+ }
191
+
192
+ .@{prefix}-step {
193
+ background-color: rgba(255, 255, 255, 0.08);
194
+ }
195
+
196
+ .@{prefix}-circle-trail {
197
+ stroke: rgba(255, 255, 255, 0.08);
198
+ }
199
+
200
+ .@{prefix}-text,
201
+ .@{prefix}-circle-text {
202
+ color: rgba(255, 255, 255, 0.85);
203
+ }
204
+ }
205
+ }
206
+
@@ -0,0 +1,25 @@
1
+ import React, { ReactNode, CSSProperties } from 'react';
2
+ import './style.less';
3
+ /** Result 状态类型 */
4
+ export type ResultStatus = 'success' | 'error' | 'info' | 'warning' | '404' | '403' | '500';
5
+ /** Result 属性 */
6
+ export interface ResultProps {
7
+ /** 结果状态 */
8
+ status?: ResultStatus;
9
+ /** 标题 */
10
+ title?: ReactNode;
11
+ /** 副标题 */
12
+ subTitle?: ReactNode;
13
+ /** 自定义图标 */
14
+ icon?: ReactNode;
15
+ /** 操作区 */
16
+ extra?: ReactNode;
17
+ /** 自定义类名 */
18
+ className?: string;
19
+ /** 自定义样式 */
20
+ style?: CSSProperties;
21
+ /** 子元素 */
22
+ children?: ReactNode;
23
+ }
24
+ export declare const Result: React.FC<ResultProps>;
25
+ export default Result;
@@ -0,0 +1,57 @@
1
+ import React from 'react';
2
+ import "./style.less";
3
+
4
+ // ============ 类型定义 ============
5
+
6
+ /** Result 状态类型 */
7
+
8
+ /** Result 属性 */
9
+ import { jsx as _jsx } from "react/jsx-runtime";
10
+ import { jsxs as _jsxs } from "react/jsx-runtime";
11
+ // ============ 默认图标 ============
12
+ var defaultIcons = {
13
+ success: '✓',
14
+ error: '✕',
15
+ info: 'ℹ',
16
+ warning: '⚠',
17
+ 404: '404',
18
+ 403: '403',
19
+ 500: '500'
20
+ };
21
+
22
+ // ============ Result 组件 ============
23
+ export var Result = function Result(_ref) {
24
+ var _ref$status = _ref.status,
25
+ status = _ref$status === void 0 ? 'info' : _ref$status,
26
+ title = _ref.title,
27
+ subTitle = _ref.subTitle,
28
+ icon = _ref.icon,
29
+ extra = _ref.extra,
30
+ _ref$className = _ref.className,
31
+ className = _ref$className === void 0 ? '' : _ref$className,
32
+ style = _ref.style,
33
+ children = _ref.children;
34
+ var iconNode = icon !== undefined ? icon : defaultIcons[status];
35
+ var classNames = ['kage-result', "kage-result-".concat(status), className].filter(Boolean).join(' ');
36
+ return /*#__PURE__*/_jsxs("div", {
37
+ className: classNames,
38
+ style: style,
39
+ children: [/*#__PURE__*/_jsx("div", {
40
+ className: "kage-result-icon",
41
+ children: iconNode
42
+ }), title && /*#__PURE__*/_jsx("div", {
43
+ className: "kage-result-title",
44
+ children: title
45
+ }), subTitle && /*#__PURE__*/_jsx("div", {
46
+ className: "kage-result-subtitle",
47
+ children: subTitle
48
+ }), children && /*#__PURE__*/_jsx("div", {
49
+ className: "kage-result-content",
50
+ children: children
51
+ }), extra && /*#__PURE__*/_jsx("div", {
52
+ className: "kage-result-extra",
53
+ children: extra
54
+ })]
55
+ });
56
+ };
57
+ export default Result;
@@ -0,0 +1,111 @@
1
+ // Result 结果页组件样式
2
+
3
+ @prefix: kage-result;
4
+
5
+ // 颜色变量
6
+ @result-success-color: #52c41a;
7
+ @result-error-color: #ff4d4f;
8
+ @result-info-color: #1890ff;
9
+ @result-warning-color: #faad14;
10
+ @result-title-color: rgba(0, 0, 0, 0.85);
11
+ @result-subtitle-color: rgba(0, 0, 0, 0.45);
12
+
13
+ // ============ 主容器 ============
14
+ .@{prefix} {
15
+ padding: 48px 32px;
16
+ text-align: center;
17
+ box-sizing: border-box;
18
+
19
+ * {
20
+ box-sizing: border-box;
21
+ }
22
+ }
23
+
24
+ // ============ 图标 ============
25
+ .@{prefix}-icon {
26
+ margin-bottom: 24px;
27
+ font-size: 72px;
28
+ line-height: 1;
29
+ text-align: center;
30
+ }
31
+
32
+ .@{prefix}-success .@{prefix}-icon {
33
+ color: @result-success-color;
34
+ }
35
+
36
+ .@{prefix}-error .@{prefix}-icon {
37
+ color: @result-error-color;
38
+ }
39
+
40
+ .@{prefix}-info .@{prefix}-icon {
41
+ color: @result-info-color;
42
+ }
43
+
44
+ .@{prefix}-warning .@{prefix}-icon {
45
+ color: @result-warning-color;
46
+ }
47
+
48
+ .@{prefix}-404 .@{prefix}-icon,
49
+ .@{prefix}-403 .@{prefix}-icon,
50
+ .@{prefix}-500 .@{prefix}-icon {
51
+ color: @result-title-color;
52
+ font-size: 120px;
53
+ font-weight: 600;
54
+ line-height: 1;
55
+ }
56
+
57
+ // ============ 标题 ============
58
+ .@{prefix}-title {
59
+ margin-bottom: 16px;
60
+ color: @result-title-color;
61
+ font-size: 24px;
62
+ font-weight: 500;
63
+ line-height: 1.5;
64
+ text-align: center;
65
+ }
66
+
67
+ // ============ 副标题 ============
68
+ .@{prefix}-subtitle {
69
+ margin-bottom: 24px;
70
+ color: @result-subtitle-color;
71
+ font-size: 14px;
72
+ line-height: 1.5715;
73
+ text-align: center;
74
+ }
75
+
76
+ // ============ 内容 ============
77
+ .@{prefix}-content {
78
+ margin-bottom: 24px;
79
+ text-align: center;
80
+ }
81
+
82
+ // ============ 操作区 ============
83
+ .@{prefix}-extra {
84
+ margin-top: 32px;
85
+ text-align: center;
86
+ }
87
+
88
+ // ============ 暗色模式适配 ============
89
+ [data-theme='dark'],
90
+ [data-prefers-color-scheme='dark'],
91
+ [data-prefers-color='dark'],
92
+ html.dark,
93
+ body.dark,
94
+ .dark {
95
+ .@{prefix} {
96
+ .@{prefix}-title {
97
+ color: rgba(255, 255, 255, 0.85);
98
+ }
99
+
100
+ .@{prefix}-subtitle {
101
+ color: rgba(255, 255, 255, 0.45);
102
+ }
103
+
104
+ .@{prefix}-404 .@{prefix}-icon,
105
+ .@{prefix}-403 .@{prefix}-icon,
106
+ .@{prefix}-500 .@{prefix}-icon {
107
+ color: rgba(255, 255, 255, 0.85);
108
+ }
109
+ }
110
+ }
111
+
@@ -0,0 +1,88 @@
1
+ import React, { ReactNode, CSSProperties } from 'react';
2
+ import './style.less';
3
+ /** Skeleton 属性 */
4
+ export interface SkeletonProps {
5
+ /** 是否显示动画效果 */
6
+ active?: boolean;
7
+ /** 是否显示头像占位图 */
8
+ avatar?: boolean | {
9
+ size?: 'large' | 'small' | 'default';
10
+ shape?: 'circle' | 'square';
11
+ };
12
+ /** 是否显示段落占位图 */
13
+ paragraph?: boolean | {
14
+ rows?: number;
15
+ width?: number | string | (number | string)[];
16
+ };
17
+ /** 是否显示标题占位图 */
18
+ title?: boolean | {
19
+ width?: number | string;
20
+ };
21
+ /** 是否加载中 */
22
+ loading?: boolean;
23
+ /** 自定义类名 */
24
+ className?: string;
25
+ /** 自定义样式 */
26
+ style?: CSSProperties;
27
+ /** 子元素(当 loading 为 false 时显示) */
28
+ children?: ReactNode;
29
+ /** 是否圆角 */
30
+ round?: boolean;
31
+ }
32
+ /** SkeletonButton 属性 */
33
+ export interface SkeletonButtonProps {
34
+ /** 按钮大小 */
35
+ size?: 'large' | 'small' | 'default';
36
+ /** 是否块级按钮 */
37
+ block?: boolean;
38
+ /** 是否显示动画效果 */
39
+ active?: boolean;
40
+ /** 自定义类名 */
41
+ className?: string;
42
+ /** 自定义样式 */
43
+ style?: CSSProperties;
44
+ }
45
+ /** SkeletonInput 属性 */
46
+ export interface SkeletonInputProps {
47
+ /** 输入框大小 */
48
+ size?: 'large' | 'small' | 'default';
49
+ /** 是否块级输入框 */
50
+ block?: boolean;
51
+ /** 是否显示动画效果 */
52
+ active?: boolean;
53
+ /** 自定义类名 */
54
+ className?: string;
55
+ /** 自定义样式 */
56
+ style?: CSSProperties;
57
+ }
58
+ /** SkeletonImage 属性 */
59
+ export interface SkeletonImageProps {
60
+ /** 图片大小 */
61
+ size?: number | 'large' | 'small' | 'default';
62
+ /** 是否显示动画效果 */
63
+ active?: boolean;
64
+ /** 自定义类名 */
65
+ className?: string;
66
+ /** 自定义样式 */
67
+ style?: CSSProperties;
68
+ }
69
+ /** SkeletonAvatar 属性 */
70
+ export interface SkeletonAvatarProps {
71
+ /** 头像大小 */
72
+ size?: 'large' | 'small' | 'default' | number;
73
+ /** 头像形状 */
74
+ shape?: 'circle' | 'square';
75
+ /** 是否显示动画效果 */
76
+ active?: boolean;
77
+ /** 自定义类名 */
78
+ className?: string;
79
+ /** 自定义样式 */
80
+ style?: CSSProperties;
81
+ }
82
+ export declare const Skeleton: React.FC<SkeletonProps> & {
83
+ Button: React.FC<SkeletonButtonProps>;
84
+ Input: React.FC<SkeletonInputProps>;
85
+ Image: React.FC<SkeletonImageProps>;
86
+ Avatar: React.FC<SkeletonAvatarProps>;
87
+ };
88
+ export default Skeleton;
@@ -0,0 +1,213 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
6
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
+ import React from 'react';
8
+ import "./style.less";
9
+
10
+ // ============ 类型定义 ============
11
+
12
+ /** Skeleton 属性 */
13
+
14
+ /** SkeletonButton 属性 */
15
+
16
+ /** SkeletonInput 属性 */
17
+
18
+ /** SkeletonImage 属性 */
19
+
20
+ /** SkeletonAvatar 属性 */
21
+ import { Fragment as _Fragment } from "react/jsx-runtime";
22
+ import { jsx as _jsx } from "react/jsx-runtime";
23
+ import { jsxs as _jsxs } from "react/jsx-runtime";
24
+ // ============ Skeleton 组件 ============
25
+ export var Skeleton = function Skeleton(_ref) {
26
+ var _ref$active = _ref.active,
27
+ active = _ref$active === void 0 ? false : _ref$active,
28
+ _ref$avatar = _ref.avatar,
29
+ avatar = _ref$avatar === void 0 ? false : _ref$avatar,
30
+ _ref$paragraph = _ref.paragraph,
31
+ paragraph = _ref$paragraph === void 0 ? true : _ref$paragraph,
32
+ _ref$title = _ref.title,
33
+ title = _ref$title === void 0 ? true : _ref$title,
34
+ _ref$loading = _ref.loading,
35
+ loading = _ref$loading === void 0 ? true : _ref$loading,
36
+ _ref$className = _ref.className,
37
+ className = _ref$className === void 0 ? '' : _ref$className,
38
+ style = _ref.style,
39
+ children = _ref.children,
40
+ _ref$round = _ref.round,
41
+ round = _ref$round === void 0 ? false : _ref$round;
42
+ if (!loading && children) {
43
+ return /*#__PURE__*/_jsx(_Fragment, {
44
+ children: children
45
+ });
46
+ }
47
+
48
+ // 解析 avatar 配置
49
+ var avatarConfig = typeof avatar === 'boolean' ? {
50
+ size: 'default',
51
+ shape: 'circle'
52
+ } : avatar;
53
+ var avatarSize = avatarConfig.size || 'default';
54
+ var avatarShape = avatarConfig.shape || 'circle';
55
+
56
+ // 解析 title 配置
57
+ var titleConfig = typeof title === 'boolean' ? {
58
+ width: '38%'
59
+ } : title;
60
+ var titleWidth = titleConfig.width || '38%';
61
+
62
+ // 解析 paragraph 配置
63
+ var paragraphConfig = typeof paragraph === 'boolean' ? {
64
+ rows: 3,
65
+ width: '100%'
66
+ } : paragraph;
67
+ var paragraphRows = paragraphConfig.rows || 3;
68
+ var paragraphWidth = paragraphConfig.width || '100%';
69
+ var paragraphWidths = Array.isArray(paragraphWidth) ? paragraphWidth : [paragraphWidth];
70
+ var classNames = ['kage-skeleton', active && 'kage-skeleton-active', round && 'kage-skeleton-round', className].filter(Boolean).join(' ');
71
+ return /*#__PURE__*/_jsxs("div", {
72
+ className: classNames,
73
+ style: style,
74
+ children: [avatar && /*#__PURE__*/_jsx("div", {
75
+ className: "kage-skeleton-avatar kage-skeleton-avatar-".concat(avatarSize, " kage-skeleton-avatar-").concat(avatarShape),
76
+ children: /*#__PURE__*/_jsx("span", {
77
+ className: "kage-skeleton-avatar-content"
78
+ })
79
+ }), /*#__PURE__*/_jsxs("div", {
80
+ className: "kage-skeleton-content",
81
+ children: [title && /*#__PURE__*/_jsx("div", {
82
+ className: "kage-skeleton-title",
83
+ style: {
84
+ width: typeof titleWidth === 'number' ? "".concat(titleWidth, "px") : titleWidth
85
+ },
86
+ children: /*#__PURE__*/_jsx("span", {
87
+ className: "kage-skeleton-title-content"
88
+ })
89
+ }), paragraph && /*#__PURE__*/_jsx("div", {
90
+ className: "kage-skeleton-paragraph",
91
+ children: Array.from({
92
+ length: paragraphRows
93
+ }).map(function (_, index) {
94
+ var width = paragraphWidths[index] || paragraphWidths[paragraphWidths.length - 1] || '100%';
95
+ return /*#__PURE__*/_jsx("div", {
96
+ className: "kage-skeleton-paragraph-line",
97
+ style: {
98
+ width: typeof width === 'number' ? "".concat(width, "px") : width
99
+ },
100
+ children: /*#__PURE__*/_jsx("span", {
101
+ className: "kage-skeleton-paragraph-line-content"
102
+ })
103
+ }, index);
104
+ })
105
+ })]
106
+ })]
107
+ });
108
+ };
109
+
110
+ // ============ SkeletonButton 组件 ============
111
+ var SkeletonButton = function SkeletonButton(_ref2) {
112
+ var _ref2$size = _ref2.size,
113
+ size = _ref2$size === void 0 ? 'default' : _ref2$size,
114
+ _ref2$block = _ref2.block,
115
+ block = _ref2$block === void 0 ? false : _ref2$block,
116
+ _ref2$active = _ref2.active,
117
+ active = _ref2$active === void 0 ? false : _ref2$active,
118
+ _ref2$className = _ref2.className,
119
+ className = _ref2$className === void 0 ? '' : _ref2$className,
120
+ style = _ref2.style;
121
+ var classNames = ['kage-skeleton-button', "kage-skeleton-button-".concat(size), block && 'kage-skeleton-button-block', active && 'kage-skeleton-active', className].filter(Boolean).join(' ');
122
+ return /*#__PURE__*/_jsx("div", {
123
+ className: classNames,
124
+ style: style,
125
+ children: /*#__PURE__*/_jsx("span", {
126
+ className: "kage-skeleton-button-content"
127
+ })
128
+ });
129
+ };
130
+
131
+ // ============ SkeletonInput 组件 ============
132
+ var SkeletonInput = function SkeletonInput(_ref3) {
133
+ var _ref3$size = _ref3.size,
134
+ size = _ref3$size === void 0 ? 'default' : _ref3$size,
135
+ _ref3$block = _ref3.block,
136
+ block = _ref3$block === void 0 ? false : _ref3$block,
137
+ _ref3$active = _ref3.active,
138
+ active = _ref3$active === void 0 ? false : _ref3$active,
139
+ _ref3$className = _ref3.className,
140
+ className = _ref3$className === void 0 ? '' : _ref3$className,
141
+ style = _ref3.style;
142
+ var classNames = ['kage-skeleton-input', "kage-skeleton-input-".concat(size), block && 'kage-skeleton-input-block', active && 'kage-skeleton-active', className].filter(Boolean).join(' ');
143
+ return /*#__PURE__*/_jsx("div", {
144
+ className: classNames,
145
+ style: style,
146
+ children: /*#__PURE__*/_jsx("span", {
147
+ className: "kage-skeleton-input-content"
148
+ })
149
+ });
150
+ };
151
+
152
+ // ============ SkeletonImage 组件 ============
153
+ var SkeletonImage = function SkeletonImage(_ref4) {
154
+ var _ref4$size = _ref4.size,
155
+ size = _ref4$size === void 0 ? 'default' : _ref4$size,
156
+ _ref4$active = _ref4.active,
157
+ active = _ref4$active === void 0 ? false : _ref4$active,
158
+ _ref4$className = _ref4.className,
159
+ className = _ref4$className === void 0 ? '' : _ref4$className,
160
+ style = _ref4.style;
161
+ var sizeMap = {
162
+ default: 96,
163
+ small: 64,
164
+ large: 128
165
+ };
166
+ var imageSize = typeof size === 'number' ? size : sizeMap[size] || 96;
167
+ var classNames = ['kage-skeleton-image', active && 'kage-skeleton-active', className].filter(Boolean).join(' ');
168
+ return /*#__PURE__*/_jsx("div", {
169
+ className: classNames,
170
+ style: _objectSpread({
171
+ width: imageSize,
172
+ height: imageSize
173
+ }, style),
174
+ children: /*#__PURE__*/_jsx("span", {
175
+ className: "kage-skeleton-image-content"
176
+ })
177
+ });
178
+ };
179
+
180
+ // ============ SkeletonAvatar 组件 ============
181
+ var SkeletonAvatar = function SkeletonAvatar(_ref5) {
182
+ var _ref5$size = _ref5.size,
183
+ size = _ref5$size === void 0 ? 'default' : _ref5$size,
184
+ _ref5$shape = _ref5.shape,
185
+ shape = _ref5$shape === void 0 ? 'circle' : _ref5$shape,
186
+ _ref5$active = _ref5.active,
187
+ active = _ref5$active === void 0 ? false : _ref5$active,
188
+ _ref5$className = _ref5.className,
189
+ className = _ref5$className === void 0 ? '' : _ref5$className,
190
+ style = _ref5.style;
191
+ var sizeMap = {
192
+ default: 32,
193
+ small: 24,
194
+ large: 40
195
+ };
196
+ var avatarSize = typeof size === 'number' ? size : sizeMap[size] || 32;
197
+ var classNames = ['kage-skeleton-avatar', "kage-skeleton-avatar-".concat(shape), active && 'kage-skeleton-active', className].filter(Boolean).join(' ');
198
+ return /*#__PURE__*/_jsx("div", {
199
+ className: classNames,
200
+ style: _objectSpread({
201
+ width: avatarSize,
202
+ height: avatarSize
203
+ }, style),
204
+ children: /*#__PURE__*/_jsx("span", {
205
+ className: "kage-skeleton-avatar-content"
206
+ })
207
+ });
208
+ };
209
+ Skeleton.Button = SkeletonButton;
210
+ Skeleton.Input = SkeletonInput;
211
+ Skeleton.Image = SkeletonImage;
212
+ Skeleton.Avatar = SkeletonAvatar;
213
+ export default Skeleton;