@hef2024/llmasaservice-ui 0.16.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1354 @@
1
+ /* --------------------------------------------------------
2
+ AI AGENT PANEL CSS
3
+ Version: 1.0.0
4
+ Cursor-inspired multi-agent panel with full theming
5
+ -------------------------------------------------------- */
6
+
7
+ /* --------------------------------------------------------
8
+ CSS Variables - Light Theme (Default)
9
+ -------------------------------------------------------- */
10
+ :root {
11
+ /* Panel Structure */
12
+ --ai-panel-width: 720px;
13
+ --ai-panel-min-width: 520px;
14
+ --ai-panel-max-width: 1200px;
15
+ --ai-panel-collapsed-width: 48px;
16
+ --ai-panel-border-radius: 0;
17
+ --ai-panel-transition: 0.2s ease;
18
+
19
+ /* Sidebar Colors */
20
+ --ai-sidebar-bg: #f8f9fa;
21
+ --ai-sidebar-border: #e5e7eb;
22
+ --ai-sidebar-text: #374151;
23
+ --ai-sidebar-text-muted: #6b7280;
24
+ --ai-sidebar-hover: #f3f4f6;
25
+ --ai-sidebar-active: #e5e7eb;
26
+
27
+ /* Header */
28
+ --ai-header-bg: #ffffff;
29
+ --ai-header-border: #e5e7eb;
30
+ --ai-header-height: 52px;
31
+
32
+ /* Agent Selector */
33
+ --ai-agent-badge-bg: #dbeafe;
34
+ --ai-agent-badge-text: #1d4ed8;
35
+ --ai-agent-selector-bg: #ffffff;
36
+ --ai-agent-selector-border: #e5e7eb;
37
+
38
+ /* Conversation List */
39
+ --ai-conversation-bg: transparent;
40
+ --ai-conversation-hover: rgba(0, 0, 0, 0.04);
41
+ --ai-conversation-active: rgba(0, 0, 0, 0.08);
42
+ --ai-conversation-title-color: #1f2937;
43
+ --ai-conversation-preview-color: #6b7280;
44
+ --ai-conversation-meta-color: #9ca3af;
45
+
46
+ /* Group Labels */
47
+ --ai-group-label-color: #9ca3af;
48
+ --ai-group-label-size: 0.75rem;
49
+
50
+ /* Buttons */
51
+ --ai-button-primary-bg: #3b82f6;
52
+ --ai-button-primary-text: #ffffff;
53
+ --ai-button-primary-hover: #2563eb;
54
+ --ai-button-secondary-bg: #f3f4f6;
55
+ --ai-button-secondary-text: #374151;
56
+ --ai-button-secondary-border: #d1d5db;
57
+ --ai-button-secondary-hover: #e5e7eb;
58
+ --ai-button-ghost-hover: rgba(0, 0, 0, 0.06);
59
+ --ai-button-destructive-bg: #ef4444;
60
+ --ai-button-destructive-text: #ffffff;
61
+ --ai-button-destructive-hover: #dc2626;
62
+ --ai-button-radius: 6px;
63
+
64
+ /* Input */
65
+ --ai-input-bg: #ffffff;
66
+ --ai-input-border: #d1d5db;
67
+ --ai-input-text: #1f2937;
68
+ --ai-input-placeholder: #9ca3af;
69
+ --ai-input-focus-border: #3b82f6;
70
+ --ai-input-focus-ring: rgba(59, 130, 246, 0.2);
71
+ --ai-input-radius: 6px;
72
+
73
+ /* Select */
74
+ --ai-select-bg: #ffffff;
75
+ --ai-select-border: #d1d5db;
76
+ --ai-select-text: #1f2937;
77
+ --ai-select-hover: #f9fafb;
78
+ --ai-select-item-hover: #f3f4f6;
79
+ --ai-select-item-selected: #eff6ff;
80
+
81
+ /* Tooltip */
82
+ --ai-tooltip-bg: #1f2937;
83
+ --ai-tooltip-text: #ffffff;
84
+ --ai-tooltip-radius: 4px;
85
+
86
+ /* Dialog */
87
+ --ai-dialog-bg: #ffffff;
88
+ --ai-dialog-border: #e5e7eb;
89
+ --ai-dialog-overlay: rgba(0, 0, 0, 0.5);
90
+ --ai-dialog-title-color: #1f2937;
91
+ --ai-dialog-description-color: #6b7280;
92
+ --ai-dialog-radius: 8px;
93
+
94
+ /* Scrollbar */
95
+ --ai-scrollbar-track: transparent;
96
+ --ai-scrollbar-thumb: #d1d5db;
97
+ --ai-scrollbar-thumb-hover: #9ca3af;
98
+ --ai-scrollbar-width: 6px;
99
+
100
+ /* Context Summary */
101
+ --ai-context-bg: #f9fafb;
102
+ --ai-context-border: #e5e7eb;
103
+ --ai-context-text: #6b7280;
104
+ --ai-context-warning: #f59e0b;
105
+
106
+ /* Loading */
107
+ --ai-loading-spinner: #3b82f6;
108
+
109
+ /* Resize Handle */
110
+ --ai-resize-handle-width: 4px;
111
+ --ai-resize-handle-color: transparent;
112
+ --ai-resize-handle-hover: #3b82f6;
113
+
114
+ /* Chat Area */
115
+ --ai-chat-bg: #ffffff;
116
+ }
117
+
118
+ /* --------------------------------------------------------
119
+ CSS Variables - Dark Theme
120
+ -------------------------------------------------------- */
121
+ .dark-theme {
122
+ --ai-sidebar-bg: #1f2937;
123
+ --ai-sidebar-border: #374151;
124
+ --ai-sidebar-text: #f3f4f6;
125
+ --ai-sidebar-text-muted: #9ca3af;
126
+ --ai-sidebar-hover: #374151;
127
+ --ai-sidebar-active: #4b5563;
128
+
129
+ --ai-header-bg: #111827;
130
+ --ai-header-border: #374151;
131
+
132
+ --ai-agent-badge-bg: #1e3a5f;
133
+ --ai-agent-badge-text: #60a5fa;
134
+ --ai-agent-selector-bg: #1f2937;
135
+ --ai-agent-selector-border: #374151;
136
+
137
+ --ai-conversation-hover: rgba(255, 255, 255, 0.04);
138
+ --ai-conversation-active: rgba(255, 255, 255, 0.08);
139
+ --ai-conversation-title-color: #f3f4f6;
140
+ --ai-conversation-preview-color: #9ca3af;
141
+ --ai-conversation-meta-color: #6b7280;
142
+
143
+ --ai-group-label-color: #6b7280;
144
+
145
+ --ai-button-primary-bg: #3b82f6;
146
+ --ai-button-primary-text: #ffffff;
147
+ --ai-button-primary-hover: #60a5fa;
148
+ --ai-button-secondary-bg: #374151;
149
+ --ai-button-secondary-text: #f3f4f6;
150
+ --ai-button-secondary-border: #4b5563;
151
+ --ai-button-secondary-hover: #4b5563;
152
+ --ai-button-ghost-hover: rgba(255, 255, 255, 0.08);
153
+
154
+ --ai-input-bg: #1f2937;
155
+ --ai-input-border: #374151;
156
+ --ai-input-text: #f3f4f6;
157
+ --ai-input-placeholder: #6b7280;
158
+ --ai-input-focus-border: #3b82f6;
159
+ --ai-input-focus-ring: rgba(59, 130, 246, 0.3);
160
+
161
+ --ai-select-bg: #1f2937;
162
+ --ai-select-border: #374151;
163
+ --ai-select-text: #f3f4f6;
164
+ --ai-select-hover: #374151;
165
+ --ai-select-item-hover: #374151;
166
+ --ai-select-item-selected: #1e3a5f;
167
+
168
+ --ai-tooltip-bg: #374151;
169
+ --ai-tooltip-text: #f3f4f6;
170
+
171
+ --ai-dialog-bg: #1f2937;
172
+ --ai-dialog-border: #374151;
173
+ --ai-dialog-overlay: rgba(0, 0, 0, 0.7);
174
+ --ai-dialog-title-color: #f3f4f6;
175
+ --ai-dialog-description-color: #9ca3af;
176
+
177
+ --ai-scrollbar-thumb: #4b5563;
178
+ --ai-scrollbar-thumb-hover: #6b7280;
179
+
180
+ --ai-context-bg: #111827;
181
+ --ai-context-border: #374151;
182
+ --ai-context-text: #9ca3af;
183
+
184
+ --ai-chat-bg: #111827;
185
+ }
186
+
187
+ /* --------------------------------------------------------
188
+ Base Panel Styles
189
+ -------------------------------------------------------- */
190
+ .ai-agent-panel {
191
+ display: flex;
192
+ flex-direction: row;
193
+ /* Fill parent height - works in flex containers */
194
+ align-self: stretch;
195
+ height: 100%;
196
+ max-height: 100%;
197
+ background-color: var(--ai-sidebar-bg);
198
+ border-left: 1px solid var(--ai-sidebar-border);
199
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
200
+ font-size: 14px;
201
+ position: relative;
202
+ transition: width var(--ai-panel-transition);
203
+ box-sizing: border-box;
204
+ overflow: hidden;
205
+ }
206
+
207
+ .ai-agent-panel--left {
208
+ border-left: none;
209
+ border-right: 1px solid var(--ai-sidebar-border);
210
+ }
211
+
212
+ /* Sidebar position - left (default) */
213
+ .ai-agent-panel--sidebar-left {
214
+ flex-direction: row;
215
+ }
216
+
217
+ .ai-agent-panel--sidebar-left .ai-agent-panel__sidebar {
218
+ order: 1;
219
+ border-right: 1px solid var(--ai-sidebar-border);
220
+ border-left: none;
221
+ }
222
+
223
+ .ai-agent-panel--sidebar-left .ai-agent-panel__chat {
224
+ order: 2;
225
+ }
226
+
227
+ /* Sidebar position - right */
228
+ .ai-agent-panel--sidebar-right {
229
+ flex-direction: row;
230
+ }
231
+
232
+ .ai-agent-panel--sidebar-right .ai-agent-panel__sidebar {
233
+ order: 2;
234
+ border-left: 1px solid var(--ai-sidebar-border);
235
+ border-right: none;
236
+ }
237
+
238
+ .ai-agent-panel--sidebar-right .ai-agent-panel__chat {
239
+ order: 1;
240
+ }
241
+
242
+ .ai-agent-panel--collapsed {
243
+ width: var(--ai-panel-collapsed-width) !important;
244
+ }
245
+
246
+ /* --------------------------------------------------------
247
+ Resize Handle
248
+ -------------------------------------------------------- */
249
+ .ai-agent-panel__resize-handle {
250
+ width: var(--ai-resize-handle-width);
251
+ min-width: var(--ai-resize-handle-width);
252
+ align-self: stretch;
253
+ background-color: var(--ai-resize-handle-color);
254
+ cursor: ew-resize;
255
+ transition: background-color 0.15s;
256
+ z-index: 100;
257
+ flex-shrink: 0;
258
+ order: 0;
259
+ }
260
+
261
+ .ai-agent-panel__resize-handle:hover {
262
+ background-color: var(--ai-resize-handle-hover);
263
+ }
264
+
265
+ .ai-agent-panel__resize-handle:active {
266
+ background-color: var(--ai-resize-handle-hover);
267
+ }
268
+
269
+ /* Subtle hint on parent hover to show resize is available */
270
+ .ai-agent-panel:hover .ai-agent-panel__resize-handle {
271
+ background-color: rgba(100, 100, 100, 0.15);
272
+ }
273
+
274
+ /* Position resize handle based on panel position */
275
+ .ai-agent-panel--right .ai-agent-panel__resize-handle {
276
+ order: -1 !important;
277
+ }
278
+
279
+ .ai-agent-panel--left .ai-agent-panel__resize-handle {
280
+ order: 99 !important;
281
+ }
282
+
283
+
284
+ /* --------------------------------------------------------
285
+ Collapsed Bar
286
+ -------------------------------------------------------- */
287
+ .ai-agent-panel__collapsed-bar {
288
+ display: flex;
289
+ flex-direction: column;
290
+ align-items: center;
291
+ padding: 8px;
292
+ gap: 4px;
293
+ width: 100%;
294
+ height: 100%;
295
+ cursor: pointer;
296
+ transition: background-color 0.15s, box-shadow 0.15s;
297
+ }
298
+
299
+ .ai-agent-panel__collapsed-bar:hover {
300
+ background-color: var(--ai-sidebar-hover);
301
+ box-shadow: inset 2px 0 0 var(--ai-button-primary-bg);
302
+ }
303
+
304
+ .ai-agent-panel--left .ai-agent-panel__collapsed-bar:hover {
305
+ box-shadow: inset -2px 0 0 var(--ai-button-primary-bg);
306
+ }
307
+
308
+ .ai-agent-panel__collapsed-divider {
309
+ width: 24px;
310
+ height: 1px;
311
+ background-color: var(--ai-sidebar-border);
312
+ margin: 4px 0;
313
+ }
314
+
315
+ .ai-agent-panel__collapsed-spacer {
316
+ flex: 1;
317
+ }
318
+
319
+ .ai-agent-panel__agent-icon {
320
+ font-weight: 600;
321
+ font-size: 12px;
322
+ }
323
+
324
+ .ai-agent-panel__agent-avatar {
325
+ width: 24px;
326
+ height: 24px;
327
+ border-radius: 50%;
328
+ object-fit: cover;
329
+ }
330
+
331
+ /* Agent icon with active conversation indicator */
332
+ .ai-agent-panel__agent-icon {
333
+ position: relative;
334
+ }
335
+
336
+ .ai-agent-panel__agent-icon--active {
337
+ /* Subtle ring to indicate active conversation */
338
+ }
339
+
340
+ .ai-agent-panel__agent-active-indicator {
341
+ position: absolute;
342
+ bottom: 2px;
343
+ right: 2px;
344
+ width: 8px;
345
+ height: 8px;
346
+ border-radius: 50%;
347
+ background-color: var(--ai-button-primary-bg);
348
+ border: 2px solid var(--ai-sidebar-bg);
349
+ }
350
+
351
+ /* --------------------------------------------------------
352
+ Sidebar
353
+ -------------------------------------------------------- */
354
+ .ai-agent-panel__sidebar {
355
+ width: 200px;
356
+ min-width: 180px;
357
+ max-width: 280px;
358
+ height: 100%;
359
+ max-height: 100%;
360
+ flex-shrink: 0;
361
+ display: flex;
362
+ flex-direction: column;
363
+ border-right: 1px solid var(--ai-sidebar-border);
364
+ background-color: var(--ai-sidebar-bg);
365
+ overflow: hidden;
366
+ }
367
+
368
+ .ai-agent-panel--left .ai-agent-panel__sidebar {
369
+ border-right: none;
370
+ border-left: 1px solid var(--ai-sidebar-border);
371
+ }
372
+
373
+ /* Header */
374
+ .ai-agent-panel__header {
375
+ display: flex;
376
+ align-items: center;
377
+ justify-content: space-between;
378
+ padding: 8px;
379
+ height: var(--ai-header-height);
380
+ border-bottom: 1px solid var(--ai-header-border);
381
+ background-color: var(--ai-header-bg);
382
+ gap: 8px;
383
+ }
384
+
385
+ .ai-agent-panel__header-actions {
386
+ display: flex;
387
+ align-items: center;
388
+ gap: 4px;
389
+ flex: 1;
390
+ }
391
+
392
+ /* Conversations */
393
+ .ai-agent-panel__conversations {
394
+ flex: 1;
395
+ overflow-y: auto;
396
+ padding: 8px;
397
+ }
398
+
399
+ .ai-agent-panel__empty {
400
+ display: flex;
401
+ flex-direction: column;
402
+ align-items: center;
403
+ justify-content: center;
404
+ padding: 32px 16px;
405
+ color: var(--ai-sidebar-text-muted);
406
+ text-align: center;
407
+ }
408
+
409
+ .ai-agent-panel__empty svg {
410
+ width: 32px;
411
+ height: 32px;
412
+ margin-bottom: 12px;
413
+ opacity: 0.5;
414
+ }
415
+
416
+ .ai-agent-panel__empty p {
417
+ margin: 0;
418
+ }
419
+
420
+ .ai-agent-panel__empty-hint {
421
+ font-size: 12px;
422
+ margin-top: 4px !important;
423
+ opacity: 0.7;
424
+ }
425
+
426
+ /* Groups */
427
+ .ai-agent-panel__group {
428
+ margin-bottom: 16px;
429
+ }
430
+
431
+ .ai-agent-panel__group-label {
432
+ font-size: var(--ai-group-label-size);
433
+ font-weight: 600;
434
+ color: var(--ai-group-label-color);
435
+ text-transform: uppercase;
436
+ letter-spacing: 0.05em;
437
+ padding: 8px 8px 4px;
438
+ }
439
+
440
+ .ai-agent-panel__group-label--clickable {
441
+ display: flex;
442
+ align-items: center;
443
+ justify-content: space-between;
444
+ cursor: pointer;
445
+ user-select: none;
446
+ transition: color 0.15s;
447
+ }
448
+
449
+ .ai-agent-panel__group-label--clickable:hover {
450
+ color: var(--ai-sidebar-text);
451
+ }
452
+
453
+ .ai-agent-panel__group-chevron {
454
+ font-size: 8px;
455
+ opacity: 0.6;
456
+ transition: opacity 0.15s;
457
+ }
458
+
459
+ .ai-agent-panel__group-label--clickable:hover .ai-agent-panel__group-chevron {
460
+ opacity: 1;
461
+ }
462
+
463
+ /* Conversation Item */
464
+ .ai-agent-panel__conversation {
465
+ display: flex;
466
+ align-items: flex-start;
467
+ padding: 4px 8px;
468
+ border-radius: 6px;
469
+ cursor: pointer;
470
+ transition: background-color 0.15s;
471
+ gap: 8px;
472
+ }
473
+
474
+ .ai-agent-panel__conversation:hover {
475
+ background-color: var(--ai-conversation-hover);
476
+ }
477
+
478
+ .ai-agent-panel__conversation--active {
479
+ background-color: var(--ai-conversation-active);
480
+ }
481
+
482
+ .ai-agent-panel__conversation-content {
483
+ flex: 1;
484
+ min-width: 0;
485
+ }
486
+
487
+ .ai-agent-panel__conversation-title {
488
+ font-weight: 400;
489
+ font-size: 11px;
490
+ color: var(--ai-conversation-preview-color);
491
+ white-space: nowrap;
492
+ overflow: hidden;
493
+ text-overflow: ellipsis;
494
+ margin-bottom: 2px;
495
+ }
496
+
497
+ .ai-agent-panel__conversation-preview {
498
+ font-size: 11px;
499
+ color: var(--ai-conversation-preview-color);
500
+ white-space: nowrap;
501
+ overflow: hidden;
502
+ text-overflow: ellipsis;
503
+ margin-bottom: 2px;
504
+ }
505
+
506
+ .ai-agent-panel__conversation-meta {
507
+ display: flex;
508
+ align-items: center;
509
+ gap: 6px;
510
+ font-size: 11px;
511
+ color: var(--ai-conversation-meta-color);
512
+ }
513
+
514
+ .ai-agent-panel__conversation-agent {
515
+ font-size: 10px;
516
+ color: var(--ai-agent-badge-text);
517
+ background-color: var(--ai-agent-badge-bg);
518
+ padding: 1px 4px;
519
+ border-radius: 3px;
520
+ }
521
+
522
+ .ai-agent-panel__conversation-delete {
523
+ opacity: 0;
524
+ transition: opacity 0.15s;
525
+ }
526
+
527
+ .ai-agent-panel__conversation:hover .ai-agent-panel__conversation-delete {
528
+ opacity: 1;
529
+ }
530
+
531
+ /* Context Summary */
532
+ .ai-agent-panel__context-summary {
533
+ display: flex;
534
+ align-items: center;
535
+ gap: 8px;
536
+ padding: 10px 12px;
537
+ border-top: 1px solid var(--ai-context-border);
538
+ background-color: var(--ai-context-bg);
539
+ font-size: 12px;
540
+ color: var(--ai-context-text);
541
+ }
542
+
543
+ .ai-agent-panel__context-summary svg {
544
+ width: 14px;
545
+ height: 14px;
546
+ opacity: 0.6;
547
+ }
548
+
549
+ .ai-agent-panel__context-warning {
550
+ color: var(--ai-context-warning);
551
+ font-weight: 500;
552
+ }
553
+
554
+ /* --------------------------------------------------------
555
+ Chat Area
556
+ -------------------------------------------------------- */
557
+ .ai-agent-panel__chat {
558
+ position: relative;
559
+ flex: 1;
560
+ background-color: var(--ai-chat-bg);
561
+ min-width: 0; /* Allow shrinking below content size */
562
+ min-height: 0; /* Allow shrinking in flex column */
563
+ overflow: hidden;
564
+ }
565
+
566
+ .ai-agent-panel__agent-selector {
567
+ padding: 8px 12px;
568
+ border-bottom: 1px solid var(--ai-sidebar-border);
569
+ }
570
+
571
+ .ai-agent-panel__loading {
572
+ display: flex;
573
+ flex-direction: column;
574
+ align-items: center;
575
+ justify-content: center;
576
+ flex: 1;
577
+ gap: 12px;
578
+ color: var(--ai-sidebar-text-muted);
579
+ }
580
+
581
+ .ai-agent-panel__conversation-loading-overlay {
582
+ position: absolute;
583
+ top: 0;
584
+ left: 0;
585
+ right: 0;
586
+ bottom: 0;
587
+ display: flex;
588
+ flex-direction: column;
589
+ align-items: center;
590
+ justify-content: center;
591
+ gap: 12px;
592
+ background-color: var(--ai-chat-bg);
593
+ color: var(--ai-sidebar-text-muted);
594
+ z-index: 10;
595
+ backdrop-filter: blur(2px);
596
+ }
597
+
598
+ .ai-agent-panel__loading-spinner {
599
+ width: 24px;
600
+ height: 24px;
601
+ border: 2px solid var(--ai-sidebar-border);
602
+ border-top-color: var(--ai-loading-spinner);
603
+ border-radius: 50%;
604
+ animation: ai-spin 0.8s linear infinite;
605
+ }
606
+
607
+ @keyframes ai-spin {
608
+ to {
609
+ transform: rotate(360deg);
610
+ }
611
+ }
612
+
613
+ /* --------------------------------------------------------
614
+ Button Styles
615
+ -------------------------------------------------------- */
616
+ .ai-button {
617
+ display: inline-flex;
618
+ align-items: center;
619
+ justify-content: center;
620
+ border: none;
621
+ cursor: pointer;
622
+ font-family: inherit;
623
+ font-weight: 500;
624
+ transition: all 0.15s;
625
+ border-radius: var(--ai-button-radius);
626
+ }
627
+
628
+ .ai-button:disabled {
629
+ opacity: 0.5;
630
+ cursor: not-allowed;
631
+ }
632
+
633
+ .ai-button--primary {
634
+ background-color: var(--ai-button-primary-bg);
635
+ color: var(--ai-button-primary-text);
636
+ }
637
+
638
+ .ai-button--primary:hover:not(:disabled) {
639
+ background-color: var(--ai-button-primary-hover);
640
+ }
641
+
642
+ .ai-button--secondary {
643
+ background-color: var(--ai-button-secondary-bg);
644
+ color: var(--ai-button-secondary-text);
645
+ border: 1px solid var(--ai-button-secondary-border);
646
+ }
647
+
648
+ .ai-button--secondary:hover:not(:disabled) {
649
+ background-color: var(--ai-button-secondary-hover);
650
+ }
651
+
652
+ .ai-button--ghost {
653
+ background-color: transparent;
654
+ color: var(--ai-sidebar-text);
655
+ }
656
+
657
+ .ai-button--ghost:hover:not(:disabled) {
658
+ background-color: var(--ai-button-ghost-hover);
659
+ }
660
+
661
+ .ai-button--outline {
662
+ background-color: transparent;
663
+ color: var(--ai-sidebar-text);
664
+ border: 1px solid var(--ai-button-secondary-border);
665
+ }
666
+
667
+ .ai-button--outline:hover:not(:disabled) {
668
+ background-color: var(--ai-button-ghost-hover);
669
+ }
670
+
671
+ .ai-button--destructive {
672
+ background-color: var(--ai-button-destructive-bg);
673
+ color: var(--ai-button-destructive-text);
674
+ }
675
+
676
+ .ai-button--destructive:hover:not(:disabled) {
677
+ background-color: var(--ai-button-destructive-hover);
678
+ }
679
+
680
+ .ai-button--default {
681
+ padding: 8px 16px;
682
+ font-size: 14px;
683
+ }
684
+
685
+ .ai-button--sm {
686
+ padding: 6px 12px;
687
+ font-size: 13px;
688
+ }
689
+
690
+ .ai-button--lg {
691
+ padding: 10px 20px;
692
+ font-size: 15px;
693
+ }
694
+
695
+ .ai-button--icon {
696
+ width: 32px;
697
+ height: 32px;
698
+ padding: 0;
699
+ }
700
+
701
+ /* --------------------------------------------------------
702
+ Input Styles
703
+ -------------------------------------------------------- */
704
+ .ai-input-wrapper {
705
+ position: relative;
706
+ display: flex;
707
+ align-items: center;
708
+ width: 100%;
709
+ }
710
+
711
+ .ai-input-icon {
712
+ position: absolute;
713
+ left: 10px;
714
+ color: var(--ai-input-placeholder);
715
+ pointer-events: none;
716
+ display: flex;
717
+ }
718
+
719
+ .ai-input-wrapper .ai-input {
720
+ padding-left: 34px;
721
+ }
722
+
723
+ .ai-input {
724
+ width: 100%;
725
+ padding: 8px 12px;
726
+ font-size: 14px;
727
+ font-family: inherit;
728
+ color: var(--ai-input-text);
729
+ background-color: var(--ai-input-bg);
730
+ border: 1px solid var(--ai-input-border);
731
+ border-radius: var(--ai-input-radius);
732
+ outline: none;
733
+ transition: border-color 0.15s, box-shadow 0.15s;
734
+ }
735
+
736
+ .ai-input::placeholder {
737
+ color: var(--ai-input-placeholder);
738
+ }
739
+
740
+ .ai-input:focus {
741
+ border-color: var(--ai-input-focus-border);
742
+ box-shadow: 0 0 0 3px var(--ai-input-focus-ring);
743
+ }
744
+
745
+ /* --------------------------------------------------------
746
+ Select Styles
747
+ -------------------------------------------------------- */
748
+ .ai-select {
749
+ position: relative;
750
+ width: 100%;
751
+ }
752
+
753
+ .ai-select--disabled {
754
+ opacity: 0.5;
755
+ pointer-events: none;
756
+ }
757
+
758
+ .ai-select-trigger {
759
+ display: flex;
760
+ align-items: center;
761
+ justify-content: space-between;
762
+ width: 100%;
763
+ padding: 8px 12px;
764
+ font-size: 14px;
765
+ font-family: inherit;
766
+ color: var(--ai-select-text);
767
+ background-color: var(--ai-select-bg);
768
+ border: 1px solid var(--ai-select-border);
769
+ border-radius: var(--ai-input-radius);
770
+ cursor: pointer;
771
+ transition: border-color 0.15s;
772
+ }
773
+
774
+ .ai-select-trigger:hover {
775
+ background-color: var(--ai-select-hover);
776
+ }
777
+
778
+ .ai-select-value {
779
+ display: flex;
780
+ align-items: center;
781
+ gap: 8px;
782
+ }
783
+
784
+ .ai-select-placeholder {
785
+ color: var(--ai-input-placeholder);
786
+ }
787
+
788
+ .ai-select-icon {
789
+ display: flex;
790
+ }
791
+
792
+ .ai-select-chevron {
793
+ color: var(--ai-input-placeholder);
794
+ }
795
+
796
+ .ai-select-content {
797
+ position: absolute;
798
+ top: 100%;
799
+ left: 0;
800
+ right: 0;
801
+ margin-top: 4px;
802
+ background-color: var(--ai-select-bg);
803
+ border: 1px solid var(--ai-select-border);
804
+ border-radius: var(--ai-input-radius);
805
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
806
+ z-index: 100;
807
+ max-height: 240px;
808
+ overflow-y: auto;
809
+ }
810
+
811
+ .ai-select-item {
812
+ display: flex;
813
+ align-items: center;
814
+ width: 100%;
815
+ padding: 10px 12px;
816
+ font-size: 14px;
817
+ font-family: inherit;
818
+ color: var(--ai-select-text);
819
+ background: none;
820
+ border: none;
821
+ cursor: pointer;
822
+ text-align: left;
823
+ gap: 8px;
824
+ transition: background-color 0.15s;
825
+ }
826
+
827
+ .ai-select-item:hover {
828
+ background-color: var(--ai-select-item-hover);
829
+ }
830
+
831
+ .ai-select-item--selected {
832
+ background-color: var(--ai-select-item-selected);
833
+ }
834
+
835
+ .ai-select-item-icon {
836
+ display: flex;
837
+ }
838
+
839
+ .ai-select-item-content {
840
+ flex: 1;
841
+ min-width: 0;
842
+ }
843
+
844
+ .ai-select-item-label {
845
+ display: block;
846
+ font-weight: 500;
847
+ }
848
+
849
+ .ai-select-item-description {
850
+ display: block;
851
+ font-size: 12px;
852
+ color: var(--ai-sidebar-text-muted);
853
+ margin-top: 2px;
854
+ }
855
+
856
+ .ai-select-item-check {
857
+ color: var(--ai-button-primary-bg);
858
+ }
859
+
860
+ /* --------------------------------------------------------
861
+ ScrollArea Styles
862
+ -------------------------------------------------------- */
863
+ .ai-scroll-area {
864
+ overflow: hidden;
865
+ position: relative;
866
+ }
867
+
868
+ .ai-scroll-area-viewport {
869
+ height: 100%;
870
+ overflow-y: auto;
871
+ scrollbar-width: thin;
872
+ scrollbar-color: var(--ai-scrollbar-thumb) var(--ai-scrollbar-track);
873
+ }
874
+
875
+ .ai-scroll-area-viewport::-webkit-scrollbar {
876
+ width: var(--ai-scrollbar-width);
877
+ }
878
+
879
+ .ai-scroll-area-viewport::-webkit-scrollbar-track {
880
+ background: var(--ai-scrollbar-track);
881
+ }
882
+
883
+ .ai-scroll-area-viewport::-webkit-scrollbar-thumb {
884
+ background-color: var(--ai-scrollbar-thumb);
885
+ border-radius: 3px;
886
+ }
887
+
888
+ .ai-scroll-area-viewport::-webkit-scrollbar-thumb:hover {
889
+ background-color: var(--ai-scrollbar-thumb-hover);
890
+ }
891
+
892
+ /* --------------------------------------------------------
893
+ Tooltip Styles
894
+ -------------------------------------------------------- */
895
+ .ai-tooltip-trigger {
896
+ position: relative;
897
+ display: inline-flex;
898
+ }
899
+
900
+ .ai-tooltip {
901
+ position: absolute;
902
+ z-index: 1000;
903
+ padding: 6px 10px;
904
+ font-size: 12px;
905
+ color: var(--ai-tooltip-text);
906
+ background-color: var(--ai-tooltip-bg);
907
+ border-radius: var(--ai-tooltip-radius);
908
+ white-space: nowrap;
909
+ pointer-events: none;
910
+ animation: ai-tooltip-fade-in 0.15s ease;
911
+ }
912
+
913
+ @keyframes ai-tooltip-fade-in {
914
+ from {
915
+ opacity: 0;
916
+ transform: scale(0.95);
917
+ }
918
+ to {
919
+ opacity: 1;
920
+ transform: scale(1);
921
+ }
922
+ }
923
+
924
+ .ai-tooltip--top {
925
+ bottom: 100%;
926
+ left: 50%;
927
+ transform: translateX(-50%);
928
+ margin-bottom: 6px;
929
+ }
930
+
931
+ .ai-tooltip--bottom {
932
+ top: 100%;
933
+ left: 50%;
934
+ transform: translateX(-50%);
935
+ margin-top: 6px;
936
+ }
937
+
938
+ .ai-tooltip--left {
939
+ right: 100%;
940
+ top: 50%;
941
+ transform: translateY(-50%);
942
+ margin-right: 6px;
943
+ }
944
+
945
+ .ai-tooltip--right {
946
+ left: 100%;
947
+ top: 50%;
948
+ transform: translateY(-50%);
949
+ margin-left: 6px;
950
+ }
951
+
952
+ .ai-tooltip-arrow {
953
+ display: none;
954
+ }
955
+
956
+ /* --------------------------------------------------------
957
+ Dialog Styles
958
+ -------------------------------------------------------- */
959
+ .ai-dialog-overlay {
960
+ position: fixed;
961
+ top: 0;
962
+ left: 0;
963
+ right: 0;
964
+ bottom: 0;
965
+ background-color: var(--ai-dialog-overlay);
966
+ display: flex;
967
+ align-items: center;
968
+ justify-content: center;
969
+ z-index: 10000;
970
+ animation: ai-dialog-overlay-fade-in 0.2s ease;
971
+ }
972
+
973
+ @keyframes ai-dialog-overlay-fade-in {
974
+ from {
975
+ opacity: 0;
976
+ }
977
+ to {
978
+ opacity: 1;
979
+ }
980
+ }
981
+
982
+ .ai-dialog {
983
+ position: relative;
984
+ background-color: var(--ai-dialog-bg);
985
+ border: 1px solid var(--ai-dialog-border);
986
+ border-radius: var(--ai-dialog-radius);
987
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
988
+ max-width: 420px;
989
+ width: 90%;
990
+ animation: ai-dialog-slide-in 0.2s ease;
991
+ }
992
+
993
+ @keyframes ai-dialog-slide-in {
994
+ from {
995
+ opacity: 0;
996
+ transform: scale(0.95) translateY(-10px);
997
+ }
998
+ to {
999
+ opacity: 1;
1000
+ transform: scale(1) translateY(0);
1001
+ }
1002
+ }
1003
+
1004
+ .ai-dialog-header {
1005
+ padding: 20px 20px 12px;
1006
+ }
1007
+
1008
+ .ai-dialog-title {
1009
+ margin: 0;
1010
+ font-size: 16px;
1011
+ font-weight: 600;
1012
+ color: var(--ai-dialog-title-color);
1013
+ }
1014
+
1015
+ .ai-dialog-description {
1016
+ margin: 8px 0 0;
1017
+ font-size: 14px;
1018
+ color: var(--ai-dialog-description-color);
1019
+ line-height: 1.5;
1020
+ }
1021
+
1022
+ .ai-dialog-content {
1023
+ padding: 0 20px 20px;
1024
+ }
1025
+
1026
+ .ai-dialog-footer {
1027
+ display: flex;
1028
+ justify-content: flex-end;
1029
+ gap: 8px;
1030
+ padding: 16px 20px;
1031
+ border-top: 1px solid var(--ai-dialog-border);
1032
+ }
1033
+
1034
+ .ai-dialog-close {
1035
+ position: absolute;
1036
+ top: 12px;
1037
+ right: 12px;
1038
+ width: 28px;
1039
+ height: 28px;
1040
+ display: flex;
1041
+ align-items: center;
1042
+ justify-content: center;
1043
+ background: none;
1044
+ border: none;
1045
+ color: var(--ai-sidebar-text-muted);
1046
+ cursor: pointer;
1047
+ border-radius: 4px;
1048
+ transition: background-color 0.15s, color 0.15s;
1049
+ }
1050
+
1051
+ .ai-dialog-close:hover {
1052
+ background-color: var(--ai-button-ghost-hover);
1053
+ color: var(--ai-sidebar-text);
1054
+ }
1055
+
1056
+ /* --------------------------------------------------------
1057
+ Responsive Adjustments
1058
+ -------------------------------------------------------- */
1059
+
1060
+ /* For narrow panels, hide the sidebar */
1061
+ @media (max-width: 600px) {
1062
+ .ai-agent-panel {
1063
+ width: 100% !important;
1064
+ }
1065
+
1066
+ .ai-agent-panel__sidebar {
1067
+ width: 240px;
1068
+ min-width: unset;
1069
+ max-width: 280px;
1070
+ position: absolute;
1071
+ left: 0;
1072
+ top: 0;
1073
+ bottom: 0;
1074
+ z-index: 100;
1075
+ transform: translateX(-100%);
1076
+ transition: transform var(--ai-panel-transition);
1077
+ }
1078
+
1079
+ .ai-agent-panel--left .ai-agent-panel__sidebar {
1080
+ transform: translateX(100%);
1081
+ left: auto;
1082
+ right: 0;
1083
+ }
1084
+
1085
+ .ai-agent-panel__sidebar--open {
1086
+ transform: translateX(0);
1087
+ }
1088
+
1089
+ .ai-agent-panel__resize-handle {
1090
+ display: none;
1091
+ }
1092
+
1093
+ .ai-agent-panel__chat {
1094
+ min-width: 0;
1095
+ }
1096
+ }
1097
+
1098
+ /* When component has width specified via inline style, respect it */
1099
+ .ai-agent-panel[style*="width"] {
1100
+ flex-shrink: 0;
1101
+ }
1102
+
1103
+ /* --------------------------------------------------------
1104
+ Narrow Panel Responsive (for resizable panels at min-width)
1105
+ -------------------------------------------------------- */
1106
+
1107
+ /* Container query for responsive content */
1108
+ .ai-agent-panel__chat {
1109
+ container-type: inline-size;
1110
+ container-name: agent-chat;
1111
+ }
1112
+
1113
+ /* Narrow panel adjustments */
1114
+ @container agent-chat (max-width: 380px) {
1115
+ .ai-agent-panel__agent-selector {
1116
+ padding: 6px 8px;
1117
+ }
1118
+
1119
+ .ai-agent-panel__initial-message {
1120
+ padding: 12px;
1121
+ font-size: 13px;
1122
+ word-wrap: break-word;
1123
+ overflow-wrap: break-word;
1124
+ hyphens: auto;
1125
+ }
1126
+
1127
+ .ai-agent-panel__empty-state {
1128
+ padding: 16px 12px;
1129
+ }
1130
+
1131
+ .ai-agent-panel__empty-icon {
1132
+ width: 40px;
1133
+ height: 40px;
1134
+ }
1135
+
1136
+ .ai-agent-panel__empty-title {
1137
+ font-size: 14px;
1138
+ }
1139
+
1140
+ .ai-agent-panel__empty-description {
1141
+ font-size: 12px;
1142
+ }
1143
+ }
1144
+
1145
+ /* Extra narrow adjustments */
1146
+ @container agent-chat (max-width: 320px) {
1147
+ .ai-agent-panel__header-actions {
1148
+ gap: 4px;
1149
+ }
1150
+
1151
+ .ai-agent-panel__header-button {
1152
+ padding: 4px;
1153
+ }
1154
+
1155
+ .ai-agent-panel__agent-selector .ai-select {
1156
+ font-size: 13px;
1157
+ }
1158
+ }
1159
+
1160
+ /* --------------------------------------------------------
1161
+ Active Conversations Section
1162
+ -------------------------------------------------------- */
1163
+
1164
+ .ai-agent-panel__group--active {
1165
+ background-color: var(--ai-conversation-active);
1166
+ border-radius: 6px;
1167
+ margin-bottom: 8px;
1168
+ padding: 4px;
1169
+ }
1170
+
1171
+ .ai-agent-panel__group--active .ai-agent-panel__group-label {
1172
+ color: var(--ai-button-primary-bg);
1173
+ font-weight: 600;
1174
+ }
1175
+
1176
+ .ai-agent-panel__conversation--active-item {
1177
+ display: flex;
1178
+ align-items: center;
1179
+ justify-content: space-between;
1180
+ background-color: var(--ai-sidebar-bg);
1181
+ border-radius: 4px;
1182
+ margin: 2px 0;
1183
+ }
1184
+
1185
+ .ai-agent-panel__conversation--active-item .ai-agent-panel__conversation-content {
1186
+ flex: 1;
1187
+ min-width: 0;
1188
+ }
1189
+
1190
+ .ai-agent-panel__conversation--active-item .ai-agent-panel__conversation-title {
1191
+ display: flex;
1192
+ align-items: center;
1193
+ gap: 6px;
1194
+ }
1195
+
1196
+ .ai-agent-panel__conversation--current {
1197
+ background-color: var(--ai-conversation-active) !important;
1198
+ border-left: 2px solid var(--ai-button-primary-bg);
1199
+ }
1200
+
1201
+ .ai-agent-panel__conversation--in-active {
1202
+ opacity: 0.7;
1203
+ }
1204
+
1205
+ .ai-agent-panel__conversation--in-active:hover {
1206
+ opacity: 1;
1207
+ }
1208
+
1209
+ /* Close button for active conversations */
1210
+ .ai-agent-panel__conversation-close {
1211
+ display: flex;
1212
+ align-items: center;
1213
+ justify-content: center;
1214
+ width: 20px;
1215
+ height: 20px;
1216
+ padding: 0;
1217
+ margin-right: 4px;
1218
+ background: none;
1219
+ border: none;
1220
+ border-radius: 4px;
1221
+ color: var(--ai-sidebar-text-muted);
1222
+ cursor: pointer;
1223
+ opacity: 0;
1224
+ transition: opacity 0.15s, background-color 0.15s, color 0.15s;
1225
+ }
1226
+
1227
+ .ai-agent-panel__conversation--active-item:hover .ai-agent-panel__conversation-close {
1228
+ opacity: 1;
1229
+ }
1230
+
1231
+ .ai-agent-panel__conversation-close:hover {
1232
+ background-color: var(--ai-button-ghost-hover);
1233
+ color: var(--ai-sidebar-text);
1234
+ }
1235
+
1236
+ /* Active badge for conversations in history */
1237
+ .ai-agent-panel__active-badge {
1238
+ color: var(--ai-button-primary-bg);
1239
+ font-size: 8px;
1240
+ margin-right: 2px;
1241
+ }
1242
+
1243
+ /* Loading dot indicator */
1244
+ .ai-agent-panel__loading-dot {
1245
+ display: inline-block;
1246
+ width: 8px;
1247
+ height: 8px;
1248
+ border-radius: 50%;
1249
+ background-color: var(--ai-button-primary-bg);
1250
+ animation: ai-pulse 1.5s ease-in-out infinite;
1251
+ }
1252
+
1253
+ @keyframes ai-pulse {
1254
+ 0%, 100% {
1255
+ opacity: 1;
1256
+ transform: scale(1);
1257
+ }
1258
+ 50% {
1259
+ opacity: 0.5;
1260
+ transform: scale(0.8);
1261
+ }
1262
+ }
1263
+
1264
+ /* Group divider */
1265
+ .ai-agent-panel__group-divider {
1266
+ height: 1px;
1267
+ background-color: var(--ai-sidebar-border);
1268
+ margin: 12px 8px;
1269
+ }
1270
+
1271
+ /* Chat wrapper for multi-conversation support */
1272
+ .ai-agent-panel__chat-wrapper {
1273
+ position: absolute;
1274
+ top: 0;
1275
+ left: 0;
1276
+ right: 0;
1277
+ bottom: 0;
1278
+ display: flex;
1279
+ flex-direction: column;
1280
+ overflow: hidden;
1281
+ }
1282
+
1283
+ /* Empty chat state */
1284
+ .ai-agent-panel__empty-chat {
1285
+ position: absolute;
1286
+ top: 0;
1287
+ left: 0;
1288
+ right: 0;
1289
+ bottom: 0;
1290
+ display: flex;
1291
+ flex-direction: column;
1292
+ align-items: center;
1293
+ justify-content: center;
1294
+ gap: 16px;
1295
+ color: var(--ai-sidebar-text-muted);
1296
+ text-align: center;
1297
+ padding: 32px;
1298
+ }
1299
+
1300
+ .ai-agent-panel__empty-chat svg {
1301
+ width: 48px;
1302
+ height: 48px;
1303
+ opacity: 0.5;
1304
+ }
1305
+
1306
+ .ai-agent-panel__empty-chat p {
1307
+ margin: 0;
1308
+ font-size: 14px;
1309
+ }
1310
+
1311
+ /* --------------------------------------------------------
1312
+ Collapsed History Sidebar
1313
+ -------------------------------------------------------- */
1314
+ .ai-agent-panel__sidebar--collapsed {
1315
+ width: var(--ai-panel-collapsed-width) !important;
1316
+ min-width: var(--ai-panel-collapsed-width) !important;
1317
+ max-width: var(--ai-panel-collapsed-width) !important;
1318
+ }
1319
+
1320
+ .ai-agent-panel__history-collapsed-bar {
1321
+ display: flex;
1322
+ flex-direction: column;
1323
+ align-items: center;
1324
+ padding: 8px 4px;
1325
+ gap: 4px;
1326
+ width: 100%;
1327
+ height: 100%;
1328
+ background-color: var(--ai-sidebar-bg);
1329
+ cursor: pointer;
1330
+ transition: background-color 0.15s, box-shadow 0.15s;
1331
+ }
1332
+
1333
+ .ai-agent-panel__history-collapsed-bar:hover {
1334
+ background-color: var(--ai-sidebar-hover);
1335
+ box-shadow: inset -2px 0 0 var(--ai-button-primary-bg);
1336
+ }
1337
+
1338
+ .ai-agent-panel--sidebar-right .ai-agent-panel__history-collapsed-bar:hover {
1339
+ box-shadow: inset 2px 0 0 var(--ai-button-primary-bg);
1340
+ }
1341
+
1342
+ .ai-agent-panel__history-collapsed-spacer {
1343
+ flex: 1;
1344
+ }
1345
+
1346
+ /* Adjust sidebar border when collapsed */
1347
+ .ai-agent-panel--sidebar-left .ai-agent-panel__sidebar--collapsed {
1348
+ border-right: 1px solid var(--ai-sidebar-border);
1349
+ }
1350
+
1351
+ .ai-agent-panel--sidebar-right .ai-agent-panel__sidebar--collapsed {
1352
+ border-left: 1px solid var(--ai-sidebar-border);
1353
+ }
1354
+