@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,436 +1,436 @@
1
- @use 'sass:map';
2
- @use '../common/var' as *;
3
- @use '../mixins/mixins' as *;
4
-
5
- // ============================================
6
- // CpSlider - 赛博朋克风格滑块
7
- // ============================================
8
-
9
- // 尺寸变量
10
- $slider-sizes: (
11
- 'sm': (
12
- 'track-height': 4px,
13
- 'thumb-size': 14px,
14
- 'clip-size': 3px,
15
- ),
16
- 'md': (
17
- 'track-height': 6px,
18
- 'thumb-size': 18px,
19
- 'clip-size': 4px,
20
- ),
21
- 'lg': (
22
- 'track-height': 8px,
23
- 'thumb-size': 22px,
24
- 'clip-size': 5px,
25
- ),
26
- );
27
-
28
- @include b(slider) {
29
- position: relative;
30
- width: 100%;
31
- height: 32px;
32
- display: flex;
33
- align-items: center;
34
- cursor: pointer;
1
+ @use 'sass:map';
2
+ @use '../common/var' as *;
3
+ @use '../mixins/mixins' as *;
4
+
5
+ // ============================================
6
+ // CpSlider - 赛博朋克风格滑块
7
+ // ============================================
8
+
9
+ // 尺寸变量
10
+ $slider-sizes: (
11
+ 'sm': (
12
+ 'track-height': 4px,
13
+ 'thumb-size': 14px,
14
+ 'clip-size': 3px,
15
+ ),
16
+ 'md': (
17
+ 'track-height': 6px,
18
+ 'thumb-size': 18px,
19
+ 'clip-size': 4px,
20
+ ),
21
+ 'lg': (
22
+ 'track-height': 8px,
23
+ 'thumb-size': 22px,
24
+ 'clip-size': 5px,
25
+ ),
26
+ );
27
+
28
+ @include b(slider) {
29
+ position: relative;
30
+ width: 100%;
31
+ height: 32px;
32
+ display: flex;
33
+ align-items: center;
34
+ cursor: pointer;
35
35
  user-select: none;
36
36
  --cp-slider-color: var(--cp-color-primary);
37
37
  --cp-slider-color-light: var(--cp-color-primary-light);
38
-
39
- // ========== 轨道 ==========
40
- @include e(runway) {
41
- position: relative;
42
- flex: 1;
43
- height: 6px;
44
- background: #1a1a1f; // 使用稍微亮一点的深色背景
45
- border: 1px solid var(--cp-border);
46
- transition: all 0.2s ease;
47
- overflow: hidden;
48
-
49
- // 切角默认形状
50
- clip-path: polygon(
51
- 4px 0,
52
- 100% 0,
53
- 100% calc(100% - 4px),
54
- calc(100% - 4px) 100%,
55
- 0 100%,
56
- 0 4px
57
- );
58
- }
59
-
60
- // ========== 填充条 ==========
61
- @include e(bar) {
62
- position: absolute;
63
- top: 0;
64
- left: 0;
65
- height: 100%;
38
+
39
+ // ========== 轨道 ==========
40
+ @include e(runway) {
41
+ position: relative;
42
+ flex: 1;
43
+ height: 6px;
44
+ background: #1a1a1f; // 使用稍微亮一点的深色背景
45
+ border: 1px solid var(--cp-border);
46
+ transition: all 0.2s ease;
47
+ overflow: hidden;
48
+
49
+ // 切角默认形状
50
+ clip-path: polygon(
51
+ 4px 0,
52
+ 100% 0,
53
+ 100% calc(100% - 4px),
54
+ calc(100% - 4px) 100%,
55
+ 0 100%,
56
+ 0 4px
57
+ );
58
+ }
59
+
60
+ // ========== 填充条 ==========
61
+ @include e(bar) {
62
+ position: absolute;
63
+ top: 0;
64
+ left: 0;
65
+ height: 100%;
66
66
  background: var(--cp-slider-color);
67
67
  box-shadow: 0 0 10px var(--cp-slider-color-light);
68
- z-index: 1;
69
-
70
- // 内部纹理,增加科幻感
71
- &::after {
72
- content: '';
73
- position: absolute;
74
- top: 0;
75
- left: 0;
76
- right: 0;
77
- bottom: 0;
78
- background: linear-gradient(
79
- 90deg,
80
- rgba(255, 255, 255, 0) 0%,
81
- rgba(255, 255, 255, 0.1) 50%,
82
- rgba(255, 255, 255, 0) 100%
83
- );
84
- pointer-events: none;
85
- }
86
- }
87
-
88
- // ========== 滑块手柄 ==========
89
- @include e(thumb) {
90
- position: absolute;
91
- width: 18px;
92
- height: 18px;
93
- background: var(--cp-bg-elevated);
68
+ z-index: 1;
69
+
70
+ // 内部纹理,增加科幻感
71
+ &::after {
72
+ content: '';
73
+ position: absolute;
74
+ top: 0;
75
+ left: 0;
76
+ right: 0;
77
+ bottom: 0;
78
+ background: linear-gradient(
79
+ 90deg,
80
+ rgba(255, 255, 255, 0) 0%,
81
+ rgba(255, 255, 255, 0.1) 50%,
82
+ rgba(255, 255, 255, 0) 100%
83
+ );
84
+ pointer-events: none;
85
+ }
86
+ }
87
+
88
+ // ========== 滑块手柄 ==========
89
+ @include e(thumb) {
90
+ position: absolute;
91
+ width: 18px;
92
+ height: 18px;
93
+ background: var(--cp-bg-elevated);
94
94
  border: var(--cp-slider-thumb-border-width, 2px) solid var(--cp-slider-color);
95
95
  box-shadow: 0 0 8px var(--cp-slider-color-light);
96
- transform: translate(-50%, 0);
97
- cursor: grab;
98
- z-index: 2;
99
- outline: none;
100
-
101
- // 切角造型
102
- clip-path: polygon(
103
- 4px 0,
104
- 100% 0,
105
- 100% calc(100% - 4px),
106
- calc(100% - 4px) 100%,
107
- 0 100%,
108
- 0 4px
109
- );
110
-
111
- // 装饰元素
112
- &::before {
113
- content: '';
114
- position: absolute;
115
- top: 50%;
116
- left: 50%;
117
- width: var(--cp-slider-inner-dot-size, 6px);
118
- height: var(--cp-slider-inner-dot-size, 6px);
96
+ transform: translate(-50%, 0);
97
+ cursor: grab;
98
+ z-index: 2;
99
+ outline: none;
100
+
101
+ // 切角造型
102
+ clip-path: polygon(
103
+ 4px 0,
104
+ 100% 0,
105
+ 100% calc(100% - 4px),
106
+ calc(100% - 4px) 100%,
107
+ 0 100%,
108
+ 0 4px
109
+ );
110
+
111
+ // 装饰元素
112
+ &::before {
113
+ content: '';
114
+ position: absolute;
115
+ top: 50%;
116
+ left: 50%;
117
+ width: var(--cp-slider-inner-dot-size, 6px);
118
+ height: var(--cp-slider-inner-dot-size, 6px);
119
119
  background: var(--cp-slider-color);
120
- transform: translate(-50%, -50%);
121
- clip-path: polygon(
122
- var(--cp-slider-inner-clip-size, 2px) 0,
123
- 100% 0,
124
- 100% calc(100% - var(--cp-slider-inner-clip-size, 2px)),
125
- calc(100% - var(--cp-slider-inner-clip-size, 2px)) 100%,
126
- 0 100%,
127
- 0 var(--cp-slider-inner-clip-size, 2px)
128
- );
129
- }
130
-
131
- &:hover {
120
+ transform: translate(-50%, -50%);
121
+ clip-path: polygon(
122
+ var(--cp-slider-inner-clip-size, 2px) 0,
123
+ 100% 0,
124
+ 100% calc(100% - var(--cp-slider-inner-clip-size, 2px)),
125
+ calc(100% - var(--cp-slider-inner-clip-size, 2px)) 100%,
126
+ 0 100%,
127
+ 0 var(--cp-slider-inner-clip-size, 2px)
128
+ );
129
+ }
130
+
131
+ &:hover {
132
132
  border-color: var(--cp-slider-color);
133
133
  box-shadow: 0 0 12px var(--cp-slider-color-light);
134
- transform: translate(-50%, 0) scale(1.1);
135
- }
136
-
137
- &:active,
138
- &:focus {
139
- cursor: grabbing;
134
+ transform: translate(-50%, 0) scale(1.1);
135
+ }
136
+
137
+ &:active,
138
+ &:focus {
139
+ cursor: grabbing;
140
140
  border-color: var(--cp-slider-color);
141
141
  box-shadow: 0 0 16px var(--cp-slider-color-light);
142
- }
143
-
144
- @include when(active) {
142
+ }
143
+
144
+ @include when(active) {
145
145
  border-color: var(--cp-slider-color);
146
146
  box-shadow: 0 0 16px var(--cp-slider-color-light);
147
- transform: translate(-50%, 0) scale(1.15);
148
- }
149
- }
150
-
151
- // ========== Tooltip ==========
152
- @include e(tooltip) {
153
- position: absolute;
154
- bottom: calc(100% + 8px);
155
- left: 50%;
156
- transform: translateX(-50%);
157
- padding: 4px 8px;
158
- background: var(--cp-bg-elevated);
147
+ transform: translate(-50%, 0) scale(1.15);
148
+ }
149
+ }
150
+
151
+ // ========== Tooltip ==========
152
+ @include e(tooltip) {
153
+ position: absolute;
154
+ bottom: calc(100% + 8px);
155
+ left: 50%;
156
+ transform: translateX(-50%);
157
+ padding: 4px 8px;
158
+ background: var(--cp-bg-elevated);
159
159
  border: 1px solid var(--cp-slider-color);
160
160
  color: var(--cp-slider-color);
161
- font-family: var(--cp-font-family-mono);
162
- font-size: 12px;
163
- font-weight: 600;
164
- white-space: nowrap;
161
+ font-family: var(--cp-font-family-mono);
162
+ font-size: 12px;
163
+ font-weight: 600;
164
+ white-space: nowrap;
165
165
  box-shadow: 0 0 8px var(--cp-slider-color-light);
166
- z-index: 10;
167
-
168
- // 箭头
169
- &::after {
170
- content: '';
171
- position: absolute;
172
- top: 100%;
173
- left: 50%;
174
- transform: translateX(-50%);
175
- border: 4px solid transparent;
166
+ z-index: 10;
167
+
168
+ // 箭头
169
+ &::after {
170
+ content: '';
171
+ position: absolute;
172
+ top: 100%;
173
+ left: 50%;
174
+ transform: translateX(-50%);
175
+ border: 4px solid transparent;
176
176
  border-top-color: var(--cp-slider-color);
177
- }
178
- }
179
-
180
- // ========== 刻度点 (放在轨道外面,位置基于 slider 根元素) ==========
181
- @include e(stop) {
182
- position: absolute;
183
- top: 50%;
184
- width: 2px;
185
- height: 2px;
186
- background: var(--cp-text-secondary);
187
- opacity: 0.3;
188
- transform: translate(-50%, -50%);
189
- transition: opacity 0.2s ease;
190
- z-index: 0; // 低于 thumb
191
- pointer-events: none;
192
- }
193
-
194
- // ========== 刻度标记 ==========
195
- @include e(marks) {
196
- position: absolute;
197
- top: 100%;
198
- left: 0;
199
- right: 0;
200
- margin-top: 8px;
201
- }
202
-
203
- @include e(mark) {
204
- position: absolute;
205
- transform: translateX(-50%);
206
- }
207
-
208
- @include e(mark-text) {
209
- font-family: var(--cp-font-family-ui);
210
- font-size: 11px;
211
- color: var(--cp-text-secondary);
212
- white-space: nowrap;
213
- }
214
-
215
- // ========== 垂直模式 ==========
216
- &.is-vertical {
217
- width: 32px;
218
- height: 200px;
219
- flex-direction: column;
220
- align-items: center;
221
- justify-content: center;
222
-
223
- .#{$namespace}-slider__runway {
224
- width: 6px;
225
- height: 100%;
226
- flex: 1;
227
- clip-path: none;
228
- }
229
-
230
- .#{$namespace}-slider__bar {
231
- top: auto;
232
- left: 0;
233
- right: 0;
234
- bottom: 0;
235
- width: 100%;
236
- height: auto;
237
- }
238
-
239
- .#{$namespace}-slider__thumb {
240
- left: 50%;
241
- transform: translate(-50%, 50%);
242
-
243
- &:hover {
244
- transform: translate(-50%, 50%) scale(1.1);
245
- }
246
-
247
- &.is-active {
248
- transform: translate(-50%, 50%) scale(1.15);
249
- }
250
- }
251
-
252
- .#{$namespace}-slider__tooltip {
253
- bottom: auto;
254
- left: calc(100% + 8px);
255
- top: 50%;
256
- transform: translateY(-50%);
257
-
258
- &::after {
259
- top: 50%;
260
- left: auto;
261
- right: 100%;
262
- transform: translateY(-50%);
263
- border: 4px solid transparent;
177
+ }
178
+ }
179
+
180
+ // ========== 刻度点 (放在轨道外面,位置基于 slider 根元素) ==========
181
+ @include e(stop) {
182
+ position: absolute;
183
+ top: 50%;
184
+ width: 2px;
185
+ height: 2px;
186
+ background: var(--cp-text-secondary);
187
+ opacity: 0.3;
188
+ transform: translate(-50%, -50%);
189
+ transition: opacity 0.2s ease;
190
+ z-index: 0; // 低于 thumb
191
+ pointer-events: none;
192
+ }
193
+
194
+ // ========== 刻度标记 ==========
195
+ @include e(marks) {
196
+ position: absolute;
197
+ top: 100%;
198
+ left: 0;
199
+ right: 0;
200
+ margin-top: 8px;
201
+ }
202
+
203
+ @include e(mark) {
204
+ position: absolute;
205
+ transform: translateX(-50%);
206
+ }
207
+
208
+ @include e(mark-text) {
209
+ font-family: var(--cp-font-family-ui);
210
+ font-size: 11px;
211
+ color: var(--cp-text-secondary);
212
+ white-space: nowrap;
213
+ }
214
+
215
+ // ========== 垂直模式 ==========
216
+ &.is-vertical {
217
+ width: 32px;
218
+ height: 200px;
219
+ flex-direction: column;
220
+ align-items: center;
221
+ justify-content: center;
222
+
223
+ .#{$namespace}-slider__runway {
224
+ width: 6px;
225
+ height: 100%;
226
+ flex: 1;
227
+ clip-path: none;
228
+ }
229
+
230
+ .#{$namespace}-slider__bar {
231
+ top: auto;
232
+ left: 0;
233
+ right: 0;
234
+ bottom: 0;
235
+ width: 100%;
236
+ height: auto;
237
+ }
238
+
239
+ .#{$namespace}-slider__thumb {
240
+ left: 50%;
241
+ transform: translate(-50%, 50%);
242
+
243
+ &:hover {
244
+ transform: translate(-50%, 50%) scale(1.1);
245
+ }
246
+
247
+ &.is-active {
248
+ transform: translate(-50%, 50%) scale(1.15);
249
+ }
250
+ }
251
+
252
+ .#{$namespace}-slider__tooltip {
253
+ bottom: auto;
254
+ left: calc(100% + 8px);
255
+ top: 50%;
256
+ transform: translateY(-50%);
257
+
258
+ &::after {
259
+ top: 50%;
260
+ left: auto;
261
+ right: 100%;
262
+ transform: translateY(-50%);
263
+ border: 4px solid transparent;
264
264
  border-right-color: var(--cp-slider-color);
265
- border-top-color: transparent;
266
- }
267
- }
268
-
269
- .#{$namespace}-slider__stop {
270
- top: auto;
271
- left: 50%;
272
- // 垂直模式的 stop 使用 bottom 定位
273
- transform: translate(-50%, 50%);
274
- }
275
-
276
- .#{$namespace}-slider__marks {
277
- top: 0;
278
- left: 100%;
279
- right: auto;
280
- bottom: 0;
281
- margin-top: 0;
282
- margin-left: 8px;
283
- }
284
-
285
- .#{$namespace}-slider__mark {
286
- transform: translateY(50%);
287
- }
288
- }
289
-
290
- // ========== 尺寸变体 ==========
291
- @each $size, $values in $slider-sizes {
292
- @include m($size) {
293
- $track-height: map.get($values, 'track-height');
294
- $thumb-size: map.get($values, 'thumb-size');
295
- $clip-size: map.get($values, 'clip-size');
296
-
297
- .#{$namespace}-slider__runway {
298
- height: $track-height;
299
- clip-path: polygon(
300
- $clip-size 0,
301
- 100% 0,
302
- 100% calc(100% - #{$clip-size}),
303
- calc(100% - #{$clip-size}) 100%,
304
- 0 100%,
305
- 0 $clip-size
306
- );
307
- }
308
-
309
- .#{$namespace}-slider__thumb {
310
- width: $thumb-size;
311
- height: $thumb-size;
312
- clip-path: polygon(
313
- $clip-size 0,
314
- 100% 0,
315
- 100% calc(100% - #{$clip-size}),
316
- calc(100% - #{$clip-size}) 100%,
317
- 0 100%,
318
- 0 $clip-size
319
- );
320
- }
321
-
322
- &.is-vertical {
323
- .#{$namespace}-slider__runway {
324
- width: $track-height;
325
- height: 100%;
326
- }
327
- }
328
- }
329
- }
330
-
331
-
332
-
333
- // ========== 自定义尺寸 ==========
334
- @include when(custom-size) {
335
- .#{$namespace}-slider__runway {
336
- height: var(--cp-slider-track-height);
337
- clip-path: polygon(
338
- var(--cp-slider-clip-size) 0,
339
- 100% 0,
340
- 100% calc(100% - var(--cp-slider-clip-size)),
341
- calc(100% - var(--cp-slider-clip-size)) 100%,
342
- 0 100%,
343
- 0 var(--cp-slider-clip-size)
344
- );
345
- }
346
-
347
- .#{$namespace}-slider__thumb {
348
- width: var(--cp-slider-thumb-size);
349
- height: var(--cp-slider-thumb-size);
350
- clip-path: polygon(
351
- var(--cp-slider-clip-size) 0,
352
- 100% 0,
353
- 100% calc(100% - var(--cp-slider-clip-size)),
354
- calc(100% - var(--cp-slider-clip-size)) 100%,
355
- 0 100%,
356
- 0 var(--cp-slider-clip-size)
357
- );
358
- }
359
-
360
- &.is-vertical {
361
- .#{$namespace}-slider__runway {
362
- width: var(--cp-slider-track-height);
363
- height: 100%;
364
- }
365
- }
366
- }
367
-
368
- // ========== 形状变体 ==========
369
- @include m(shape-no-clip) {
370
- .#{$namespace}-slider__runway {
371
- clip-path: none !important;
372
- }
373
-
374
- .#{$namespace}-slider__thumb {
375
- clip-path: none !important;
376
- }
377
- }
378
-
379
- @include m(shape-round) {
380
- .#{$namespace}-slider__runway {
381
- clip-path: none !important;
382
- border-radius: 100px;
383
- }
384
-
385
- .#{$namespace}-slider__thumb {
386
- clip-path: none !important;
387
- border-radius: 50%;
388
-
389
- &::before {
390
- clip-path: none !important;
391
- border-radius: 50%;
392
- }
393
- }
394
- }
395
-
396
- // ========== 禁用状态 ==========
397
- @include when(disabled) {
398
- cursor: not-allowed;
399
- opacity: 0.5;
400
- filter: grayscale(0.5);
401
-
402
- @include e(thumb) {
403
- cursor: not-allowed;
404
-
405
- &:hover {
406
- transform: translate(-50%, 0);
407
- box-shadow: none;
408
- }
409
- }
410
-
411
- @include when(vertical) {
412
- @include e(thumb) {
413
- &:hover {
414
- transform: translate(0, 50%);
415
- }
416
- }
417
- }
418
- }
419
-
420
- // ========== 拖动状态 ==========
421
- @include when(dragging) {
422
- // 拖动时禁用所有过渡,实现即时响应
423
- .#{$namespace}-slider__bar {
424
- transition: none;
425
- }
426
-
427
- .#{$namespace}-slider__thumb {
428
- cursor: grabbing;
429
- transition: none;
430
- }
431
- }
432
-
433
- // ========== 自定义颜色 ==========
265
+ border-top-color: transparent;
266
+ }
267
+ }
268
+
269
+ .#{$namespace}-slider__stop {
270
+ top: auto;
271
+ left: 50%;
272
+ // 垂直模式的 stop 使用 bottom 定位
273
+ transform: translate(-50%, 50%);
274
+ }
275
+
276
+ .#{$namespace}-slider__marks {
277
+ top: 0;
278
+ left: 100%;
279
+ right: auto;
280
+ bottom: 0;
281
+ margin-top: 0;
282
+ margin-left: 8px;
283
+ }
284
+
285
+ .#{$namespace}-slider__mark {
286
+ transform: translateY(50%);
287
+ }
288
+ }
289
+
290
+ // ========== 尺寸变体 ==========
291
+ @each $size, $values in $slider-sizes {
292
+ @include m($size) {
293
+ $track-height: map.get($values, 'track-height');
294
+ $thumb-size: map.get($values, 'thumb-size');
295
+ $clip-size: map.get($values, 'clip-size');
296
+
297
+ .#{$namespace}-slider__runway {
298
+ height: $track-height;
299
+ clip-path: polygon(
300
+ $clip-size 0,
301
+ 100% 0,
302
+ 100% calc(100% - #{$clip-size}),
303
+ calc(100% - #{$clip-size}) 100%,
304
+ 0 100%,
305
+ 0 $clip-size
306
+ );
307
+ }
308
+
309
+ .#{$namespace}-slider__thumb {
310
+ width: $thumb-size;
311
+ height: $thumb-size;
312
+ clip-path: polygon(
313
+ $clip-size 0,
314
+ 100% 0,
315
+ 100% calc(100% - #{$clip-size}),
316
+ calc(100% - #{$clip-size}) 100%,
317
+ 0 100%,
318
+ 0 $clip-size
319
+ );
320
+ }
321
+
322
+ &.is-vertical {
323
+ .#{$namespace}-slider__runway {
324
+ width: $track-height;
325
+ height: 100%;
326
+ }
327
+ }
328
+ }
329
+ }
330
+
331
+
332
+
333
+ // ========== 自定义尺寸 ==========
334
+ @include when(custom-size) {
335
+ .#{$namespace}-slider__runway {
336
+ height: var(--cp-slider-track-height);
337
+ clip-path: polygon(
338
+ var(--cp-slider-clip-size) 0,
339
+ 100% 0,
340
+ 100% calc(100% - var(--cp-slider-clip-size)),
341
+ calc(100% - var(--cp-slider-clip-size)) 100%,
342
+ 0 100%,
343
+ 0 var(--cp-slider-clip-size)
344
+ );
345
+ }
346
+
347
+ .#{$namespace}-slider__thumb {
348
+ width: var(--cp-slider-thumb-size);
349
+ height: var(--cp-slider-thumb-size);
350
+ clip-path: polygon(
351
+ var(--cp-slider-clip-size) 0,
352
+ 100% 0,
353
+ 100% calc(100% - var(--cp-slider-clip-size)),
354
+ calc(100% - var(--cp-slider-clip-size)) 100%,
355
+ 0 100%,
356
+ 0 var(--cp-slider-clip-size)
357
+ );
358
+ }
359
+
360
+ &.is-vertical {
361
+ .#{$namespace}-slider__runway {
362
+ width: var(--cp-slider-track-height);
363
+ height: 100%;
364
+ }
365
+ }
366
+ }
367
+
368
+ // ========== 形状变体 ==========
369
+ @include m(shape-no-clip) {
370
+ .#{$namespace}-slider__runway {
371
+ clip-path: none !important;
372
+ }
373
+
374
+ .#{$namespace}-slider__thumb {
375
+ clip-path: none !important;
376
+ }
377
+ }
378
+
379
+ @include m(shape-round) {
380
+ .#{$namespace}-slider__runway {
381
+ clip-path: none !important;
382
+ border-radius: 100px;
383
+ }
384
+
385
+ .#{$namespace}-slider__thumb {
386
+ clip-path: none !important;
387
+ border-radius: 50%;
388
+
389
+ &::before {
390
+ clip-path: none !important;
391
+ border-radius: 50%;
392
+ }
393
+ }
394
+ }
395
+
396
+ // ========== 禁用状态 ==========
397
+ @include when(disabled) {
398
+ cursor: not-allowed;
399
+ opacity: 0.5;
400
+ filter: grayscale(0.5);
401
+
402
+ @include e(thumb) {
403
+ cursor: not-allowed;
404
+
405
+ &:hover {
406
+ transform: translate(-50%, 0);
407
+ box-shadow: none;
408
+ }
409
+ }
410
+
411
+ @include when(vertical) {
412
+ @include e(thumb) {
413
+ &:hover {
414
+ transform: translate(0, 50%);
415
+ }
416
+ }
417
+ }
418
+ }
419
+
420
+ // ========== 拖动状态 ==========
421
+ @include when(dragging) {
422
+ // 拖动时禁用所有过渡,实现即时响应
423
+ .#{$namespace}-slider__bar {
424
+ transition: none;
425
+ }
426
+
427
+ .#{$namespace}-slider__thumb {
428
+ cursor: grabbing;
429
+ transition: none;
430
+ }
431
+ }
432
+
433
+ // ========== 自定义颜色 ==========
434
434
  @include when(custom-color) {
435
435
  .#{$namespace}-slider__bar {
436
436
  background: var(--cp-slider-color);
@@ -467,14 +467,14 @@ $slider-sizes: (
467
467
  border-top-color: var(--cp-slider-color);
468
468
  }
469
469
  }
470
-
471
- &.is-vertical {
472
- .#{$namespace}-slider__tooltip {
470
+
471
+ &.is-vertical {
472
+ .#{$namespace}-slider__tooltip {
473
473
  &::after {
474
474
  border-right-color: var(--cp-slider-color);
475
475
  border-top-color: transparent;
476
476
  }
477
- }
478
- }
479
- }
480
- }
477
+ }
478
+ }
479
+ }
480
+ }