@yumiai/chat-widget 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.css ADDED
@@ -0,0 +1,2301 @@
1
+ /* src/components/PlanCard.css */
2
+ .plan-card {
3
+ background: var(--color-bg-secondary);
4
+ border: 1px solid var(--color-border);
5
+ border-radius: var(--radius);
6
+ overflow: hidden;
7
+ }
8
+ .plan-card.completed {
9
+ border-color: var(--color-success);
10
+ opacity: 0.9;
11
+ }
12
+ .plan-header {
13
+ display: flex;
14
+ justify-content: space-between;
15
+ align-items: center;
16
+ padding: 8px 12px;
17
+ background: var(--color-bg-tertiary);
18
+ border-bottom: 1px solid var(--color-border);
19
+ }
20
+ .plan-title {
21
+ display: flex;
22
+ align-items: center;
23
+ gap: 6px;
24
+ font-weight: 500;
25
+ }
26
+ .plan-icon {
27
+ font-size: 14px;
28
+ }
29
+ .plan-progress {
30
+ font-size: 12px;
31
+ color: var(--color-text-secondary);
32
+ }
33
+ .plan-items {
34
+ list-style: none;
35
+ margin: 0;
36
+ padding: 8px 12px;
37
+ display: flex;
38
+ flex-direction: column;
39
+ gap: 6px;
40
+ }
41
+ .plan-item {
42
+ display: flex;
43
+ align-items: center;
44
+ gap: 8px;
45
+ padding: 4px 0;
46
+ }
47
+ .plan-item-icon {
48
+ width: 16px;
49
+ text-align: center;
50
+ flex-shrink: 0;
51
+ }
52
+ .plan-item.completed .plan-item-icon {
53
+ color: var(--color-success);
54
+ }
55
+ .plan-item.active .plan-item-icon {
56
+ color: var(--color-primary);
57
+ }
58
+ .plan-item.pending .plan-item-icon {
59
+ color: var(--color-text-secondary);
60
+ }
61
+ .plan-item.error .plan-item-icon {
62
+ color: var(--color-error);
63
+ }
64
+ .plan-item-text {
65
+ flex: 1;
66
+ }
67
+ .plan-item.active .plan-item-text {
68
+ color: var(--color-primary);
69
+ font-weight: 500;
70
+ }
71
+ .plan-item.completed .plan-item-text {
72
+ color: var(--color-text-secondary);
73
+ text-decoration: line-through;
74
+ }
75
+ .plan-item-status {
76
+ font-size: 12px;
77
+ padding: 2px 6px;
78
+ background: var(--color-primary-bg);
79
+ color: var(--color-primary);
80
+ border-radius: 4px;
81
+ animation: highlight-pulse 1.5s ease-in-out infinite;
82
+ }
83
+ @keyframes highlight-pulse {
84
+ 0%, 100% {
85
+ opacity: 1;
86
+ }
87
+ 50% {
88
+ opacity: 0.6;
89
+ }
90
+ }
91
+ .plan-card-compact {
92
+ display: flex;
93
+ align-items: center;
94
+ gap: 8px;
95
+ padding: 8px 12px;
96
+ background: var(--color-bg-tertiary);
97
+ border-radius: var(--radius);
98
+ font-size: 12px;
99
+ color: var(--color-text-secondary);
100
+ margin-top: 8px;
101
+ }
102
+ .plan-items-inline {
103
+ display: flex;
104
+ flex-wrap: wrap;
105
+ gap: 4px;
106
+ }
107
+ .plan-item-inline {
108
+ white-space: nowrap;
109
+ }
110
+ .plan-item-inline.completed {
111
+ color: var(--color-success);
112
+ }
113
+ .plan-item-inline.active {
114
+ color: var(--color-primary);
115
+ font-weight: 500;
116
+ }
117
+ .plan-item-inline.pending {
118
+ color: var(--color-text-secondary);
119
+ }
120
+
121
+ /* src/components/TodoCard.css */
122
+ .todo-card {
123
+ background: var(--color-bg-secondary, #fafafa);
124
+ border: 1px solid var(--color-border, #e8e8e8);
125
+ border-radius: 8px;
126
+ overflow: hidden;
127
+ font-size: 13px;
128
+ }
129
+ .todo-header {
130
+ display: flex;
131
+ justify-content: space-between;
132
+ align-items: center;
133
+ padding: 8px 12px;
134
+ cursor: pointer;
135
+ user-select: none;
136
+ transition: background 0.15s;
137
+ }
138
+ .todo-header:hover {
139
+ background: rgba(0, 0, 0, 0.02);
140
+ }
141
+ .todo-header-arrow {
142
+ flex-shrink: 0;
143
+ font-size: 10px;
144
+ width: 14px;
145
+ text-align: center;
146
+ transition: transform 0.2s;
147
+ color: var(--color-text-secondary, #8c8c8c);
148
+ }
149
+ .todo-header-arrow.expanded {
150
+ transform: rotate(90deg);
151
+ }
152
+ .todo-title {
153
+ display: flex;
154
+ align-items: center;
155
+ gap: 5px;
156
+ font-weight: 600;
157
+ font-size: 13px;
158
+ }
159
+ .todo-title-icon {
160
+ font-size: 14px;
161
+ opacity: 0.6;
162
+ }
163
+ .todo-header-status {
164
+ flex: 1;
165
+ min-width: 0;
166
+ display: flex;
167
+ align-items: center;
168
+ gap: 4px;
169
+ margin-left: 4px;
170
+ overflow: hidden;
171
+ }
172
+ .todo-header-current-sep {
173
+ flex-shrink: 0;
174
+ color: var(--color-primary, #1677ff);
175
+ font-size: 12px;
176
+ }
177
+ .todo-header-current {
178
+ flex: 1;
179
+ min-width: 0;
180
+ overflow: hidden;
181
+ text-overflow: ellipsis;
182
+ white-space: nowrap;
183
+ font-size: 12px;
184
+ color: var(--color-primary, #1677ff);
185
+ font-weight: 400;
186
+ }
187
+ .todo-header-done {
188
+ font-size: 12px;
189
+ color: var(--color-success, #52c41a);
190
+ font-weight: 500;
191
+ }
192
+ .todo-header-blocked {
193
+ font-size: 12px;
194
+ color: var(--color-error, #ff4d4f);
195
+ font-weight: 500;
196
+ }
197
+ .todo-header-count {
198
+ flex-shrink: 0;
199
+ font-size: 12px;
200
+ color: var(--color-text-secondary, #8c8c8c);
201
+ font-variant-numeric: tabular-nums;
202
+ }
203
+ .todo-progress-bar {
204
+ height: 3px;
205
+ background: var(--color-border, #e8e8e8);
206
+ margin: 0 12px 4px;
207
+ border-radius: 2px;
208
+ overflow: hidden;
209
+ }
210
+ .chat-pinned-area .todo-card {
211
+ margin-bottom: 14px;
212
+ }
213
+ .todo-progress-fill {
214
+ height: 100%;
215
+ background: var(--color-success, #52c41a);
216
+ border-radius: 2px;
217
+ transition: width 0.4s ease;
218
+ }
219
+ .todo-stat-completed,
220
+ .todo-stat-inline.todo-stat-completed {
221
+ color: var(--color-success, #52c41a);
222
+ }
223
+ .todo-stat-progress,
224
+ .todo-stat-inline.todo-stat-progress {
225
+ color: var(--color-primary, #1677ff);
226
+ }
227
+ .todo-stat-pending,
228
+ .todo-stat-inline.todo-stat-pending {
229
+ color: var(--color-text-secondary, #8c8c8c);
230
+ }
231
+ .todo-stat-blocked,
232
+ .todo-stat-inline.todo-stat-blocked {
233
+ color: var(--color-error, #ff4d4f);
234
+ }
235
+ .todo-list {
236
+ padding: 4px 0 4px;
237
+ }
238
+ .todo-task-row {
239
+ display: flex;
240
+ align-items: flex-start;
241
+ gap: 6px;
242
+ padding: 3px 12px;
243
+ line-height: 1.5;
244
+ transition: background 0.15s;
245
+ }
246
+ .todo-task-row[role=button] {
247
+ cursor: pointer;
248
+ }
249
+ .todo-task-row[role=button]:hover {
250
+ background: rgba(0, 0, 0, 0.02);
251
+ }
252
+ .todo-status-icon {
253
+ flex-shrink: 0;
254
+ width: 16px;
255
+ text-align: center;
256
+ font-size: 12px;
257
+ line-height: 1.5;
258
+ }
259
+ .todo-status-pending .todo-status-icon {
260
+ color: var(--color-text-secondary, #8c8c8c);
261
+ }
262
+ .todo-status-in_progress .todo-status-icon {
263
+ color: var(--color-primary, #1677ff);
264
+ }
265
+ .todo-status-completed .todo-status-icon {
266
+ color: var(--color-success, #52c41a);
267
+ }
268
+ .todo-status-blocked .todo-status-icon {
269
+ color: var(--color-error, #ff4d4f);
270
+ }
271
+ .todo-status-in_progress .todo-status-icon {
272
+ animation: todo-pulse 1.5s ease-in-out infinite;
273
+ }
274
+ @keyframes todo-pulse {
275
+ 0%, 100% {
276
+ opacity: 1;
277
+ }
278
+ 50% {
279
+ opacity: 0.4;
280
+ }
281
+ }
282
+ .todo-expand-arrow {
283
+ flex-shrink: 0;
284
+ font-size: 10px;
285
+ width: 12px;
286
+ text-align: center;
287
+ transition: transform 0.2s;
288
+ color: var(--color-text-secondary, #8c8c8c);
289
+ line-height: 1.5;
290
+ }
291
+ .todo-expand-arrow.expanded {
292
+ transform: rotate(90deg);
293
+ }
294
+ .todo-task-desc {
295
+ flex: 1;
296
+ min-width: 0;
297
+ word-break: break-word;
298
+ }
299
+ .todo-status-completed .todo-task-desc {
300
+ color: var(--color-text-secondary, #8c8c8c);
301
+ text-decoration: line-through;
302
+ }
303
+ .todo-status-in_progress .todo-task-desc {
304
+ color: var(--color-primary, #1677ff);
305
+ font-weight: 500;
306
+ }
307
+ .todo-more {
308
+ padding: 4px 12px 8px;
309
+ font-size: 12px;
310
+ color: var(--color-primary, #1677ff);
311
+ cursor: pointer;
312
+ }
313
+ .todo-more:hover {
314
+ text-decoration: underline;
315
+ }
316
+ .todo-card-compact {
317
+ display: flex;
318
+ align-items: center;
319
+ gap: 6px;
320
+ padding: 6px 12px;
321
+ background: var(--color-bg-tertiary, #f5f5f5);
322
+ border-radius: 6px;
323
+ font-size: 12px;
324
+ color: var(--color-text-secondary, #595959);
325
+ overflow: hidden;
326
+ }
327
+ .todo-compact-icon {
328
+ flex-shrink: 0;
329
+ opacity: 0.5;
330
+ }
331
+ .todo-compact-title {
332
+ flex-shrink: 0;
333
+ font-weight: 500;
334
+ color: var(--color-text-primary, #333);
335
+ }
336
+ .todo-compact-sep {
337
+ flex-shrink: 0;
338
+ color: var(--color-primary, #1677ff);
339
+ }
340
+ .todo-compact-current {
341
+ flex: 1;
342
+ min-width: 0;
343
+ overflow: hidden;
344
+ text-overflow: ellipsis;
345
+ white-space: nowrap;
346
+ color: var(--color-primary, #1677ff);
347
+ }
348
+ .todo-compact-progress {
349
+ flex-shrink: 0;
350
+ font-variant-numeric: tabular-nums;
351
+ color: var(--color-text-secondary, #8c8c8c);
352
+ }
353
+ .todo-multi-compact {
354
+ display: flex;
355
+ flex-direction: column;
356
+ gap: 4px;
357
+ }
358
+ .todo-multi-tabs {
359
+ display: flex;
360
+ gap: 2px;
361
+ padding: 4px 8px 0;
362
+ border-bottom: 1px solid var(--color-border, #e8e8e8);
363
+ }
364
+ .todo-tab {
365
+ padding: 4px 10px;
366
+ border: none;
367
+ background: transparent;
368
+ font-size: 12px;
369
+ color: var(--color-text-secondary, #8c8c8c);
370
+ cursor: pointer;
371
+ border-bottom: 2px solid transparent;
372
+ transition: color 0.15s, border-color 0.15s;
373
+ }
374
+ .todo-tab:hover {
375
+ color: var(--color-text-primary, #333);
376
+ }
377
+ .todo-tab.active {
378
+ color: var(--color-primary, #1677ff);
379
+ border-bottom-color: var(--color-primary, #1677ff);
380
+ }
381
+ .todo-tab-progress {
382
+ margin-left: 4px;
383
+ font-variant-numeric: tabular-nums;
384
+ opacity: 0.6;
385
+ }
386
+ @media (prefers-color-scheme: dark) {
387
+ .todo-card {
388
+ background: var(--color-bg-secondary, #1f1f1f);
389
+ border-color: rgba(255, 255, 255, 0.08);
390
+ }
391
+ .todo-header:hover {
392
+ background: rgba(255, 255, 255, 0.03);
393
+ }
394
+ .todo-progress-bar {
395
+ background: rgba(255, 255, 255, 0.08);
396
+ }
397
+ .todo-task-row[role=button]:hover {
398
+ background: rgba(255, 255, 255, 0.03);
399
+ }
400
+ .todo-card-compact {
401
+ background: var(--color-bg-tertiary, #262626);
402
+ }
403
+ .todo-multi-tabs {
404
+ border-bottom-color: rgba(255, 255, 255, 0.08);
405
+ }
406
+ .todo-tab:hover {
407
+ color: #d9d9d9;
408
+ }
409
+ }
410
+
411
+ /* src/components/PinnedArea.css */
412
+ .chat-pinned-area {
413
+ flex-shrink: 0;
414
+ margin: 12px 16px 0 16px;
415
+ padding: 14px;
416
+ background: rgba(139, 92, 246, 0.04);
417
+ border-radius: var(--radius-lg, 10px);
418
+ border: 1px solid rgba(139, 92, 246, 0.15);
419
+ position: relative;
420
+ }
421
+ .pinned-timestamp {
422
+ position: absolute;
423
+ bottom: 8px;
424
+ right: 12px;
425
+ font-size: 11px;
426
+ color: rgba(139, 92, 246, 0.5);
427
+ }
428
+ .pinned-content {
429
+ transition: opacity 0.15s ease-out;
430
+ }
431
+ .pinned-content.fade-out {
432
+ opacity: 0;
433
+ }
434
+ .pinned-user-message {
435
+ background: var(--color-bg-primary);
436
+ border-radius: var(--radius);
437
+ padding: 12px 14px;
438
+ margin-bottom: 12px;
439
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
440
+ color: var(--color-text-primary);
441
+ line-height: 1.6;
442
+ }
443
+
444
+ /* src/components/RoundHeader.css */
445
+ .round-header {
446
+ background: var(--color-bg-secondary);
447
+ border: 1px solid var(--color-border);
448
+ border-radius: var(--radius);
449
+ padding: 12px 16px;
450
+ margin-bottom: 12px;
451
+ max-height: 200px;
452
+ overflow: hidden;
453
+ transition:
454
+ opacity 0.2s ease,
455
+ max-height 0.3s ease,
456
+ padding 0.3s ease,
457
+ margin 0.3s ease,
458
+ border-width 0.2s ease;
459
+ }
460
+ .round-header.pinned {
461
+ opacity: 0;
462
+ pointer-events: none;
463
+ max-height: 0;
464
+ padding: 0 16px;
465
+ margin: 0;
466
+ border-width: 0;
467
+ }
468
+ .round-header-title {
469
+ display: flex;
470
+ justify-content: space-between;
471
+ align-items: center;
472
+ }
473
+ .round-header .user-avatar {
474
+ display: flex;
475
+ align-items: center;
476
+ gap: 8px;
477
+ }
478
+ .round-header .avatar-icon {
479
+ font-size: 16px;
480
+ }
481
+ .user-message-text {
482
+ font-weight: 500;
483
+ color: var(--color-text-primary);
484
+ }
485
+ .round-status {
486
+ display: inline-flex;
487
+ align-items: center;
488
+ gap: 4px;
489
+ padding: 2px 8px;
490
+ border-radius: 4px;
491
+ font-size: 12px;
492
+ font-weight: 500;
493
+ }
494
+ .round-status.running {
495
+ background: var(--color-primary-bg);
496
+ color: var(--color-primary);
497
+ }
498
+ .round-status.completed {
499
+ background: rgba(82, 196, 26, 0.1);
500
+ color: var(--color-success);
501
+ }
502
+ .round-status.error {
503
+ background: rgba(255, 77, 79, 0.1);
504
+ color: var(--color-error);
505
+ }
506
+
507
+ /* src/components/SchemaFormRenderer.css */
508
+ .schema-form-renderer {
509
+ padding: 16px;
510
+ }
511
+ .schema-card {
512
+ }
513
+ .schema-form {
514
+ display: flex;
515
+ flex-direction: column;
516
+ gap: 20px;
517
+ }
518
+ .schema-form-item {
519
+ display: flex;
520
+ flex-direction: column;
521
+ gap: 8px;
522
+ }
523
+ .schema-form-item.has-error .schema-form-control input,
524
+ .schema-form-item.has-error .schema-form-control textarea,
525
+ .schema-form-item.has-error .schema-form-control select {
526
+ border-color: #ef4444;
527
+ }
528
+ .schema-form-label {
529
+ font-size: 14px;
530
+ font-weight: 500;
531
+ color: var(--color-text-primary);
532
+ display: flex;
533
+ align-items: center;
534
+ gap: 4px;
535
+ }
536
+ .required-mark {
537
+ color: #ef4444;
538
+ }
539
+ .schema-form-control {
540
+ }
541
+ .schema-form-error {
542
+ font-size: 12px;
543
+ color: #ef4444;
544
+ margin-top: 4px;
545
+ }
546
+ .schema-radio-group {
547
+ display: flex;
548
+ flex-direction: column;
549
+ gap: 10px;
550
+ padding-top: 4px;
551
+ }
552
+ .schema-radio-option {
553
+ display: flex;
554
+ align-items: flex-start;
555
+ gap: 10px;
556
+ cursor: pointer;
557
+ padding: 8px 12px;
558
+ border-radius: 8px;
559
+ transition: background-color 0.15s;
560
+ }
561
+ .schema-radio-option:hover {
562
+ background-color: rgba(99, 102, 241, 0.08);
563
+ }
564
+ .schema-radio-option input[type=radio] {
565
+ display: none;
566
+ }
567
+ .radio-checkmark {
568
+ width: 18px;
569
+ height: 18px;
570
+ min-width: 18px;
571
+ border: 2px solid #d1d5db;
572
+ border-radius: 50%;
573
+ display: flex;
574
+ align-items: center;
575
+ justify-content: center;
576
+ transition: all 0.15s;
577
+ margin-top: 2px;
578
+ }
579
+ .schema-radio-option input[type=radio]:checked + .radio-checkmark {
580
+ border-color: #6366f1;
581
+ background-color: #6366f1;
582
+ }
583
+ .schema-radio-option input[type=radio]:checked + .radio-checkmark::after {
584
+ content: "";
585
+ width: 6px;
586
+ height: 6px;
587
+ background-color: white;
588
+ border-radius: 50%;
589
+ }
590
+ .radio-label {
591
+ font-size: 14px;
592
+ color: var(--color-text-primary);
593
+ line-height: 1.5;
594
+ }
595
+ .schema-checkbox-group {
596
+ display: flex;
597
+ flex-direction: column;
598
+ gap: 10px;
599
+ padding-top: 4px;
600
+ }
601
+ .schema-checkbox-option {
602
+ display: flex;
603
+ align-items: flex-start;
604
+ gap: 10px;
605
+ cursor: pointer;
606
+ padding: 8px 12px;
607
+ border-radius: 8px;
608
+ transition: background-color 0.15s;
609
+ }
610
+ .schema-checkbox-option:hover {
611
+ background-color: rgba(99, 102, 241, 0.08);
612
+ }
613
+ .schema-checkbox-option input[type=checkbox] {
614
+ display: none;
615
+ }
616
+ .checkbox-checkmark {
617
+ width: 18px;
618
+ height: 18px;
619
+ min-width: 18px;
620
+ border: 2px solid #d1d5db;
621
+ border-radius: 4px;
622
+ display: flex;
623
+ align-items: center;
624
+ justify-content: center;
625
+ transition: all 0.15s;
626
+ margin-top: 2px;
627
+ }
628
+ .schema-checkbox-option input[type=checkbox]:checked + .checkbox-checkmark {
629
+ border-color: #6366f1;
630
+ background-color: #6366f1;
631
+ }
632
+ .schema-checkbox-option input[type=checkbox]:checked + .checkbox-checkmark::after {
633
+ content: "\2713";
634
+ color: white;
635
+ font-size: 12px;
636
+ font-weight: bold;
637
+ }
638
+ .checkbox-label {
639
+ font-size: 14px;
640
+ color: var(--color-text-primary);
641
+ line-height: 1.5;
642
+ }
643
+ .schema-input {
644
+ width: 100%;
645
+ padding: 10px 12px;
646
+ font-size: 14px;
647
+ border: 1px solid #d1d5db;
648
+ border-radius: 8px;
649
+ outline: none;
650
+ transition: border-color 0.15s, box-shadow 0.15s;
651
+ background-color: white;
652
+ }
653
+ .schema-input:focus {
654
+ border-color: #6366f1;
655
+ box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1);
656
+ }
657
+ .schema-input::placeholder {
658
+ color: #9ca3af;
659
+ }
660
+ .schema-textarea {
661
+ width: 100%;
662
+ padding: 10px 12px;
663
+ font-size: 14px;
664
+ border: 1px solid #d1d5db;
665
+ border-radius: 8px;
666
+ outline: none;
667
+ transition: border-color 0.15s, box-shadow 0.15s;
668
+ resize: vertical;
669
+ min-height: 80px;
670
+ font-family: inherit;
671
+ background-color: white;
672
+ }
673
+ .schema-textarea:focus {
674
+ border-color: #6366f1;
675
+ box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1);
676
+ }
677
+ .schema-textarea::placeholder {
678
+ color: #9ca3af;
679
+ }
680
+ .schema-select {
681
+ width: 100%;
682
+ padding: 10px 12px;
683
+ font-size: 14px;
684
+ border: 1px solid #d1d5db;
685
+ border-radius: 8px;
686
+ outline: none;
687
+ transition: border-color 0.15s, box-shadow 0.15s;
688
+ background-color: white;
689
+ cursor: pointer;
690
+ appearance: none;
691
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%236b7280' d='M2.5 4.5L6 8l3.5-3.5'/%3E%3C/svg%3E");
692
+ background-repeat: no-repeat;
693
+ background-position: right 12px center;
694
+ padding-right: 36px;
695
+ }
696
+ .schema-select:focus {
697
+ border-color: #6366f1;
698
+ box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1);
699
+ }
700
+ .schema-form-actions {
701
+ margin-top: 24px;
702
+ display: flex;
703
+ justify-content: flex-end;
704
+ gap: 12px;
705
+ }
706
+ .schema-submit-btn {
707
+ padding: 10px 24px;
708
+ font-size: 14px;
709
+ font-weight: 500;
710
+ color: white;
711
+ background:
712
+ linear-gradient(
713
+ 135deg,
714
+ #6366f1 0%,
715
+ #8b5cf6 100%);
716
+ border: none;
717
+ border-radius: 8px;
718
+ cursor: pointer;
719
+ transition: all 0.2s;
720
+ }
721
+ .schema-submit-btn:hover:not(:disabled) {
722
+ transform: translateY(-1px);
723
+ box-shadow: 0 4px 12px rgba(99, 102, 241, 0.4);
724
+ }
725
+ .schema-submit-btn:disabled {
726
+ opacity: 0.6;
727
+ cursor: not-allowed;
728
+ }
729
+ .schema-form-meta {
730
+ margin-top: 16px;
731
+ padding-top: 12px;
732
+ border-top: 1px solid rgba(99, 102, 241, 0.15);
733
+ }
734
+ .meta-uuid {
735
+ font-size: 11px;
736
+ color: var(--color-text-secondary);
737
+ font-family: monospace;
738
+ }
739
+
740
+ /* src/components/ToolCardBuffering.css */
741
+ .tool-card-buffering {
742
+ border-radius: 6px;
743
+ padding: 8px 12px;
744
+ margin: 4px 0;
745
+ font-size: 13px;
746
+ border: 1px solid #e0e0e0;
747
+ background: #fafafa;
748
+ transition: border-color 0.3s, background 0.3s;
749
+ overflow: hidden;
750
+ min-width: 0;
751
+ max-width: 100%;
752
+ box-sizing: border-box;
753
+ }
754
+ .tool-card-buffering.phase-generating {
755
+ border-color: #91caff;
756
+ background: #f0f7ff;
757
+ }
758
+ .tool-card-buffering.phase-executing {
759
+ border-color: #ffe58f;
760
+ background: #fffbe6;
761
+ }
762
+ .tool-card-buffering.phase-complete {
763
+ border-color: #d9d9d9;
764
+ background: #fafafa;
765
+ }
766
+ .tool-card-buffering.phase-error {
767
+ border-color: #ffa39e;
768
+ background: #fff2f0;
769
+ }
770
+ .tool-card-header {
771
+ display: flex;
772
+ align-items: center;
773
+ gap: 6px;
774
+ user-select: none;
775
+ min-height: 22px;
776
+ min-width: 0;
777
+ overflow: hidden;
778
+ }
779
+ .tool-phase-icon {
780
+ font-size: 14px;
781
+ flex-shrink: 0;
782
+ }
783
+ .tool-card-name {
784
+ font-weight: 600;
785
+ color: #1a1a1a;
786
+ font-size: 13px;
787
+ overflow: hidden;
788
+ text-overflow: ellipsis;
789
+ white-space: nowrap;
790
+ min-width: 0;
791
+ }
792
+ .tool-card-fn {
793
+ color: #8c8c8c;
794
+ font-size: 12px;
795
+ }
796
+ .tool-card-path-inline {
797
+ color: #595959;
798
+ font-size: 12px;
799
+ font-family:
800
+ "SF Mono",
801
+ "Menlo",
802
+ monospace;
803
+ overflow: hidden;
804
+ text-overflow: ellipsis;
805
+ white-space: nowrap;
806
+ max-width: 260px;
807
+ }
808
+ .tool-phase-label {
809
+ margin-left: auto;
810
+ font-size: 12px;
811
+ color: #8c8c8c;
812
+ flex-shrink: 0;
813
+ }
814
+ .tool-card-dots {
815
+ display: inline-flex;
816
+ gap: 3px;
817
+ margin-left: 4px;
818
+ }
819
+ .tool-card-dots span {
820
+ width: 4px;
821
+ height: 4px;
822
+ border-radius: 50%;
823
+ background: #1677ff;
824
+ animation: dotPulse 1.4s infinite ease-in-out;
825
+ }
826
+ .tool-card-dots span:nth-child(2) {
827
+ animation-delay: 0.2s;
828
+ }
829
+ .tool-card-dots span:nth-child(3) {
830
+ animation-delay: 0.4s;
831
+ }
832
+ @keyframes dotPulse {
833
+ 0%, 80%, 100% {
834
+ opacity: 0.3;
835
+ transform: scale(0.8);
836
+ }
837
+ 40% {
838
+ opacity: 1;
839
+ transform: scale(1);
840
+ }
841
+ }
842
+ .tool-card-expand {
843
+ font-size: 10px;
844
+ color: #8c8c8c;
845
+ flex-shrink: 0;
846
+ margin-left: 4px;
847
+ }
848
+ .content-diff-preview {
849
+ margin-top: 4px;
850
+ padding: 4px 0 0 22px;
851
+ font-family:
852
+ "SF Mono",
853
+ "Menlo",
854
+ "Consolas",
855
+ monospace;
856
+ font-size: 12px;
857
+ line-height: 1.5;
858
+ overflow: hidden;
859
+ min-width: 0;
860
+ max-width: 100%;
861
+ box-sizing: border-box;
862
+ }
863
+ .diff-line {
864
+ display: flex;
865
+ gap: 6px;
866
+ overflow: hidden;
867
+ min-width: 0;
868
+ max-width: 100%;
869
+ }
870
+ .diff-sign {
871
+ flex-shrink: 0;
872
+ width: 12px;
873
+ text-align: center;
874
+ font-weight: 600;
875
+ }
876
+ .diff-add .diff-sign {
877
+ color: #389e0d;
878
+ }
879
+ .diff-remove .diff-sign {
880
+ color: #cf1322;
881
+ }
882
+ .diff-text {
883
+ color: #595959;
884
+ overflow: hidden;
885
+ text-overflow: ellipsis;
886
+ white-space: nowrap;
887
+ min-width: 0;
888
+ width: 0;
889
+ flex: 1 1 0%;
890
+ }
891
+ .diff-add .diff-text {
892
+ color: #52c41a;
893
+ }
894
+ .diff-remove .diff-text {
895
+ color: #ff7875;
896
+ text-decoration: line-through;
897
+ }
898
+ .diff-more {
899
+ color: #8c8c8c;
900
+ font-size: 11px;
901
+ padding-left: 18px;
902
+ margin-top: 1px;
903
+ }
904
+ .content-diff-preview.streaming .diff-text {
905
+ color: #333;
906
+ }
907
+ .streaming-block-cursor {
908
+ display: inline-block;
909
+ width: 7px;
910
+ height: 14px;
911
+ background: #1677ff;
912
+ margin-left: 1px;
913
+ vertical-align: text-bottom;
914
+ animation: cursorBlink 1s step-end infinite;
915
+ }
916
+ @keyframes cursorBlink {
917
+ 0%, 50% {
918
+ opacity: 1;
919
+ }
920
+ 51%, 100% {
921
+ opacity: 0;
922
+ }
923
+ }
924
+ .tool-card-preview-area {
925
+ margin-top: 8px;
926
+ }
927
+ .tool-card-path {
928
+ padding: 4px 8px;
929
+ font-size: 11px;
930
+ color: #8c8c8c;
931
+ font-family:
932
+ "SF Mono",
933
+ "Menlo",
934
+ monospace;
935
+ border-bottom: 1px solid rgba(0, 0, 0, 0.06);
936
+ margin-bottom: 4px;
937
+ }
938
+ .tool-card-preview {
939
+ margin: 0;
940
+ padding: 8px;
941
+ background: rgba(0, 0, 0, 0.04);
942
+ border-radius: 4px;
943
+ font-family:
944
+ "SF Mono",
945
+ "Menlo",
946
+ monospace;
947
+ font-size: 12px;
948
+ line-height: 1.5;
949
+ white-space: pre-wrap;
950
+ word-break: break-all;
951
+ max-height: 300px;
952
+ overflow-y: auto;
953
+ color: #333;
954
+ }
955
+ @media (prefers-color-scheme: dark) {
956
+ .tool-card-buffering {
957
+ border-color: #434343;
958
+ background: #1f1f1f;
959
+ }
960
+ .tool-card-buffering.phase-generating {
961
+ border-color: #177ddc;
962
+ background: #111d2c;
963
+ }
964
+ .tool-card-buffering.phase-executing {
965
+ border-color: #d89614;
966
+ background: #2b2111;
967
+ }
968
+ .tool-card-buffering.phase-complete {
969
+ border-color: #434343;
970
+ background: #1f1f1f;
971
+ }
972
+ .tool-card-buffering.phase-error {
973
+ border-color: #d32029;
974
+ background: #2a1215;
975
+ }
976
+ .tool-card-name {
977
+ color: #e6e6e6;
978
+ }
979
+ .tool-card-fn {
980
+ color: #8c8c8c;
981
+ }
982
+ .tool-card-path-inline {
983
+ color: #a6a6a6;
984
+ }
985
+ .tool-phase-label {
986
+ color: #a6a6a6;
987
+ }
988
+ .diff-text {
989
+ color: #a6a6a6;
990
+ }
991
+ .diff-add .diff-sign {
992
+ color: #52c41a;
993
+ }
994
+ .diff-add .diff-text {
995
+ color: #73d13d;
996
+ }
997
+ .diff-remove .diff-sign {
998
+ color: #f5222d;
999
+ }
1000
+ .diff-remove .diff-text {
1001
+ color: #ff7875;
1002
+ }
1003
+ .diff-more {
1004
+ color: #6b6b6b;
1005
+ }
1006
+ .content-diff-preview.streaming .diff-text {
1007
+ color: #d9d9d9;
1008
+ }
1009
+ .streaming-block-cursor {
1010
+ background: #409eff;
1011
+ }
1012
+ .tool-card-path {
1013
+ color: #6b6b6b;
1014
+ border-bottom-color: rgba(255, 255, 255, 0.08);
1015
+ }
1016
+ .tool-card-preview {
1017
+ background: rgba(255, 255, 255, 0.06);
1018
+ color: #d9d9d9;
1019
+ }
1020
+ }
1021
+
1022
+ /* src/components/renderers/renderers.css */
1023
+ .compact-tags {
1024
+ display: flex;
1025
+ flex-wrap: wrap;
1026
+ gap: 4px;
1027
+ margin-top: 4px;
1028
+ }
1029
+ .compact-tag {
1030
+ padding: 1px 6px;
1031
+ border-radius: 3px;
1032
+ font-size: 11px;
1033
+ background: rgba(0, 0, 0, 0.06);
1034
+ color: #666;
1035
+ font-family:
1036
+ "SF Mono",
1037
+ "Menlo",
1038
+ monospace;
1039
+ }
1040
+ .content-renderer-body {
1041
+ margin-top: 8px;
1042
+ border: 1px solid rgba(0, 0, 0, 0.08);
1043
+ border-radius: 4px;
1044
+ overflow: hidden;
1045
+ }
1046
+ .content-renderer-path {
1047
+ padding: 4px 8px;
1048
+ font-size: 11px;
1049
+ color: #666;
1050
+ background: rgba(0, 0, 0, 0.03);
1051
+ border-bottom: 1px solid rgba(0, 0, 0, 0.06);
1052
+ font-family:
1053
+ "SF Mono",
1054
+ "Menlo",
1055
+ monospace;
1056
+ }
1057
+ .content-renderer-code {
1058
+ margin: 0;
1059
+ padding: 8px;
1060
+ font-family:
1061
+ "SF Mono",
1062
+ "Menlo",
1063
+ monospace;
1064
+ font-size: 12px;
1065
+ line-height: 1.5;
1066
+ white-space: pre-wrap;
1067
+ word-break: break-all;
1068
+ max-height: 300px;
1069
+ overflow-y: auto;
1070
+ color: #333;
1071
+ }
1072
+ .command-renderer-terminal {
1073
+ margin-top: 6px;
1074
+ padding: 8px 12px;
1075
+ background: #1e1e1e;
1076
+ border-radius: 4px;
1077
+ font-family:
1078
+ "SF Mono",
1079
+ "Menlo",
1080
+ "Consolas",
1081
+ monospace;
1082
+ font-size: 12px;
1083
+ display: flex;
1084
+ align-items: flex-start;
1085
+ gap: 8px;
1086
+ }
1087
+ .command-prompt {
1088
+ color: #4ec9b0;
1089
+ flex-shrink: 0;
1090
+ }
1091
+ .command-text {
1092
+ color: #d4d4d4;
1093
+ word-break: break-all;
1094
+ white-space: pre-wrap;
1095
+ }
1096
+ .browser-primary-value {
1097
+ font-size: 12px;
1098
+ color: #1677ff;
1099
+ font-family:
1100
+ "SF Mono",
1101
+ "Menlo",
1102
+ monospace;
1103
+ margin-left: 4px;
1104
+ overflow: hidden;
1105
+ text-overflow: ellipsis;
1106
+ white-space: nowrap;
1107
+ max-width: 300px;
1108
+ }
1109
+ .query-inline {
1110
+ font-size: 12px;
1111
+ color: #d46b08;
1112
+ font-style: italic;
1113
+ overflow: hidden;
1114
+ text-overflow: ellipsis;
1115
+ white-space: nowrap;
1116
+ max-width: 220px;
1117
+ }
1118
+ .query-scope-inline {
1119
+ font-size: 11px;
1120
+ color: #8c8c8c;
1121
+ font-family:
1122
+ "SF Mono",
1123
+ "Menlo",
1124
+ monospace;
1125
+ overflow: hidden;
1126
+ text-overflow: ellipsis;
1127
+ white-space: nowrap;
1128
+ max-width: 180px;
1129
+ }
1130
+ .trigger-title {
1131
+ font-size: 12px;
1132
+ color: #333;
1133
+ font-weight: 500;
1134
+ margin-left: 4px;
1135
+ }
1136
+ .trigger-detail,
1137
+ .params-detail {
1138
+ margin-top: 6px;
1139
+ padding: 6px 8px;
1140
+ background: rgba(0, 0, 0, 0.03);
1141
+ border-radius: 4px;
1142
+ }
1143
+ .trigger-row,
1144
+ .params-row {
1145
+ display: flex;
1146
+ gap: 8px;
1147
+ padding: 2px 0;
1148
+ font-size: 12px;
1149
+ }
1150
+ .trigger-key,
1151
+ .params-key {
1152
+ color: #666;
1153
+ font-family:
1154
+ "SF Mono",
1155
+ "Menlo",
1156
+ monospace;
1157
+ min-width: 100px;
1158
+ flex-shrink: 0;
1159
+ }
1160
+ .trigger-value,
1161
+ .params-value {
1162
+ color: #333;
1163
+ word-break: break-all;
1164
+ }
1165
+ .params-header {
1166
+ font-size: 12px;
1167
+ color: #333;
1168
+ margin-left: 4px;
1169
+ }
1170
+ .thinking-step {
1171
+ font-size: 11px;
1172
+ color: #8c8c8c;
1173
+ margin-left: 4px;
1174
+ }
1175
+ .thinking-bubble {
1176
+ margin-top: 6px;
1177
+ padding: 8px 12px;
1178
+ background:
1179
+ linear-gradient(
1180
+ 135deg,
1181
+ #f0f5ff,
1182
+ #e6f7ff);
1183
+ border-radius: 8px;
1184
+ border-left: 3px solid #1677ff;
1185
+ font-size: 13px;
1186
+ line-height: 1.6;
1187
+ color: #333;
1188
+ }
1189
+ .tool-result-section {
1190
+ margin-top: 8px;
1191
+ border-top: 1px dashed rgba(0, 0, 0, 0.08);
1192
+ }
1193
+ .tool-result-header {
1194
+ display: flex;
1195
+ align-items: center;
1196
+ gap: 6px;
1197
+ padding: 6px 0 2px;
1198
+ cursor: pointer;
1199
+ user-select: none;
1200
+ font-size: 12px;
1201
+ }
1202
+ .tool-result-header:hover {
1203
+ opacity: 0.8;
1204
+ }
1205
+ .tool-result-label {
1206
+ font-weight: 500;
1207
+ color: #595959;
1208
+ flex-shrink: 0;
1209
+ }
1210
+ .tool-result-summary {
1211
+ flex: 1;
1212
+ color: #8c8c8c;
1213
+ overflow: hidden;
1214
+ text-overflow: ellipsis;
1215
+ white-space: nowrap;
1216
+ font-family:
1217
+ "SF Mono",
1218
+ "Menlo",
1219
+ monospace;
1220
+ font-size: 11px;
1221
+ }
1222
+ .tool-result-body {
1223
+ padding: 6px 0;
1224
+ }
1225
+ .tool-result-search-query {
1226
+ font-size: 12px;
1227
+ color: #595959;
1228
+ margin-bottom: 6px;
1229
+ font-weight: 500;
1230
+ }
1231
+ .tool-result-search-list {
1232
+ display: flex;
1233
+ flex-direction: column;
1234
+ gap: 4px;
1235
+ }
1236
+ .tool-result-search-item {
1237
+ display: block;
1238
+ padding: 6px 8px;
1239
+ border-radius: 4px;
1240
+ background: rgba(0, 0, 0, 0.02);
1241
+ border: 1px solid rgba(0, 0, 0, 0.05);
1242
+ text-decoration: none;
1243
+ transition: background 0.15s, border-color 0.15s;
1244
+ }
1245
+ .tool-result-search-item:hover {
1246
+ background: rgba(22, 119, 255, 0.04);
1247
+ border-color: rgba(22, 119, 255, 0.2);
1248
+ }
1249
+ .search-item-title {
1250
+ font-size: 12px;
1251
+ font-weight: 500;
1252
+ color: #1677ff;
1253
+ overflow: hidden;
1254
+ text-overflow: ellipsis;
1255
+ white-space: nowrap;
1256
+ }
1257
+ .search-item-snippet {
1258
+ font-size: 11px;
1259
+ color: #595959;
1260
+ line-height: 1.4;
1261
+ margin-top: 2px;
1262
+ display: -webkit-box;
1263
+ -webkit-line-clamp: 2;
1264
+ -webkit-box-orient: vertical;
1265
+ overflow: hidden;
1266
+ }
1267
+ .search-item-date {
1268
+ font-size: 10px;
1269
+ color: #8c8c8c;
1270
+ margin-top: 2px;
1271
+ display: inline-block;
1272
+ }
1273
+ .search-item-more {
1274
+ font-size: 11px;
1275
+ color: #8c8c8c;
1276
+ text-align: center;
1277
+ padding: 4px;
1278
+ }
1279
+ .tool-result-scrape {
1280
+ display: flex;
1281
+ flex-direction: column;
1282
+ gap: 6px;
1283
+ }
1284
+ .scrape-result-link {
1285
+ display: block;
1286
+ padding: 6px 8px;
1287
+ border-radius: 4px;
1288
+ background: rgba(0, 0, 0, 0.02);
1289
+ border: 1px solid rgba(0, 0, 0, 0.05);
1290
+ text-decoration: none;
1291
+ transition: background 0.15s, border-color 0.15s;
1292
+ }
1293
+ .scrape-result-link:hover {
1294
+ background: rgba(22, 119, 255, 0.04);
1295
+ border-color: rgba(22, 119, 255, 0.2);
1296
+ }
1297
+ .scrape-result-title {
1298
+ font-size: 12px;
1299
+ font-weight: 500;
1300
+ color: #1677ff;
1301
+ margin-bottom: 2px;
1302
+ }
1303
+ .scrape-result-url {
1304
+ font-size: 10px;
1305
+ color: #8c8c8c;
1306
+ word-break: break-all;
1307
+ }
1308
+ .scrape-result-snippet {
1309
+ font-size: 11px;
1310
+ color: #595959;
1311
+ line-height: 1.5;
1312
+ padding: 0 8px;
1313
+ }
1314
+ .tool-result-json {
1315
+ border-radius: 4px;
1316
+ overflow: hidden;
1317
+ }
1318
+ .tool-result-json-code {
1319
+ margin: 0;
1320
+ padding: 8px;
1321
+ background: rgba(0, 0, 0, 0.03);
1322
+ border-radius: 4px;
1323
+ font-family:
1324
+ "SF Mono",
1325
+ "Menlo",
1326
+ monospace;
1327
+ font-size: 11px;
1328
+ line-height: 1.5;
1329
+ white-space: pre-wrap;
1330
+ word-break: break-all;
1331
+ color: #333;
1332
+ max-height: 280px;
1333
+ overflow-y: auto;
1334
+ }
1335
+ .tool-result-json-more {
1336
+ font-size: 11px;
1337
+ color: #1677ff;
1338
+ text-align: center;
1339
+ padding: 4px;
1340
+ cursor: pointer;
1341
+ }
1342
+ .tool-result-json-more:hover {
1343
+ text-decoration: underline;
1344
+ }
1345
+ .tool-result-text {
1346
+ font-size: 12px;
1347
+ color: #333;
1348
+ line-height: 1.5;
1349
+ white-space: pre-wrap;
1350
+ word-break: break-word;
1351
+ max-height: 200px;
1352
+ overflow-y: auto;
1353
+ }
1354
+ @media (prefers-color-scheme: dark) {
1355
+ .compact-tag {
1356
+ background: rgba(255, 255, 255, 0.1);
1357
+ color: #a6a6a6;
1358
+ }
1359
+ .content-renderer-body {
1360
+ border-color: rgba(255, 255, 255, 0.1);
1361
+ }
1362
+ .content-renderer-path {
1363
+ color: #8c8c8c;
1364
+ background: rgba(255, 255, 255, 0.04);
1365
+ border-bottom-color: rgba(255, 255, 255, 0.08);
1366
+ }
1367
+ .content-renderer-code {
1368
+ color: #d9d9d9;
1369
+ }
1370
+ .browser-primary-value {
1371
+ color: #409eff;
1372
+ }
1373
+ .query-inline {
1374
+ color: #ffc069;
1375
+ }
1376
+ .query-scope-inline {
1377
+ color: #8c8c8c;
1378
+ }
1379
+ .trigger-title {
1380
+ color: #d9d9d9;
1381
+ }
1382
+ .trigger-detail,
1383
+ .params-detail {
1384
+ background: rgba(255, 255, 255, 0.04);
1385
+ }
1386
+ .trigger-key,
1387
+ .params-key {
1388
+ color: #8c8c8c;
1389
+ }
1390
+ .trigger-value,
1391
+ .params-value {
1392
+ color: #d9d9d9;
1393
+ }
1394
+ .params-header {
1395
+ color: #d9d9d9;
1396
+ }
1397
+ .thinking-bubble {
1398
+ background:
1399
+ linear-gradient(
1400
+ 135deg,
1401
+ #1a2332,
1402
+ #111d2c);
1403
+ color: #d9d9d9;
1404
+ border-left-color: #177ddc;
1405
+ }
1406
+ .tool-result-section {
1407
+ border-top-color: rgba(255, 255, 255, 0.08);
1408
+ }
1409
+ .tool-result-label {
1410
+ color: #a6a6a6;
1411
+ }
1412
+ .tool-result-summary {
1413
+ color: #6b6b6b;
1414
+ }
1415
+ .tool-result-search-query {
1416
+ color: #a6a6a6;
1417
+ }
1418
+ .tool-result-search-item {
1419
+ background: rgba(255, 255, 255, 0.03);
1420
+ border-color: rgba(255, 255, 255, 0.06);
1421
+ }
1422
+ .tool-result-search-item:hover {
1423
+ background: rgba(23, 125, 220, 0.08);
1424
+ border-color: rgba(23, 125, 220, 0.25);
1425
+ }
1426
+ .search-item-title {
1427
+ color: #409eff;
1428
+ }
1429
+ .search-item-snippet {
1430
+ color: #a6a6a6;
1431
+ }
1432
+ .search-item-date {
1433
+ color: #6b6b6b;
1434
+ }
1435
+ .scrape-result-link {
1436
+ color: #409eff;
1437
+ }
1438
+ .scrape-result-link:hover {
1439
+ background: rgba(23, 125, 220, 0.08);
1440
+ border-color: rgba(23, 125, 220, 0.25);
1441
+ }
1442
+ .scrape-result-title {
1443
+ color: #d9d9d9;
1444
+ }
1445
+ .scrape-result-url {
1446
+ color: #6b6b6b;
1447
+ }
1448
+ .scrape-result-snippet {
1449
+ color: #a6a6a6;
1450
+ }
1451
+ .tool-result-json-code {
1452
+ background: rgba(255, 255, 255, 0.04);
1453
+ color: #d9d9d9;
1454
+ }
1455
+ .tool-result-json-more {
1456
+ color: #409eff;
1457
+ }
1458
+ .tool-result-text {
1459
+ color: #d9d9d9;
1460
+ }
1461
+ }
1462
+
1463
+ /* src/components/MessageContent.css */
1464
+ .sd-message {
1465
+ padding: 12px 16px;
1466
+ background: var(--color-bg-secondary, #fff);
1467
+ border-radius: var(--radius, 8px);
1468
+ color: var(--color-text-primary, #1f1f1f);
1469
+ word-break: break-word;
1470
+ overflow-wrap: break-word;
1471
+ overflow-x: auto;
1472
+ min-width: 0;
1473
+ max-width: 100%;
1474
+ font-size: 14px;
1475
+ position: relative;
1476
+ line-height: 1.8;
1477
+ }
1478
+ .sd-message h1,
1479
+ .sd-message h2,
1480
+ .sd-message h3,
1481
+ .sd-message h4,
1482
+ .sd-message h5,
1483
+ .sd-message h6 {
1484
+ margin-top: 1.2em;
1485
+ margin-bottom: 0.5em;
1486
+ }
1487
+ .sd-message h1:first-child,
1488
+ .sd-message h2:first-child,
1489
+ .sd-message h3:first-child {
1490
+ margin-top: 0;
1491
+ }
1492
+ .sd-message p {
1493
+ margin-bottom: 0.65em;
1494
+ }
1495
+ .sd-message p:last-child {
1496
+ margin-bottom: 0;
1497
+ }
1498
+ .sd-message ul,
1499
+ .sd-message ol {
1500
+ margin-top: 0.4em;
1501
+ margin-bottom: 0.65em;
1502
+ }
1503
+ .sd-message blockquote {
1504
+ margin-top: 0.6em;
1505
+ margin-bottom: 0.6em;
1506
+ }
1507
+ .sd-message .katex-display {
1508
+ margin: 0.8em 0;
1509
+ }
1510
+ .sd-think {
1511
+ font-size: 13px;
1512
+ line-height: 1.7;
1513
+ }
1514
+ .streaming-cursor {
1515
+ display: inline-block;
1516
+ width: 2px;
1517
+ height: 1em;
1518
+ background: var(--primary-color, #667eea);
1519
+ margin-left: 2px;
1520
+ vertical-align: text-bottom;
1521
+ animation: cursor-blink 1s steps(2) infinite;
1522
+ }
1523
+ @keyframes cursor-blink {
1524
+ 0% {
1525
+ opacity: 1;
1526
+ }
1527
+ 50% {
1528
+ opacity: 0;
1529
+ }
1530
+ }
1531
+ .text-content {
1532
+ padding: 12px 16px;
1533
+ background: var(--color-bg-secondary);
1534
+ border-radius: var(--radius);
1535
+ line-height: 1.6;
1536
+ color: var(--color-text-primary);
1537
+ word-break: break-word;
1538
+ overflow-wrap: break-word;
1539
+ overflow-x: auto;
1540
+ min-width: 0;
1541
+ max-width: 100%;
1542
+ }
1543
+ .think-chunk {
1544
+ background: rgba(139, 92, 246, 0.03);
1545
+ border: 1px solid rgba(139, 92, 246, 0.12);
1546
+ border-radius: var(--radius);
1547
+ overflow: hidden;
1548
+ }
1549
+ .think-header {
1550
+ display: flex;
1551
+ justify-content: space-between;
1552
+ align-items: center;
1553
+ padding: 8px 12px;
1554
+ cursor: pointer;
1555
+ user-select: none;
1556
+ }
1557
+ .think-header:hover {
1558
+ background: rgba(139, 92, 246, 0.05);
1559
+ }
1560
+ .think-title {
1561
+ display: flex;
1562
+ align-items: center;
1563
+ gap: 6px;
1564
+ font-weight: 500;
1565
+ color: rgba(139, 92, 246, 0.7);
1566
+ font-size: 13px;
1567
+ }
1568
+ .think-icon {
1569
+ font-size: 14px;
1570
+ display: inline-block;
1571
+ }
1572
+ .think-icon.thinking-animation {
1573
+ animation: think-pulse 1.5s ease-in-out infinite;
1574
+ }
1575
+ @keyframes think-pulse {
1576
+ 0%, 100% {
1577
+ transform: scale(1);
1578
+ opacity: 1;
1579
+ }
1580
+ 50% {
1581
+ transform: scale(1.1);
1582
+ opacity: 0.7;
1583
+ }
1584
+ }
1585
+ .think-text {
1586
+ flex: 1;
1587
+ }
1588
+ .thinking-dots {
1589
+ display: inline-flex;
1590
+ margin-left: 2px;
1591
+ }
1592
+ .thinking-dots span {
1593
+ animation: dot-bounce 1.4s ease-in-out infinite;
1594
+ opacity: 0;
1595
+ }
1596
+ .thinking-dots span:nth-child(1) {
1597
+ animation-delay: 0s;
1598
+ }
1599
+ .thinking-dots span:nth-child(2) {
1600
+ animation-delay: 0.2s;
1601
+ }
1602
+ .thinking-dots span:nth-child(3) {
1603
+ animation-delay: 0.4s;
1604
+ }
1605
+ @keyframes dot-bounce {
1606
+ 0%, 60%, 100% {
1607
+ opacity: 0;
1608
+ }
1609
+ 30% {
1610
+ opacity: 1;
1611
+ }
1612
+ }
1613
+ .think-chunk.thinking {
1614
+ border-color: rgba(139, 92, 246, 0.18);
1615
+ }
1616
+ .think-chunk.thinking .think-header {
1617
+ background: rgba(139, 92, 246, 0.02);
1618
+ }
1619
+ .collapse-arrow {
1620
+ color: var(--color-text-secondary);
1621
+ transition: transform 0.2s ease;
1622
+ font-size: 10px;
1623
+ }
1624
+ .collapse-arrow.expanded {
1625
+ transform: rotate(180deg);
1626
+ }
1627
+ .think-preview {
1628
+ overflow: hidden;
1629
+ color: var(--color-text-secondary);
1630
+ font-size: 13px;
1631
+ line-height: 1.6;
1632
+ background: var(--color-bg-primary);
1633
+ transition:
1634
+ max-height 0.4s ease,
1635
+ opacity 0.4s ease,
1636
+ padding 0.4s ease;
1637
+ mask-image:
1638
+ linear-gradient(
1639
+ to bottom,
1640
+ transparent 0%,
1641
+ black 20%,
1642
+ black 100%);
1643
+ -webkit-mask-image:
1644
+ linear-gradient(
1645
+ to bottom,
1646
+ transparent 0%,
1647
+ black 20%,
1648
+ black 100%);
1649
+ }
1650
+ .think-preview.think-preview-open {
1651
+ max-height: 100px;
1652
+ opacity: 1;
1653
+ padding: 8px 12px;
1654
+ border-top: 1px solid rgba(139, 92, 246, 0.1);
1655
+ }
1656
+ .think-preview.think-preview-closed {
1657
+ max-height: 0;
1658
+ opacity: 0;
1659
+ padding: 0 12px;
1660
+ border-top: 1px solid transparent;
1661
+ }
1662
+ .think-content {
1663
+ padding: 12px;
1664
+ border-top: 1px solid var(--color-primary);
1665
+ color: var(--color-text-secondary);
1666
+ font-size: 13px;
1667
+ line-height: 1.6;
1668
+ background: var(--color-bg-primary);
1669
+ }
1670
+ .artifact-card {
1671
+ display: flex;
1672
+ align-items: center;
1673
+ gap: 12px;
1674
+ padding: 12px 16px;
1675
+ background: var(--color-bg-secondary);
1676
+ border: 1px solid var(--color-border);
1677
+ border-radius: var(--radius);
1678
+ cursor: pointer;
1679
+ transition: all 0.2s ease;
1680
+ }
1681
+ .artifact-card:hover {
1682
+ background: var(--color-bg-tertiary);
1683
+ box-shadow: var(--shadow);
1684
+ }
1685
+ .artifact-icon {
1686
+ font-size: 24px;
1687
+ }
1688
+ .artifact-info {
1689
+ flex: 1;
1690
+ }
1691
+ .artifact-name {
1692
+ font-weight: 500;
1693
+ color: var(--color-text-primary);
1694
+ margin-bottom: 2px;
1695
+ }
1696
+ .artifact-meta {
1697
+ font-size: 12px;
1698
+ color: var(--color-text-secondary);
1699
+ }
1700
+ .artifact-size {
1701
+ font-size: 12px;
1702
+ color: var(--color-text-secondary);
1703
+ }
1704
+ .artifact-list {
1705
+ display: flex;
1706
+ flex-direction: column;
1707
+ gap: 8px;
1708
+ }
1709
+ .tool-execution {
1710
+ display: flex;
1711
+ align-items: center;
1712
+ gap: 8px;
1713
+ padding: 8px 12px;
1714
+ background: var(--color-bg-tertiary);
1715
+ border-radius: var(--radius);
1716
+ color: var(--color-text-secondary);
1717
+ font-size: 13px;
1718
+ min-width: 0;
1719
+ overflow: hidden;
1720
+ }
1721
+ .tool-icon {
1722
+ font-size: 14px;
1723
+ }
1724
+ .tool-text {
1725
+ font-weight: 500;
1726
+ flex: 1;
1727
+ }
1728
+ .tool-status {
1729
+ font-size: 11px;
1730
+ padding: 2px 6px;
1731
+ border-radius: 4px;
1732
+ background: rgba(0, 0, 0, 0.05);
1733
+ }
1734
+ .tool-execution.tool-running {
1735
+ background: rgba(59, 130, 246, 0.08);
1736
+ border-left: 3px solid rgba(59, 130, 246, 0.5);
1737
+ }
1738
+ .tool-execution.tool-running .tool-icon {
1739
+ animation: tool-spin 1s linear infinite;
1740
+ }
1741
+ @keyframes tool-spin {
1742
+ from {
1743
+ transform: rotate(0deg);
1744
+ }
1745
+ to {
1746
+ transform: rotate(360deg);
1747
+ }
1748
+ }
1749
+ .tool-execution.tool-success {
1750
+ background: rgba(34, 197, 94, 0.08);
1751
+ border-left: 3px solid rgba(34, 197, 94, 0.5);
1752
+ }
1753
+ .tool-execution.tool-success .tool-status {
1754
+ background: rgba(34, 197, 94, 0.15);
1755
+ color: rgb(22, 163, 74);
1756
+ }
1757
+ .tool-execution.tool-error {
1758
+ background: rgba(239, 68, 68, 0.08);
1759
+ border-left: 3px solid rgba(239, 68, 68, 0.5);
1760
+ }
1761
+ .tool-execution.tool-error .tool-status {
1762
+ background: rgba(239, 68, 68, 0.15);
1763
+ color: rgb(220, 38, 38);
1764
+ }
1765
+ .hitl-wait-card {
1766
+ display: flex;
1767
+ align-items: center;
1768
+ gap: 12px;
1769
+ padding: 14px 16px;
1770
+ background:
1771
+ linear-gradient(
1772
+ 135deg,
1773
+ rgba(251, 191, 36, 0.08) 0%,
1774
+ rgba(245, 158, 11, 0.05) 100%);
1775
+ border: 1px solid rgba(251, 191, 36, 0.3);
1776
+ border-radius: var(--radius);
1777
+ }
1778
+ .hitl-icon {
1779
+ font-size: 20px;
1780
+ animation: hitl-pulse 2s ease-in-out infinite;
1781
+ }
1782
+ @keyframes hitl-pulse {
1783
+ 0%, 100% {
1784
+ transform: scale(1);
1785
+ opacity: 1;
1786
+ }
1787
+ 50% {
1788
+ transform: scale(1.1);
1789
+ opacity: 0.7;
1790
+ }
1791
+ }
1792
+ .hitl-content {
1793
+ flex: 1;
1794
+ }
1795
+ .hitl-text {
1796
+ font-weight: 500;
1797
+ color: var(--color-text-primary);
1798
+ font-size: 14px;
1799
+ }
1800
+ .hitl-uuid {
1801
+ font-size: 11px;
1802
+ color: var(--color-text-secondary);
1803
+ margin-top: 4px;
1804
+ font-family: monospace;
1805
+ }
1806
+ .hitl-form-card {
1807
+ background:
1808
+ linear-gradient(
1809
+ 135deg,
1810
+ rgba(99, 102, 241, 0.08) 0%,
1811
+ rgba(139, 92, 246, 0.05) 100%);
1812
+ border: 1px solid rgba(99, 102, 241, 0.3);
1813
+ border-radius: var(--radius);
1814
+ overflow: hidden;
1815
+ }
1816
+ .hitl-form-header {
1817
+ display: flex;
1818
+ align-items: center;
1819
+ gap: 8px;
1820
+ padding: 12px 16px;
1821
+ background: rgba(99, 102, 241, 0.1);
1822
+ border-bottom: 1px solid rgba(99, 102, 241, 0.2);
1823
+ }
1824
+ .hitl-form-icon {
1825
+ font-size: 18px;
1826
+ }
1827
+ .hitl-form-title {
1828
+ font-weight: 600;
1829
+ font-size: 14px;
1830
+ color: var(--color-text-primary);
1831
+ }
1832
+ .hitl-form-body {
1833
+ padding: 0;
1834
+ }
1835
+
1836
+ /* src/components/ChildAgentCard.css */
1837
+ .child-agent-card {
1838
+ background: var(--color-bg-tertiary);
1839
+ border: 1px solid var(--color-border);
1840
+ border-left: 3px solid var(--color-primary);
1841
+ border-radius: var(--radius);
1842
+ overflow: hidden;
1843
+ width: 100%;
1844
+ min-width: 0;
1845
+ box-sizing: border-box;
1846
+ }
1847
+ .child-agent-header {
1848
+ display: flex;
1849
+ justify-content: space-between;
1850
+ align-items: center;
1851
+ padding: 10px 12px;
1852
+ cursor: pointer;
1853
+ user-select: none;
1854
+ background: var(--color-bg-secondary);
1855
+ border-bottom: 1px solid transparent;
1856
+ min-width: 0;
1857
+ }
1858
+ .child-agent-card.expanded .child-agent-header {
1859
+ border-bottom-color: var(--color-border);
1860
+ }
1861
+ .child-agent-header:hover {
1862
+ background: var(--color-bg-tertiary);
1863
+ }
1864
+ .child-agent-title {
1865
+ display: flex;
1866
+ align-items: center;
1867
+ gap: 8px;
1868
+ min-width: 0;
1869
+ overflow: hidden;
1870
+ }
1871
+ .agent-icon {
1872
+ font-size: 16px;
1873
+ }
1874
+ .child-agent-card .card-title {
1875
+ font-weight: 500;
1876
+ color: var(--color-text-primary);
1877
+ overflow: hidden;
1878
+ text-overflow: ellipsis;
1879
+ white-space: nowrap;
1880
+ }
1881
+ .child-agent-status {
1882
+ display: flex;
1883
+ align-items: center;
1884
+ gap: 8px;
1885
+ }
1886
+ .child-agent-status .status-badge {
1887
+ display: flex;
1888
+ align-items: center;
1889
+ gap: 4px;
1890
+ font-size: 11px;
1891
+ padding: 2px 6px;
1892
+ }
1893
+ .status-icon {
1894
+ display: inline-block;
1895
+ }
1896
+ .status-icon.spinning {
1897
+ animation: spin 1.5s linear infinite;
1898
+ }
1899
+ @keyframes spin {
1900
+ from {
1901
+ transform: rotate(0deg);
1902
+ }
1903
+ to {
1904
+ transform: rotate(360deg);
1905
+ }
1906
+ }
1907
+ .child-agent-content {
1908
+ overflow-y: auto;
1909
+ overflow-x: hidden;
1910
+ background: var(--color-bg-primary);
1911
+ }
1912
+ .child-agent-inner {
1913
+ padding: 12px;
1914
+ display: flex;
1915
+ flex-direction: column;
1916
+ gap: 8px;
1917
+ min-width: 0;
1918
+ overflow: hidden;
1919
+ word-break: break-word;
1920
+ }
1921
+ .child-agent-content::-webkit-scrollbar {
1922
+ width: 6px;
1923
+ }
1924
+ .child-agent-content::-webkit-scrollbar-track {
1925
+ background: var(--color-bg-secondary);
1926
+ }
1927
+ .child-agent-content::-webkit-scrollbar-thumb {
1928
+ background: var(--color-border);
1929
+ border-radius: 3px;
1930
+ }
1931
+ .child-agent-content::-webkit-scrollbar-thumb:hover {
1932
+ background: var(--color-text-secondary);
1933
+ }
1934
+ .child-agent-footer {
1935
+ display: flex;
1936
+ align-items: center;
1937
+ justify-content: flex-end;
1938
+ gap: 4px;
1939
+ padding: 6px 12px;
1940
+ background: var(--color-bg-secondary);
1941
+ border-top: 1px solid var(--color-border);
1942
+ }
1943
+ .footer-agent-icon {
1944
+ font-size: 12px;
1945
+ opacity: 0.6;
1946
+ }
1947
+ .footer-agent-name {
1948
+ font-size: 11px;
1949
+ color: rgba(139, 92, 246, 0.6);
1950
+ font-weight: 500;
1951
+ }
1952
+
1953
+ /* src/ChatWidget.css */
1954
+ .chat-widget {
1955
+ --color-primary: #8b5cf6;
1956
+ --color-primary-bg: #f5f3ff;
1957
+ --color-success: #52c41a;
1958
+ --color-warning: #faad14;
1959
+ --color-error: #ff4d4f;
1960
+ --color-text-primary: #1f2937;
1961
+ --color-text-secondary: #6b7280;
1962
+ --color-border: #e5e7eb;
1963
+ --color-bg-primary: #ffffff;
1964
+ --color-bg-secondary: #f9fafb;
1965
+ --color-bg-tertiary: #f3f4f6;
1966
+ --radius: 8px;
1967
+ --shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
1968
+ }
1969
+ .chat-widget.dark {
1970
+ --color-primary: #a78bfa;
1971
+ --color-primary-bg: #1e1b4b;
1972
+ --color-success: #73d13d;
1973
+ --color-warning: #ffc53d;
1974
+ --color-error: #ff7875;
1975
+ --color-text-primary: #f9fafb;
1976
+ --color-text-secondary: #9ca3af;
1977
+ --color-border: #374151;
1978
+ --color-bg-primary: #111827;
1979
+ --color-bg-secondary: #1f2937;
1980
+ --color-bg-tertiary: #374151;
1981
+ }
1982
+ .chat-widget {
1983
+ display: flex;
1984
+ flex-direction: column;
1985
+ background: var(--color-bg-primary);
1986
+ border: 1px solid var(--color-border);
1987
+ border-radius: var(--radius);
1988
+ overflow: hidden;
1989
+ min-width: 0;
1990
+ font-family:
1991
+ -apple-system,
1992
+ BlinkMacSystemFont,
1993
+ "Segoe UI",
1994
+ Roboto,
1995
+ "Helvetica Neue",
1996
+ Arial,
1997
+ sans-serif;
1998
+ font-size: 14px;
1999
+ color: var(--color-text-primary);
2000
+ }
2001
+ .chat-header {
2002
+ display: flex;
2003
+ justify-content: space-between;
2004
+ align-items: center;
2005
+ padding: 12px 16px;
2006
+ background: var(--color-bg-secondary);
2007
+ border-bottom: 1px solid var(--color-border);
2008
+ flex-shrink: 0;
2009
+ position: relative;
2010
+ }
2011
+ .chat-header-title {
2012
+ display: flex;
2013
+ align-items: center;
2014
+ gap: 8px;
2015
+ font-size: 16px;
2016
+ font-weight: 600;
2017
+ }
2018
+ .header-icon {
2019
+ font-size: 20px;
2020
+ }
2021
+ .session-title {
2022
+ position: absolute;
2023
+ left: 50%;
2024
+ transform: translateX(-50%);
2025
+ max-width: 60%;
2026
+ overflow: hidden;
2027
+ text-overflow: ellipsis;
2028
+ white-space: nowrap;
2029
+ font-size: 14px;
2030
+ color: var(--color-text-secondary);
2031
+ font-weight: 500;
2032
+ opacity: 0;
2033
+ animation: title-fade-in 0.3s ease-out forwards;
2034
+ }
2035
+ .session-title.animating .session-title-text {
2036
+ border-right: none;
2037
+ }
2038
+ .session-title-text {
2039
+ display: inline;
2040
+ }
2041
+ .title-cursor {
2042
+ display: inline-block;
2043
+ margin-left: 1px;
2044
+ color: var(--color-primary);
2045
+ animation: title-cursor-blink 0.8s ease-in-out infinite;
2046
+ }
2047
+ @keyframes title-fade-in {
2048
+ from {
2049
+ opacity: 0;
2050
+ transform: translateX(-50%) translateY(-5px);
2051
+ }
2052
+ to {
2053
+ opacity: 1;
2054
+ transform: translateX(-50%) translateY(0);
2055
+ }
2056
+ }
2057
+ @keyframes title-cursor-blink {
2058
+ 0%, 100% {
2059
+ opacity: 1;
2060
+ }
2061
+ 50% {
2062
+ opacity: 0;
2063
+ }
2064
+ }
2065
+ .status-badge {
2066
+ display: inline-flex;
2067
+ align-items: center;
2068
+ gap: 4px;
2069
+ padding: 4px 8px;
2070
+ border-radius: 4px;
2071
+ font-size: 12px;
2072
+ font-weight: 500;
2073
+ }
2074
+ .status-badge.status-running {
2075
+ background: var(--color-primary-bg);
2076
+ color: var(--color-primary);
2077
+ }
2078
+ .status-badge.status-completed {
2079
+ background: rgba(82, 196, 26, 0.1);
2080
+ color: var(--color-success);
2081
+ }
2082
+ .status-badge.status-error {
2083
+ background: rgba(255, 77, 79, 0.1);
2084
+ color: var(--color-error);
2085
+ }
2086
+ .status-icon {
2087
+ animation: spin 1s linear infinite;
2088
+ }
2089
+ .status-badge.status-completed .status-icon,
2090
+ .status-badge.status-error .status-icon {
2091
+ animation: none;
2092
+ }
2093
+ @keyframes spin {
2094
+ from {
2095
+ transform: rotate(0deg);
2096
+ }
2097
+ to {
2098
+ transform: rotate(360deg);
2099
+ }
2100
+ }
2101
+ .message-list-container {
2102
+ flex: 1;
2103
+ display: flex;
2104
+ flex-direction: column;
2105
+ overflow: hidden;
2106
+ }
2107
+ .message-list {
2108
+ flex: 1;
2109
+ overflow-y: auto;
2110
+ overflow-x: hidden;
2111
+ padding: 16px;
2112
+ display: flex;
2113
+ flex-direction: column;
2114
+ gap: 12px;
2115
+ position: relative;
2116
+ min-width: 0;
2117
+ }
2118
+ .clear-screen-spacer {
2119
+ flex-shrink: 0;
2120
+ transition: height 0.15s ease-out;
2121
+ }
2122
+ .clear-screen-spacer.spacer-collapsed {
2123
+ display: none;
2124
+ }
2125
+ .round-container {
2126
+ display: flex;
2127
+ flex-direction: column;
2128
+ gap: 12px;
2129
+ min-width: 0;
2130
+ }
2131
+ .round-separator {
2132
+ display: flex;
2133
+ align-items: center;
2134
+ gap: 12px;
2135
+ margin: 8px 0;
2136
+ color: var(--color-text-secondary);
2137
+ font-size: 12px;
2138
+ }
2139
+ .round-separator::before,
2140
+ .round-separator::after {
2141
+ content: "";
2142
+ flex: 1;
2143
+ height: 1px;
2144
+ background: var(--color-border);
2145
+ }
2146
+ .empty-state {
2147
+ display: flex;
2148
+ flex-direction: column;
2149
+ align-items: center;
2150
+ justify-content: center;
2151
+ flex: 1;
2152
+ gap: 12px;
2153
+ color: var(--color-text-secondary);
2154
+ }
2155
+ .empty-icon {
2156
+ font-size: 48px;
2157
+ opacity: 0.5;
2158
+ }
2159
+ .empty-text {
2160
+ font-size: 14px;
2161
+ }
2162
+ .chat-footer {
2163
+ padding: 8px 16px;
2164
+ font-size: 12px;
2165
+ color: var(--color-text-secondary);
2166
+ background: var(--color-bg-secondary);
2167
+ border-top: 1px solid var(--color-border);
2168
+ flex-shrink: 0;
2169
+ }
2170
+ .streaming-cursor {
2171
+ display: inline-block;
2172
+ width: 2px;
2173
+ height: 1.2em;
2174
+ background: var(--color-primary);
2175
+ animation: cursor-blink 1s ease-in-out infinite;
2176
+ margin-left: 2px;
2177
+ vertical-align: text-bottom;
2178
+ }
2179
+ @keyframes cursor-blink {
2180
+ 0%, 100% {
2181
+ opacity: 1;
2182
+ }
2183
+ 50% {
2184
+ opacity: 0;
2185
+ }
2186
+ }
2187
+ .artifact-viewer-overlay {
2188
+ position: absolute;
2189
+ inset: 0;
2190
+ background: rgba(0, 0, 0, 0.4);
2191
+ z-index: 100;
2192
+ display: flex;
2193
+ align-items: center;
2194
+ justify-content: center;
2195
+ backdrop-filter: blur(2px);
2196
+ }
2197
+ .artifact-viewer-panel {
2198
+ width: 90%;
2199
+ max-width: 720px;
2200
+ max-height: 85%;
2201
+ background: var(--color-bg-primary);
2202
+ border: 1px solid var(--color-border);
2203
+ border-radius: var(--radius);
2204
+ display: flex;
2205
+ flex-direction: column;
2206
+ overflow: hidden;
2207
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.16);
2208
+ }
2209
+ .artifact-viewer-header {
2210
+ display: flex;
2211
+ align-items: center;
2212
+ justify-content: space-between;
2213
+ padding: 12px 16px;
2214
+ border-bottom: 1px solid var(--color-border);
2215
+ flex-shrink: 0;
2216
+ }
2217
+ .artifact-viewer-title {
2218
+ display: flex;
2219
+ align-items: center;
2220
+ gap: 8px;
2221
+ font-weight: 600;
2222
+ font-size: 14px;
2223
+ min-width: 0;
2224
+ overflow: hidden;
2225
+ text-overflow: ellipsis;
2226
+ white-space: nowrap;
2227
+ }
2228
+ .artifact-viewer-icon {
2229
+ font-size: 18px;
2230
+ flex-shrink: 0;
2231
+ }
2232
+ .artifact-viewer-close {
2233
+ background: none;
2234
+ border: none;
2235
+ font-size: 16px;
2236
+ cursor: pointer;
2237
+ color: var(--color-text-secondary);
2238
+ padding: 4px 8px;
2239
+ border-radius: 4px;
2240
+ flex-shrink: 0;
2241
+ }
2242
+ .artifact-viewer-close:hover {
2243
+ background: var(--color-bg-tertiary);
2244
+ color: var(--color-text-primary);
2245
+ }
2246
+ .artifact-viewer-meta {
2247
+ display: flex;
2248
+ align-items: center;
2249
+ gap: 12px;
2250
+ padding: 8px 16px;
2251
+ font-size: 12px;
2252
+ color: var(--color-text-secondary);
2253
+ border-bottom: 1px solid var(--color-border);
2254
+ flex-shrink: 0;
2255
+ }
2256
+ .artifact-viewer-path {
2257
+ overflow: hidden;
2258
+ text-overflow: ellipsis;
2259
+ white-space: nowrap;
2260
+ opacity: 0.7;
2261
+ }
2262
+ .artifact-viewer-body {
2263
+ flex: 1;
2264
+ overflow: auto;
2265
+ padding: 0;
2266
+ min-height: 120px;
2267
+ }
2268
+ .artifact-viewer-loading {
2269
+ display: flex;
2270
+ align-items: center;
2271
+ justify-content: center;
2272
+ gap: 8px;
2273
+ padding: 48px 16px;
2274
+ color: var(--color-text-secondary);
2275
+ }
2276
+ .artifact-viewer-error {
2277
+ padding: 24px 16px;
2278
+ color: var(--color-error);
2279
+ text-align: center;
2280
+ }
2281
+ .artifact-viewer-content {
2282
+ margin: 0;
2283
+ padding: 16px;
2284
+ font-family:
2285
+ "SF Mono",
2286
+ "Fira Code",
2287
+ "Consolas",
2288
+ monospace;
2289
+ font-size: 13px;
2290
+ line-height: 1.6;
2291
+ white-space: pre-wrap;
2292
+ word-break: break-word;
2293
+ color: var(--color-text-primary);
2294
+ background: transparent;
2295
+ }
2296
+ .artifact-viewer-binary {
2297
+ padding: 48px 16px;
2298
+ text-align: center;
2299
+ color: var(--color-text-secondary);
2300
+ }
2301
+ /*# sourceMappingURL=index.css.map */