flowcloudai-ui 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.css CHANGED
@@ -4,6 +4,7 @@
4
4
  --btn-bg-hover: var(--fc-color-bg-secondary, #f3f4f6);
5
5
  --btn-bg-active: var(--fc-color-bg-tertiary, #e5e7eb);
6
6
  --btn-color: var(--fc-color-text, #111827);
7
+ --btn-color-hover: var(--btn-color);
7
8
  --btn-color-active: var(--fc-color-text-secondary, #6b7280);
8
9
  --btn-border: transparent;
9
10
  --btn-border-hover: transparent;
@@ -28,6 +29,7 @@
28
29
  }
29
30
  .fc-btn:hover:not(:disabled):not(.is-disabled) {
30
31
  background-color: var(--btn-bg-hover);
32
+ color: var(--btn-color-hover);
31
33
  border-color: var(--btn-border-hover);
32
34
  }
33
35
  .fc-btn:active:not(:disabled):not(.is-disabled) {
@@ -46,6 +48,7 @@
46
48
  --btn-bg-hover: var(--fc-color-primary-hover, #4f46e5);
47
49
  --btn-bg-active: var(--fc-color-primary-active, #4338ca);
48
50
  --btn-color: var(--fc-color-text-on-primary, #ffffff);
51
+ --btn-color-hover: var(--fc-color-text-on-primary, #ffffff);
49
52
  --btn-color-active: var(--fc-color-text-on-primary, #ffffff);
50
53
  --btn-border: var(--fc-color-primary, #6366f1);
51
54
  --btn-border-hover: var(--fc-color-primary-hover, #4f46e5);
@@ -55,6 +58,7 @@
55
58
  --btn-bg-hover: var(--fc-color-bg-tertiary, #e5e7eb);
56
59
  --btn-bg-active: var(--fc-color-bg-tertiary, #e5e7eb);
57
60
  --btn-color: var(--fc-color-text, #111827);
61
+ --btn-color-hover: var(--fc-color-text, #111827);
58
62
  --btn-color-active: var(--fc-color-text-secondary, #6b7280);
59
63
  --btn-border: var(--fc-color-border, #e5e7eb);
60
64
  --btn-border-hover: var(--fc-color-border-hover, #d1d5db);
@@ -64,6 +68,7 @@
64
68
  --btn-bg-hover: var(--fc-color-primary-subtle, #eff6ff);
65
69
  --btn-bg-active: var(--fc-color-primary-subtle, #eff6ff);
66
70
  --btn-color: var(--fc-color-primary, #6366f1);
71
+ --btn-color-hover: var(--fc-color-primary, #6366f1);
67
72
  --btn-color-active: var(--fc-color-primary-hover, #4f46e5);
68
73
  --btn-border: var(--fc-color-primary, #6366f1);
69
74
  --btn-border-hover: var(--fc-color-primary-hover, #4f46e5);
@@ -73,6 +78,7 @@
73
78
  --btn-bg-hover: var(--fc-color-bg-secondary, #f3f4f6);
74
79
  --btn-bg-active: var(--fc-color-bg-tertiary, #e5e7eb);
75
80
  --btn-color: var(--fc-color-text, #111827);
81
+ --btn-color-hover: var(--fc-color-text, #111827);
76
82
  --btn-color-active: var(--fc-color-text-secondary, #6b7280);
77
83
  --btn-border: transparent;
78
84
  --btn-border-hover: transparent;
@@ -82,6 +88,7 @@
82
88
  --btn-bg-hover: var(--fc-color-danger-hover, #dc2626);
83
89
  --btn-bg-active: var(--fc-color-danger-hover, #dc2626);
84
90
  --btn-color: var(--fc-color-text-on-primary, #ffffff);
91
+ --btn-color-hover: var(--fc-color-text-on-primary, #ffffff);
85
92
  --btn-color-active: var(--fc-color-text-on-primary, #ffffff);
86
93
  --btn-border: var(--fc-color-danger, #ef4444);
87
94
  --btn-border-hover: var(--fc-color-danger-hover, #dc2626);
@@ -92,6 +99,7 @@
92
99
  --btn-bg-hover: var(--fc-color-danger-bg, #fee2e2);
93
100
  --btn-bg-active: var(--fc-color-danger-bg, #fee2e2);
94
101
  --btn-color: var(--fc-color-danger, #ef4444);
102
+ --btn-color-hover: var(--fc-color-danger, #ef4444);
95
103
  --btn-color-active: var(--fc-color-danger, #ef4444);
96
104
  --btn-border: var(--fc-color-danger, #ef4444);
97
105
  --btn-border-hover: var(--fc-color-danger, #ef4444);
@@ -104,6 +112,7 @@
104
112
  --btn-bg-hover: var(--fc-color-success-hover, #059669);
105
113
  --btn-bg-active: var(--fc-color-success-hover, #059669);
106
114
  --btn-color: var(--fc-color-text-on-primary, #ffffff);
115
+ --btn-color-hover: var(--fc-color-text-on-primary, #ffffff);
107
116
  --btn-color-active: var(--fc-color-text-on-primary, #ffffff);
108
117
  --btn-border: var(--fc-color-success, #10b981);
109
118
  --btn-border-hover: var(--fc-color-success-hover, #059669);
@@ -113,6 +122,7 @@
113
122
  --btn-bg-hover: var(--fc-color-success-bg, #d1fae5);
114
123
  --btn-bg-active: var(--fc-color-success-bg, #d1fae5);
115
124
  --btn-color: var(--fc-color-success, #10b981);
125
+ --btn-color-hover: var(--fc-color-success, #10b981);
116
126
  --btn-color-active: var(--fc-color-success, #10b981);
117
127
  --btn-border: var(--fc-color-success, #10b981);
118
128
  --btn-border-hover: var(--fc-color-success, #10b981);
@@ -122,6 +132,7 @@
122
132
  --btn-bg-hover: var(--fc-color-warning-hover, #d97706);
123
133
  --btn-bg-active: var(--fc-color-warning-hover, #d97706);
124
134
  --btn-color: var(--fc-color-text-on-primary, #ffffff);
135
+ --btn-color-hover: var(--fc-color-text-on-primary, #ffffff);
125
136
  --btn-color-active: var(--fc-color-text-on-primary, #ffffff);
126
137
  --btn-border: var(--fc-color-warning, #f59e0b);
127
138
  --btn-border-hover: var(--fc-color-warning-hover, #d97706);
@@ -131,6 +142,7 @@
131
142
  --btn-bg-hover: var(--fc-color-warning-bg, #fef3c7);
132
143
  --btn-bg-active: var(--fc-color-warning-bg, #fef3c7);
133
144
  --btn-color: var(--fc-color-warning, #f59e0b);
145
+ --btn-color-hover: var(--fc-color-warning, #f59e0b);
134
146
  --btn-color-active: var(--fc-color-warning, #f59e0b);
135
147
  --btn-border: var(--fc-color-warning, #f59e0b);
136
148
  --btn-border-hover: var(--fc-color-warning, #f59e0b);
@@ -257,12 +269,12 @@
257
269
  flex-shrink: 0;
258
270
  width: var(--track-w);
259
271
  height: var(--track-h);
260
- background-color: var(--fc-color-bg-tertiary);
272
+ background-color: var(--check-track-bg, var(--fc-color-bg-tertiary));
261
273
  border-radius: var(--fc-radius-full);
262
274
  transition: background-color var(--fc-transition);
263
275
  }
264
276
  .fc-check--checked .fc-check__track {
265
- background-color: var(--fc-color-primary);
277
+ background-color: var(--check-track-bg-checked, var(--fc-color-primary));
266
278
  }
267
279
  .fc-check:focus-visible .fc-check__track {
268
280
  box-shadow: 0 0 0 2px var(--fc-color-bg), 0 0 0 4px var(--fc-color-border-focus);
@@ -276,7 +288,7 @@
276
288
  display: flex;
277
289
  align-items: center;
278
290
  justify-content: center;
279
- background-color: var(--fc-color-bg-elevated);
291
+ background-color: var(--check-thumb-bg, var(--fc-color-bg-elevated));
280
292
  border-radius: var(--fc-radius-full);
281
293
  box-shadow: var(--fc-shadow-sm);
282
294
  transition: transform var(--fc-transition-slow) cubic-bezier(0.34, 1.56, 0.64, 1);
@@ -305,13 +317,13 @@
305
317
  .fc-check--checked .fc-check__thumb-inner {
306
318
  opacity: 1;
307
319
  transform: scale(1);
308
- background-color: var(--fc-color-primary);
320
+ background-color: var(--check-thumb-dot-color, var(--fc-color-primary));
309
321
  }
310
322
  .fc-check__label {
311
323
  font-size: var(--label-size);
312
324
  font-weight: var(--fc-font-weight-medium);
313
325
  line-height: var(--fc-line-height-tight);
314
- color: var(--fc-color-text);
326
+ color: var(--check-label-color, var(--fc-color-text));
315
327
  }
316
328
  .fc-check--disabled {
317
329
  cursor: not-allowed;
@@ -322,7 +334,7 @@
322
334
  background-color: var(--fc-color-bg-secondary);
323
335
  }
324
336
  .fc-check--disabled.fc-check--checked .fc-check__track {
325
- background-color: var(--fc-color-primary);
337
+ background-color: var(--check-track-bg-checked, var(--fc-color-primary));
326
338
  opacity: 0.5;
327
339
  }
328
340
  .fc-check--disabled .fc-check__label {
@@ -414,9 +426,6 @@
414
426
  .fc-sidebar {
415
427
  --sidebar-width: 240px;
416
428
  --sidebar-collapsed-width: 64px;
417
- --sidebar-item-bg: transparent;
418
- --sidebar-item-color: var(--fc-color-text-secondary);
419
- --sidebar-item-indent: 0px;
420
429
  display: flex;
421
430
  flex-direction: column;
422
431
  width: var(--sidebar-width);
@@ -424,12 +433,12 @@
424
433
  background: var(--fc-color-bg-secondary);
425
434
  border-right: 1px solid var(--fc-color-border);
426
435
  overflow: hidden;
427
- transition: width var(--fc-transition-slow);
436
+ transition: width var(--fc-transition-slow, 250ms ease);
428
437
  }
429
438
  .fc-sidebar__header {
430
439
  display: flex;
431
440
  justify-content: flex-end;
432
- padding: var(--fc-space-md);
441
+ padding: var(--fc-space-md, 12px);
433
442
  border-bottom: 1px solid var(--fc-color-border);
434
443
  }
435
444
  .fc-sidebar__collapse-btn {
@@ -442,127 +451,91 @@
442
451
  background: transparent;
443
452
  color: var(--fc-color-text-secondary);
444
453
  cursor: pointer;
445
- border-radius: var(--fc-radius-md);
446
- transition: background var(--fc-transition), color var(--fc-transition);
454
+ border-radius: var(--fc-radius-md, 8px);
455
+ transition: background var(--fc-transition, 150ms ease), color var(--fc-transition, 150ms ease);
447
456
  }
448
457
  .fc-sidebar__collapse-btn:hover {
449
458
  background: var(--fc-color-bg-tertiary);
450
459
  color: var(--fc-color-text);
451
460
  }
452
- .fc-sidebar__collapse-btn:focus-visible {
453
- outline: 2px solid var(--fc-color-primary);
454
- outline-offset: -2px;
461
+ .fc-sidebar__collapse-icon {
462
+ flex-shrink: 0;
463
+ transition: transform var(--fc-transition, 150ms ease);
455
464
  }
456
465
  .fc-sidebar__menu {
457
466
  flex: 1;
458
467
  overflow-y: auto;
459
- padding: var(--fc-space-sm) 0;
468
+ padding: var(--fc-space-sm, 8px) 0;
460
469
  }
461
470
  .fc-sidebar__item {
462
- --sidebar-item-bg: transparent;
463
- --sidebar-item-color: var(--fc-color-text-secondary);
464
471
  display: flex;
465
472
  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);
473
+ gap: 0;
474
+ padding: var(--fc-space-md, 12px) 0;
475
+ margin: 2px var(--fc-space-sm, 8px);
476
+ border-radius: var(--fc-radius-md, 8px);
471
477
  cursor: pointer;
472
- background: var(--sidebar-item-bg);
473
- color: var(--sidebar-item-color);
474
- position: relative;
478
+ background: var(--sidebar-item-bg, transparent);
479
+ color: var(--sidebar-item-color, var(--fc-color-text-secondary));
480
+ text-decoration: none;
481
+ white-space: nowrap;
475
482
  overflow: hidden;
476
483
  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
+ transition: background var(--fc-transition, 150ms ease), color var(--fc-transition, 150ms ease);
484
485
  }
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;
486
+ .fc-sidebar__item:hover:not(.fc-sidebar__item--disabled):not(.fc-sidebar__item--selected) {
487
+ background: var(--sidebar-item-hover-bg, var(--fc-color-bg-tertiary));
488
+ color: var(--sidebar-item-hover-color, var(--fc-color-text));
492
489
  }
493
490
  .fc-sidebar__item--selected {
494
- --sidebar-item-bg: var(--fc-color-primary-subtle);
495
- --sidebar-item-color: var(--fc-color-primary);
491
+ background: var(--sidebar-item-selected-bg, var(--fc-color-primary-subtle));
492
+ color: var(--sidebar-item-selected-color, var(--fc-color-primary));
496
493
  }
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;
494
+ .fc-sidebar__item--selected:hover {
495
+ background: var(--sidebar-item-selected-bg, var(--fc-color-primary-subtle));
496
+ color: var(--sidebar-item-selected-color, var(--fc-color-primary));
507
497
  }
508
498
  .fc-sidebar__item--disabled {
509
499
  opacity: 0.5;
510
500
  cursor: not-allowed;
511
501
  pointer-events: none;
512
502
  }
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
503
  .fc-sidebar__icon {
520
504
  display: flex;
521
505
  align-items: center;
522
506
  justify-content: center;
523
- width: 20px;
507
+ width: calc(var(--sidebar-collapsed-width) - var(--fc-space-sm, 8px) * 2);
524
508
  height: 20px;
525
509
  flex-shrink: 0;
526
- font-size: var(--fc-font-size-lg);
510
+ }
511
+ .fc-sidebar__icon svg {
512
+ width: 20px;
513
+ height: 20px;
514
+ color: inherit;
515
+ fill: none;
516
+ stroke: currentColor;
527
517
  }
528
518
  .fc-sidebar__label {
529
519
  flex: 1;
530
- font-size: var(--fc-font-size-md);
520
+ min-width: 0;
521
+ font-size: var(--fc-font-size-md, 14px);
522
+ padding-right: var(--fc-space-lg, 16px);
531
523
  overflow: hidden;
532
524
  text-overflow: ellipsis;
525
+ opacity: 1;
526
+ transition: opacity var(--fc-transition-slow, 250ms ease);
533
527
  }
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;
528
+ .fc-sidebar--collapsed .fc-sidebar__label {
529
+ opacity: 0;
530
+ padding-right: 0;
559
531
  }
560
- .fc-sidebar--collapsed .fc-sidebar__item {
561
- justify-content: center;
562
- padding: var(--fc-space-md);
532
+ [data-theme=dark] .fc-sidebar {
533
+ background: var(--fc-color-bg-secondary);
534
+ border-right-color: var(--fc-color-border);
563
535
  }
564
- .fc-sidebar--collapsed .fc-sidebar__submenu {
565
- display: none;
536
+ [data-theme=dark] .fc-sidebar__item--selected {
537
+ background: var(--sidebar-item-selected-bg, var(--fc-color-primary-subtle));
538
+ color: var(--sidebar-item-selected-color, var(--fc-color-primary));
566
539
  }
567
540
 
568
541
  /* src/components/Input/Input.css */
@@ -591,7 +564,7 @@
591
564
  color: var(--fc-color-text);
592
565
  font-size: var(--fc-font-size-md);
593
566
  line-height: var(--fc-line-height-tight);
594
- outline: none;
567
+ outline: none !important;
595
568
  }
596
569
  .fc-input__field::placeholder {
597
570
  color: var(--fc-color-text-tertiary);
@@ -602,27 +575,40 @@
602
575
  .fc-input--xs .fc-input__field {
603
576
  font-size: var(--fc-font-size-xs);
604
577
  padding: 0 var(--fc-space-sm);
578
+ padding-top: 0.25rem;
579
+ padding-bottom: 0.25rem;
605
580
  }
606
581
  .fc-input--sm .fc-input__wrapper {
607
582
  height: 2rem;
608
583
  }
609
584
  .fc-input--sm .fc-input__field {
610
585
  font-size: var(--fc-font-size-sm);
586
+ padding-top: 0.375rem;
587
+ padding-bottom: 0.375rem;
611
588
  }
612
589
  .fc-input--md .fc-input__wrapper {
613
590
  height: 2.5rem;
614
591
  }
592
+ .fc-input--md .fc-input__field {
593
+ font-size: var(--fc-font-size-md);
594
+ padding-top: 0.5rem;
595
+ padding-bottom: 0.5rem;
596
+ }
615
597
  .fc-input--lg .fc-input__wrapper {
616
598
  height: 3rem;
617
599
  }
618
600
  .fc-input--lg .fc-input__field {
619
601
  font-size: var(--fc-font-size-lg);
602
+ padding-top: 0.625rem;
603
+ padding-bottom: 0.625rem;
620
604
  }
621
605
  .fc-input--xl .fc-input__wrapper {
622
606
  height: 3.5rem;
623
607
  }
624
608
  .fc-input--xl .fc-input__field {
625
609
  font-size: var(--fc-font-size-xl);
610
+ padding-top: 0.75rem;
611
+ padding-bottom: 0.75rem;
626
612
  }
627
613
  .fc-input--error .fc-input__wrapper {
628
614
  border-color: var(--fc-color-danger);
@@ -639,10 +625,21 @@
639
625
  .fc-input:not(.fc-input--disabled):hover .fc-input__wrapper {
640
626
  border-color: var(--fc-color-border-hover);
641
627
  }
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);
628
+ .fc-input:not(.fc-input--disabled) .fc-input__wrapper:focus-within {
629
+ border-color: var(--fc-color-primary);
630
+ box-shadow: 0 0 0 2px var(--fc-color-primary-subtle);
631
+ }
632
+ .fc-input--error .fc-input__wrapper:focus-within {
633
+ border-color: var(--fc-color-danger);
634
+ box-shadow: 0 0 0 2px var(--fc-color-danger);
635
+ }
636
+ .fc-input--warning .fc-input__wrapper:focus-within {
637
+ border-color: var(--fc-color-warning);
638
+ box-shadow: 0 0 0 2px var(--fc-color-warning);
639
+ }
640
+ .fc-input--success .fc-input__wrapper:focus-within {
641
+ border-color: var(--fc-color-success);
642
+ box-shadow: 0 0 0 2px var(--fc-color-success);
646
643
  }
647
644
  .fc-input__prefix,
648
645
  .fc-input__suffix,
@@ -654,8 +651,8 @@
654
651
  white-space: nowrap;
655
652
  }
656
653
  .fc-input__prefix {
657
- margin-left: var(--fc-space-md);
658
- margin-right: var(--fc-space-sm);
654
+ padding-left: var(--fc-space-md);
655
+ margin-right: var(--fc-space-xs);
659
656
  }
660
657
  .fc-input__suffix {
661
658
  margin-right: var(--fc-space-md);
@@ -717,13 +714,13 @@
717
714
  font-size: var(--fc-font-size-xs);
718
715
  color: var(--fc-color-text-secondary);
719
716
  }
720
- .fc-input__helper--error {
717
+ .fc-input--error .fc-input__helper {
721
718
  color: var(--fc-color-danger);
722
719
  }
723
- .fc-input__helper--warning {
720
+ .fc-input--warning .fc-input__helper {
724
721
  color: var(--fc-color-warning);
725
722
  }
726
- .fc-input__helper--success {
723
+ .fc-input--success .fc-input__helper {
727
724
  color: var(--fc-color-success);
728
725
  }
729
726
  .fc-input--disabled {
@@ -753,7 +750,7 @@
753
750
  }
754
751
  .fc-slider__track {
755
752
  position: relative;
756
- background: var(--fc-color-bg-tertiary);
753
+ background: var(--slider-track-bg, var(--fc-color-bg-tertiary));
757
754
  border-radius: var(--fc-radius-full);
758
755
  cursor: pointer;
759
756
  }
@@ -767,7 +764,7 @@
767
764
  }
768
765
  .fc-slider__fill {
769
766
  position: absolute;
770
- background: var(--fc-color-primary);
767
+ background: var(--slider-fill-bg, var(--fc-color-primary));
771
768
  border-radius: var(--fc-radius-full);
772
769
  transition: all 0.1s;
773
770
  }
@@ -778,8 +775,8 @@
778
775
  position: absolute;
779
776
  width: 16px;
780
777
  height: 16px;
781
- background: var(--fc-color-bg-elevated);
782
- border: 2px solid var(--fc-color-primary);
778
+ background: var(--slider-thumb-bg, var(--fc-color-bg-elevated));
779
+ border: 2px solid var(--slider-thumb-border, var(--fc-color-primary));
783
780
  border-radius: var(--fc-radius-full);
784
781
  transform: translate(-50%, -50%);
785
782
  cursor: grab;
@@ -814,8 +811,8 @@
814
811
  left: 50%;
815
812
  transform: translateX(-50%) translateY(-8px);
816
813
  padding: var(--fc-space-xs) var(--fc-space-sm);
817
- background: var(--fc-color-bg-elevated);
818
- color: var(--fc-color-text);
814
+ background: var(--slider-tooltip-bg, var(--fc-color-bg-elevated));
815
+ color: var(--slider-tooltip-color, var(--fc-color-text));
819
816
  font-size: var(--fc-font-size-xs);
820
817
  border-radius: var(--fc-radius-sm);
821
818
  box-shadow: var(--fc-shadow-md);
@@ -845,7 +842,7 @@
845
842
  .fc-slider__mark-dot {
846
843
  width: 4px;
847
844
  height: 4px;
848
- background: var(--fc-color-text-tertiary);
845
+ background: var(--slider-mark-dot-bg, var(--fc-color-text-tertiary));
849
846
  border-radius: var(--fc-radius-full);
850
847
  }
851
848
  .fc-slider__mark-label {
@@ -854,7 +851,7 @@
854
851
  left: 50%;
855
852
  transform: translateX(-50%);
856
853
  font-size: var(--fc-font-size-xs);
857
- color: var(--fc-color-text-secondary);
854
+ color: var(--slider-mark-label-color, var(--fc-color-text-secondary));
858
855
  white-space: nowrap;
859
856
  }
860
857
  .fc-slider--vertical .fc-slider__mark-label {
@@ -876,6 +873,11 @@
876
873
 
877
874
  /* src/components/Select/Select.css */
878
875
  .fc-select {
876
+ --select-trigger-bg: var(--fc-color-bg);
877
+ --select-trigger-border: var(--fc-color-border);
878
+ --select-option-selected-color: var(--fc-color-primary);
879
+ --select-option-selected-bg: var(--fc-color-primary-subtle);
880
+ --select-option-hover-bg: var(--fc-color-bg-secondary);
879
881
  position: relative;
880
882
  display: inline-block;
881
883
  width: 100%;
@@ -886,8 +888,8 @@
886
888
  align-items: center;
887
889
  justify-content: space-between;
888
890
  padding: var(--fc-space-md) var(--fc-space-lg);
889
- background: var(--fc-color-bg);
890
- border: 1px solid var(--fc-color-border);
891
+ background: var(--select-trigger-bg);
892
+ border: 1px solid var(--select-trigger-border);
891
893
  border-radius: var(--fc-radius-md);
892
894
  cursor: pointer;
893
895
  transition: border-color var(--fc-transition), box-shadow var(--fc-transition);
@@ -964,11 +966,11 @@
964
966
  }
965
967
  .fc-select__option:hover,
966
968
  .fc-select__option--highlighted {
967
- background: var(--fc-color-bg-secondary);
969
+ background: var(--select-option-hover-bg);
968
970
  }
969
971
  .fc-select__option--selected {
970
- color: var(--fc-color-primary);
971
- background: var(--fc-color-primary-subtle);
972
+ color: var(--select-option-selected-color);
973
+ background: var(--select-option-selected-bg);
972
974
  }
973
975
  .fc-select__option--disabled {
974
976
  opacity: 0.5;
@@ -1659,10 +1661,14 @@
1659
1661
 
1660
1662
  /* src/components/VirtualList/VirtualList.css */
1661
1663
  .fc-virtual-list {
1664
+ --vl-bg: var(--fc-color-bg);
1665
+ --vl-track-bg: var(--fc-color-bg-tertiary);
1666
+ --vl-thumb-bg: var(--fc-color-border);
1667
+ --vl-thumb-hover: var(--fc-color-border-hover);
1662
1668
  position: relative;
1663
1669
  overflow-y: auto;
1664
1670
  overflow-x: hidden;
1665
- background-color: var(--fc-color-bg, #ffffff);
1671
+ background-color: var(--vl-bg);
1666
1672
  border-radius: var(--fc-radius-md, 8px);
1667
1673
  }
1668
1674
  .fc-virtual-list--hide-scrollbar {
@@ -1694,35 +1700,20 @@
1694
1700
  height: 6px;
1695
1701
  }
1696
1702
  .fc-virtual-list::-webkit-scrollbar-track {
1697
- background: var(--fc-color-bg-tertiary, #f3f4f6);
1703
+ background: var(--vl-track-bg);
1698
1704
  border-radius: var(--fc-radius-full, 9999px);
1699
1705
  }
1700
1706
  .fc-virtual-list::-webkit-scrollbar-thumb {
1701
- background: var(--fc-color-border, #d1d5db);
1707
+ background: var(--vl-thumb-bg);
1702
1708
  border-radius: var(--fc-radius-full, 9999px);
1703
1709
  }
1704
1710
  .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;
1711
+ background: var(--vl-thumb-hover);
1714
1712
  }
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;
1713
+ [data-theme=dark] .fc-virtual-list {
1714
+ --vl-track-bg: #222222;
1715
+ --vl-thumb-bg: #333330;
1716
+ --vl-thumb-hover: #555550;
1726
1717
  }
1727
1718
 
1728
1719
  /* src/components/Alert/AlertContext.css */
@@ -1785,6 +1776,9 @@
1785
1776
  padding: 0 var(--fc-space-xs);
1786
1777
  margin-bottom: var(--fc-space-lg);
1787
1778
  }
1779
+ .fc-alert--toast .fc-alert__msg {
1780
+ margin-bottom: 0;
1781
+ }
1788
1782
  .fc-alert__footer {
1789
1783
  display: flex;
1790
1784
  align-items: center;
@@ -1941,105 +1935,177 @@
1941
1935
  display: block;
1942
1936
  }
1943
1937
 
1944
- /* src/components/Tabs/Tabs.css */
1945
- .fc-tabs {
1938
+ /* src/components/Bar/TabBar.css */
1939
+ .fc-tab-bar {
1940
+ --tab-bar-bg: var(--fc-color-bg-secondary);
1941
+ --tab-color: var(--fc-color-text-secondary);
1942
+ --tab-hover-color: var(--fc-color-primary);
1943
+ --tab-hover-bg: var(--fc-color-bg-tertiary);
1944
+ --tab-active-color: var(--fc-color-primary);
1945
+ --tab-active-bg: var(--fc-color-bg);
1946
+ --tab-active-indicator: var(--fc-color-primary);
1947
+ --tab-bar-radius-tl: var(--fc-radius-md);
1948
+ --tab-bar-radius-tr: var(--fc-radius-md);
1949
+ --tab-bar-radius-br: 0px;
1950
+ --tab-bar-radius-bl: 0px;
1951
+ --tab-item-radius-tl: 0px;
1952
+ --tab-item-radius-tr: 0px;
1953
+ --tab-item-radius-br: 0px;
1954
+ --tab-item-radius-bl: 0px;
1946
1955
  display: flex;
1947
1956
  flex-direction: column;
1948
1957
  width: 100%;
1949
- background-color: var(--fc-color-bg);
1958
+ background-color: var(--tab-bar-bg);
1950
1959
  color: var(--fc-color-text);
1951
1960
  overflow: hidden;
1961
+ border-radius: var(--tab-bar-radius-tl) var(--tab-bar-radius-tr) var(--tab-bar-radius-br) var(--tab-bar-radius-bl);
1952
1962
  }
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);
1963
+ .fc-tab-bar--radius-none {
1964
+ --tab-bar-radius-tl: 0px;
1965
+ --tab-bar-radius-tr: 0px;
1966
+ --tab-bar-radius-br: 0px;
1967
+ --tab-bar-radius-bl: 0px;
1970
1968
  }
1971
- .fc-tabs--radius-sm .fc-tabs__content {
1972
- border-radius: 0 0 var(--fc-radius-sm, 4px) var(--fc-radius-sm, 4px);
1969
+ .fc-tab-bar--radius-sm {
1970
+ --tab-bar-radius-tl: var(--fc-radius-sm, 4px);
1971
+ --tab-bar-radius-tr: var(--fc-radius-sm, 4px);
1973
1972
  }
1974
- .fc-tabs--radius-md .fc-tabs__content {
1975
- border-radius: 0 0 var(--fc-radius-md, 8px) var(--fc-radius-md, 8px);
1973
+ .fc-tab-bar--radius-md {
1974
+ --tab-bar-radius-tl: var(--fc-radius-md, 8px);
1975
+ --tab-bar-radius-tr: var(--fc-radius-md, 8px);
1976
1976
  }
1977
- .fc-tabs--radius-lg .fc-tabs__content {
1978
- border-radius: 0 0 var(--fc-radius-lg, 12px) var(--fc-radius-lg, 12px);
1977
+ .fc-tab-bar--radius-lg {
1978
+ --tab-bar-radius-tl: var(--fc-radius-lg, 12px);
1979
+ --tab-bar-radius-tr: var(--fc-radius-lg, 12px);
1979
1980
  }
1980
- .fc-tabs--radius-xl .fc-tabs__content {
1981
- border-radius: 0 0 var(--fc-radius-xl, 16px) var(--fc-radius-xl, 16px);
1981
+ .fc-tab-bar--radius-xl {
1982
+ --tab-bar-radius-tl: var(--fc-radius-xl, 16px);
1983
+ --tab-bar-radius-tr: var(--fc-radius-xl, 16px);
1982
1984
  }
1983
- .fc-tabs--radius-full .fc-tabs__content {
1984
- border-radius: 0 0 var(--fc-radius-full, 9999px) var(--fc-radius-full, 9999px);
1985
+ .fc-tab-bar--radius-full {
1986
+ --tab-bar-radius-tl: var(--fc-radius-full, 9999px);
1987
+ --tab-bar-radius-tr: var(--fc-radius-full, 9999px);
1985
1988
  }
1986
- .fc-tabs__nav {
1989
+ .fc-tab-bar__nav {
1987
1990
  flex-shrink: 0;
1988
- background-color: var(--fc-color-bg-secondary);
1989
- border-bottom: 2px solid var(--fc-color-border);
1990
1991
  overflow-x: auto;
1991
1992
  overflow-y: hidden;
1992
1993
  }
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 {
1994
+ .fc-tab-bar__nav-wrap {
2009
1995
  display: flex;
2010
1996
  gap: 0;
1997
+ align-items: stretch;
2011
1998
  }
2012
- .fc-tabs__tab {
1999
+ .fc-tab-bar__tab {
2013
2000
  position: relative;
2014
2001
  display: inline-flex;
2015
2002
  align-items: center;
2016
2003
  gap: var(--fc-space-sm, 8px);
2017
2004
  padding: var(--fc-space-sm, 8px) var(--fc-space-lg, 16px);
2018
2005
  font-size: var(--fc-font-size-md, 14px);
2019
- color: var(--fc-color-text-secondary);
2006
+ color: var(--tab-color);
2007
+ background-color: transparent;
2020
2008
  cursor: pointer;
2021
2009
  transition: all var(--fc-transition, 150ms ease);
2022
2010
  white-space: nowrap;
2023
- background-color: transparent;
2024
2011
  border: none;
2025
- border-bottom: 2px solid transparent;
2026
- margin-bottom: -2px;
2012
+ user-select: none;
2013
+ border-radius: var(--tab-item-radius-tl) var(--tab-item-radius-tr) var(--tab-item-radius-br) var(--tab-item-radius-bl);
2027
2014
  }
2028
- .fc-tabs__tab:hover:not(.fc-tabs__tab--disabled) {
2029
- color: var(--fc-color-primary);
2030
- background-color: var(--fc-color-bg-tertiary);
2015
+ .fc-tab-bar__tab:hover:not(.fc-tab-bar__tab--disabled):not(.fc-tab-bar__tab--dragging) {
2016
+ color: var(--tab-hover-color);
2017
+ background-color: var(--tab-hover-bg);
2031
2018
  }
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);
2019
+ .fc-tab-bar__tab--active {
2020
+ color: var(--tab-active-color);
2021
+ background-color: var(--tab-active-bg);
2036
2022
  }
2037
- .fc-tabs__tab--disabled {
2023
+ .fc-tab-bar__tab--disabled {
2038
2024
  color: var(--fc-color-text-disabled);
2039
2025
  cursor: not-allowed;
2040
2026
  opacity: 0.6;
2041
2027
  }
2042
- .fc-tabs__tab-close {
2028
+ .fc-tab-bar--attached {
2029
+ border-bottom: 2px solid var(--fc-color-border);
2030
+ }
2031
+ .fc-tab-bar--attached .fc-tab-bar__tab {
2032
+ border-bottom: 2px solid transparent;
2033
+ margin-bottom: -2px;
2034
+ }
2035
+ .fc-tab-bar--attached .fc-tab-bar__tab--active {
2036
+ border-bottom-color: var(--tab-active-indicator);
2037
+ }
2038
+ .fc-tab-bar--floating {
2039
+ border-bottom: none;
2040
+ }
2041
+ .fc-tab-bar--floating .fc-tab-bar__nav {
2042
+ padding: var(--fc-space-xs, 6px) var(--fc-space-sm, 8px);
2043
+ }
2044
+ .fc-tab-bar--floating .fc-tab-bar__nav-wrap {
2045
+ gap: var(--fc-space-xs, 4px);
2046
+ align-items: center;
2047
+ }
2048
+ .fc-tab-bar--floating .fc-tab-bar__tab {
2049
+ padding: var(--fc-space-xs, 6px) var(--fc-space-lg, 16px);
2050
+ border-bottom: none;
2051
+ margin-bottom: 0;
2052
+ }
2053
+ .fc-tab-bar--floating {
2054
+ --tab-item-radius-tl: var(--fc-radius-full, 9999px);
2055
+ --tab-item-radius-tr: var(--fc-radius-full, 9999px);
2056
+ --tab-item-radius-br: var(--fc-radius-full, 9999px);
2057
+ --tab-item-radius-bl: var(--fc-radius-full, 9999px);
2058
+ }
2059
+ .fc-tab-bar--floating .fc-tab-bar__tab--active {
2060
+ background-color: var(--tab-active-bg);
2061
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08), 0 1px 2px rgba(0, 0, 0, 0.06);
2062
+ }
2063
+ .fc-tab-bar--tab-radius-none {
2064
+ --tab-item-radius-tl: 0px;
2065
+ --tab-item-radius-tr: 0px;
2066
+ --tab-item-radius-br: 0px;
2067
+ --tab-item-radius-bl: 0px;
2068
+ }
2069
+ .fc-tab-bar--tab-radius-sm {
2070
+ --tab-item-radius-tl: var(--fc-radius-sm, 4px);
2071
+ --tab-item-radius-tr: var(--fc-radius-sm, 4px);
2072
+ --tab-item-radius-br: var(--fc-radius-sm, 4px);
2073
+ --tab-item-radius-bl: var(--fc-radius-sm, 4px);
2074
+ }
2075
+ .fc-tab-bar--tab-radius-md {
2076
+ --tab-item-radius-tl: var(--fc-radius-md, 8px);
2077
+ --tab-item-radius-tr: var(--fc-radius-md, 8px);
2078
+ --tab-item-radius-br: var(--fc-radius-md, 8px);
2079
+ --tab-item-radius-bl: var(--fc-radius-md, 8px);
2080
+ }
2081
+ .fc-tab-bar--tab-radius-lg {
2082
+ --tab-item-radius-tl: var(--fc-radius-lg, 12px);
2083
+ --tab-item-radius-tr: var(--fc-radius-lg, 12px);
2084
+ --tab-item-radius-br: var(--fc-radius-lg, 12px);
2085
+ --tab-item-radius-bl: var(--fc-radius-lg, 12px);
2086
+ }
2087
+ .fc-tab-bar--tab-radius-xl {
2088
+ --tab-item-radius-tl: var(--fc-radius-xl, 16px);
2089
+ --tab-item-radius-tr: var(--fc-radius-xl, 16px);
2090
+ --tab-item-radius-br: var(--fc-radius-xl, 16px);
2091
+ --tab-item-radius-bl: var(--fc-radius-xl, 16px);
2092
+ }
2093
+ .fc-tab-bar--tab-radius-full {
2094
+ --tab-item-radius-tl: var(--fc-radius-full, 9999px);
2095
+ --tab-item-radius-tr: var(--fc-radius-full, 9999px);
2096
+ --tab-item-radius-br: var(--fc-radius-full, 9999px);
2097
+ --tab-item-radius-bl: var(--fc-radius-full, 9999px);
2098
+ }
2099
+ .fc-tab-bar__tab--draggable {
2100
+ cursor: grab;
2101
+ }
2102
+ .fc-tab-bar__tab--draggable:active {
2103
+ cursor: grabbing;
2104
+ }
2105
+ .fc-tab-bar__tab--dragging {
2106
+ opacity: 0.4;
2107
+ }
2108
+ .fc-tab-bar__tab-close {
2043
2109
  display: inline-flex;
2044
2110
  align-items: center;
2045
2111
  justify-content: center;
@@ -2051,11 +2117,11 @@
2051
2117
  border-radius: var(--fc-radius-sm, 4px);
2052
2118
  transition: all var(--fc-transition, 150ms ease);
2053
2119
  }
2054
- .fc-tabs__tab-close:hover {
2120
+ .fc-tab-bar__tab-close:hover {
2055
2121
  color: var(--fc-color-text);
2056
2122
  background-color: var(--fc-color-border-light);
2057
2123
  }
2058
- .fc-tabs__add-btn {
2124
+ .fc-tab-bar__add-btn {
2059
2125
  display: inline-flex;
2060
2126
  align-items: center;
2061
2127
  justify-content: center;
@@ -2068,151 +2134,928 @@
2068
2134
  transition: all var(--fc-transition, 150ms ease);
2069
2135
  border-radius: var(--fc-radius-sm, 4px);
2070
2136
  }
2071
- .fc-tabs__add-btn:hover {
2137
+ .fc-tab-bar__add-btn:hover {
2072
2138
  color: var(--fc-color-primary);
2073
2139
  background-color: var(--fc-color-bg-tertiary);
2074
- transform: rotate(90deg);
2075
2140
  }
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;
2141
+ .fc-tab-bar--floating .fc-tab-bar__add-btn {
2142
+ border-radius: var(--fc-radius-full, 9999px);
2082
2143
  }
2083
- [data-theme=dark] .fc-tabs__nav {
2084
- background-color: var(--fc-color-bg-secondary);
2144
+ [data-theme=dark] .fc-tab-bar--attached {
2085
2145
  border-bottom-color: var(--fc-color-border);
2086
2146
  }
2087
- [data-theme=dark] .fc-tabs__tab--active {
2088
- background-color: var(--fc-color-bg);
2089
- border-bottom-color: var(--fc-color-primary);
2147
+ [data-theme=dark] .fc-tab-bar__tab--active {
2148
+ background-color: var(--tab-active-bg);
2090
2149
  }
2091
- [data-theme=dark] .fc-tabs__tab:hover:not(.fc-tabs__tab--disabled) {
2092
- background-color: var(--fc-color-bg-tertiary);
2150
+ [data-theme=dark] .fc-tab-bar__tab:hover:not(.fc-tab-bar__tab--disabled) {
2151
+ background-color: var(--tab-hover-bg);
2152
+ }
2153
+ [data-theme=dark] .fc-tab-bar--floating .fc-tab-bar__tab--active {
2154
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3), 0 1px 2px rgba(0, 0, 0, 0.2);
2093
2155
  }
2094
- [data-theme=dark] .fc-tabs__add-btn:hover {
2156
+ [data-theme=dark] .fc-tab-bar__add-btn:hover {
2095
2157
  background-color: var(--fc-color-bg-tertiary);
2096
2158
  }
2097
- [data-theme=dark] .fc-tabs__tab-close:hover {
2159
+ [data-theme=dark] .fc-tab-bar__tab-close:hover {
2098
2160
  background-color: var(--fc-color-border-light);
2099
2161
  }
2100
2162
  @media (max-width: 768px) {
2101
- .fc-tabs__tab {
2163
+ .fc-tab-bar__tab {
2102
2164
  padding: var(--fc-space-xs, 6px) var(--fc-space-md, 12px);
2103
2165
  font-size: var(--fc-font-size-sm, 13px);
2104
2166
  }
2105
- .fc-tabs__content {
2106
- padding: var(--fc-space-md, 12px);
2107
- }
2108
2167
  }
2109
2168
 
2110
- /* src/components/Chat/Chat.css */
2111
- .message-content-wrapper {
2112
- position: relative;
2113
- }
2114
- .copy-btn {
2169
+ /* src/components/Tag/TagItem.css */
2170
+ .fc-tag-item {
2171
+ --tag-bg: var(--fc-color-bg-secondary);
2172
+ --tag-color: var(--fc-color-text-secondary);
2173
+ --tag-border: var(--fc-color-border);
2115
2174
  display: inline-flex;
2116
2175
  align-items: center;
2117
- gap: 4px;
2118
- padding: 4px 8px;
2119
- margin-top: 6px;
2176
+ gap: var(--fc-space-xs);
2177
+ padding: 2px var(--fc-space-sm);
2178
+ border-radius: var(--fc-radius-sm);
2179
+ border: 1px solid var(--tag-border);
2180
+ background: var(--tag-bg);
2181
+ color: var(--tag-color);
2182
+ font-size: var(--fc-font-size-xs);
2183
+ font-family: var(--fc-font-family), serif;
2184
+ user-select: none;
2185
+ white-space: nowrap;
2186
+ transition: background 0.15s, border-color 0.15s;
2187
+ }
2188
+ .fc-tag-item--show {
2189
+ cursor: default;
2190
+ }
2191
+ .fc-tag-item--show:hover {
2192
+ border-color: var(--fc-color-border-hover, var(--tag-border));
2193
+ }
2194
+ .fc-tag-item--editing {
2195
+ padding: 1px var(--fc-space-xs);
2196
+ border-color: var(--fc-color-primary, var(--tag-border));
2197
+ }
2198
+ .fc-tag-item__name {
2199
+ color: var(--fc-color-text-tertiary);
2200
+ flex-shrink: 0;
2201
+ }
2202
+ .fc-tag-item__sep {
2203
+ color: var(--fc-color-text-tertiary);
2204
+ opacity: 0.5;
2205
+ flex-shrink: 0;
2206
+ }
2207
+ .fc-tag-item__value {
2208
+ max-width: 100px;
2209
+ overflow: hidden;
2210
+ text-overflow: ellipsis;
2211
+ white-space: nowrap;
2212
+ }
2213
+ .fc-tag-item__input {
2120
2214
  background: transparent;
2121
2215
  border: none;
2122
- border-radius: 6px;
2123
- font-size: 12px;
2124
- color: #999;
2125
- cursor: pointer;
2126
- transition: all 0.2s ease;
2216
+ outline: none;
2217
+ color: var(--tag-color);
2218
+ font-size: inherit;
2127
2219
  font-family: inherit;
2128
- opacity: 0.6;
2220
+ min-width: 40px;
2221
+ width: 60px;
2222
+ max-width: 120px;
2223
+ padding: 0;
2129
2224
  }
2130
- .copy-btn:hover {
2131
- opacity: 1;
2132
- color: #667eea;
2133
- background: rgba(102, 126, 234, 0.1);
2225
+ .fc-tag-item__input[type=number] {
2226
+ width: 50px;
2227
+ -moz-appearance: textfield;
2134
2228
  }
2135
- .copy-btn.copied {
2136
- opacity: 1;
2137
- color: #52c41a;
2229
+ .fc-tag-item__input[type=number]::-webkit-outer-spin-button,
2230
+ .fc-tag-item__input[type=number]::-webkit-inner-spin-button {
2231
+ -webkit-appearance: none;
2138
2232
  }
2139
- .copy-btn.copied:hover {
2140
- color: #52c41a;
2141
- background: rgba(82, 196, 26, 0.1);
2233
+ .fc-tag-item--boolean {
2234
+ cursor: pointer;
2142
2235
  }
2143
- .copy-btn svg {
2144
- flex-shrink: 0;
2236
+ .fc-tag-item--boolean:hover {
2237
+ background: var(--fc-color-bg-tertiary, var(--tag-bg));
2145
2238
  }
2146
- .copy-btn span {
2147
- font-size: 12px;
2148
- line-height: 1;
2239
+ .fc-tag-item__bool-true {
2240
+ color: var(--fc-color-success);
2149
2241
  }
2150
- .chat-container.dark .copy-btn {
2151
- color: #9c9a92;
2242
+ .fc-tag-item__bool-false {
2243
+ color: var(--fc-color-text-tertiary);
2152
2244
  }
2153
- .chat-container.dark .copy-btn:hover {
2154
- color: #5da4e8;
2155
- background: rgba(93, 164, 232, 0.15);
2245
+
2246
+ /* src/components/MarkdownEditor/MarkdownEditor.css */
2247
+ .fc-md-wrap {
2248
+ --md-bg: var(--fc-color-bg-elevated);
2249
+ --md-toolbar-bg: var(--fc-color-bg-secondary);
2250
+ --md-border: var(--fc-color-border);
2251
+ border-radius: var(--fc-radius-md);
2252
+ border: 1px solid var(--md-border);
2253
+ overflow: hidden;
2254
+ font-family: var(--fc-font-family), serif;
2156
2255
  }
2157
- .chat-container.dark .copy-btn.copied {
2158
- color: #52c41a;
2256
+ .fc-md-wrap .w-md-editor {
2257
+ background: var(--md-bg) !important;
2258
+ border: none !important;
2259
+ box-shadow: none !important;
2260
+ border-radius: 0 !important;
2261
+ font-family: var(--fc-font-family), serif;
2262
+ --color-canvas-default: var(--md-bg);
2263
+ --color-canvas-subtle: var(--md-toolbar-bg);
2264
+ --color-border-default: var(--md-border);
2265
+ --color-fg-default: var(--fc-color-text);
2266
+ --color-fg-muted: var(--fc-color-text-secondary);
2267
+ }
2268
+ .fc-md-wrap .w-md-editor-toolbar {
2269
+ background: var(--md-toolbar-bg) !important;
2270
+ border-bottom: 1px solid var(--md-border) !important;
2271
+ padding: 4px 8px !important;
2272
+ }
2273
+ .fc-md-wrap .w-md-editor-toolbar ul > li > button {
2274
+ color: var(--fc-color-text-tertiary) !important;
2275
+ border-radius: var(--fc-radius-sm) !important;
2276
+ transition: background 0.12s, color 0.12s;
2277
+ }
2278
+ .fc-md-wrap .w-md-editor-toolbar ul > li > button:hover {
2279
+ background: var(--fc-color-bg-tertiary, rgba(255,255,255,0.06)) !important;
2280
+ color: var(--fc-color-text) !important;
2281
+ }
2282
+ .fc-md-wrap .w-md-editor-toolbar ul > li > button svg {
2283
+ fill: currentColor;
2284
+ stroke: currentColor;
2285
+ }
2286
+ .fc-md-ai-btn {
2287
+ font-size: 11px;
2288
+ font-weight: 600;
2289
+ color: var(--fc-color-primary, #6366f1) !important;
2290
+ padding: 2px 6px !important;
2291
+ letter-spacing: 0.2px;
2159
2292
  }
2160
- .chat-container.dark .copy-btn.copied:hover {
2161
- color: #52c41a;
2162
- background: rgba(82, 196, 26, 0.15);
2293
+ .fc-md-ai-btn:hover {
2294
+ background: var(--fc-color-primary-bg, rgba(99,102,241,0.1)) !important;
2163
2295
  }
2164
- .chat-message.user .message-content-wrapper {
2165
- display: flex;
2166
- flex-direction: column;
2167
- align-items: flex-end;
2296
+ .fc-md-wrap .w-md-editor-text {
2297
+ font-size: var(--fc-font-size-sm) !important;
2298
+ line-height: var(--fc-line-height-relaxed, 1.75) !important;
2299
+ color: var(--fc-color-text) !important;
2300
+ padding: 12px 14px !important;
2168
2301
  }
2169
- .chat-message.user .copy-btn {
2170
- align-self: flex-end;
2302
+ .fc-md-wrap .w-md-editor-text-pre > code,
2303
+ .fc-md-wrap .w-md-editor-text-input {
2304
+ font-family: var(--fc-font-family-mono, ui-monospace, monospace) !important;
2305
+ font-size: var(--fc-font-size-sm) !important;
2171
2306
  }
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;
2307
+ .fc-md-wrap .w-md-editor-bar {
2308
+ display: none !important;
2309
+ }
2310
+ .fc-md-wrap .wmde-markdown {
2311
+ background: transparent !important;
2312
+ font-family: var(--fc-font-family), serif;
2313
+ font-size: var(--fc-font-size-sm);
2314
+ color: var(--fc-color-text);
2315
+ padding: 12px 14px;
2316
+ }
2317
+ .fc-md-wrap .wmde-markdown h1,
2318
+ .fc-md-wrap .wmde-markdown h2,
2319
+ .fc-md-wrap .wmde-markdown h3 {
2320
+ color: var(--fc-color-text);
2321
+ border-color: var(--md-border);
2322
+ }
2323
+ .fc-md-wrap .wmde-markdown code {
2324
+ background: var(--fc-color-bg-tertiary, rgba(255,255,255,0.06));
2325
+ border-radius: 3px;
2326
+ font-family: var(--fc-font-family-mono, ui-monospace, monospace);
2327
+ }
2328
+ .fc-md-wrap .wmde-markdown pre {
2329
+ background: var(--fc-color-bg-secondary);
2330
+ border: 1px solid var(--md-border);
2331
+ }
2332
+ .fc-md-wrap .wmde-markdown blockquote {
2333
+ border-left-color: var(--fc-color-primary, #6366f1);
2334
+ color: var(--fc-color-text-secondary);
2188
2335
  }
2189
- .chat-container.dark .copy-error-toast {
2190
- background: #ff4d4f;
2191
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
2336
+
2337
+ /* src/components/ContextMenu/ContextMenuContext.css */
2338
+ .fc-context-menu {
2339
+ --ctx-bg: var(--fc-color-bg-elevated);
2340
+ --ctx-border: var(--fc-color-border);
2341
+ --ctx-item-hover-bg: var(--fc-color-bg-secondary);
2342
+ --ctx-danger-color: var(--fc-color-danger);
2343
+ position: fixed;
2344
+ z-index: var(--fc-z-dropdown, 9000);
2345
+ background: var(--ctx-bg);
2346
+ border: 1px solid var(--ctx-border);
2347
+ border-radius: var(--fc-radius-md);
2348
+ box-shadow: var(--fc-shadow-lg);
2349
+ padding: var(--fc-space-xs) 0;
2350
+ min-width: 160px;
2351
+ list-style: none;
2352
+ font-family: var(--fc-font-family), serif;
2353
+ user-select: none;
2354
+ animation: fc-ctx-in 0.1s ease;
2192
2355
  }
2193
- @keyframes slideUp {
2356
+ @keyframes fc-ctx-in {
2194
2357
  from {
2195
2358
  opacity: 0;
2196
- transform: translateX(-50%) translateY(20px);
2359
+ transform: scale(0.96);
2197
2360
  }
2198
2361
  to {
2199
2362
  opacity: 1;
2200
- transform: translateX(-50%) translateY(0);
2363
+ transform: scale(1);
2201
2364
  }
2202
2365
  }
2203
- .chat-message.assistant .message-bubble,
2204
- .chat-message.user .message-bubble {
2205
- margin-bottom: 0;
2366
+ .fc-context-menu__item {
2367
+ display: flex;
2368
+ align-items: center;
2369
+ gap: var(--fc-space-sm);
2370
+ padding: var(--fc-space-xs) var(--fc-space-md);
2371
+ font-size: var(--fc-font-size-sm);
2372
+ color: var(--fc-color-text);
2373
+ cursor: pointer;
2374
+ transition: background 0.1s;
2375
+ line-height: var(--fc-line-height-tight);
2206
2376
  }
2207
- @media (prefers-reduced-motion: reduce) {
2208
- .copy-btn,
2209
- .copy-error-toast {
2210
- transition: none;
2211
- animation: none;
2377
+ .fc-context-menu__item:hover {
2378
+ background: var(--ctx-item-hover-bg);
2379
+ }
2380
+ .fc-context-menu__item--danger {
2381
+ color: var(--ctx-danger-color);
2382
+ }
2383
+ .fc-context-menu__item--danger:hover {
2384
+ background: color-mix(in srgb, var(--ctx-danger-color) 8%, transparent);
2385
+ }
2386
+ .fc-context-menu__item--disabled {
2387
+ opacity: 0.38;
2388
+ cursor: not-allowed;
2389
+ }
2390
+ .fc-context-menu__item--disabled:hover {
2391
+ background: transparent;
2392
+ }
2393
+ .fc-context-menu__icon {
2394
+ display: flex;
2395
+ align-items: center;
2396
+ font-size: var(--fc-font-size-md);
2397
+ flex-shrink: 0;
2398
+ width: 1.1em;
2399
+ color: var(--fc-color-text-tertiary);
2400
+ }
2401
+ .fc-context-menu__item--danger .fc-context-menu__icon {
2402
+ color: var(--ctx-danger-color);
2403
+ }
2404
+ .fc-context-menu__divider {
2405
+ height: 1px;
2406
+ background: var(--ctx-border);
2407
+ margin: var(--fc-space-xs) 0;
2408
+ list-style: none;
2409
+ }
2410
+
2411
+ /* src/components/SmartMessage/SmartMessage.css */
2412
+ .smart-message {
2413
+ display: flex;
2414
+ margin-bottom: 16px;
2415
+ animation: fadeIn 0.3s ease;
2416
+ }
2417
+ .smart-message-user {
2418
+ justify-content: flex-end;
2419
+ }
2420
+ .smart-message-user .message-header {
2421
+ justify-content: flex-end;
2422
+ }
2423
+ .smart-message-user .smart-message-content {
2424
+ background:
2425
+ linear-gradient(
2426
+ 135deg,
2427
+ #667eea 0%,
2428
+ #764ba2 100%);
2429
+ color: #ffffff;
2430
+ border-bottom-right-radius: 4px;
2431
+ }
2432
+ .smart-message-assistant {
2433
+ justify-content: flex-start;
2434
+ }
2435
+ .smart-message-assistant .smart-message-content {
2436
+ background: var(--fc-color-bg-tertiary, #f0f0f0);
2437
+ color: var(--fc-color-text, #333);
2438
+ border-bottom-left-radius: 4px;
2439
+ }
2440
+ .smart-message-content {
2441
+ max-width: 70%;
2442
+ padding: 10px 14px;
2443
+ border-radius: 12px;
2444
+ position: relative;
2445
+ transition: transform 0.2s ease;
2446
+ }
2447
+ .smart-message-content:hover {
2448
+ transform: translateX(2px);
2449
+ }
2450
+ .message-header {
2451
+ display: flex;
2452
+ gap: 8px;
2453
+ margin-bottom: 6px;
2454
+ font-size: 12px;
2455
+ }
2456
+ .message-sender {
2457
+ font-weight: 600;
2458
+ font-size: 13px;
2459
+ }
2460
+ .message-time {
2461
+ color: var(--fc-color-text-secondary, #999);
2462
+ font-size: 11px;
2463
+ }
2464
+ .message-text {
2465
+ line-height: 1.5;
2466
+ font-size: 14px;
2467
+ word-break: break-word;
2468
+ padding-right: 60px;
2469
+ }
2470
+ .copy-btn {
2471
+ position: absolute;
2472
+ right: 8px;
2473
+ bottom: 8px;
2474
+ display: inline-flex;
2475
+ align-items: center;
2476
+ gap: 4px;
2477
+ padding: 4px 8px;
2478
+ border: none;
2479
+ border-radius: 6px;
2480
+ font-size: 12px;
2481
+ cursor: pointer;
2482
+ background: rgba(0, 0, 0, 0.05);
2483
+ backdrop-filter: blur(4px);
2484
+ opacity: 0;
2485
+ transition: all 0.2s ease;
2486
+ }
2487
+ .smart-message-content:hover .copy-btn {
2488
+ opacity: 0.7;
2489
+ }
2490
+ .smart-message-user .copy-btn {
2491
+ color: rgba(255, 255, 255, 0.9);
2492
+ background: rgba(255, 255, 255, 0.15);
2493
+ }
2494
+ .smart-message-assistant .copy-btn {
2495
+ color: var(--fc-color-text-secondary, #666);
2496
+ }
2497
+ .copy-btn:hover {
2498
+ opacity: 1 !important;
2499
+ transform: translateY(-2px);
2500
+ background: rgba(102, 126, 234, 0.2);
2501
+ }
2502
+ .copy-btn.copied {
2503
+ opacity: 1 !important;
2504
+ background: #52c41a !important;
2505
+ color: #ffffff !important;
2506
+ }
2507
+ .message-status {
2508
+ font-size: 11px;
2509
+ margin-left: 8px;
2510
+ display: inline-block;
2511
+ }
2512
+ .message-status.sending {
2513
+ color: #faad14;
2514
+ }
2515
+ .message-status.error {
2516
+ color: #f5222d;
2517
+ }
2518
+ .smart-message-system {
2519
+ justify-content: center;
2520
+ }
2521
+ .system-message-wrapper {
2522
+ display: flex;
2523
+ align-items: center;
2524
+ justify-content: center;
2525
+ gap: 8px;
2526
+ padding: 6px 12px;
2527
+ background: rgba(0, 0, 0, 0.05);
2528
+ border-radius: 20px;
2529
+ color: #999;
2530
+ font-size: 12px;
2531
+ }
2532
+ .system-message-icon {
2533
+ display: flex;
2534
+ align-items: center;
2535
+ color: #999;
2536
+ }
2537
+ .system-message-text {
2538
+ line-height: 1.4;
2539
+ }
2540
+ .system-message-time {
2541
+ font-size: 10px;
2542
+ color: #bbb;
2543
+ }
2544
+ .smart-message-tool {
2545
+ justify-content: center;
2546
+ }
2547
+ .tool-message-wrapper {
2548
+ max-width: 80%;
2549
+ background: #f5f5f5;
2550
+ border-left: 3px solid #667eea;
2551
+ border-radius: 8px;
2552
+ overflow: hidden;
2553
+ font-size: 13px;
2554
+ }
2555
+ .tool-message-header {
2556
+ display: flex;
2557
+ align-items: center;
2558
+ gap: 8px;
2559
+ padding: 8px 12px;
2560
+ background: #e8e8e8;
2561
+ border-bottom: 1px solid #ddd;
2562
+ }
2563
+ .tool-message-icon {
2564
+ display: flex;
2565
+ align-items: center;
2566
+ color: #667eea;
2567
+ }
2568
+ .tool-message-name {
2569
+ font-weight: 600;
2570
+ font-size: 12px;
2571
+ color: #333;
2572
+ }
2573
+ .tool-message-content {
2574
+ padding: 12px;
2575
+ }
2576
+ .tool-message-params,
2577
+ .tool-message-result {
2578
+ margin-bottom: 8px;
2579
+ }
2580
+ .tool-message-params strong,
2581
+ .tool-message-result strong {
2582
+ display: block;
2583
+ font-size: 11px;
2584
+ color: #666;
2585
+ margin-bottom: 4px;
2586
+ }
2587
+ .tool-message-params pre,
2588
+ .tool-message-result pre {
2589
+ margin: 0;
2590
+ padding: 8px;
2591
+ background: #fff;
2592
+ border-radius: 4px;
2593
+ font-size: 12px;
2594
+ overflow-x: auto;
2595
+ font-family: "Courier New", monospace;
2596
+ }
2597
+ .tool-message-time {
2598
+ padding: 4px 12px 8px;
2599
+ font-size: 10px;
2600
+ color: #999;
2601
+ text-align: right;
2602
+ }
2603
+ @keyframes fadeIn {
2604
+ from {
2605
+ opacity: 0;
2606
+ transform: translateY(10px);
2607
+ }
2608
+ to {
2609
+ opacity: 1;
2610
+ transform: translateY(0);
2611
+ }
2612
+ }
2613
+ @media (max-width: 768px) {
2614
+ .smart-message-content {
2615
+ max-width: 85%;
2616
+ }
2617
+ .tool-message-wrapper {
2618
+ max-width: 90%;
2619
+ }
2620
+ .message-text {
2621
+ padding-right: 50px;
2622
+ }
2623
+ }
2624
+
2625
+ /* src/components/Chat/Chat.css */
2626
+ .chat-container {
2627
+ --chat-primary: #667eea;
2628
+ --chat-primary-gradient:
2629
+ linear-gradient(
2630
+ 135deg,
2631
+ #667eea 0%,
2632
+ #764ba2 100%);
2633
+ --chat-border-radius: 12px;
2634
+ --chat-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
2635
+ --chat-border-width: 1px;
2636
+ }
2637
+ .chat-container {
2638
+ display: flex;
2639
+ flex-direction: column;
2640
+ border-radius: var(--chat-border-radius);
2641
+ overflow: hidden;
2642
+ background: var(--fc-color-bg);
2643
+ box-shadow: var(--chat-shadow);
2644
+ position: relative;
2645
+ height: 100%;
2646
+ }
2647
+ .chat-header {
2648
+ padding: 16px 20px;
2649
+ border-bottom: var(--chat-border-width) solid var(--fc-color-border);
2650
+ background:
2651
+ linear-gradient(
2652
+ 135deg,
2653
+ var(--fc-color-bg-secondary) 0%,
2654
+ var(--fc-color-bg) 100%);
2655
+ display: flex;
2656
+ justify-content: space-between;
2657
+ align-items: center;
2658
+ flex-shrink: 0;
2659
+ }
2660
+ .chat-title {
2661
+ font-size: 16px;
2662
+ font-weight: 600;
2663
+ background:
2664
+ linear-gradient(
2665
+ 135deg,
2666
+ var(--fc-color-text) 0%,
2667
+ var(--fc-color-text-secondary) 100%);
2668
+ background-clip: text;
2669
+ -webkit-background-clip: text;
2670
+ color: transparent;
2671
+ }
2672
+ .chat-header-actions {
2673
+ display: flex;
2674
+ align-items: center;
2675
+ gap: 10px;
2676
+ }
2677
+ .minimize-btn,
2678
+ .history-btn,
2679
+ .restore-btn-only {
2680
+ display: inline-flex;
2681
+ align-items: center;
2682
+ justify-content: center;
2683
+ width: 34px;
2684
+ height: 34px;
2685
+ padding: 0;
2686
+ background: transparent;
2687
+ border: none;
2688
+ border-radius: 10px;
2689
+ color: var(--fc-color-text-secondary);
2690
+ cursor: pointer;
2691
+ transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
2692
+ position: relative;
2693
+ overflow: hidden;
2694
+ flex-shrink: 0;
2695
+ }
2696
+ .minimize-btn::before,
2697
+ .history-btn::before,
2698
+ .restore-btn-only::before {
2699
+ content: "";
2700
+ position: absolute;
2701
+ top: 50%;
2702
+ left: 50%;
2703
+ width: 0;
2704
+ height: 0;
2705
+ border-radius: 50%;
2706
+ background: rgba(102, 126, 234, 0.1);
2707
+ transform: translate(-50%, -50%);
2708
+ transition: width 0.4s, height 0.4s;
2709
+ }
2710
+ .minimize-btn:hover::before,
2711
+ .history-btn:hover::before,
2712
+ .restore-btn-only:hover::before {
2713
+ width: 40px;
2714
+ height: 40px;
2715
+ }
2716
+ .minimize-btn:hover,
2717
+ .history-btn:hover,
2718
+ .restore-btn-only:hover {
2719
+ background: rgba(102, 126, 234, 0.1);
2720
+ color: var(--chat-primary);
2721
+ transform: translateY(-1px);
2722
+ }
2723
+ .minimize-btn:active,
2724
+ .history-btn:active,
2725
+ .restore-btn-only:active {
2726
+ transform: translateY(0);
2727
+ }
2728
+ .minimize-btn svg,
2729
+ .history-btn svg,
2730
+ .restore-btn-only svg {
2731
+ width: 18px;
2732
+ height: 18px;
2733
+ display: block;
2734
+ position: relative;
2735
+ z-index: 1;
2736
+ }
2737
+ .chat-messages {
2738
+ flex: 1;
2739
+ overflow-y: auto;
2740
+ padding: 20px;
2741
+ display: flex;
2742
+ flex-direction: column;
2743
+ gap: 16px;
2744
+ background: var(--fc-color-bg);
2745
+ position: relative;
2746
+ }
2747
+ .chat-messages::-webkit-scrollbar {
2748
+ width: 6px;
2749
+ }
2750
+ .chat-messages::-webkit-scrollbar-track {
2751
+ background: var(--fc-color-border-light);
2752
+ border-radius: 3px;
2753
+ }
2754
+ .chat-messages::-webkit-scrollbar-thumb {
2755
+ background: var(--fc-color-border);
2756
+ border-radius: 3px;
2757
+ }
2758
+ .chat-messages::-webkit-scrollbar-thumb:hover {
2759
+ background: var(--fc-color-text-secondary);
2760
+ }
2761
+ .typing-wrapper {
2762
+ display: flex;
2763
+ justify-content: flex-start;
2764
+ padding: 8px 0;
2765
+ }
2766
+ .typing-indicator {
2767
+ display: flex;
2768
+ gap: 4px;
2769
+ padding: 10px 14px;
2770
+ background: var(--fc-color-bg-tertiary, #f0f0f0);
2771
+ border-radius: 12px 12px 12px 4px;
2772
+ width: fit-content;
2773
+ }
2774
+ .typing-indicator span {
2775
+ width: 8px;
2776
+ height: 8px;
2777
+ background: var(--fc-color-text-secondary);
2778
+ border-radius: 50%;
2779
+ animation: typing 1.4s infinite;
2780
+ }
2781
+ .typing-indicator span:nth-child(2) {
2782
+ animation-delay: 0.2s;
2783
+ }
2784
+ .typing-indicator span:nth-child(3) {
2785
+ animation-delay: 0.4s;
2786
+ }
2787
+ @keyframes typing {
2788
+ 0%, 60%, 100% {
2789
+ transform: translateY(0);
2790
+ opacity: 0.5;
2791
+ }
2792
+ 30% {
2793
+ transform: translateY(-10px);
2794
+ opacity: 1;
2795
+ }
2796
+ }
2797
+ .history-panel {
2798
+ position: absolute;
2799
+ top: 0;
2800
+ right: 0;
2801
+ width: 380px;
2802
+ height: 100%;
2803
+ background: var(--fc-color-bg-elevated);
2804
+ border-left: 1px solid var(--fc-color-border);
2805
+ box-shadow: -4px 0 20px rgba(0, 0, 0, 0.1);
2806
+ display: flex;
2807
+ flex-direction: column;
2808
+ z-index: 1000;
2809
+ animation: slideIn 0.3s cubic-bezier(0.4, 0, 0.2, 1);
2810
+ }
2811
+ @keyframes slideIn {
2812
+ from {
2813
+ transform: translateX(100%);
2814
+ }
2815
+ to {
2816
+ transform: translateX(0);
2817
+ }
2818
+ }
2819
+ .history-header {
2820
+ display: flex;
2821
+ justify-content: space-between;
2822
+ align-items: center;
2823
+ padding: 16px 20px;
2824
+ border-bottom: 1px solid var(--fc-color-border);
2825
+ background:
2826
+ linear-gradient(
2827
+ 135deg,
2828
+ var(--fc-color-bg-secondary) 0%,
2829
+ var(--fc-color-bg) 100%);
2830
+ }
2831
+ .history-header h3 {
2832
+ margin: 0;
2833
+ font-size: 16px;
2834
+ font-weight: 600;
2835
+ background:
2836
+ linear-gradient(
2837
+ 135deg,
2838
+ var(--fc-color-text) 0%,
2839
+ var(--fc-color-text-secondary) 100%);
2840
+ background-clip: text;
2841
+ -webkit-background-clip: text;
2842
+ color: transparent;
2843
+ }
2844
+ .close-history-btn {
2845
+ background: none;
2846
+ border: none;
2847
+ font-size: 20px;
2848
+ cursor: pointer;
2849
+ color: var(--fc-color-text-secondary);
2850
+ padding: 4px;
2851
+ border-radius: 8px;
2852
+ transition: all 0.2s;
2853
+ width: 32px;
2854
+ height: 32px;
2855
+ display: flex;
2856
+ align-items: center;
2857
+ justify-content: center;
2858
+ }
2859
+ .close-history-btn:hover {
2860
+ background: rgba(245, 34, 45, 0.1);
2861
+ color: #f5222d;
2862
+ transform: rotate(90deg);
2863
+ }
2864
+ .history-list {
2865
+ flex: 1;
2866
+ overflow-y: auto;
2867
+ padding: 12px;
2868
+ }
2869
+ .new-conversation-btn-large {
2870
+ width: 100%;
2871
+ display: flex;
2872
+ align-items: center;
2873
+ justify-content: center;
2874
+ gap: 8px;
2875
+ padding: 12px 16px;
2876
+ margin-bottom: 16px;
2877
+ background: var(--chat-primary-gradient);
2878
+ border: none;
2879
+ border-radius: 12px;
2880
+ font-size: 14px;
2881
+ font-weight: 600;
2882
+ color: #ffffff;
2883
+ cursor: pointer;
2884
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
2885
+ box-shadow: 0 2px 8px rgba(102, 126, 234, 0.3);
2886
+ }
2887
+ .new-conversation-btn-large:hover {
2888
+ transform: translateY(-2px);
2889
+ box-shadow: 0 4px 16px rgba(102, 126, 234, 0.4);
2890
+ }
2891
+ .history-item {
2892
+ display: flex;
2893
+ align-items: flex-start;
2894
+ justify-content: space-between;
2895
+ padding: 12px;
2896
+ margin-bottom: 8px;
2897
+ border-radius: 12px;
2898
+ cursor: pointer;
2899
+ transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
2900
+ background: var(--fc-color-bg-tertiary);
2901
+ border: 1px solid transparent;
2902
+ }
2903
+ .history-item:hover {
2904
+ background: var(--fc-color-bg-elevated);
2905
+ border-color: var(--fc-color-border);
2906
+ transform: translateX(4px);
2907
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
2908
+ }
2909
+ .history-item.active {
2910
+ background:
2911
+ linear-gradient(
2912
+ 135deg,
2913
+ rgba(102, 126, 234, 0.1) 0%,
2914
+ rgba(118, 75, 162, 0.1) 100%);
2915
+ border-color: var(--chat-primary);
2916
+ }
2917
+ .history-item-content {
2918
+ flex: 1;
2919
+ min-width: 0;
2920
+ }
2921
+ .history-item-title {
2922
+ display: flex;
2923
+ align-items: center;
2924
+ gap: 8px;
2925
+ margin-bottom: 6px;
2926
+ font-size: 14px;
2927
+ font-weight: 500;
2928
+ color: var(--fc-color-text);
2929
+ }
2930
+ .history-item.active .history-item-title {
2931
+ color: var(--chat-primary);
2932
+ }
2933
+ .history-item-preview {
2934
+ font-size: 12px;
2935
+ color: var(--fc-color-text-secondary);
2936
+ margin-bottom: 6px;
2937
+ overflow: hidden;
2938
+ text-overflow: ellipsis;
2939
+ white-space: nowrap;
2940
+ }
2941
+ .history-item-meta {
2942
+ display: flex;
2943
+ gap: 12px;
2944
+ font-size: 11px;
2945
+ color: var(--fc-color-text-tertiary);
2946
+ }
2947
+ .history-item-actions {
2948
+ margin-left: 8px;
2949
+ flex-shrink: 0;
2950
+ }
2951
+ .delete-conversation-btn {
2952
+ background: none;
2953
+ border: none;
2954
+ padding: 6px;
2955
+ border-radius: 8px;
2956
+ cursor: pointer;
2957
+ color: var(--fc-color-text-secondary);
2958
+ transition: all 0.2s;
2959
+ display: flex;
2960
+ align-items: center;
2961
+ justify-content: center;
2962
+ }
2963
+ .delete-conversation-btn:hover {
2964
+ background: rgba(245, 34, 45, 0.1);
2965
+ color: #f5222d;
2966
+ transform: scale(1.1);
2967
+ }
2968
+ .delete-confirm {
2969
+ display: flex;
2970
+ gap: 8px;
2971
+ animation: fadeIn 0.2s ease;
2972
+ }
2973
+ .confirm-delete,
2974
+ .cancel-delete {
2975
+ padding: 4px;
2976
+ width: 28px;
2977
+ height: 28px;
2978
+ border: none;
2979
+ border-radius: 8px;
2980
+ cursor: pointer;
2981
+ transition: all 0.2s;
2982
+ display: flex;
2983
+ align-items: center;
2984
+ justify-content: center;
2985
+ }
2986
+ .confirm-delete {
2987
+ background:
2988
+ linear-gradient(
2989
+ 135deg,
2990
+ #52c41a 0%,
2991
+ #73d13d 100%);
2992
+ }
2993
+ .confirm-delete:hover {
2994
+ transform: scale(1.1);
2995
+ box-shadow: 0 2px 8px rgba(82, 196, 26, 0.4);
2996
+ }
2997
+ .cancel-delete {
2998
+ background:
2999
+ linear-gradient(
3000
+ 135deg,
3001
+ #f5222d 0%,
3002
+ #ff4d4f 100%);
3003
+ }
3004
+ .cancel-delete:hover {
3005
+ transform: scale(1.1);
3006
+ box-shadow: 0 2px 8px rgba(245, 34, 45, 0.4);
3007
+ }
3008
+ .confirm-delete svg,
3009
+ .cancel-delete svg {
3010
+ stroke: white;
3011
+ width: 14px;
3012
+ height: 14px;
3013
+ }
3014
+ .empty-history {
3015
+ text-align: center;
3016
+ padding: 40px 20px;
3017
+ color: var(--fc-color-text-secondary);
3018
+ }
3019
+ .empty-hint {
3020
+ font-size: 12px;
3021
+ margin-top: 8px;
3022
+ opacity: 0.7;
3023
+ }
3024
+ .chat-container-minimized {
3025
+ display: inline-flex;
3026
+ background: transparent;
3027
+ }
3028
+ @media (max-width: 768px) {
3029
+ .chat-header {
3030
+ padding: 12px 16px;
3031
+ }
3032
+ .chat-messages {
3033
+ padding: 16px;
3034
+ }
3035
+ .history-panel {
3036
+ width: 100%;
3037
+ }
3038
+ .minimize-btn,
3039
+ .history-btn,
3040
+ .restore-btn-only {
3041
+ width: 30px;
3042
+ height: 30px;
3043
+ }
3044
+ .minimize-btn svg,
3045
+ .history-btn svg,
3046
+ .restore-btn-only svg {
3047
+ width: 16px;
3048
+ height: 16px;
3049
+ }
3050
+ }
3051
+ @media (prefers-reduced-motion: reduce) {
3052
+ * {
3053
+ animation: none !important;
3054
+ transition: none !important;
2212
3055
  }
2213
3056
  }
2214
3057
 
2215
- /* src/styles/index.css */
3058
+ /* src/style/index.css */
2216
3059
  :root {
2217
3060
  --fc-blue-50: #EBF4FD;
2218
3061
  --fc-blue-100: #C8E0F8;
@@ -2329,10 +3172,10 @@
2329
3172
  --fc-font-weight-bold: 600;
2330
3173
  --fc-line-height-tight: 1.3;
2331
3174
  --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);
3175
+ --fc-shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.04);
3176
+ --fc-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.06), 0 1px 2px rgba(0, 0, 0, 0.04);
3177
+ --fc-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.08), 0 2px 4px rgba(0, 0, 0, 0.04);
3178
+ --fc-shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.10), 0 4px 8px rgba(0, 0, 0, 0.06);
2336
3179
  --fc-transition: 150ms ease;
2337
3180
  --fc-transition-slow: 250ms ease;
2338
3181
  --fc-transition-fast: 100ms ease;
@@ -2397,10 +3240,10 @@ body {
2397
3240
  --fc-color-teal-bg: rgba(0, 163, 163, 0.12);
2398
3241
  --fc-color-pink: #E860A0;
2399
3242
  --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);
3243
+ --fc-shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.3);
3244
+ --fc-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.4), 0 1px 2px rgba(0, 0, 0, 0.3);
3245
+ --fc-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.5), 0 2px 4px rgba(0, 0, 0, 0.3);
3246
+ --fc-shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.6), 0 4px 8px rgba(0, 0, 0, 0.4);
2404
3247
  }
2405
3248
  body {
2406
3249
  font-family: var(--fc-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);
@@ -2496,10 +3339,10 @@ body {
2496
3339
  --fc-color-warning-hover: #F5BC60 !important;
2497
3340
  --fc-color-warning-bg: rgba(214, 128, 0, 0.12) !important;
2498
3341
  --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;
3342
+ --fc-shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.3) !important;
3343
+ --fc-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.4), 0 1px 2px rgba(0, 0, 0, 0.3) !important;
3344
+ --fc-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.5), 0 2px 4px rgba(0, 0, 0, 0.3) !important;
3345
+ --fc-shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.6), 0 4px 8px rgba(0, 0, 0, 0.4) !important;
2503
3346
  }
2504
3347
  .theme-dark .fc-list-group {
2505
3348
  background-color: var(--fc-color-bg, #0F0F0F) !important;