flowcloudai-ui 0.0.0 → 0.1.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.
package/dist/index.css ADDED
@@ -0,0 +1,2522 @@
1
+ /* src/components/Button/Button.css */
2
+ .fc-btn {
3
+ --btn-bg: transparent;
4
+ --btn-bg-hover: var(--fc-color-bg-secondary, #f3f4f6);
5
+ --btn-bg-active: var(--fc-color-bg-tertiary, #e5e7eb);
6
+ --btn-color: var(--fc-color-text, #111827);
7
+ --btn-color-active: var(--fc-color-text-secondary, #6b7280);
8
+ --btn-border: transparent;
9
+ --btn-border-hover: transparent;
10
+ display: inline-flex;
11
+ align-items: center;
12
+ justify-content: center;
13
+ gap: var(--fc-space-sm, 8px);
14
+ padding: var(--fc-space-md, 12px) var(--fc-space-lg, 16px);
15
+ font-family: var(--fc-font-family, system-ui), serif;
16
+ font-size: var(--fc-font-size-md, 16px);
17
+ font-weight: var(--fc-font-weight-medium, 500);
18
+ line-height: var(--fc-line-height-tight, 1.25);
19
+ border-radius: var(--fc-radius-md, 8px);
20
+ border: 1px solid var(--btn-border);
21
+ cursor: pointer;
22
+ text-decoration: none;
23
+ white-space: nowrap;
24
+ user-select: none;
25
+ background-color: var(--btn-bg);
26
+ color: var(--btn-color);
27
+ transition: all 0.2s ease;
28
+ }
29
+ .fc-btn:hover:not(:disabled):not(.is-disabled) {
30
+ background-color: var(--btn-bg-hover);
31
+ border-color: var(--btn-border-hover);
32
+ }
33
+ .fc-btn:active:not(:disabled):not(.is-disabled) {
34
+ background-color: var(--btn-bg-active);
35
+ color: var(--btn-color-active);
36
+ transform: scale(0.98);
37
+ }
38
+ .fc-btn:disabled,
39
+ .fc-btn.is-disabled {
40
+ opacity: 0.5;
41
+ cursor: not-allowed;
42
+ pointer-events: none;
43
+ }
44
+ .fc-btn--primary {
45
+ --btn-bg: var(--fc-color-primary, #6366f1);
46
+ --btn-bg-hover: var(--fc-color-primary-hover, #4f46e5);
47
+ --btn-bg-active: var(--fc-color-primary-active, #4338ca);
48
+ --btn-color: var(--fc-color-text-on-primary, #ffffff);
49
+ --btn-color-active: var(--fc-color-text-on-primary, #ffffff);
50
+ --btn-border: var(--fc-color-primary, #6366f1);
51
+ --btn-border-hover: var(--fc-color-primary-hover, #4f46e5);
52
+ }
53
+ .fc-btn--secondary {
54
+ --btn-bg: var(--fc-color-bg-secondary, #f3f4f6);
55
+ --btn-bg-hover: var(--fc-color-bg-tertiary, #e5e7eb);
56
+ --btn-bg-active: var(--fc-color-bg-tertiary, #e5e7eb);
57
+ --btn-color: var(--fc-color-text, #111827);
58
+ --btn-color-active: var(--fc-color-text-secondary, #6b7280);
59
+ --btn-border: var(--fc-color-border, #e5e7eb);
60
+ --btn-border-hover: var(--fc-color-border-hover, #d1d5db);
61
+ }
62
+ .fc-btn--outline {
63
+ --btn-bg: transparent;
64
+ --btn-bg-hover: var(--fc-color-primary-subtle, #eff6ff);
65
+ --btn-bg-active: var(--fc-color-primary-subtle, #eff6ff);
66
+ --btn-color: var(--fc-color-primary, #6366f1);
67
+ --btn-color-active: var(--fc-color-primary-hover, #4f46e5);
68
+ --btn-border: var(--fc-color-primary, #6366f1);
69
+ --btn-border-hover: var(--fc-color-primary-hover, #4f46e5);
70
+ }
71
+ .fc-btn--ghost {
72
+ --btn-bg: transparent;
73
+ --btn-bg-hover: var(--fc-color-bg-secondary, #f3f4f6);
74
+ --btn-bg-active: var(--fc-color-bg-tertiary, #e5e7eb);
75
+ --btn-color: var(--fc-color-text, #111827);
76
+ --btn-color-active: var(--fc-color-text-secondary, #6b7280);
77
+ --btn-border: transparent;
78
+ --btn-border-hover: transparent;
79
+ }
80
+ .fc-btn--danger {
81
+ --btn-bg: var(--fc-color-danger, #ef4444);
82
+ --btn-bg-hover: var(--fc-color-danger-hover, #dc2626);
83
+ --btn-bg-active: var(--fc-color-danger-hover, #dc2626);
84
+ --btn-color: var(--fc-color-text-on-primary, #ffffff);
85
+ --btn-color-active: var(--fc-color-text-on-primary, #ffffff);
86
+ --btn-border: var(--fc-color-danger, #ef4444);
87
+ --btn-border-hover: var(--fc-color-danger-hover, #dc2626);
88
+ }
89
+ .fc-btn--danger.fc-btn--outline,
90
+ .fc-btn--danger.fc-btn--ghost {
91
+ --btn-bg: transparent;
92
+ --btn-bg-hover: var(--fc-color-danger-bg, #fee2e2);
93
+ --btn-bg-active: var(--fc-color-danger-bg, #fee2e2);
94
+ --btn-color: var(--fc-color-danger, #ef4444);
95
+ --btn-color-active: var(--fc-color-danger, #ef4444);
96
+ --btn-border: var(--fc-color-danger, #ef4444);
97
+ --btn-border-hover: var(--fc-color-danger, #ef4444);
98
+ }
99
+ .fc-btn--danger.fc-btn--ghost {
100
+ --btn-border: transparent;
101
+ }
102
+ .fc-btn--success {
103
+ --btn-bg: var(--fc-color-success, #10b981);
104
+ --btn-bg-hover: var(--fc-color-success-hover, #059669);
105
+ --btn-bg-active: var(--fc-color-success-hover, #059669);
106
+ --btn-color: var(--fc-color-text-on-primary, #ffffff);
107
+ --btn-color-active: var(--fc-color-text-on-primary, #ffffff);
108
+ --btn-border: var(--fc-color-success, #10b981);
109
+ --btn-border-hover: var(--fc-color-success-hover, #059669);
110
+ }
111
+ .fc-btn--success.fc-btn--outline {
112
+ --btn-bg: transparent;
113
+ --btn-bg-hover: var(--fc-color-success-bg, #d1fae5);
114
+ --btn-bg-active: var(--fc-color-success-bg, #d1fae5);
115
+ --btn-color: var(--fc-color-success, #10b981);
116
+ --btn-color-active: var(--fc-color-success, #10b981);
117
+ --btn-border: var(--fc-color-success, #10b981);
118
+ --btn-border-hover: var(--fc-color-success, #10b981);
119
+ }
120
+ .fc-btn--warning {
121
+ --btn-bg: var(--fc-color-warning, #f59e0b);
122
+ --btn-bg-hover: var(--fc-color-warning-hover, #d97706);
123
+ --btn-bg-active: var(--fc-color-warning-hover, #d97706);
124
+ --btn-color: var(--fc-color-text-on-primary, #ffffff);
125
+ --btn-color-active: var(--fc-color-text-on-primary, #ffffff);
126
+ --btn-border: var(--fc-color-warning, #f59e0b);
127
+ --btn-border-hover: var(--fc-color-warning-hover, #d97706);
128
+ }
129
+ .fc-btn--warning.fc-btn--outline {
130
+ --btn-bg: transparent;
131
+ --btn-bg-hover: var(--fc-color-warning-bg, #fef3c7);
132
+ --btn-bg-active: var(--fc-color-warning-bg, #fef3c7);
133
+ --btn-color: var(--fc-color-warning, #f59e0b);
134
+ --btn-color-active: var(--fc-color-warning, #f59e0b);
135
+ --btn-border: var(--fc-color-warning, #f59e0b);
136
+ --btn-border-hover: var(--fc-color-warning, #f59e0b);
137
+ }
138
+ .fc-btn--xs {
139
+ padding: var(--fc-space-xs, 4px) var(--fc-space-sm, 8px);
140
+ font-size: var(--fc-font-size-xs, 12px);
141
+ border-radius: var(--fc-radius-sm, 4px);
142
+ }
143
+ .fc-btn--sm {
144
+ padding: var(--fc-space-sm, 8px) var(--fc-space-md, 12px);
145
+ font-size: var(--fc-font-size-sm, 14px);
146
+ border-radius: var(--fc-radius-sm, 4px);
147
+ }
148
+ .fc-btn--md {
149
+ padding: var(--fc-space-md, 12px) var(--fc-space-lg, 16px);
150
+ font-size: var(--fc-font-size-md, 16px);
151
+ border-radius: var(--fc-radius-md, 8px);
152
+ }
153
+ .fc-btn--lg {
154
+ padding: var(--fc-space-lg, 16px) var(--fc-space-xl, 20px);
155
+ font-size: var(--fc-font-size-lg, 18px);
156
+ border-radius: var(--fc-radius-lg, 12px);
157
+ }
158
+ .fc-btn--xl {
159
+ padding: var(--fc-space-xl, 20px) var(--fc-space-2xl, 24px);
160
+ font-size: var(--fc-font-size-xl, 20px);
161
+ border-radius: var(--fc-radius-lg, 12px);
162
+ }
163
+ .fc-btn--square,
164
+ .fc-btn--circle,
165
+ .fc-btn--icon-only {
166
+ aspect-ratio: 1;
167
+ padding: var(--fc-space-md, 12px);
168
+ }
169
+ .fc-btn--circle {
170
+ border-radius: var(--fc-radius-full, 9999px);
171
+ }
172
+ .fc-btn--block {
173
+ display: flex;
174
+ width: 100%;
175
+ }
176
+ .fc-btn--icon-only.fc-btn--xs {
177
+ padding: var(--fc-space-xs, 4px);
178
+ }
179
+ .fc-btn--icon-only.fc-btn--sm {
180
+ padding: var(--fc-space-sm, 8px);
181
+ }
182
+ .fc-btn--icon-only.fc-btn--md {
183
+ padding: var(--fc-space-md, 12px);
184
+ }
185
+ .fc-btn--icon-only.fc-btn--lg {
186
+ padding: var(--fc-space-lg, 16px);
187
+ }
188
+ .fc-btn--icon-only.fc-btn--xl {
189
+ padding: var(--fc-space-xl, 20px);
190
+ }
191
+ .fc-btn__icon {
192
+ display: inline-flex;
193
+ align-items: center;
194
+ justify-content: center;
195
+ width: 1em;
196
+ height: 1em;
197
+ flex-shrink: 0;
198
+ }
199
+ .fc-btn-group {
200
+ display: inline-flex;
201
+ }
202
+ .fc-btn-group .fc-btn {
203
+ border-radius: 0;
204
+ }
205
+ .fc-btn-group .fc-btn:first-child {
206
+ border-radius: var(--fc-radius-md, 8px) 0 0 var(--fc-radius-md, 8px);
207
+ }
208
+ .fc-btn-group .fc-btn:last-child {
209
+ border-radius: 0 var(--fc-radius-md, 8px) var(--fc-radius-md, 8px) 0;
210
+ }
211
+ .fc-btn-group .fc-btn:not(:last-child) {
212
+ border-right-width: 0;
213
+ }
214
+ .fc-btn-group .fc-btn:hover {
215
+ z-index: 1;
216
+ }
217
+ .fc-btn-toolbar {
218
+ display: flex;
219
+ flex-wrap: wrap;
220
+ gap: var(--fc-space-sm, 8px);
221
+ align-items: center;
222
+ }
223
+ .fc-btn-toolbar--right {
224
+ justify-content: flex-end;
225
+ }
226
+ .fc-btn-toolbar--center {
227
+ justify-content: center;
228
+ }
229
+ .fc-btn-toolbar--between {
230
+ justify-content: space-between;
231
+ }
232
+
233
+ /* src/components/Button/CheckButton.css */
234
+ .fc-check {
235
+ --track-w: 2.75rem;
236
+ --track-h: 1.5rem;
237
+ --label-size: var(--fc-font-size-md);
238
+ display: inline-flex;
239
+ align-items: center;
240
+ gap: var(--fc-space-sm);
241
+ cursor: pointer;
242
+ user-select: none;
243
+ outline: none;
244
+ }
245
+ .fc-check--sm {
246
+ --track-w: 2.25rem;
247
+ --track-h: 1.25rem;
248
+ --label-size: var(--fc-font-size-sm);
249
+ }
250
+ .fc-check--lg {
251
+ --track-w: 3.5rem;
252
+ --track-h: 1.875rem;
253
+ --label-size: var(--fc-font-size-lg);
254
+ }
255
+ .fc-check__track {
256
+ position: relative;
257
+ flex-shrink: 0;
258
+ width: var(--track-w);
259
+ height: var(--track-h);
260
+ background-color: var(--fc-color-bg-tertiary);
261
+ border-radius: var(--fc-radius-full);
262
+ transition: background-color var(--fc-transition);
263
+ }
264
+ .fc-check--checked .fc-check__track {
265
+ background-color: var(--fc-color-primary);
266
+ }
267
+ .fc-check:focus-visible .fc-check__track {
268
+ box-shadow: 0 0 0 2px var(--fc-color-bg), 0 0 0 4px var(--fc-color-border-focus);
269
+ }
270
+ .fc-check__thumb {
271
+ position: absolute;
272
+ top: 2px;
273
+ left: 2px;
274
+ width: calc(var(--track-h) - 4px);
275
+ height: calc(var(--track-h) - 4px);
276
+ display: flex;
277
+ align-items: center;
278
+ justify-content: center;
279
+ background-color: var(--fc-color-bg-elevated);
280
+ border-radius: var(--fc-radius-full);
281
+ box-shadow: var(--fc-shadow-sm);
282
+ transition: transform var(--fc-transition-slow) cubic-bezier(0.34, 1.56, 0.64, 1);
283
+ }
284
+ .fc-check--checked .fc-check__thumb {
285
+ transform: translateX(calc(var(--track-w) - var(--track-h)));
286
+ }
287
+ .fc-check__track:active .fc-check__thumb {
288
+ transform: scale(0.95);
289
+ }
290
+ .fc-check--checked .fc-check__track:active .fc-check__thumb {
291
+ transform: translateX(calc(var(--track-w) - var(--track-h))) scale(0.95);
292
+ }
293
+ .fc-check__thumb-inner {
294
+ width: 40%;
295
+ height: 40%;
296
+ background-color: var(--fc-color-text-tertiary);
297
+ border-radius: var(--fc-radius-full);
298
+ opacity: 0;
299
+ transform: scale(0);
300
+ transition:
301
+ opacity var(--fc-transition),
302
+ transform var(--fc-transition),
303
+ background-color var(--fc-transition);
304
+ }
305
+ .fc-check--checked .fc-check__thumb-inner {
306
+ opacity: 1;
307
+ transform: scale(1);
308
+ background-color: var(--fc-color-primary);
309
+ }
310
+ .fc-check__label {
311
+ font-size: var(--label-size);
312
+ font-weight: var(--fc-font-weight-medium);
313
+ line-height: var(--fc-line-height-tight);
314
+ color: var(--fc-color-text);
315
+ }
316
+ .fc-check--disabled {
317
+ cursor: not-allowed;
318
+ opacity: 0.6;
319
+ }
320
+ .fc-check--disabled .fc-check__track {
321
+ cursor: not-allowed;
322
+ background-color: var(--fc-color-bg-secondary);
323
+ }
324
+ .fc-check--disabled.fc-check--checked .fc-check__track {
325
+ background-color: var(--fc-color-primary);
326
+ opacity: 0.5;
327
+ }
328
+ .fc-check--disabled .fc-check__label {
329
+ color: var(--fc-color-text-disabled);
330
+ }
331
+
332
+ /* src/components/Box/RollingBox.css */
333
+ .fc-roll {
334
+ --roll-thumb: transparent;
335
+ --roll-thumb-hover: var(--fc-color-text-tertiary);
336
+ --roll-thumb-active: var(--fc-color-text-secondary);
337
+ --roll-track: transparent;
338
+ --roll-size: 10px;
339
+ position: relative;
340
+ width: 100%;
341
+ height: 100%;
342
+ scrollbar-width: thin;
343
+ scrollbar-color: var(--roll-thumb) var(--roll-track);
344
+ -webkit-overflow-scrolling: touch;
345
+ }
346
+ .fc-roll__content {
347
+ min-width: 100%;
348
+ min-height: 100%;
349
+ }
350
+ .fc-roll--vertical {
351
+ overflow-y: auto;
352
+ overflow-x: hidden;
353
+ }
354
+ .fc-roll--horizontal {
355
+ overflow-x: auto;
356
+ overflow-y: hidden;
357
+ }
358
+ .fc-roll--horizontal .fc-roll__content {
359
+ display: inline-block;
360
+ min-width: max-content;
361
+ }
362
+ .fc-roll--size-thin {
363
+ --roll-size: 0.5rem;
364
+ }
365
+ .fc-roll--size-thick {
366
+ --roll-size: 0.6rem;
367
+ }
368
+ .fc-roll::-webkit-scrollbar {
369
+ width: var(--roll-size);
370
+ height: var(--roll-size);
371
+ background: transparent;
372
+ }
373
+ .fc-roll::-webkit-scrollbar-track {
374
+ background: var(--roll-track);
375
+ border-radius: var(--fc-radius-full);
376
+ }
377
+ .fc-roll::-webkit-scrollbar-thumb {
378
+ background: var(--roll-thumb);
379
+ border-radius: var(--fc-radius-full);
380
+ border: 2px solid transparent;
381
+ background-clip: padding-box;
382
+ }
383
+ .fc-roll--thumb-show {
384
+ --roll-thumb: var(--fc-color-text-tertiary);
385
+ }
386
+ .fc-roll--thumb-show:hover {
387
+ --roll-thumb: var(--fc-color-text-secondary);
388
+ }
389
+ .fc-roll--thumb-hide {
390
+ scrollbar-width: none;
391
+ -ms-overflow-style: none;
392
+ }
393
+ .fc-roll--thumb-hide::-webkit-scrollbar {
394
+ display: none;
395
+ }
396
+ .fc-roll--thumb-auto:hover {
397
+ --roll-thumb: var(--roll-thumb-hover);
398
+ }
399
+ .fc-roll--thumb-auto.fc-roll--scrolling {
400
+ --roll-thumb: var(--roll-thumb-active);
401
+ }
402
+ .fc-roll--track {
403
+ --roll-track: var(--fc-color-bg-tertiary);
404
+ }
405
+ .fc-roll--track.fc-roll--thumb-auto {
406
+ --roll-track: transparent;
407
+ }
408
+ .fc-roll--track.fc-roll--thumb-auto:hover,
409
+ .fc-roll--track.fc-roll--thumb-auto.fc-roll--scrolling {
410
+ --roll-track: var(--fc-color-bg-tertiary);
411
+ }
412
+
413
+ /* src/components/Bar/SideBar.css */
414
+ .fc-sidebar {
415
+ --sidebar-width: 240px;
416
+ --sidebar-collapsed-width: 64px;
417
+ --sidebar-item-bg: transparent;
418
+ --sidebar-item-color: var(--fc-color-text-secondary);
419
+ --sidebar-item-indent: 0px;
420
+ display: flex;
421
+ flex-direction: column;
422
+ width: var(--sidebar-width);
423
+ height: 100vh;
424
+ background: var(--fc-color-bg-secondary);
425
+ border-right: 1px solid var(--fc-color-border);
426
+ overflow: hidden;
427
+ transition: width var(--fc-transition-slow);
428
+ }
429
+ .fc-sidebar__header {
430
+ display: flex;
431
+ justify-content: flex-end;
432
+ padding: var(--fc-space-md);
433
+ border-bottom: 1px solid var(--fc-color-border);
434
+ }
435
+ .fc-sidebar__collapse-btn {
436
+ width: 32px;
437
+ height: 32px;
438
+ display: flex;
439
+ align-items: center;
440
+ justify-content: center;
441
+ border: none;
442
+ background: transparent;
443
+ color: var(--fc-color-text-secondary);
444
+ cursor: pointer;
445
+ border-radius: var(--fc-radius-md);
446
+ transition: background var(--fc-transition), color var(--fc-transition);
447
+ }
448
+ .fc-sidebar__collapse-btn:hover {
449
+ background: var(--fc-color-bg-tertiary);
450
+ color: var(--fc-color-text);
451
+ }
452
+ .fc-sidebar__collapse-btn:focus-visible {
453
+ outline: 2px solid var(--fc-color-primary);
454
+ outline-offset: -2px;
455
+ }
456
+ .fc-sidebar__menu {
457
+ flex: 1;
458
+ overflow-y: auto;
459
+ padding: var(--fc-space-sm) 0;
460
+ }
461
+ .fc-sidebar__item {
462
+ --sidebar-item-bg: transparent;
463
+ --sidebar-item-color: var(--fc-color-text-secondary);
464
+ display: flex;
465
+ align-items: center;
466
+ gap: var(--fc-space-md);
467
+ padding: var(--fc-space-md) var(--fc-space-lg);
468
+ padding-left: calc(var(--fc-space-lg) + var(--sidebar-item-indent));
469
+ margin: 0 var(--fc-space-sm);
470
+ border-radius: var(--fc-radius-md);
471
+ cursor: pointer;
472
+ background: var(--sidebar-item-bg);
473
+ color: var(--sidebar-item-color);
474
+ position: relative;
475
+ overflow: hidden;
476
+ text-overflow: ellipsis;
477
+ white-space: nowrap;
478
+ border: none;
479
+ width: calc(100% - var(--fc-space-sm) * 2);
480
+ font: inherit;
481
+ text-align: start;
482
+ text-decoration: none;
483
+ transition: background var(--fc-transition), color var(--fc-transition);
484
+ }
485
+ .fc-sidebar__item:hover:not(.fc-sidebar__item--disabled) {
486
+ --sidebar-item-bg: var(--fc-color-bg-tertiary);
487
+ --sidebar-item-color: var(--fc-color-text);
488
+ }
489
+ .fc-sidebar__item:focus-visible {
490
+ outline: 2px solid var(--fc-color-primary);
491
+ outline-offset: -2px;
492
+ }
493
+ .fc-sidebar__item--selected {
494
+ --sidebar-item-bg: var(--fc-color-primary-subtle);
495
+ --sidebar-item-color: var(--fc-color-primary);
496
+ }
497
+ .fc-sidebar__item--selected::before {
498
+ content: "";
499
+ position: absolute;
500
+ left: 0;
501
+ top: 50%;
502
+ transform: translateY(-50%);
503
+ width: 3px;
504
+ height: 20px;
505
+ background: var(--fc-color-primary);
506
+ border-radius: 0 var(--fc-radius-sm) var(--fc-radius-sm) 0;
507
+ }
508
+ .fc-sidebar__item--disabled {
509
+ opacity: 0.5;
510
+ cursor: not-allowed;
511
+ pointer-events: none;
512
+ }
513
+ .fc-sidebar__item--level-1 {
514
+ --sidebar-item-indent: 28px;
515
+ }
516
+ .fc-sidebar__item--level-2 {
517
+ --sidebar-item-indent: 56px;
518
+ }
519
+ .fc-sidebar__icon {
520
+ display: flex;
521
+ align-items: center;
522
+ justify-content: center;
523
+ width: 20px;
524
+ height: 20px;
525
+ flex-shrink: 0;
526
+ font-size: var(--fc-font-size-lg);
527
+ }
528
+ .fc-sidebar__label {
529
+ flex: 1;
530
+ font-size: var(--fc-font-size-md);
531
+ overflow: hidden;
532
+ text-overflow: ellipsis;
533
+ }
534
+ .fc-sidebar__arrow {
535
+ font-size: 10px;
536
+ flex-shrink: 0;
537
+ transition: transform var(--fc-transition);
538
+ }
539
+ .fc-sidebar__item--open > .fc-sidebar__arrow {
540
+ transform: rotate(90deg);
541
+ }
542
+ .fc-sidebar__submenu {
543
+ display: grid;
544
+ grid-template-rows: 0fr;
545
+ transition: grid-template-rows var(--fc-transition-slow);
546
+ }
547
+ .fc-sidebar__submenu--open {
548
+ grid-template-rows: 1fr;
549
+ }
550
+ .fc-sidebar__submenu-inner {
551
+ overflow: hidden;
552
+ }
553
+ .fc-sidebar--collapsed {
554
+ --sidebar-width: var(--sidebar-collapsed-width);
555
+ }
556
+ .fc-sidebar--collapsed .fc-sidebar__label,
557
+ .fc-sidebar--collapsed .fc-sidebar__arrow {
558
+ display: none;
559
+ }
560
+ .fc-sidebar--collapsed .fc-sidebar__item {
561
+ justify-content: center;
562
+ padding: var(--fc-space-md);
563
+ }
564
+ .fc-sidebar--collapsed .fc-sidebar__submenu {
565
+ display: none;
566
+ }
567
+
568
+ /* src/components/Input/Input.css */
569
+ .fc-input {
570
+ position: relative;
571
+ display: inline-flex;
572
+ align-items: center;
573
+ width: 100%;
574
+ font-family: var(--fc-font-family), serif;
575
+ }
576
+ .fc-input__wrapper {
577
+ position: relative;
578
+ display: flex;
579
+ align-items: center;
580
+ flex: 1;
581
+ background: var(--fc-color-bg);
582
+ border: 1px solid var(--fc-color-border);
583
+ border-radius: var(--fc-radius-md);
584
+ transition: border-color var(--fc-transition), box-shadow var(--fc-transition);
585
+ }
586
+ .fc-input__field {
587
+ width: 100%;
588
+ padding: 0 var(--fc-space-md);
589
+ border: none;
590
+ background: transparent;
591
+ color: var(--fc-color-text);
592
+ font-size: var(--fc-font-size-md);
593
+ line-height: var(--fc-line-height-tight);
594
+ outline: none;
595
+ }
596
+ .fc-input__field::placeholder {
597
+ color: var(--fc-color-text-tertiary);
598
+ }
599
+ .fc-input--xs .fc-input__wrapper {
600
+ height: 1.75rem;
601
+ }
602
+ .fc-input--xs .fc-input__field {
603
+ font-size: var(--fc-font-size-xs);
604
+ padding: 0 var(--fc-space-sm);
605
+ }
606
+ .fc-input--sm .fc-input__wrapper {
607
+ height: 2rem;
608
+ }
609
+ .fc-input--sm .fc-input__field {
610
+ font-size: var(--fc-font-size-sm);
611
+ }
612
+ .fc-input--md .fc-input__wrapper {
613
+ height: 2.5rem;
614
+ }
615
+ .fc-input--lg .fc-input__wrapper {
616
+ height: 3rem;
617
+ }
618
+ .fc-input--lg .fc-input__field {
619
+ font-size: var(--fc-font-size-lg);
620
+ }
621
+ .fc-input--xl .fc-input__wrapper {
622
+ height: 3.5rem;
623
+ }
624
+ .fc-input--xl .fc-input__field {
625
+ font-size: var(--fc-font-size-xl);
626
+ }
627
+ .fc-input--error .fc-input__wrapper {
628
+ border-color: var(--fc-color-danger);
629
+ background: var(--fc-color-danger-bg);
630
+ }
631
+ .fc-input--warning .fc-input__wrapper {
632
+ border-color: var(--fc-color-warning);
633
+ background: var(--fc-color-warning-bg);
634
+ }
635
+ .fc-input--success .fc-input__wrapper {
636
+ border-color: var(--fc-color-success);
637
+ background: var(--fc-color-success-bg);
638
+ }
639
+ .fc-input:not(.fc-input--disabled):hover .fc-input__wrapper {
640
+ border-color: var(--fc-color-border-hover);
641
+ }
642
+ .fc-input:not(.fc-input--disabled) .fc-input__field:focus ~ .fc-input__wrapper,
643
+ .fc-input__wrapper:focus-within {
644
+ border-color: var(--fc-color-border-focus);
645
+ box-shadow: 0 0 0 3px var(--fc-color-primary-subtle);
646
+ }
647
+ .fc-input__prefix,
648
+ .fc-input__suffix,
649
+ .fc-input__addon {
650
+ display: flex;
651
+ align-items: center;
652
+ color: var(--fc-color-text-secondary);
653
+ font-size: inherit;
654
+ white-space: nowrap;
655
+ }
656
+ .fc-input__prefix {
657
+ margin-left: var(--fc-space-md);
658
+ margin-right: var(--fc-space-sm);
659
+ }
660
+ .fc-input__suffix {
661
+ margin-right: var(--fc-space-md);
662
+ margin-left: var(--fc-space-sm);
663
+ }
664
+ .fc-input__actions {
665
+ display: flex;
666
+ align-items: center;
667
+ gap: var(--fc-space-xs);
668
+ margin-right: var(--fc-space-sm);
669
+ }
670
+ .fc-input__action {
671
+ display: flex;
672
+ align-items: center;
673
+ justify-content: center;
674
+ width: 1.25rem;
675
+ height: 1.25rem;
676
+ padding: 0;
677
+ border: none;
678
+ background: transparent;
679
+ color: var(--fc-color-text-tertiary);
680
+ cursor: pointer;
681
+ border-radius: var(--fc-radius-sm);
682
+ transition: color var(--fc-transition), background var(--fc-transition);
683
+ }
684
+ .fc-input__action:hover {
685
+ color: var(--fc-color-text);
686
+ background: var(--fc-color-bg-tertiary);
687
+ }
688
+ .fc-input__addon {
689
+ padding: 0 var(--fc-space-md);
690
+ background: var(--fc-color-bg-secondary);
691
+ border: 1px solid var(--fc-color-border);
692
+ height: 100%;
693
+ display: flex;
694
+ align-items: center;
695
+ }
696
+ .fc-input__addon--before {
697
+ border-radius: var(--fc-radius-md) 0 0 var(--fc-radius-md);
698
+ border-right: none;
699
+ }
700
+ .fc-input__addon--after {
701
+ border-radius: 0 var(--fc-radius-md) var(--fc-radius-md) 0;
702
+ border-left: none;
703
+ }
704
+ .fc-input--addon-before .fc-input__wrapper {
705
+ border-top-left-radius: 0;
706
+ border-bottom-left-radius: 0;
707
+ }
708
+ .fc-input--addon-after .fc-input__wrapper {
709
+ border-top-right-radius: 0;
710
+ border-bottom-right-radius: 0;
711
+ }
712
+ .fc-input__helper {
713
+ position: absolute;
714
+ top: 100%;
715
+ left: 0;
716
+ margin-top: var(--fc-space-xs);
717
+ font-size: var(--fc-font-size-xs);
718
+ color: var(--fc-color-text-secondary);
719
+ }
720
+ .fc-input__helper--error {
721
+ color: var(--fc-color-danger);
722
+ }
723
+ .fc-input__helper--warning {
724
+ color: var(--fc-color-warning);
725
+ }
726
+ .fc-input__helper--success {
727
+ color: var(--fc-color-success);
728
+ }
729
+ .fc-input--disabled {
730
+ opacity: 0.6;
731
+ cursor: not-allowed;
732
+ }
733
+ .fc-input--disabled .fc-input__field {
734
+ cursor: not-allowed;
735
+ }
736
+
737
+ /* src/components/Slider/Slider.css */
738
+ .fc-slider {
739
+ position: relative;
740
+ user-select: none;
741
+ touch-action: none;
742
+ }
743
+ .fc-slider--horizontal {
744
+ width: 100%;
745
+ height: 2rem;
746
+ padding: 0.5rem 0;
747
+ }
748
+ .fc-slider--vertical {
749
+ height: 200px;
750
+ width: 2rem;
751
+ padding: 0 0.5rem;
752
+ display: inline-flex;
753
+ }
754
+ .fc-slider__track {
755
+ position: relative;
756
+ background: var(--fc-color-bg-tertiary);
757
+ border-radius: var(--fc-radius-full);
758
+ cursor: pointer;
759
+ }
760
+ .fc-slider--horizontal .fc-slider__track {
761
+ width: 100%;
762
+ height: 4px;
763
+ }
764
+ .fc-slider--vertical .fc-slider__track {
765
+ height: 100%;
766
+ width: 4px;
767
+ }
768
+ .fc-slider__fill {
769
+ position: absolute;
770
+ background: var(--fc-color-primary);
771
+ border-radius: var(--fc-radius-full);
772
+ transition: all 0.1s;
773
+ }
774
+ .fc-slider--dragging .fc-slider__fill {
775
+ transition: none;
776
+ }
777
+ .fc-slider__thumb {
778
+ position: absolute;
779
+ width: 16px;
780
+ height: 16px;
781
+ background: var(--fc-color-bg-elevated);
782
+ border: 2px solid var(--fc-color-primary);
783
+ border-radius: var(--fc-radius-full);
784
+ transform: translate(-50%, -50%);
785
+ cursor: grab;
786
+ box-shadow: var(--fc-shadow-sm);
787
+ transition: transform var(--fc-transition), box-shadow var(--fc-transition);
788
+ }
789
+ .fc-slider--horizontal .fc-slider__thumb {
790
+ top: 50%;
791
+ }
792
+ .fc-slider--vertical .fc-slider__thumb {
793
+ left: 50%;
794
+ transform: translate(-50%, 50%);
795
+ }
796
+ .fc-slider__thumb:hover {
797
+ transform: translate(-50%, -50%) scale(1.2);
798
+ box-shadow: var(--fc-shadow-md);
799
+ }
800
+ .fc-slider--vertical .fc-slider__thumb:hover {
801
+ transform: translate(-50%, 50%) scale(1.2);
802
+ }
803
+ .fc-slider__thumb--active {
804
+ cursor: grabbing;
805
+ transform: translate(-50%, -50%) scale(1.2);
806
+ box-shadow: var(--fc-shadow-md);
807
+ }
808
+ .fc-slider--vertical .fc-slider__thumb--active {
809
+ transform: translate(-50%, 50%) scale(1.2);
810
+ }
811
+ .fc-slider__tooltip {
812
+ position: absolute;
813
+ bottom: 100%;
814
+ left: 50%;
815
+ transform: translateX(-50%) translateY(-8px);
816
+ padding: var(--fc-space-xs) var(--fc-space-sm);
817
+ background: var(--fc-color-bg-elevated);
818
+ color: var(--fc-color-text);
819
+ font-size: var(--fc-font-size-xs);
820
+ border-radius: var(--fc-radius-sm);
821
+ box-shadow: var(--fc-shadow-md);
822
+ white-space: nowrap;
823
+ opacity: 0;
824
+ visibility: hidden;
825
+ transition: opacity var(--fc-transition), visibility var(--fc-transition);
826
+ }
827
+ .fc-slider__thumb:hover .fc-slider__tooltip,
828
+ .fc-slider__thumb--active .fc-slider__tooltip {
829
+ opacity: 1;
830
+ visibility: visible;
831
+ }
832
+ .fc-slider--vertical .fc-slider__tooltip {
833
+ bottom: auto;
834
+ left: 100%;
835
+ top: 50%;
836
+ transform: translateY(-50%) translateX(8px);
837
+ }
838
+ .fc-slider__mark {
839
+ position: absolute;
840
+ transform: translate(-50%, -50%);
841
+ }
842
+ .fc-slider--vertical .fc-slider__mark {
843
+ transform: translate(50%, 50%);
844
+ }
845
+ .fc-slider__mark-dot {
846
+ width: 4px;
847
+ height: 4px;
848
+ background: var(--fc-color-text-tertiary);
849
+ border-radius: var(--fc-radius-full);
850
+ }
851
+ .fc-slider__mark-label {
852
+ position: absolute;
853
+ top: 12px;
854
+ left: 50%;
855
+ transform: translateX(-50%);
856
+ font-size: var(--fc-font-size-xs);
857
+ color: var(--fc-color-text-secondary);
858
+ white-space: nowrap;
859
+ }
860
+ .fc-slider--vertical .fc-slider__mark-label {
861
+ top: 50%;
862
+ left: 12px;
863
+ transform: translateY(-50%);
864
+ }
865
+ .fc-slider--disabled {
866
+ opacity: 0.5;
867
+ cursor: not-allowed;
868
+ }
869
+ .fc-slider--disabled .fc-slider__thumb {
870
+ cursor: not-allowed;
871
+ border-color: var(--fc-color-text-tertiary);
872
+ }
873
+ .fc-slider--disabled .fc-slider__fill {
874
+ background: var(--fc-color-text-tertiary);
875
+ }
876
+
877
+ /* src/components/Select/Select.css */
878
+ .fc-select {
879
+ position: relative;
880
+ display: inline-block;
881
+ width: 100%;
882
+ font-family: var(--fc-font-family), serif;
883
+ }
884
+ .fc-select__trigger {
885
+ display: flex;
886
+ align-items: center;
887
+ justify-content: space-between;
888
+ padding: var(--fc-space-md) var(--fc-space-lg);
889
+ background: var(--fc-color-bg);
890
+ border: 1px solid var(--fc-color-border);
891
+ border-radius: var(--fc-radius-md);
892
+ cursor: pointer;
893
+ transition: border-color var(--fc-transition), box-shadow var(--fc-transition);
894
+ }
895
+ .fc-select__trigger:hover {
896
+ border-color: var(--fc-color-border-hover);
897
+ }
898
+ .fc-select--open .fc-select__trigger {
899
+ border-color: var(--fc-color-border-focus);
900
+ box-shadow: 0 0 0 3px var(--fc-color-primary-subtle);
901
+ }
902
+ .fc-select__value {
903
+ color: var(--fc-color-text);
904
+ font-size: var(--fc-font-size-md);
905
+ }
906
+ .fc-select__value--placeholder {
907
+ color: var(--fc-color-text-tertiary);
908
+ }
909
+ .fc-select__arrow {
910
+ color: var(--fc-color-text-tertiary);
911
+ font-size: 0.75rem;
912
+ transition: transform var(--fc-transition);
913
+ }
914
+ .fc-select--open .fc-select__arrow {
915
+ transform: rotate(180deg);
916
+ }
917
+ .fc-select__dropdown {
918
+ position: absolute;
919
+ top: 100%;
920
+ left: 0;
921
+ right: 0;
922
+ margin-top: var(--fc-space-xs);
923
+ background: var(--fc-color-bg-elevated);
924
+ border: 1px solid var(--fc-color-border);
925
+ border-radius: var(--fc-radius-md);
926
+ box-shadow: var(--fc-shadow-lg);
927
+ z-index: var(--fc-z-dropdown);
928
+ overflow: hidden;
929
+ }
930
+ .fc-select__search {
931
+ padding: var(--fc-space-sm);
932
+ border-bottom: 1px solid var(--fc-color-border-light);
933
+ }
934
+ .fc-select__search-input {
935
+ width: 100%;
936
+ padding: var(--fc-space-sm) var(--fc-space-md);
937
+ border: 1px solid var(--fc-color-border);
938
+ border-radius: var(--fc-radius-sm);
939
+ font-size: var(--fc-font-size-sm);
940
+ outline: none;
941
+ }
942
+ .fc-select__search-input:focus {
943
+ border-color: var(--fc-color-border-focus);
944
+ }
945
+ .fc-select__list {
946
+ overflow-y: auto;
947
+ padding: var(--fc-space-xs) 0;
948
+ }
949
+ .fc-select__group-label {
950
+ padding: var(--fc-space-xs) var(--fc-space-lg);
951
+ font-size: var(--fc-font-size-xs);
952
+ font-weight: var(--fc-font-weight-bold);
953
+ color: var(--fc-color-text-tertiary);
954
+ text-transform: uppercase;
955
+ letter-spacing: 0.05em;
956
+ }
957
+ .fc-select__option {
958
+ display: flex;
959
+ align-items: center;
960
+ gap: var(--fc-space-sm);
961
+ padding: var(--fc-space-sm) var(--fc-space-lg);
962
+ cursor: pointer;
963
+ transition: background var(--fc-transition);
964
+ }
965
+ .fc-select__option:hover,
966
+ .fc-select__option--highlighted {
967
+ background: var(--fc-color-bg-secondary);
968
+ }
969
+ .fc-select__option--selected {
970
+ color: var(--fc-color-primary);
971
+ background: var(--fc-color-primary-subtle);
972
+ }
973
+ .fc-select__option--disabled {
974
+ opacity: 0.5;
975
+ cursor: not-allowed;
976
+ }
977
+ .fc-select__option-label {
978
+ flex: 1;
979
+ font-size: var(--fc-font-size-md);
980
+ }
981
+ .fc-select__checkbox {
982
+ width: 16px;
983
+ height: 16px;
984
+ border: 1px solid var(--fc-color-border);
985
+ border-radius: var(--fc-radius-sm);
986
+ display: flex;
987
+ align-items: center;
988
+ justify-content: center;
989
+ font-size: 10px;
990
+ color: var(--fc-color-text-on-primary);
991
+ transition: all var(--fc-transition);
992
+ }
993
+ .fc-select__checkbox--checked {
994
+ background: var(--fc-color-primary);
995
+ border-color: var(--fc-color-primary);
996
+ }
997
+ .fc-select__highlight {
998
+ background: var(--fc-color-warning-bg);
999
+ color: var(--fc-color-warning);
1000
+ padding: 0 2px;
1001
+ border-radius: var(--fc-radius-xs);
1002
+ }
1003
+ .fc-select__check {
1004
+ font-size: var(--fc-font-size-sm);
1005
+ }
1006
+ .fc-select--disabled .fc-select__trigger {
1007
+ opacity: 0.6;
1008
+ cursor: not-allowed;
1009
+ background: var(--fc-color-bg-secondary);
1010
+ }
1011
+
1012
+ /* src/components/Tree/Tree.css */
1013
+ .fc-tree {
1014
+ font-family: var(--fc-font-family), sans-serif;
1015
+ color: var(--fc-color-text);
1016
+ display: flex;
1017
+ flex-direction: column;
1018
+ }
1019
+ .fc-tree__search {
1020
+ position: relative;
1021
+ padding: var(--fc-space-sm) var(--fc-space-md);
1022
+ border-bottom: 1px solid var(--fc-color-border);
1023
+ }
1024
+ .fc-tree__search-input {
1025
+ width: 100%;
1026
+ padding: var(--fc-space-sm) 2rem var(--fc-space-sm) var(--fc-space-md);
1027
+ border: 1px solid var(--fc-color-border);
1028
+ border-radius: var(--fc-radius-md);
1029
+ font-size: var(--fc-font-size-sm);
1030
+ background: var(--fc-color-bg);
1031
+ color: var(--fc-color-text);
1032
+ outline: none;
1033
+ transition: border-color var(--fc-transition);
1034
+ box-sizing: border-box;
1035
+ }
1036
+ .fc-tree__search-input:focus {
1037
+ border-color: var(--fc-color-border-focus);
1038
+ }
1039
+ .fc-tree__search-clear {
1040
+ position: absolute;
1041
+ right: calc(var(--fc-space-md) + 8px);
1042
+ top: 50%;
1043
+ transform: translateY(-50%);
1044
+ background: none;
1045
+ border: none;
1046
+ cursor: pointer;
1047
+ color: var(--fc-color-text-tertiary);
1048
+ font-size: var(--fc-font-size-sm);
1049
+ padding: 2px 4px;
1050
+ border-radius: var(--fc-radius-sm);
1051
+ transition: color var(--fc-transition);
1052
+ line-height: 1;
1053
+ }
1054
+ .fc-tree__search-clear:hover {
1055
+ color: var(--fc-color-text);
1056
+ }
1057
+ .fc-tree__list {
1058
+ padding: var(--fc-space-sm) 0;
1059
+ }
1060
+ .fc-tree__empty {
1061
+ padding: var(--fc-space-md);
1062
+ text-align: center;
1063
+ color: var(--fc-color-text-tertiary);
1064
+ font-size: var(--fc-font-size-sm);
1065
+ }
1066
+ .fc-tree__node {
1067
+ position: relative;
1068
+ }
1069
+ .fc-tree__node.is-dragging > .fc-tree__item {
1070
+ opacity: 0.35;
1071
+ pointer-events: none;
1072
+ }
1073
+ .fc-tree__item {
1074
+ --fc-indent: 12px;
1075
+ display: flex;
1076
+ align-items: center;
1077
+ gap: var(--fc-space-sm);
1078
+ padding-top: 4px;
1079
+ padding-bottom: 4px;
1080
+ padding-right: var(--fc-space-md);
1081
+ border-radius: var(--fc-radius-sm);
1082
+ margin: 1px var(--fc-space-sm);
1083
+ min-height: 32px;
1084
+ cursor: default;
1085
+ transition: background var(--fc-transition), padding-left 0.1s ease-out;
1086
+ position: relative;
1087
+ user-select: none;
1088
+ }
1089
+ .fc-tree__item:hover {
1090
+ background: var(--fc-color-bg-secondary);
1091
+ }
1092
+ .fc-tree__item--drag-source {
1093
+ opacity: 0.4;
1094
+ background: var(--fc-color-bg-secondary);
1095
+ }
1096
+ .fc-tree__item--drop-into {
1097
+ background: var(--fc-color-primary-subtle) !important;
1098
+ outline: 1.5px solid var(--fc-color-primary);
1099
+ outline-offset: -1px;
1100
+ }
1101
+ .fc-tree__item--drop-before {
1102
+ background: transparent !important;
1103
+ z-index: 1;
1104
+ }
1105
+ .fc-tree__item--drop-before::before {
1106
+ content: "";
1107
+ position: absolute;
1108
+ top: -1px;
1109
+ left: var(--fc-indent, 12px);
1110
+ right: var(--fc-space-md, 12px);
1111
+ height: 2px;
1112
+ background: var(--fc-color-primary);
1113
+ border-radius: 1px;
1114
+ pointer-events: none;
1115
+ }
1116
+ .fc-tree__item--drop-before::after {
1117
+ content: "";
1118
+ position: absolute;
1119
+ top: -4px;
1120
+ left: calc(var(--fc-indent, 12px) - 3px);
1121
+ width: 6px;
1122
+ height: 6px;
1123
+ border-radius: 50%;
1124
+ background: var(--fc-color-primary);
1125
+ pointer-events: none;
1126
+ }
1127
+ .fc-tree__item--drop-after {
1128
+ background: transparent !important;
1129
+ z-index: 1;
1130
+ }
1131
+ .fc-tree__item--drop-after::before {
1132
+ content: "";
1133
+ position: absolute;
1134
+ bottom: -1px;
1135
+ left: var(--fc-indent, 12px);
1136
+ right: var(--fc-space-md, 12px);
1137
+ height: 2px;
1138
+ background: var(--fc-color-primary);
1139
+ border-radius: 1px;
1140
+ pointer-events: none;
1141
+ }
1142
+ .fc-tree__item--drop-after::after {
1143
+ content: "";
1144
+ position: absolute;
1145
+ bottom: -4px;
1146
+ left: calc(var(--fc-indent, 12px) - 3px);
1147
+ width: 6px;
1148
+ height: 6px;
1149
+ border-radius: 50%;
1150
+ background: var(--fc-color-primary);
1151
+ pointer-events: none;
1152
+ }
1153
+ .fc-tree__drag-handle {
1154
+ display: flex;
1155
+ align-items: center;
1156
+ justify-content: center;
1157
+ width: 16px;
1158
+ flex-shrink: 0;
1159
+ cursor: grab;
1160
+ color: var(--fc-color-text-tertiary);
1161
+ opacity: 0;
1162
+ font-size: 14px;
1163
+ line-height: 1;
1164
+ transition: opacity var(--fc-transition), color var(--fc-transition);
1165
+ }
1166
+ .fc-tree__drag-handle:active {
1167
+ cursor: grabbing;
1168
+ }
1169
+ .fc-tree__item:hover .fc-tree__drag-handle {
1170
+ opacity: 1;
1171
+ }
1172
+ .fc-tree__drag-handle:hover {
1173
+ color: var(--fc-color-text);
1174
+ }
1175
+ .fc-tree__switcher {
1176
+ display: flex;
1177
+ align-items: center;
1178
+ justify-content: center;
1179
+ width: 16px;
1180
+ height: 16px;
1181
+ flex-shrink: 0;
1182
+ font-size: 9px;
1183
+ color: var(--fc-color-text-tertiary);
1184
+ cursor: pointer;
1185
+ transition: transform var(--fc-transition), color var(--fc-transition);
1186
+ }
1187
+ .fc-tree__switcher:hover {
1188
+ color: var(--fc-color-text);
1189
+ }
1190
+ .fc-tree__switcher--open {
1191
+ transform: rotate(90deg);
1192
+ }
1193
+ .fc-tree__switcher--hidden {
1194
+ visibility: hidden;
1195
+ pointer-events: none;
1196
+ }
1197
+ .fc-tree__title {
1198
+ flex: 1;
1199
+ font-size: var(--fc-font-size-md);
1200
+ overflow: hidden;
1201
+ text-overflow: ellipsis;
1202
+ white-space: nowrap;
1203
+ cursor: pointer;
1204
+ }
1205
+ .fc-tree__edit-input {
1206
+ flex: 1;
1207
+ font-size: var(--fc-font-size-md);
1208
+ font-family: var(--fc-font-family), sans-serif;
1209
+ color: var(--fc-color-text);
1210
+ background: var(--fc-color-bg);
1211
+ border: 1px solid var(--fc-color-border-focus);
1212
+ border-radius: var(--fc-radius-sm);
1213
+ padding: 2px 6px;
1214
+ outline: none;
1215
+ min-width: 0;
1216
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--fc-color-primary) 15%, transparent);
1217
+ }
1218
+ .fc-tree__actions {
1219
+ display: flex;
1220
+ align-items: center;
1221
+ gap: 2px;
1222
+ flex-shrink: 0;
1223
+ opacity: 0;
1224
+ transition: opacity var(--fc-transition);
1225
+ }
1226
+ .fc-tree__item:hover .fc-tree__actions {
1227
+ opacity: 1;
1228
+ }
1229
+ .fc-tree__action {
1230
+ display: flex;
1231
+ align-items: center;
1232
+ justify-content: center;
1233
+ width: 22px;
1234
+ height: 22px;
1235
+ background: none;
1236
+ border: none;
1237
+ border-radius: var(--fc-radius-sm);
1238
+ cursor: pointer;
1239
+ font-size: 13px;
1240
+ color: var(--fc-color-text-tertiary);
1241
+ padding: 0;
1242
+ line-height: 1;
1243
+ transition: background var(--fc-transition), color var(--fc-transition);
1244
+ }
1245
+ .fc-tree__action:hover {
1246
+ background: var(--fc-color-border);
1247
+ color: var(--fc-color-text);
1248
+ }
1249
+ .fc-tree__action--danger:hover {
1250
+ background: color-mix(in srgb, #ef4444 15%, transparent);
1251
+ color: #ef4444;
1252
+ }
1253
+ .fc-tree__add-root {
1254
+ padding: var(--fc-space-sm) var(--fc-space-md);
1255
+ border-top: 1px solid var(--fc-color-border);
1256
+ margin-top: 2px;
1257
+ }
1258
+ .fc-tree__add-root-btn {
1259
+ width: 100%;
1260
+ padding: 6px var(--fc-space-md);
1261
+ background: none;
1262
+ border: 1px dashed var(--fc-color-border);
1263
+ border-radius: var(--fc-radius-md);
1264
+ color: var(--fc-color-text-tertiary);
1265
+ font-size: var(--fc-font-size-sm);
1266
+ font-family: var(--fc-font-family), sans-serif;
1267
+ cursor: pointer;
1268
+ transition:
1269
+ border-color var(--fc-transition),
1270
+ color var(--fc-transition),
1271
+ background var(--fc-transition);
1272
+ text-align: center;
1273
+ }
1274
+ .fc-tree__add-root-btn:hover {
1275
+ border-color: var(--fc-color-primary);
1276
+ color: var(--fc-color-primary);
1277
+ background: var(--fc-color-primary-subtle);
1278
+ }
1279
+ [data-theme=dark] .fc-tree__search-input,
1280
+ [data-theme=dark] .fc-tree__edit-input {
1281
+ background: var(--fc-color-bg-secondary);
1282
+ }
1283
+
1284
+ /* src/components/Avatar/Avatar.css */
1285
+ .ui-avatar {
1286
+ --avatar-bg: var(--fc-color-primary, #6366f1);
1287
+ --avatar-color: var(--fc-color-text-on-primary, #ffffff);
1288
+ --avatar-empty-bg: var(--fc-color-bg-secondary, #f3f4f6);
1289
+ --avatar-empty-color: var(--fc-color-text-tertiary, #9ca3af);
1290
+ --avatar-border: var(--fc-color-bg, #ffffff);
1291
+ --avatar-shadow: var(--fc-shadow-sm, 0 1px 2px 0 rgba(0, 0, 0, 0.05));
1292
+ --avatar-hover-filter: brightness(0.95);
1293
+ --avatar-active-filter: brightness(0.9);
1294
+ --avatar-focus-ring: 0 0 0 2px var(--fc-color-bg, #fff), 0 0 0 4px var(--fc-color-primary, #6366f1);
1295
+ display: inline-flex;
1296
+ align-items: center;
1297
+ justify-content: center;
1298
+ flex-shrink: 0;
1299
+ background-color: var(--avatar-bg);
1300
+ color: var(--avatar-color);
1301
+ font-weight: 600;
1302
+ line-height: 1;
1303
+ user-select: none;
1304
+ overflow: hidden;
1305
+ position: relative;
1306
+ transition:
1307
+ transform 0.2s cubic-bezier(0.4, 0, 0.2, 1),
1308
+ filter 0.2s cubic-bezier(0.4, 0, 0.2, 1),
1309
+ box-shadow 0.2s cubic-bezier(0.4, 0, 0.2, 1);
1310
+ }
1311
+ .ui-avatar-img {
1312
+ width: 100%;
1313
+ height: 100%;
1314
+ object-fit: cover;
1315
+ }
1316
+ .ui-avatar-text,
1317
+ .ui-avatar-placeholder {
1318
+ display: flex;
1319
+ align-items: center;
1320
+ justify-content: center;
1321
+ width: 100%;
1322
+ height: 100%;
1323
+ text-transform: uppercase;
1324
+ }
1325
+ .ui-avatar-placeholder svg {
1326
+ color: var(--avatar-empty-color);
1327
+ }
1328
+ .ui-avatar-xs,
1329
+ .ui-avatar-sm,
1330
+ .ui-avatar-md,
1331
+ .ui-avatar-lg,
1332
+ .ui-avatar-xl {
1333
+ width: var(--avatar-size);
1334
+ height: var(--avatar-size);
1335
+ font-size: var(--avatar-font-size);
1336
+ }
1337
+ .ui-avatar-xs {
1338
+ --avatar-size: 20px;
1339
+ --avatar-font-size: 10px;
1340
+ }
1341
+ .ui-avatar-sm {
1342
+ --avatar-size: 28px;
1343
+ --avatar-font-size: 12px;
1344
+ }
1345
+ .ui-avatar-md {
1346
+ --avatar-size: 40px;
1347
+ --avatar-font-size: 16px;
1348
+ }
1349
+ .ui-avatar-lg {
1350
+ --avatar-size: 56px;
1351
+ --avatar-font-size: 20px;
1352
+ }
1353
+ .ui-avatar-xl {
1354
+ --avatar-size: 72px;
1355
+ --avatar-font-size: 28px;
1356
+ }
1357
+ .ui-avatar-circle {
1358
+ border-radius: 50%;
1359
+ }
1360
+ .ui-avatar-square {
1361
+ border-radius: var(--fc-radius-md, 8px);
1362
+ }
1363
+ .ui-avatar-square.ui-avatar-xs {
1364
+ border-radius: var(--fc-radius-sm, 4px);
1365
+ }
1366
+ .ui-avatar-square.ui-avatar-sm,
1367
+ .ui-avatar-square.ui-avatar-md {
1368
+ border-radius: var(--fc-radius-md, 6px);
1369
+ }
1370
+ .ui-avatar-square.ui-avatar-lg,
1371
+ .ui-avatar-square.ui-avatar-xl {
1372
+ border-radius: var(--fc-radius-lg, 10px);
1373
+ }
1374
+ .ui-avatar-bordered {
1375
+ border: 2px solid var(--avatar-border);
1376
+ box-shadow: var(--avatar-shadow);
1377
+ }
1378
+ .ui-avatar-clickable {
1379
+ cursor: pointer;
1380
+ }
1381
+ .ui-avatar-clickable:hover:not(:disabled),
1382
+ .ui-avatar-clickable:active:not(:disabled) {
1383
+ filter: var(--avatar-hover-filter);
1384
+ }
1385
+ .ui-avatar-clickable:hover:not(:disabled) {
1386
+ transform: translateY(-1px);
1387
+ box-shadow: var(--fc-shadow-md, 0 4px 6px -1px rgba(0, 0, 0, 0.1));
1388
+ }
1389
+ .ui-avatar-clickable:active:not(:disabled) {
1390
+ transform: scale(0.95);
1391
+ filter: var(--avatar-active-filter);
1392
+ }
1393
+ .ui-avatar-clickable:focus-visible {
1394
+ outline: none;
1395
+ box-shadow: var(--avatar-focus-ring);
1396
+ }
1397
+ .ui-avatar-empty {
1398
+ background-color: var(--avatar-empty-bg);
1399
+ color: var(--avatar-empty-color);
1400
+ }
1401
+ .ui-avatar-loading {
1402
+ overflow: hidden;
1403
+ }
1404
+ .ui-avatar-loading::after {
1405
+ content: "";
1406
+ position: absolute;
1407
+ top: 0;
1408
+ left: 0;
1409
+ width: 100%;
1410
+ height: 100%;
1411
+ background:
1412
+ linear-gradient(
1413
+ 90deg,
1414
+ transparent,
1415
+ rgba(255, 255, 255, 0.3),
1416
+ transparent);
1417
+ animation: avatar-shimmer 1.5s ease-in-out infinite;
1418
+ will-change: transform;
1419
+ }
1420
+ @keyframes avatar-shimmer {
1421
+ 0% {
1422
+ transform: translateX(-100%);
1423
+ }
1424
+ 100% {
1425
+ transform: translateX(100%);
1426
+ }
1427
+ }
1428
+ .ui-avatar--primary,
1429
+ .ui-avatar--success,
1430
+ .ui-avatar--warning,
1431
+ .ui-avatar--danger {
1432
+ --avatar-color: var(--fc-color-text-on-primary, #ffffff);
1433
+ }
1434
+ .ui-avatar--primary {
1435
+ --avatar-bg: var(--fc-color-primary);
1436
+ }
1437
+ .ui-avatar--secondary {
1438
+ --avatar-bg: var(--fc-color-bg-secondary);
1439
+ --avatar-color: var(--fc-color-text-secondary);
1440
+ }
1441
+ .ui-avatar--success {
1442
+ --avatar-bg: var(--fc-color-success);
1443
+ }
1444
+ .ui-avatar--warning {
1445
+ --avatar-bg: var(--fc-color-warning);
1446
+ }
1447
+ .ui-avatar--danger {
1448
+ --avatar-bg: var(--fc-color-danger);
1449
+ }
1450
+ @media (prefers-reduced-motion: reduce) {
1451
+ .ui-avatar {
1452
+ transition: none;
1453
+ }
1454
+ .ui-avatar-loading::after {
1455
+ animation: none;
1456
+ opacity: 0.5;
1457
+ }
1458
+ .ui-avatar-clickable:hover:not(:disabled) {
1459
+ transform: none;
1460
+ }
1461
+ .ui-avatar-clickable:active:not(:disabled) {
1462
+ transform: none;
1463
+ }
1464
+ }
1465
+ @media (prefers-contrast: more) {
1466
+ .ui-avatar-bordered {
1467
+ border-width: 3px;
1468
+ }
1469
+ .ui-avatar-empty {
1470
+ outline: 1px solid currentColor;
1471
+ }
1472
+ .ui-avatar-clickable:focus-visible {
1473
+ outline: 2px solid currentColor;
1474
+ }
1475
+ }
1476
+ @media (prefers-contrast: less) {
1477
+ .ui-avatar-bordered {
1478
+ border-color: color-mix(in srgb, var(--avatar-border), transparent 30%);
1479
+ }
1480
+ }
1481
+ .avatar-group .ui-avatar {
1482
+ transition: none;
1483
+ }
1484
+ @media (hover: hover) {
1485
+ .ui-avatar-clickable:hover:not(:disabled) {
1486
+ transform: translateY(-1px);
1487
+ }
1488
+ }
1489
+
1490
+ /* src/components/ListGroup/ListGroup.css */
1491
+ .fc-list-group {
1492
+ display: flex;
1493
+ flex-direction: column;
1494
+ margin: 0;
1495
+ padding: 0;
1496
+ list-style: none;
1497
+ background-color: var(--fc-color-bg, #ffffff);
1498
+ border-radius: var(--fc-radius-md, 8px);
1499
+ }
1500
+ [data-theme=dark] .fc-list-group {
1501
+ background-color: var(--fc-color-bg, #0F0F0F);
1502
+ }
1503
+ .fc-list-group--bordered {
1504
+ border: 1px solid var(--fc-color-border, #e5e7eb);
1505
+ }
1506
+ [data-theme=dark] .fc-list-group--bordered {
1507
+ border-color: var(--fc-color-border, #333330);
1508
+ }
1509
+ .fc-list-group--no-radius {
1510
+ border-radius: 0;
1511
+ }
1512
+ .fc-list-group--no-radius .fc-list-group-item:first-child,
1513
+ .fc-list-group--no-radius .fc-list-group-item:last-child {
1514
+ border-radius: 0;
1515
+ }
1516
+ .fc-list-group-item {
1517
+ position: relative;
1518
+ display: block;
1519
+ padding: var(--fc-space-md, 12px) var(--fc-space-lg, 16px);
1520
+ color: var(--fc-color-text, #111827);
1521
+ background-color: var(--fc-color-bg, #ffffff);
1522
+ border-bottom: 1px solid var(--fc-color-border-light, #f0f0f0);
1523
+ transition:
1524
+ background-color var(--fc-transition, 150ms ease),
1525
+ border-color var(--fc-transition, 150ms ease),
1526
+ color var(--fc-transition, 150ms ease);
1527
+ cursor: pointer;
1528
+ }
1529
+ [data-theme=dark] .fc-list-group-item {
1530
+ background-color: var(--fc-color-bg, #0F0F0F);
1531
+ color: var(--fc-color-text, #E8E8E6);
1532
+ border-bottom-color: var(--fc-color-border-light, #2A2A28);
1533
+ }
1534
+ .fc-list-group-item:first-child {
1535
+ border-top-left-radius: var(--fc-radius-md, 8px);
1536
+ border-top-right-radius: var(--fc-radius-md, 8px);
1537
+ }
1538
+ .fc-list-group-item:last-child {
1539
+ border-bottom-left-radius: var(--fc-radius-md, 8px);
1540
+ border-bottom-right-radius: var(--fc-radius-md, 8px);
1541
+ border-bottom: none;
1542
+ }
1543
+ .fc-list-group--bordered .fc-list-group-item {
1544
+ border-bottom-color: var(--fc-color-border, #e5e7eb);
1545
+ }
1546
+ [data-theme=dark] .fc-list-group--bordered .fc-list-group-item {
1547
+ border-bottom-color: var(--fc-color-border, #333330);
1548
+ }
1549
+ .fc-list-group--bordered .fc-list-group-item:last-child {
1550
+ border-bottom: none;
1551
+ }
1552
+ .fc-list-group-item:hover:not(.fc-list-group-item--disabled) {
1553
+ background-color: var(--fc-color-bg-secondary, #f9fafb);
1554
+ }
1555
+ [data-theme=dark] .fc-list-group-item:hover:not(.fc-list-group-item--disabled) {
1556
+ background-color: var(--fc-color-bg-secondary, #1A1A1A);
1557
+ }
1558
+ .fc-list-group-item:focus-visible:not(.fc-list-group-item--disabled) {
1559
+ outline: none;
1560
+ background-color: var(--fc-color-bg-secondary, #f9fafb);
1561
+ box-shadow: inset 0 0 0 2px var(--fc-color-primary, #6366f1);
1562
+ z-index: 1;
1563
+ }
1564
+ [data-theme=dark] .fc-list-group-item:focus-visible:not(.fc-list-group-item--disabled) {
1565
+ background-color: var(--fc-color-bg-secondary, #1A1A1A);
1566
+ box-shadow: inset 0 0 0 2px var(--fc-color-primary, #5DA4E8);
1567
+ }
1568
+ .fc-list-group-item--active {
1569
+ background-color: var(--fc-color-primary-subtle, #eff6ff);
1570
+ color: var(--fc-color-primary, #6366f1);
1571
+ border-left: 3px solid var(--fc-color-primary, #6366f1);
1572
+ padding-left: calc(var(--fc-space-lg, 16px) - 3px);
1573
+ }
1574
+ [data-theme=dark] .fc-list-group-item--active {
1575
+ background-color: var(--fc-color-primary-subtle, rgba(55, 138, 221, 0.12));
1576
+ color: var(--fc-color-primary, #5DA4E8);
1577
+ border-left-color: var(--fc-color-primary, #5DA4E8);
1578
+ }
1579
+ .fc-list-group-item--active:hover {
1580
+ background-color: var(--fc-color-primary-subtle, #eff6ff);
1581
+ }
1582
+ [data-theme=dark] .fc-list-group-item--active:hover {
1583
+ background-color: var(--fc-color-primary-subtle, rgba(55, 138, 221, 0.12));
1584
+ }
1585
+ .fc-list-group-item--disabled {
1586
+ color: var(--fc-color-text-disabled, #9ca3af);
1587
+ cursor: not-allowed;
1588
+ pointer-events: none;
1589
+ opacity: 0.6;
1590
+ }
1591
+ [data-theme=dark] .fc-list-group-item--disabled {
1592
+ color: var(--fc-color-text-disabled, #4A4845);
1593
+ }
1594
+ @media (max-width: 640px) {
1595
+ .fc-list-group-item {
1596
+ padding: var(--fc-space-sm, 8px) var(--fc-space-md, 12px);
1597
+ }
1598
+ .fc-list-group-item--active {
1599
+ padding-left: calc(var(--fc-space-md, 12px) - 3px);
1600
+ }
1601
+ }
1602
+ .fc-list-group--compact .fc-list-group-item {
1603
+ padding: var(--fc-space-sm, 8px) var(--fc-space-md, 12px);
1604
+ }
1605
+ .fc-list-group--compact .fc-list-group-item--active {
1606
+ padding-left: calc(var(--fc-space-md, 12px) - 3px);
1607
+ }
1608
+ .fc-list-group--relaxed .fc-list-group-item {
1609
+ padding: var(--fc-space-lg, 16px) var(--fc-space-xl, 20px);
1610
+ }
1611
+ .fc-list-group--relaxed .fc-list-group-item--active {
1612
+ padding-left: calc(var(--fc-space-xl, 20px) - 3px);
1613
+ }
1614
+ .fc-list-group--no-divided .fc-list-group-item {
1615
+ border-bottom: none;
1616
+ }
1617
+ @media (prefers-reduced-motion: reduce) {
1618
+ .fc-list-group-item {
1619
+ transition: none;
1620
+ }
1621
+ }
1622
+ @media (prefers-contrast: more) {
1623
+ .fc-list-group--bordered {
1624
+ border-width: 2px;
1625
+ }
1626
+ .fc-list-group-item {
1627
+ border-bottom-width: 2px;
1628
+ }
1629
+ .fc-list-group-item--active {
1630
+ border-left-width: 4px;
1631
+ font-weight: 700;
1632
+ }
1633
+ .fc-list-group-item:focus-visible:not(.fc-list-group-item--disabled) {
1634
+ outline: 2px solid currentColor;
1635
+ box-shadow: none;
1636
+ }
1637
+ }
1638
+ .fc-list-group-nested {
1639
+ margin-left: var(--fc-space-lg, 16px);
1640
+ margin-top: var(--fc-space-sm, 8px);
1641
+ margin-bottom: var(--fc-space-sm, 8px);
1642
+ }
1643
+ .fc-list-group-item-icon {
1644
+ margin-right: var(--fc-space-sm, 8px);
1645
+ flex-shrink: 0;
1646
+ }
1647
+ .fc-list-group-item-content {
1648
+ flex: 1;
1649
+ }
1650
+ .fc-list-group-item-actions {
1651
+ margin-left: auto;
1652
+ flex-shrink: 0;
1653
+ }
1654
+ .fc-list-group-item-with-icon,
1655
+ .fc-list-group-item-with-actions {
1656
+ display: flex;
1657
+ align-items: center;
1658
+ }
1659
+
1660
+ /* src/components/VirtualList/VirtualList.css */
1661
+ .fc-virtual-list {
1662
+ position: relative;
1663
+ overflow-y: auto;
1664
+ overflow-x: hidden;
1665
+ background-color: var(--fc-color-bg, #ffffff);
1666
+ border-radius: var(--fc-radius-md, 8px);
1667
+ }
1668
+ .fc-virtual-list--hide-scrollbar {
1669
+ scrollbar-width: none;
1670
+ -ms-overflow-style: none;
1671
+ }
1672
+ .fc-virtual-list--hide-scrollbar::-webkit-scrollbar {
1673
+ display: none;
1674
+ }
1675
+ .fc-virtual-list__container {
1676
+ position: relative;
1677
+ width: 100%;
1678
+ overflow: hidden;
1679
+ }
1680
+ .fc-virtual-list__content {
1681
+ position: absolute;
1682
+ top: 0;
1683
+ left: 0;
1684
+ width: 100%;
1685
+ will-change: transform;
1686
+ }
1687
+ .fc-virtual-list__item {
1688
+ width: 100%;
1689
+ overflow: hidden;
1690
+ box-sizing: border-box;
1691
+ }
1692
+ .fc-virtual-list::-webkit-scrollbar {
1693
+ width: 6px;
1694
+ height: 6px;
1695
+ }
1696
+ .fc-virtual-list::-webkit-scrollbar-track {
1697
+ background: var(--fc-color-bg-tertiary, #f3f4f6);
1698
+ border-radius: var(--fc-radius-full, 9999px);
1699
+ }
1700
+ .fc-virtual-list::-webkit-scrollbar-thumb {
1701
+ background: var(--fc-color-border, #d1d5db);
1702
+ border-radius: var(--fc-radius-full, 9999px);
1703
+ }
1704
+ .fc-virtual-list::-webkit-scrollbar-thumb:hover {
1705
+ background: var(--fc-color-border-hover, #9ca3af);
1706
+ }
1707
+ [data-theme=dark] .fc-virtual-list,
1708
+ .theme-dark .fc-virtual-list {
1709
+ background-color: #0F0F0F !important;
1710
+ }
1711
+ [data-theme=dark] .fc-virtual-list__item,
1712
+ .theme-dark .fc-virtual-list__item {
1713
+ background-color: #0F0F0F !important;
1714
+ }
1715
+ [data-theme=dark] .fc-virtual-list::-webkit-scrollbar-track,
1716
+ .theme-dark .fc-virtual-list::-webkit-scrollbar-track {
1717
+ background: #222222 !important;
1718
+ }
1719
+ [data-theme=dark] .fc-virtual-list::-webkit-scrollbar-thumb,
1720
+ .theme-dark .fc-virtual-list::-webkit-scrollbar-thumb {
1721
+ background: #333330 !important;
1722
+ }
1723
+ [data-theme=dark] .fc-virtual-list::-webkit-scrollbar-thumb:hover,
1724
+ .theme-dark .fc-virtual-list::-webkit-scrollbar-thumb:hover {
1725
+ background: #555550 !important;
1726
+ }
1727
+
1728
+ /* src/components/Alert/AlertContext.css */
1729
+ .fc-alert-overlay {
1730
+ position: fixed;
1731
+ inset: 0;
1732
+ display: flex;
1733
+ align-items: center;
1734
+ justify-content: center;
1735
+ background: var(--fc-color-bg-overlay);
1736
+ z-index: var(--fc-z-modal);
1737
+ }
1738
+ .fc-alert {
1739
+ --alert-bg: var(--fc-color-bg-elevated);
1740
+ --alert-border: var(--fc-color-border);
1741
+ --alert-shadow: var(--fc-shadow-lg);
1742
+ --alert-min-width: 20rem;
1743
+ --alert-max-width: 80%;
1744
+ --alert-max-height: 80vh;
1745
+ background: var(--alert-bg);
1746
+ border: 1px solid var(--alert-border);
1747
+ border-radius: var(--fc-radius-lg);
1748
+ box-shadow: var(--alert-shadow);
1749
+ padding: var(--fc-space-lg);
1750
+ min-width: var(--alert-min-width);
1751
+ max-width: var(--alert-max-width);
1752
+ max-height: var(--alert-max-height);
1753
+ display: flex;
1754
+ flex-direction: column;
1755
+ overflow: hidden;
1756
+ font-family: var(--fc-font-family), serif;
1757
+ color: var(--fc-color-text);
1758
+ }
1759
+ .fc-alert__header {
1760
+ display: flex;
1761
+ align-items: center;
1762
+ gap: var(--fc-space-sm);
1763
+ margin-bottom: var(--fc-space-md);
1764
+ }
1765
+ .fc-alert__icon {
1766
+ flex-shrink: 0;
1767
+ width: 1.25rem;
1768
+ height: 1.25rem;
1769
+ }
1770
+ .fc-alert__title {
1771
+ font-size: var(--fc-font-size-md);
1772
+ font-weight: var(--fc-font-weight-bold);
1773
+ line-height: var(--fc-line-height-tight);
1774
+ }
1775
+ .fc-alert__msg {
1776
+ flex: 1;
1777
+ min-height: 0;
1778
+ max-height: 10rem;
1779
+ overflow-y: auto;
1780
+ white-space: pre-wrap;
1781
+ word-break: break-all;
1782
+ font-size: var(--fc-font-size-sm);
1783
+ line-height: var(--fc-line-height-normal);
1784
+ color: var(--fc-color-text-secondary);
1785
+ padding: 0 var(--fc-space-xs);
1786
+ margin-bottom: var(--fc-space-lg);
1787
+ }
1788
+ .fc-alert__footer {
1789
+ display: flex;
1790
+ align-items: center;
1791
+ justify-content: flex-end;
1792
+ gap: var(--fc-space-sm);
1793
+ }
1794
+ .fc-alert--success .fc-alert__icon {
1795
+ color: var(--fc-color-success);
1796
+ }
1797
+ .fc-alert--error .fc-alert__icon {
1798
+ color: var(--fc-color-danger);
1799
+ }
1800
+ .fc-alert--warning .fc-alert__icon {
1801
+ color: var(--fc-color-warning);
1802
+ }
1803
+ .fc-alert--info .fc-alert__icon {
1804
+ color: var(--fc-color-info);
1805
+ }
1806
+
1807
+ /* src/components/Card/Card.css */
1808
+ .fc-card {
1809
+ display: flex;
1810
+ flex-direction: column;
1811
+ background-color: var(--fc-color-bg);
1812
+ border-radius: var(--fc-radius-md);
1813
+ overflow: hidden;
1814
+ transition: all var(--fc-transition);
1815
+ cursor: default;
1816
+ }
1817
+ .fc-card--default {
1818
+ background-color: var(--fc-color-bg);
1819
+ }
1820
+ .fc-card--bordered {
1821
+ border: 1px solid var(--fc-color-border);
1822
+ }
1823
+ .fc-card--shadow {
1824
+ box-shadow: var(--fc-shadow-sm);
1825
+ }
1826
+ .fc-card--outline {
1827
+ border: 1px solid var(--fc-color-primary);
1828
+ }
1829
+ .fc-card--hoverable:hover {
1830
+ transform: translateY(-4px);
1831
+ box-shadow: var(--fc-shadow-md);
1832
+ cursor: pointer;
1833
+ }
1834
+ .fc-card--clickable {
1835
+ cursor: pointer;
1836
+ }
1837
+ .fc-card--disabled {
1838
+ opacity: 0.6;
1839
+ cursor: not-allowed;
1840
+ }
1841
+ .fc-card--disabled:hover {
1842
+ transform: none;
1843
+ box-shadow: none;
1844
+ }
1845
+ .fc-card__image-wrapper {
1846
+ flex-shrink: 0;
1847
+ overflow: hidden;
1848
+ background-color: var(--fc-color-bg-tertiary);
1849
+ position: relative;
1850
+ }
1851
+ .fc-card__image {
1852
+ width: 100%;
1853
+ height: 100%;
1854
+ object-fit: cover;
1855
+ transition: transform var(--fc-transition);
1856
+ display: block;
1857
+ }
1858
+ .fc-card--hoverable:hover .fc-card__image {
1859
+ transform: scale(1.05);
1860
+ }
1861
+ .fc-card__content {
1862
+ flex: 1;
1863
+ display: flex;
1864
+ flex-direction: column;
1865
+ padding: var(--fc-space-lg);
1866
+ gap: var(--fc-space-sm);
1867
+ background-color: var(--fc-color-bg);
1868
+ }
1869
+ .fc-card__title {
1870
+ font-size: var(--fc-font-size-lg);
1871
+ font-weight: var(--fc-font-weight-bold);
1872
+ color: var(--fc-color-text);
1873
+ line-height: var(--fc-line-height-tight);
1874
+ overflow: hidden;
1875
+ text-overflow: ellipsis;
1876
+ display: -webkit-box;
1877
+ -webkit-line-clamp: 2;
1878
+ -webkit-box-orient: vertical;
1879
+ }
1880
+ .fc-card__description {
1881
+ font-size: var(--fc-font-size-sm);
1882
+ color: var(--fc-color-text-secondary);
1883
+ line-height: var(--fc-line-height-normal);
1884
+ overflow: hidden;
1885
+ text-overflow: ellipsis;
1886
+ display: -webkit-box;
1887
+ -webkit-line-clamp: 3;
1888
+ -webkit-box-orient: vertical;
1889
+ }
1890
+ .fc-card__extra-info {
1891
+ font-size: var(--fc-font-size-md);
1892
+ color: var(--fc-color-primary);
1893
+ font-weight: var(--fc-font-weight-medium);
1894
+ margin-top: var(--fc-space-xs);
1895
+ }
1896
+ .fc-card__actions {
1897
+ margin-top: var(--fc-space-sm);
1898
+ padding-top: var(--fc-space-sm);
1899
+ border-top: 1px solid var(--fc-color-border-light);
1900
+ display: flex;
1901
+ gap: var(--fc-space-sm);
1902
+ align-items: center;
1903
+ }
1904
+ .fc-card__actions .fc-button {
1905
+ flex: 1;
1906
+ }
1907
+ @media (max-width: 640px) {
1908
+ .fc-card__content {
1909
+ padding: var(--fc-space-md);
1910
+ }
1911
+ .fc-card__title {
1912
+ font-size: var(--fc-font-size-md);
1913
+ }
1914
+ .fc-card__description {
1915
+ font-size: var(--fc-font-size-xs);
1916
+ }
1917
+ .fc-card__extra-info {
1918
+ font-size: var(--fc-font-size-sm);
1919
+ }
1920
+ }
1921
+ .fc-card__image {
1922
+ background-color: var(--fc-color-bg-tertiary);
1923
+ position: relative;
1924
+ }
1925
+ .fc-card__image::after {
1926
+ content: "\1f4f7";
1927
+ position: absolute;
1928
+ top: 50%;
1929
+ left: 50%;
1930
+ transform: translate(-50%, -50%);
1931
+ font-size: 32px;
1932
+ color: var(--fc-color-text-tertiary);
1933
+ display: none;
1934
+ }
1935
+ .fc-card__image[src=""],
1936
+ .fc-card__image:not([src]) {
1937
+ opacity: 0;
1938
+ }
1939
+ .fc-card__image[src=""] + .fc-card__image::after,
1940
+ .fc-card__image:not([src]) + .fc-card__image::after {
1941
+ display: block;
1942
+ }
1943
+
1944
+ /* src/components/Tabs/Tabs.css */
1945
+ .fc-tabs {
1946
+ display: flex;
1947
+ flex-direction: column;
1948
+ width: 100%;
1949
+ background-color: var(--fc-color-bg);
1950
+ color: var(--fc-color-text);
1951
+ overflow: hidden;
1952
+ }
1953
+ .fc-tabs--radius-none {
1954
+ border-radius: 0;
1955
+ }
1956
+ .fc-tabs--radius-sm {
1957
+ border-radius: var(--fc-radius-sm, 4px);
1958
+ }
1959
+ .fc-tabs--radius-md {
1960
+ border-radius: var(--fc-radius-md, 8px);
1961
+ }
1962
+ .fc-tabs--radius-lg {
1963
+ border-radius: var(--fc-radius-lg, 12px);
1964
+ }
1965
+ .fc-tabs--radius-xl {
1966
+ border-radius: var(--fc-radius-xl, 16px);
1967
+ }
1968
+ .fc-tabs--radius-full {
1969
+ border-radius: var(--fc-radius-full, 9999px);
1970
+ }
1971
+ .fc-tabs--radius-sm .fc-tabs__content {
1972
+ border-radius: 0 0 var(--fc-radius-sm, 4px) var(--fc-radius-sm, 4px);
1973
+ }
1974
+ .fc-tabs--radius-md .fc-tabs__content {
1975
+ border-radius: 0 0 var(--fc-radius-md, 8px) var(--fc-radius-md, 8px);
1976
+ }
1977
+ .fc-tabs--radius-lg .fc-tabs__content {
1978
+ border-radius: 0 0 var(--fc-radius-lg, 12px) var(--fc-radius-lg, 12px);
1979
+ }
1980
+ .fc-tabs--radius-xl .fc-tabs__content {
1981
+ border-radius: 0 0 var(--fc-radius-xl, 16px) var(--fc-radius-xl, 16px);
1982
+ }
1983
+ .fc-tabs--radius-full .fc-tabs__content {
1984
+ border-radius: 0 0 var(--fc-radius-full, 9999px) var(--fc-radius-full, 9999px);
1985
+ }
1986
+ .fc-tabs__nav {
1987
+ flex-shrink: 0;
1988
+ background-color: var(--fc-color-bg-secondary);
1989
+ border-bottom: 2px solid var(--fc-color-border);
1990
+ overflow-x: auto;
1991
+ overflow-y: hidden;
1992
+ }
1993
+ .fc-tabs--radius-sm .fc-tabs__nav {
1994
+ border-radius: var(--fc-radius-sm, 4px) var(--fc-radius-sm, 4px) 0 0;
1995
+ }
1996
+ .fc-tabs--radius-md .fc-tabs__nav {
1997
+ border-radius: var(--fc-radius-md, 8px) var(--fc-radius-md, 8px) 0 0;
1998
+ }
1999
+ .fc-tabs--radius-lg .fc-tabs__nav {
2000
+ border-radius: var(--fc-radius-lg, 12px) var(--fc-radius-lg, 12px) 0 0;
2001
+ }
2002
+ .fc-tabs--radius-xl .fc-tabs__nav {
2003
+ border-radius: var(--fc-radius-xl, 16px) var(--fc-radius-xl, 16px) 0 0;
2004
+ }
2005
+ .fc-tabs--radius-full .fc-tabs__nav {
2006
+ border-radius: var(--fc-radius-full, 9999px) var(--fc-radius-full, 9999px) 0 0;
2007
+ }
2008
+ .fc-tabs__nav-wrap {
2009
+ display: flex;
2010
+ gap: 0;
2011
+ }
2012
+ .fc-tabs__tab {
2013
+ position: relative;
2014
+ display: inline-flex;
2015
+ align-items: center;
2016
+ gap: var(--fc-space-sm, 8px);
2017
+ padding: var(--fc-space-sm, 8px) var(--fc-space-lg, 16px);
2018
+ font-size: var(--fc-font-size-md, 14px);
2019
+ color: var(--fc-color-text-secondary);
2020
+ cursor: pointer;
2021
+ transition: all var(--fc-transition, 150ms ease);
2022
+ white-space: nowrap;
2023
+ background-color: transparent;
2024
+ border: none;
2025
+ border-bottom: 2px solid transparent;
2026
+ margin-bottom: -2px;
2027
+ }
2028
+ .fc-tabs__tab:hover:not(.fc-tabs__tab--disabled) {
2029
+ color: var(--fc-color-primary);
2030
+ background-color: var(--fc-color-bg-tertiary);
2031
+ }
2032
+ .fc-tabs__tab--active {
2033
+ color: var(--fc-color-primary);
2034
+ border-bottom-color: var(--fc-color-primary);
2035
+ background-color: var(--fc-color-bg);
2036
+ }
2037
+ .fc-tabs__tab--disabled {
2038
+ color: var(--fc-color-text-disabled);
2039
+ cursor: not-allowed;
2040
+ opacity: 0.6;
2041
+ }
2042
+ .fc-tabs__tab-close {
2043
+ display: inline-flex;
2044
+ align-items: center;
2045
+ justify-content: center;
2046
+ width: 18px;
2047
+ height: 18px;
2048
+ font-size: 16px;
2049
+ line-height: 1;
2050
+ color: var(--fc-color-text-tertiary);
2051
+ border-radius: var(--fc-radius-sm, 4px);
2052
+ transition: all var(--fc-transition, 150ms ease);
2053
+ }
2054
+ .fc-tabs__tab-close:hover {
2055
+ color: var(--fc-color-text);
2056
+ background-color: var(--fc-color-border-light);
2057
+ }
2058
+ .fc-tabs__add-btn {
2059
+ display: inline-flex;
2060
+ align-items: center;
2061
+ justify-content: center;
2062
+ width: 32px;
2063
+ margin: 0 var(--fc-space-sm, 8px);
2064
+ font-size: 20px;
2065
+ font-weight: bold;
2066
+ color: var(--fc-color-text-secondary);
2067
+ cursor: pointer;
2068
+ transition: all var(--fc-transition, 150ms ease);
2069
+ border-radius: var(--fc-radius-sm, 4px);
2070
+ }
2071
+ .fc-tabs__add-btn:hover {
2072
+ color: var(--fc-color-primary);
2073
+ background-color: var(--fc-color-bg-tertiary);
2074
+ transform: rotate(90deg);
2075
+ }
2076
+ .fc-tabs__content {
2077
+ flex: 1;
2078
+ padding: var(--fc-space-lg, 16px);
2079
+ background-color: var(--fc-color-bg);
2080
+ color: var(--fc-color-text);
2081
+ overflow: auto;
2082
+ }
2083
+ [data-theme=dark] .fc-tabs__nav {
2084
+ background-color: var(--fc-color-bg-secondary);
2085
+ border-bottom-color: var(--fc-color-border);
2086
+ }
2087
+ [data-theme=dark] .fc-tabs__tab--active {
2088
+ background-color: var(--fc-color-bg);
2089
+ border-bottom-color: var(--fc-color-primary);
2090
+ }
2091
+ [data-theme=dark] .fc-tabs__tab:hover:not(.fc-tabs__tab--disabled) {
2092
+ background-color: var(--fc-color-bg-tertiary);
2093
+ }
2094
+ [data-theme=dark] .fc-tabs__add-btn:hover {
2095
+ background-color: var(--fc-color-bg-tertiary);
2096
+ }
2097
+ [data-theme=dark] .fc-tabs__tab-close:hover {
2098
+ background-color: var(--fc-color-border-light);
2099
+ }
2100
+ @media (max-width: 768px) {
2101
+ .fc-tabs__tab {
2102
+ padding: var(--fc-space-xs, 6px) var(--fc-space-md, 12px);
2103
+ font-size: var(--fc-font-size-sm, 13px);
2104
+ }
2105
+ .fc-tabs__content {
2106
+ padding: var(--fc-space-md, 12px);
2107
+ }
2108
+ }
2109
+
2110
+ /* src/components/Chat/Chat.css */
2111
+ .message-content-wrapper {
2112
+ position: relative;
2113
+ }
2114
+ .copy-btn {
2115
+ display: inline-flex;
2116
+ align-items: center;
2117
+ gap: 4px;
2118
+ padding: 4px 8px;
2119
+ margin-top: 6px;
2120
+ background: transparent;
2121
+ border: none;
2122
+ border-radius: 6px;
2123
+ font-size: 12px;
2124
+ color: #999;
2125
+ cursor: pointer;
2126
+ transition: all 0.2s ease;
2127
+ font-family: inherit;
2128
+ opacity: 0.6;
2129
+ }
2130
+ .copy-btn:hover {
2131
+ opacity: 1;
2132
+ color: #667eea;
2133
+ background: rgba(102, 126, 234, 0.1);
2134
+ }
2135
+ .copy-btn.copied {
2136
+ opacity: 1;
2137
+ color: #52c41a;
2138
+ }
2139
+ .copy-btn.copied:hover {
2140
+ color: #52c41a;
2141
+ background: rgba(82, 196, 26, 0.1);
2142
+ }
2143
+ .copy-btn svg {
2144
+ flex-shrink: 0;
2145
+ }
2146
+ .copy-btn span {
2147
+ font-size: 12px;
2148
+ line-height: 1;
2149
+ }
2150
+ .chat-container.dark .copy-btn {
2151
+ color: #9c9a92;
2152
+ }
2153
+ .chat-container.dark .copy-btn:hover {
2154
+ color: #5da4e8;
2155
+ background: rgba(93, 164, 232, 0.15);
2156
+ }
2157
+ .chat-container.dark .copy-btn.copied {
2158
+ color: #52c41a;
2159
+ }
2160
+ .chat-container.dark .copy-btn.copied:hover {
2161
+ color: #52c41a;
2162
+ background: rgba(82, 196, 26, 0.15);
2163
+ }
2164
+ .chat-message.user .message-content-wrapper {
2165
+ display: flex;
2166
+ flex-direction: column;
2167
+ align-items: flex-end;
2168
+ }
2169
+ .chat-message.user .copy-btn {
2170
+ align-self: flex-end;
2171
+ }
2172
+ .copy-error-toast {
2173
+ position: fixed;
2174
+ bottom: 80px;
2175
+ left: 50%;
2176
+ transform: translateX(-50%);
2177
+ background: #f5222d;
2178
+ color: white;
2179
+ padding: 8px 16px;
2180
+ border-radius: 8px;
2181
+ font-size: 14px;
2182
+ z-index: 1000;
2183
+ animation: slideUp 0.3s ease;
2184
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
2185
+ font-family: inherit;
2186
+ white-space: nowrap;
2187
+ pointer-events: none;
2188
+ }
2189
+ .chat-container.dark .copy-error-toast {
2190
+ background: #ff4d4f;
2191
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
2192
+ }
2193
+ @keyframes slideUp {
2194
+ from {
2195
+ opacity: 0;
2196
+ transform: translateX(-50%) translateY(20px);
2197
+ }
2198
+ to {
2199
+ opacity: 1;
2200
+ transform: translateX(-50%) translateY(0);
2201
+ }
2202
+ }
2203
+ .chat-message.assistant .message-bubble,
2204
+ .chat-message.user .message-bubble {
2205
+ margin-bottom: 0;
2206
+ }
2207
+ @media (prefers-reduced-motion: reduce) {
2208
+ .copy-btn,
2209
+ .copy-error-toast {
2210
+ transition: none;
2211
+ animation: none;
2212
+ }
2213
+ }
2214
+
2215
+ /* src/styles/index.css */
2216
+ :root {
2217
+ --fc-blue-50: #EBF4FD;
2218
+ --fc-blue-100: #C8E0F8;
2219
+ --fc-blue-200: #93C2F0;
2220
+ --fc-blue-300: #5DA4E8;
2221
+ --fc-blue-400: #2E8AE5;
2222
+ --fc-blue-500: #378ADD;
2223
+ --fc-blue-600: #185FA5;
2224
+ --fc-blue-700: #0C447C;
2225
+ --fc-blue-800: #072D54;
2226
+ --fc-blue-900: #031A33;
2227
+ --fc-gray-50: #FAFAF9;
2228
+ --fc-gray-100: #F1EFE8;
2229
+ --fc-gray-150: #E0DDD4;
2230
+ --fc-gray-200: #D3D1C7;
2231
+ --fc-gray-400: #B5B2A6;
2232
+ --fc-gray-600: #5F5E5A;
2233
+ --fc-gray-700: #3D3D3A;
2234
+ --fc-gray-800: #2C2C2A;
2235
+ --fc-gray-900: #1A1A19;
2236
+ --fc-red-50: #FDEDED;
2237
+ --fc-red-100: #FAD0D0;
2238
+ --fc-red-500: #E24B4A;
2239
+ --fc-red-700: #A83232;
2240
+ --fc-green-50: #EFF6E6;
2241
+ --fc-green-100: #D2EBBA;
2242
+ --fc-green-500: #639922;
2243
+ --fc-green-700: #426815;
2244
+ --fc-yellow-50: #FFF4E0;
2245
+ --fc-yellow-100: #FFE4A8;
2246
+ --fc-yellow-500: #D68000;
2247
+ --fc-yellow-700: #9A5C00;
2248
+ --fc-purple-50: #EEE9FD;
2249
+ --fc-purple-500: #7C5CE8;
2250
+ --fc-purple-700: #5038B0;
2251
+ --fc-orange-50: #FEF0E6;
2252
+ --fc-orange-500: #E8711A;
2253
+ --fc-orange-700: #AA4E0C;
2254
+ --fc-teal-50: #E0F5F5;
2255
+ --fc-teal-500: #00A3A3;
2256
+ --fc-teal-700: #007070;
2257
+ --fc-pink-50: #FDECF3;
2258
+ --fc-pink-500: #D4306A;
2259
+ --fc-pink-700: #9C1E4C;
2260
+ --fc-color-primary: var(--fc-blue-500);
2261
+ --fc-color-primary-hover: var(--fc-blue-600);
2262
+ --fc-color-primary-active: var(--fc-blue-700);
2263
+ --fc-color-primary-subtle: var(--fc-blue-50);
2264
+ --fc-color-bg: #FFFFFF;
2265
+ --fc-color-bg-secondary: var(--fc-gray-50);
2266
+ --fc-color-bg-tertiary: var(--fc-gray-100);
2267
+ --fc-color-bg-elevated: #FFFFFF;
2268
+ --fc-color-bg-overlay: rgba(0, 0, 0, 0.4);
2269
+ --fc-color-text: var(--fc-gray-900);
2270
+ --fc-color-text-secondary: var(--fc-gray-600);
2271
+ --fc-color-text-tertiary: var(--fc-gray-400);
2272
+ --fc-color-text-disabled: var(--fc-gray-400);
2273
+ --fc-color-text-on-primary: #FFFFFF;
2274
+ --fc-color-text-link: var(--fc-blue-600);
2275
+ --fc-color-text-link-hover: var(--fc-blue-700);
2276
+ --fc-color-border: var(--fc-gray-200);
2277
+ --fc-color-border-light: var(--fc-gray-150);
2278
+ --fc-color-border-hover: var(--fc-gray-600);
2279
+ --fc-color-border-focus: var(--fc-blue-500);
2280
+ --fc-color-danger: var(--fc-red-500);
2281
+ --fc-color-danger-hover: var(--fc-red-700);
2282
+ --fc-color-danger-bg: var(--fc-red-50);
2283
+ --fc-color-danger-border: var(--fc-red-100);
2284
+ --fc-color-success: var(--fc-green-500);
2285
+ --fc-color-success-hover: var(--fc-green-700);
2286
+ --fc-color-success-bg: var(--fc-green-50);
2287
+ --fc-color-success-border: var(--fc-green-100);
2288
+ --fc-color-warning: var(--fc-yellow-500);
2289
+ --fc-color-warning-hover: var(--fc-yellow-700);
2290
+ --fc-color-warning-bg: var(--fc-yellow-50);
2291
+ --fc-color-warning-border: var(--fc-yellow-100);
2292
+ --fc-color-info: var(--fc-blue-500);
2293
+ --fc-color-info-bg: var(--fc-blue-50);
2294
+ --fc-color-info-border: var(--fc-blue-100);
2295
+ --fc-color-purple: var(--fc-purple-500);
2296
+ --fc-color-purple-bg: var(--fc-purple-50);
2297
+ --fc-color-orange: var(--fc-orange-500);
2298
+ --fc-color-orange-bg: var(--fc-orange-50);
2299
+ --fc-color-teal: var(--fc-teal-500);
2300
+ --fc-color-teal-bg: var(--fc-teal-50);
2301
+ --fc-color-pink: var(--fc-pink-500);
2302
+ --fc-color-pink-bg: var(--fc-pink-50);
2303
+ --fc-space-xs: 0.25rem;
2304
+ --fc-space-sm: 0.5rem;
2305
+ --fc-space-md: 0.75rem;
2306
+ --fc-space-lg: 1rem;
2307
+ --fc-space-xl: 1.5rem;
2308
+ --fc-space-2xl: 2rem;
2309
+ --fc-space-3xl: 3rem;
2310
+ --fc-radius-xs: 0.125rem;
2311
+ --fc-radius-sm: 0.25rem;
2312
+ --fc-radius-md: 0.5rem;
2313
+ --fc-radius-lg: 0.75rem;
2314
+ --fc-radius-xl: 1rem;
2315
+ --fc-radius-full: 9999px;
2316
+ --fc-font-family:
2317
+ -apple-system,
2318
+ BlinkMacSystemFont,
2319
+ "Segoe UI",
2320
+ Roboto,
2321
+ sans-serif;
2322
+ --fc-font-size-xs: 0.6875rem;
2323
+ --fc-font-size-sm: 0.8125rem;
2324
+ --fc-font-size-md: 0.9375rem;
2325
+ --fc-font-size-lg: 1.125rem;
2326
+ --fc-font-size-xl: 1.375rem;
2327
+ --fc-font-weight-normal: 400;
2328
+ --fc-font-weight-medium: 500;
2329
+ --fc-font-weight-bold: 600;
2330
+ --fc-line-height-tight: 1.3;
2331
+ --fc-line-height-normal: 1.6;
2332
+ --fc-shadow-xs: 0 1px 2px rgba(0,0,0,0.04);
2333
+ --fc-shadow-sm: 0 1px 3px rgba(0,0,0,0.06), 0 1px 2px rgba(0,0,0,0.04);
2334
+ --fc-shadow-md: 0 4px 12px rgba(0,0,0,0.08), 0 2px 4px rgba(0,0,0,0.04);
2335
+ --fc-shadow-lg: 0 8px 24px rgba(0,0,0,0.10), 0 4px 8px rgba(0,0,0,0.06);
2336
+ --fc-transition: 150ms ease;
2337
+ --fc-transition-slow: 250ms ease;
2338
+ --fc-transition-fast: 100ms ease;
2339
+ --fc-z-dropdown: 100;
2340
+ --fc-z-sticky: 200;
2341
+ --fc-z-modal: 300;
2342
+ --fc-z-toast: 400;
2343
+ --fc-z-tooltip: 500;
2344
+ }
2345
+ body {
2346
+ font-family:
2347
+ "Microsoft YaHei UI",
2348
+ -apple-system,
2349
+ BlinkMacSystemFont,
2350
+ "Segoe UI",
2351
+ Roboto,
2352
+ sans-serif;
2353
+ background-color: var(--fc-color-bg);
2354
+ color: var(--fc-color-text);
2355
+ }
2356
+ [data-theme=dark] {
2357
+ --fc-color-primary: var(--fc-blue-300);
2358
+ --fc-color-primary-hover: var(--fc-blue-200);
2359
+ --fc-color-primary-active: var(--fc-blue-100);
2360
+ --fc-color-primary-subtle: rgba(55, 138, 221, 0.12);
2361
+ --fc-color-bg: #0F0F0F;
2362
+ --fc-color-bg-secondary: #1A1A1A;
2363
+ --fc-color-bg-tertiary: #222222;
2364
+ --fc-color-bg-elevated: #282828;
2365
+ --fc-color-bg-overlay: rgba(0, 0, 0, 0.6);
2366
+ --fc-color-text: #E8E8E6;
2367
+ --fc-color-text-secondary: #9C9A92;
2368
+ --fc-color-text-tertiary: #636158;
2369
+ --fc-color-text-disabled: #4A4845;
2370
+ --fc-color-text-on-primary: #FFFFFF;
2371
+ --fc-color-text-link: var(--fc-blue-300);
2372
+ --fc-color-text-link-hover: var(--fc-blue-200);
2373
+ --fc-color-border: #333330;
2374
+ --fc-color-border-light: #2A2A28;
2375
+ --fc-color-border-hover: #555550;
2376
+ --fc-color-border-focus: var(--fc-blue-400);
2377
+ --fc-color-danger: #F06060;
2378
+ --fc-color-danger-hover: #F58080;
2379
+ --fc-color-danger-bg: rgba(226, 75, 74, 0.12);
2380
+ --fc-color-danger-border: rgba(226, 75, 74, 0.25);
2381
+ --fc-color-success: #7EBB38;
2382
+ --fc-color-success-hover: #9FD058;
2383
+ --fc-color-success-bg: rgba(99, 153, 34, 0.12);
2384
+ --fc-color-success-border: rgba(99, 153, 34, 0.25);
2385
+ --fc-color-warning: #F0A030;
2386
+ --fc-color-warning-hover: #F5BC60;
2387
+ --fc-color-warning-bg: rgba(214, 128, 0, 0.12);
2388
+ --fc-color-warning-border: rgba(214, 128, 0, 0.25);
2389
+ --fc-color-info: var(--fc-blue-300);
2390
+ --fc-color-info-bg: rgba(55, 138, 221, 0.12);
2391
+ --fc-color-info-border: rgba(55, 138, 221, 0.25);
2392
+ --fc-color-purple: #A080F0;
2393
+ --fc-color-purple-bg: rgba(124, 92, 232, 0.12);
2394
+ --fc-color-orange: #F08840;
2395
+ --fc-color-orange-bg: rgba(232, 113, 26, 0.12);
2396
+ --fc-color-teal: #20C8C8;
2397
+ --fc-color-teal-bg: rgba(0, 163, 163, 0.12);
2398
+ --fc-color-pink: #E860A0;
2399
+ --fc-color-pink-bg: rgba(212, 48, 106, 0.12);
2400
+ --fc-shadow-xs: 0 1px 2px rgba(0,0,0,0.3);
2401
+ --fc-shadow-sm: 0 1px 3px rgba(0,0,0,0.4), 0 1px 2px rgba(0,0,0,0.3);
2402
+ --fc-shadow-md: 0 4px 12px rgba(0,0,0,0.5), 0 2px 4px rgba(0,0,0,0.3);
2403
+ --fc-shadow-lg: 0 8px 24px rgba(0,0,0,0.6), 0 4px 8px rgba(0,0,0,0.4);
2404
+ }
2405
+ body {
2406
+ font-family: var(--fc-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);
2407
+ background-color: var(--fc-color-bg, #FFFFFF);
2408
+ color: var(--fc-color-text, #1A1A19);
2409
+ margin: 0;
2410
+ padding: 0;
2411
+ line-height: var(--fc-line-height-normal, 1.6);
2412
+ -webkit-font-smoothing: antialiased;
2413
+ -moz-osx-font-smoothing: grayscale;
2414
+ }
2415
+ [data-theme=dark] body {
2416
+ background-color: var(--fc-color-bg, #0F0F0F);
2417
+ color: var(--fc-color-text, #E8E8E6);
2418
+ }
2419
+ * {
2420
+ box-sizing: border-box;
2421
+ }
2422
+ ::-webkit-scrollbar {
2423
+ width: 8px;
2424
+ height: 8px;
2425
+ }
2426
+ ::-webkit-scrollbar-track {
2427
+ background: var(--fc-color-bg-tertiary, #F1EFE8);
2428
+ border-radius: var(--fc-radius-full, 9999px);
2429
+ }
2430
+ ::-webkit-scrollbar-thumb {
2431
+ background: var(--fc-color-border, #D3D1C7);
2432
+ border-radius: var(--fc-radius-full, 9999px);
2433
+ }
2434
+ ::-webkit-scrollbar-thumb:hover {
2435
+ background: var(--fc-color-border-hover, #5F5E5A);
2436
+ }
2437
+ [data-theme=dark] ::-webkit-scrollbar-track {
2438
+ background: var(--fc-color-bg-tertiary, #222222);
2439
+ }
2440
+ [data-theme=dark] ::-webkit-scrollbar-thumb {
2441
+ background: var(--fc-color-border, #333330);
2442
+ }
2443
+ [data-theme=dark] ::-webkit-scrollbar-thumb:hover {
2444
+ background: var(--fc-color-border-hover, #555550);
2445
+ }
2446
+ ::selection {
2447
+ background-color: var(--fc-color-primary-subtle, #EBF4FD);
2448
+ color: var(--fc-color-primary, #378ADD);
2449
+ }
2450
+ [data-theme=dark] ::selection {
2451
+ background-color: rgba(55, 138, 221, 0.3);
2452
+ color: var(--fc-color-primary, #5DA4E8);
2453
+ }
2454
+ :focus-visible {
2455
+ outline: 2px solid var(--fc-color-border-focus, #378ADD);
2456
+ outline-offset: 2px;
2457
+ border-radius: var(--fc-radius-sm, 4px);
2458
+ }
2459
+ .theme-light {
2460
+ --fc-color-bg: #FFFFFF !important;
2461
+ --fc-color-bg-secondary: var(--fc-gray-50) !important;
2462
+ --fc-color-bg-tertiary: var(--fc-gray-100) !important;
2463
+ --fc-color-text: var(--fc-gray-900) !important;
2464
+ --fc-color-text-secondary: var(--fc-gray-600) !important;
2465
+ --fc-color-border: var(--fc-gray-200) !important;
2466
+ --fc-color-border-light: var(--fc-gray-150) !important;
2467
+ }
2468
+ .theme-dark {
2469
+ --fc-color-primary: var(--fc-blue-300) !important;
2470
+ --fc-color-primary-hover: var(--fc-blue-200) !important;
2471
+ --fc-color-primary-active: var(--fc-blue-100) !important;
2472
+ --fc-color-primary-subtle: rgba(55, 138, 221, 0.12) !important;
2473
+ --fc-color-bg: #0F0F0F !important;
2474
+ --fc-color-bg-secondary: #1A1A1A !important;
2475
+ --fc-color-bg-tertiary: #222222 !important;
2476
+ --fc-color-bg-elevated: #282828 !important;
2477
+ --fc-color-bg-overlay: rgba(0, 0, 0, 0.6) !important;
2478
+ --fc-color-text: #E8E8E6 !important;
2479
+ --fc-color-text-secondary: #9C9A92 !important;
2480
+ --fc-color-text-tertiary: #636158 !important;
2481
+ --fc-color-text-disabled: #4A4845 !important;
2482
+ --fc-color-text-on-primary: #FFFFFF !important;
2483
+ --fc-color-border: #333330 !important;
2484
+ --fc-color-border-light: #2A2A28 !important;
2485
+ --fc-color-border-hover: #555550 !important;
2486
+ --fc-color-border-focus: var(--fc-blue-400) !important;
2487
+ --fc-color-danger: #F06060 !important;
2488
+ --fc-color-danger-hover: #F58080 !important;
2489
+ --fc-color-danger-bg: rgba(226, 75, 74, 0.12) !important;
2490
+ --fc-color-danger-border: rgba(226, 75, 74, 0.25) !important;
2491
+ --fc-color-success: #7EBB38 !important;
2492
+ --fc-color-success-hover: #9FD058 !important;
2493
+ --fc-color-success-bg: rgba(99, 153, 34, 0.12) !important;
2494
+ --fc-color-success-border: rgba(99, 153, 34, 0.25) !important;
2495
+ --fc-color-warning: #F0A030 !important;
2496
+ --fc-color-warning-hover: #F5BC60 !important;
2497
+ --fc-color-warning-bg: rgba(214, 128, 0, 0.12) !important;
2498
+ --fc-color-warning-border: rgba(214, 128, 0, 0.25) !important;
2499
+ --fc-shadow-xs: 0 1px 2px rgba(0,0,0,0.3) !important;
2500
+ --fc-shadow-sm: 0 1px 3px rgba(0,0,0,0.4), 0 1px 2px rgba(0,0,0,0.3) !important;
2501
+ --fc-shadow-md: 0 4px 12px rgba(0,0,0,0.5), 0 2px 4px rgba(0,0,0,0.3) !important;
2502
+ --fc-shadow-lg: 0 8px 24px rgba(0,0,0,0.6), 0 4px 8px rgba(0,0,0,0.4) !important;
2503
+ }
2504
+ .theme-dark .fc-list-group {
2505
+ background-color: var(--fc-color-bg, #0F0F0F) !important;
2506
+ }
2507
+ .theme-dark .fc-list-group-item {
2508
+ background-color: var(--fc-color-bg, #0F0F0F) !important;
2509
+ color: var(--fc-color-text, #E8E8E6) !important;
2510
+ border-bottom-color: var(--fc-color-border-light, #2A2A28) !important;
2511
+ }
2512
+ .theme-dark .fc-list-group--bordered {
2513
+ border-color: var(--fc-color-border, #333330) !important;
2514
+ }
2515
+ .theme-dark .fc-list-group-item:hover:not(.fc-list-group-item--disabled) {
2516
+ background-color: var(--fc-color-bg-secondary, #1A1A1A) !important;
2517
+ }
2518
+ .theme-dark .fc-list-group-item--active {
2519
+ background-color: var(--fc-color-primary-subtle, rgba(55, 138, 221, 0.12)) !important;
2520
+ color: var(--fc-color-primary, #5DA4E8) !important;
2521
+ border-left-color: var(--fc-color-primary, #5DA4E8) !important;
2522
+ }