@yh-ui/theme 1.0.26 → 1.0.30

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.
@@ -200,6 +200,47 @@ export declare const scrollbarTokens: {
200
200
  readonly trackColor: "transparent";
201
201
  readonly thumbRadius: "3px";
202
202
  };
203
+ export declare const darkTextColorTokens: {
204
+ readonly primary: "#e5eaf3";
205
+ readonly regular: "#cfd3dc";
206
+ readonly secondary: "#a3a6ad";
207
+ readonly placeholder: "#8d9095";
208
+ readonly disabled: "#6c6e72";
209
+ };
210
+ export declare const darkBorderColorTokens: {
211
+ readonly DEFAULT: "#4c4d4f";
212
+ readonly light: "#414243";
213
+ readonly lighter: "#363637";
214
+ readonly extraLight: "#2b2b2c";
215
+ readonly dark: "#58585b";
216
+ readonly darker: "#636466";
217
+ };
218
+ export declare const darkFillColorTokens: {
219
+ readonly DEFAULT: "#303030";
220
+ readonly light: "#262727";
221
+ readonly lighter: "#1d1d1d";
222
+ readonly extraLight: "#191919";
223
+ readonly dark: "#39393a";
224
+ readonly darker: "#424243";
225
+ readonly blank: "transparent";
226
+ };
227
+ export declare const darkBgColorTokens: {
228
+ readonly DEFAULT: "#141414";
229
+ readonly page: "#0a0a0a";
230
+ readonly overlay: "#1d1e1f";
231
+ };
232
+ export declare const darkMaskTokens: {
233
+ readonly DEFAULT: "rgba(0, 0, 0, 0.7)";
234
+ readonly light: "rgba(0, 0, 0, 0.5)";
235
+ readonly extraLight: "rgba(0, 0, 0, 0.3)";
236
+ };
237
+ export declare const darkScrollbarTokens: {
238
+ readonly width: "6px";
239
+ readonly thumbColor: "#424243";
240
+ readonly thumbHoverColor: "#8d9095";
241
+ readonly trackColor: "transparent";
242
+ readonly thumbRadius: "3px";
243
+ };
203
244
  export declare const componentSizeTokens: {
204
245
  readonly large: {
205
246
  readonly height: "40px";
@@ -314,6 +355,47 @@ export declare const designTokens: {
314
355
  readonly page: "#f2f3f5";
315
356
  readonly overlay: "#ffffff";
316
357
  };
358
+ readonly darkTextColors: {
359
+ readonly primary: "#e5eaf3";
360
+ readonly regular: "#cfd3dc";
361
+ readonly secondary: "#a3a6ad";
362
+ readonly placeholder: "#8d9095";
363
+ readonly disabled: "#6c6e72";
364
+ };
365
+ readonly darkBorderColors: {
366
+ readonly DEFAULT: "#4c4d4f";
367
+ readonly light: "#414243";
368
+ readonly lighter: "#363637";
369
+ readonly extraLight: "#2b2b2c";
370
+ readonly dark: "#58585b";
371
+ readonly darker: "#636466";
372
+ };
373
+ readonly darkFillColors: {
374
+ readonly DEFAULT: "#303030";
375
+ readonly light: "#262727";
376
+ readonly lighter: "#1d1d1d";
377
+ readonly extraLight: "#191919";
378
+ readonly dark: "#39393a";
379
+ readonly darker: "#424243";
380
+ readonly blank: "transparent";
381
+ };
382
+ readonly darkBgColors: {
383
+ readonly DEFAULT: "#141414";
384
+ readonly page: "#0a0a0a";
385
+ readonly overlay: "#1d1e1f";
386
+ };
387
+ readonly darkMask: {
388
+ readonly DEFAULT: "rgba(0, 0, 0, 0.7)";
389
+ readonly light: "rgba(0, 0, 0, 0.5)";
390
+ readonly extraLight: "rgba(0, 0, 0, 0.3)";
391
+ };
392
+ readonly darkScrollbar: {
393
+ readonly width: "6px";
394
+ readonly thumbColor: "#424243";
395
+ readonly thumbHoverColor: "#8d9095";
396
+ readonly trackColor: "transparent";
397
+ readonly thumbRadius: "3px";
398
+ };
317
399
  readonly spacing: {
318
400
  readonly none: "0";
319
401
  readonly xs: "4px";
@@ -456,3 +538,9 @@ export type BreakpointTokens = typeof breakpointTokens;
456
538
  export type AccessibilityTokens = typeof accessibilityTokens;
457
539
  export type MaskTokens = typeof maskTokens;
458
540
  export type ScrollbarTokens = typeof scrollbarTokens;
541
+ export type DarkTextColorTokens = typeof darkTextColorTokens;
542
+ export type DarkBorderColorTokens = typeof darkBorderColorTokens;
543
+ export type DarkFillColorTokens = typeof darkFillColorTokens;
544
+ export type DarkBgColorTokens = typeof darkBgColorTokens;
545
+ export type DarkMaskTokens = typeof darkMaskTokens;
546
+ export type DarkScrollbarTokens = typeof darkScrollbarTokens;
@@ -197,6 +197,47 @@ export const scrollbarTokens = {
197
197
  trackColor: "transparent",
198
198
  thumbRadius: "3px"
199
199
  };
200
+ export const darkTextColorTokens = {
201
+ primary: "#e5eaf3",
202
+ regular: "#cfd3dc",
203
+ secondary: "#a3a6ad",
204
+ placeholder: "#8d9095",
205
+ disabled: "#6c6e72"
206
+ };
207
+ export const darkBorderColorTokens = {
208
+ DEFAULT: "#4c4d4f",
209
+ light: "#414243",
210
+ lighter: "#363637",
211
+ extraLight: "#2b2b2c",
212
+ dark: "#58585b",
213
+ darker: "#636466"
214
+ };
215
+ export const darkFillColorTokens = {
216
+ DEFAULT: "#303030",
217
+ light: "#262727",
218
+ lighter: "#1d1d1d",
219
+ extraLight: "#191919",
220
+ dark: "#39393a",
221
+ darker: "#424243",
222
+ blank: "transparent"
223
+ };
224
+ export const darkBgColorTokens = {
225
+ DEFAULT: "#141414",
226
+ page: "#0a0a0a",
227
+ overlay: "#1d1e1f"
228
+ };
229
+ export const darkMaskTokens = {
230
+ DEFAULT: "rgba(0, 0, 0, 0.7)",
231
+ light: "rgba(0, 0, 0, 0.5)",
232
+ extraLight: "rgba(0, 0, 0, 0.3)"
233
+ };
234
+ export const darkScrollbarTokens = {
235
+ width: "6px",
236
+ thumbColor: "#424243",
237
+ thumbHoverColor: "#8d9095",
238
+ trackColor: "transparent",
239
+ thumbRadius: "3px"
240
+ };
200
241
  export const componentSizeTokens = {
201
242
  large: {
202
243
  height: "40px",
@@ -220,6 +261,12 @@ export const designTokens = {
220
261
  borderColors: borderColorTokens,
221
262
  fillColors: fillColorTokens,
222
263
  bgColors: bgColorTokens,
264
+ darkTextColors: darkTextColorTokens,
265
+ darkBorderColors: darkBorderColorTokens,
266
+ darkFillColors: darkFillColorTokens,
267
+ darkBgColors: darkBgColorTokens,
268
+ darkMask: darkMaskTokens,
269
+ darkScrollbar: darkScrollbarTokens,
223
270
  spacing: spacingTokens,
224
271
  radius: radiusTokens,
225
272
  fontSize: fontSizeTokens,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yh-ui/theme",
3
- "version": "1.0.26",
3
+ "version": "1.0.30",
4
4
  "description": "YH-UI theme and design tokens",
5
5
  "type": "module",
6
6
  "sideEffects": [
@@ -5,4 +5,5 @@
5
5
  */
6
6
 
7
7
  @use 'variables';
8
+ @use 'root';
8
9
  @use 'reset';
@@ -1,7 +1,7 @@
1
1
  @use 'sass:string';
2
2
  @use 'sass:list';
3
3
  @use 'sass:meta';
4
- @use '../variables' as *;
4
+ // mixins 编译时不直接携带全局变量样式输出
5
5
 
6
6
  // Utilities
7
7
  @mixin ellipsis {
@@ -0,0 +1,514 @@
1
+ /**
2
+ * YH-UI CSS Variables
3
+ * 全局 CSS 变量定义 - 业内最佳主题系统
4
+ */
5
+
6
+ :root {
7
+ /* ==================== 密度/紧凑度系统 ==================== */
8
+ --yh-density-factor: 1;
9
+ --yh-component-size-default: 32px;
10
+ --yh-component-size-small: 24px;
11
+ --yh-component-size-large: 40px;
12
+ --yh-padding-default: 12px 16px;
13
+ --yh-padding-small: 8px 12px;
14
+ --yh-padding-large: 16px 20px;
15
+ --yh-spacing-unit: 8px;
16
+ /* ==================== 基础颜色 ==================== */
17
+ --yh-color-white: #ffffff;
18
+ --yh-color-black: #000000;
19
+ /* ==================== 颜色系统 ==================== */
20
+
21
+ /* 主色 */
22
+ --yh-color-primary: #409eff;
23
+ --yh-color-primary-light-1: #53a8ff;
24
+ --yh-color-primary-light-2: #66b1ff;
25
+ --yh-color-primary-light-3: #79bbff;
26
+ --yh-color-primary-light-4: #8cc5ff;
27
+ --yh-color-primary-light-5: #a0cfff;
28
+ --yh-color-primary-light-6: #b3d8ff;
29
+ --yh-color-primary-light-7: #c6e2ff;
30
+ --yh-color-primary-light-8: #d9ecff;
31
+ --yh-color-primary-light-9: #ecf5ff;
32
+ --yh-color-primary-dark-2: #337ecc;
33
+
34
+ /* 成功色 */
35
+ --yh-color-success: #67c23a;
36
+ --yh-color-success-light-3: #95d475;
37
+ --yh-color-success-light-5: #b3e19d;
38
+ --yh-color-success-light-7: #d1edc4;
39
+ --yh-color-success-light-9: #f0f9eb;
40
+ --yh-color-success-dark-2: #529b2e;
41
+
42
+ /* 警告色 */
43
+ --yh-color-warning: #e6a23c;
44
+ --yh-color-warning-light-3: #eebe77;
45
+ --yh-color-warning-light-5: #f3d19e;
46
+ --yh-color-warning-light-7: #f8e3c5;
47
+ --yh-color-warning-light-9: #fdf6ec;
48
+ --yh-color-warning-dark-2: #b88230;
49
+
50
+ /* 危险色 */
51
+ --yh-color-danger: #f56c6c;
52
+ --yh-color-danger-light-3: #f89898;
53
+ --yh-color-danger-light-5: #fab6b6;
54
+ --yh-color-danger-light-7: #fcd3d3;
55
+ --yh-color-danger-light-9: #fef0f0;
56
+ --yh-color-danger-dark-2: #c45656;
57
+
58
+ /* 信息色 */
59
+ --yh-color-info: #909399;
60
+ --yh-color-info-light-3: #b1b3b8;
61
+ --yh-color-info-light-5: #c8c9cc;
62
+ --yh-color-info-light-7: #dedfe0;
63
+ --yh-color-info-light-9: #f4f4f5;
64
+ --yh-color-info-dark-2: #73767a;
65
+
66
+ /* 文字颜色 */
67
+ --yh-text-color-primary: #303133;
68
+ --yh-text-color-regular: #606266;
69
+ --yh-text-color-secondary: #909399;
70
+ --yh-text-color-placeholder: #a8abb2;
71
+ --yh-text-color-disabled: #c0c4cc;
72
+
73
+ /* 边框颜色 */
74
+ --yh-border-color: #dcdfe6;
75
+ --yh-border-color-hover: var(--yh-color-primary);
76
+ --yh-border-color-light: #e4e7ed;
77
+ --yh-border-color-lighter: #ebeef5;
78
+ --yh-border-color-extra-light: #f2f6fc;
79
+ --yh-border-color-dark: #d4d7de;
80
+ --yh-border-color-darker: #cdd0d6;
81
+
82
+ /* 填充颜色 */
83
+ --yh-fill-color: #f0f2f5;
84
+ --yh-fill-color-light: #f5f7fa;
85
+ --yh-fill-color-lighter: #fafafa;
86
+ --yh-fill-color-extra-light: #fafcff;
87
+ --yh-fill-color-dark: #ebedf0;
88
+ --yh-fill-color-darker: #e6e8eb;
89
+ --yh-fill-color-blank: #ffffff;
90
+
91
+ /* 背景颜色 */
92
+ --yh-bg-color: #ffffff;
93
+ --yh-bg-color-page: #f2f3f5;
94
+ --yh-bg-color-overlay: #ffffff;
95
+
96
+ /* ==================== 间距系统 ==================== */
97
+ --yh-spacing-none: 0;
98
+ --yh-spacing-xs: 4px;
99
+ --yh-spacing-sm: 8px;
100
+ --yh-spacing-md: 16px;
101
+ --yh-spacing-lg: 24px;
102
+ --yh-spacing-xl: 32px;
103
+ --yh-spacing-xxl: 48px;
104
+
105
+ /* ==================== 圆角系统 ==================== */
106
+ --yh-radius-none: 0;
107
+ --yh-radius-sm: 2px;
108
+ --yh-radius-base: 4px;
109
+ --yh-radius-md: 8px;
110
+ --yh-radius-lg: 12px;
111
+ --yh-radius-xl: 16px;
112
+ --yh-radius-round: 20px;
113
+ --yh-radius-circle: 50%;
114
+
115
+ /* ==================== 字体系统 ==================== */
116
+ --yh-font-family:
117
+ -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans',
118
+ sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
119
+
120
+ /* 字号 */
121
+ --yh-font-size-xs: 12px;
122
+ --yh-font-size-sm: 13px;
123
+ --yh-font-size-base: 14px;
124
+ --yh-font-size-md: 16px;
125
+ --yh-font-size-lg: 18px;
126
+ --yh-font-size-xl: 20px;
127
+ --yh-font-size-xxl: 24px;
128
+
129
+ /* 行高 */
130
+ --yh-line-height-none: 1;
131
+ --yh-line-height-tight: 1.25;
132
+ --yh-line-height-snug: 1.375;
133
+ --yh-line-height-normal: 1.5;
134
+ --yh-line-height-relaxed: 1.625;
135
+ --yh-line-height-loose: 2;
136
+
137
+ /* 字重 */
138
+ --yh-font-weight-light: 300;
139
+ --yh-font-weight-normal: 400;
140
+ --yh-font-weight-medium: 500;
141
+ --yh-font-weight-semibold: 600;
142
+ --yh-font-weight-bold: 700;
143
+
144
+ /* ==================== 阴影系统 ==================== */
145
+ --yh-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
146
+ --yh-shadow-base: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
147
+ --yh-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
148
+ --yh-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
149
+ --yh-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
150
+
151
+ /* ==================== 过渡动效 ==================== */
152
+ --yh-duration-fast: 150ms;
153
+ --yh-duration-base: 200ms;
154
+ --yh-duration-slow: 300ms;
155
+
156
+ --yh-timing-ease: ease;
157
+ --yh-timing-ease-in: cubic-bezier(0.4, 0, 1, 1);
158
+ --yh-timing-ease-out: cubic-bezier(0, 0, 0.2, 1);
159
+ --yh-timing-ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
160
+ --yh-timing-linear: linear;
161
+
162
+ --yh-transition-base: all var(--yh-duration-base) var(--yh-timing-ease-in-out);
163
+ --yh-transition-fast: all var(--yh-duration-fast) var(--yh-timing-ease-in-out);
164
+ --yh-transition-slow: all var(--yh-duration-slow) var(--yh-timing-ease-in-out);
165
+
166
+ /* ==================== 层级系统 ==================== */
167
+ --yh-z-index-normal: 1;
168
+ --yh-z-index-top: 1000;
169
+ --yh-z-index-popper: 2000;
170
+ --yh-z-index-overlay: 2001;
171
+ --yh-z-index-modal: 2002;
172
+ --yh-z-index-popover: 2003;
173
+ --yh-z-index-tooltip: 2004;
174
+ --yh-z-index-loading: 2005;
175
+
176
+ /* ==================== 组件尺寸 ==================== */
177
+ /* Large */
178
+ --yh-component-size-large: 40px;
179
+ --yh-component-size-large-font: 14px;
180
+ --yh-component-size-large-padding: 20px;
181
+
182
+ /* Default */
183
+ --yh-component-size-default: 32px;
184
+ --yh-component-size-default-font: 14px;
185
+ --yh-component-size-default-padding: 16px;
186
+
187
+ /* Small */
188
+ --yh-component-size-small: 24px;
189
+ --yh-component-size-small-font: 12px;
190
+ --yh-component-size-small-padding: 12px;
191
+
192
+ /* ==================== 组件语义化变量 ==================== */
193
+ --yh-border-radius-base: var(--yh-radius-base);
194
+ --yh-border-radius-small: var(--yh-radius-sm);
195
+ --yh-border-radius-round: var(--yh-radius-round);
196
+
197
+ /* Message 消息提示 */
198
+ --yh-message-bg-color: var(--yh-bg-color-overlay);
199
+ --yh-message-border-color: var(--yh-border-color-lighter);
200
+ --yh-message-shadow: var(--yh-shadow-lg);
201
+ --yh-message-text-color: var(--yh-text-color-primary);
202
+ --yh-message-close-color: var(--yh-text-color-secondary);
203
+ --yh-message-close-hover-color: var(--yh-text-color-primary);
204
+
205
+ /* Notification 通知 */
206
+ --yh-notification-bg-color: var(--yh-bg-color-overlay);
207
+ --yh-notification-border-color: var(--yh-border-color-lighter);
208
+ --yh-notification-shadow: var(--yh-shadow-lg);
209
+ --yh-notification-title-color: var(--yh-text-color-primary);
210
+ --yh-notification-content-color: var(--yh-text-color-regular);
211
+
212
+ /* Badge 徽标 */
213
+ --yh-badge-bg-color: var(--yh-color-danger);
214
+ --yh-badge-text-color: #ffffff;
215
+ --yh-badge-border-color: var(--yh-bg-color);
216
+
217
+ /* Card 卡片 */
218
+ --yh-card-bg-color: var(--yh-bg-color-overlay);
219
+ --yh-card-border-color: var(--yh-border-color-lighter);
220
+ --yh-card-shadow: var(--yh-shadow-base);
221
+ --yh-card-header-padding: 18px 20px;
222
+ --yh-card-body-padding: 20px;
223
+
224
+ /* Input 输入框 */
225
+ --yh-input-bg-color: var(--yh-fill-color-blank);
226
+ --yh-input-text-color: var(--yh-text-color-regular);
227
+ --yh-input-border-color: var(--yh-border-color);
228
+ --yh-input-hover-border-color: var(--yh-color-primary);
229
+ --yh-input-focus-border-color: var(--yh-color-primary);
230
+ --yh-input-placeholder-color: var(--yh-text-color-placeholder);
231
+ --yh-input-icon-color: var(--yh-text-color-placeholder);
232
+ --yh-input-disabled-bg-color: var(--yh-fill-color-light);
233
+ --yh-input-disabled-text-color: var(--yh-text-color-disabled);
234
+ --yh-input-disabled-border-color: var(--yh-border-color-light);
235
+
236
+ /* Image 图片 */
237
+ --yh-image-placeholder-bg-color: var(--yh-fill-color-light);
238
+ --yh-image-placeholder-text-color: var(--yh-text-color-placeholder);
239
+ --yh-image-error-bg-color: var(--yh-fill-color-extra-light);
240
+ --yh-image-error-text-color: var(--yh-text-color-placeholder);
241
+
242
+ /* Image Viewer 预览器 */
243
+ --yh-image-viewer-mask-bg-color: rgba(0, 0, 0, 0.5);
244
+ --yh-image-viewer-btn-bg-color: var(--yh-text-color-regular);
245
+ --yh-image-viewer-btn-color: #ffffff;
246
+ --yh-image-viewer-btn-hover-bg-color: var(--yh-color-primary);
247
+
248
+ /* Calendar 日历 */
249
+ --yh-calendar-bg: linear-gradient(135deg, #ffffff 0%, #f8fafc 100%);
250
+ --yh-calendar-border-color: rgba(0, 0, 0, 0.06);
251
+ --yh-calendar-border-radius: var(--yh-radius-xl);
252
+ --yh-calendar-header-bg: rgba(255, 255, 255, 0.95);
253
+ --yh-calendar-header-border: rgba(0, 0, 0, 0.04);
254
+ --yh-calendar-header-padding: 18px 22px;
255
+ --yh-calendar-body-padding: 14px 18px 18px;
256
+
257
+ /* Calendar 尺寸 */
258
+ --yh-calendar-cell-height: 85px;
259
+ --yh-calendar-cell-height-small: 52px;
260
+ --yh-calendar-cell-height-large: 110px;
261
+ --yh-calendar-cell-radius: 10px;
262
+ --yh-calendar-cell-radius-small: 6px;
263
+ --yh-calendar-cell-radius-large: 12px;
264
+
265
+ /* Calendar 颜色 */
266
+ --yh-calendar-day-bg: var(--yh-bg-color);
267
+ --yh-calendar-primary: var(--yh-color-primary);
268
+ --yh-calendar-primary-light: rgba(59, 130, 246, 0.1);
269
+ --yh-calendar-selected-bg: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%);
270
+ --yh-calendar-selected-border: rgba(59, 130, 246, 0.4);
271
+ --yh-calendar-today-dot: var(--yh-color-primary);
272
+ --yh-calendar-weekend-color: #f97316;
273
+ --yh-calendar-disabled-color: var(--yh-text-color-disabled);
274
+ --yh-calendar-other-month-opacity: 0.35;
275
+
276
+ /* Calendar 假日 */
277
+ --yh-calendar-holiday-color: var(--yh-color-success);
278
+ --yh-calendar-holiday-bg: rgba(16, 185, 129, 0.12);
279
+ --yh-calendar-holiday-border: rgba(16, 185, 129, 0.25);
280
+ --yh-calendar-workday-color: var(--yh-color-warning);
281
+ --yh-calendar-workday-bg: rgba(245, 158, 11, 0.12);
282
+ --yh-calendar-workday-border: rgba(245, 158, 11, 0.25);
283
+
284
+ /* Calendar 范围选择 */
285
+ --yh-calendar-range-bg: rgba(59, 130, 246, 0.08);
286
+ --yh-calendar-range-border: rgba(59, 130, 246, 0.2);
287
+
288
+ /* Calendar 字体 */
289
+ --yh-calendar-weekday-font-size: var(--yh-font-size-sm);
290
+ --yh-calendar-weekday-color: var(--yh-text-color-secondary);
291
+ --yh-calendar-day-font-size: 15px;
292
+ --yh-calendar-day-color: var(--yh-text-color-primary);
293
+ --yh-calendar-badge-font-size: 9px;
294
+
295
+ /* Table 表格 */
296
+ --yh-table-border-color: var(--yh-border-color-lighter);
297
+ --yh-table-header-bg: var(--yh-fill-color-light);
298
+ --yh-table-header-text-color: var(--yh-text-color-primary);
299
+ --yh-table-header-font-weight: var(--yh-font-weight-semibold);
300
+ --yh-table-row-bg: var(--yh-bg-color);
301
+ --yh-table-row-hover-bg: var(--yh-fill-color-light);
302
+ --yh-table-row-stripe-bg: var(--yh-fill-color-lighter);
303
+ --yh-table-row-current-bg: var(--yh-color-primary-light-9);
304
+ --yh-table-row-selected-bg: var(--yh-color-primary-light-8);
305
+ --yh-table-row-success-bg: var(--yh-color-success-light-9);
306
+ --yh-table-row-warning-bg: var(--yh-color-warning-light-9);
307
+ --yh-table-text-color: var(--yh-text-color-regular);
308
+ --yh-table-empty-text-color: var(--yh-text-color-secondary);
309
+ --yh-table-font-size: var(--yh-font-size-base);
310
+ --yh-table-cell-padding: 12px 0;
311
+ --yh-table-cell-spacing: 12px;
312
+ --yh-table-fixed-left-shadow: inset 10px 0 8px -8px rgba(0, 0, 0, 0.15);
313
+ --yh-table-fixed-right-shadow: inset -10px 0 8px -8px rgba(0, 0, 0, 0.15);
314
+
315
+ /* ==================== 边框基础 ==================== */
316
+ --yh-border-width: 1px;
317
+ --yh-border-style: solid;
318
+ --yh-border: var(--yh-border-width) var(--yh-border-style) var(--yh-border-color);
319
+
320
+ /* ==================== 断点系统 ==================== */
321
+ --yh-breakpoint-xs: 0;
322
+ --yh-breakpoint-sm: 576px;
323
+ --yh-breakpoint-md: 768px;
324
+ --yh-breakpoint-lg: 992px;
325
+ --yh-breakpoint-xl: 1200px;
326
+ --yh-breakpoint-xxl: 1400px;
327
+
328
+ /* ==================== 字体系统扩展 ==================== */
329
+ --yh-font-family-monospace:
330
+ 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace;
331
+ --yh-font-family-serif: Georgia, Cambria, 'Times New Roman', Times, serif;
332
+
333
+ /* ==================== 无障碍/聚焦系统 ==================== */
334
+ --yh-focus-ring-color: var(--yh-color-primary);
335
+ --yh-focus-ring-width: 2px;
336
+ --yh-focus-ring-offset: 2px;
337
+ --yh-focus-ring-opacity: 0.2;
338
+ --yh-focus-ring:
339
+ 0 0 0 var(--yh-focus-ring-offset) var(--yh-bg-color),
340
+ 0 0 0 calc(var(--yh-focus-ring-offset) + var(--yh-focus-ring-width)) var(--yh-focus-ring-color);
341
+
342
+ /* 高对比度模式支持 */
343
+ --yh-high-contrast-outline: 2px solid transparent;
344
+ --yh-high-contrast-outline-offset: 2px;
345
+
346
+ /* ==================== 滚动条样式 ==================== */
347
+ --yh-scrollbar-width: 6px;
348
+ --yh-scrollbar-thumb-color: var(--yh-text-color-disabled);
349
+ --yh-scrollbar-thumb-hover-color: var(--yh-text-color-secondary);
350
+ --yh-scrollbar-track-color: transparent;
351
+ --yh-scrollbar-thumb-radius: 3px;
352
+
353
+ /* ==================== 遮罩层 ==================== */
354
+ --yh-mask-color: rgba(0, 0, 0, 0.5);
355
+ --yh-mask-color-light: rgba(0, 0, 0, 0.3);
356
+ --yh-mask-color-extra-light: rgba(0, 0, 0, 0.1);
357
+ }
358
+
359
+ /* ==================== 暗黑模式 ==================== */
360
+ html.dark {
361
+ --yh-color-primary: #409eff;
362
+ --yh-color-primary-light-3: #3375b9;
363
+ --yh-color-primary-light-5: #2a598a;
364
+ --yh-color-primary-light-7: #213d5b;
365
+ --yh-color-primary-light-9: #18222c;
366
+ --yh-color-primary-dark-2: #66b1ff;
367
+
368
+ --yh-color-success: #67c23a;
369
+ --yh-color-success-light-3: #4e8e2f;
370
+ --yh-color-success-light-5: #3e6b27;
371
+ --yh-color-success-light-7: #2d481f;
372
+ --yh-color-success-light-9: #1d2518;
373
+
374
+ --yh-color-warning: #e6a23c;
375
+ --yh-color-warning-light-3: #a77730;
376
+ --yh-color-warning-light-5: #7d5b28;
377
+ --yh-color-warning-light-7: #533f20;
378
+ --yh-color-warning-light-9: #292218;
379
+
380
+ --yh-color-danger: #f56c6c;
381
+ --yh-color-danger-light-3: #b25252;
382
+ --yh-color-danger-light-5: #854040;
383
+ --yh-color-danger-light-7: #582e2e;
384
+ --yh-color-danger-light-9: #2b1d1d;
385
+
386
+ --yh-color-info: #909399;
387
+ --yh-color-info-light-3: #6b6d71;
388
+ --yh-color-info-light-5: #525457;
389
+ --yh-color-info-light-7: #393b3e;
390
+ --yh-color-info-light-9: #202124;
391
+
392
+ --yh-text-color-primary: #e5eaf3;
393
+ --yh-text-color-regular: #cfd3dc;
394
+ --yh-text-color-secondary: #a3a6ad;
395
+ --yh-text-color-placeholder: #8d9095;
396
+ --yh-text-color-disabled: #6c6e72;
397
+
398
+ --yh-border-color: #4c4d4f;
399
+ --yh-border-color-light: #414243;
400
+ --yh-border-color-lighter: #363637;
401
+ --yh-border-color-extra-light: #2b2b2c;
402
+ --yh-border-color-dark: #58585b;
403
+ --yh-border-color-darker: #636466;
404
+
405
+ --yh-fill-color: #303030;
406
+ --yh-fill-color-light: #262727;
407
+ --yh-fill-color-lighter: #1d1d1d;
408
+ --yh-fill-color-extra-light: #191919;
409
+ --yh-fill-color-dark: #39393a;
410
+ --yh-fill-color-darker: #424243;
411
+ --yh-fill-color-blank: transparent;
412
+ --yh-bg-color: #141414;
413
+ --yh-bg-color-page: #0a0a0a;
414
+ --yh-bg-color-overlay: #1d1e1f;
415
+
416
+ /* 组件暗色模式覆盖 */
417
+ --yh-message-bg-color: var(--yh-bg-color-overlay);
418
+ --yh-message-border-color: var(--yh-border-color-lighter);
419
+ --yh-notification-bg-color: var(--yh-bg-color-overlay);
420
+ --yh-notification-border-color: var(--yh-border-color-lighter);
421
+ --yh-badge-border-color: var(--yh-bg-color);
422
+ --yh-card-bg-color: var(--yh-bg-color-overlay);
423
+ --yh-card-border-color: var(--yh-border-color-lighter);
424
+
425
+ /* Calendar 暗黑模式 */
426
+ --yh-calendar-bg: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);
427
+ --yh-calendar-border-color: rgba(255, 255, 255, 0.08);
428
+ --yh-calendar-header-bg: rgba(30, 30, 30, 0.95);
429
+ --yh-calendar-header-border: rgba(255, 255, 255, 0.06);
430
+ --yh-calendar-day-bg: rgba(255, 255, 255, 0.04);
431
+ --yh-calendar-day-color: var(--yh-text-color-primary);
432
+ --yh-calendar-weekday-color: var(--yh-text-color-secondary);
433
+ --yh-calendar-selected-bg: linear-gradient(
434
+ 135deg,
435
+ rgba(59, 130, 246, 0.2) 0%,
436
+ rgba(59, 130, 246, 0.1) 100%
437
+ );
438
+
439
+ /* Table 暗黑模式 */
440
+ --yh-table-border-color: var(--yh-border-color-lighter);
441
+ --yh-table-header-bg: var(--yh-fill-color-dark);
442
+ --yh-table-header-text-color: var(--yh-text-color-primary);
443
+ --yh-table-row-bg: var(--yh-bg-color);
444
+ --yh-table-row-hover-bg: var(--yh-fill-color);
445
+ --yh-table-row-stripe-bg: var(--yh-fill-color-light);
446
+ --yh-table-row-current-bg: var(--yh-color-primary-light-9);
447
+ --yh-table-row-selected-bg: var(--yh-color-primary-light-9);
448
+ --yh-table-row-success-bg: var(--yh-color-success-light-9);
449
+ --yh-table-row-warning-bg: var(--yh-color-warning-light-9);
450
+ --yh-table-fixed-left-shadow: inset 10px 0 8px -8px rgba(0, 0, 0, 0.3);
451
+ --yh-table-fixed-right-shadow: inset -10px 0 8px -8px rgba(0, 0, 0, 0.3);
452
+
453
+ /* 遮罩层暗黑模式 */
454
+ --yh-mask-color: rgba(0, 0, 0, 0.7);
455
+ --yh-mask-color-light: rgba(0, 0, 0, 0.5);
456
+ --yh-mask-color-extra-light: rgba(0, 0, 0, 0.3);
457
+
458
+ /* 滚动条暗黑模式 */
459
+ --yh-scrollbar-thumb-color: var(--yh-fill-color-darker);
460
+ --yh-scrollbar-thumb-hover-color: var(--yh-text-color-placeholder);
461
+ }
462
+
463
+ /* ==================== 减少动画偏好支持 ==================== */
464
+ @media (prefers-reduced-motion: reduce) {
465
+ :root,
466
+ html.dark {
467
+ --yh-duration-fast: 0ms;
468
+ --yh-duration-base: 0ms;
469
+ --yh-duration-slow: 0ms;
470
+ --yh-transition-base: none;
471
+ --yh-transition-fast: none;
472
+ --yh-transition-slow: none;
473
+ }
474
+
475
+ *,
476
+ *::before,
477
+ *::after {
478
+ animation-duration: 0.01ms !important;
479
+ animation-iteration-count: 1 !important;
480
+ transition-duration: 0.01ms !important;
481
+ scroll-behavior: auto !important;
482
+ }
483
+ }
484
+
485
+ /* ==================== 高对比度模式支持 ==================== */
486
+ @media (prefers-contrast: high) {
487
+ :root {
488
+ --yh-border-color: #000000;
489
+ --yh-border-color-light: #333333;
490
+ --yh-text-color-primary: #000000;
491
+ --yh-text-color-regular: #1a1a1a;
492
+ --yh-focus-ring-width: 3px;
493
+ --yh-focus-ring-color: #000000;
494
+ }
495
+
496
+ html.dark {
497
+ --yh-border-color: #ffffff;
498
+ --yh-border-color-light: #cccccc;
499
+ --yh-text-color-primary: #ffffff;
500
+ --yh-text-color-regular: #e5e5e5;
501
+ --yh-focus-ring-color: #ffffff;
502
+ }
503
+ }
504
+
505
+ /* ==================== 强制颜色模式支持 (Windows 高对比度) ==================== */
506
+ @media (forced-colors: active) {
507
+ :root {
508
+ --yh-color-primary: LinkText;
509
+ --yh-border-color: ButtonBorder;
510
+ --yh-bg-color: Canvas;
511
+ --yh-text-color-primary: CanvasText;
512
+ --yh-focus-ring-color: Highlight;
513
+ }
514
+ }