@cyberpunk-vue/theme-chalk 1.14.0 → 1.14.2

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 (47) hide show
  1. package/dist/index.css +1 -1
  2. package/dist/index.css.map +1 -1
  3. package/package.json +1 -1
  4. package/src/common/var.scss +247 -247
  5. package/src/components/avatar-group.scss +113 -113
  6. package/src/components/avatar.scss +123 -123
  7. package/src/components/badge.scss +210 -210
  8. package/src/components/breadcrumb.scss +203 -203
  9. package/src/components/button.scss +975 -975
  10. package/src/components/card.scss +699 -696
  11. package/src/components/checkbox-group.scss +22 -22
  12. package/src/components/checkbox.scss +320 -320
  13. package/src/components/col.scss +43 -43
  14. package/src/components/dialog.scss +360 -360
  15. package/src/components/divider.scss +250 -250
  16. package/src/components/empty.scss +99 -99
  17. package/src/components/form-item.scss +189 -189
  18. package/src/components/form.scss +59 -59
  19. package/src/components/icon.scss +83 -83
  20. package/src/components/image-preview.scss +147 -147
  21. package/src/components/image.scss +351 -351
  22. package/src/components/input-number.scss +129 -129
  23. package/src/components/input.scss +362 -362
  24. package/src/components/loading.scss +64 -64
  25. package/src/components/notification.scss +348 -348
  26. package/src/components/pagination.scss +287 -280
  27. package/src/components/pattern-background.scss +18 -18
  28. package/src/components/popover.scss +438 -438
  29. package/src/components/progress.scss +438 -438
  30. package/src/components/radio-group.scss +22 -22
  31. package/src/components/radio.scss +286 -286
  32. package/src/components/row.scss +12 -12
  33. package/src/components/scrollbar.scss +40 -40
  34. package/src/components/segmented.scss +566 -566
  35. package/src/components/select.scss +15 -1
  36. package/src/components/slider.scss +421 -421
  37. package/src/components/status-indicator.scss +206 -206
  38. package/src/components/switch.scss +405 -405
  39. package/src/components/table.scss +474 -474
  40. package/src/components/tag.scss +416 -416
  41. package/src/components/text.scss +310 -271
  42. package/src/components/textarea.scss +106 -104
  43. package/src/components/timeline.scss +379 -379
  44. package/src/components/tree.scss +397 -397
  45. package/src/components/upload.scss +509 -509
  46. package/src/index.scss +60 -60
  47. package/src/mixins/mixins.scss +156 -156
@@ -1,348 +1,348 @@
1
- // CpNotification 组件样式
2
- // 赛博朋克/机甲风格通知提醒
3
-
4
- @use '../common/var' as *;
5
- @use '../mixins/mixins' as *;
6
-
7
- // ===== 动画 =====
8
-
9
- // 右侧滑入
10
- @keyframes cp-notification-right-in {
11
- from {
12
- opacity: 0;
13
- transform: translateX(100%);
14
- }
15
- to {
16
- opacity: 1;
17
- transform: translateX(0);
18
- }
19
- }
20
-
21
- @keyframes cp-notification-right-out {
22
- from {
23
- opacity: 1;
24
- transform: translateX(0);
25
- }
26
- to {
27
- opacity: 0;
28
- transform: translateX(100%);
29
- }
30
- }
31
-
32
- // 左侧滑入
33
- @keyframes cp-notification-left-in {
34
- from {
35
- opacity: 0;
36
- transform: translateX(-100%);
37
- }
38
- to {
39
- opacity: 1;
40
- transform: translateX(0);
41
- }
42
- }
43
-
44
- @keyframes cp-notification-left-out {
45
- from {
46
- opacity: 1;
47
- transform: translateX(0);
48
- }
49
- to {
50
- opacity: 0;
51
- transform: translateX(-100%);
52
- }
53
- }
54
-
55
- // 自动关闭进度条倒计时
56
- @keyframes cp-notification-countdown {
57
- from {
58
- width: 100%;
59
- }
60
- to {
61
- width: 0%;
62
- }
63
- }
64
-
65
- // ===== Transition classes =====
66
- .cp-notification-right-enter-active {
67
- animation: cp-notification-right-in var(--cp-notification-animation-duration, 300ms) cubic-bezier(0.16, 1, 0.3, 1);
68
- }
69
-
70
- .cp-notification-right-leave-active {
71
- animation: cp-notification-right-out var(--cp-notification-animation-duration, 300ms) ease-in forwards;
72
- }
73
-
74
- .cp-notification-left-enter-active {
75
- animation: cp-notification-left-in var(--cp-notification-animation-duration, 300ms) cubic-bezier(0.16, 1, 0.3, 1);
76
- }
77
-
78
- .cp-notification-left-leave-active {
79
- animation: cp-notification-left-out var(--cp-notification-animation-duration, 300ms) ease-in forwards;
80
- }
81
-
82
- @include b(notification) {
83
- --cp-notification-color: var(--cp-border);
84
- --cp-notification-color-light: rgba(255, 255, 255, 0.1);
85
- --cp-notification-bg: var(--cp-bg-elevated);
86
- --cp-notification-clip-path: polygon(
87
- 8px 0, 100% 0,
88
- 100% calc(100% - 8px), calc(100% - 8px) 100%,
89
- 0 100%, 0 8px
90
- );
91
-
92
- position: fixed;
93
- display: flex;
94
- align-items: flex-start;
95
- gap: var(--cp-spacing-md);
96
- padding: var(--cp-spacing-md) var(--cp-spacing-lg);
97
- min-height: 60px;
98
- overflow: hidden;
99
- background: var(--cp-notification-bg);
100
- border: 1px solid var(--cp-notification-border-color, var(--cp-border));
101
- color: var(--cp-notification-text-color, var(--cp-text-secondary));
102
- clip-path: var(--cp-notification-clip-path);
103
- box-shadow:
104
- 0 6px 24px rgba(0, 0, 0, 0.5),
105
- 0 0 1px var(--cp-notification-color),
106
- inset 0 0 20px color-mix(in srgb, var(--cp-color-primary) 2%, transparent);
107
- transition: top 0.3s cubic-bezier(0.16, 1, 0.3, 1), bottom 0.3s cubic-bezier(0.16, 1, 0.3, 1);
108
- font-family: var(--cp-font-family-ui);
109
-
110
- // ===== 类型变体颜色 =====
111
- @each $type in (primary, success, warning, error, info) {
112
- &.cp-notification--#{$type} {
113
- --cp-notification-color: var(--cp-color-#{$type});
114
- --cp-notification-color-light: var(--cp-color-#{$type}-light);
115
- }
116
- }
117
-
118
- // ===== 变体样式 =====
119
-
120
- // Solid
121
- @include m(solid) {
122
- background: var(--cp-notification-bg);
123
-
124
- // 顶部荧光线
125
- &::before {
126
- content: '';
127
- position: absolute;
128
- top: 0;
129
- left: 0;
130
- width: 100%;
131
- height: 36px;
132
- background: linear-gradient(to bottom, var(--cp-notification-color) 2px, var(--cp-notification-color-light) 2px, transparent 100%);
133
- opacity: 0;
134
- pointer-events: none;
135
- z-index: 1;
136
- transition: opacity 0.3s ease;
137
- }
138
-
139
- // 有类型色时显示
140
- &.cp-notification--primary::before,
141
- &.cp-notification--success::before,
142
- &.cp-notification--warning::before,
143
- &.cp-notification--error::before,
144
- &.cp-notification--info::before {
145
- opacity: 0.8;
146
- }
147
-
148
- // 自定义 color
149
- &[style*='--cp-notification-color']::before {
150
- opacity: 0.8;
151
- }
152
- }
153
-
154
- // Semi (毛玻璃)
155
- @include m(semi) {
156
- --cp-notification-bg: color-mix(in srgb, var(--cp-border) 60%, transparent);
157
- backdrop-filter: blur(12px);
158
- border-color: var(--cp-notification-color-light);
159
-
160
- &.cp-notification--primary,
161
- &.cp-notification--success,
162
- &.cp-notification--warning,
163
- &.cp-notification--error,
164
- &.cp-notification--info {
165
- --cp-notification-bg: color-mix(in srgb, var(--cp-bg-elevated) 80%, var(--cp-notification-color));
166
- }
167
- }
168
-
169
- // Outline
170
- @include m(outline) {
171
- background: transparent;
172
- border-color: var(--cp-notification-color);
173
- backdrop-filter: blur(6px);
174
-
175
- &.cp-notification--default {
176
- border-color: var(--cp-border);
177
- }
178
- }
179
-
180
- // ===== 形状 =====
181
- @include m(shape-clip) {
182
- clip-path: var(--cp-notification-clip-path);
183
- }
184
-
185
- @include m(shape-no-clip) {
186
- clip-path: none;
187
- border-radius: 0;
188
-
189
- .cp-notification__decor {
190
- display: none;
191
- }
192
- }
193
-
194
- @include m(shape-round) {
195
- clip-path: none;
196
- border-radius: var(--cp-radius-lg);
197
- overflow: hidden;
198
-
199
- .cp-notification__decor {
200
- display: none;
201
- }
202
- }
203
-
204
- // ===== 装饰方块 (右上角) =====
205
- @include e(decor) {
206
- position: absolute;
207
- top: 0;
208
- right: 0;
209
- width: 8px;
210
- height: 8px;
211
- background: var(--cp-notification-color);
212
- opacity: 0.5;
213
- z-index: 2;
214
- pointer-events: none;
215
- transition: opacity 0.3s ease;
216
- }
217
-
218
- &:hover .cp-notification__decor {
219
- opacity: 1;
220
- }
221
-
222
- // ===== 图标区域 =====
223
- @include e(icon) {
224
- display: flex;
225
- align-items: center;
226
- justify-content: center;
227
- flex-shrink: 0;
228
- width: 24px;
229
- height: 24px;
230
- color: var(--cp-notification-color);
231
- margin-top: 2px;
232
-
233
- svg {
234
- width: 100%;
235
- height: 100%;
236
- }
237
- }
238
-
239
- // ===== 内容组 =====
240
- @include e(group) {
241
- flex: 1;
242
- min-width: 0;
243
- overflow: hidden;
244
- }
245
-
246
- // ===== 标题 =====
247
- @include e(title) {
248
- font-family: var(--cp-font-family-display);
249
- font-weight: 600;
250
- font-size: var(--cp-font-size-md);
251
- text-transform: uppercase;
252
- color: var(--cp-notification-title-color, var(--cp-text-primary));
253
- margin-bottom: 4px;
254
-
255
- // 标题文字截断
256
- white-space: nowrap;
257
- overflow: hidden;
258
- text-overflow: ellipsis;
259
- }
260
-
261
- // ===== 消息内容 =====
262
- @include e(content) {
263
- font-size: var(--cp-font-size-sm);
264
- color: var(--cp-notification-text-color, var(--cp-text-secondary));
265
- word-break: break-word;
266
-
267
- p {
268
- margin: 0;
269
- }
270
- }
271
-
272
- // ===== 操作区 =====
273
- @include e(actions) {
274
- display: flex;
275
- align-items: center;
276
- gap: var(--cp-spacing-sm);
277
- margin-top: var(--cp-spacing-sm);
278
- }
279
-
280
- // ===== 可点击状态 =====
281
- &.is-clickable {
282
- cursor: pointer;
283
- }
284
-
285
- // ===== 默认禁止文本选中 =====
286
- user-select: none;
287
-
288
- // ===== 可选中状态 =====
289
- &.is-selectable {
290
- .cp-notification__title,
291
- .cp-notification__content {
292
- user-select: text;
293
- }
294
- }
295
-
296
- // ===== 关闭按钮 =====
297
- @include e(close) {
298
- display: flex;
299
- align-items: center;
300
- justify-content: center;
301
- width: 24px;
302
- height: 24px;
303
- border: 1px solid transparent;
304
- background: transparent;
305
- color: var(--cp-notification-color);
306
- cursor: pointer;
307
- transition: all 0.2s ease;
308
- flex-shrink: 0;
309
- padding: 0;
310
- margin-top: 2px;
311
-
312
- &:hover {
313
- color: var(--cp-notification-color);
314
- border-color: var(--cp-notification-color);
315
- background: var(--cp-notification-color-light);
316
- box-shadow: 0 0 8px var(--cp-notification-color-light);
317
- }
318
-
319
- &:active {
320
- transform: scale(0.9);
321
- }
322
- }
323
-
324
- // ===== 自动关闭进度条 =====
325
- @include e(progress) {
326
- position: absolute;
327
- left: 0;
328
- bottom: 0;
329
- height: 2px;
330
- background: var(--cp-notification-color);
331
- opacity: 0.7;
332
- animation: cp-notification-countdown var(--cp-notification-duration, 4500ms) linear forwards;
333
- z-index: 2;
334
- }
335
-
336
- // Hover 时暂停进度条
337
- &:hover .cp-notification__progress {
338
- animation-play-state: paused;
339
- }
340
-
341
- // ===== Hover 效果 =====
342
- &:hover {
343
- box-shadow:
344
- 0 8px 32px rgba(0, 0, 0, 0.6),
345
- 0 0 4px var(--cp-notification-color),
346
- inset 0 0 30px color-mix(in srgb, var(--cp-color-primary) 3%, transparent);
347
- }
348
- }
1
+ // CpNotification 组件样式
2
+ // 赛博朋克/机甲风格通知提醒
3
+
4
+ @use '../common/var' as *;
5
+ @use '../mixins/mixins' as *;
6
+
7
+ // ===== 动画 =====
8
+
9
+ // 右侧滑入
10
+ @keyframes cp-notification-right-in {
11
+ from {
12
+ opacity: 0;
13
+ transform: translateX(100%);
14
+ }
15
+ to {
16
+ opacity: 1;
17
+ transform: translateX(0);
18
+ }
19
+ }
20
+
21
+ @keyframes cp-notification-right-out {
22
+ from {
23
+ opacity: 1;
24
+ transform: translateX(0);
25
+ }
26
+ to {
27
+ opacity: 0;
28
+ transform: translateX(100%);
29
+ }
30
+ }
31
+
32
+ // 左侧滑入
33
+ @keyframes cp-notification-left-in {
34
+ from {
35
+ opacity: 0;
36
+ transform: translateX(-100%);
37
+ }
38
+ to {
39
+ opacity: 1;
40
+ transform: translateX(0);
41
+ }
42
+ }
43
+
44
+ @keyframes cp-notification-left-out {
45
+ from {
46
+ opacity: 1;
47
+ transform: translateX(0);
48
+ }
49
+ to {
50
+ opacity: 0;
51
+ transform: translateX(-100%);
52
+ }
53
+ }
54
+
55
+ // 自动关闭进度条倒计时
56
+ @keyframes cp-notification-countdown {
57
+ from {
58
+ width: 100%;
59
+ }
60
+ to {
61
+ width: 0%;
62
+ }
63
+ }
64
+
65
+ // ===== Transition classes =====
66
+ .cp-notification-right-enter-active {
67
+ animation: cp-notification-right-in var(--cp-notification-animation-duration, 300ms) cubic-bezier(0.16, 1, 0.3, 1);
68
+ }
69
+
70
+ .cp-notification-right-leave-active {
71
+ animation: cp-notification-right-out var(--cp-notification-animation-duration, 300ms) ease-in forwards;
72
+ }
73
+
74
+ .cp-notification-left-enter-active {
75
+ animation: cp-notification-left-in var(--cp-notification-animation-duration, 300ms) cubic-bezier(0.16, 1, 0.3, 1);
76
+ }
77
+
78
+ .cp-notification-left-leave-active {
79
+ animation: cp-notification-left-out var(--cp-notification-animation-duration, 300ms) ease-in forwards;
80
+ }
81
+
82
+ @include b(notification) {
83
+ --cp-notification-color: var(--cp-border);
84
+ --cp-notification-color-light: rgba(255, 255, 255, 0.1);
85
+ --cp-notification-bg: var(--cp-bg-elevated);
86
+ --cp-notification-clip-path: polygon(
87
+ 8px 0, 100% 0,
88
+ 100% calc(100% - 8px), calc(100% - 8px) 100%,
89
+ 0 100%, 0 8px
90
+ );
91
+
92
+ position: fixed;
93
+ display: flex;
94
+ align-items: flex-start;
95
+ gap: var(--cp-spacing-md);
96
+ padding: var(--cp-spacing-md) var(--cp-spacing-lg);
97
+ min-height: 60px;
98
+ overflow: hidden;
99
+ background: var(--cp-notification-bg);
100
+ border: 1px solid var(--cp-notification-border-color, var(--cp-border));
101
+ color: var(--cp-notification-text-color, var(--cp-text-secondary));
102
+ clip-path: var(--cp-notification-clip-path);
103
+ box-shadow:
104
+ 0 6px 24px rgba(0, 0, 0, 0.5),
105
+ 0 0 1px var(--cp-notification-color),
106
+ inset 0 0 20px color-mix(in srgb, var(--cp-color-primary) 2%, transparent);
107
+ transition: top 0.3s cubic-bezier(0.16, 1, 0.3, 1), bottom 0.3s cubic-bezier(0.16, 1, 0.3, 1);
108
+ font-family: var(--cp-font-family-ui);
109
+
110
+ // ===== 类型变体颜色 =====
111
+ @each $type in (primary, success, warning, error, info) {
112
+ &.cp-notification--#{$type} {
113
+ --cp-notification-color: var(--cp-color-#{$type});
114
+ --cp-notification-color-light: var(--cp-color-#{$type}-light);
115
+ }
116
+ }
117
+
118
+ // ===== 变体样式 =====
119
+
120
+ // Solid
121
+ @include m(solid) {
122
+ background: var(--cp-notification-bg);
123
+
124
+ // 顶部荧光线
125
+ &::before {
126
+ content: '';
127
+ position: absolute;
128
+ top: 0;
129
+ left: 0;
130
+ width: 100%;
131
+ height: 36px;
132
+ background: linear-gradient(to bottom, var(--cp-notification-color) 2px, var(--cp-notification-color-light) 2px, transparent 100%);
133
+ opacity: 0;
134
+ pointer-events: none;
135
+ z-index: 1;
136
+ transition: opacity 0.3s ease;
137
+ }
138
+
139
+ // 有类型色时显示
140
+ &.cp-notification--primary::before,
141
+ &.cp-notification--success::before,
142
+ &.cp-notification--warning::before,
143
+ &.cp-notification--error::before,
144
+ &.cp-notification--info::before {
145
+ opacity: 0.8;
146
+ }
147
+
148
+ // 自定义 color
149
+ &[style*='--cp-notification-color']::before {
150
+ opacity: 0.8;
151
+ }
152
+ }
153
+
154
+ // Semi (毛玻璃)
155
+ @include m(semi) {
156
+ --cp-notification-bg: color-mix(in srgb, var(--cp-border) 60%, transparent);
157
+ backdrop-filter: blur(12px);
158
+ border-color: var(--cp-notification-color-light);
159
+
160
+ &.cp-notification--primary,
161
+ &.cp-notification--success,
162
+ &.cp-notification--warning,
163
+ &.cp-notification--error,
164
+ &.cp-notification--info {
165
+ --cp-notification-bg: color-mix(in srgb, var(--cp-bg-elevated) 80%, var(--cp-notification-color));
166
+ }
167
+ }
168
+
169
+ // Outline
170
+ @include m(outline) {
171
+ background: transparent;
172
+ border-color: var(--cp-notification-color);
173
+ backdrop-filter: blur(6px);
174
+
175
+ &.cp-notification--default {
176
+ border-color: var(--cp-border);
177
+ }
178
+ }
179
+
180
+ // ===== 形状 =====
181
+ @include m(shape-clip) {
182
+ clip-path: var(--cp-notification-clip-path);
183
+ }
184
+
185
+ @include m(shape-no-clip) {
186
+ clip-path: none;
187
+ border-radius: 0;
188
+
189
+ .cp-notification__decor {
190
+ display: none;
191
+ }
192
+ }
193
+
194
+ @include m(shape-round) {
195
+ clip-path: none;
196
+ border-radius: var(--cp-radius-lg);
197
+ overflow: hidden;
198
+
199
+ .cp-notification__decor {
200
+ display: none;
201
+ }
202
+ }
203
+
204
+ // ===== 装饰方块 (右上角) =====
205
+ @include e(decor) {
206
+ position: absolute;
207
+ top: 0;
208
+ right: 0;
209
+ width: 8px;
210
+ height: 8px;
211
+ background: var(--cp-notification-color);
212
+ opacity: 0.5;
213
+ z-index: 2;
214
+ pointer-events: none;
215
+ transition: opacity 0.3s ease;
216
+ }
217
+
218
+ &:hover .cp-notification__decor {
219
+ opacity: 1;
220
+ }
221
+
222
+ // ===== 图标区域 =====
223
+ @include e(icon) {
224
+ display: flex;
225
+ align-items: center;
226
+ justify-content: center;
227
+ flex-shrink: 0;
228
+ width: 24px;
229
+ height: 24px;
230
+ color: var(--cp-notification-color);
231
+ margin-top: 2px;
232
+
233
+ svg {
234
+ width: 100%;
235
+ height: 100%;
236
+ }
237
+ }
238
+
239
+ // ===== 内容组 =====
240
+ @include e(group) {
241
+ flex: 1;
242
+ min-width: 0;
243
+ overflow: hidden;
244
+ }
245
+
246
+ // ===== 标题 =====
247
+ @include e(title) {
248
+ font-family: var(--cp-font-family-display);
249
+ font-weight: 600;
250
+ font-size: var(--cp-font-size-md);
251
+ text-transform: uppercase;
252
+ color: var(--cp-notification-title-color, var(--cp-text-primary));
253
+ margin-bottom: 4px;
254
+
255
+ // 标题文字截断
256
+ white-space: nowrap;
257
+ overflow: hidden;
258
+ text-overflow: ellipsis;
259
+ }
260
+
261
+ // ===== 消息内容 =====
262
+ @include e(content) {
263
+ font-size: var(--cp-font-size-sm);
264
+ color: var(--cp-notification-text-color, var(--cp-text-secondary));
265
+ word-break: break-word;
266
+
267
+ p {
268
+ margin: 0;
269
+ }
270
+ }
271
+
272
+ // ===== 操作区 =====
273
+ @include e(actions) {
274
+ display: flex;
275
+ align-items: center;
276
+ gap: var(--cp-spacing-sm);
277
+ margin-top: var(--cp-spacing-sm);
278
+ }
279
+
280
+ // ===== 可点击状态 =====
281
+ &.is-clickable {
282
+ cursor: pointer;
283
+ }
284
+
285
+ // ===== 默认禁止文本选中 =====
286
+ user-select: none;
287
+
288
+ // ===== 可选中状态 =====
289
+ &.is-selectable {
290
+ .cp-notification__title,
291
+ .cp-notification__content {
292
+ user-select: text;
293
+ }
294
+ }
295
+
296
+ // ===== 关闭按钮 =====
297
+ @include e(close) {
298
+ display: flex;
299
+ align-items: center;
300
+ justify-content: center;
301
+ width: 24px;
302
+ height: 24px;
303
+ border: 1px solid transparent;
304
+ background: transparent;
305
+ color: var(--cp-notification-color);
306
+ cursor: pointer;
307
+ transition: all 0.2s ease;
308
+ flex-shrink: 0;
309
+ padding: 0;
310
+ margin-top: 2px;
311
+
312
+ &:hover {
313
+ color: var(--cp-notification-color);
314
+ border-color: var(--cp-notification-color);
315
+ background: var(--cp-notification-color-light);
316
+ box-shadow: 0 0 8px var(--cp-notification-color-light);
317
+ }
318
+
319
+ &:active {
320
+ transform: scale(0.9);
321
+ }
322
+ }
323
+
324
+ // ===== 自动关闭进度条 =====
325
+ @include e(progress) {
326
+ position: absolute;
327
+ left: 0;
328
+ bottom: 0;
329
+ height: 2px;
330
+ background: var(--cp-notification-color);
331
+ opacity: 0.7;
332
+ animation: cp-notification-countdown var(--cp-notification-duration, 4500ms) linear forwards;
333
+ z-index: 2;
334
+ }
335
+
336
+ // Hover 时暂停进度条
337
+ &:hover .cp-notification__progress {
338
+ animation-play-state: paused;
339
+ }
340
+
341
+ // ===== Hover 效果 =====
342
+ &:hover {
343
+ box-shadow:
344
+ 0 8px 32px rgba(0, 0, 0, 0.6),
345
+ 0 0 4px var(--cp-notification-color),
346
+ inset 0 0 30px color-mix(in srgb, var(--cp-color-primary) 3%, transparent);
347
+ }
348
+ }