@udi-organization/udi-package 1.0.51 → 1.0.56

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.
@@ -0,0 +1,561 @@
1
+ // =============================================================================
2
+ // Theme Definitions - 主題定義(5 種主題)
3
+ // =============================================================================
4
+
5
+ // -----------------------------------------------------------------------------
6
+ // 🌞 Light Theme (預設亮色)
7
+ // -----------------------------------------------------------------------------
8
+
9
+ :root,
10
+ [data-theme="light"] {
11
+ // Primary Colors
12
+ --color-primary: #1976d2;
13
+ --color-primary-dark: #1565c0;
14
+ --color-primary-light: #42a5f5;
15
+
16
+ // Gray Scale
17
+ --color-gray-50: #fafafa;
18
+ --color-gray-100: #f5f5f5;
19
+ --color-gray-200: #eeeeee;
20
+ --color-gray-300: #e0e0e0;
21
+ --color-gray-400: #bdbdbd;
22
+ --color-gray-500: #9e9e9e;
23
+ --color-gray-600: #757575;
24
+ --color-gray-700: #616161;
25
+ --color-gray-800: #424242;
26
+ --color-gray-900: #212121;
27
+
28
+ // Semantic Colors
29
+ --color-success: #2e7d32;
30
+ --color-warning: #ed6c02;
31
+ --color-error: #d32f2f;
32
+ --color-info: #0288d1;
33
+
34
+ // Background & Surface
35
+ --color-background: #ffffff;
36
+ --color-surface: #f5f5f5;
37
+ --color-surface-elevated: #ffffff;
38
+
39
+ // Text Colors
40
+ --color-text-primary: rgba(0, 0, 0, 0.87);
41
+ --color-text-secondary: rgba(0, 0, 0, 0.6);
42
+ --color-text-disabled: rgba(0, 0, 0, 0.38);
43
+
44
+ // Border
45
+ --color-border: rgba(0, 0, 0, 0.12);
46
+ --color-divider: rgba(0, 0, 0, 0.12);
47
+
48
+ // Component Specific - Button
49
+ --color-button-primary-bg: #1976d2;
50
+ --color-button-primary-hover: #1565c0;
51
+ --color-button-primary-text: #ffffff;
52
+ --color-button-secondary-hover: #bbdefb;
53
+ --color-button-secondary-bg: #e3f2fd;
54
+ --color-button-secondary-text: #0d47a1;
55
+ --color-button-secondary-border: #90caf9;
56
+ --color-button-disabled-bg: rgba(0, 0, 0, 0.12);
57
+ --color-button-disabled-text: rgba(0, 0, 0, 0.26);
58
+ --color-button-disabled-border: transparent;
59
+
60
+ // Component Specific - Chip
61
+ --color-chip-bg: #e0e0e0;
62
+ --color-chip-hover-bg: #1976d2;
63
+ --color-chip-hover-text: #ffffff;
64
+
65
+ // Component Specific - Menu
66
+ --color-menu-hover-bg: rgba(0, 0, 0, 0.04);
67
+
68
+ // Component Specific - Select
69
+ --color-select-bg: #e3f2fd;
70
+ --color-select-hover-bg: #bbdefb;
71
+ --color-select-text: #0d47a1;
72
+ --color-select-border: #90caf9;
73
+
74
+ // Component Specific - Card
75
+ --color-card-bg: #F1F1F1;
76
+ --color-card-header-bg: #B9E1DC; //====
77
+ --color-card-icon: #05233B;
78
+ --color-card-border: #D7D7D7;
79
+ --color-card-add-bg: #F1F1F1;
80
+ --color-card-add-text: #7D7D7D;
81
+
82
+ // Component Specific - Table (Light Theme)
83
+ --color-table-toolbar-bg: #1976d2;
84
+ --color-table-header-bg: #e3f2fd; //=======
85
+ --color-table-row-bg: #ffffff;
86
+ --color-table-row-striped-bg: #f5f5f5;
87
+ --color-table-row-updated-bg: #fff9c4;
88
+ --color-table-row-uploaded-bg: #c8e6c9;
89
+
90
+ // Alpha Colors
91
+ --color-primary-alpha-8: rgba(25, 118, 210, 0.08);
92
+ --color-black-alpha-4: rgba(0, 0, 0, 0.04);
93
+ --color-black-alpha-8: rgba(0, 0, 0, 0.08);
94
+
95
+ // Scrollbar
96
+ --scrollbar-track: #f1f1f1;
97
+ --scrollbar-thumb: #888888;
98
+ --scrollbar-thumb-hover: #555555;
99
+ }
100
+
101
+ // -----------------------------------------------------------------------------
102
+ // 🌙 Dark Theme (暗色 - 现代优雅设计)
103
+ // -----------------------------------------------------------------------------
104
+
105
+ [data-theme="dark"] {
106
+ // Primary Colors (紫蓝色系 - Discord/Notion 风格)
107
+ --color-primary: #5865f2;
108
+ --color-primary-dark: #4752c4;
109
+ --color-primary-light: #7289da;
110
+
111
+ // Gray Scale (中灰色調)
112
+ --color-gray-50: #6a6b6c;
113
+ --color-gray-100: #757677;
114
+ --color-gray-200: #808182;
115
+ --color-gray-300: #8b8c8d;
116
+ --color-gray-400: #969798;
117
+ --color-gray-500: #a1a2a3;
118
+ --color-gray-600: #acaeb0;
119
+ --color-gray-700: #b8b9ba;
120
+ --color-gray-800: #c4c5c6;
121
+ --color-gray-900: #d0d1d2;
122
+
123
+ // Semantic Colors (鲜明现代)
124
+ --color-success: #23a55a;
125
+ --color-warning: #f0b232;
126
+ --color-error: #f23f43;
127
+ --color-info: #00a8fc;
128
+
129
+ // Background & Surface (中灰色調)
130
+ --color-background: #9e9fa0;
131
+ --color-surface: #aaaaac;
132
+ --color-surface-elevated: #b8b9ba;
133
+
134
+ // Text Colors (適中對比度)
135
+ --color-text-primary: #2a2b2c;
136
+ --color-text-secondary: #4a4b4c;
137
+ --color-text-disabled: #757677;
138
+
139
+ // Border
140
+ --color-border: #808182;
141
+ --color-divider: #8b8c8d;
142
+
143
+ // Component Specific - Button
144
+ --color-button-primary-bg: #5865f2;
145
+ --color-button-primary-hover: #4752c4;
146
+ --color-button-primary-text: #ffffff;
147
+ --color-button-secondary-bg: #b8b9ba;
148
+ --color-button-secondary-hover: #c4c5c6;
149
+ --color-button-secondary-text: #2a2b2c;
150
+ --color-button-secondary-border: #808182;
151
+ --color-button-disabled-bg: #969798;
152
+ --color-button-disabled-text: #6a6b6c;
153
+ --color-button-disabled-border: transparent;
154
+
155
+ // Component Specific - Chip
156
+ --color-chip-bg: #b8b9ba;
157
+ --color-chip-hover-bg: #5865f2;
158
+ --color-chip-hover-text: #ffffff;
159
+
160
+ // Component Specific - Menu
161
+ --color-menu-hover-bg: #b8b9ba;
162
+
163
+ // Component Specific - Select
164
+ --color-select-bg: #b8b9ba;
165
+ --color-select-hover-bg: #c4c5c6;
166
+ --color-select-text: #2a2b2c;
167
+ --color-select-border: #808182;
168
+
169
+ // Component Specific - Card (Dark Theme)
170
+ --color-card-bg: #aaaaac;
171
+ --color-card-header-bg: #b8b9ba;
172
+ --color-card-icon: #5865f2;
173
+ --color-card-border: #8b8c8d;
174
+ --color-card-add-bg: #aaaaac;
175
+ --color-card-add-text: #4a4b4c;
176
+
177
+ // Component Specific - Table (Dark Theme)
178
+ --color-table-toolbar-bg: #5865f2;
179
+ --color-table-header-bg: #b8b9ba;
180
+ --color-table-row-bg: #9e9fa0;
181
+ --color-table-row-striped-bg: #aaaaac;
182
+ --color-table-row-updated-bg: #d4c89a;
183
+ --color-table-row-uploaded-bg: #a8c9b8;
184
+
185
+ // Alpha Colors
186
+ --color-primary-alpha-8: rgba(88, 101, 242, 0.08);
187
+ --color-black-alpha-4: rgba(0, 0, 0, 0.04);
188
+ --color-black-alpha-8: rgba(0, 0, 0, 0.08);
189
+
190
+ // Scrollbar
191
+ --scrollbar-track: #aaaaac;
192
+ --scrollbar-thumb: #757677;
193
+ --scrollbar-thumb-hover: #6a6b6c;
194
+ }
195
+
196
+ // -----------------------------------------------------------------------------
197
+ // 🌊 Ocean Theme (海洋 - 清新藍綠)
198
+ // -----------------------------------------------------------------------------
199
+
200
+ [data-theme="ocean"] {
201
+ // Primary Colors - 青藍色調
202
+ --color-primary: #00acc1;
203
+ --color-primary-dark: #00838f;
204
+ --color-primary-light: #4dd0e1;
205
+
206
+ // Gray Scale - 帶有微微藍調
207
+ --color-gray-50: #ecf5f7;
208
+ --color-gray-100: #e0f2f4;
209
+ --color-gray-200: #c5e4e8;
210
+ --color-gray-300: #a8d4da;
211
+ --color-gray-400: #78b8c2;
212
+ --color-gray-500: #5a9aa4;
213
+ --color-gray-600: #467a82;
214
+ --color-gray-700: #355c63;
215
+ --color-gray-800: #243f44;
216
+ --color-gray-900: #142428;
217
+
218
+ // Semantic Colors
219
+ --color-success: #26a69a;
220
+ --color-warning: #ffb74d;
221
+ --color-error: #ef5350;
222
+ --color-info: #29b6f6;
223
+
224
+ // Background & Surface - 淺藍背景
225
+ --color-background: #f0f9fb;
226
+ --color-surface: #ffffff;
227
+ --color-surface-elevated: #ffffff;
228
+
229
+ // Text Colors
230
+ --color-text-primary: #0d3d44;
231
+ --color-text-secondary: #467a82;
232
+ --color-text-disabled: #a8d4da;
233
+
234
+ // Border
235
+ --color-border: rgba(0, 172, 193, 0.2);
236
+ --color-divider: rgba(0, 172, 193, 0.15);
237
+
238
+ // Component Specific - Button
239
+ --color-button-primary-bg: #00acc1;
240
+ --color-button-primary-hover: #00838f;
241
+ --color-button-primary-text: #ffffff;
242
+ --color-button-secondary-bg: #b2ebf2;
243
+ --color-button-secondary-hover: #80deea;
244
+ --color-button-secondary-text: #00697c;
245
+ --color-button-secondary-border: #4dd0e1;
246
+ --color-button-disabled-bg: #c5e4e8;
247
+ --color-button-disabled-text: #78b8c2;
248
+ --color-button-disabled-border: transparent;
249
+
250
+ // Component Specific - Chip
251
+ --color-chip-bg: #e0f2f4;
252
+ --color-chip-hover-bg: #00acc1;
253
+ --color-chip-hover-text: #ffffff;
254
+
255
+ // Component Specific - Menu
256
+ --color-menu-hover-bg: rgba(0, 172, 193, 0.08);
257
+
258
+ // Component Specific - Select
259
+ --color-select-bg: #b2ebf2;
260
+ --color-select-hover-bg: #80deea;
261
+ --color-select-text: #00697c;
262
+ --color-select-border: #4dd0e1;
263
+
264
+ // Component Specific - Card (Ocean Theme)
265
+ --color-card-bg: #e0f7fa;
266
+ --color-card-header-bg: #80deea;
267
+ --color-card-icon: #00697c;
268
+ --color-card-border: #b2ebf2;
269
+ --color-card-add-bg: #e0f7fa;
270
+ --color-card-add-text: #4dd0e1;
271
+
272
+ // Component Specific - Table (Ocean Theme)
273
+ --color-table-toolbar-bg: #00838f;
274
+ --color-table-header-bg: #b2ebf2;
275
+ --color-table-row-bg: #ffffff;
276
+ --color-table-row-striped-bg: #e0f7fa;
277
+ --color-table-row-updated-bg: #fff9c4;
278
+ --color-table-row-uploaded-bg: #b2dfdb;
279
+
280
+ // Alpha Colors
281
+ --color-primary-alpha-8: rgba(0, 172, 193, 0.08);
282
+ --color-black-alpha-4: rgba(0, 172, 193, 0.04);
283
+ --color-black-alpha-8: rgba(0, 172, 193, 0.08);
284
+
285
+ // Scrollbar
286
+ --scrollbar-track: #e0f2f4;
287
+ --scrollbar-thumb: #78b8c2;
288
+ --scrollbar-thumb-hover: #00acc1;
289
+ }
290
+
291
+ // -----------------------------------------------------------------------------
292
+ // 🌲 Forest Theme (森林 - 自然綠色)
293
+ // -----------------------------------------------------------------------------
294
+
295
+ [data-theme="forest"] {
296
+ // Primary Colors - 翡翠綠
297
+ --color-primary: #43a047;
298
+ --color-primary-dark: #2e7d32;
299
+ --color-primary-light: #66bb6a;
300
+
301
+ // Gray Scale - 帶有暖綠調
302
+ --color-gray-50: #f5f7f4;
303
+ --color-gray-100: #ecf1ea;
304
+ --color-gray-200: #dce5d8;
305
+ --color-gray-300: #c5d4bf;
306
+ --color-gray-400: #9fb596;
307
+ --color-gray-500: #7a9670;
308
+ --color-gray-600: #5e7656;
309
+ --color-gray-700: #455940;
310
+ --color-gray-800: #2f3d2b;
311
+ --color-gray-900: #1a2318;
312
+
313
+ // Semantic Colors
314
+ --color-success: #4caf50;
315
+ --color-warning: #ff9800;
316
+ --color-error: #e53935;
317
+ --color-info: #03a9f4;
318
+
319
+ // Background & Surface - 米白帶綠
320
+ --color-background: #f8faf6;
321
+ --color-surface: #ffffff;
322
+ --color-surface-elevated: #ffffff;
323
+
324
+ // Text Colors
325
+ --color-text-primary: #1a2318;
326
+ --color-text-secondary: #5e7656;
327
+ --color-text-disabled: #c5d4bf;
328
+
329
+ // Border
330
+ --color-border: rgba(67, 160, 71, 0.2);
331
+ --color-divider: rgba(67, 160, 71, 0.15);
332
+
333
+ // Component Specific - Button
334
+ --color-button-primary-bg: #43a047;
335
+ --color-button-primary-hover: #2e7d32;
336
+ --color-button-primary-text: #ffffff;
337
+ --color-button-secondary-bg: #c8e6c9;
338
+ --color-button-secondary-hover: #a5d6a7;
339
+ --color-button-secondary-text: #1b5e20;
340
+ --color-button-secondary-border: #66bb6a;
341
+ --color-button-disabled-bg: #dce5d8;
342
+ --color-button-disabled-text: #9fb596;
343
+ --color-button-disabled-border: transparent;
344
+
345
+ // Component Specific - Chip
346
+ --color-chip-bg: #ecf1ea;
347
+ --color-chip-hover-bg: #43a047;
348
+ --color-chip-hover-text: #ffffff;
349
+
350
+ // Component Specific - Menu
351
+ --color-menu-hover-bg: rgba(67, 160, 71, 0.08);
352
+
353
+ // Component Specific - Select
354
+ --color-select-bg: #c8e6c9;
355
+ --color-select-hover-bg: #a5d6a7;
356
+ --color-select-text: #1b5e20;
357
+ --color-select-border: #66bb6a;
358
+
359
+ // Component Specific - Card (Forest Theme)
360
+ --color-card-bg: #f1f8e9;
361
+ --color-card-header-bg: #a5d6a7;
362
+ --color-card-icon: #1b5e20;
363
+ --color-card-border: #c8e6c9;
364
+ --color-card-add-bg: #f1f8e9;
365
+ --color-card-add-text: #66bb6a;
366
+
367
+ // Component Specific - Table (Forest Theme)
368
+ --color-table-toolbar-bg: #2e7d32;
369
+ --color-table-header-bg: #c8e6c9;
370
+ --color-table-row-bg: #ffffff;
371
+ --color-table-row-striped-bg: #f1f8e9;
372
+ --color-table-row-updated-bg: #fff9c4;
373
+ --color-table-row-uploaded-bg: #dcedc8;
374
+
375
+ // Alpha Colors
376
+ --color-primary-alpha-8: rgba(67, 160, 71, 0.08);
377
+ --color-black-alpha-4: rgba(67, 160, 71, 0.04);
378
+ --color-black-alpha-8: rgba(67, 160, 71, 0.08);
379
+
380
+ // Scrollbar
381
+ --scrollbar-track: #ecf1ea;
382
+ --scrollbar-thumb: #9fb596;
383
+ --scrollbar-thumb-hover: #43a047;
384
+ }
385
+
386
+ // -----------------------------------------------------------------------------
387
+ // 🌅 Sunset Theme (日落 - 溫暖橘紅)
388
+ // -----------------------------------------------------------------------------
389
+
390
+ [data-theme="sunset"] {
391
+ // Primary Colors - 溫暖橘紅
392
+ --color-primary: #ff7043;
393
+ --color-primary-dark: #e64a19;
394
+ --color-primary-light: #ff8a65;
395
+
396
+ // Gray Scale - 帶有暖色調
397
+ --color-gray-50: #fdf7f5;
398
+ --color-gray-100: #fbeee9;
399
+ --color-gray-200: #f5ddd4;
400
+ --color-gray-300: #e8c7bb;
401
+ --color-gray-400: #d4a696;
402
+ --color-gray-500: #b88574;
403
+ --color-gray-600: #96685a;
404
+ --color-gray-700: #724e43;
405
+ --color-gray-800: #4d342e;
406
+ --color-gray-900: #2c1e1a;
407
+
408
+ // Semantic Colors
409
+ --color-success: #66bb6a;
410
+ --color-warning: #ffc107;
411
+ --color-error: #f44336;
412
+ --color-info: #42a5f5;
413
+
414
+ // Background & Surface - 暖白背景
415
+ --color-background: #fefbf9;
416
+ --color-surface: #ffffff;
417
+ --color-surface-elevated: #ffffff;
418
+
419
+ // Text Colors
420
+ --color-text-primary: #2c1e1a;
421
+ --color-text-secondary: #96685a;
422
+ --color-text-disabled: #e8c7bb;
423
+
424
+ // Border
425
+ --color-border: rgba(255, 112, 67, 0.2);
426
+ --color-divider: rgba(255, 112, 67, 0.15);
427
+
428
+ // Component Specific - Button
429
+ --color-button-primary-bg: #ff7043;
430
+ --color-button-primary-hover: #e64a19;
431
+ --color-button-primary-text: #ffffff;
432
+ --color-button-secondary-bg: #ffe0b2;
433
+ --color-button-secondary-hover: #ffcc80;
434
+ --color-button-secondary-text: #bf360c;
435
+ --color-button-secondary-border: #ff8a65;
436
+ --color-button-disabled-bg: #f5ddd4;
437
+ --color-button-disabled-text: #d4a696;
438
+ --color-button-disabled-border: transparent;
439
+
440
+ // Component Specific - Chip
441
+ --color-chip-bg: #fbeee9;
442
+ --color-chip-hover-bg: #ff7043;
443
+ --color-chip-hover-text: #ffffff;
444
+
445
+ // Component Specific - Menu
446
+ --color-menu-hover-bg: rgba(255, 112, 67, 0.08);
447
+
448
+ // Component Specific - Select
449
+ --color-select-bg: #ffe0b2;
450
+ --color-select-hover-bg: #ffcc80;
451
+ --color-select-text: #bf360c;
452
+ --color-select-border: #ff8a65;
453
+
454
+ // Component Specific - Card (Sunset Theme)
455
+ --color-card-bg: #fff3e0;
456
+ --color-card-header-bg: #ffcc80;
457
+ --color-card-icon: #bf360c;
458
+ --color-card-border: #ffe0b2;
459
+ --color-card-add-bg: #fff3e0;
460
+ --color-card-add-text: #ff8a65;
461
+
462
+ // Component Specific - Table (Sunset Theme)
463
+ --color-table-toolbar-bg: #e64a19;
464
+ --color-table-header-bg: #ffe0b2;
465
+ --color-table-row-bg: #ffffff;
466
+ --color-table-row-striped-bg: #fff3e0;
467
+ --color-table-row-updated-bg: #fff9c4;
468
+ --color-table-row-uploaded-bg: #ffccbc;
469
+
470
+ // Alpha Colors
471
+ --color-primary-alpha-8: rgba(255, 112, 67, 0.08);
472
+ --color-black-alpha-4: rgba(255, 112, 67, 0.04);
473
+ --color-black-alpha-8: rgba(255, 112, 67, 0.08);
474
+
475
+ // Scrollbar
476
+ --scrollbar-track: #fbeee9;
477
+ --scrollbar-thumb: #d4a696;
478
+ --scrollbar-thumb-hover: #ff7043;
479
+ }
480
+
481
+ // -----------------------------------------------------------------------------
482
+ // 系統偏好自動切換 (prefers-color-scheme)
483
+ // 只在沒有明確設定主題時生效
484
+ // -----------------------------------------------------------------------------
485
+
486
+ @media (prefers-color-scheme: dark) {
487
+ :root:not([data-theme]) {
488
+ // Primary Colors
489
+ --color-primary: #90caf9;
490
+ --color-primary-dark: #42a5f5;
491
+ --color-primary-light: #bbdefb;
492
+
493
+ // Gray Scale
494
+ --color-gray-50: #212121;
495
+ --color-gray-100: #303030;
496
+ --color-gray-200: #424242;
497
+ --color-gray-300: #616161;
498
+ --color-gray-400: #757575;
499
+ --color-gray-500: #9e9e9e;
500
+ --color-gray-600: #bdbdbd;
501
+ --color-gray-700: #e0e0e0;
502
+ --color-gray-800: #eeeeee;
503
+ --color-gray-900: #fafafa;
504
+
505
+ // Semantic Colors
506
+ --color-success: #66bb6a;
507
+ --color-warning: #ffa726;
508
+ --color-error: #f44336;
509
+ --color-info: #29b6f6;
510
+
511
+ // Background & Surface
512
+ --color-background: #121212;
513
+ --color-surface: #1e1e1e;
514
+ --color-surface-elevated: #2d2d2d;
515
+
516
+ // Text Colors
517
+ --color-text-primary: rgba(255, 255, 255, 0.87);
518
+ --color-text-secondary: rgba(255, 255, 255, 0.6);
519
+ --color-text-disabled: rgba(255, 255, 255, 0.38);
520
+
521
+ // Border
522
+ --color-border: rgba(255, 255, 255, 0.12);
523
+ --color-divider: rgba(255, 255, 255, 0.12);
524
+
525
+ // Component Specific
526
+ --color-button-primary-bg: #90caf9;
527
+ --color-button-primary-hover: #42a5f5;
528
+ --color-button-primary-text: #000000;
529
+ --color-button-disabled-bg: rgba(255, 255, 255, 0.12);
530
+ --color-button-disabled-text: rgba(255, 255, 255, 0.3);
531
+ --color-button-disabled-border: transparent;
532
+
533
+ --color-chip-bg: #424242;
534
+ --color-chip-hover-bg: #90caf9;
535
+ --color-chip-hover-text: #000000;
536
+
537
+ --color-menu-hover-bg: rgba(255, 255, 255, 0.08);
538
+
539
+ --color-primary-alpha-8: rgba(144, 202, 249, 0.08);
540
+ --color-black-alpha-4: rgba(255, 255, 255, 0.04);
541
+ --color-black-alpha-8: rgba(255, 255, 255, 0.08);
542
+
543
+ --scrollbar-track: #2d2d2d;
544
+ --scrollbar-thumb: #555555;
545
+ --scrollbar-thumb-hover: #888888;
546
+ }
547
+ }
548
+
549
+ // -----------------------------------------------------------------------------
550
+ // 主題過渡動畫
551
+ // -----------------------------------------------------------------------------
552
+
553
+ :root {
554
+ --theme-transition: background-color .3s ease, color 0.3s ease, border-color 0.3s ease;
555
+ }
556
+
557
+ body {
558
+ background-color: var(--color-background);
559
+ color: var(--color-text-primary);
560
+ transition: var(--theme-transition);
561
+ }