@seresweb/website-component 2.2.2 → 2.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 (101) hide show
  1. package/README.md +5 -4
  2. package/dist/_icons-DtBTpiO2.cjs +11 -0
  3. package/dist/_icons-FW35XHO0.js +14 -0
  4. package/dist/_utils-B7LThWoT.js +26 -0
  5. package/dist/_utils-CtkVBTg-.cjs +1 -0
  6. package/dist/cjs/checkbox.cjs +1 -0
  7. package/dist/cjs/col.cjs +1 -0
  8. package/dist/cjs/config-provider.cjs +1 -0
  9. package/dist/cjs/date-picker.cjs +1 -0
  10. package/dist/cjs/date-select.cjs +1 -0
  11. package/dist/cjs/horizontal-viewer.cjs +1 -1
  12. package/dist/cjs/image-indicator.cjs +1 -1
  13. package/dist/cjs/index.cjs +1 -1
  14. package/dist/cjs/input.cjs +1 -1
  15. package/dist/cjs/layz-image.cjs +1 -1
  16. package/dist/cjs/locales.cjs +1 -0
  17. package/dist/cjs/parameter-box.cjs +1 -1
  18. package/dist/cjs/radio.cjs +1 -1
  19. package/dist/cjs/row.cjs +1 -0
  20. package/dist/cjs/select.cjs +1 -0
  21. package/dist/cjs/swiper-normal.cjs +1 -1
  22. package/dist/cjs/swiper-showcase.cjs +1 -1
  23. package/dist/cjs/tab-indicator.cjs +1 -1
  24. package/dist/css/checkbox.css +1 -0
  25. package/dist/css/col.css +1 -0
  26. package/dist/css/date-picker.css +1 -0
  27. package/dist/css/date-select.css +1 -0
  28. package/dist/css/input.css +1 -1
  29. package/dist/css/radio.css +1 -1
  30. package/dist/css/row.css +1 -0
  31. package/dist/css/select.css +1 -0
  32. package/dist/en-US-BBTWftdk.js +35 -0
  33. package/dist/en-US-UkqgG0fb.cjs +1 -0
  34. package/dist/es/checkbox.mjs +82 -0
  35. package/dist/es/col.mjs +57 -0
  36. package/dist/es/config-provider.mjs +17 -0
  37. package/dist/es/date-picker.mjs +6 -0
  38. package/dist/es/date-select.mjs +113 -0
  39. package/dist/es/horizontal-viewer.mjs +1 -1
  40. package/dist/es/image-indicator.mjs +1 -1
  41. package/dist/es/index.mjs +61 -41
  42. package/dist/es/input.mjs +17 -16
  43. package/dist/es/layz-image.mjs +18 -17
  44. package/dist/es/locales.mjs +41 -0
  45. package/dist/es/parameter-box.mjs +123 -85
  46. package/dist/es/radio.mjs +27 -23
  47. package/dist/es/row.mjs +63 -0
  48. package/dist/es/select.mjs +210 -0
  49. package/dist/es/swiper-normal.mjs +1 -1
  50. package/dist/es/swiper-showcase.mjs +37 -37
  51. package/dist/es/tab-indicator.mjs +65 -79
  52. package/dist/global.d.ts +8 -0
  53. package/dist/index-B-sVxtkA.cjs +1 -0
  54. package/dist/{index-tkvNmWjy.js → index-BPX4w5Vn.js} +113 -106
  55. package/dist/index-Bc4wAl0z.js +644 -0
  56. package/dist/index-CEjz1ubF.cjs +1 -0
  57. package/dist/index.css +1 -1
  58. package/dist/scss/checkbox.scss +155 -0
  59. package/dist/scss/col.scss +69 -0
  60. package/dist/scss/date-picker.scss +226 -0
  61. package/dist/scss/date-select.scss +41 -0
  62. package/dist/scss/index.scss +6 -0
  63. package/dist/scss/input.scss +44 -4
  64. package/dist/scss/radio.scss +6 -6
  65. package/dist/scss/row.scss +10 -0
  66. package/dist/scss/select.scss +210 -0
  67. package/dist/types/components/_icons.d.ts +4 -0
  68. package/dist/types/components/_utils.d.ts +4 -0
  69. package/dist/types/components/checkbox/checkbox.vue.d.ts +24 -0
  70. package/dist/types/components/checkbox/index.d.ts +6 -0
  71. package/dist/types/components/checkbox/type.d.ts +30 -0
  72. package/dist/types/components/col/col.vue.d.ts +21 -0
  73. package/dist/types/components/col/index.d.ts +6 -0
  74. package/dist/types/components/col/type.d.ts +24 -0
  75. package/dist/types/components/config-provider/config-provider.vue.d.ts +20 -0
  76. package/dist/types/components/config-provider/index.d.ts +27 -0
  77. package/dist/types/components/config-provider/type.d.ts +4 -0
  78. package/dist/types/components/date-picker/date-picker.vue.d.ts +16 -0
  79. package/dist/types/components/date-picker/index.d.ts +53 -0
  80. package/dist/types/components/date-picker/type.d.ts +12 -0
  81. package/dist/types/components/date-select/date-select.vue.d.ts +16 -0
  82. package/dist/types/components/date-select/index.d.ts +7 -0
  83. package/dist/types/components/date-select/type.d.ts +16 -0
  84. package/dist/types/components/index.d.ts +8 -0
  85. package/dist/types/components/input/input.vue.d.ts +1 -0
  86. package/dist/types/components/input/type.d.ts +1 -0
  87. package/dist/types/components/locales/ar-SA.d.ts +20 -0
  88. package/dist/types/components/locales/en-US.d.ts +20 -0
  89. package/dist/types/components/locales/index.d.ts +44 -0
  90. package/dist/types/components/radio/radio.vue.d.ts +2 -2
  91. package/dist/types/components/row/index.d.ts +6 -0
  92. package/dist/types/components/row/row.vue.d.ts +23 -0
  93. package/dist/types/components/row/type.d.ts +7 -0
  94. package/dist/types/components/select/index.d.ts +7 -0
  95. package/dist/types/components/select/select.vue.d.ts +48 -0
  96. package/dist/types/components/select/type.d.ts +20 -0
  97. package/dist/types/components/swiper-normal/swiper-normal.vue.d.ts +2 -2
  98. package/dist/types/components/swiper-vehicle/swiper-vehicle.vue.d.ts +2 -2
  99. package/dist/types/components/tab-indicator/tab-indicator.vue.d.ts +2 -2
  100. package/package.json +2 -1
  101. package/dist/index-BIPlvoY9.cjs +0 -1
@@ -0,0 +1,226 @@
1
+ @use './_vars' as vars;
2
+
3
+ .#{vars.$prefix}-date-picker {
4
+ // 默认亮色模式变量
5
+ --#{vars.$prefix}-date-picker-bg: #fff;
6
+ --#{vars.$prefix}-date-picker-border-color: #e4e7ed;
7
+ --#{vars.$prefix}-date-picker-text-color: #303133;
8
+ --#{vars.$prefix}-date-picker-weekday-color: #909399;
9
+ --#{vars.$prefix}-date-picker-day-color: #606266;
10
+ --#{vars.$prefix}-date-picker-day-hover-bg: #f5f7fa;
11
+ --#{vars.$prefix}-date-picker-nav-color: #606266;
12
+ --#{vars.$prefix}-date-picker-nav-hover-bg: #f5f7fa;
13
+ --#{vars.$prefix}-date-picker-other-month-color: #c0c4cc;
14
+ --#{vars.$prefix}-date-picker-disabled-color: #c0c4cc;
15
+
16
+ position: relative;
17
+ display: block;
18
+ width: 100%;
19
+ max-width: 440px;
20
+ font-family: HarmonyOS_Sans_Regular;
21
+
22
+ @media (max-width: 768px) {
23
+ max-width: none;
24
+ }
25
+
26
+ &--disabled {
27
+ opacity: 0.6;
28
+ cursor: not-allowed;
29
+ }
30
+
31
+ &__panel {
32
+ width: 100%;
33
+ padding: 16px;
34
+ box-sizing: border-box;
35
+ background: var(--#{vars.$prefix}-date-picker-bg);
36
+ border-radius: 12px;
37
+ border: 1px solid var(--#{vars.$prefix}-date-picker-border-color);
38
+ box-shadow: 0 2px 12px rgba(0, 0, 0, 0.04);
39
+ overflow: hidden;
40
+
41
+ @media (max-width: 768px) {
42
+ padding: 12px;
43
+ }
44
+ }
45
+
46
+ &__header {
47
+ display: flex;
48
+ align-items: center;
49
+ justify-content: space-between;
50
+ margin-bottom: 16px;
51
+
52
+ @media (max-width: 768px) {
53
+ margin-bottom: 12px;
54
+ }
55
+ }
56
+
57
+ &__nav {
58
+ width: 36px;
59
+ height: 36px;
60
+ border: none;
61
+ background: transparent;
62
+ border-radius: 6px;
63
+ cursor: pointer;
64
+ font-size: 0;
65
+ color: var(--#{vars.$prefix}-date-picker-nav-color);
66
+ transition: background-color 0.2s;
67
+ -webkit-tap-highlight-color: transparent;
68
+ touch-action: manipulation;
69
+
70
+ &:hover {
71
+ background-color: var(--#{vars.$prefix}-date-picker-nav-hover-bg);
72
+ }
73
+
74
+ &-prev,
75
+ &-next {
76
+ display: inline-flex;
77
+ align-items: center;
78
+ justify-content: center;
79
+ width: 18px;
80
+ height: 18px;
81
+ fill: currentColor;
82
+
83
+ > svg {
84
+ width: 100%;
85
+ height: 100%;
86
+ }
87
+ }
88
+
89
+ &-prev {
90
+ transform: rotate(90deg);
91
+ }
92
+
93
+ &-next {
94
+ transform: rotate(-90deg);
95
+ }
96
+ }
97
+
98
+ &__header-label {
99
+ flex: 1;
100
+ text-align: center;
101
+ font-size: 16px;
102
+ font-weight: 500;
103
+ color: var(--#{vars.$prefix}-date-picker-text-color);
104
+
105
+ @media (max-width: 768px) {
106
+ font-size: 15px;
107
+ }
108
+ }
109
+
110
+ &__weekdays {
111
+ display: grid;
112
+ grid-template-columns: repeat(7, 1fr);
113
+ gap: 4px;
114
+ margin-bottom: 8px;
115
+
116
+ @media (max-width: 768px) {
117
+ gap: 2px;
118
+ margin-bottom: 6px;
119
+ }
120
+ }
121
+
122
+ &__weekday {
123
+ text-align: center;
124
+ font-family: HarmonyOS_Sans_Medium;
125
+ font-size: 12px;
126
+ color: var(--#{vars.$prefix}-date-picker-weekday-color);
127
+ padding: 8px 0;
128
+
129
+ @media (max-width: 768px) {
130
+ font-size: 11px;
131
+ padding: 6px 0;
132
+ }
133
+ }
134
+
135
+ &__days {
136
+ display: grid;
137
+ grid-template-columns: repeat(7, 1fr);
138
+ gap: 10px;
139
+ min-width: 0;
140
+
141
+ @media (max-width: 768px) {
142
+ gap: 2px;
143
+ }
144
+ }
145
+
146
+ &__day {
147
+ aspect-ratio: 1;
148
+ display: flex;
149
+ align-items: center;
150
+ justify-content: center;
151
+ border-radius: 8px;
152
+ font-size: 14px;
153
+ color: var(--#{vars.$prefix}-date-picker-day-color);
154
+ cursor: pointer;
155
+ transition: all 0.2s;
156
+ -webkit-tap-highlight-color: transparent;
157
+ touch-action: manipulation;
158
+
159
+ @media (max-width: 768px) {
160
+ font-size: 13px;
161
+ border-radius: 6px;
162
+ min-height: 30px;
163
+ }
164
+
165
+ @media (max-width: 360px) {
166
+ font-size: 12px;
167
+ border-radius: 5px;
168
+ min-height: 36px;
169
+ }
170
+
171
+ &:hover:not(&--disabled):not(&--other-month):not(&--selected) {
172
+ background-color: var(--#{vars.$prefix}-date-picker-day-hover-bg);
173
+ }
174
+
175
+ &--today {
176
+ border: 1px solid #1054f2;
177
+ color: #1054f2;
178
+ }
179
+
180
+ &--selected {
181
+ background-color: #1054f2;
182
+ color: #fff;
183
+ box-shadow: 0 0 0 2px rgba(64, 158, 255, 0.16);
184
+ font-weight: 600;
185
+ }
186
+
187
+ &--other-month {
188
+ color: var(--#{vars.$prefix}-date-picker-other-month-color);
189
+ cursor: default;
190
+ }
191
+
192
+ &--disabled {
193
+ color: var(--#{vars.$prefix}-date-picker-disabled-color);
194
+ cursor: not-allowed;
195
+ text-decoration: line-through;
196
+ }
197
+ }
198
+
199
+ // 全局暗夜模式:html.dark .sc-date-picker
200
+ html.dark & {
201
+ --#{vars.$prefix}-date-picker-bg: #262626;
202
+ --#{vars.$prefix}-date-picker-border-color: rgba(255, 255, 255, 0.2);
203
+ --#{vars.$prefix}-date-picker-text-color: #fff;
204
+ --#{vars.$prefix}-date-picker-weekday-color: rgba(255, 255, 255, 0.6);
205
+ --#{vars.$prefix}-date-picker-day-color: rgba(255, 255, 255, 0.85);
206
+ --#{vars.$prefix}-date-picker-day-hover-bg: #333;
207
+ --#{vars.$prefix}-date-picker-nav-color: rgba(255, 255, 255, 0.85);
208
+ --#{vars.$prefix}-date-picker-nav-hover-bg: #333;
209
+ --#{vars.$prefix}-date-picker-other-month-color: rgba(255, 255, 255, 0.3);
210
+ --#{vars.$prefix}-date-picker-disabled-color: rgba(255, 255, 255, 0.3);
211
+ }
212
+
213
+ // 组件级别暗夜模式:.sc-date-picker--dark
214
+ &--dark {
215
+ --#{vars.$prefix}-date-picker-bg: #262626;
216
+ --#{vars.$prefix}-date-picker-border-color: rgba(255, 255, 255, 0.2);
217
+ --#{vars.$prefix}-date-picker-text-color: #fff;
218
+ --#{vars.$prefix}-date-picker-weekday-color: rgba(255, 255, 255, 0.6);
219
+ --#{vars.$prefix}-date-picker-day-color: rgba(255, 255, 255, 0.85);
220
+ --#{vars.$prefix}-date-picker-day-hover-bg: #333;
221
+ --#{vars.$prefix}-date-picker-nav-color: rgba(255, 255, 255, 0.85);
222
+ --#{vars.$prefix}-date-picker-nav-hover-bg: #333;
223
+ --#{vars.$prefix}-date-picker-other-month-color: rgba(255, 255, 255, 0.3);
224
+ --#{vars.$prefix}-date-picker-disabled-color: rgba(255, 255, 255, 0.3);
225
+ }
226
+ }
@@ -0,0 +1,41 @@
1
+ @use './_vars' as vars;
2
+
3
+ .#{vars.$prefix}-date-select {
4
+ display: inline-block;
5
+ width: 100%;
6
+
7
+ .sc-date-select__placeholder {
8
+ opacity: 0.3;
9
+ }
10
+
11
+ .sc-date-select__panel {
12
+ padding: 0;
13
+
14
+ // 让内部 date-picker 的视觉与 sc-select 下拉统一
15
+ .sc-date-picker__panel {
16
+ padding: 12px 12px 6px;
17
+ border: 0;
18
+ box-shadow: none;
19
+ border-radius: 0;
20
+ background: transparent;
21
+ }
22
+ }
23
+
24
+ .sc-select__dropdown {
25
+ max-height: fit-content;
26
+ }
27
+
28
+ // 全局暗夜模式:html.dark .sc-date-select
29
+ html.dark & {
30
+ .sc-date-select__placeholder {
31
+ opacity: 0.3;
32
+ }
33
+ }
34
+
35
+ // 组件级别暗夜模式:.sc-date-select--dark
36
+ &--dark {
37
+ .sc-date-select__placeholder {
38
+ opacity: 0.3;
39
+ }
40
+ }
41
+ }
@@ -1,6 +1,9 @@
1
+ @use './select';
1
2
  @use 'swiper/swiper-bundle.css';
2
3
  @use './animate';
3
4
 
5
+ @use './date-picker';
6
+ @use './date-select';
4
7
  @use './dropdown';
5
8
  @use './video';
6
9
  @use './drawer';
@@ -15,4 +18,7 @@
15
18
  @use './gradual-highlight';
16
19
  @use './parameter-box';
17
20
  @use './radio';
21
+ @use './checkbox';
18
22
  @use './input';
23
+ @use './row';
24
+ @use './col';
@@ -1,6 +1,13 @@
1
1
  @use './_vars' as vars;
2
2
 
3
3
  .#{vars.$prefix}-input {
4
+ // 默认亮色模式变量
5
+ --#{vars.$prefix}-input-border-color: rgba(0, 0, 0, 0.1);
6
+ --#{vars.$prefix}-input-border-hover-color: #000;
7
+ --#{vars.$prefix}-input-text-color: #000;
8
+ --#{vars.$prefix}-input-bg-color: transparent;
9
+ --#{vars.$prefix}-input-placeholder-color: #000;
10
+
4
11
  font-size: 16px;
5
12
  display: flex;
6
13
  align-items: center;
@@ -8,11 +15,23 @@
8
15
  margin-top: 4px;
9
16
  height: 54px;
10
17
  border-radius: 2px;
11
- border-bottom: 1px solid rgba(0, 0, 0, 0.1);
18
+ border-bottom: 1px solid var(--#{vars.$prefix}-input-border-color);
19
+ background-color: var(--#{vars.$prefix}-input-bg-color);
12
20
  transition: border-color 0.3s ease-in-out;
13
21
 
14
- &:hover {
15
- border-color: #000;
22
+ &::after {
23
+ content: '';
24
+ position: absolute;
25
+ bottom: -1px;
26
+ left: 0;
27
+ width: 0;
28
+ height: 1px;
29
+ background-color: var(--#{vars.$prefix}-input-border-hover-color);
30
+ transition: width 0.3s ease-in-out;
31
+ }
32
+
33
+ &:hover::after {
34
+ width: 100%;
16
35
  }
17
36
 
18
37
  input {
@@ -20,12 +39,14 @@
20
39
  outline: none;
21
40
  flex: 1; // 自动占满剩余空间
22
41
  height: 54px;
42
+ background-color: inherit;
43
+ color: var(--#{vars.$prefix}-input-text-color);
23
44
  }
24
45
 
25
46
  input::placeholder {
26
47
  height: 25px;
27
48
  font-weight: 500;
28
- color: #000;
49
+ color: var(--#{vars.$prefix}-input-placeholder-color);
29
50
  line-height: 21px;
30
51
  opacity: 0.3;
31
52
  }
@@ -38,6 +59,25 @@
38
59
  padding: 0 8px;
39
60
  position: relative;
40
61
  z-index: 1;
62
+ color: var(--#{vars.$prefix}-input-text-color);
63
+ }
64
+
65
+ // 支持全局暗夜模式:html.dark .sc-input
66
+ html.dark & {
67
+ --#{vars.$prefix}-input-border-color: rgba(255, 255, 255, 0.2);
68
+ --#{vars.$prefix}-input-border-hover-color: #fff;
69
+ --#{vars.$prefix}-input-text-color: #fff;
70
+ --#{vars.$prefix}-input-bg-color: #1d1d1d;
71
+ --#{vars.$prefix}-input-placeholder-color: #fff;
72
+ }
73
+
74
+ // 支持组件级别暗夜模式:.sc-input--dark
75
+ &--dark {
76
+ --#{vars.$prefix}-input-border-color: rgba(255, 255, 255, 0.2);
77
+ --#{vars.$prefix}-input-border-hover-color: #fff;
78
+ --#{vars.$prefix}-input-text-color: #fff;
79
+ --#{vars.$prefix}-input-bg-color: #1d1d1d;
80
+ --#{vars.$prefix}-input-placeholder-color: #fff;
41
81
  }
42
82
 
43
83
  @media (max-width: 768px) {
@@ -7,19 +7,19 @@
7
7
  color: #000;
8
8
  cursor: pointer;
9
9
 
10
- &.disabled {
10
+ &-disabled {
11
11
  opacity: 0.5;
12
12
  pointer-events: none;
13
13
  }
14
14
 
15
- .radio-input {
15
+ &-input {
16
16
  position: absolute;
17
17
  opacity: 0;
18
18
  width: 0;
19
19
  height: 0;
20
20
  }
21
21
 
22
- .radio-box {
22
+ &-box {
23
23
  display: inline-block;
24
24
  width: 18px;
25
25
  height: 18px;
@@ -45,7 +45,7 @@
45
45
  }
46
46
  }
47
47
 
48
- .radio-label {
48
+ &-label {
49
49
  margin-left: 8px;
50
50
  font-family: HarmonyOS_Sans_Regular;
51
51
  font-weight: 400;
@@ -54,7 +54,7 @@
54
54
  }
55
55
 
56
56
  /* 当 radio 被选中时显示勾 */
57
- .radio-input:checked ~ .radio-box {
57
+ &-input:checked ~ &-box {
58
58
  background-color: #000;
59
59
  // border-color: #2563eb;
60
60
 
@@ -64,7 +64,7 @@
64
64
  }
65
65
 
66
66
  /* 鼠标悬停效果 */
67
- &:not(.disabled):hover .radio-box {
67
+ &:not(&-disabled):hover &-box {
68
68
  border-color: #000;
69
69
  }
70
70
  }
@@ -0,0 +1,10 @@
1
+ @use './_vars' as vars;
2
+
3
+ .#{vars.$prefix}-row {
4
+ display: flex;
5
+ flex-wrap: wrap;
6
+
7
+ &--wrap {
8
+ flex-wrap: wrap;
9
+ }
10
+ }
@@ -0,0 +1,210 @@
1
+ @use './_vars' as vars;
2
+
3
+ .#{vars.$prefix}-select {
4
+ // 默认亮色模式变量
5
+ --#{vars.$prefix}-select-border-color: rgba(0, 0, 0, 0.1);
6
+ --#{vars.$prefix}-select-border-hover-color: #000;
7
+ --#{vars.$prefix}-select-text-color: #000;
8
+ --#{vars.$prefix}-select-bg-color: transparent;
9
+ --#{vars.$prefix}-select-placeholder-color: #000;
10
+ --#{vars.$prefix}-select-option-hover-bg: #f5f5f5;
11
+ --#{vars.$prefix}-select-option-selected-bg: #e6f2ff;
12
+ --#{vars.$prefix}-select-option-selected-text-color: #1054f2;
13
+ --#{vars.$prefix}-select-dropdown-bg: #fff;
14
+
15
+ position: relative;
16
+ display: inline-block;
17
+ width: 100%;
18
+ // max-width: 300px;
19
+ font-size: 16px;
20
+ margin-top: 4px;
21
+
22
+ &__trigger {
23
+ display: flex;
24
+ align-items: center;
25
+ height: 54px;
26
+ border-radius: 2px;
27
+ border-bottom: 1px solid var(--#{vars.$prefix}-select-border-color);
28
+ background-color: var(--#{vars.$prefix}-select-bg-color);
29
+ // padding: 0 8px;
30
+ cursor: pointer;
31
+ transition: border-color 0.3s ease-in-out;
32
+ position: relative;
33
+
34
+ &::after {
35
+ content: '';
36
+ position: absolute;
37
+ bottom: -1px;
38
+ left: 0;
39
+ width: 0;
40
+ height: 1px;
41
+ background-color: var(--#{vars.$prefix}-select-border-hover-color);
42
+ transition: width 0.3s ease-in-out;
43
+ }
44
+
45
+ &:hover::after {
46
+ width: 100%;
47
+ }
48
+ }
49
+
50
+ &__value {
51
+ flex: 1;
52
+ color: var(--#{vars.$prefix}-select-text-color);
53
+ overflow: hidden;
54
+ text-overflow: ellipsis;
55
+ white-space: nowrap;
56
+ }
57
+
58
+ &__placeholder {
59
+ flex: 1;
60
+ color: var(--#{vars.$prefix}-select-placeholder-color);
61
+ opacity: 0.3;
62
+ overflow: hidden;
63
+ text-overflow: ellipsis;
64
+ white-space: nowrap;
65
+ }
66
+
67
+ &__clear {
68
+ width: 20px;
69
+ height: 20px;
70
+ display: flex;
71
+ align-items: center;
72
+ justify-content: center;
73
+ margin-right: 4px;
74
+ cursor: pointer;
75
+ color: var(--#{vars.$prefix}-select-text-color);
76
+ font-size: 20px;
77
+ font-weight: 300;
78
+ opacity: 0.6;
79
+ transition: opacity 0.2s;
80
+
81
+ &:hover {
82
+ opacity: 1;
83
+ }
84
+ }
85
+
86
+ &__icon {
87
+ width: 20px;
88
+ height: 20px;
89
+ display: flex;
90
+ align-items: center;
91
+ justify-content: center;
92
+ color: var(--#{vars.$prefix}-select-text-color);
93
+ transition: transform 0.3s ease-in-out;
94
+ flex-shrink: 0;
95
+
96
+ svg {
97
+ width: 100%;
98
+ height: 100%;
99
+ fill: currentColor;
100
+ }
101
+
102
+ &--open {
103
+ transform: rotate(-180deg);
104
+ }
105
+ }
106
+
107
+ &__dropdown {
108
+ position: absolute;
109
+ top: 100%;
110
+ left: 0;
111
+ right: 0;
112
+ margin-top: 4px;
113
+ background-color: var(--#{vars.$prefix}-select-dropdown-bg);
114
+ border: 1px solid var(--#{vars.$prefix}-select-border-color);
115
+ border-radius: 4px;
116
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
117
+ z-index: 1000;
118
+ max-height: 300px;
119
+ overflow-y: auto;
120
+ }
121
+
122
+ &__options {
123
+ padding: 8px 0;
124
+ }
125
+
126
+ &__option {
127
+ padding: 10px 12px;
128
+ cursor: pointer;
129
+ color: var(--#{vars.$prefix}-select-text-color);
130
+ transition: background-color 0.2s;
131
+
132
+ &:hover:not(&--disabled) {
133
+ background-color: var(--#{vars.$prefix}-select-option-hover-bg);
134
+ }
135
+
136
+ &--selected {
137
+ background-color: var(--#{vars.$prefix}-select-option-selected-bg);
138
+ font-weight: 600;
139
+ color: var(--#{vars.$prefix}-select-option-selected-text-color);
140
+ }
141
+
142
+ &--disabled {
143
+ opacity: 0.5;
144
+ cursor: not-allowed;
145
+ }
146
+ }
147
+
148
+ &__custom-content {
149
+ padding: 12px;
150
+ }
151
+
152
+ // 禁用状态
153
+ &--disabled {
154
+ opacity: 0.6;
155
+
156
+ .sc-select__trigger {
157
+ cursor: not-allowed;
158
+ }
159
+ }
160
+
161
+ // 全局暗夜模式:html.dark .sc-select
162
+ html.dark & {
163
+ --#{vars.$prefix}-select-border-color: rgba(255, 255, 255, 0.2);
164
+ --#{vars.$prefix}-select-border-hover-color: #fff;
165
+ --#{vars.$prefix}-select-text-color: #fff;
166
+ --#{vars.$prefix}-select-bg-color: #1d1d1d;
167
+ --#{vars.$prefix}-select-placeholder-color: #fff;
168
+ --#{vars.$prefix}-select-option-hover-bg: #333;
169
+ --#{vars.$prefix}-select-option-selected-bg: #1054f2;
170
+ --#{vars.$prefix}-select-option-selected-text-color: #fff;
171
+ --#{vars.$prefix}-select-dropdown-bg: #262626;
172
+ }
173
+
174
+ // 组件级别暗夜模式:.sc-select--dark
175
+ &--dark {
176
+ --#{vars.$prefix}-select-border-color: rgba(255, 255, 255, 0.2);
177
+ --#{vars.$prefix}-select-border-hover-color: #fff;
178
+ --#{vars.$prefix}-select-text-color: #fff;
179
+ --#{vars.$prefix}-select-bg-color: #1d1d1d;
180
+ --#{vars.$prefix}-select-placeholder-color: #fff;
181
+ --#{vars.$prefix}-select-option-hover-bg: #333;
182
+ --#{vars.$prefix}-select-option-selected-bg: #1054f2;
183
+ --#{vars.$prefix}-select-option-selected-text-color: #fff;
184
+ --#{vars.$prefix}-select-dropdown-bg: #262626;
185
+ }
186
+
187
+ @media (max-width: 768px) {
188
+ font-size: 14px;
189
+
190
+ &__trigger {
191
+ height: 48px;
192
+ }
193
+
194
+ &__dropdown {
195
+ max-height: 250px;
196
+ }
197
+ }
198
+ }
199
+
200
+ // 下拉框动画
201
+ .sc-select-slide-enter-active,
202
+ .sc-select-slide-leave-active {
203
+ transition: all 0.3s ease-in-out;
204
+ }
205
+
206
+ .sc-select-slide-enter-from,
207
+ .sc-select-slide-leave-to {
208
+ opacity: 0;
209
+ transform: translateY(-2px);
210
+ }
@@ -0,0 +1,4 @@
1
+ /**
2
+ * 公共图标组件
3
+ */
4
+ export declare const ChevronDownIcon = "<svg\n viewBox=\"0 0 1024 1024\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"200\"\n height=\"200\"\n>\n <path\n d=\"M512 622.336L200.874667 311.125333l-60.416 60.416L512 742.997333l371.541333-371.456-60.416-60.416L512 622.336z\"\n ></path>\n</svg>";
@@ -1 +1,5 @@
1
+ import { App, Component } from 'vue';
1
2
  export declare const smoothScrollLeftTo: (element: HTMLElement, targetX: number, duration?: number) => void;
3
+ export declare const withInstall: <T extends Component>(component: T) => T & {
4
+ install(app: App): void;
5
+ };
@@ -0,0 +1,24 @@
1
+ import { CheckboxProps } from './type';
2
+ declare function __VLS_template(): {
3
+ attrs: Partial<{}>;
4
+ slots: {
5
+ default?(_: {}): any;
6
+ };
7
+ refs: {};
8
+ rootEl: HTMLLabelElement;
9
+ };
10
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
11
+ declare const __VLS_component: import('vue').DefineComponent<CheckboxProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
12
+ change: (...args: any[]) => void;
13
+ "update:modelValue": (...args: any[]) => void;
14
+ }, string, import('vue').PublicProps, Readonly<CheckboxProps> & Readonly<{
15
+ onChange?: ((...args: any[]) => any) | undefined;
16
+ "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
17
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLLabelElement>;
18
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
19
+ export default _default;
20
+ type __VLS_WithTemplateSlots<T, S> = T & {
21
+ new (): {
22
+ $slots: S;
23
+ };
24
+ };
@@ -0,0 +1,6 @@
1
+ import { App } from 'vue';
2
+ import { default as Component } from './checkbox.vue';
3
+ export * from './type';
4
+ export declare const ScCheckbox: typeof Component & {
5
+ install: (app: App) => App;
6
+ };