flowcloudai-ui 0.1.0 → 0.1.2

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
@@ -1,12 +1,14 @@
1
1
  /* src/components/Button/Button.css */
2
2
  .fc-btn {
3
3
  --btn-bg: transparent;
4
- --btn-bg-hover: var(--fc-color-bg-secondary, #f3f4f6);
4
+ --btn-bg-hover: var(--fc-color-bg-secondary, #c3c4c6);
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;
11
+ --btn-radius: var(--fc-radius-md, 8px);
10
12
  display: inline-flex;
11
13
  align-items: center;
12
14
  justify-content: center;
@@ -16,7 +18,7 @@
16
18
  font-size: var(--fc-font-size-md, 16px);
17
19
  font-weight: var(--fc-font-weight-medium, 500);
18
20
  line-height: var(--fc-line-height-tight, 1.25);
19
- border-radius: var(--fc-radius-md, 8px);
21
+ border-radius: var(--btn-radius);
20
22
  border: 1px solid var(--btn-border);
21
23
  cursor: pointer;
22
24
  text-decoration: none;
@@ -24,10 +26,11 @@
24
26
  user-select: none;
25
27
  background-color: var(--btn-bg);
26
28
  color: var(--btn-color);
27
- transition: all 0.2s ease;
29
+ transition: all 0.1s ease;
28
30
  }
29
31
  .fc-btn:hover:not(:disabled):not(.is-disabled) {
30
32
  background-color: var(--btn-bg-hover);
33
+ color: var(--btn-color-hover);
31
34
  border-color: var(--btn-border-hover);
32
35
  }
33
36
  .fc-btn:active:not(:disabled):not(.is-disabled) {
@@ -46,6 +49,7 @@
46
49
  --btn-bg-hover: var(--fc-color-primary-hover, #4f46e5);
47
50
  --btn-bg-active: var(--fc-color-primary-active, #4338ca);
48
51
  --btn-color: var(--fc-color-text-on-primary, #ffffff);
52
+ --btn-color-hover: var(--fc-color-text-on-primary, #ffffff);
49
53
  --btn-color-active: var(--fc-color-text-on-primary, #ffffff);
50
54
  --btn-border: var(--fc-color-primary, #6366f1);
51
55
  --btn-border-hover: var(--fc-color-primary-hover, #4f46e5);
@@ -55,6 +59,7 @@
55
59
  --btn-bg-hover: var(--fc-color-bg-tertiary, #e5e7eb);
56
60
  --btn-bg-active: var(--fc-color-bg-tertiary, #e5e7eb);
57
61
  --btn-color: var(--fc-color-text, #111827);
62
+ --btn-color-hover: var(--fc-color-text, #111827);
58
63
  --btn-color-active: var(--fc-color-text-secondary, #6b7280);
59
64
  --btn-border: var(--fc-color-border, #e5e7eb);
60
65
  --btn-border-hover: var(--fc-color-border-hover, #d1d5db);
@@ -64,6 +69,7 @@
64
69
  --btn-bg-hover: var(--fc-color-primary-subtle, #eff6ff);
65
70
  --btn-bg-active: var(--fc-color-primary-subtle, #eff6ff);
66
71
  --btn-color: var(--fc-color-primary, #6366f1);
72
+ --btn-color-hover: var(--fc-color-primary, #6366f1);
67
73
  --btn-color-active: var(--fc-color-primary-hover, #4f46e5);
68
74
  --btn-border: var(--fc-color-primary, #6366f1);
69
75
  --btn-border-hover: var(--fc-color-primary-hover, #4f46e5);
@@ -73,6 +79,7 @@
73
79
  --btn-bg-hover: var(--fc-color-bg-secondary, #f3f4f6);
74
80
  --btn-bg-active: var(--fc-color-bg-tertiary, #e5e7eb);
75
81
  --btn-color: var(--fc-color-text, #111827);
82
+ --btn-color-hover: var(--fc-color-text, #111827);
76
83
  --btn-color-active: var(--fc-color-text-secondary, #6b7280);
77
84
  --btn-border: transparent;
78
85
  --btn-border-hover: transparent;
@@ -82,6 +89,7 @@
82
89
  --btn-bg-hover: var(--fc-color-danger-hover, #dc2626);
83
90
  --btn-bg-active: var(--fc-color-danger-hover, #dc2626);
84
91
  --btn-color: var(--fc-color-text-on-primary, #ffffff);
92
+ --btn-color-hover: var(--fc-color-text-on-primary, #ffffff);
85
93
  --btn-color-active: var(--fc-color-text-on-primary, #ffffff);
86
94
  --btn-border: var(--fc-color-danger, #ef4444);
87
95
  --btn-border-hover: var(--fc-color-danger-hover, #dc2626);
@@ -92,6 +100,7 @@
92
100
  --btn-bg-hover: var(--fc-color-danger-bg, #fee2e2);
93
101
  --btn-bg-active: var(--fc-color-danger-bg, #fee2e2);
94
102
  --btn-color: var(--fc-color-danger, #ef4444);
103
+ --btn-color-hover: var(--fc-color-danger, #ef4444);
95
104
  --btn-color-active: var(--fc-color-danger, #ef4444);
96
105
  --btn-border: var(--fc-color-danger, #ef4444);
97
106
  --btn-border-hover: var(--fc-color-danger, #ef4444);
@@ -104,6 +113,7 @@
104
113
  --btn-bg-hover: var(--fc-color-success-hover, #059669);
105
114
  --btn-bg-active: var(--fc-color-success-hover, #059669);
106
115
  --btn-color: var(--fc-color-text-on-primary, #ffffff);
116
+ --btn-color-hover: var(--fc-color-text-on-primary, #ffffff);
107
117
  --btn-color-active: var(--fc-color-text-on-primary, #ffffff);
108
118
  --btn-border: var(--fc-color-success, #10b981);
109
119
  --btn-border-hover: var(--fc-color-success-hover, #059669);
@@ -113,6 +123,7 @@
113
123
  --btn-bg-hover: var(--fc-color-success-bg, #d1fae5);
114
124
  --btn-bg-active: var(--fc-color-success-bg, #d1fae5);
115
125
  --btn-color: var(--fc-color-success, #10b981);
126
+ --btn-color-hover: var(--fc-color-success, #10b981);
116
127
  --btn-color-active: var(--fc-color-success, #10b981);
117
128
  --btn-border: var(--fc-color-success, #10b981);
118
129
  --btn-border-hover: var(--fc-color-success, #10b981);
@@ -122,6 +133,7 @@
122
133
  --btn-bg-hover: var(--fc-color-warning-hover, #d97706);
123
134
  --btn-bg-active: var(--fc-color-warning-hover, #d97706);
124
135
  --btn-color: var(--fc-color-text-on-primary, #ffffff);
136
+ --btn-color-hover: var(--fc-color-text-on-primary, #ffffff);
125
137
  --btn-color-active: var(--fc-color-text-on-primary, #ffffff);
126
138
  --btn-border: var(--fc-color-warning, #f59e0b);
127
139
  --btn-border-hover: var(--fc-color-warning-hover, #d97706);
@@ -131,6 +143,7 @@
131
143
  --btn-bg-hover: var(--fc-color-warning-bg, #fef3c7);
132
144
  --btn-bg-active: var(--fc-color-warning-bg, #fef3c7);
133
145
  --btn-color: var(--fc-color-warning, #f59e0b);
146
+ --btn-color-hover: var(--fc-color-warning, #f59e0b);
134
147
  --btn-color-active: var(--fc-color-warning, #f59e0b);
135
148
  --btn-border: var(--fc-color-warning, #f59e0b);
136
149
  --btn-border-hover: var(--fc-color-warning, #f59e0b);
@@ -138,27 +151,45 @@
138
151
  .fc-btn--xs {
139
152
  padding: var(--fc-space-xs, 4px) var(--fc-space-sm, 8px);
140
153
  font-size: var(--fc-font-size-xs, 12px);
141
- border-radius: var(--fc-radius-sm, 4px);
154
+ --btn-radius: var(--fc-radius-sm, 4px);
142
155
  }
143
156
  .fc-btn--sm {
144
157
  padding: var(--fc-space-sm, 8px) var(--fc-space-md, 12px);
145
158
  font-size: var(--fc-font-size-sm, 14px);
146
- border-radius: var(--fc-radius-sm, 4px);
159
+ --btn-radius: var(--fc-radius-sm, 4px);
147
160
  }
148
161
  .fc-btn--md {
149
162
  padding: var(--fc-space-md, 12px) var(--fc-space-lg, 16px);
150
163
  font-size: var(--fc-font-size-md, 16px);
151
- border-radius: var(--fc-radius-md, 8px);
164
+ --btn-radius: var(--fc-radius-md, 8px);
152
165
  }
153
166
  .fc-btn--lg {
154
167
  padding: var(--fc-space-lg, 16px) var(--fc-space-xl, 20px);
155
168
  font-size: var(--fc-font-size-lg, 18px);
156
- border-radius: var(--fc-radius-lg, 12px);
169
+ --btn-radius: var(--fc-radius-lg, 12px);
157
170
  }
158
171
  .fc-btn--xl {
159
172
  padding: var(--fc-space-xl, 20px) var(--fc-space-2xl, 24px);
160
173
  font-size: var(--fc-font-size-xl, 20px);
161
- border-radius: var(--fc-radius-lg, 12px);
174
+ --btn-radius: var(--fc-radius-lg, 12px);
175
+ }
176
+ .fc-btn--radius-none {
177
+ --btn-radius: 0px;
178
+ }
179
+ .fc-btn--radius-sm {
180
+ --btn-radius: var(--fc-radius-sm, 4px);
181
+ }
182
+ .fc-btn--radius-md {
183
+ --btn-radius: var(--fc-radius-md, 8px);
184
+ }
185
+ .fc-btn--radius-lg {
186
+ --btn-radius: var(--fc-radius-lg, 12px);
187
+ }
188
+ .fc-btn--radius-xl {
189
+ --btn-radius: var(--fc-radius-xl, 16px);
190
+ }
191
+ .fc-btn--radius-full {
192
+ --btn-radius: var(--fc-radius-full, 9999px);
162
193
  }
163
194
  .fc-btn--square,
164
195
  .fc-btn--circle,
@@ -257,12 +288,12 @@
257
288
  flex-shrink: 0;
258
289
  width: var(--track-w);
259
290
  height: var(--track-h);
260
- background-color: var(--fc-color-bg-tertiary);
261
- border-radius: var(--fc-radius-full);
291
+ background-color: var(--check-track-bg, var(--fc-color-bg-tertiary));
292
+ border-radius: var(--check-radius, var(--fc-radius-full));
262
293
  transition: background-color var(--fc-transition);
263
294
  }
264
295
  .fc-check--checked .fc-check__track {
265
- background-color: var(--fc-color-primary);
296
+ background-color: var(--check-track-bg-checked, var(--fc-color-primary));
266
297
  }
267
298
  .fc-check:focus-visible .fc-check__track {
268
299
  box-shadow: 0 0 0 2px var(--fc-color-bg), 0 0 0 4px var(--fc-color-border-focus);
@@ -276,11 +307,29 @@
276
307
  display: flex;
277
308
  align-items: center;
278
309
  justify-content: center;
279
- background-color: var(--fc-color-bg-elevated);
280
- border-radius: var(--fc-radius-full);
310
+ background-color: var(--check-thumb-bg, var(--fc-color-bg-elevated));
311
+ border-radius: var(--check-radius, var(--fc-radius-full));
281
312
  box-shadow: var(--fc-shadow-sm);
282
313
  transition: transform var(--fc-transition-slow) cubic-bezier(0.34, 1.56, 0.64, 1);
283
314
  }
315
+ .fc-check--radius-none {
316
+ --check-radius: 2px;
317
+ }
318
+ .fc-check--radius-sm {
319
+ --check-radius: var(--fc-radius-sm, 4px);
320
+ }
321
+ .fc-check--radius-md {
322
+ --check-radius: var(--fc-radius-md, 8px);
323
+ }
324
+ .fc-check--radius-lg {
325
+ --check-radius: var(--fc-radius-lg, 12px);
326
+ }
327
+ .fc-check--radius-xl {
328
+ --check-radius: var(--fc-radius-xl, 16px);
329
+ }
330
+ .fc-check--radius-full {
331
+ --check-radius: var(--fc-radius-full, 9999px);
332
+ }
284
333
  .fc-check--checked .fc-check__thumb {
285
334
  transform: translateX(calc(var(--track-w) - var(--track-h)));
286
335
  }
@@ -305,13 +354,13 @@
305
354
  .fc-check--checked .fc-check__thumb-inner {
306
355
  opacity: 1;
307
356
  transform: scale(1);
308
- background-color: var(--fc-color-primary);
357
+ background-color: var(--check-thumb-dot-color, var(--fc-color-primary));
309
358
  }
310
359
  .fc-check__label {
311
360
  font-size: var(--label-size);
312
361
  font-weight: var(--fc-font-weight-medium);
313
362
  line-height: var(--fc-line-height-tight);
314
- color: var(--fc-color-text);
363
+ color: var(--check-label-color, var(--fc-color-text));
315
364
  }
316
365
  .fc-check--disabled {
317
366
  cursor: not-allowed;
@@ -322,7 +371,7 @@
322
371
  background-color: var(--fc-color-bg-secondary);
323
372
  }
324
373
  .fc-check--disabled.fc-check--checked .fc-check__track {
325
- background-color: var(--fc-color-primary);
374
+ background-color: var(--check-track-bg-checked, var(--fc-color-primary));
326
375
  opacity: 0.5;
327
376
  }
328
377
  .fc-check--disabled .fc-check__label {
@@ -391,7 +440,8 @@
391
440
  -ms-overflow-style: none;
392
441
  }
393
442
  .fc-roll--thumb-hide::-webkit-scrollbar {
394
- display: none;
443
+ width: 0;
444
+ height: 0;
395
445
  }
396
446
  .fc-roll--thumb-auto:hover {
397
447
  --roll-thumb: var(--roll-thumb-hover);
@@ -414,9 +464,6 @@
414
464
  .fc-sidebar {
415
465
  --sidebar-width: 240px;
416
466
  --sidebar-collapsed-width: 64px;
417
- --sidebar-item-bg: transparent;
418
- --sidebar-item-color: var(--fc-color-text-secondary);
419
- --sidebar-item-indent: 0px;
420
467
  display: flex;
421
468
  flex-direction: column;
422
469
  width: var(--sidebar-width);
@@ -424,12 +471,12 @@
424
471
  background: var(--fc-color-bg-secondary);
425
472
  border-right: 1px solid var(--fc-color-border);
426
473
  overflow: hidden;
427
- transition: width var(--fc-transition-slow);
474
+ transition: width var(--fc-transition-slow, 250ms ease);
428
475
  }
429
476
  .fc-sidebar__header {
430
477
  display: flex;
431
478
  justify-content: flex-end;
432
- padding: var(--fc-space-md);
479
+ padding: var(--fc-space-md, 12px);
433
480
  border-bottom: 1px solid var(--fc-color-border);
434
481
  }
435
482
  .fc-sidebar__collapse-btn {
@@ -442,127 +489,96 @@
442
489
  background: transparent;
443
490
  color: var(--fc-color-text-secondary);
444
491
  cursor: pointer;
445
- border-radius: var(--fc-radius-md);
446
- transition: background var(--fc-transition), color var(--fc-transition);
492
+ border-radius: var(--fc-radius-md, 8px);
493
+ transition: background var(--fc-transition, 150ms ease), color var(--fc-transition, 150ms ease);
447
494
  }
448
495
  .fc-sidebar__collapse-btn:hover {
449
496
  background: var(--fc-color-bg-tertiary);
450
497
  color: var(--fc-color-text);
451
498
  }
452
- .fc-sidebar__collapse-btn:focus-visible {
453
- outline: 2px solid var(--fc-color-primary);
454
- outline-offset: -2px;
499
+ .fc-sidebar__collapse-icon {
500
+ flex-shrink: 0;
501
+ transition: transform var(--fc-transition, 150ms ease);
455
502
  }
456
503
  .fc-sidebar__menu {
457
504
  flex: 1;
458
505
  overflow-y: auto;
459
- padding: var(--fc-space-sm) 0;
506
+ min-height: 0;
507
+ padding: var(--fc-space-sm, 8px) 0;
508
+ }
509
+ .fc-sidebar__footer {
510
+ padding: var(--fc-space-sm, 8px) 0;
511
+ border-top: 1px solid var(--fc-color-border);
460
512
  }
461
513
  .fc-sidebar__item {
462
- --sidebar-item-bg: transparent;
463
- --sidebar-item-color: var(--fc-color-text-secondary);
464
514
  display: flex;
465
515
  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);
516
+ gap: 0;
517
+ padding: var(--fc-space-md, 12px) 0;
518
+ margin: 2px var(--fc-space-sm, 8px);
519
+ border-radius: var(--fc-radius-md, 8px);
471
520
  cursor: pointer;
472
- background: var(--sidebar-item-bg);
473
- color: var(--sidebar-item-color);
474
- position: relative;
521
+ background: var(--sidebar-item-bg, transparent);
522
+ color: var(--sidebar-item-color, var(--fc-color-text-secondary));
523
+ text-decoration: none;
524
+ white-space: nowrap;
475
525
  overflow: hidden;
476
526
  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);
527
+ transition: background var(--fc-transition, 150ms ease), color var(--fc-transition, 150ms ease);
484
528
  }
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;
529
+ .fc-sidebar__item:hover:not(.fc-sidebar__item--disabled):not(.fc-sidebar__item--selected) {
530
+ background: var(--sidebar-item-hover-bg, var(--fc-color-bg-tertiary));
531
+ color: var(--sidebar-item-hover-color, var(--fc-color-text));
492
532
  }
493
533
  .fc-sidebar__item--selected {
494
- --sidebar-item-bg: var(--fc-color-primary-subtle);
495
- --sidebar-item-color: var(--fc-color-primary);
534
+ background: var(--sidebar-item-selected-bg, var(--fc-color-primary-subtle));
535
+ color: var(--sidebar-item-selected-color, var(--fc-color-primary));
496
536
  }
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;
537
+ .fc-sidebar__item--selected:hover {
538
+ background: var(--sidebar-item-selected-bg, var(--fc-color-primary-subtle));
539
+ color: var(--sidebar-item-selected-color, var(--fc-color-primary));
507
540
  }
508
541
  .fc-sidebar__item--disabled {
509
542
  opacity: 0.5;
510
543
  cursor: not-allowed;
511
544
  pointer-events: none;
512
545
  }
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
546
  .fc-sidebar__icon {
520
547
  display: flex;
521
548
  align-items: center;
522
549
  justify-content: center;
523
- width: 20px;
550
+ width: calc(var(--sidebar-collapsed-width) - var(--fc-space-sm, 8px) * 2);
524
551
  height: 20px;
525
552
  flex-shrink: 0;
526
- font-size: var(--fc-font-size-lg);
553
+ }
554
+ .fc-sidebar__icon svg {
555
+ width: 20px;
556
+ height: 20px;
557
+ color: inherit;
558
+ fill: none;
559
+ stroke: currentColor;
527
560
  }
528
561
  .fc-sidebar__label {
529
562
  flex: 1;
530
- font-size: var(--fc-font-size-md);
563
+ min-width: 0;
564
+ font-size: var(--fc-font-size-md, 14px);
565
+ padding-right: var(--fc-space-lg, 16px);
531
566
  overflow: hidden;
532
567
  text-overflow: ellipsis;
568
+ opacity: 1;
569
+ transition: opacity var(--fc-transition-slow, 250ms ease);
533
570
  }
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;
571
+ .fc-sidebar--collapsed .fc-sidebar__label {
572
+ opacity: 0;
573
+ padding-right: 0;
559
574
  }
560
- .fc-sidebar--collapsed .fc-sidebar__item {
561
- justify-content: center;
562
- padding: var(--fc-space-md);
575
+ [data-theme=dark] .fc-sidebar {
576
+ background: var(--fc-color-bg-secondary);
577
+ border-right-color: var(--fc-color-border);
563
578
  }
564
- .fc-sidebar--collapsed .fc-sidebar__submenu {
565
- display: none;
579
+ [data-theme=dark] .fc-sidebar__item--selected {
580
+ background: var(--sidebar-item-selected-bg, var(--fc-color-primary-subtle));
581
+ color: var(--sidebar-item-selected-color, var(--fc-color-primary));
566
582
  }
567
583
 
568
584
  /* src/components/Input/Input.css */
@@ -580,7 +596,7 @@
580
596
  flex: 1;
581
597
  background: var(--fc-color-bg);
582
598
  border: 1px solid var(--fc-color-border);
583
- border-radius: var(--fc-radius-md);
599
+ border-radius: var(--input-radius, var(--fc-radius-md));
584
600
  transition: border-color var(--fc-transition), box-shadow var(--fc-transition);
585
601
  }
586
602
  .fc-input__field {
@@ -591,7 +607,7 @@
591
607
  color: var(--fc-color-text);
592
608
  font-size: var(--fc-font-size-md);
593
609
  line-height: var(--fc-line-height-tight);
594
- outline: none;
610
+ outline: none !important;
595
611
  }
596
612
  .fc-input__field::placeholder {
597
613
  color: var(--fc-color-text-tertiary);
@@ -602,27 +618,40 @@
602
618
  .fc-input--xs .fc-input__field {
603
619
  font-size: var(--fc-font-size-xs);
604
620
  padding: 0 var(--fc-space-sm);
621
+ padding-top: 0.25rem;
622
+ padding-bottom: 0.25rem;
605
623
  }
606
624
  .fc-input--sm .fc-input__wrapper {
607
625
  height: 2rem;
608
626
  }
609
627
  .fc-input--sm .fc-input__field {
610
628
  font-size: var(--fc-font-size-sm);
629
+ padding-top: 0.375rem;
630
+ padding-bottom: 0.375rem;
611
631
  }
612
632
  .fc-input--md .fc-input__wrapper {
613
633
  height: 2.5rem;
614
634
  }
635
+ .fc-input--md .fc-input__field {
636
+ font-size: var(--fc-font-size-md);
637
+ padding-top: 0.5rem;
638
+ padding-bottom: 0.5rem;
639
+ }
615
640
  .fc-input--lg .fc-input__wrapper {
616
641
  height: 3rem;
617
642
  }
618
643
  .fc-input--lg .fc-input__field {
619
644
  font-size: var(--fc-font-size-lg);
645
+ padding-top: 0.625rem;
646
+ padding-bottom: 0.625rem;
620
647
  }
621
648
  .fc-input--xl .fc-input__wrapper {
622
649
  height: 3.5rem;
623
650
  }
624
651
  .fc-input--xl .fc-input__field {
625
652
  font-size: var(--fc-font-size-xl);
653
+ padding-top: 0.75rem;
654
+ padding-bottom: 0.75rem;
626
655
  }
627
656
  .fc-input--error .fc-input__wrapper {
628
657
  border-color: var(--fc-color-danger);
@@ -639,10 +668,21 @@
639
668
  .fc-input:not(.fc-input--disabled):hover .fc-input__wrapper {
640
669
  border-color: var(--fc-color-border-hover);
641
670
  }
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);
671
+ .fc-input:not(.fc-input--disabled) .fc-input__wrapper:focus-within {
672
+ border-color: var(--fc-color-primary);
673
+ box-shadow: 0 0 0 2px var(--fc-color-primary-subtle);
674
+ }
675
+ .fc-input--error .fc-input__wrapper:focus-within {
676
+ border-color: var(--fc-color-danger);
677
+ box-shadow: 0 0 0 2px var(--fc-color-danger);
678
+ }
679
+ .fc-input--warning .fc-input__wrapper:focus-within {
680
+ border-color: var(--fc-color-warning);
681
+ box-shadow: 0 0 0 2px var(--fc-color-warning);
682
+ }
683
+ .fc-input--success .fc-input__wrapper:focus-within {
684
+ border-color: var(--fc-color-success);
685
+ box-shadow: 0 0 0 2px var(--fc-color-success);
646
686
  }
647
687
  .fc-input__prefix,
648
688
  .fc-input__suffix,
@@ -654,8 +694,8 @@
654
694
  white-space: nowrap;
655
695
  }
656
696
  .fc-input__prefix {
657
- margin-left: var(--fc-space-md);
658
- margin-right: var(--fc-space-sm);
697
+ padding-left: var(--fc-space-md);
698
+ margin-right: var(--fc-space-xs);
659
699
  }
660
700
  .fc-input__suffix {
661
701
  margin-right: var(--fc-space-md);
@@ -694,13 +734,31 @@
694
734
  align-items: center;
695
735
  }
696
736
  .fc-input__addon--before {
697
- border-radius: var(--fc-radius-md) 0 0 var(--fc-radius-md);
737
+ border-radius: var(--input-radius, var(--fc-radius-md)) 0 0 var(--input-radius, var(--fc-radius-md));
698
738
  border-right: none;
699
739
  }
700
740
  .fc-input__addon--after {
701
- border-radius: 0 var(--fc-radius-md) var(--fc-radius-md) 0;
741
+ border-radius: 0 var(--input-radius, var(--fc-radius-md)) var(--input-radius, var(--fc-radius-md)) 0;
702
742
  border-left: none;
703
743
  }
744
+ .fc-input--radius-none {
745
+ --input-radius: 0px;
746
+ }
747
+ .fc-input--radius-sm {
748
+ --input-radius: var(--fc-radius-sm, 4px);
749
+ }
750
+ .fc-input--radius-md {
751
+ --input-radius: var(--fc-radius-md, 8px);
752
+ }
753
+ .fc-input--radius-lg {
754
+ --input-radius: var(--fc-radius-lg, 12px);
755
+ }
756
+ .fc-input--radius-xl {
757
+ --input-radius: var(--fc-radius-xl, 16px);
758
+ }
759
+ .fc-input--radius-full {
760
+ --input-radius: var(--fc-radius-full, 9999px);
761
+ }
704
762
  .fc-input--addon-before .fc-input__wrapper {
705
763
  border-top-left-radius: 0;
706
764
  border-bottom-left-radius: 0;
@@ -717,13 +775,13 @@
717
775
  font-size: var(--fc-font-size-xs);
718
776
  color: var(--fc-color-text-secondary);
719
777
  }
720
- .fc-input__helper--error {
778
+ .fc-input--error .fc-input__helper {
721
779
  color: var(--fc-color-danger);
722
780
  }
723
- .fc-input__helper--warning {
781
+ .fc-input--warning .fc-input__helper {
724
782
  color: var(--fc-color-warning);
725
783
  }
726
- .fc-input__helper--success {
784
+ .fc-input--success .fc-input__helper {
727
785
  color: var(--fc-color-success);
728
786
  }
729
787
  .fc-input--disabled {
@@ -753,7 +811,7 @@
753
811
  }
754
812
  .fc-slider__track {
755
813
  position: relative;
756
- background: var(--fc-color-bg-tertiary);
814
+ background: var(--slider-track-bg, var(--fc-color-bg-tertiary));
757
815
  border-radius: var(--fc-radius-full);
758
816
  cursor: pointer;
759
817
  }
@@ -767,7 +825,7 @@
767
825
  }
768
826
  .fc-slider__fill {
769
827
  position: absolute;
770
- background: var(--fc-color-primary);
828
+ background: var(--slider-fill-bg, var(--fc-color-primary));
771
829
  border-radius: var(--fc-radius-full);
772
830
  transition: all 0.1s;
773
831
  }
@@ -778,8 +836,8 @@
778
836
  position: absolute;
779
837
  width: 16px;
780
838
  height: 16px;
781
- background: var(--fc-color-bg-elevated);
782
- border: 2px solid var(--fc-color-primary);
839
+ background: var(--slider-thumb-bg, var(--fc-color-bg-elevated));
840
+ border: 2px solid var(--slider-thumb-border, var(--fc-color-primary));
783
841
  border-radius: var(--fc-radius-full);
784
842
  transform: translate(-50%, -50%);
785
843
  cursor: grab;
@@ -814,8 +872,8 @@
814
872
  left: 50%;
815
873
  transform: translateX(-50%) translateY(-8px);
816
874
  padding: var(--fc-space-xs) var(--fc-space-sm);
817
- background: var(--fc-color-bg-elevated);
818
- color: var(--fc-color-text);
875
+ background: var(--slider-tooltip-bg, var(--fc-color-bg-elevated));
876
+ color: var(--slider-tooltip-color, var(--fc-color-text));
819
877
  font-size: var(--fc-font-size-xs);
820
878
  border-radius: var(--fc-radius-sm);
821
879
  box-shadow: var(--fc-shadow-md);
@@ -845,7 +903,7 @@
845
903
  .fc-slider__mark-dot {
846
904
  width: 4px;
847
905
  height: 4px;
848
- background: var(--fc-color-text-tertiary);
906
+ background: var(--slider-mark-dot-bg, var(--fc-color-text-tertiary));
849
907
  border-radius: var(--fc-radius-full);
850
908
  }
851
909
  .fc-slider__mark-label {
@@ -854,7 +912,7 @@
854
912
  left: 50%;
855
913
  transform: translateX(-50%);
856
914
  font-size: var(--fc-font-size-xs);
857
- color: var(--fc-color-text-secondary);
915
+ color: var(--slider-mark-label-color, var(--fc-color-text-secondary));
858
916
  white-space: nowrap;
859
917
  }
860
918
  .fc-slider--vertical .fc-slider__mark-label {
@@ -876,6 +934,11 @@
876
934
 
877
935
  /* src/components/Select/Select.css */
878
936
  .fc-select {
937
+ --select-trigger-bg: var(--fc-color-bg);
938
+ --select-trigger-border: var(--fc-color-border);
939
+ --select-option-selected-color: var(--fc-color-primary);
940
+ --select-option-selected-bg: var(--fc-color-primary-subtle);
941
+ --select-option-hover-bg: var(--fc-color-bg-secondary);
879
942
  position: relative;
880
943
  display: inline-block;
881
944
  width: 100%;
@@ -886,9 +949,9 @@
886
949
  align-items: center;
887
950
  justify-content: space-between;
888
951
  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);
952
+ background: var(--select-trigger-bg);
953
+ border: 1px solid var(--select-trigger-border);
954
+ border-radius: var(--select-radius, var(--fc-radius-md));
892
955
  cursor: pointer;
893
956
  transition: border-color var(--fc-transition), box-shadow var(--fc-transition);
894
957
  }
@@ -922,11 +985,29 @@
922
985
  margin-top: var(--fc-space-xs);
923
986
  background: var(--fc-color-bg-elevated);
924
987
  border: 1px solid var(--fc-color-border);
925
- border-radius: var(--fc-radius-md);
988
+ border-radius: var(--select-radius, var(--fc-radius-md));
926
989
  box-shadow: var(--fc-shadow-lg);
927
990
  z-index: var(--fc-z-dropdown);
928
991
  overflow: hidden;
929
992
  }
993
+ .fc-select--radius-none {
994
+ --select-radius: 0px;
995
+ }
996
+ .fc-select--radius-sm {
997
+ --select-radius: var(--fc-radius-sm, 4px);
998
+ }
999
+ .fc-select--radius-md {
1000
+ --select-radius: var(--fc-radius-md, 8px);
1001
+ }
1002
+ .fc-select--radius-lg {
1003
+ --select-radius: var(--fc-radius-lg, 12px);
1004
+ }
1005
+ .fc-select--radius-xl {
1006
+ --select-radius: var(--fc-radius-xl, 16px);
1007
+ }
1008
+ .fc-select--radius-full {
1009
+ --select-radius: var(--fc-radius-full, 9999px);
1010
+ }
930
1011
  .fc-select__search {
931
1012
  padding: var(--fc-space-sm);
932
1013
  border-bottom: 1px solid var(--fc-color-border-light);
@@ -964,11 +1045,11 @@
964
1045
  }
965
1046
  .fc-select__option:hover,
966
1047
  .fc-select__option--highlighted {
967
- background: var(--fc-color-bg-secondary);
1048
+ background: var(--select-option-hover-bg);
968
1049
  }
969
1050
  .fc-select__option--selected {
970
- color: var(--fc-color-primary);
971
- background: var(--fc-color-primary-subtle);
1051
+ color: var(--select-option-selected-color);
1052
+ background: var(--select-option-selected-bg);
972
1053
  }
973
1054
  .fc-select__option--disabled {
974
1055
  opacity: 0.5;
@@ -1283,208 +1364,31 @@
1283
1364
 
1284
1365
  /* src/components/Avatar/Avatar.css */
1285
1366
  .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
1367
  display: inline-flex;
1296
1368
  align-items: center;
1297
1369
  justify-content: center;
1298
1370
  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;
1371
+ background-color: #e5e7eb;
1372
+ color: #6b7280;
1304
1373
  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
1374
  }
1311
1375
  .ui-avatar-img {
1312
1376
  width: 100%;
1313
1377
  height: 100%;
1314
1378
  object-fit: cover;
1315
1379
  }
1316
- .ui-avatar-text,
1317
1380
  .ui-avatar-placeholder {
1318
1381
  display: flex;
1319
1382
  align-items: center;
1320
1383
  justify-content: center;
1321
1384
  width: 100%;
1322
1385
  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
1386
  }
1357
1387
  .ui-avatar-circle {
1358
1388
  border-radius: 50%;
1359
1389
  }
1360
1390
  .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
- }
1391
+ border-radius: 8px;
1488
1392
  }
1489
1393
 
1490
1394
  /* src/components/ListGroup/ListGroup.css */
@@ -1659,10 +1563,14 @@
1659
1563
 
1660
1564
  /* src/components/VirtualList/VirtualList.css */
1661
1565
  .fc-virtual-list {
1566
+ --vl-bg: var(--fc-color-bg);
1567
+ --vl-track-bg: var(--fc-color-bg-tertiary);
1568
+ --vl-thumb-bg: var(--fc-color-border);
1569
+ --vl-thumb-hover: var(--fc-color-border-hover);
1662
1570
  position: relative;
1663
1571
  overflow-y: auto;
1664
1572
  overflow-x: hidden;
1665
- background-color: var(--fc-color-bg, #ffffff);
1573
+ background-color: var(--vl-bg);
1666
1574
  border-radius: var(--fc-radius-md, 8px);
1667
1575
  }
1668
1576
  .fc-virtual-list--hide-scrollbar {
@@ -1694,35 +1602,20 @@
1694
1602
  height: 6px;
1695
1603
  }
1696
1604
  .fc-virtual-list::-webkit-scrollbar-track {
1697
- background: var(--fc-color-bg-tertiary, #f3f4f6);
1605
+ background: var(--vl-track-bg);
1698
1606
  border-radius: var(--fc-radius-full, 9999px);
1699
1607
  }
1700
1608
  .fc-virtual-list::-webkit-scrollbar-thumb {
1701
- background: var(--fc-color-border, #d1d5db);
1609
+ background: var(--vl-thumb-bg);
1702
1610
  border-radius: var(--fc-radius-full, 9999px);
1703
1611
  }
1704
1612
  .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;
1613
+ background: var(--vl-thumb-hover);
1718
1614
  }
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;
1615
+ [data-theme=dark] .fc-virtual-list {
1616
+ --vl-track-bg: #222222;
1617
+ --vl-thumb-bg: #333330;
1618
+ --vl-thumb-hover: #555550;
1726
1619
  }
1727
1620
 
1728
1621
  /* src/components/Alert/AlertContext.css */
@@ -1785,6 +1678,9 @@
1785
1678
  padding: 0 var(--fc-space-xs);
1786
1679
  margin-bottom: var(--fc-space-lg);
1787
1680
  }
1681
+ .fc-alert--toast .fc-alert__msg {
1682
+ margin-bottom: 0;
1683
+ }
1788
1684
  .fc-alert__footer {
1789
1685
  display: flex;
1790
1686
  align-items: center;
@@ -1941,278 +1837,1186 @@
1941
1837
  display: block;
1942
1838
  }
1943
1839
 
1944
- /* src/components/Tabs/Tabs.css */
1945
- .fc-tabs {
1840
+ /* src/components/Bar/TabBar.css */
1841
+ .fc-tab-bar {
1842
+ --tab-bar-bg: var(--fc-color-bg-secondary);
1843
+ --tab-color: var(--fc-color-text-secondary);
1844
+ --tab-hover-color: var(--fc-color-primary);
1845
+ --tab-hover-bg: var(--fc-color-bg-tertiary);
1846
+ --tab-active-color: var(--fc-color-primary);
1847
+ --tab-active-bg: var(--fc-color-bg);
1848
+ --tab-active-indicator: var(--fc-color-primary);
1849
+ --tab-bar-radius-tl: var(--fc-radius-md);
1850
+ --tab-bar-radius-tr: var(--fc-radius-md);
1851
+ --tab-bar-radius-br: 0px;
1852
+ --tab-bar-radius-bl: 0px;
1853
+ --tab-item-radius-tl: 0px;
1854
+ --tab-item-radius-tr: 0px;
1855
+ --tab-item-radius-br: 0px;
1856
+ --tab-item-radius-bl: 0px;
1946
1857
  display: flex;
1947
1858
  flex-direction: column;
1948
1859
  width: 100%;
1949
- background-color: var(--fc-color-bg);
1860
+ background-color: var(--tab-bar-bg);
1950
1861
  color: var(--fc-color-text);
1951
1862
  overflow: hidden;
1863
+ border-radius: var(--tab-bar-radius-tl) var(--tab-bar-radius-tr) var(--tab-bar-radius-br) var(--tab-bar-radius-bl);
1952
1864
  }
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);
1865
+ .fc-tab-bar--radius-none {
1866
+ --tab-bar-radius-tl: 0px;
1867
+ --tab-bar-radius-tr: 0px;
1868
+ --tab-bar-radius-br: 0px;
1869
+ --tab-bar-radius-bl: 0px;
1961
1870
  }
1962
- .fc-tabs--radius-lg {
1963
- border-radius: var(--fc-radius-lg, 12px);
1871
+ .fc-tab-bar--radius-sm {
1872
+ --tab-bar-radius-tl: var(--fc-radius-sm, 4px);
1873
+ --tab-bar-radius-tr: var(--fc-radius-sm, 4px);
1964
1874
  }
1965
- .fc-tabs--radius-xl {
1966
- border-radius: var(--fc-radius-xl, 16px);
1875
+ .fc-tab-bar--radius-md {
1876
+ --tab-bar-radius-tl: var(--fc-radius-md, 8px);
1877
+ --tab-bar-radius-tr: var(--fc-radius-md, 8px);
1967
1878
  }
1968
- .fc-tabs--radius-full {
1969
- border-radius: var(--fc-radius-full, 9999px);
1879
+ .fc-tab-bar--radius-lg {
1880
+ --tab-bar-radius-tl: var(--fc-radius-lg, 12px);
1881
+ --tab-bar-radius-tr: var(--fc-radius-lg, 12px);
1970
1882
  }
1971
- .fc-tabs--radius-sm .fc-tabs__content {
1972
- border-radius: 0 0 var(--fc-radius-sm, 4px) var(--fc-radius-sm, 4px);
1883
+ .fc-tab-bar--radius-xl {
1884
+ --tab-bar-radius-tl: var(--fc-radius-xl, 16px);
1885
+ --tab-bar-radius-tr: var(--fc-radius-xl, 16px);
1973
1886
  }
1974
- .fc-tabs--radius-md .fc-tabs__content {
1975
- border-radius: 0 0 var(--fc-radius-md, 8px) var(--fc-radius-md, 8px);
1887
+ .fc-tab-bar--radius-full {
1888
+ --tab-bar-radius-tl: var(--fc-radius-full, 9999px);
1889
+ --tab-bar-radius-tr: var(--fc-radius-full, 9999px);
1976
1890
  }
1977
- .fc-tabs--radius-lg .fc-tabs__content {
1978
- border-radius: 0 0 var(--fc-radius-lg, 12px) var(--fc-radius-lg, 12px);
1891
+ .fc-tab-bar__nav-outer {
1892
+ display: flex;
1893
+ align-items: stretch;
1979
1894
  }
1980
- .fc-tabs--radius-xl .fc-tabs__content {
1981
- border-radius: 0 0 var(--fc-radius-xl, 16px) var(--fc-radius-xl, 16px);
1895
+ .fc-tab-bar__nav-outer--scroll {
1896
+ overflow: hidden;
1982
1897
  }
1983
- .fc-tabs--radius-full .fc-tabs__content {
1984
- border-radius: 0 0 var(--fc-radius-full, 9999px) var(--fc-radius-full, 9999px);
1898
+ .fc-tab-bar__nav {
1899
+ flex: 1;
1900
+ min-width: 0;
1901
+ display: flex;
1902
+ align-items: stretch;
1903
+ position: relative;
1904
+ z-index: 0;
1985
1905
  }
1986
- .fc-tabs__nav {
1906
+ .fc-tab-bar__nav--scroll {
1907
+ overflow: hidden;
1987
1908
  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
1909
  }
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 {
1910
+ .fc-tab-bar__nav-wrap {
2009
1911
  display: flex;
2010
1912
  gap: 0;
1913
+ align-items: stretch;
1914
+ max-width: 100%;
1915
+ box-sizing: border-box;
2011
1916
  }
2012
- .fc-tabs__tab {
1917
+ .fc-tab-bar__tab {
2013
1918
  position: relative;
2014
1919
  display: inline-flex;
2015
1920
  align-items: center;
2016
1921
  gap: var(--fc-space-sm, 8px);
2017
1922
  padding: var(--fc-space-sm, 8px) var(--fc-space-lg, 16px);
2018
1923
  font-size: var(--fc-font-size-md, 14px);
2019
- color: var(--fc-color-text-secondary);
1924
+ color: var(--tab-color);
1925
+ background-color: transparent;
2020
1926
  cursor: pointer;
2021
1927
  transition: all var(--fc-transition, 150ms ease);
2022
1928
  white-space: nowrap;
2023
- background-color: transparent;
2024
1929
  border: none;
2025
- border-bottom: 2px solid transparent;
2026
- margin-bottom: -2px;
1930
+ user-select: none;
1931
+ border-radius: var(--tab-item-radius-tl) var(--tab-item-radius-tr) var(--tab-item-radius-br) var(--tab-item-radius-bl);
2027
1932
  }
2028
- .fc-tabs__tab:hover:not(.fc-tabs__tab--disabled) {
2029
- color: var(--fc-color-primary);
2030
- background-color: var(--fc-color-bg-tertiary);
1933
+ .fc-tab-bar__nav--scroll .fc-tab-bar__tab {
1934
+ justify-content: space-between;
2031
1935
  }
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);
1936
+ .fc-tab-bar__tab:hover:not(.fc-tab-bar__tab--disabled):not(.fc-tab-bar__tab--dragging) {
1937
+ color: var(--tab-hover-color);
1938
+ background-color: var(--tab-hover-bg);
2036
1939
  }
2037
- .fc-tabs__tab--disabled {
1940
+ .fc-tab-bar__tab--active {
1941
+ color: var(--tab-active-color);
1942
+ background-color: var(--tab-active-bg);
1943
+ }
1944
+ .fc-tab-bar__tab--disabled {
2038
1945
  color: var(--fc-color-text-disabled);
2039
1946
  cursor: not-allowed;
2040
1947
  opacity: 0.6;
2041
1948
  }
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);
1949
+ .fc-tab-bar--attached {
1950
+ border-bottom: 2px solid var(--fc-color-border);
2053
1951
  }
2054
- .fc-tabs__tab-close:hover {
2055
- color: var(--fc-color-text);
2056
- background-color: var(--fc-color-border-light);
1952
+ .fc-tab-bar--attached .fc-tab-bar__tab {
1953
+ border-bottom: 2px solid transparent;
1954
+ margin-bottom: -2px;
2057
1955
  }
2058
- .fc-tabs__add-btn {
2059
- display: inline-flex;
1956
+ .fc-tab-bar--attached .fc-tab-bar__tab--active {
1957
+ border-bottom-color: var(--tab-active-indicator);
1958
+ }
1959
+ .fc-tab-bar--floating {
1960
+ border-bottom: none;
1961
+ }
1962
+ .fc-tab-bar--floating .fc-tab-bar__nav-outer {
1963
+ padding: var(--fc-space-xs, 6px) var(--fc-space-sm, 8px);
1964
+ }
1965
+ .fc-tab-bar--floating .fc-tab-bar__nav-wrap {
1966
+ gap: var(--fc-space-xs, 4px);
2060
1967
  align-items: center;
2061
- justify-content: center;
1968
+ }
1969
+ .fc-tab-bar--floating .fc-tab-bar__tab {
1970
+ padding: var(--fc-space-xs, 6px) var(--fc-space-lg, 16px);
1971
+ border-bottom: none;
1972
+ margin-bottom: 0;
1973
+ }
1974
+ .fc-tab-bar--floating {
1975
+ --tab-item-radius-tl: var(--fc-radius-full, 9999px);
1976
+ --tab-item-radius-tr: var(--fc-radius-full, 9999px);
1977
+ --tab-item-radius-br: var(--fc-radius-full, 9999px);
1978
+ --tab-item-radius-bl: var(--fc-radius-full, 9999px);
1979
+ }
1980
+ .fc-tab-bar--floating .fc-tab-bar__tab--active {
1981
+ background-color: var(--tab-active-bg);
1982
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08), 0 1px 2px rgba(0, 0, 0, 0.06);
1983
+ }
1984
+ .fc-tab-bar--tab-radius-none {
1985
+ --tab-item-radius-tl: 0px;
1986
+ --tab-item-radius-tr: 0px;
1987
+ --tab-item-radius-br: 0px;
1988
+ --tab-item-radius-bl: 0px;
1989
+ }
1990
+ .fc-tab-bar--tab-radius-sm {
1991
+ --tab-item-radius-tl: var(--fc-radius-sm, 4px);
1992
+ --tab-item-radius-tr: var(--fc-radius-sm, 4px);
1993
+ --tab-item-radius-br: var(--fc-radius-sm, 4px);
1994
+ --tab-item-radius-bl: var(--fc-radius-sm, 4px);
1995
+ }
1996
+ .fc-tab-bar--tab-radius-md {
1997
+ --tab-item-radius-tl: var(--fc-radius-md, 8px);
1998
+ --tab-item-radius-tr: var(--fc-radius-md, 8px);
1999
+ --tab-item-radius-br: var(--fc-radius-md, 8px);
2000
+ --tab-item-radius-bl: var(--fc-radius-md, 8px);
2001
+ }
2002
+ .fc-tab-bar--tab-radius-lg {
2003
+ --tab-item-radius-tl: var(--fc-radius-lg, 12px);
2004
+ --tab-item-radius-tr: var(--fc-radius-lg, 12px);
2005
+ --tab-item-radius-br: var(--fc-radius-lg, 12px);
2006
+ --tab-item-radius-bl: var(--fc-radius-lg, 12px);
2007
+ }
2008
+ .fc-tab-bar--tab-radius-xl {
2009
+ --tab-item-radius-tl: var(--fc-radius-xl, 16px);
2010
+ --tab-item-radius-tr: var(--fc-radius-xl, 16px);
2011
+ --tab-item-radius-br: var(--fc-radius-xl, 16px);
2012
+ --tab-item-radius-bl: var(--fc-radius-xl, 16px);
2013
+ }
2014
+ .fc-tab-bar--tab-radius-full {
2015
+ --tab-item-radius-tl: var(--fc-radius-full, 9999px);
2016
+ --tab-item-radius-tr: var(--fc-radius-full, 9999px);
2017
+ --tab-item-radius-br: var(--fc-radius-full, 9999px);
2018
+ --tab-item-radius-bl: var(--fc-radius-full, 9999px);
2019
+ }
2020
+ .fc-tab-bar__tab,
2021
+ .fc-tab-bar__tab-close,
2022
+ .fc-tab-bar__add-btn {
2023
+ -webkit-app-region: no-drag;
2024
+ }
2025
+ .fc-tab-bar--shrink .fc-tab-bar__tab {
2026
+ overflow: hidden;
2027
+ min-width: 0;
2028
+ }
2029
+ .fc-tab-bar--shrink .fc-tab-bar__tab[data-compact=true] {
2030
+ padding-left: var(--fc-space-xs, 6px);
2031
+ padding-right: var(--fc-space-xs, 6px);
2032
+ }
2033
+ .fc-tab-bar--shrink .fc-tab-bar__tab-label {
2034
+ flex: 1;
2035
+ min-width: 0;
2036
+ overflow: hidden;
2037
+ white-space: nowrap;
2038
+ -webkit-mask-image:
2039
+ linear-gradient(
2040
+ to right,
2041
+ black 0%,
2042
+ black calc(100% - 20px),
2043
+ transparent 100%);
2044
+ mask-image:
2045
+ linear-gradient(
2046
+ to right,
2047
+ black 0%,
2048
+ black calc(100% - 20px),
2049
+ transparent 100%);
2050
+ }
2051
+ .fc-tab-bar__tab--draggable {
2052
+ cursor: default;
2053
+ }
2054
+ .fc-tab-bar__tab--dragging {
2055
+ opacity: 0.4;
2056
+ }
2057
+ .fc-tab-bar__tab-close {
2058
+ display: inline-flex;
2059
+ align-items: center;
2060
+ justify-content: center;
2061
+ width: 18px;
2062
+ height: 18px;
2063
+ font-size: 16px;
2064
+ line-height: 1;
2065
+ color: var(--fc-color-text-tertiary);
2066
+ border-radius: var(--fc-radius-sm, 4px);
2067
+ transition: all var(--fc-transition, 150ms ease);
2068
+ flex-shrink: 0;
2069
+ }
2070
+ .fc-tab-bar__tab-close:hover {
2071
+ color: var(--fc-color-text);
2072
+ background-color: var(--fc-color-border-light);
2073
+ }
2074
+ .fc-tab-bar__add-btn {
2075
+ display: inline-flex;
2076
+ align-items: center;
2077
+ justify-content: center;
2062
2078
  width: 32px;
2063
2079
  margin: 0 var(--fc-space-sm, 8px);
2064
2080
  font-size: 20px;
2065
2081
  font-weight: bold;
2082
+ user-select: none;
2066
2083
  color: var(--fc-color-text-secondary);
2067
2084
  cursor: pointer;
2068
2085
  transition: all var(--fc-transition, 150ms ease);
2069
2086
  border-radius: var(--fc-radius-sm, 4px);
2070
2087
  }
2071
- .fc-tabs__add-btn:hover {
2088
+ .fc-tab-bar__add-btn:hover {
2072
2089
  color: var(--fc-color-primary);
2073
2090
  background-color: var(--fc-color-bg-tertiary);
2074
- transform: rotate(90deg);
2075
2091
  }
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;
2092
+ .fc-tab-bar--floating .fc-tab-bar__add-btn {
2093
+ border-radius: var(--fc-radius-full, 9999px);
2082
2094
  }
2083
- [data-theme=dark] .fc-tabs__nav {
2084
- background-color: var(--fc-color-bg-secondary);
2095
+ [data-theme=dark] .fc-tab-bar--attached {
2085
2096
  border-bottom-color: var(--fc-color-border);
2086
2097
  }
2087
- [data-theme=dark] .fc-tabs__tab--active {
2088
- background-color: var(--fc-color-bg);
2089
- border-bottom-color: var(--fc-color-primary);
2098
+ [data-theme=dark] .fc-tab-bar__tab--active {
2099
+ background-color: var(--tab-active-bg);
2090
2100
  }
2091
- [data-theme=dark] .fc-tabs__tab:hover:not(.fc-tabs__tab--disabled) {
2092
- background-color: var(--fc-color-bg-tertiary);
2101
+ [data-theme=dark] .fc-tab-bar__tab:hover:not(.fc-tab-bar__tab--disabled) {
2102
+ background-color: var(--tab-hover-bg);
2093
2103
  }
2094
- [data-theme=dark] .fc-tabs__add-btn:hover {
2104
+ [data-theme=dark] .fc-tab-bar--floating .fc-tab-bar__tab--active {
2105
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3), 0 1px 2px rgba(0, 0, 0, 0.2);
2106
+ }
2107
+ [data-theme=dark] .fc-tab-bar__add-btn:hover {
2095
2108
  background-color: var(--fc-color-bg-tertiary);
2096
2109
  }
2097
- [data-theme=dark] .fc-tabs__tab-close:hover {
2110
+ [data-theme=dark] .fc-tab-bar__tab-close:hover {
2098
2111
  background-color: var(--fc-color-border-light);
2099
2112
  }
2100
2113
  @media (max-width: 768px) {
2101
- .fc-tabs__tab {
2114
+ .fc-tab-bar__tab {
2102
2115
  padding: var(--fc-space-xs, 6px) var(--fc-space-md, 12px);
2103
2116
  font-size: var(--fc-font-size-sm, 13px);
2104
2117
  }
2105
- .fc-tabs__content {
2106
- padding: var(--fc-space-md, 12px);
2118
+ }
2119
+
2120
+ /* src/components/Tag/TagItem.css */
2121
+ .fc-tag-item {
2122
+ --tag-bg: var(--fc-color-bg-secondary);
2123
+ --tag-color: var(--fc-color-text-secondary);
2124
+ --tag-border: var(--fc-color-border);
2125
+ display: inline-flex;
2126
+ align-items: center;
2127
+ gap: var(--fc-space-xs);
2128
+ padding: 2px var(--fc-space-sm);
2129
+ border-radius: var(--fc-radius-sm);
2130
+ border: 1px solid var(--tag-border);
2131
+ background: var(--tag-bg);
2132
+ color: var(--tag-color);
2133
+ font-size: var(--fc-font-size-xs);
2134
+ font-family: var(--fc-font-family), serif;
2135
+ user-select: none;
2136
+ white-space: nowrap;
2137
+ transition: background 0.15s, border-color 0.15s;
2138
+ }
2139
+ .fc-tag-item--show {
2140
+ cursor: default;
2141
+ }
2142
+ .fc-tag-item--show:hover {
2143
+ border-color: var(--fc-color-border-hover, var(--tag-border));
2144
+ }
2145
+ .fc-tag-item--editing {
2146
+ padding: 1px var(--fc-space-xs);
2147
+ border-color: var(--fc-color-primary, var(--tag-border));
2148
+ }
2149
+ .fc-tag-item__name {
2150
+ color: var(--fc-color-text-tertiary);
2151
+ flex-shrink: 0;
2152
+ }
2153
+ .fc-tag-item__sep {
2154
+ color: var(--fc-color-text-tertiary);
2155
+ opacity: 0.5;
2156
+ flex-shrink: 0;
2157
+ }
2158
+ .fc-tag-item__value {
2159
+ max-width: 100px;
2160
+ overflow: hidden;
2161
+ text-overflow: ellipsis;
2162
+ white-space: nowrap;
2163
+ }
2164
+ .fc-tag-item__input {
2165
+ background: transparent;
2166
+ border: none;
2167
+ outline: none;
2168
+ color: var(--tag-color);
2169
+ font-size: inherit;
2170
+ font-family: inherit;
2171
+ min-width: 40px;
2172
+ width: 60px;
2173
+ max-width: 120px;
2174
+ padding: 0;
2175
+ }
2176
+ .fc-tag-item__input[type=number] {
2177
+ width: 50px;
2178
+ -moz-appearance: textfield;
2179
+ }
2180
+ .fc-tag-item__input[type=number]::-webkit-outer-spin-button,
2181
+ .fc-tag-item__input[type=number]::-webkit-inner-spin-button {
2182
+ -webkit-appearance: none;
2183
+ }
2184
+ .fc-tag-item--boolean {
2185
+ cursor: pointer;
2186
+ }
2187
+ .fc-tag-item--boolean:hover {
2188
+ background: var(--fc-color-bg-tertiary, var(--tag-bg));
2189
+ }
2190
+ .fc-tag-item__bool-true {
2191
+ color: var(--fc-color-success);
2192
+ }
2193
+ .fc-tag-item__bool-false {
2194
+ color: var(--fc-color-text-tertiary);
2195
+ }
2196
+
2197
+ /* src/components/MarkdownEditor/MarkdownEditor.css */
2198
+ .fc-md-wrap {
2199
+ --md-bg: var(--fc-color-bg-elevated);
2200
+ --md-toolbar-bg: var(--fc-color-bg-secondary);
2201
+ --md-border: var(--fc-color-border);
2202
+ border-radius: var(--fc-radius-md);
2203
+ border: 1px solid var(--md-border);
2204
+ overflow: hidden;
2205
+ font-family: var(--fc-font-family), serif;
2206
+ }
2207
+ .fc-md-wrap .w-md-editor {
2208
+ background: var(--md-bg) !important;
2209
+ border: none !important;
2210
+ box-shadow: none !important;
2211
+ border-radius: 0 !important;
2212
+ font-family: var(--fc-font-family), serif;
2213
+ --color-canvas-default: var(--md-bg);
2214
+ --color-canvas-subtle: var(--md-toolbar-bg);
2215
+ --color-border-default: var(--md-border);
2216
+ --color-fg-default: var(--fc-color-text);
2217
+ --color-fg-muted: var(--fc-color-text-secondary);
2218
+ }
2219
+ .fc-md-wrap .w-md-editor-toolbar {
2220
+ background: var(--md-toolbar-bg) !important;
2221
+ border-bottom: 1px solid var(--md-border) !important;
2222
+ padding: 4px 8px !important;
2223
+ }
2224
+ .fc-md-wrap .w-md-editor-toolbar ul > li > button {
2225
+ color: var(--fc-color-text-tertiary) !important;
2226
+ border-radius: var(--fc-radius-sm) !important;
2227
+ transition: background 0.12s, color 0.12s;
2228
+ }
2229
+ .fc-md-wrap .w-md-editor-toolbar ul > li > button:hover {
2230
+ background: var(--fc-color-bg-tertiary, rgba(255,255,255,0.06)) !important;
2231
+ color: var(--fc-color-text) !important;
2232
+ }
2233
+ .fc-md-wrap .w-md-editor-toolbar ul > li > button svg {
2234
+ fill: currentColor;
2235
+ stroke: currentColor;
2236
+ }
2237
+ .fc-md-wrap ::selection {
2238
+ background-color: rgba(55, 138, 221, 0.25) !important;
2239
+ color: inherit !important;
2240
+ }
2241
+ .fc-md-split-btn {
2242
+ border-radius: var(--fc-radius-md, 8px) !important;
2243
+ }
2244
+ .fc-md-split-btn--active {
2245
+ background: var(--fc-color-primary-bg, rgba(99,102,241,0.15)) !important;
2246
+ color: var(--fc-color-primary, #6366f1) !important;
2247
+ }
2248
+ .fc-md-split-btn--active:hover {
2249
+ background: var(--fc-color-primary-bg, rgba(99,102,241,0.22)) !important;
2250
+ }
2251
+ .fc-md-split-icon {
2252
+ font-size: 15px;
2253
+ line-height: 1;
2254
+ }
2255
+ .fc-md-ai-btn {
2256
+ font-size: 11px;
2257
+ font-weight: 600;
2258
+ color: var(--fc-color-primary, #6366f1) !important;
2259
+ padding: 2px 6px !important;
2260
+ letter-spacing: 0.2px;
2261
+ }
2262
+ .fc-md-ai-btn:hover {
2263
+ background: var(--fc-color-primary-bg, rgba(99,102,241,0.1)) !important;
2264
+ }
2265
+ .fc-md-wrap .w-md-editor-text {
2266
+ font-size: var(--fc-font-size-sm) !important;
2267
+ line-height: var(--fc-line-height-relaxed, 1.75) !important;
2268
+ color: var(--fc-color-text) !important;
2269
+ padding: 12px 14px !important;
2270
+ }
2271
+ .fc-md-wrap .w-md-editor-text-pre > code,
2272
+ .fc-md-wrap .w-md-editor-text-input {
2273
+ font-family: var(--fc-font-family-mono, ui-monospace, monospace) !important;
2274
+ font-size: var(--fc-font-size-sm) !important;
2275
+ }
2276
+ .fc-md-wrap .w-md-editor-bar {
2277
+ display: none !important;
2278
+ }
2279
+ .fc-md-wrap .wmde-markdown {
2280
+ background: transparent !important;
2281
+ font-family: var(--fc-font-family), serif;
2282
+ font-size: var(--fc-font-size-sm);
2283
+ color: var(--fc-color-text);
2284
+ padding: 12px 14px;
2285
+ }
2286
+ .fc-md-wrap .wmde-markdown h1,
2287
+ .fc-md-wrap .wmde-markdown h2,
2288
+ .fc-md-wrap .wmde-markdown h3 {
2289
+ color: var(--fc-color-text);
2290
+ border-color: var(--md-border);
2291
+ }
2292
+ .fc-md-wrap .wmde-markdown code {
2293
+ background: var(--fc-color-bg-tertiary, rgba(255,255,255,0.06));
2294
+ border-radius: 3px;
2295
+ font-family: var(--fc-font-family-mono, ui-monospace, monospace);
2296
+ }
2297
+ .fc-md-wrap .wmde-markdown pre {
2298
+ background: var(--fc-color-bg-secondary);
2299
+ border: 1px solid var(--md-border);
2300
+ }
2301
+ .fc-md-wrap .wmde-markdown blockquote {
2302
+ border-left-color: var(--fc-color-primary, #6366f1);
2303
+ color: var(--fc-color-text-secondary);
2304
+ }
2305
+
2306
+ /* src/components/ContextMenu/ContextMenuContext.css */
2307
+ .fc-context-menu {
2308
+ --ctx-bg: var(--fc-color-bg-elevated);
2309
+ --ctx-border: var(--fc-color-border);
2310
+ --ctx-item-hover-bg: var(--fc-color-bg-secondary);
2311
+ --ctx-danger-color: var(--fc-color-danger);
2312
+ position: fixed;
2313
+ z-index: var(--fc-z-dropdown, 9000);
2314
+ background: var(--ctx-bg);
2315
+ border: 1px solid var(--ctx-border);
2316
+ border-radius: var(--fc-radius-md);
2317
+ box-shadow: var(--fc-shadow-lg);
2318
+ padding: var(--fc-space-xs) 0;
2319
+ min-width: 160px;
2320
+ list-style: none;
2321
+ font-family: var(--fc-font-family), serif;
2322
+ user-select: none;
2323
+ animation: fc-ctx-in 0.1s ease;
2324
+ }
2325
+ @keyframes fc-ctx-in {
2326
+ from {
2327
+ opacity: 0;
2328
+ transform: scale(0.96);
2107
2329
  }
2330
+ to {
2331
+ opacity: 1;
2332
+ transform: scale(1);
2333
+ }
2334
+ }
2335
+ .fc-context-menu__item {
2336
+ display: flex;
2337
+ align-items: center;
2338
+ gap: var(--fc-space-sm);
2339
+ padding: var(--fc-space-xs) var(--fc-space-md);
2340
+ font-size: var(--fc-font-size-sm);
2341
+ color: var(--fc-color-text);
2342
+ cursor: pointer;
2343
+ transition: background 0.1s;
2344
+ line-height: var(--fc-line-height-tight);
2345
+ }
2346
+ .fc-context-menu__item:hover {
2347
+ background: var(--ctx-item-hover-bg);
2348
+ }
2349
+ .fc-context-menu__item--danger {
2350
+ color: var(--ctx-danger-color);
2351
+ }
2352
+ .fc-context-menu__item--danger:hover {
2353
+ background: color-mix(in srgb, var(--ctx-danger-color) 8%, transparent);
2354
+ }
2355
+ .fc-context-menu__item--disabled {
2356
+ opacity: 0.38;
2357
+ cursor: not-allowed;
2358
+ }
2359
+ .fc-context-menu__item--disabled:hover {
2360
+ background: transparent;
2361
+ }
2362
+ .fc-context-menu__icon {
2363
+ display: flex;
2364
+ align-items: center;
2365
+ font-size: var(--fc-font-size-md);
2366
+ flex-shrink: 0;
2367
+ width: 1.1em;
2368
+ color: var(--fc-color-text-tertiary);
2369
+ }
2370
+ .fc-context-menu__item--danger .fc-context-menu__icon {
2371
+ color: var(--ctx-danger-color);
2372
+ }
2373
+ .fc-context-menu__divider {
2374
+ height: 1px;
2375
+ background: var(--ctx-border);
2376
+ margin: var(--fc-space-xs) 0;
2377
+ list-style: none;
2108
2378
  }
2109
2379
 
2110
- /* src/components/Chat/Chat.css */
2111
- .message-content-wrapper {
2380
+ /* src/components/SmartMessage/SmartMessage.css */
2381
+ .fc-smart-message {
2382
+ display: flex;
2383
+ align-items: flex-start;
2384
+ gap: 8px;
2385
+ max-width: 100%;
2386
+ animation: fadeIn 0.3s ease;
2387
+ }
2388
+ .fc-smart-message--user {
2389
+ flex-direction: row-reverse;
2390
+ align-self: flex-end;
2391
+ }
2392
+ .fc-smart-message--assistant {
2393
+ flex-direction: row;
2394
+ align-self: flex-start;
2395
+ }
2396
+ .fc-smart-message--system {
2397
+ align-self: center;
2398
+ justify-content: center;
2399
+ max-width: 90%;
2400
+ margin: 0 auto;
2401
+ }
2402
+ .fc-smart-message--tool {
2403
+ align-self: flex-start;
2404
+ max-width: 90%;
2405
+ }
2406
+ .fc-smart-message-content-wrapper {
2112
2407
  position: relative;
2408
+ background: var(--fc-color-bg-secondary, #f0f0f0);
2409
+ border-radius: 12px;
2410
+ padding: 8px 12px;
2411
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
2412
+ width: auto;
2413
+ max-width: 100%;
2414
+ word-wrap: break-word;
2415
+ }
2416
+ .fc-smart-message--user .fc-smart-message-content-wrapper {
2417
+ background: var(--fc-color-primary, #667eea);
2418
+ color: white;
2113
2419
  }
2114
- .copy-btn {
2115
- display: inline-flex;
2420
+ .fc-smart-message--assistant .fc-smart-message-content-wrapper {
2421
+ background: var(--fc-color-bg-secondary, #f0f0f0);
2422
+ color: var(--fc-color-text, #333);
2423
+ }
2424
+ .fc-smart-message--system .fc-smart-message-content-wrapper {
2425
+ background: var(--fc-color-bg-tertiary, #f0f0f0);
2426
+ color: var(--fc-color-text-tertiary, #999);
2427
+ text-align: center;
2428
+ font-size: 12px;
2429
+ border-radius: 16px;
2430
+ padding: 6px 16px;
2431
+ display: inline-block;
2432
+ width: auto;
2433
+ }
2434
+ .fc-smart-message--tool .fc-smart-message-content-wrapper {
2435
+ background: var(--fc-color-bg-tertiary, #e8e8e8);
2436
+ color: var(--fc-color-text-secondary, #666);
2437
+ font-family: monospace;
2438
+ font-size: 12px;
2439
+ }
2440
+ .fc-smart-message-tool-info {
2441
+ display: flex;
2116
2442
  align-items: center;
2117
2443
  gap: 4px;
2118
- padding: 4px 8px;
2119
- margin-top: 6px;
2120
- background: transparent;
2121
- border: none;
2444
+ margin-bottom: 8px;
2445
+ font-size: 12px;
2446
+ color: var(--fc-color-text-secondary, #666);
2447
+ border-bottom: 1px solid var(--fc-color-border, #ddd);
2448
+ padding-bottom: 4px;
2449
+ }
2450
+ .fc-smart-message-tool-icon {
2451
+ font-size: 12px;
2452
+ }
2453
+ .fc-smart-message-tool-name {
2454
+ font-family: monospace;
2455
+ font-weight: 500;
2456
+ }
2457
+ .fc-smart-message-content {
2458
+ word-wrap: break-word;
2459
+ word-break: break-word;
2460
+ white-space: pre-wrap;
2461
+ }
2462
+ .fc-smart-message-text {
2463
+ line-height: 1.5;
2464
+ }
2465
+ .fc-smart-message-system-text {
2466
+ font-style: italic;
2467
+ opacity: 0.7;
2468
+ }
2469
+ .fc-smart-message-tool-result {
2470
+ background: rgba(0, 0, 0, 0.05);
2471
+ padding: 8px;
2122
2472
  border-radius: 6px;
2123
2473
  font-size: 12px;
2124
- color: #999;
2474
+ font-family: monospace;
2475
+ overflow-x: auto;
2476
+ margin: 0;
2477
+ }
2478
+ .fc-smart-message-footer {
2479
+ display: flex;
2480
+ align-items: center;
2481
+ gap: 8px;
2482
+ margin-top: 4px;
2483
+ font-size: 10px;
2484
+ opacity: 0.7;
2485
+ }
2486
+ .fc-smart-message-time {
2487
+ font-size: 10px;
2488
+ }
2489
+ .fc-smart-message-status {
2490
+ font-size: 10px;
2491
+ }
2492
+ .fc-smart-message-status.sending {
2493
+ animation: pulse 1s infinite;
2494
+ }
2495
+ .fc-smart-message-status.error {
2496
+ color: #f5222d;
2497
+ }
2498
+ .fc-smart-message-status.sent {
2499
+ color: #52c41a;
2500
+ }
2501
+ .fc-smart-message-copy-btn {
2502
+ background: transparent;
2503
+ border: none;
2125
2504
  cursor: pointer;
2505
+ padding: 4px;
2506
+ border-radius: 6px;
2507
+ color: var(--fc-color-text-secondary, #666);
2126
2508
  transition: all 0.2s ease;
2127
- font-family: inherit;
2509
+ display: flex;
2510
+ align-items: center;
2511
+ justify-content: center;
2512
+ opacity: 0;
2513
+ }
2514
+ .fc-smart-message:hover .fc-smart-message-copy-btn {
2128
2515
  opacity: 0.6;
2129
2516
  }
2130
- .copy-btn:hover {
2131
- opacity: 1;
2132
- color: #667eea;
2133
- background: rgba(102, 126, 234, 0.1);
2517
+ .fc-smart-message-copy-btn:hover {
2518
+ opacity: 1 !important;
2519
+ background: rgba(0, 0, 0, 0.05);
2520
+ transform: scale(1.05);
2134
2521
  }
2135
- .copy-btn.copied {
2136
- opacity: 1;
2137
- color: #52c41a;
2522
+ .fc-smart-message-copy-btn:active {
2523
+ transform: scale(0.95);
2138
2524
  }
2139
- .copy-btn.copied:hover {
2140
- color: #52c41a;
2141
- background: rgba(82, 196, 26, 0.1);
2525
+ @keyframes fadeIn {
2526
+ from {
2527
+ opacity: 0;
2528
+ transform: translateY(10px);
2529
+ }
2530
+ to {
2531
+ opacity: 1;
2532
+ transform: translateY(0);
2533
+ }
2534
+ }
2535
+ @keyframes pulse {
2536
+ 0%, 100% {
2537
+ opacity: 1;
2538
+ }
2539
+ 50% {
2540
+ opacity: 0.5;
2541
+ }
2542
+ }
2543
+ @media (max-width: 768px) {
2544
+ .fc-smart-message {
2545
+ max-width: 100%;
2546
+ }
2547
+ .fc-smart-message--system {
2548
+ max-width: 95%;
2549
+ }
2550
+ .fc-smart-message-content-wrapper {
2551
+ padding: 6px 10px;
2552
+ max-width: 100%;
2553
+ }
2554
+ .fc-smart-message--system .fc-smart-message-content-wrapper {
2555
+ padding: 4px 12px;
2556
+ }
2557
+ .fc-smart-message-copy-btn {
2558
+ padding: 2px;
2559
+ }
2142
2560
  }
2143
- .copy-btn svg {
2561
+
2562
+ /* src/components/Chat/Chat.css */
2563
+ .chat-container {
2564
+ --chat-primary: #667eea;
2565
+ --chat-primary-gradient:
2566
+ linear-gradient(
2567
+ 135deg,
2568
+ #667eea 0%,
2569
+ #764ba2 100%);
2570
+ --chat-border-radius: 12px;
2571
+ --chat-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
2572
+ --chat-border-width: 1px;
2573
+ }
2574
+ .chat-container {
2575
+ display: flex;
2576
+ flex-direction: column;
2577
+ border-radius: var(--chat-border-radius);
2578
+ overflow: hidden;
2579
+ background: var(--fc-color-bg);
2580
+ box-shadow: var(--chat-shadow);
2581
+ position: relative;
2582
+ height: 100%;
2583
+ }
2584
+ .chat-header {
2585
+ padding: 16px 20px;
2586
+ border-bottom: var(--chat-border-width) solid var(--fc-color-border);
2587
+ background:
2588
+ linear-gradient(
2589
+ 135deg,
2590
+ var(--fc-color-bg-secondary) 0%,
2591
+ var(--fc-color-bg) 100%);
2592
+ display: flex;
2593
+ justify-content: space-between;
2594
+ align-items: center;
2144
2595
  flex-shrink: 0;
2145
2596
  }
2146
- .copy-btn span {
2147
- font-size: 12px;
2148
- line-height: 1;
2597
+ .chat-title {
2598
+ font-size: 16px;
2599
+ font-weight: 600;
2600
+ background:
2601
+ linear-gradient(
2602
+ 135deg,
2603
+ var(--fc-color-text) 0%,
2604
+ var(--fc-color-text-secondary) 100%);
2605
+ background-clip: text;
2606
+ -webkit-background-clip: text;
2607
+ color: transparent;
2608
+ }
2609
+ .chat-header-actions {
2610
+ display: flex;
2611
+ align-items: center;
2612
+ gap: 10px;
2149
2613
  }
2150
- .chat-container.dark .copy-btn {
2151
- color: #9c9a92;
2614
+ .minimize-btn,
2615
+ .history-btn,
2616
+ .restore-btn-only {
2617
+ display: inline-flex;
2618
+ align-items: center;
2619
+ justify-content: center;
2620
+ width: 34px;
2621
+ height: 34px;
2622
+ padding: 0;
2623
+ background: transparent;
2624
+ border: none;
2625
+ border-radius: 10px;
2626
+ color: var(--fc-color-text-secondary);
2627
+ cursor: pointer;
2628
+ transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
2629
+ position: relative;
2630
+ overflow: hidden;
2631
+ flex-shrink: 0;
2152
2632
  }
2153
- .chat-container.dark .copy-btn:hover {
2154
- color: #5da4e8;
2155
- background: rgba(93, 164, 232, 0.15);
2633
+ .minimize-btn::before,
2634
+ .history-btn::before,
2635
+ .restore-btn-only::before {
2636
+ content: "";
2637
+ position: absolute;
2638
+ top: 50%;
2639
+ left: 50%;
2640
+ width: 0;
2641
+ height: 0;
2642
+ border-radius: 50%;
2643
+ background: rgba(102, 126, 234, 0.1);
2644
+ transform: translate(-50%, -50%);
2645
+ transition: width 0.4s, height 0.4s;
2156
2646
  }
2157
- .chat-container.dark .copy-btn.copied {
2158
- color: #52c41a;
2647
+ .minimize-btn:hover::before,
2648
+ .history-btn:hover::before,
2649
+ .restore-btn-only:hover::before {
2650
+ width: 40px;
2651
+ height: 40px;
2159
2652
  }
2160
- .chat-container.dark .copy-btn.copied:hover {
2161
- color: #52c41a;
2162
- background: rgba(82, 196, 26, 0.15);
2653
+ .minimize-btn:hover,
2654
+ .history-btn:hover,
2655
+ .restore-btn-only:hover {
2656
+ background: rgba(102, 126, 234, 0.1);
2657
+ color: var(--chat-primary);
2658
+ transform: translateY(-1px);
2659
+ }
2660
+ .minimize-btn:active,
2661
+ .history-btn:active,
2662
+ .restore-btn-only:active {
2663
+ transform: translateY(0);
2664
+ }
2665
+ .minimize-btn svg,
2666
+ .history-btn svg,
2667
+ .restore-btn-only svg {
2668
+ width: 18px;
2669
+ height: 18px;
2670
+ display: block;
2671
+ position: relative;
2672
+ z-index: 1;
2163
2673
  }
2164
- .chat-message.user .message-content-wrapper {
2674
+ .chat-messages {
2675
+ flex: 1;
2676
+ overflow-y: auto;
2677
+ padding: 20px;
2165
2678
  display: flex;
2166
2679
  flex-direction: column;
2167
- align-items: flex-end;
2680
+ gap: 16px;
2681
+ background: var(--fc-color-bg);
2682
+ position: relative;
2168
2683
  }
2169
- .chat-message.user .copy-btn {
2170
- align-self: flex-end;
2684
+ .chat-messages::-webkit-scrollbar {
2685
+ width: 6px;
2171
2686
  }
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;
2687
+ .chat-messages::-webkit-scrollbar-track {
2688
+ background: var(--fc-color-border-light);
2689
+ border-radius: 3px;
2690
+ }
2691
+ .chat-messages::-webkit-scrollbar-thumb {
2692
+ background: var(--fc-color-border);
2693
+ border-radius: 3px;
2694
+ }
2695
+ .chat-messages::-webkit-scrollbar-thumb:hover {
2696
+ background: var(--fc-color-text-secondary);
2697
+ }
2698
+ .typing-wrapper {
2699
+ display: flex;
2700
+ justify-content: flex-start;
2701
+ padding: 8px 0;
2702
+ }
2703
+ .typing-indicator {
2704
+ display: flex;
2705
+ gap: 4px;
2706
+ padding: 10px 14px;
2707
+ background: var(--fc-color-bg-tertiary, #f0f0f0);
2708
+ border-radius: 12px 12px 12px 4px;
2709
+ width: fit-content;
2710
+ }
2711
+ .typing-indicator span {
2712
+ width: 8px;
2713
+ height: 8px;
2714
+ background: var(--fc-color-text-secondary);
2715
+ border-radius: 50%;
2716
+ animation: typing 1.4s infinite;
2717
+ }
2718
+ .typing-indicator span:nth-child(2) {
2719
+ animation-delay: 0.2s;
2720
+ }
2721
+ .typing-indicator span:nth-child(3) {
2722
+ animation-delay: 0.4s;
2723
+ }
2724
+ @keyframes typing {
2725
+ 0%, 60%, 100% {
2726
+ transform: translateY(0);
2727
+ opacity: 0.5;
2728
+ }
2729
+ 30% {
2730
+ transform: translateY(-10px);
2731
+ opacity: 1;
2732
+ }
2188
2733
  }
2189
- .chat-container.dark .copy-error-toast {
2190
- background: #ff4d4f;
2191
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
2734
+ .history-panel {
2735
+ position: absolute;
2736
+ top: 0;
2737
+ right: 0;
2738
+ width: 380px;
2739
+ height: 100%;
2740
+ background: var(--fc-color-bg-elevated);
2741
+ border-left: 1px solid var(--fc-color-border);
2742
+ box-shadow: -4px 0 20px rgba(0, 0, 0, 0.1);
2743
+ display: flex;
2744
+ flex-direction: column;
2745
+ z-index: 1000;
2746
+ animation: slideIn 0.3s cubic-bezier(0.4, 0, 0.2, 1);
2192
2747
  }
2193
- @keyframes slideUp {
2748
+ @keyframes slideIn {
2194
2749
  from {
2195
- opacity: 0;
2196
- transform: translateX(-50%) translateY(20px);
2750
+ transform: translateX(100%);
2197
2751
  }
2198
2752
  to {
2199
- opacity: 1;
2200
- transform: translateX(-50%) translateY(0);
2753
+ transform: translateX(0);
2201
2754
  }
2202
2755
  }
2203
- .chat-message.assistant .message-bubble,
2204
- .chat-message.user .message-bubble {
2205
- margin-bottom: 0;
2756
+ .history-header {
2757
+ display: flex;
2758
+ justify-content: space-between;
2759
+ align-items: center;
2760
+ padding: 16px 20px;
2761
+ border-bottom: 1px solid var(--fc-color-border);
2762
+ background:
2763
+ linear-gradient(
2764
+ 135deg,
2765
+ var(--fc-color-bg-secondary) 0%,
2766
+ var(--fc-color-bg) 100%);
2767
+ }
2768
+ .history-header h3 {
2769
+ margin: 0;
2770
+ font-size: 16px;
2771
+ font-weight: 600;
2772
+ background:
2773
+ linear-gradient(
2774
+ 135deg,
2775
+ var(--fc-color-text) 0%,
2776
+ var(--fc-color-text-secondary) 100%);
2777
+ background-clip: text;
2778
+ -webkit-background-clip: text;
2779
+ color: transparent;
2780
+ }
2781
+ .close-history-btn {
2782
+ background: none;
2783
+ border: none;
2784
+ font-size: 20px;
2785
+ cursor: pointer;
2786
+ color: var(--fc-color-text-secondary);
2787
+ padding: 4px;
2788
+ border-radius: 8px;
2789
+ transition: all 0.2s;
2790
+ width: 32px;
2791
+ height: 32px;
2792
+ display: flex;
2793
+ align-items: center;
2794
+ justify-content: center;
2795
+ }
2796
+ .close-history-btn:hover {
2797
+ background: rgba(245, 34, 45, 0.1);
2798
+ color: #f5222d;
2799
+ transform: rotate(90deg);
2800
+ }
2801
+ .history-list {
2802
+ flex: 1;
2803
+ overflow-y: auto;
2804
+ padding: 12px;
2805
+ }
2806
+ .new-conversation-btn-large {
2807
+ width: 100%;
2808
+ display: flex;
2809
+ align-items: center;
2810
+ justify-content: center;
2811
+ gap: 8px;
2812
+ padding: 12px 16px;
2813
+ margin-bottom: 16px;
2814
+ background:
2815
+ linear-gradient(
2816
+ 135deg,
2817
+ #667eea 0%,
2818
+ #764ba2 100%);
2819
+ border: none;
2820
+ border-radius: 12px;
2821
+ font-size: 14px;
2822
+ font-weight: 600;
2823
+ color: #ffffff;
2824
+ cursor: pointer;
2825
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
2826
+ box-shadow: 0 2px 8px rgba(102, 126, 234, 0.3);
2827
+ }
2828
+ .new-conversation-btn-large:hover {
2829
+ transform: translateY(-2px);
2830
+ box-shadow: 0 4px 16px rgba(102, 126, 234, 0.4);
2831
+ }
2832
+ .history-item {
2833
+ display: flex;
2834
+ align-items: flex-start;
2835
+ justify-content: space-between;
2836
+ padding: 12px;
2837
+ margin-bottom: 8px;
2838
+ border-radius: 12px;
2839
+ cursor: pointer;
2840
+ transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
2841
+ background: var(--fc-color-bg-tertiary);
2842
+ border: 1px solid transparent;
2843
+ }
2844
+ .history-item:hover {
2845
+ background: var(--fc-color-bg-elevated);
2846
+ border-color: var(--fc-color-border);
2847
+ transform: translateX(4px);
2848
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
2849
+ }
2850
+ .history-item.active {
2851
+ background:
2852
+ linear-gradient(
2853
+ 135deg,
2854
+ rgba(102, 126, 234, 0.1) 0%,
2855
+ rgba(118, 75, 162, 0.1) 100%);
2856
+ border-color: var(--chat-primary);
2857
+ }
2858
+ .history-item-content {
2859
+ flex: 1;
2860
+ min-width: 0;
2861
+ }
2862
+ .history-item-title {
2863
+ display: flex;
2864
+ align-items: center;
2865
+ gap: 8px;
2866
+ margin-bottom: 6px;
2867
+ font-size: 14px;
2868
+ font-weight: 500;
2869
+ color: var(--fc-color-text);
2870
+ }
2871
+ .history-item.active .history-item-title {
2872
+ color: var(--chat-primary);
2873
+ }
2874
+ .history-item-preview {
2875
+ font-size: 12px;
2876
+ color: var(--fc-color-text-secondary);
2877
+ margin-bottom: 6px;
2878
+ overflow: hidden;
2879
+ text-overflow: ellipsis;
2880
+ white-space: nowrap;
2881
+ }
2882
+ .history-item-meta {
2883
+ display: flex;
2884
+ gap: 12px;
2885
+ font-size: 11px;
2886
+ color: var(--fc-color-text-tertiary);
2887
+ }
2888
+ .history-item-actions {
2889
+ margin-left: 8px;
2890
+ flex-shrink: 0;
2891
+ }
2892
+ .delete-conversation-btn {
2893
+ background: none;
2894
+ border: none;
2895
+ padding: 6px;
2896
+ border-radius: 8px;
2897
+ cursor: pointer;
2898
+ color: var(--fc-color-text-secondary);
2899
+ transition: all 0.2s;
2900
+ display: flex;
2901
+ align-items: center;
2902
+ justify-content: center;
2903
+ }
2904
+ .delete-conversation-btn:hover {
2905
+ background: rgba(245, 34, 45, 0.1);
2906
+ color: #f5222d;
2907
+ transform: scale(1.1);
2908
+ }
2909
+ .empty-history {
2910
+ text-align: center;
2911
+ padding: 40px 20px;
2912
+ color: var(--fc-color-text-secondary);
2913
+ }
2914
+ .empty-hint {
2915
+ font-size: 12px;
2916
+ margin-top: 8px;
2917
+ opacity: 0.7;
2918
+ }
2919
+ .chat-container-minimized {
2920
+ display: inline-flex;
2921
+ background: transparent;
2922
+ }
2923
+ .message-wrapper {
2924
+ display: flex;
2925
+ flex-direction: column;
2926
+ position: relative;
2927
+ }
2928
+ .message-wrapper--user {
2929
+ align-self: flex-end;
2930
+ }
2931
+ .message-wrapper--assistant {
2932
+ align-self: flex-start;
2933
+ }
2934
+ .message-copy-wrapper {
2935
+ display: flex;
2936
+ margin-top: 4px;
2937
+ }
2938
+ .message-copy-wrapper--assistant {
2939
+ justify-content: flex-end;
2940
+ padding-right: 8px;
2941
+ }
2942
+ .message-copy-wrapper--user {
2943
+ justify-content: flex-start;
2944
+ padding-left: 8px;
2945
+ }
2946
+ .message-copy-btn {
2947
+ display: inline-flex;
2948
+ align-items: center;
2949
+ justify-content: center;
2950
+ padding: 6px;
2951
+ background: transparent;
2952
+ border: none;
2953
+ border-radius: 8px;
2954
+ color: var(--fc-color-text-secondary, #666);
2955
+ cursor: pointer;
2956
+ transition: all 0.2s ease;
2957
+ }
2958
+ .message-copy-btn svg {
2959
+ width: 14px;
2960
+ height: 14px;
2961
+ display: block;
2962
+ }
2963
+ .message-copy-btn:hover {
2964
+ background: rgba(0, 0, 0, 0.08);
2965
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
2966
+ transform: translateY(-1px);
2967
+ color: var(--fc-color-text, #333);
2968
+ }
2969
+ .message-copy-btn:active {
2970
+ transform: translateY(0);
2971
+ }
2972
+ @media (max-width: 768px) {
2973
+ .chat-header {
2974
+ padding: 12px 16px;
2975
+ }
2976
+ .chat-messages {
2977
+ padding: 16px;
2978
+ }
2979
+ .history-panel {
2980
+ width: 100%;
2981
+ }
2982
+ .minimize-btn,
2983
+ .history-btn,
2984
+ .restore-btn-only {
2985
+ width: 30px;
2986
+ height: 30px;
2987
+ }
2988
+ .minimize-btn svg,
2989
+ .history-btn svg,
2990
+ .restore-btn-only svg {
2991
+ width: 16px;
2992
+ height: 16px;
2993
+ }
2994
+ .message-copy-btn {
2995
+ padding: 4px;
2996
+ }
2997
+ .message-copy-btn svg {
2998
+ width: 12px;
2999
+ height: 12px;
3000
+ }
2206
3001
  }
2207
3002
  @media (prefers-reduced-motion: reduce) {
2208
- .copy-btn,
2209
- .copy-error-toast {
2210
- transition: none;
2211
- animation: none;
3003
+ * {
3004
+ animation: none !important;
3005
+ transition: none !important;
2212
3006
  }
2213
3007
  }
3008
+ .system-message-container {
3009
+ display: flex;
3010
+ justify-content: center;
3011
+ width: 100%;
3012
+ }
3013
+ .tool-message-container {
3014
+ display: flex;
3015
+ justify-content: flex-start;
3016
+ width: 100%;
3017
+ }
2214
3018
 
2215
- /* src/styles/index.css */
3019
+ /* src/style/index.css */
2216
3020
  :root {
2217
3021
  --fc-blue-50: #EBF4FD;
2218
3022
  --fc-blue-100: #C8E0F8;
@@ -2224,15 +3028,15 @@
2224
3028
  --fc-blue-700: #0C447C;
2225
3029
  --fc-blue-800: #072D54;
2226
3030
  --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;
3031
+ --fc-gray-50: #FAFAFA;
3032
+ --fc-gray-100: #F5F5F5;
3033
+ --fc-gray-150: #E0E0E0;
3034
+ --fc-gray-200: #D0D0D0;
3035
+ --fc-gray-400: #B3B3B3;
3036
+ --fc-gray-600: #5F5F5F;
2233
3037
  --fc-gray-700: #3D3D3A;
2234
- --fc-gray-800: #2C2C2A;
2235
- --fc-gray-900: #1A1A19;
3038
+ --fc-gray-800: #2C2C2C;
3039
+ --fc-gray-900: #1A1A1A;
2236
3040
  --fc-red-50: #FDEDED;
2237
3041
  --fc-red-100: #FAD0D0;
2238
3042
  --fc-red-500: #E24B4A;
@@ -2262,8 +3066,8 @@
2262
3066
  --fc-color-primary-active: var(--fc-blue-700);
2263
3067
  --fc-color-primary-subtle: var(--fc-blue-50);
2264
3068
  --fc-color-bg: #FFFFFF;
2265
- --fc-color-bg-secondary: var(--fc-gray-50);
2266
- --fc-color-bg-tertiary: var(--fc-gray-100);
3069
+ --fc-color-bg-secondary: var(--fc-gray-100);
3070
+ --fc-color-bg-tertiary: var(--fc-gray-200);
2267
3071
  --fc-color-bg-elevated: #FFFFFF;
2268
3072
  --fc-color-bg-overlay: rgba(0, 0, 0, 0.4);
2269
3073
  --fc-color-text: var(--fc-gray-900);
@@ -2329,10 +3133,10 @@
2329
3133
  --fc-font-weight-bold: 600;
2330
3134
  --fc-line-height-tight: 1.3;
2331
3135
  --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);
3136
+ --fc-shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.04);
3137
+ --fc-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.06), 0 1px 2px rgba(0, 0, 0, 0.04);
3138
+ --fc-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.08), 0 2px 4px rgba(0, 0, 0, 0.04);
3139
+ --fc-shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.10), 0 4px 8px rgba(0, 0, 0, 0.06);
2336
3140
  --fc-transition: 150ms ease;
2337
3141
  --fc-transition-slow: 250ms ease;
2338
3142
  --fc-transition-fast: 100ms ease;
@@ -2397,13 +3201,13 @@ body {
2397
3201
  --fc-color-teal-bg: rgba(0, 163, 163, 0.12);
2398
3202
  --fc-color-pink: #E860A0;
2399
3203
  --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);
3204
+ --fc-shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.3);
3205
+ --fc-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.4), 0 1px 2px rgba(0, 0, 0, 0.3);
3206
+ --fc-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.5), 0 2px 4px rgba(0, 0, 0, 0.3);
3207
+ --fc-shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.6), 0 4px 8px rgba(0, 0, 0, 0.4);
2404
3208
  }
2405
3209
  body {
2406
- font-family: var(--fc-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);
3210
+ font-family: var(--fc-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif), serif;
2407
3211
  background-color: var(--fc-color-bg, #FFFFFF);
2408
3212
  color: var(--fc-color-text, #1A1A19);
2409
3213
  margin: 0;
@@ -2445,78 +3249,12 @@ body {
2445
3249
  }
2446
3250
  ::selection {
2447
3251
  background-color: var(--fc-color-primary-subtle, #EBF4FD);
2448
- color: var(--fc-color-primary, #378ADD);
2449
3252
  }
2450
3253
  [data-theme=dark] ::selection {
2451
3254
  background-color: rgba(55, 138, 221, 0.3);
2452
- color: var(--fc-color-primary, #5DA4E8);
2453
3255
  }
2454
3256
  :focus-visible {
2455
3257
  outline: 2px solid var(--fc-color-border-focus, #378ADD);
2456
3258
  outline-offset: 2px;
2457
3259
  border-radius: var(--fc-radius-sm, 4px);
2458
3260
  }
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
- }