@tiny-design/react 1.3.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. package/es/alert/style/_index.scss +2 -2
  2. package/es/alert/style/index.css +2 -2
  3. package/es/auto-complete/style/_index.scss +4 -5
  4. package/es/auto-complete/style/index.css +4 -5
  5. package/es/breadcrumb/style/index.css +1 -1
  6. package/es/breadcrumb/types.d.ts +1 -1
  7. package/es/button/style/_index.scss +16 -11
  8. package/es/button/style/index.css +40 -19
  9. package/es/calendar/style/_index.scss +9 -9
  10. package/es/calendar/style/index.css +9 -9
  11. package/es/card/style/index.css +3 -3
  12. package/es/cascader/style/_index.scss +9 -9
  13. package/es/cascader/style/index.css +9 -9
  14. package/es/checkbox/style/_index.scss +9 -12
  15. package/es/checkbox/style/index.css +9 -12
  16. package/es/collapse/style/index.css +3 -3
  17. package/es/color-picker/style/_index.scss +7 -7
  18. package/es/color-picker/style/index.css +4 -4
  19. package/es/date-picker/style/_index.scss +1 -1
  20. package/es/date-picker/style/index.css +1 -1
  21. package/es/descriptions/style/_index.scss +5 -6
  22. package/es/descriptions/style/index.css +6 -6
  23. package/es/empty/style/_index.scss +1 -1
  24. package/es/empty/style/index.css +1 -1
  25. package/es/form/style/_index.scss +5 -6
  26. package/es/form/style/index.css +4 -4
  27. package/es/index.d.ts +2 -1
  28. package/es/index.js +2 -1
  29. package/es/input/style/_index.scss +5 -4
  30. package/es/input/style/_mixin.scss +1 -1
  31. package/es/input/style/index.css +21 -20
  32. package/es/input-number/input-number.js +11 -5
  33. package/es/input-number/input-number.js.map +1 -1
  34. package/es/input-number/style/_index.scss +5 -3
  35. package/es/input-number/style/index.css +13 -11
  36. package/es/input-otp/style/_index.scss +1 -1
  37. package/es/input-otp/style/index.css +8 -8
  38. package/es/list/style/_index.scss +3 -3
  39. package/es/list/style/index.css +3 -3
  40. package/es/marquee/index.d.ts +1 -0
  41. package/es/marquee/index.js +9 -0
  42. package/es/marquee/index.js.map +1 -0
  43. package/es/marquee/marquee.d.ts +8 -0
  44. package/es/marquee/marquee.js +42 -0
  45. package/es/marquee/marquee.js.map +1 -0
  46. package/es/marquee/style/_index.scss +77 -0
  47. package/es/marquee/style/index.css +64 -0
  48. package/es/marquee/style/index.d.ts +1 -0
  49. package/es/marquee/style/index.js +1 -0
  50. package/es/marquee/types.d.ts +21 -0
  51. package/es/native-select/style/index.css +4 -4
  52. package/es/notification/style/_index.scss +1 -1
  53. package/es/notification/style/index.css +1 -1
  54. package/es/pop-confirm/style/_index.scss +5 -1
  55. package/es/pop-confirm/style/index.css +5 -1
  56. package/es/popup/style/_index.scss +9 -9
  57. package/es/popup/style/index.css +10 -10
  58. package/es/radio/style/_index.scss +5 -8
  59. package/es/radio/style/index.css +5 -8
  60. package/es/segmented/style/_index.scss +10 -10
  61. package/es/segmented/style/index.css +9 -9
  62. package/es/select/style/_index.scss +16 -17
  63. package/es/select/style/index.css +15 -16
  64. package/es/slider/style/_index.scss +1 -9
  65. package/es/slider/style/index.css +1 -6
  66. package/es/speed-dial/style/_index.scss +8 -9
  67. package/es/speed-dial/style/index.css +7 -7
  68. package/es/statistic/style/_index.scss +2 -2
  69. package/es/statistic/style/index.css +2 -2
  70. package/es/style/_component.scss +1 -0
  71. package/es/style/base.css +81 -3
  72. package/es/table/style/_index.scss +6 -6
  73. package/es/table/style/index.css +5 -5
  74. package/es/tag/style/_index.scss +24 -0
  75. package/es/tag/style/index.css +21 -1
  76. package/es/tag/types.d.ts +2 -1
  77. package/es/tag/types.js +7 -2
  78. package/es/tag/types.js.map +1 -1
  79. package/es/textarea/style/index.css +2 -2
  80. package/es/time-picker/style/_index.scss +14 -1
  81. package/es/time-picker/style/index.css +11 -1
  82. package/es/time-picker/time-panel.js +28 -28
  83. package/es/time-picker/time-panel.js.map +1 -1
  84. package/es/time-picker/time-picker.js +50 -29
  85. package/es/time-picker/time-picker.js.map +1 -1
  86. package/es/timeline/style/_index.scss +3 -3
  87. package/es/timeline/style/index.css +3 -3
  88. package/es/tooltip/style/index.css +1 -1
  89. package/es/transfer/style/_index.scss +4 -4
  90. package/es/transfer/style/index.css +4 -4
  91. package/es/tree/style/index.css +1 -1
  92. package/es/typography/style/_index.scss +2 -2
  93. package/es/typography/style/index.css +2 -2
  94. package/es/upload/style/_index.scss +4 -4
  95. package/es/upload/style/index.css +4 -4
  96. package/lib/alert/style/_index.scss +2 -2
  97. package/lib/alert/style/index.css +2 -2
  98. package/lib/auto-complete/style/_index.scss +4 -5
  99. package/lib/auto-complete/style/index.css +4 -5
  100. package/lib/breadcrumb/style/index.css +1 -1
  101. package/lib/breadcrumb/types.d.ts +1 -1
  102. package/lib/button/style/_index.scss +16 -11
  103. package/lib/button/style/index.css +40 -19
  104. package/lib/calendar/style/_index.scss +9 -9
  105. package/lib/calendar/style/index.css +9 -9
  106. package/lib/card/style/index.css +3 -3
  107. package/lib/cascader/style/_index.scss +9 -9
  108. package/lib/cascader/style/index.css +9 -9
  109. package/lib/checkbox/style/_index.scss +9 -12
  110. package/lib/checkbox/style/index.css +9 -12
  111. package/lib/collapse/style/index.css +3 -3
  112. package/lib/color-picker/style/_index.scss +7 -7
  113. package/lib/color-picker/style/index.css +4 -4
  114. package/lib/date-picker/style/_index.scss +1 -1
  115. package/lib/date-picker/style/index.css +1 -1
  116. package/lib/descriptions/style/_index.scss +5 -6
  117. package/lib/descriptions/style/index.css +6 -6
  118. package/lib/empty/style/_index.scss +1 -1
  119. package/lib/empty/style/index.css +1 -1
  120. package/lib/form/style/_index.scss +5 -6
  121. package/lib/form/style/index.css +4 -4
  122. package/lib/index.d.ts +2 -1
  123. package/lib/index.js +76 -74
  124. package/lib/input/style/_index.scss +5 -4
  125. package/lib/input/style/_mixin.scss +1 -1
  126. package/lib/input/style/index.css +21 -20
  127. package/lib/input-number/input-number.js +11 -5
  128. package/lib/input-number/input-number.js.map +1 -1
  129. package/lib/input-number/style/_index.scss +5 -3
  130. package/lib/input-number/style/index.css +13 -11
  131. package/lib/input-otp/style/_index.scss +1 -1
  132. package/lib/input-otp/style/index.css +8 -8
  133. package/lib/list/style/_index.scss +3 -3
  134. package/lib/list/style/index.css +3 -3
  135. package/lib/marquee/index.js +8 -0
  136. package/lib/marquee/index.js.map +1 -0
  137. package/lib/marquee/marquee.d.ts +8 -0
  138. package/lib/marquee/marquee.js +45 -0
  139. package/lib/marquee/marquee.js.map +1 -0
  140. package/lib/marquee/style/_index.scss +77 -0
  141. package/lib/marquee/style/index.css +64 -0
  142. package/lib/marquee/style/index.d.ts +1 -0
  143. package/lib/marquee/style/index.js +1 -0
  144. package/lib/marquee/types.d.ts +21 -0
  145. package/lib/native-select/style/index.css +4 -4
  146. package/lib/notification/style/_index.scss +1 -1
  147. package/lib/notification/style/index.css +1 -1
  148. package/lib/pop-confirm/style/_index.scss +5 -1
  149. package/lib/pop-confirm/style/index.css +5 -1
  150. package/lib/popup/style/_index.scss +9 -9
  151. package/lib/popup/style/index.css +10 -10
  152. package/lib/radio/style/_index.scss +5 -8
  153. package/lib/radio/style/index.css +5 -8
  154. package/lib/segmented/style/_index.scss +10 -10
  155. package/lib/segmented/style/index.css +9 -9
  156. package/lib/select/style/_index.scss +16 -17
  157. package/lib/select/style/index.css +15 -16
  158. package/lib/slider/style/_index.scss +1 -9
  159. package/lib/slider/style/index.css +1 -6
  160. package/lib/speed-dial/style/_index.scss +8 -9
  161. package/lib/speed-dial/style/index.css +7 -7
  162. package/lib/statistic/style/_index.scss +2 -2
  163. package/lib/statistic/style/index.css +2 -2
  164. package/lib/style/_component.scss +1 -0
  165. package/lib/style/base.css +81 -3
  166. package/lib/table/style/_index.scss +6 -6
  167. package/lib/table/style/index.css +5 -5
  168. package/lib/tag/style/_index.scss +24 -0
  169. package/lib/tag/style/index.css +21 -1
  170. package/lib/tag/types.d.ts +2 -1
  171. package/lib/tag/types.js +7 -2
  172. package/lib/tag/types.js.map +1 -1
  173. package/lib/textarea/style/index.css +2 -2
  174. package/lib/time-picker/style/_index.scss +14 -1
  175. package/lib/time-picker/style/index.css +11 -1
  176. package/lib/time-picker/time-panel.js +28 -28
  177. package/lib/time-picker/time-panel.js.map +1 -1
  178. package/lib/time-picker/time-picker.js +50 -29
  179. package/lib/time-picker/time-picker.js.map +1 -1
  180. package/lib/timeline/style/_index.scss +3 -3
  181. package/lib/timeline/style/index.css +3 -3
  182. package/lib/tooltip/style/index.css +1 -1
  183. package/lib/transfer/style/_index.scss +4 -4
  184. package/lib/transfer/style/index.css +4 -4
  185. package/lib/tree/style/index.css +1 -1
  186. package/lib/typography/style/_index.scss +2 -2
  187. package/lib/typography/style/index.css +2 -2
  188. package/lib/upload/style/_index.scss +4 -4
  189. package/lib/upload/style/index.css +4 -4
  190. package/package.json +3 -3
@@ -27,19 +27,26 @@
27
27
  --ty-color-fill-secondary: #f5f5f5;
28
28
  --ty-color-fill-tertiary: #f0f0f0;
29
29
  --ty-color-success: #52c41a;
30
+ --ty-color-success-hover: #73d13d;
31
+ --ty-color-success-active: #389e0d;
30
32
  --ty-color-success-bg: #f6ffed;
31
33
  --ty-color-success-border: #b7eb8f;
32
34
  --ty-color-success-text: #49b10e;
33
35
  --ty-color-warning: #ff9800;
36
+ --ty-color-warning-hover: #ffad33;
37
+ --ty-color-warning-active: #e68a00;
34
38
  --ty-color-warning-bg: #fffbe6;
35
39
  --ty-color-warning-border: #ffe58f;
36
40
  --ty-color-warning-text: #d48806;
37
41
  --ty-color-danger: #f44336;
42
+ --ty-color-danger-hover: #ff7875;
43
+ --ty-color-danger-active: #cf1322;
38
44
  --ty-color-danger-bg: #fff1f0;
39
45
  --ty-color-danger-border: #ffa39e;
40
46
  --ty-color-danger-text: #cf1322;
41
- --ty-color-danger-hover: #ff7875;
42
47
  --ty-color-info: #1890ff;
48
+ --ty-color-info-hover: #40a9ff;
49
+ --ty-color-info-active: #096dd9;
43
50
  --ty-color-info-bg: #e6f7ff;
44
51
  --ty-color-info-border: #91d5ff;
45
52
  --ty-color-info-text: #096dd9;
@@ -263,6 +270,25 @@
263
270
  --ty-calendar-bg: #fff;
264
271
  --ty-calendar-border: #e9ecef;
265
272
  --ty-calendar-hover: #f6f9fc;
273
+ --ty-font-family: -apple-system, blinkmacsystemfont, Segoe UI, roboto, Helvetica Neue, arial, Noto Sans, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;
274
+ --ty-font-family-monospace: lucida console, consolas, monaco, andale mono, ubuntu mono, monospace;
275
+ --ty-font-size-base: 1rem;
276
+ --ty-font-size-sm: 0.875rem;
277
+ --ty-font-size-lg: 1.25rem;
278
+ --ty-font-weight: 400;
279
+ --ty-line-height-base: 1.5;
280
+ --ty-headings-font-weight: 500;
281
+ --ty-h1-font-size: 2.5rem;
282
+ --ty-h2-font-size: 2rem;
283
+ --ty-h3-font-size: 1.75rem;
284
+ --ty-h4-font-size: 1.5rem;
285
+ --ty-h5-font-size: 1.25rem;
286
+ --ty-h6-font-size: 1rem;
287
+ --ty-border-radius: 2px;
288
+ --ty-height-sm: 24px;
289
+ --ty-height-md: 32px;
290
+ --ty-height-lg: 42px;
291
+ --ty-spacer: 1rem;
266
292
  }
267
293
 
268
294
  html[data-tiny-theme=dark] {
@@ -294,19 +320,26 @@ html[data-tiny-theme=dark] {
294
320
  --ty-color-fill-secondary: #2a2a2a;
295
321
  --ty-color-fill-tertiary: #303030;
296
322
  --ty-color-success: #49aa19;
323
+ --ty-color-success-hover: #6abe39;
324
+ --ty-color-success-active: #3c8c14;
297
325
  --ty-color-success-bg: #162312;
298
326
  --ty-color-success-border: #274916;
299
327
  --ty-color-success-text: #6abe39;
300
328
  --ty-color-warning: #d89614;
329
+ --ty-color-warning-hover: #e8b339;
330
+ --ty-color-warning-active: #b37a10;
301
331
  --ty-color-warning-bg: #2b2111;
302
332
  --ty-color-warning-border: #594214;
303
333
  --ty-color-warning-text: #e8b339;
304
334
  --ty-color-danger: #d32029;
335
+ --ty-color-danger-hover: #e84749;
336
+ --ty-color-danger-active: #ab1a20;
305
337
  --ty-color-danger-bg: #2a1215;
306
338
  --ty-color-danger-border: #58181c;
307
339
  --ty-color-danger-text: #e84749;
308
- --ty-color-danger-hover: #e84749;
309
340
  --ty-color-info: #177ddc;
341
+ --ty-color-info-hover: #3c9ae8;
342
+ --ty-color-info-active: #1268b3;
310
343
  --ty-color-info-bg: #111d2c;
311
344
  --ty-color-info-border: #15395b;
312
345
  --ty-color-info-text: #3c9ae8;
@@ -530,6 +563,25 @@ html[data-tiny-theme=dark] {
530
563
  --ty-calendar-bg: #1f1f1f;
531
564
  --ty-calendar-border: #363636;
532
565
  --ty-calendar-hover: #2a2a2a;
566
+ --ty-font-family: -apple-system, blinkmacsystemfont, Segoe UI, roboto, Helvetica Neue, arial, Noto Sans, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;
567
+ --ty-font-family-monospace: lucida console, consolas, monaco, andale mono, ubuntu mono, monospace;
568
+ --ty-font-size-base: 1rem;
569
+ --ty-font-size-sm: 0.875rem;
570
+ --ty-font-size-lg: 1.25rem;
571
+ --ty-font-weight: 400;
572
+ --ty-line-height-base: 1.5;
573
+ --ty-headings-font-weight: 500;
574
+ --ty-h1-font-size: 2.5rem;
575
+ --ty-h2-font-size: 2rem;
576
+ --ty-h3-font-size: 1.75rem;
577
+ --ty-h4-font-size: 1.5rem;
578
+ --ty-h5-font-size: 1.25rem;
579
+ --ty-h6-font-size: 1rem;
580
+ --ty-border-radius: 2px;
581
+ --ty-height-sm: 24px;
582
+ --ty-height-md: 32px;
583
+ --ty-height-lg: 42px;
584
+ --ty-spacer: 1rem;
533
585
  }
534
586
 
535
587
  @media (prefers-color-scheme: dark) {
@@ -562,19 +614,26 @@ html[data-tiny-theme=dark] {
562
614
  --ty-color-fill-secondary: #2a2a2a;
563
615
  --ty-color-fill-tertiary: #303030;
564
616
  --ty-color-success: #49aa19;
617
+ --ty-color-success-hover: #6abe39;
618
+ --ty-color-success-active: #3c8c14;
565
619
  --ty-color-success-bg: #162312;
566
620
  --ty-color-success-border: #274916;
567
621
  --ty-color-success-text: #6abe39;
568
622
  --ty-color-warning: #d89614;
623
+ --ty-color-warning-hover: #e8b339;
624
+ --ty-color-warning-active: #b37a10;
569
625
  --ty-color-warning-bg: #2b2111;
570
626
  --ty-color-warning-border: #594214;
571
627
  --ty-color-warning-text: #e8b339;
572
628
  --ty-color-danger: #d32029;
629
+ --ty-color-danger-hover: #e84749;
630
+ --ty-color-danger-active: #ab1a20;
573
631
  --ty-color-danger-bg: #2a1215;
574
632
  --ty-color-danger-border: #58181c;
575
633
  --ty-color-danger-text: #e84749;
576
- --ty-color-danger-hover: #e84749;
577
634
  --ty-color-info: #177ddc;
635
+ --ty-color-info-hover: #3c9ae8;
636
+ --ty-color-info-active: #1268b3;
578
637
  --ty-color-info-bg: #111d2c;
579
638
  --ty-color-info-border: #15395b;
580
639
  --ty-color-info-text: #3c9ae8;
@@ -798,6 +857,25 @@ html[data-tiny-theme=dark] {
798
857
  --ty-calendar-bg: #1f1f1f;
799
858
  --ty-calendar-border: #363636;
800
859
  --ty-calendar-hover: #2a2a2a;
860
+ --ty-font-family: -apple-system, blinkmacsystemfont, Segoe UI, roboto, Helvetica Neue, arial, Noto Sans, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;
861
+ --ty-font-family-monospace: lucida console, consolas, monaco, andale mono, ubuntu mono, monospace;
862
+ --ty-font-size-base: 1rem;
863
+ --ty-font-size-sm: 0.875rem;
864
+ --ty-font-size-lg: 1.25rem;
865
+ --ty-font-weight: 400;
866
+ --ty-line-height-base: 1.5;
867
+ --ty-headings-font-weight: 500;
868
+ --ty-h1-font-size: 2.5rem;
869
+ --ty-h2-font-size: 2rem;
870
+ --ty-h3-font-size: 1.75rem;
871
+ --ty-h4-font-size: 1.5rem;
872
+ --ty-h5-font-size: 1.25rem;
873
+ --ty-h6-font-size: 1rem;
874
+ --ty-border-radius: 2px;
875
+ --ty-height-sm: 24px;
876
+ --ty-height-md: 32px;
877
+ --ty-height-lg: 42px;
878
+ --ty-spacer: 1rem;
801
879
  }
802
880
  }
803
881
  /* stylelint-disable scss/comment-no-empty */
@@ -2,7 +2,7 @@
2
2
 
3
3
  .#{$prefix}-table {
4
4
  color: var(--ty-color-text, #{$gray-800});
5
- font-size: $font-size-base;
5
+ font-size: var(--ty-font-size-base);
6
6
 
7
7
  &__wrapper {
8
8
  overflow-x: auto;
@@ -24,8 +24,8 @@
24
24
 
25
25
  // Sizes
26
26
  &_sm &__cell {
27
- padding: 8px 8px;
28
- font-size: $font-size-sm;
27
+ padding: 8px;
28
+ font-size: var(--ty-font-size-sm);
29
29
  }
30
30
 
31
31
  &_md &__cell {
@@ -33,8 +33,8 @@
33
33
  }
34
34
 
35
35
  &_lg &__cell {
36
- padding: 16px 16px;
37
- font-size: $font-size-lg;
36
+ padding: 16px;
37
+ font-size: var(--ty-font-size-lg);
38
38
  }
39
39
 
40
40
  // Sticky header for virtual scroll
@@ -99,7 +99,7 @@
99
99
  }
100
100
 
101
101
  &_selected {
102
- background: var(--ty-table-selected-bg, rgba(110, 65, 191, 0.06));
102
+ background: var(--ty-table-selected-bg, rgb(110 65 191 / 6%));
103
103
  }
104
104
  }
105
105
 
@@ -1,6 +1,6 @@
1
1
  .ty-table {
2
2
  color: var(--ty-color-text, #32325d);
3
- font-size: 1rem;
3
+ font-size: var(--ty-font-size-base);
4
4
  }
5
5
  .ty-table__wrapper {
6
6
  overflow-x: auto;
@@ -17,15 +17,15 @@
17
17
  border: 1px solid var(--ty-table-border, #dee2e6);
18
18
  }
19
19
  .ty-table_sm .ty-table__cell {
20
- padding: 8px 8px;
21
- font-size: 0.875rem;
20
+ padding: 8px;
21
+ font-size: var(--ty-font-size-sm);
22
22
  }
23
23
  .ty-table_md .ty-table__cell {
24
24
  padding: 12px 16px;
25
25
  }
26
26
  .ty-table_lg .ty-table__cell {
27
- padding: 16px 16px;
28
- font-size: 1.25rem;
27
+ padding: 16px;
28
+ font-size: var(--ty-font-size-lg);
29
29
  }
30
30
  .ty-table__thead_sticky {
31
31
  position: sticky;
@@ -102,6 +102,30 @@
102
102
  background: var(--ty-tag-purple-bg);
103
103
  border-color: var(--ty-tag-purple-border);
104
104
  }
105
+
106
+ &_success {
107
+ color: var(--ty-color-success);
108
+ background: var(--ty-color-success-bg);
109
+ border-color: var(--ty-color-success-border);
110
+ }
111
+
112
+ &_info {
113
+ color: var(--ty-color-info);
114
+ background: var(--ty-color-info-bg);
115
+ border-color: var(--ty-color-info-border);
116
+ }
117
+
118
+ &_warning {
119
+ color: var(--ty-color-warning);
120
+ background: var(--ty-color-warning-bg);
121
+ border-color: var(--ty-color-warning-border);
122
+ }
123
+
124
+ &_danger {
125
+ color: var(--ty-color-danger);
126
+ background: var(--ty-color-danger-bg);
127
+ border-color: var(--ty-color-danger-border);
128
+ }
105
129
  }
106
130
 
107
131
  .#{$prefix}-checkable-tag {
@@ -7,7 +7,7 @@
7
7
  padding: 3px 7px;
8
8
  font-size: 12px;
9
9
  border: 1px solid var(--ty-tag-border);
10
- border-radius: 2px;
10
+ border-radius: var(--ty-border-radius);
11
11
  color: var(--ty-color-text);
12
12
  background: var(--ty-tag-bg);
13
13
  }
@@ -88,6 +88,26 @@
88
88
  background: var(--ty-tag-purple-bg);
89
89
  border-color: var(--ty-tag-purple-border);
90
90
  }
91
+ .ty-tag_success {
92
+ color: var(--ty-color-success);
93
+ background: var(--ty-color-success-bg);
94
+ border-color: var(--ty-color-success-border);
95
+ }
96
+ .ty-tag_info {
97
+ color: var(--ty-color-info);
98
+ background: var(--ty-color-info-bg);
99
+ border-color: var(--ty-color-info-border);
100
+ }
101
+ .ty-tag_warning {
102
+ color: var(--ty-color-warning);
103
+ background: var(--ty-color-warning-bg);
104
+ border-color: var(--ty-color-warning-border);
105
+ }
106
+ .ty-tag_danger {
107
+ color: var(--ty-color-danger);
108
+ background: var(--ty-color-danger-bg);
109
+ border-color: var(--ty-color-danger-border);
110
+ }
91
111
 
92
112
  .ty-checkable-tag {
93
113
  background-color: var(--ty-tag-checkable-bg);
@@ -8,8 +8,9 @@ interface CheckableTagProps extends BaseProps {
8
8
  onChange?: (checked: boolean, e: React.MouseEvent) => void;
9
9
  children?: React.ReactNode;
10
10
  }
11
+ type StatusColor = 'success' | 'warning' | 'info' | 'danger';
11
12
  interface TagProps extends BaseProps, React.PropsWithoutRef<JSX.IntrinsicElements['div']> {
12
- color?: string;
13
+ color?: string | StatusColor;
13
14
  closable?: boolean;
14
15
  onClose?: React.MouseEventHandler;
15
16
  onClick?: React.MouseEventHandler;
package/lib/tag/types.js CHANGED
@@ -1,4 +1,3 @@
1
- //#region src/tag/types.ts
2
1
  const PresetColors = [
3
2
  "magenta",
4
3
  "red",
@@ -10,7 +9,13 @@ const PresetColors = [
10
9
  "cyan",
11
10
  "blue",
12
11
  "geekblue",
13
- "purple"
12
+ "purple",
13
+ ...[
14
+ "success",
15
+ "info",
16
+ "warning",
17
+ "danger"
18
+ ]
14
19
  ];
15
20
  //#endregion
16
21
  exports.PresetColors = PresetColors;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../src/tag/types.ts"],"sourcesContent":["import React from 'react';\nimport { BaseProps } from '../_utils/props';\n\nexport interface CheckableTagProps extends BaseProps {\n defaultChecked?: boolean;\n checked?: boolean;\n onChange?: (checked: boolean, e: React.MouseEvent) => void;\n children?: React.ReactNode;\n}\n\nexport const PresetColors = [\n 'magenta',\n 'red',\n 'volcano',\n 'orange',\n 'gold',\n 'lime',\n 'green',\n 'cyan',\n 'blue',\n 'geekblue',\n 'purple',\n];\n\nexport interface TagProps extends BaseProps, React.PropsWithoutRef<JSX.IntrinsicElements['div']> {\n color?: string;\n closable?: boolean;\n onClose?: React.MouseEventHandler;\n onClick?: React.MouseEventHandler;\n defaultVisible?: boolean;\n visible?: boolean;\n children?: React.ReactNode;\n}\n"],"mappings":";AAUA,MAAa,eAAe;CAC1B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD"}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../src/tag/types.ts"],"sourcesContent":["import React from 'react';\nimport { BaseProps } from '../_utils/props';\n\nexport interface CheckableTagProps extends BaseProps {\n defaultChecked?: boolean;\n checked?: boolean;\n onChange?: (checked: boolean, e: React.MouseEvent) => void;\n children?: React.ReactNode;\n}\n\nexport type StatusColor = 'success' | 'warning' | 'info' | 'danger';\n\nexport const StatusColors: StatusColor[] = ['success', 'info', 'warning', 'danger'];\n\nexport const PresetColors = [\n 'magenta',\n 'red',\n 'volcano',\n 'orange',\n 'gold',\n 'lime',\n 'green',\n 'cyan',\n 'blue',\n 'geekblue',\n 'purple',\n ...StatusColors,\n];\n\nexport interface TagProps extends BaseProps, React.PropsWithoutRef<JSX.IntrinsicElements['div']> {\n color?: string | StatusColor;\n closable?: boolean;\n onClose?: React.MouseEventHandler;\n onClick?: React.MouseEventHandler;\n defaultVisible?: boolean;\n visible?: boolean;\n children?: React.ReactNode;\n}\n"],"mappings":"AAcA,MAAa,eAAe;CAC1B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,GAdyC;EAAC;EAAW;EAAQ;EAAW;EAAS;CAelF"}
@@ -6,8 +6,8 @@
6
6
  border: 1px solid var(--ty-input-border);
7
7
  transition: all 0.3s;
8
8
  outline: 0;
9
- border-radius: 2px;
10
- font-size: 1rem;
9
+ border-radius: var(--ty-border-radius);
10
+ font-size: var(--ty-font-size-base);
11
11
  background-color: var(--ty-input-bg);
12
12
  }
13
13
  .ty-textarea:hover {
@@ -5,7 +5,7 @@ $tp: #{$prefix}-time-picker;
5
5
  .#{$tp} {
6
6
  display: inline-flex;
7
7
  position: relative;
8
- font-size: $font-size-base;
8
+ font-size: var(--ty-font-size-base);
9
9
 
10
10
  // ---- Input ----
11
11
  &__input {
@@ -29,6 +29,10 @@ $tp: #{$prefix}-time-picker;
29
29
  box-shadow: var(--ty-input-focus-shadow);
30
30
  }
31
31
 
32
+ &_pending &__input-field {
33
+ color: var(--ty-color-text-tertiary);
34
+ }
35
+
32
36
  &__input-field {
33
37
  flex: 1;
34
38
  border: none;
@@ -191,6 +195,15 @@ $tp: #{$prefix}-time-picker;
191
195
  }
192
196
  }
193
197
 
198
+ &_pending {
199
+ background: var(--ty-color-primary-bg);
200
+ color: var(--ty-color-text-tertiary);
201
+
202
+ &:hover {
203
+ background: var(--ty-color-primary-bg-hover);
204
+ }
205
+ }
206
+
194
207
  &_disabled {
195
208
  color: var(--ty-color-text-quaternary);
196
209
  cursor: not-allowed;
@@ -1,7 +1,7 @@
1
1
  .ty-time-picker {
2
2
  display: inline-flex;
3
3
  position: relative;
4
- font-size: 1rem;
4
+ font-size: var(--ty-font-size-base);
5
5
  }
6
6
  .ty-time-picker__input {
7
7
  display: inline-flex;
@@ -21,6 +21,9 @@
21
21
  border-color: var(--ty-color-primary);
22
22
  box-shadow: var(--ty-input-focus-shadow);
23
23
  }
24
+ .ty-time-picker_pending .ty-time-picker__input-field {
25
+ color: var(--ty-color-text-tertiary);
26
+ }
24
27
  .ty-time-picker__input-field {
25
28
  flex: 1;
26
29
  border: none;
@@ -157,6 +160,13 @@
157
160
  .ty-time-picker__cell_selected:hover {
158
161
  background: var(--ty-color-primary-bg-hover);
159
162
  }
163
+ .ty-time-picker__cell_pending {
164
+ background: var(--ty-color-primary-bg);
165
+ color: var(--ty-color-text-tertiary);
166
+ }
167
+ .ty-time-picker__cell_pending:hover {
168
+ background: var(--ty-color-primary-bg-hover);
169
+ }
160
170
  .ty-time-picker__cell_disabled {
161
171
  color: var(--ty-color-text-quaternary);
162
172
  cursor: not-allowed;
@@ -6,14 +6,16 @@ let react_jsx_runtime = require("react/jsx-runtime");
6
6
  //#region src/time-picker/time-panel.tsx
7
7
  const ITEM_HEIGHT = 28;
8
8
  const TimePanel = (props) => {
9
- const { prefixCls, value, items, disabledItems = [], loop = false, onChange } = props;
9
+ const { prefixCls, value, pendingValue, items, disabledItems = [], loop = false, onChange } = props;
10
10
  const panelRef = (0, react.useRef)(null);
11
11
  const itemRefs = (0, react.useRef)(/* @__PURE__ */ new Map());
12
12
  const isResetting = (0, react.useRef)(false);
13
13
  const clickedRef = (0, react.useRef)(false);
14
14
  const scrollToItemRef = (0, react.useRef)(null);
15
15
  const oneGroupHeight = items.length * ITEM_HEIGHT;
16
+ const displayValue = pendingValue ?? value;
16
17
  scrollToItemRef.current = (val) => {
18
+ if (val === null) return;
17
19
  const panel = panelRef.current;
18
20
  if (!panel) return;
19
21
  if (loop) {
@@ -41,8 +43,8 @@ const TimePanel = (props) => {
41
43
  clickedRef.current = false;
42
44
  return;
43
45
  }
44
- scrollToItemRef.current?.(value);
45
- }, [value]);
46
+ scrollToItemRef.current?.(displayValue);
47
+ }, [displayValue]);
46
48
  const handleScroll = (0, react.useCallback)(() => {
47
49
  if (!loop || isResetting.current) return;
48
50
  const panel = panelRef.current;
@@ -64,6 +66,16 @@ const TimePanel = (props) => {
64
66
  clickedRef.current = true;
65
67
  onChange(num);
66
68
  };
69
+ const isPending = pendingValue !== null;
70
+ const isCommitted = value !== null && pendingValue === null;
71
+ const cellCls = (num) => {
72
+ const isSelected = num === displayValue;
73
+ return (0, classnames.default)(`${prefixCls}__cell`, {
74
+ [`${prefixCls}__cell_selected`]: isSelected && isCommitted,
75
+ [`${prefixCls}__cell_pending`]: isSelected && isPending,
76
+ [`${prefixCls}__cell_disabled`]: disabledItems.includes(num)
77
+ });
78
+ };
67
79
  if (loop) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
68
80
  className: `${prefixCls}__column`,
69
81
  ref: panelRef,
@@ -74,17 +86,11 @@ const TimePanel = (props) => {
74
86
  0,
75
87
  1,
76
88
  2
77
- ].map((copyIdx) => items.map((num, i) => {
78
- const isDisabled = disabledItems.includes(num);
79
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("li", {
80
- className: (0, classnames.default)(`${prefixCls}__cell`, {
81
- [`${prefixCls}__cell_selected`]: num === value,
82
- [`${prefixCls}__cell_disabled`]: isDisabled
83
- }),
84
- onClick: () => handleClick(num),
85
- children: String(num).padStart(2, "0")
86
- }, `c${copyIdx}-${i}`);
87
- }))
89
+ ].map((copyIdx) => items.map((num, i) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("li", {
90
+ className: cellCls(num),
91
+ onClick: () => handleClick(num),
92
+ children: String(num).padStart(2, "0")
93
+ }, `c${copyIdx}-${i}`)))
88
94
  })
89
95
  });
90
96
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
@@ -92,20 +98,14 @@ const TimePanel = (props) => {
92
98
  ref: panelRef,
93
99
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("ul", {
94
100
  className: `${prefixCls}__column-list`,
95
- children: items.map((num) => {
96
- const isDisabled = disabledItems.includes(num);
97
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("li", {
98
- ref: (el) => {
99
- if (el) itemRefs.current.set(num, el);
100
- },
101
- className: (0, classnames.default)(`${prefixCls}__cell`, {
102
- [`${prefixCls}__cell_selected`]: num === value,
103
- [`${prefixCls}__cell_disabled`]: isDisabled
104
- }),
105
- onClick: () => handleClick(num),
106
- children: String(num).padStart(2, "0")
107
- }, num);
108
- })
101
+ children: items.map((num) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("li", {
102
+ ref: (el) => {
103
+ if (el) itemRefs.current.set(num, el);
104
+ },
105
+ className: cellCls(num),
106
+ onClick: () => handleClick(num),
107
+ children: String(num).padStart(2, "0")
108
+ }, num))
109
109
  })
110
110
  });
111
111
  };
@@ -1 +1 @@
1
- {"version":3,"file":"time-panel.js","names":[],"sources":["../../src/time-picker/time-panel.tsx"],"sourcesContent":["import { useRef, useEffect, useCallback } from 'react';\nimport classNames from 'classnames';\n\nexport interface TimePanelProps {\n value: number;\n items: number[];\n disabledItems?: number[];\n loop?: boolean;\n onChange: (num: number) => void;\n prefixCls: string;\n}\n\nconst ITEM_HEIGHT = 28; // 4px padding-top + 20px line-height + 4px padding-bottom\n\nconst TimePanel = (props: TimePanelProps): React.ReactElement => {\n const { prefixCls, value, items, disabledItems = [], loop = false, onChange } = props;\n const panelRef = useRef<HTMLDivElement>(null);\n const itemRefs = useRef<Map<number, HTMLLIElement>>(new Map());\n const isResetting = useRef(false);\n const clickedRef = useRef(false);\n const scrollToItemRef = useRef<((val: number) => void) | null>(null);\n\n const oneGroupHeight = items.length * ITEM_HEIGHT;\n\n scrollToItemRef.current = (val: number) => {\n const panel = panelRef.current;\n if (!panel) return;\n\n if (loop) {\n const idx = items.indexOf(val);\n if (idx === -1) return;\n const top = oneGroupHeight + idx * ITEM_HEIGHT;\n isResetting.current = true;\n panel.scrollTo({ top, behavior: 'auto' });\n requestAnimationFrame(() => { isResetting.current = false; });\n } else {\n const el = itemRefs.current.get(val);\n if (el) {\n panel.scrollTo({ top: el.offsetTop, behavior: 'auto' });\n }\n }\n };\n\n useEffect(() => {\n if (clickedRef.current) {\n clickedRef.current = false;\n return;\n }\n scrollToItemRef.current?.(value);\n }, [value]);\n\n // Scroll reset for loop mode\n const handleScroll = useCallback(() => {\n if (!loop || isResetting.current) return;\n const panel = panelRef.current;\n if (!panel) return;\n\n const st = panel.scrollTop;\n if (st < oneGroupHeight || st >= 2 * oneGroupHeight) {\n isResetting.current = true;\n panel.scrollTo({ top: (st % oneGroupHeight) + oneGroupHeight, behavior: 'auto' });\n requestAnimationFrame(() => { isResetting.current = false; });\n }\n }, [loop, oneGroupHeight]);\n\n const handleClick = (num: number) => {\n if (disabledItems.includes(num)) return;\n clickedRef.current = true;\n onChange(num);\n };\n\n if (loop) {\n const copies = [0, 1, 2];\n return (\n <div className={`${prefixCls}__column`} ref={panelRef} onScroll={handleScroll}>\n <ul className={`${prefixCls}__column-list`}>\n {copies.map((copyIdx) =>\n items.map((num, i) => {\n const isDisabled = disabledItems.includes(num);\n const cls = classNames(`${prefixCls}__cell`, {\n [`${prefixCls}__cell_selected`]: num === value,\n [`${prefixCls}__cell_disabled`]: isDisabled,\n });\n return (\n <li\n key={`c${copyIdx}-${i}`}\n className={cls}\n onClick={() => handleClick(num)}>\n {String(num).padStart(2, '0')}\n </li>\n );\n })\n )}\n </ul>\n </div>\n );\n }\n\n return (\n <div className={`${prefixCls}__column`} ref={panelRef}>\n <ul className={`${prefixCls}__column-list`}>\n {items.map((num) => {\n const isDisabled = disabledItems.includes(num);\n const cls = classNames(`${prefixCls}__cell`, {\n [`${prefixCls}__cell_selected`]: num === value,\n [`${prefixCls}__cell_disabled`]: isDisabled,\n });\n return (\n <li\n key={num}\n ref={(el) => {\n if (el) itemRefs.current.set(num, el);\n }}\n className={cls}\n onClick={() => handleClick(num)}>\n {String(num).padStart(2, '0')}\n </li>\n );\n })}\n </ul>\n </div>\n );\n};\n\nexport default TimePanel;\n"],"mappings":"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"}
1
+ {"version":3,"file":"time-panel.js","names":[],"sources":["../../src/time-picker/time-panel.tsx"],"sourcesContent":["import { useRef, useEffect, useCallback } from 'react';\nimport classNames from 'classnames';\n\nexport interface TimePanelProps {\n value: number | null;\n pendingValue: number | null;\n items: number[];\n disabledItems?: number[];\n loop?: boolean;\n onChange: (num: number) => void;\n prefixCls: string;\n}\n\nconst ITEM_HEIGHT = 28; // 4px padding-top + 20px line-height + 4px padding-bottom\n\nconst TimePanel = (props: TimePanelProps): React.ReactElement => {\n const { prefixCls, value, pendingValue, items, disabledItems = [], loop = false, onChange } = props;\n const panelRef = useRef<HTMLDivElement>(null);\n const itemRefs = useRef<Map<number, HTMLLIElement>>(new Map());\n const isResetting = useRef(false);\n const clickedRef = useRef(false);\n const scrollToItemRef = useRef<((val: number | null) => void) | null>(null);\n\n const oneGroupHeight = items.length * ITEM_HEIGHT;\n\n // The displayed value: pending takes priority, then committed\n const displayValue = pendingValue ?? value;\n\n scrollToItemRef.current = (val: number | null) => {\n if (val === null) return;\n const panel = panelRef.current;\n if (!panel) return;\n\n if (loop) {\n const idx = items.indexOf(val);\n if (idx === -1) return;\n const top = oneGroupHeight + idx * ITEM_HEIGHT;\n isResetting.current = true;\n panel.scrollTo({ top, behavior: 'auto' });\n requestAnimationFrame(() => { isResetting.current = false; });\n } else {\n const el = itemRefs.current.get(val);\n if (el) {\n panel.scrollTo({ top: el.offsetTop, behavior: 'auto' });\n }\n }\n };\n\n useEffect(() => {\n if (clickedRef.current) {\n clickedRef.current = false;\n return;\n }\n scrollToItemRef.current?.(displayValue);\n }, [displayValue]);\n\n // Scroll reset for loop mode\n const handleScroll = useCallback(() => {\n if (!loop || isResetting.current) return;\n const panel = panelRef.current;\n if (!panel) return;\n\n const st = panel.scrollTop;\n if (st < oneGroupHeight || st >= 2 * oneGroupHeight) {\n isResetting.current = true;\n panel.scrollTo({ top: (st % oneGroupHeight) + oneGroupHeight, behavior: 'auto' });\n requestAnimationFrame(() => { isResetting.current = false; });\n }\n }, [loop, oneGroupHeight]);\n\n const handleClick = (num: number) => {\n if (disabledItems.includes(num)) return;\n clickedRef.current = true;\n onChange(num);\n };\n\n const isPending = pendingValue !== null;\n const isCommitted = value !== null && pendingValue === null;\n\n const cellCls = (num: number) => {\n const isSelected = num === displayValue;\n return classNames(`${prefixCls}__cell`, {\n [`${prefixCls}__cell_selected`]: isSelected && isCommitted,\n [`${prefixCls}__cell_pending`]: isSelected && isPending,\n [`${prefixCls}__cell_disabled`]: disabledItems.includes(num),\n });\n };\n\n if (loop) {\n const copies = [0, 1, 2];\n return (\n <div className={`${prefixCls}__column`} ref={panelRef} onScroll={handleScroll}>\n <ul className={`${prefixCls}__column-list`}>\n {copies.map((copyIdx) =>\n items.map((num, i) => (\n <li\n key={`c${copyIdx}-${i}`}\n className={cellCls(num)}\n onClick={() => handleClick(num)}>\n {String(num).padStart(2, '0')}\n </li>\n ))\n )}\n </ul>\n </div>\n );\n }\n\n return (\n <div className={`${prefixCls}__column`} ref={panelRef}>\n <ul className={`${prefixCls}__column-list`}>\n {items.map((num) => (\n <li\n key={num}\n ref={(el) => {\n if (el) itemRefs.current.set(num, el);\n }}\n className={cellCls(num)}\n onClick={() => handleClick(num)}>\n {String(num).padStart(2, '0')}\n </li>\n ))}\n </ul>\n </div>\n );\n};\n\nexport default TimePanel;\n"],"mappings":"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"}