@tendaui/components 1.3.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +176 -176
  3. package/button/_example/ghost.tsx +2 -5
  4. package/color-picker/utils/color-picker/cmyk.ts +89 -89
  5. package/color-picker/utils/color-picker/color.ts +467 -467
  6. package/color-picker/utils/color-picker/constants.ts +187 -187
  7. package/color-picker/utils/color-picker/draggable.ts +99 -99
  8. package/color-picker/utils/color-picker/format.ts +90 -90
  9. package/color-picker/utils/color-picker/gradient.ts +237 -237
  10. package/color-picker/utils/color-picker/index.ts +7 -7
  11. package/color-picker/utils/color-picker/types.ts +33 -33
  12. package/dialog/hooks/useDialogPosition.ts +35 -35
  13. package/form/type.ts +519 -519
  14. package/global-config/default-config.ts +95 -95
  15. package/global-config/locale/ar_KW.ts +259 -259
  16. package/global-config/locale/en_US.ts +265 -265
  17. package/global-config/locale/it_IT.ts +264 -264
  18. package/global-config/locale/ja_JP.ts +264 -264
  19. package/global-config/locale/ko_KR.ts +264 -264
  20. package/global-config/locale/ru_RU.ts +277 -277
  21. package/global-config/locale/zh_CN.ts +265 -265
  22. package/global-config/locale/zh_TW.ts +265 -265
  23. package/global-config/mobile/default-config.ts +6 -6
  24. package/global-config/mobile/locale/ar_KW.ts +112 -112
  25. package/global-config/mobile/locale/en_US.ts +113 -113
  26. package/global-config/mobile/locale/it_IT.ts +113 -113
  27. package/global-config/mobile/locale/ja_JP.ts +100 -100
  28. package/global-config/mobile/locale/ko_KR.ts +100 -100
  29. package/global-config/mobile/locale/ru_RU.ts +112 -112
  30. package/global-config/mobile/locale/zh_CN.ts +100 -100
  31. package/global-config/mobile/locale/zh_TW.ts +100 -100
  32. package/global-config/t.ts +111 -111
  33. package/input-number/InputNumber.tsx +124 -124
  34. package/input-number/defaultProps.ts +17 -17
  35. package/input-number/index.ts +9 -9
  36. package/input-number/style/css.js +1 -1
  37. package/input-number/style/index.js +1 -1
  38. package/input-number/useInputNumber.tsx +270 -270
  39. package/list/ListItem.tsx +36 -36
  40. package/list/ListItemMeta.tsx +40 -40
  41. package/list/defaultProps.ts +11 -11
  42. package/list/hooks/useListVirtualScroll.ts +82 -82
  43. package/list/style/css.js +1 -1
  44. package/list/style/index.js +1 -1
  45. package/locale/LocalReceiver.ts +55 -55
  46. package/locale/ar_KW.ts +7 -7
  47. package/locale/en_US.ts +7 -7
  48. package/locale/it_IT.ts +6 -6
  49. package/locale/ja_JP.ts +6 -6
  50. package/locale/ko_KR.ts +6 -6
  51. package/locale/ru_RU.ts +6 -6
  52. package/locale/zh_CN.ts +5 -5
  53. package/locale/zh_TW.ts +7 -7
  54. package/package.json +2 -2
  55. package/radio/_example/default.tsx +2 -2
  56. package/select/type.ts +382 -382
  57. package/select-input/type.ts +280 -280
  58. package/slider/SliderHandleButton.tsx +50 -50
  59. package/slider/defaultProps.ts +15 -15
  60. package/slider/style/css.js +1 -1
  61. package/slider/style/index.js +1 -1
  62. package/styles/_global.scss +40 -40
  63. package/styles/_vars.scss +374 -374
  64. package/styles/components/alert/_index.scss +175 -175
  65. package/styles/components/alert/_vars.scss +41 -41
  66. package/styles/components/badge/_index.scss +71 -71
  67. package/styles/components/badge/_vars.scss +26 -26
  68. package/styles/components/button/_index.scss +499 -499
  69. package/styles/components/button/_mixins.scss +40 -40
  70. package/styles/components/button/_vars.scss +121 -121
  71. package/styles/components/checkbox/_index.scss +158 -158
  72. package/styles/components/checkbox/_var.scss +59 -59
  73. package/styles/components/color-picker/_index.scss +586 -586
  74. package/styles/components/color-picker/_vars.scss +79 -79
  75. package/styles/components/dialog/_animate.scss +133 -133
  76. package/styles/components/dialog/_index.scss +310 -310
  77. package/styles/components/dialog/_vars.scss +60 -60
  78. package/styles/components/drawer/_index.scss +206 -206
  79. package/styles/components/drawer/_var.scss +55 -55
  80. package/styles/components/fireworks/_index.scss +86 -86
  81. package/styles/components/fireworks/_vars.scss +5 -5
  82. package/styles/components/form/_index.scss +175 -175
  83. package/styles/components/form/_mixins.scss +74 -74
  84. package/styles/components/form/_vars.scss +101 -101
  85. package/styles/components/input/_index.scss +350 -350
  86. package/styles/components/input/_mixins.scss +120 -120
  87. package/styles/components/input/_vars.scss +130 -130
  88. package/styles/components/input-number/_index.scss +327 -327
  89. package/styles/components/input-number/_vars.scss +56 -56
  90. package/styles/components/ip-input/_index.scss +277 -277
  91. package/styles/components/layout/_index.scss +47 -47
  92. package/styles/components/layout/_vars.scss +19 -19
  93. package/styles/components/layout/doc.scss +74 -74
  94. package/styles/components/list/_index.scss +172 -172
  95. package/styles/components/list/_vars.scss +42 -42
  96. package/styles/components/loading/_index.scss +113 -113
  97. package/styles/components/loading/_vars.scss +40 -40
  98. package/styles/components/notification/_index.scss +140 -140
  99. package/styles/components/notification/_mixins.scss +13 -13
  100. package/styles/components/notification/_vars.scss +60 -60
  101. package/styles/components/popup/_index.scss +78 -78
  102. package/styles/components/popup/_mixin.scss +149 -149
  103. package/styles/components/popup/_vars.scss +33 -33
  104. package/styles/components/radio/_index.scss +376 -376
  105. package/styles/components/radio/_vars.scss +89 -89
  106. package/styles/components/select/_index.scss +291 -291
  107. package/styles/components/select/_var.scss +64 -64
  108. package/styles/components/select-input/_index.scss +5 -5
  109. package/styles/components/select-input/_var.scss +4 -4
  110. package/styles/components/slider/_index.scss +241 -241
  111. package/styles/components/slider/_vars.scss +51 -51
  112. package/styles/components/switch/_index.scss +175 -175
  113. package/styles/components/switch/_vars.scss +63 -63
  114. package/styles/components/table/_index.scss +194 -194
  115. package/styles/components/table/_var.scss +52 -52
  116. package/styles/components/tabs/_index.scss +165 -165
  117. package/styles/components/tabs/_mixins.scss +11 -11
  118. package/styles/components/tabs/_vars.scss +72 -72
  119. package/styles/components/tag/_index.scss +317 -317
  120. package/styles/components/tag/_var.scss +86 -86
  121. package/styles/components/tag-input/_index.scss +164 -164
  122. package/styles/components/tag-input/_vars.scss +17 -17
  123. package/styles/mixins/_focus.scss +8 -8
  124. package/styles/mixins/_layout.scss +32 -32
  125. package/styles/mixins/_reset.scss +11 -11
  126. package/styles/mixins/_scrollbar.scss +32 -32
  127. package/styles/mixins/_text.scss +50 -50
  128. package/styles/themes/_dark.scss +169 -169
  129. package/styles/themes/_font.scss +69 -69
  130. package/styles/themes/_index.scss +5 -5
  131. package/styles/themes/_light.scss +170 -170
  132. package/styles/themes/_radius.scss +9 -9
  133. package/styles/themes/_size.scss +68 -68
  134. package/styles/utilities/_animation.scss +58 -58
  135. package/styles/utilities/_tips.scss +10 -10
  136. package/switch/_example/with-label.tsx +1 -1
  137. package/utils/input-number/large-number.ts +423 -423
  138. package/utils/input-number/number.ts +257 -257
  139. package/utils/log/index.ts +3 -3
  140. package/utils/log/log.ts +29 -29
  141. package/utils/log/types.ts +9 -9
  142. package/utils/style.ts +58 -58
@@ -1,499 +1,499 @@
1
- @use "sass:map";
2
- @use "../../_vars.scss" as *;
3
-
4
- @use "./_vars.scss" as *;
5
-
6
- @use "./_mixins.scss" as *;
7
-
8
- @use "../../mixins/_reset.scss" as *;
9
-
10
- @function btn-color($theme, $state: default) {
11
- $theme-map: map.get($btn-colors, $theme);
12
-
13
- @if $theme-map == null {
14
- @error "Theme `#{$theme}` not found in $btn-colors map.";
15
- }
16
-
17
- @return map.get($theme-map, $state);
18
- }
19
- @mixin button-attr-color($theme, $attr, $ghost: false) {
20
- &:hover,
21
- &:focus-visible {
22
- #{$attr}: btn-color($theme, hover);
23
- }
24
- @if $ghost == true {
25
- &:active {
26
- #{$attr}: btn-color($theme, active);
27
- }
28
- }
29
-
30
- @if $ghost == true {
31
- &.#{$prefix}-is-loading {
32
- #{$attr}: btn-color($theme, "default");
33
- }
34
- } @else {
35
- &.#{$prefix}-is-loading {
36
- #{$attr}: btn-color($theme, "disabled");
37
- }
38
- }
39
-
40
- @if $ghost == true {
41
- #{$attr}: btn-color("ghost", "disabled");
42
- background-color: transparent;
43
- } @else {
44
- #{$attr}: btn-color($theme, disabled);
45
- }
46
-
47
- #{$attr}: btn-color($theme, default);
48
- }
49
-
50
- .#{$prefix}-button {
51
- @include reset;
52
- @include button;
53
-
54
- text-decoration: none;
55
-
56
- .#{$prefix}-button__text,
57
- .t-icon {
58
- position: relative;
59
- z-index: 1;
60
- display: inline-flex;
61
- }
62
-
63
- .t-icon {
64
- font-size: $btn-icon-size-default;
65
- }
66
-
67
- .#{$prefix}-loading {
68
- font-size: $btn-loading-size;
69
- }
70
-
71
- .t-icon + .#{$prefix}-button__text:not(:empty) {
72
- margin-inline-start: $btn-icon-text-margin-left;
73
- }
74
-
75
- .#{$prefix}-loading + .#{$prefix}-button__text:not(:empty) {
76
- margin-inline-start: $btn-icon-text-margin-left;
77
- }
78
-
79
- .#{$prefix}-button__suffix:not(:empty) {
80
- display: inline-flex;
81
- margin-inline-start: $btn-icon-text-margin-left;
82
- }
83
-
84
- // 主要按钮
85
- &--variant-base {
86
- color: $btn-text-variant-base-color;
87
- @include button-size(
88
- $btn-height-default,
89
- $btn-font-default,
90
- $btn-icon-size-default,
91
- $btn-padding-horizontal-default
92
- );
93
- @include button-attr-color("gray-bg", background-color);
94
- @include button-attr-color("gray-bg", border-color);
95
- @include button-attr-color("text-gray", color);
96
-
97
- &.#{$prefix}-button--theme-primary {
98
- color: $btn-text-variant-base-color;
99
- @include button-attr-color("primary", background-color);
100
- @include button-attr-color("primary", border-color);
101
- }
102
-
103
- &.#{$prefix}-button--theme-success {
104
- color: $btn-text-variant-base-color;
105
- @include button-attr-color("success", background-color);
106
- @include button-attr-color("success", border-color);
107
- }
108
-
109
- &.#{$prefix}-button--theme-warning {
110
- color: $btn-text-variant-base-color;
111
- @include button-attr-color("warning", background-color);
112
- @include button-attr-color("warning", border-color);
113
- }
114
-
115
- &.#{$prefix}-button--theme-danger {
116
- color: $btn-text-variant-base-color;
117
- @include button-attr-color("danger", background-color);
118
- @include button-attr-color("danger", border-color);
119
- }
120
-
121
- &.#{$prefix}-button--ghost {
122
- @include button-attr-color("primary", background-color, true);
123
- @include button-attr-color("white-ghost", color, true);
124
- @include button-attr-color("white-ghost", border-color, true);
125
-
126
- &.#{$prefix}-button--theme-primary {
127
- @include button-attr-color("primary", color, true);
128
- @include button-attr-color("primary", border-color, true);
129
- }
130
-
131
- &.#{$prefix}-button--theme-success {
132
- @include button-attr-color("success", color, true);
133
- @include button-attr-color("success", border-color, true);
134
- }
135
-
136
- &.#{$prefix}-button--theme-warning {
137
- @include button-attr-color("warning", color, true);
138
- @include button-attr-color("warning", border-color, true);
139
- }
140
-
141
- &.#{$prefix}-button--theme-danger {
142
- @include button-attr-color("danger", color, true);
143
- @include button-attr-color("danger", border-color, true);
144
- }
145
- }
146
-
147
- &.#{$prefix}-is-loading:not(&.#{$prefix}-button--ghost) {
148
- &.#{$prefix}-button--theme-default {
149
- color: btn-color(text, default);
150
- }
151
- }
152
- }
153
-
154
- // 次要按钮
155
- &--variant-outline {
156
- @include button-size(
157
- $btn-height-default,
158
- $btn-font-default,
159
- $btn-icon-size-default,
160
- $btn-padding-horizontal-default
161
- );
162
- @include button-attr-color("text", color);
163
-
164
- @include button-attr-color("white-bg", background-color);
165
- @include button-attr-color("border-gray", border-color);
166
-
167
- &.#{$prefix}-button--theme-primary {
168
- @include button-attr-color("primary", color);
169
- @include button-attr-color("primary", border-color);
170
- }
171
-
172
- &.#{$prefix}-button--theme-success {
173
- @include button-attr-color("success", color);
174
- @include button-attr-color("success", border-color);
175
- }
176
-
177
- &.#{$prefix}-button--theme-warning {
178
- @include button-attr-color("warning", color);
179
- @include button-attr-color("warning", border-color);
180
- }
181
-
182
- &.#{$prefix}-button--theme-danger {
183
- @include button-attr-color("danger", color);
184
- @include button-attr-color("danger", border-color);
185
- }
186
-
187
- &.#{$prefix}-button--ghost {
188
- @include button-attr-color("none", background-color, true);
189
- @include button-attr-color("white-ghost", color, true);
190
- @include button-attr-color("white-ghost", border-color, true);
191
-
192
- &.#{$prefix}-button--theme-primary {
193
- @include button-attr-color("primary", color, true);
194
- @include button-attr-color("primary", border-color, true);
195
- }
196
-
197
- &.#{$prefix}-button--theme-success {
198
- @include button-attr-color("success", color, true);
199
- @include button-attr-color("success", border-color, true);
200
- }
201
-
202
- &.#{$prefix}-button--theme-warning {
203
- @include button-attr-color("warning", color, true);
204
- @include button-attr-color("warning", border-color, true);
205
- }
206
-
207
- &.#{$prefix}-button--theme-danger {
208
- @include button-attr-color("danger", color, true);
209
- @include button-attr-color("danger", border-color, true);
210
- }
211
- }
212
-
213
- &.#{$prefix}-is-loading:not(&.#{$prefix}-button--ghost) {
214
- color: btn-color(text, default);
215
-
216
- &.#{$prefix}-button--theme-primary {
217
- color: btn-color(primary, default);
218
- background-color: btn-color(text-bg, default);
219
- }
220
-
221
- &.#{$prefix}-button--theme-success {
222
- color: btn-color(success, default);
223
- background-color: btn-color(text-bg, default);
224
- }
225
-
226
- &.#{$prefix}-button--theme-warning {
227
- color: btn-color(warning, default);
228
- background-color: btn-color(text-bg, default);
229
- }
230
-
231
- &.#{$prefix}-button--theme-danger {
232
- color: btn-color(danger, default);
233
- background-color: btn-color(text-bg, default);
234
- }
235
- }
236
- }
237
-
238
- // 虚线按钮
239
- &--variant-dashed {
240
- @include button-size(
241
- $btn-height-default,
242
- $btn-font-default,
243
- $btn-icon-size-default,
244
- $btn-padding-horizontal-default
245
- );
246
- @include button-attr-color(text, color);
247
- @include button-attr-color(white-bg, background-color);
248
- @include button-attr-color(border-gray, border-color);
249
-
250
- border-style: dashed;
251
-
252
- &.#{$prefix}-button--theme-primary {
253
- @include button-attr-color("primary", color);
254
- @include button-attr-color("primary", border-color);
255
- }
256
-
257
- &.#{$prefix}-button--theme-success {
258
- @include button-attr-color("success", color);
259
- @include button-attr-color("success", border-color);
260
- }
261
-
262
- &.#{$prefix}-button--theme-warning {
263
- @include button-attr-color("warning", color);
264
- @include button-attr-color("warning", border-color);
265
- }
266
-
267
- &.#{$prefix}-button--theme-danger {
268
- @include button-attr-color("danger", color);
269
- @include button-attr-color("danger", border-color);
270
- }
271
-
272
- &.#{$prefix}-button--ghost {
273
- @include button-attr-color("none", background-color, true);
274
- @include button-attr-color("white-ghost", color, true);
275
- @include button-attr-color("white-ghost", border-color, true);
276
-
277
- &.#{$prefix}-button--theme-primary {
278
- @include button-attr-color("primary", color, true);
279
- @include button-attr-color("primary", border-color, true);
280
- }
281
-
282
- &.#{$prefix}-button--theme-success {
283
- @include button-attr-color("success", color, true);
284
- @include button-attr-color("success", border-color, true);
285
- }
286
-
287
- &.#{$prefix}-button--theme-warning {
288
- @include button-attr-color("warning", color, true);
289
- @include button-attr-color("warning", border-color, true);
290
- }
291
-
292
- &.#{$prefix}-button--theme-danger {
293
- @include button-attr-color("danger", color, true);
294
- @include button-attr-color("danger", border-color, true);
295
- }
296
- }
297
- &.#{$prefix}-is-loading:not(&.#{$prefix}-button--ghost) {
298
- color: btn-color(text, default);
299
-
300
- &.#{$prefix}-button--theme-primary {
301
- color: btn-color(primary, default);
302
- background-color: btn-color(text-bg, default);
303
- }
304
-
305
- &.#{$prefix}-button--theme-success {
306
- color: btn-color(success, default);
307
- background-color: btn-color(text-bg, default);
308
- }
309
-
310
- &.#{$prefix}-button--theme-warning {
311
- color: btn-color(warning, default);
312
- background-color: btn-color(text-bg, default);
313
- }
314
-
315
- &.#{$prefix}-button--theme-danger {
316
- color: btn-color(danger, default);
317
- background-color: btn-color(text-bg, default);
318
- }
319
- }
320
- }
321
-
322
- // 文字按钮
323
- &--variant-text {
324
- @include button-size(
325
- $btn-height-default,
326
- $btn-font-default,
327
- $btn-icon-size-default,
328
- $btn-padding-horizontal-default
329
- );
330
- @include button-attr-color("text-gray", color);
331
- @include button-attr-color("text-bg", background-color);
332
- @include button-attr-color("text-bg", border-color);
333
-
334
- &.#{$prefix}-button--theme-primary {
335
- @include button-attr-color("primary", color);
336
- }
337
-
338
- &.#{$prefix}-button--theme-success {
339
- @include button-attr-color("success", color);
340
- }
341
-
342
- &.#{$prefix}-button--theme-warning {
343
- @include button-attr-color("warning", color);
344
- }
345
-
346
- &.#{$prefix}-button--theme-danger {
347
- @include button-attr-color("danger", color);
348
- }
349
-
350
- &.#{$prefix}-button--ghost {
351
- background: none;
352
-
353
- @include button-attr-color("white-ghost", color, true);
354
-
355
- &.#{$prefix}-button--theme-primary {
356
- @include button-attr-color("primary", color, true);
357
- }
358
-
359
- &.#{$prefix}-button--theme-success {
360
- @include button-attr-color("success", color, true);
361
- }
362
-
363
- &.#{$prefix}-button--theme-warning {
364
- @include button-attr-color("warning", color, true);
365
- }
366
-
367
- &.#{$prefix}-button--theme-danger {
368
- @include button-attr-color("danger", color, true);
369
- }
370
- }
371
-
372
- &.#{$prefix}-is-loading:not(&.#{$prefix}-button--ghost) {
373
- color: btn-color(text, default);
374
-
375
- &.#{$prefix}-button--theme-primary {
376
- color: btn-color(primary, default);
377
- }
378
-
379
- &.#{$prefix}-button--theme-success {
380
- color: btn-color(success, default);
381
- }
382
-
383
- &.#{$prefix}-button--theme-warning {
384
- color: btn-color(warning, default);
385
- }
386
-
387
- &.#{$prefix}-button--theme-danger {
388
- color: btn-color(danger, default);
389
- }
390
- }
391
- }
392
-
393
- &.#{$prefix}-is-loading,
394
- &.#{$prefix}-is-disabled {
395
- cursor: not-allowed;
396
- }
397
-
398
- &.#{$prefix}-size-s {
399
- @include button-size($btn-height-s, $btn-font-s, $btn-icon-size-s, $btn-padding-horizontal-s);
400
- }
401
-
402
- &.#{$prefix}-size-l {
403
- @include button-size($btn-height-l, $btn-font-l, $btn-icon-size-l, $btn-padding-horizontal-l);
404
- }
405
-
406
- &--shape-square {
407
- width: $btn-height-default;
408
- padding: 0;
409
-
410
- &.#{$prefix}-size-s {
411
- width: $btn-height-s;
412
- padding: 0;
413
- }
414
-
415
- &.#{$prefix}-size-l {
416
- width: $btn-height-l;
417
- padding: 0;
418
- }
419
- }
420
-
421
- &--shape-round {
422
- border-radius: $border-radius-round;
423
-
424
- &.#{$prefix}-size-s {
425
- border-radius: $btn-shape-border-radius-s;
426
- }
427
-
428
- &.#{$prefix}-size-l {
429
- border-radius: $btn-shape-border-radius-l;
430
- }
431
- }
432
-
433
- &--shape-circle {
434
- width: $btn-height-default;
435
- padding: 0;
436
- text-align: center;
437
- border-radius: $btn-shape-border-radius-default;
438
-
439
- .t-icon {
440
- font-size: $btn-icon-size-default;
441
- }
442
-
443
- .#{$prefix}-loading {
444
- font-size: $btn-loading-size;
445
- }
446
-
447
- &.#{$prefix}-size-s {
448
- width: $btn-height-s;
449
- border-radius: $btn-shape-border-radius-s;
450
- }
451
-
452
- &.#{$prefix}-size-l {
453
- width: $btn-height-l;
454
- padding: 0;
455
- border-radius: $btn-shape-border-radius-l;
456
- }
457
- }
458
-
459
- &.#{$prefix}-size-full-width {
460
- display: flex;
461
- width: 100%;
462
- }
463
- }
464
-
465
- .#{$prefix}-button--ghost {
466
- --ripple-color: @gray-color-10; // 幽灵按钮相当于按钮深色模式,因此固定为深色模�?token
467
- }
468
-
469
- .#{$prefix}-button:not(.#{$prefix}-is-disabled):not(.#{$prefix}-button--ghost) {
470
- --ripple-color: btn-color(white-bg, active);
471
- }
472
-
473
- .#{$prefix}-button--variant-base:not(.#{$prefix}-is-disabled):not(.#{$prefix}-button--ghost) {
474
- --ripple-color: btn-color(gray-bg, active);
475
- }
476
-
477
- .#{$prefix}-button--variant-base.#{$prefix}-button--theme-primary:not(.#{$prefix}-is-disabled):not(
478
- .#{$prefix}-button--ghost
479
- ) {
480
- --ripple-color: btn-color(primary, active);
481
- }
482
-
483
- .#{$prefix}-button--variant-base.#{$prefix}-button--theme-success:not(.#{$prefix}-is-disabled):not(
484
- .#{$prefix}-button--ghost
485
- ) {
486
- --ripple-color: btn-color(success, default)-active;
487
- }
488
-
489
- .#{$prefix}-button--variant-base.#{$prefix}-button--theme-warning:not(.#{$prefix}-is-disabled):not(
490
- .#{$prefix}-button--ghost
491
- ) {
492
- --ripple-color: btn-color(warning, active);
493
- }
494
-
495
- .#{$prefix}-button--variant-base.#{$prefix}-button--theme-danger:not(.#{$prefix}-is-disabled):not(
496
- .#{$prefix}-button--ghost
497
- ) {
498
- --ripple-color: btn-color(danger, active);
499
- }
1
+ @use "sass:map";
2
+ @use "../../_vars.scss" as *;
3
+
4
+ @use "./_vars.scss" as *;
5
+
6
+ @use "./_mixins.scss" as *;
7
+
8
+ @use "../../mixins/_reset.scss" as *;
9
+
10
+ @function btn-color($theme, $state: default) {
11
+ $theme-map: map.get($btn-colors, $theme);
12
+
13
+ @if $theme-map == null {
14
+ @error "Theme `#{$theme}` not found in $btn-colors map.";
15
+ }
16
+
17
+ @return map.get($theme-map, $state);
18
+ }
19
+ @mixin button-attr-color($theme, $attr, $ghost: false) {
20
+ &:hover,
21
+ &:focus-visible {
22
+ #{$attr}: btn-color($theme, hover);
23
+ }
24
+ @if $ghost == true {
25
+ &:active {
26
+ #{$attr}: btn-color($theme, active);
27
+ }
28
+ }
29
+
30
+ @if $ghost == true {
31
+ &.#{$prefix}-is-loading {
32
+ #{$attr}: btn-color($theme, "default");
33
+ }
34
+ } @else {
35
+ &.#{$prefix}-is-loading {
36
+ #{$attr}: btn-color($theme, "disabled");
37
+ }
38
+ }
39
+
40
+ @if $ghost == true {
41
+ #{$attr}: btn-color("ghost", "disabled");
42
+ background-color: transparent;
43
+ } @else {
44
+ #{$attr}: btn-color($theme, disabled);
45
+ }
46
+
47
+ #{$attr}: btn-color($theme, default);
48
+ }
49
+
50
+ .#{$prefix}-button {
51
+ @include reset;
52
+ @include button;
53
+
54
+ text-decoration: none;
55
+
56
+ .#{$prefix}-button__text,
57
+ .t-icon {
58
+ position: relative;
59
+ z-index: 1;
60
+ display: inline-flex;
61
+ }
62
+
63
+ .t-icon {
64
+ font-size: $btn-icon-size-default;
65
+ }
66
+
67
+ .#{$prefix}-loading {
68
+ font-size: $btn-loading-size;
69
+ }
70
+
71
+ .t-icon + .#{$prefix}-button__text:not(:empty) {
72
+ margin-inline-start: $btn-icon-text-margin-left;
73
+ }
74
+
75
+ .#{$prefix}-loading + .#{$prefix}-button__text:not(:empty) {
76
+ margin-inline-start: $btn-icon-text-margin-left;
77
+ }
78
+
79
+ .#{$prefix}-button__suffix:not(:empty) {
80
+ display: inline-flex;
81
+ margin-inline-start: $btn-icon-text-margin-left;
82
+ }
83
+
84
+ // 主要按钮
85
+ &--variant-base {
86
+ color: $btn-text-variant-base-color;
87
+ @include button-size(
88
+ $btn-height-default,
89
+ $btn-font-default,
90
+ $btn-icon-size-default,
91
+ $btn-padding-horizontal-default
92
+ );
93
+ @include button-attr-color("gray-bg", background-color);
94
+ @include button-attr-color("gray-bg", border-color);
95
+ @include button-attr-color("text-gray", color);
96
+
97
+ &.#{$prefix}-button--theme-primary {
98
+ color: $btn-text-variant-base-color;
99
+ @include button-attr-color("primary", background-color);
100
+ @include button-attr-color("primary", border-color);
101
+ }
102
+
103
+ &.#{$prefix}-button--theme-success {
104
+ color: $btn-text-variant-base-color;
105
+ @include button-attr-color("success", background-color);
106
+ @include button-attr-color("success", border-color);
107
+ }
108
+
109
+ &.#{$prefix}-button--theme-warning {
110
+ color: $btn-text-variant-base-color;
111
+ @include button-attr-color("warning", background-color);
112
+ @include button-attr-color("warning", border-color);
113
+ }
114
+
115
+ &.#{$prefix}-button--theme-danger {
116
+ color: $btn-text-variant-base-color;
117
+ @include button-attr-color("danger", background-color);
118
+ @include button-attr-color("danger", border-color);
119
+ }
120
+
121
+ &.#{$prefix}-button--ghost {
122
+ @include button-attr-color("primary", background-color, true);
123
+ @include button-attr-color("white-ghost", color, true);
124
+ @include button-attr-color("white-ghost", border-color, true);
125
+
126
+ &.#{$prefix}-button--theme-primary {
127
+ @include button-attr-color("primary", color, true);
128
+ @include button-attr-color("primary", border-color, true);
129
+ }
130
+
131
+ &.#{$prefix}-button--theme-success {
132
+ @include button-attr-color("success", color, true);
133
+ @include button-attr-color("success", border-color, true);
134
+ }
135
+
136
+ &.#{$prefix}-button--theme-warning {
137
+ @include button-attr-color("warning", color, true);
138
+ @include button-attr-color("warning", border-color, true);
139
+ }
140
+
141
+ &.#{$prefix}-button--theme-danger {
142
+ @include button-attr-color("danger", color, true);
143
+ @include button-attr-color("danger", border-color, true);
144
+ }
145
+ }
146
+
147
+ &.#{$prefix}-is-loading:not(&.#{$prefix}-button--ghost) {
148
+ &.#{$prefix}-button--theme-default {
149
+ color: btn-color(text, default);
150
+ }
151
+ }
152
+ }
153
+
154
+ // 次要按钮
155
+ &--variant-outline {
156
+ @include button-size(
157
+ $btn-height-default,
158
+ $btn-font-default,
159
+ $btn-icon-size-default,
160
+ $btn-padding-horizontal-default
161
+ );
162
+ @include button-attr-color("text", color);
163
+
164
+ @include button-attr-color("white-bg", background-color);
165
+ @include button-attr-color("border-gray", border-color);
166
+
167
+ &.#{$prefix}-button--theme-primary {
168
+ @include button-attr-color("primary", color);
169
+ @include button-attr-color("primary", border-color);
170
+ }
171
+
172
+ &.#{$prefix}-button--theme-success {
173
+ @include button-attr-color("success", color);
174
+ @include button-attr-color("success", border-color);
175
+ }
176
+
177
+ &.#{$prefix}-button--theme-warning {
178
+ @include button-attr-color("warning", color);
179
+ @include button-attr-color("warning", border-color);
180
+ }
181
+
182
+ &.#{$prefix}-button--theme-danger {
183
+ @include button-attr-color("danger", color);
184
+ @include button-attr-color("danger", border-color);
185
+ }
186
+
187
+ &.#{$prefix}-button--ghost {
188
+ @include button-attr-color("none", background-color, true);
189
+ @include button-attr-color("white-ghost", color, true);
190
+ @include button-attr-color("white-ghost", border-color, true);
191
+
192
+ &.#{$prefix}-button--theme-primary {
193
+ @include button-attr-color("primary", color, true);
194
+ @include button-attr-color("primary", border-color, true);
195
+ }
196
+
197
+ &.#{$prefix}-button--theme-success {
198
+ @include button-attr-color("success", color, true);
199
+ @include button-attr-color("success", border-color, true);
200
+ }
201
+
202
+ &.#{$prefix}-button--theme-warning {
203
+ @include button-attr-color("warning", color, true);
204
+ @include button-attr-color("warning", border-color, true);
205
+ }
206
+
207
+ &.#{$prefix}-button--theme-danger {
208
+ @include button-attr-color("danger", color, true);
209
+ @include button-attr-color("danger", border-color, true);
210
+ }
211
+ }
212
+
213
+ &.#{$prefix}-is-loading:not(&.#{$prefix}-button--ghost) {
214
+ color: btn-color(text, default);
215
+
216
+ &.#{$prefix}-button--theme-primary {
217
+ color: btn-color(primary, default);
218
+ background-color: btn-color(text-bg, default);
219
+ }
220
+
221
+ &.#{$prefix}-button--theme-success {
222
+ color: btn-color(success, default);
223
+ background-color: btn-color(text-bg, default);
224
+ }
225
+
226
+ &.#{$prefix}-button--theme-warning {
227
+ color: btn-color(warning, default);
228
+ background-color: btn-color(text-bg, default);
229
+ }
230
+
231
+ &.#{$prefix}-button--theme-danger {
232
+ color: btn-color(danger, default);
233
+ background-color: btn-color(text-bg, default);
234
+ }
235
+ }
236
+ }
237
+
238
+ // 虚线按钮
239
+ &--variant-dashed {
240
+ @include button-size(
241
+ $btn-height-default,
242
+ $btn-font-default,
243
+ $btn-icon-size-default,
244
+ $btn-padding-horizontal-default
245
+ );
246
+ @include button-attr-color(text, color);
247
+ @include button-attr-color(white-bg, background-color);
248
+ @include button-attr-color(border-gray, border-color);
249
+
250
+ border-style: dashed;
251
+
252
+ &.#{$prefix}-button--theme-primary {
253
+ @include button-attr-color("primary", color);
254
+ @include button-attr-color("primary", border-color);
255
+ }
256
+
257
+ &.#{$prefix}-button--theme-success {
258
+ @include button-attr-color("success", color);
259
+ @include button-attr-color("success", border-color);
260
+ }
261
+
262
+ &.#{$prefix}-button--theme-warning {
263
+ @include button-attr-color("warning", color);
264
+ @include button-attr-color("warning", border-color);
265
+ }
266
+
267
+ &.#{$prefix}-button--theme-danger {
268
+ @include button-attr-color("danger", color);
269
+ @include button-attr-color("danger", border-color);
270
+ }
271
+
272
+ &.#{$prefix}-button--ghost {
273
+ @include button-attr-color("none", background-color, true);
274
+ @include button-attr-color("white-ghost", color, true);
275
+ @include button-attr-color("white-ghost", border-color, true);
276
+
277
+ &.#{$prefix}-button--theme-primary {
278
+ @include button-attr-color("primary", color, true);
279
+ @include button-attr-color("primary", border-color, true);
280
+ }
281
+
282
+ &.#{$prefix}-button--theme-success {
283
+ @include button-attr-color("success", color, true);
284
+ @include button-attr-color("success", border-color, true);
285
+ }
286
+
287
+ &.#{$prefix}-button--theme-warning {
288
+ @include button-attr-color("warning", color, true);
289
+ @include button-attr-color("warning", border-color, true);
290
+ }
291
+
292
+ &.#{$prefix}-button--theme-danger {
293
+ @include button-attr-color("danger", color, true);
294
+ @include button-attr-color("danger", border-color, true);
295
+ }
296
+ }
297
+ &.#{$prefix}-is-loading:not(&.#{$prefix}-button--ghost) {
298
+ color: btn-color(text, default);
299
+
300
+ &.#{$prefix}-button--theme-primary {
301
+ color: btn-color(primary, default);
302
+ background-color: btn-color(text-bg, default);
303
+ }
304
+
305
+ &.#{$prefix}-button--theme-success {
306
+ color: btn-color(success, default);
307
+ background-color: btn-color(text-bg, default);
308
+ }
309
+
310
+ &.#{$prefix}-button--theme-warning {
311
+ color: btn-color(warning, default);
312
+ background-color: btn-color(text-bg, default);
313
+ }
314
+
315
+ &.#{$prefix}-button--theme-danger {
316
+ color: btn-color(danger, default);
317
+ background-color: btn-color(text-bg, default);
318
+ }
319
+ }
320
+ }
321
+
322
+ // 文字按钮
323
+ &--variant-text {
324
+ @include button-size(
325
+ $btn-height-default,
326
+ $btn-font-default,
327
+ $btn-icon-size-default,
328
+ $btn-padding-horizontal-default
329
+ );
330
+ @include button-attr-color("text-gray", color);
331
+ @include button-attr-color("text-bg", background-color);
332
+ @include button-attr-color("text-bg", border-color);
333
+
334
+ &.#{$prefix}-button--theme-primary {
335
+ @include button-attr-color("primary", color);
336
+ }
337
+
338
+ &.#{$prefix}-button--theme-success {
339
+ @include button-attr-color("success", color);
340
+ }
341
+
342
+ &.#{$prefix}-button--theme-warning {
343
+ @include button-attr-color("warning", color);
344
+ }
345
+
346
+ &.#{$prefix}-button--theme-danger {
347
+ @include button-attr-color("danger", color);
348
+ }
349
+
350
+ &.#{$prefix}-button--ghost {
351
+ background: none;
352
+
353
+ @include button-attr-color("white-ghost", color, true);
354
+
355
+ &.#{$prefix}-button--theme-primary {
356
+ @include button-attr-color("primary", color, true);
357
+ }
358
+
359
+ &.#{$prefix}-button--theme-success {
360
+ @include button-attr-color("success", color, true);
361
+ }
362
+
363
+ &.#{$prefix}-button--theme-warning {
364
+ @include button-attr-color("warning", color, true);
365
+ }
366
+
367
+ &.#{$prefix}-button--theme-danger {
368
+ @include button-attr-color("danger", color, true);
369
+ }
370
+ }
371
+
372
+ &.#{$prefix}-is-loading:not(&.#{$prefix}-button--ghost) {
373
+ color: btn-color(text, default);
374
+
375
+ &.#{$prefix}-button--theme-primary {
376
+ color: btn-color(primary, default);
377
+ }
378
+
379
+ &.#{$prefix}-button--theme-success {
380
+ color: btn-color(success, default);
381
+ }
382
+
383
+ &.#{$prefix}-button--theme-warning {
384
+ color: btn-color(warning, default);
385
+ }
386
+
387
+ &.#{$prefix}-button--theme-danger {
388
+ color: btn-color(danger, default);
389
+ }
390
+ }
391
+ }
392
+
393
+ &.#{$prefix}-is-loading,
394
+ &.#{$prefix}-is-disabled {
395
+ cursor: not-allowed;
396
+ }
397
+
398
+ &.#{$prefix}-size-s {
399
+ @include button-size($btn-height-s, $btn-font-s, $btn-icon-size-s, $btn-padding-horizontal-s);
400
+ }
401
+
402
+ &.#{$prefix}-size-l {
403
+ @include button-size($btn-height-l, $btn-font-l, $btn-icon-size-l, $btn-padding-horizontal-l);
404
+ }
405
+
406
+ &--shape-square {
407
+ width: $btn-height-default;
408
+ padding: 0;
409
+
410
+ &.#{$prefix}-size-s {
411
+ width: $btn-height-s;
412
+ padding: 0;
413
+ }
414
+
415
+ &.#{$prefix}-size-l {
416
+ width: $btn-height-l;
417
+ padding: 0;
418
+ }
419
+ }
420
+
421
+ &--shape-round {
422
+ border-radius: $border-radius-round;
423
+
424
+ &.#{$prefix}-size-s {
425
+ border-radius: $btn-shape-border-radius-s;
426
+ }
427
+
428
+ &.#{$prefix}-size-l {
429
+ border-radius: $btn-shape-border-radius-l;
430
+ }
431
+ }
432
+
433
+ &--shape-circle {
434
+ width: $btn-height-default;
435
+ padding: 0;
436
+ text-align: center;
437
+ border-radius: $btn-shape-border-radius-default;
438
+
439
+ .t-icon {
440
+ font-size: $btn-icon-size-default;
441
+ }
442
+
443
+ .#{$prefix}-loading {
444
+ font-size: $btn-loading-size;
445
+ }
446
+
447
+ &.#{$prefix}-size-s {
448
+ width: $btn-height-s;
449
+ border-radius: $btn-shape-border-radius-s;
450
+ }
451
+
452
+ &.#{$prefix}-size-l {
453
+ width: $btn-height-l;
454
+ padding: 0;
455
+ border-radius: $btn-shape-border-radius-l;
456
+ }
457
+ }
458
+
459
+ &.#{$prefix}-size-full-width {
460
+ display: flex;
461
+ width: 100%;
462
+ }
463
+ }
464
+
465
+ .#{$prefix}-button--ghost {
466
+ --ripple-color: @gray-color-10; // 幽灵按钮相当于按钮深色模式,因此固定为深色模�?token
467
+ }
468
+
469
+ .#{$prefix}-button:not(.#{$prefix}-is-disabled):not(.#{$prefix}-button--ghost) {
470
+ --ripple-color: btn-color(white-bg, active);
471
+ }
472
+
473
+ .#{$prefix}-button--variant-base:not(.#{$prefix}-is-disabled):not(.#{$prefix}-button--ghost) {
474
+ --ripple-color: btn-color(gray-bg, active);
475
+ }
476
+
477
+ .#{$prefix}-button--variant-base.#{$prefix}-button--theme-primary:not(.#{$prefix}-is-disabled):not(
478
+ .#{$prefix}-button--ghost
479
+ ) {
480
+ --ripple-color: btn-color(primary, active);
481
+ }
482
+
483
+ .#{$prefix}-button--variant-base.#{$prefix}-button--theme-success:not(.#{$prefix}-is-disabled):not(
484
+ .#{$prefix}-button--ghost
485
+ ) {
486
+ --ripple-color: btn-color(success, default)-active;
487
+ }
488
+
489
+ .#{$prefix}-button--variant-base.#{$prefix}-button--theme-warning:not(.#{$prefix}-is-disabled):not(
490
+ .#{$prefix}-button--ghost
491
+ ) {
492
+ --ripple-color: btn-color(warning, active);
493
+ }
494
+
495
+ .#{$prefix}-button--variant-base.#{$prefix}-button--theme-danger:not(.#{$prefix}-is-disabled):not(
496
+ .#{$prefix}-button--ghost
497
+ ) {
498
+ --ripple-color: btn-color(danger, active);
499
+ }