koishi-plugin-chat-patch 1.3.0 → 2.0.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.
@@ -1,1997 +0,0 @@
1
- .message-quote {
2
- margin: 8px 0;
3
- padding: 8px 12px;
4
- background-color: rgba(190, 190, 190, 0.1);
5
- border-left: 4px solid rgba(151, 152, 152, 0.45);
6
- border-radius: 6px;
7
- font-size: 0.9em;
8
- position: relative;
9
- }
10
-
11
- .quote-indicator {
12
- font-size: 0.75em;
13
- color: #007bff;
14
- font-weight: 600;
15
- margin-bottom: 4px;
16
- text-transform: uppercase;
17
- }
18
-
19
- .quote-header {
20
- display: flex;
21
- align-items: center;
22
- margin-bottom: 4px;
23
- gap: 6px;
24
- }
25
-
26
- .quote-avatar {
27
- width: 20px;
28
- height: 20px;
29
- border-radius: 50%;
30
- overflow: hidden;
31
- flex-shrink: 0;
32
- }
33
-
34
- .quote-avatar img {
35
- width: 100%;
36
- height: 100%;
37
- object-fit: cover;
38
- }
39
-
40
- .quote-avatar .avatar-placeholder {
41
- width: 100%;
42
- height: 100%;
43
- display: flex;
44
- align-items: center;
45
- justify-content: center;
46
- background-color: #6c757d;
47
- color: #fff;
48
- font-size: 10px;
49
- font-weight: 700;
50
- }
51
-
52
- .quote-username {
53
- font-weight: 600;
54
- color: #007bff;
55
- font-size: 0.85em;
56
- }
57
-
58
- .quote-time {
59
- color: #6c757d;
60
- font-size: 0.75em;
61
- margin-left: auto;
62
- }
63
-
64
- .quote-content {
65
- color: #7276b7;
66
- line-height: 1.3;
67
- word-wrap: break-word;
68
- word-break: break-all;
69
- overflow-wrap: anywhere;
70
- hyphens: auto;
71
- }
72
-
73
- .quote-content .message-image {
74
- max-width: min(200px, 50vw);
75
- max-height: 100px;
76
- }
77
-
78
- .quote-content .message-image-container {
79
- margin: 2px 0;
80
- }
81
-
82
- @media (prefers-color-scheme: dark) {
83
- .message-quote {
84
- background-color: rgba(255, 255, 255, 0.078);
85
- border-left-color: #0d6efd;
86
- }
87
-
88
- .quote-content {
89
- color: #adb5bd;
90
- }
91
-
92
- .quote-username {
93
- color: #0d6efd;
94
- }
95
- }
96
-
97
- .chat-container {
98
- display: flex;
99
- height: 100vh;
100
- background: 0 0;
101
- margin-left: 0;
102
- width: 100%;
103
- overflow: hidden;
104
- color: inherit;
105
- position: relative;
106
- }
107
-
108
- .bot-list,
109
- .channel-list,
110
- .message-area {
111
- display: flex;
112
- flex-direction: column;
113
- background: 0 0;
114
- border-right: 1px solid rgba(128, 128, 128, 0.2);
115
- }
116
-
117
- .bot-list {
118
- width: 250px;
119
- min-width: 250px;
120
- max-width: 250px;
121
- flex-shrink: 0;
122
- }
123
-
124
- .channel-list {
125
- width: 300px;
126
- min-width: 300px;
127
- max-width: 300px;
128
- flex-shrink: 0;
129
- }
130
-
131
- .message-area {
132
- flex: 1;
133
- border-right: none;
134
- }
135
-
136
- .panel-header {
137
- padding: 16px;
138
- border-bottom: 1px solid rgba(128, 128, 128, 0.2);
139
- background: 0 0;
140
- display: flex;
141
- align-items: center;
142
- justify-content: space-between;
143
- }
144
-
145
- .panel-header h3 {
146
- margin: 0;
147
- font-size: 16px;
148
- font-weight: 600;
149
- color: currentColor;
150
- }
151
-
152
- .back-button {
153
- display: none;
154
- background: 0 0;
155
- border: none;
156
- color: currentColor;
157
- font-size: 18px;
158
- cursor: pointer;
159
- padding: 4px 8px;
160
- border-radius: 4px;
161
- transition: background-color 0.2s;
162
- }
163
-
164
- .back-button:hover {
165
- background: rgba(128, 128, 128, 0.1);
166
- }
167
-
168
- .bot-items,
169
- .channel-items {
170
- flex: 1;
171
- overflow-y: auto;
172
- overflow-x: hidden;
173
- max-height: calc(100vh - 140px);
174
- -webkit-overflow-scrolling: touch;
175
- scrollbar-width: thin;
176
- scrollbar-color: rgba(144, 147, 153, 0.4) rgba(0, 0, 0, 0.05);
177
- scroll-behavior: smooth;
178
- overscroll-behavior: contain;
179
- padding-bottom: 8px;
180
- }
181
-
182
- .bot-item,
183
- .channel-item {
184
- display: flex;
185
- align-items: center;
186
- padding: 12px 16px;
187
- cursor: pointer;
188
- border-bottom: 1px solid rgba(128, 128, 128, 0.1);
189
- transition: background-color 0.2s;
190
- }
191
-
192
- .bot-item:hover,
193
- .channel-item:hover {
194
- background: rgba(128, 128, 128, 0.1);
195
- }
196
-
197
- .bot-item.active,
198
- .channel-item.active {
199
- background: rgba(33, 150, 243, 0.1);
200
- border-right: 3px solid #2196f3;
201
- }
202
-
203
- .bot-avatar {
204
- width: 40px;
205
- height: 40px;
206
- margin-right: 12px;
207
- border-radius: 50%;
208
- overflow: hidden;
209
- display: flex;
210
- align-items: center;
211
- justify-content: center;
212
- background: #e0e0e0;
213
- }
214
-
215
- .bot-avatar img {
216
- width: 100%;
217
- height: 100%;
218
- object-fit: cover;
219
- }
220
-
221
- .avatar-placeholder {
222
- font-size: 16px;
223
- font-weight: 700;
224
- color: currentColor;
225
- opacity: 0.7;
226
- }
227
-
228
- .bot-info {
229
- flex: 1;
230
- }
231
-
232
- .bot-name {
233
- font-weight: 500;
234
- color: currentColor;
235
- margin-bottom: 2px;
236
- }
237
-
238
- .bot-platform {
239
- font-size: 12px;
240
- color: currentColor;
241
- opacity: 0.7;
242
- }
243
-
244
- .bot-status {
245
- width: 8px;
246
- height: 8px;
247
- border-radius: 50%;
248
- margin-left: 8px;
249
- }
250
-
251
- .bot-status.online {
252
- background: #4caf50;
253
- }
254
-
255
- .bot-status.offline {
256
- background: #f44336;
257
- }
258
-
259
- .channel-info {
260
- flex: 1;
261
- }
262
-
263
- .channel-name {
264
- font-weight: 500;
265
- color: currentColor;
266
- margin-bottom: 2px;
267
- }
268
-
269
- .channel-type {
270
- font-size: 12px;
271
- color: currentColor;
272
- opacity: 0.7;
273
- }
274
-
275
- .channel-message-count {
276
- background: #2196f3;
277
- color: #fff;
278
- font-size: 12px;
279
- padding: 2px 6px;
280
- border-radius: 10px;
281
- min-width: 18px;
282
- text-align: center;
283
- position: relative;
284
- transition: all 0.2s ease;
285
- }
286
-
287
- .channel-message-count.draggable-bubble {
288
- cursor: grab;
289
- user-select: none;
290
- -webkit-user-select: none;
291
- -moz-user-select: none;
292
- -ms-user-select: none;
293
- }
294
-
295
- .channel-message-count.draggable-bubble:hover {
296
- background: #1976d2;
297
- transform: scale(1.1);
298
- box-shadow: 0 2px 8px rgba(33, 150, 243, 0.3);
299
- }
300
-
301
- .channel-message-count.draggable-bubble.dragging,
302
- .channel-message-count.draggable-bubble:active {
303
- cursor: grabbing;
304
- background: #1565c0;
305
- box-shadow: 0 4px 12px rgba(33, 150, 243, 0.4);
306
- }
307
-
308
- .dragging-clone {
309
- position: fixed;
310
- z-index: 1000;
311
- pointer-events: none;
312
- transition: none;
313
- box-sizing: border-box;
314
- display: flex;
315
- align-items: center;
316
- justify-content: center;
317
- background: #2196f3;
318
- color: #fff;
319
- font-size: 12px;
320
- padding: 2px 6px;
321
- border-radius: 10px;
322
- min-width: 18px;
323
- text-align: center;
324
- box-shadow: 0 4px 12px rgba(33, 150, 243, 0.4);
325
- }
326
-
327
- .dragging-clone.will-delete {
328
- background: #f44336 !important;
329
- animation: shake 0.3s ease-in-out infinite;
330
- }
331
-
332
- @keyframes pulseThreshold {
333
- 0%,
334
- 100% {
335
- opacity: 0.4;
336
- transform: scale(0.9);
337
- border-color: rgba(244, 67, 54, 0.6);
338
- box-shadow: 0 0 15px rgba(244, 67, 54, 0.2);
339
- }
340
-
341
- 50% {
342
- opacity: 0.8;
343
- transform: scale(1.1);
344
- border-color: #f44336;
345
- box-shadow: 0 0 25px rgba(244, 67, 54, 0.4);
346
- }
347
- }
348
-
349
- @keyframes menuSlideIn {
350
- 0% {
351
- transform: translateY(8px);
352
- opacity: 0;
353
- }
354
-
355
- 100% {
356
- transform: translateY(0);
357
- opacity: 1;
358
- }
359
- }
360
-
361
- .message-content {
362
- display: flex;
363
- flex-direction: column;
364
- height: calc(100vh - 60px);
365
- overflow: hidden;
366
- position: relative;
367
- }
368
-
369
- .message-history {
370
- flex: 1;
371
- overflow-y: auto;
372
- padding: 16px 16px 8px 16px;
373
- max-height: calc(100vh - 200px);
374
- }
375
-
376
- .message-item {
377
- display: flex;
378
- margin-bottom: 16px;
379
- padding: 8px;
380
- border-radius: 8px;
381
- transition: background-color 0.3s ease;
382
- }
383
-
384
- .message-item:hover {
385
- background-color: rgba(128, 128, 128, 0.1);
386
- }
387
-
388
- .message-item.new-message {
389
- background-color: rgba(76, 175, 80, 0.2);
390
- animation: highlight 2s ease-out;
391
- }
392
-
393
- .message-item.bot-message {
394
- flex-direction: row-reverse;
395
- justify-content: flex-start;
396
- }
397
-
398
- .message-item.bot-message .message-avatar {
399
- margin-right: 0;
400
- margin-left: 12px;
401
- }
402
-
403
- .message-item.bot-message .message-content-wrapper {
404
- display: flex;
405
- flex-direction: column;
406
- align-items: flex-end;
407
- }
408
-
409
- .message-item.bot-message .message-header {
410
- display: flex;
411
- align-items: center;
412
- justify-content: flex-end;
413
- margin-bottom: 4px;
414
- }
415
-
416
- .message-item.bot-message .message-username {
417
- margin-right: 0;
418
- margin-left: 8px;
419
- order: 2;
420
- }
421
-
422
- .message-item.bot-message .message-time {
423
- order: 1;
424
- }
425
-
426
- .message-item.bot-message .message-text {
427
- background-color: rgba(33, 150, 243, 0.1);
428
- padding: 8px 12px;
429
- border-radius: 12px;
430
- border-bottom-right-radius: 4px;
431
- display: inline-block;
432
- max-width: 80%;
433
- text-align: left;
434
- word-wrap: break-word;
435
- word-break: break-all;
436
- overflow-wrap: anywhere;
437
- }
438
-
439
- @keyframes highlight {
440
- 0% {
441
- background-color: rgba(76, 175, 80, 0.3);
442
- }
443
-
444
- 100% {
445
- background-color: transparent;
446
- }
447
- }
448
-
449
- .message-avatar {
450
- width: 32px;
451
- height: 32px;
452
- margin-right: 12px;
453
- border-radius: 50%;
454
- overflow: hidden;
455
- display: flex;
456
- align-items: center;
457
- justify-content: center;
458
- background: #e0e0e0;
459
- flex-shrink: 0;
460
- }
461
-
462
- .message-avatar img {
463
- width: 100%;
464
- height: 100%;
465
- object-fit: cover;
466
- }
467
-
468
- .message-avatar .avatar-placeholder {
469
- font-size: 12px;
470
- font-weight: 700;
471
- color: currentColor;
472
- opacity: 0.7;
473
- }
474
-
475
- .message-content-wrapper {
476
- flex: 1;
477
- }
478
-
479
- .message-header {
480
- display: flex;
481
- align-items: center;
482
- margin-bottom: 4px;
483
- }
484
-
485
- .message-username {
486
- font-weight: 500;
487
- color: currentColor;
488
- margin-right: 8px;
489
- }
490
-
491
- .message-time {
492
- font-size: 12px;
493
- color: currentColor;
494
- opacity: 0.5;
495
- }
496
-
497
- .message-text {
498
- color: currentColor;
499
- line-height: 1.4;
500
- word-wrap: break-word;
501
- word-break: break-all;
502
- white-space: pre-wrap;
503
- max-width: 100%;
504
- overflow-wrap: anywhere;
505
- hyphens: auto;
506
- }
507
-
508
- .message-item:not(.bot-message) .message-text {
509
- background-color: rgba(128, 128, 128, 0.1);
510
- padding: 8px 12px;
511
- border-radius: 12px;
512
- border-bottom-left-radius: 4px;
513
- display: inline-block;
514
- max-width: 80%;
515
- word-wrap: break-word;
516
- word-break: break-all;
517
- overflow-wrap: anywhere;
518
- }
519
-
520
- .message-input {
521
- display: flex;
522
- flex-direction: column;
523
- padding: 12px 16px 16px 16px;
524
- border-top: 1px solid rgba(128, 128, 128, 0.2);
525
- background: 0 0;
526
- flex-shrink: 0;
527
- position: sticky;
528
- bottom: 0;
529
- margin-top: -10px;
530
- }
531
-
532
- .input-row {
533
- display: flex;
534
- gap: 8px;
535
- align-items: center;
536
- }
537
-
538
- .floating-scroll-button {
539
- position: absolute;
540
- right: 24px;
541
- bottom: 18%;
542
- width: 48px;
543
- height: 48px;
544
- background: #2196f3;
545
- border-radius: 50%;
546
- display: flex;
547
- align-items: center;
548
- justify-content: center;
549
- cursor: pointer;
550
- box-shadow: 0 4px 12px rgba(33, 150, 243, 0.3);
551
- color: #fff;
552
- transition: all 0.3s ease;
553
- z-index: 100;
554
- border: 2px solid rgba(255, 255, 255, 0.2);
555
- }
556
-
557
- .floating-scroll-button:hover {
558
- background: #1976d2;
559
- transform: scale(1.1);
560
- box-shadow: 0 6px 16px rgba(33, 150, 243, 0.4);
561
- }
562
-
563
- .floating-scroll-button:active {
564
- transform: scale(0.95);
565
- }
566
-
567
- .input-row input {
568
- flex: 1;
569
- min-width: 0;
570
- padding: 8px 12px;
571
- border: 1px solid rgba(128, 128, 128, 0.3);
572
- border-radius: 4px;
573
- outline: 0;
574
- background: 0 0;
575
- color: currentColor;
576
- }
577
-
578
- .input-row input:focus {
579
- border-color: #2196f3;
580
- box-shadow: 0 0 0 2px rgba(33, 150, 243, 0.2);
581
- }
582
-
583
- .input-row button {
584
- padding: 8px 16px;
585
- background: #2196f3;
586
- color: #fff;
587
- border: none;
588
- border-radius: 4px;
589
- cursor: pointer;
590
- transition: background-color 0.2s;
591
- }
592
-
593
- .input-row button:hover:not(:disabled) {
594
- background: #1976d2;
595
- }
596
-
597
- .input-row button:disabled {
598
- background: rgba(128, 128, 128, 0.3);
599
- cursor: not-allowed;
600
- }
601
-
602
- .input-row button.is-sending {
603
- background: #ffc107 !important;
604
- color: #333 !important;
605
- cursor: default !important;
606
- }
607
-
608
- .empty-state {
609
- display: flex;
610
- align-items: center;
611
- justify-content: center;
612
- height: 100%;
613
- color: currentColor;
614
- opacity: 0.5;
615
- font-size: 14px;
616
- }
617
-
618
- .message-image-container {
619
- margin: 8px 0;
620
- max-width: 100%;
621
- display: block;
622
- }
623
-
624
- .message-image {
625
- border-radius: 8px;
626
- object-fit: contain;
627
- display: block;
628
- cursor: pointer;
629
- transition: transform 0.2s ease;
630
- max-width: min(400px, 66.67vw);
631
- max-height: 200px;
632
- width: auto;
633
- height: auto;
634
- /* 确保GIF动画正常播放 */
635
- image-rendering: auto;
636
- -webkit-image-rendering: auto;
637
- -moz-image-rendering: auto;
638
- -o-image-rendering: auto;
639
- }
640
-
641
- .message-image:hover {
642
- transform: scale(1.02);
643
- }
644
-
645
- /* 专门针对GIF图片的样式 */
646
- .message-image[src*=".gif"],
647
- .message-image[src*="image/gif"] {
648
- /* 确保GIF动画不被优化掉 */
649
- image-rendering: auto !important;
650
- -webkit-image-rendering: auto !important;
651
- animation-play-state: running !important;
652
- }
653
-
654
- .message-image-loading {
655
- display: inline-block;
656
- padding: 8px 12px;
657
- background: rgba(128, 128, 128, 0.1);
658
- border-radius: 4px;
659
- color: currentColor;
660
- opacity: 0.7;
661
- font-size: 12px;
662
- }
663
-
664
- .message-image-error {
665
- display: inline-block;
666
- padding: 8px 12px;
667
- background: rgba(244, 67, 54, 0.1);
668
- border: 1px solid rgba(244, 67, 54, 0.3);
669
- border-radius: 4px;
670
- color: #f44336;
671
- font-size: 12px;
672
- max-width: 300px;
673
- word-break: break-word;
674
- }
675
-
676
- .message-text-content {
677
- display: inline;
678
- word-wrap: break-word;
679
- word-break: break-all;
680
- overflow-wrap: anywhere;
681
- hyphens: auto;
682
- }
683
-
684
- .message-paragraph {
685
- display: block;
686
- margin-bottom: 4px;
687
- }
688
-
689
- .message-paragraph:last-child {
690
- margin-bottom: 0;
691
- }
692
-
693
- .forward-message-container {
694
- border: 1px solid #fff;
695
- border-radius: 8px;
696
- margin: 4px 0;
697
- overflow: hidden;
698
- background: #f9f9f900;
699
- }
700
-
701
- .forward-message-preview {
702
- padding: 12px;
703
- cursor: pointer;
704
- transition: background-color 0.2s;
705
- }
706
-
707
- .forward-message-preview:hover {
708
- background: #f0f0f0;
709
- }
710
-
711
- .forward-message-title {
712
- font-weight: 600;
713
- color: #333;
714
- margin-bottom: 8px;
715
- font-size: 14px;
716
- }
717
-
718
- .forward-message-preview-item {
719
- color: #666;
720
- font-size: 13px;
721
- margin: 2px 0;
722
- line-height: 1.4;
723
- word-wrap: break-word;
724
- word-break: break-all;
725
- overflow-wrap: anywhere;
726
- }
727
-
728
- .forward-message-footer {
729
- display: flex;
730
- justify-content: space-between;
731
- align-items: center;
732
- margin-top: 8px;
733
- padding-top: 8px;
734
- border-top: 1px solid #e8e8e8;
735
- }
736
-
737
- .forward-message-count {
738
- color: #2196f3;
739
- font-size: 12px;
740
- }
741
-
742
- .forward-message-toggle {
743
- color: #666;
744
- font-size: 12px;
745
- }
746
-
747
- .forward-message-expanded {
748
- border-top: 1px solid #e0e0e0;
749
- background: #fff;
750
- max-height: 400px;
751
- overflow-y: auto;
752
- }
753
-
754
- .forwarded-message-item {
755
- padding: 12px;
756
- border-bottom: 1px solid #f0f0f0;
757
- }
758
-
759
- .forwarded-message-item:last-child {
760
- border-bottom: none;
761
- }
762
-
763
- .forwarded-message-header {
764
- display: flex;
765
- align-items: center;
766
- margin-bottom: 6px;
767
- }
768
-
769
- .forwarded-message-nickname {
770
- font-weight: 600;
771
- color: #333;
772
- font-size: 13px;
773
- }
774
-
775
- .forwarded-message-userid {
776
- color: #999;
777
- font-size: 11px;
778
- margin-left: 6px;
779
- }
780
-
781
- .forwarded-message-content {
782
- color: #555;
783
- font-size: 13px;
784
- line-height: 1.4;
785
- word-wrap: break-word;
786
- word-break: break-all;
787
- overflow-wrap: anywhere;
788
- }
789
-
790
- .message-at {
791
- background: rgba(33, 150, 243, 0.1);
792
- color: #2196f3;
793
- padding: 2px 4px;
794
- border-radius: 3px;
795
- font-weight: 500;
796
- cursor: pointer;
797
- }
798
-
799
- .message-unknown {
800
- background: rgba(255, 152, 0, 0.1);
801
- color: #ff9800;
802
- padding: 2px 4px;
803
- border-radius: 3px;
804
- font-style: italic;
805
- cursor: help;
806
- }
807
-
808
- .input-row input {
809
- flex: 1;
810
- min-width: 0;
811
- padding: 8px 12px;
812
- border: 1px solid rgba(128, 128, 128, 0.3);
813
- border-radius: 4px;
814
- outline: 0;
815
- background: 0 0;
816
- color: currentColor;
817
- }
818
-
819
- .input-row input:focus {
820
- border-color: #2196f3;
821
- box-shadow: 0 0 0 2px rgba(33, 150, 243, 0.2);
822
- }
823
-
824
- .input-row input::placeholder {
825
- color: currentColor;
826
- opacity: 0.5;
827
- }
828
-
829
- .input-row button {
830
- padding: 8px 16px;
831
- background: #2196f3;
832
- color: #fff;
833
- border: none;
834
- border-radius: 4px;
835
- cursor: pointer;
836
- transition: background-color 0.2s;
837
- flex-shrink: 0;
838
- white-space: nowrap;
839
- }
840
-
841
- .input-row button:hover:not(:disabled) {
842
- background: #1976d2;
843
- }
844
-
845
- .input-row button:disabled {
846
- background: rgba(128, 128, 128, 0.3);
847
- cursor: not-allowed;
848
- }
849
-
850
- .input-row button.is-sending {
851
- background: #ffc107 !important;
852
- color: #333 !important;
853
- cursor: default !important;
854
- }
855
-
856
- .message-input .input-row button.is-sending {
857
- background: #ffc107 !important;
858
- color: #333 !important;
859
- cursor: default !important;
860
- border-color: #ffc107 !important;
861
- }
862
-
863
- .empty-state {
864
- display: flex;
865
- align-items: center;
866
- justify-content: center;
867
- height: 100%;
868
- color: currentColor;
869
- opacity: 0.5;
870
- font-size: 14px;
871
- }
872
-
873
- .empty-state {
874
- display: flex;
875
- align-items: center;
876
- justify-content: center;
877
- height: 100%;
878
- color: currentColor;
879
- opacity: 0.5;
880
- font-size: 14px;
881
- }
882
-
883
- .message-text-content {
884
- display: inline;
885
- word-wrap: break-word;
886
- word-break: break-all;
887
- overflow-wrap: anywhere;
888
- hyphens: auto;
889
- }
890
-
891
- .message-image-container {
892
- display: block;
893
- margin: 4px 0;
894
- }
895
-
896
- .message-image {
897
- border-radius: 8px;
898
- margin: 4px 0;
899
- display: block;
900
- cursor: pointer;
901
- transition: transform 0.2s ease;
902
- object-fit: contain;
903
- background: rgba(128, 128, 128, 0.1);
904
- }
905
-
906
- .message-image:hover {
907
- transform: scale(1.02);
908
- }
909
-
910
- .message-image-loading {
911
- height: 60px;
912
- width: 200px;
913
- border-radius: 8px;
914
- margin: 4px 0;
915
- display: flex;
916
- align-items: center;
917
- justify-content: center;
918
- background: rgba(128, 128, 128, 0.1);
919
- color: currentColor;
920
- opacity: 0.7;
921
- font-size: 14px;
922
- border: 1px dashed rgba(128, 128, 128, 0.3);
923
- }
924
-
925
- .message-image-error {
926
- min-height: 60px;
927
- width: 200px;
928
- border-radius: 8px;
929
- margin: 4px 0;
930
- display: flex;
931
- flex-direction: column;
932
- align-items: center;
933
- justify-content: center;
934
- background: rgba(128, 128, 128, 0.1);
935
- color: currentColor;
936
- opacity: 0.7;
937
- font-size: 14px;
938
- border: 1px dashed rgba(128, 128, 128, 0.3);
939
- padding: 8px;
940
- text-align: center;
941
- }
942
-
943
- .message-at {
944
- background: rgba(33, 150, 243, 0.1);
945
- color: #2196f3;
946
- padding: 2px 6px;
947
- border-radius: 4px;
948
- font-weight: 500;
949
- cursor: pointer;
950
- display: inline-block;
951
- margin: 0 2px;
952
- }
953
-
954
- .message-at:hover {
955
- background: rgba(33, 150, 243, 0.2);
956
- }
957
-
958
- .message-unknown {
959
- background: rgba(255, 152, 0, 0.1);
960
- color: #ff9800;
961
- padding: 2px 6px;
962
- border-radius: 4px;
963
- font-size: 12px;
964
- display: inline-block;
965
- margin: 0 2px;
966
- cursor: help;
967
- }
968
-
969
- @keyframes pulse {
970
- 0%,
971
- 100% {
972
- transform: translate(-50%, -50%) scale(1);
973
- }
974
-
975
- 50% {
976
- transform: translate(-50%, -50%) scale(1.1);
977
- }
978
- }
979
-
980
- .channel-message-count.will-delete {
981
- background: #f44336 !important;
982
- animation: shake 0.3s ease-in-out infinite;
983
- }
984
-
985
- @keyframes shake {
986
- 0%,
987
- 100% {
988
- transform: translateX(0);
989
- }
990
-
991
- 25% {
992
- transform: translateX(-2px);
993
- }
994
-
995
- 75% {
996
- transform: translateX(2px);
997
- }
998
- }
999
-
1000
- body.dragging-bubble-global {
1001
- user-select: none;
1002
- -webkit-user-select: none;
1003
- -moz-user-select: none;
1004
- -ms-user-select: none;
1005
- cursor: grabbing;
1006
- }
1007
-
1008
- .drag-threshold-circle {
1009
- position: fixed;
1010
- pointer-events: none;
1011
- border: 3px dashed rgba(244, 67, 54, 0.8);
1012
- border-radius: 50%;
1013
- z-index: 999;
1014
- background: rgba(244, 67, 54, 0.1);
1015
- box-shadow: 0 0 20px rgba(244, 67, 54, 0.3);
1016
- animation: pulseThreshold 1.5s ease-in-out infinite;
1017
- }
1018
-
1019
- .context-menu {
1020
- position: fixed;
1021
- background: rgba(255, 255, 255, 0.98);
1022
- border: none;
1023
- border-radius: 16px;
1024
- box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12), 0 2px 8px rgba(0, 0, 0, 0.08);
1025
- backdrop-filter: blur(20px);
1026
- -webkit-backdrop-filter: blur(20px);
1027
- overflow: hidden;
1028
- z-index: 10000;
1029
- min-width: 180px;
1030
- }
1031
-
1032
- .context-menu-item {
1033
- display: flex;
1034
- align-items: center;
1035
- gap: 12px;
1036
- padding: 14px 18px;
1037
- background: 0 0;
1038
- border: none;
1039
- color: #333;
1040
- font-size: 14px;
1041
- font-weight: 500;
1042
- cursor: pointer;
1043
- transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
1044
- width: 100%;
1045
- text-align: left;
1046
- position: relative;
1047
- border-bottom: 1px solid rgba(0, 0, 0, 0.08);
1048
- min-width: 140px;
1049
- }
1050
-
1051
- .context-menu-item:last-child {
1052
- border-bottom: none;
1053
- }
1054
-
1055
- .context-menu-item::before {
1056
- content: "";
1057
- position: absolute;
1058
- left: 0;
1059
- top: 0;
1060
- bottom: 0;
1061
- width: 3px;
1062
- background: linear-gradient(135deg, #667eea 0, #764ba2 100%);
1063
- transform: scaleY(0);
1064
- transition: transform 0.2s cubic-bezier(0.4, 0, 0.2, 1);
1065
- }
1066
-
1067
- .context-menu-item:hover {
1068
- background: linear-gradient(
1069
- 90deg,
1070
- rgba(102, 126, 234, 0.08) 0,
1071
- rgba(118, 75, 162, 0.08) 100%
1072
- );
1073
- color: #667eea;
1074
- transform: translateX(4px);
1075
- }
1076
-
1077
- .context-menu-item:hover::before {
1078
- transform: scaleY(1);
1079
- }
1080
-
1081
- .context-menu-item.danger {
1082
- color: #d32f2f;
1083
- }
1084
-
1085
- .context-menu-item.danger:hover {
1086
- background: linear-gradient(
1087
- 90deg,
1088
- rgba(244, 67, 54, 0.08) 0,
1089
- rgba(211, 47, 47, 0.08) 100%
1090
- );
1091
- color: #d32f2f;
1092
- }
1093
-
1094
- .bot-item.pinned,
1095
- .channel-item.pinned {
1096
- background: rgba(255, 193, 7, 0.1);
1097
- border-left: 3px solid #ffc107;
1098
- }
1099
-
1100
- .bot-item.pinned::before,
1101
- .channel-item.pinned::before {
1102
- content: "📌";
1103
- position: absolute;
1104
- left: 4px;
1105
- top: 50%;
1106
- transform: translateY(-50%);
1107
- font-size: 12px;
1108
- opacity: 0.7;
1109
- }
1110
-
1111
- .bot-item.pinned {
1112
- position: relative;
1113
- padding-left: 24px;
1114
- }
1115
-
1116
- .channel-item.pinned {
1117
- position: relative;
1118
- padding-left: 24px;
1119
- }
1120
-
1121
- @media (prefers-color-scheme: dark) {
1122
- .context-menu {
1123
- background: rgba(30, 30, 30, 0.98);
1124
- box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3), 0 2px 8px rgba(0, 0, 0, 0.2);
1125
- }
1126
-
1127
- .context-menu-item {
1128
- color: #fff;
1129
- border-bottom-color: rgba(255, 255, 255, 0.1);
1130
- }
1131
-
1132
- .context-menu-item::before {
1133
- background: linear-gradient(135deg, #4facfe 0, #00f2fe 100%);
1134
- }
1135
-
1136
- .context-menu-item:hover {
1137
- background: linear-gradient(
1138
- 90deg,
1139
- rgba(79, 172, 254, 0.12) 0,
1140
- rgba(0, 242, 254, 0.12) 100%
1141
- );
1142
- color: #4facfe;
1143
- }
1144
-
1145
- .context-menu-item.danger:hover {
1146
- background: linear-gradient(
1147
- 90deg,
1148
- rgba(244, 67, 54, 0.12) 0,
1149
- rgba(255, 138, 128, 0.12) 100%
1150
- );
1151
- color: #ff8a80;
1152
- }
1153
-
1154
- .bot-item.pinned,
1155
- .channel-item.pinned {
1156
- background: rgba(255, 193, 7, 0.15);
1157
- }
1158
- }
1159
-
1160
- .message-share-card {
1161
- display: inline-block;
1162
- width: 75px;
1163
- margin: 8px 0;
1164
- border: 1px solid rgba(128, 128, 128, 0.2);
1165
- border-radius: 12px;
1166
- background: rgba(255, 255, 255, 0.05);
1167
- transition: all 0.3s ease;
1168
- cursor: pointer;
1169
- backdrop-filter: blur(8px);
1170
- -webkit-backdrop-filter: blur(8px);
1171
- }
1172
-
1173
- .message-share-card:hover {
1174
- transform: translateY(-2px);
1175
- box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
1176
- border-color: rgba(33, 150, 243, 0.3);
1177
- }
1178
-
1179
- .share-card-preview {
1180
- width: 100%;
1181
- position: relative;
1182
- display: flex;
1183
- align-items: center;
1184
- justify-content: center;
1185
- padding: 4px;
1186
- border-radius: 12px 12px 0 0;
1187
- }
1188
-
1189
- .share-card-image {
1190
- max-width: calc(100% - 8px);
1191
- width: auto;
1192
- height: auto;
1193
- object-fit: contain;
1194
- transition: transform 0.3s ease;
1195
- display: block;
1196
- border-radius: 4px;
1197
- }
1198
-
1199
- .message-share-card:hover .share-card-image {
1200
- transform: scale(1.05);
1201
- }
1202
-
1203
- .share-card-content {
1204
- padding: 8px;
1205
- }
1206
-
1207
- .share-card-header {
1208
- display: flex;
1209
- align-items: center;
1210
- margin-bottom: 12px;
1211
- gap: 12px;
1212
- }
1213
-
1214
- .share-card-icon {
1215
- width: 32px;
1216
- height: 32px;
1217
- border-radius: 8px;
1218
- object-fit: cover;
1219
- flex-shrink: 0;
1220
- }
1221
-
1222
- .share-card-app-info {
1223
- flex: 1;
1224
- min-width: 0;
1225
- }
1226
-
1227
- .share-card-app-name {
1228
- font-size: 12px;
1229
- color: currentColor;
1230
- opacity: 0.7;
1231
- margin-bottom: 2px;
1232
- font-weight: 500;
1233
- }
1234
-
1235
- .share-card-title {
1236
- font-size: 10px;
1237
- font-weight: 600;
1238
- color: currentColor;
1239
- line-height: 1.2;
1240
- word-wrap: break-word;
1241
- display: -webkit-box;
1242
- -webkit-box-orient: vertical;
1243
- overflow: hidden;
1244
- }
1245
-
1246
- .share-card-desc {
1247
- font-size: 14px;
1248
- color: currentColor;
1249
- opacity: 0.8;
1250
- line-height: 1.4;
1251
- margin-bottom: 12px;
1252
- display: -webkit-box;
1253
- -webkit-box-orient: vertical;
1254
- overflow: hidden;
1255
- word-wrap: break-word;
1256
- }
1257
-
1258
- .share-card-link-hint {
1259
- font-size: 12px;
1260
- color: #2196f3;
1261
- font-weight: 500;
1262
- display: flex;
1263
- align-items: center;
1264
- gap: 4px;
1265
- }
1266
-
1267
- .share-card-link-hint::after {
1268
- content: "→";
1269
- transition: transform 0.2s ease;
1270
- }
1271
-
1272
- .message-share-card:hover .share-card-link-hint::after {
1273
- transform: translateX(2px);
1274
- }
1275
-
1276
- .message-json-error,
1277
- .message-json-raw {
1278
- display: inline-block;
1279
- margin: 8px 0;
1280
- max-width: 400px;
1281
- }
1282
-
1283
- .json-error-text {
1284
- color: #f44336;
1285
- font-size: 14px;
1286
- font-weight: 500;
1287
- }
1288
-
1289
- .json-label {
1290
- color: currentColor;
1291
- opacity: 0.7;
1292
- font-size: 12px;
1293
- font-weight: 500;
1294
- margin-bottom: 8px;
1295
- }
1296
-
1297
- .json-raw-data {
1298
- margin-top: 8px;
1299
- }
1300
-
1301
- .json-raw-data summary {
1302
- cursor: pointer;
1303
- font-size: 12px;
1304
- color: #2196f3;
1305
- font-weight: 500;
1306
- padding: 4px 8px;
1307
- border-radius: 4px;
1308
- background: rgba(33, 150, 243, 0.1);
1309
- display: inline-block;
1310
- transition: background-color 0.2s ease;
1311
- }
1312
-
1313
- .json-raw-data summary:hover {
1314
- background: rgba(33, 150, 243, 0.2);
1315
- }
1316
-
1317
- .json-raw-content {
1318
- margin-top: 8px;
1319
- padding: 12px;
1320
- background: rgba(128, 128, 128, 0.1);
1321
- border-radius: 8px;
1322
- font-family: "Courier New", monospace;
1323
- font-size: 12px;
1324
- color: currentColor;
1325
- opacity: 0.8;
1326
- white-space: pre-wrap;
1327
- word-wrap: break-word;
1328
- word-break: break-all;
1329
- overflow-wrap: anywhere;
1330
- max-height: 200px;
1331
- overflow-y: auto;
1332
- border: 1px solid rgba(128, 128, 128, 0.2);
1333
- }
1334
-
1335
- @media (prefers-color-scheme: dark) {
1336
- .message-share-card {
1337
- background: rgba(255, 255, 255, 0.08);
1338
- border-color: rgba(255, 255, 255, 0.15);
1339
- }
1340
-
1341
- .message-share-card:hover {
1342
- border-color: rgba(33, 150, 243, 0.5);
1343
- box-shadow: 0 8px 24px rgba(0, 0, 0, 0.3);
1344
- }
1345
-
1346
- .json-raw-content {
1347
- background: rgba(255, 255, 255, 0.05);
1348
- border-color: rgba(255, 255, 255, 0.1);
1349
- }
1350
- }
1351
-
1352
- @media (max-width: 768px) {
1353
- .chat-container {
1354
- position: relative;
1355
- height: 100vh;
1356
- height: 100dvh;
1357
- }
1358
-
1359
- .bot-list,
1360
- .channel-list,
1361
- .message-area {
1362
- position: absolute;
1363
- top: 0;
1364
- left: 0;
1365
- width: 100%;
1366
- height: 100%;
1367
- transition: transform 0.3s ease;
1368
- z-index: 1;
1369
- }
1370
-
1371
- .bot-list {
1372
- transform: translateX(0);
1373
- z-index: 3;
1374
- }
1375
-
1376
- .channel-list {
1377
- transform: translateX(100%);
1378
- z-index: 2;
1379
- }
1380
-
1381
- .message-area {
1382
- transform: translateX(200%);
1383
- z-index: 1;
1384
- }
1385
-
1386
- .chat-container.show-channels .bot-list {
1387
- transform: translateX(-100%);
1388
- }
1389
-
1390
- .chat-container.show-channels .channel-list {
1391
- transform: translateX(0);
1392
- z-index: 3;
1393
- }
1394
-
1395
- .chat-container.show-channels .message-area {
1396
- transform: translateX(100%);
1397
- }
1398
-
1399
- .chat-container.show-messages .bot-list {
1400
- transform: translateX(-200%);
1401
- }
1402
-
1403
- .chat-container.show-messages .channel-list {
1404
- transform: translateX(-100%);
1405
- }
1406
-
1407
- .chat-container.show-messages .message-area {
1408
- transform: translateX(0);
1409
- z-index: 3;
1410
- }
1411
-
1412
- .back-button {
1413
- display: none !important;
1414
- }
1415
-
1416
- .panel-header {
1417
- flex-direction: row-reverse;
1418
- position: sticky;
1419
- top: 0;
1420
- z-index: 5;
1421
- background: inherit;
1422
- }
1423
-
1424
- .panel-header h3 {
1425
- text-align: right;
1426
- }
1427
-
1428
- .floating-scroll-button {
1429
- right: 16px;
1430
- bottom: calc(90px + env(safe-area-inset-bottom, 0px));
1431
- width: 40px;
1432
- height: 40px;
1433
- transition: bottom 0.3s ease;
1434
- }
1435
-
1436
- .message-input {
1437
- padding: 8px 12px calc(12px + env(safe-area-inset-bottom, 0px)) 12px;
1438
- position: fixed;
1439
- bottom: 20px;
1440
- left: 0;
1441
- right: 0;
1442
- background: inherit;
1443
- border-top: 1px solid rgba(128, 128, 128, 0.2);
1444
- z-index: 10;
1445
- min-height: calc(60px + env(safe-area-inset-bottom, 0px));
1446
- transition: transform 0.3s ease;
1447
- transform: translateZ(0);
1448
- }
1449
-
1450
- .input-row input {
1451
- font-size: 16px;
1452
- padding: 10px 12px;
1453
- }
1454
-
1455
- .input-row button {
1456
- padding: 10px 16px;
1457
- font-size: 16px;
1458
- }
1459
-
1460
- .message-history {
1461
- padding: 12px;
1462
- max-height: calc(100vh - 140px - env(safe-area-inset-bottom, 0px));
1463
- max-height: calc(100dvh - 140px - env(safe-area-inset-bottom, 0px));
1464
- padding-bottom: calc(80px + env(safe-area-inset-bottom, 0px));
1465
- overflow-y: auto;
1466
- -webkit-overflow-scrolling: touch;
1467
- transition: max-height 0.3s ease;
1468
- }
1469
-
1470
- .message-item {
1471
- margin-bottom: 12px;
1472
- padding: 6px;
1473
- }
1474
-
1475
- .message-text {
1476
- max-width: 90% !important;
1477
- }
1478
-
1479
- .message-avatar {
1480
- width: 28px;
1481
- height: 28px;
1482
- margin-right: 8px;
1483
- }
1484
-
1485
- .message-item.bot-message .message-avatar {
1486
- margin-left: 8px;
1487
- }
1488
-
1489
- .message-image {
1490
- max-width: min(280px, 66.67vw);
1491
- max-height: 160px;
1492
- }
1493
-
1494
- .quote-content .message-image {
1495
- max-width: min(150px, 50vw);
1496
- max-height: 80px;
1497
- }
1498
-
1499
- .context-menu {
1500
- min-width: 160px;
1501
- backdrop-filter: blur(12px);
1502
- -webkit-backdrop-filter: blur(12px);
1503
- }
1504
-
1505
- .context-menu-item {
1506
- padding: 10px 12px;
1507
- font-size: 13px;
1508
- min-width: 100px;
1509
- }
1510
-
1511
- .bot-item,
1512
- .channel-item {
1513
- padding: 14px 16px;
1514
- }
1515
-
1516
- .bot-avatar {
1517
- width: 36px;
1518
- height: 36px;
1519
- margin-right: 10px;
1520
- }
1521
-
1522
- .bot-name,
1523
- .channel-name {
1524
- font-size: 15px;
1525
- }
1526
-
1527
- .bot-platform,
1528
- .channel-type {
1529
- font-size: 13px;
1530
- }
1531
-
1532
- .bot-items,
1533
- .channel-items {
1534
- flex: 1;
1535
- overflow-y: auto;
1536
- overflow-x: hidden;
1537
- max-height: calc(100vh - 140px);
1538
- max-height: calc(100dvh - 140px);
1539
- -webkit-overflow-scrolling: touch;
1540
- scrollbar-width: thin;
1541
- scrollbar-color: rgba(144, 147, 153, 0.4) rgba(0, 0, 0, 0.05);
1542
- scroll-behavior: smooth;
1543
- overscroll-behavior: contain;
1544
- padding-bottom: 8px;
1545
- }
1546
- }
1547
-
1548
- @media (min-width: 769px) and (max-width: 1024px) {
1549
- .bot-list {
1550
- width: 220px;
1551
- min-width: 220px;
1552
- max-width: 220px;
1553
- }
1554
-
1555
- .channel-list {
1556
- width: 280px;
1557
- min-width: 280px;
1558
- max-width: 280px;
1559
- }
1560
-
1561
- .message-image {
1562
- max-width: min(350px, 66.67vw);
1563
- max-height: 180px;
1564
- }
1565
- }
1566
-
1567
- .chat-container.swiping {
1568
- overflow: hidden;
1569
- }
1570
-
1571
- .bot-list.swiping,
1572
- .channel-list.swiping,
1573
- .message-area.swiping {
1574
- transition: none !important;
1575
- }
1576
-
1577
- .swipe-indicator {
1578
- position: fixed;
1579
- top: 50%;
1580
- left: 20px;
1581
- transform: translateY(-50%);
1582
- background: rgba(33, 150, 243, 0.8);
1583
- color: #fff;
1584
- padding: 8px 12px;
1585
- border-radius: 20px;
1586
- font-size: 14px;
1587
- z-index: 1000;
1588
- opacity: 0;
1589
- transition: opacity 0.2s ease;
1590
- pointer-events: none;
1591
- backdrop-filter: blur(8px);
1592
- -webkit-backdrop-filter: blur(8px);
1593
- }
1594
-
1595
- .swipe-indicator.show {
1596
- opacity: 1;
1597
- }
1598
-
1599
- .message-area .message-content {
1600
- padding-bottom: 80px;
1601
- }
1602
-
1603
- .image-preview-container {
1604
- display: flex;
1605
- flex-wrap: wrap;
1606
- gap: 8px;
1607
- padding: 8px 0;
1608
- margin-bottom: 8px;
1609
- border-bottom: 1px solid rgba(128, 128, 128, 0.1);
1610
- }
1611
-
1612
- .image-preview-item {
1613
- position: relative;
1614
- width: 60px;
1615
- height: 60px;
1616
- border-radius: 8px;
1617
- overflow: hidden;
1618
- border: 2px solid rgba(33, 150, 243, 0.3);
1619
- background: rgba(128, 128, 128, 0.1);
1620
- }
1621
-
1622
- .preview-image {
1623
- width: 100%;
1624
- height: 100%;
1625
- object-fit: cover;
1626
- display: block;
1627
- }
1628
-
1629
- .remove-image-btn {
1630
- position: absolute;
1631
- top: -6px;
1632
- right: -6px;
1633
- width: 20px;
1634
- height: 20px;
1635
- border-radius: 50%;
1636
- background: #f44336;
1637
- color: #fff;
1638
- border: none;
1639
- cursor: pointer;
1640
- display: flex;
1641
- align-items: center;
1642
- justify-content: center;
1643
- font-size: 12px;
1644
- transition: all 0.2s ease;
1645
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
1646
- }
1647
-
1648
- .remove-image-btn:hover {
1649
- background: #d32f2f;
1650
- transform: scale(1.1);
1651
- }
1652
-
1653
- .input-actions {
1654
- position: relative;
1655
- margin-right: 8px;
1656
- }
1657
-
1658
- .add-button {
1659
- width: 36px;
1660
- height: 36px;
1661
- border-radius: 12px;
1662
- background: linear-gradient(135deg, #667eea 0, #764ba2 100%);
1663
- border: none;
1664
- color: #fff;
1665
- cursor: pointer;
1666
- display: flex;
1667
- align-items: center;
1668
- justify-content: center;
1669
- transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
1670
- flex-shrink: 0;
1671
- box-shadow: 0 2px 8px rgba(102, 126, 234, 0.3);
1672
- position: relative;
1673
- overflow: hidden;
1674
- }
1675
-
1676
- .add-button::before {
1677
- content: "";
1678
- position: absolute;
1679
- top: 0;
1680
- left: 0;
1681
- right: 0;
1682
- bottom: 0;
1683
- background: linear-gradient(
1684
- 135deg,
1685
- rgba(255, 255, 255, 0.2) 0,
1686
- rgba(255, 255, 255, 0.1) 100%
1687
- );
1688
- border-radius: 12px;
1689
- opacity: 0;
1690
- transition: opacity 0.3s ease;
1691
- }
1692
-
1693
- .add-button:hover {
1694
- transform: translateY(-2px) scale(1.05);
1695
- box-shadow: 0 4px 16px rgba(102, 126, 234, 0.4);
1696
- }
1697
-
1698
- .add-button:hover::before {
1699
- opacity: 1;
1700
- }
1701
-
1702
- .add-button.active {
1703
- background: linear-gradient(135deg, #f093fb 0, #f5576c 100%);
1704
- transform: translateY(-2px) scale(1.05) rotate(45deg);
1705
- box-shadow: 0 4px 16px rgba(245, 87, 108, 0.4);
1706
- }
1707
-
1708
- .add-button:active {
1709
- transform: translateY(0) scale(0.98);
1710
- transition: all 0.1s ease;
1711
- }
1712
-
1713
- .action-menu {
1714
- position: absolute;
1715
- bottom: 100%;
1716
- left: 0;
1717
- margin-bottom: 12px;
1718
- background: rgba(255, 255, 255, 0.98);
1719
- border: none;
1720
- border-radius: 16px;
1721
- box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12), 0 2px 8px rgba(0, 0, 0, 0.08);
1722
- backdrop-filter: blur(20px);
1723
- -webkit-backdrop-filter: blur(20px);
1724
- overflow: hidden;
1725
- z-index: 1000;
1726
- min-width: 140px;
1727
- transform: translateY(8px);
1728
- opacity: 0;
1729
- animation: menuSlideIn 0.3s cubic-bezier(0.4, 0, 0.2, 1) forwards;
1730
- }
1731
-
1732
- .action-menu-item {
1733
- display: flex;
1734
- align-items: center;
1735
- gap: 12px;
1736
- padding: 14px 18px;
1737
- background: 0 0;
1738
- border: none;
1739
- color: #333;
1740
- font-size: 14px;
1741
- font-weight: 500;
1742
- cursor: pointer;
1743
- transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
1744
- width: 100%;
1745
- text-align: left;
1746
- position: relative;
1747
- }
1748
-
1749
- .action-menu-item::before {
1750
- content: "";
1751
- position: absolute;
1752
- left: 0;
1753
- top: 0;
1754
- bottom: 0;
1755
- width: 3px;
1756
- background: linear-gradient(135deg, #667eea 0, #764ba2 100%);
1757
- transform: scaleY(0);
1758
- transition: transform 0.2s cubic-bezier(0.4, 0, 0.2, 1);
1759
- }
1760
-
1761
- .action-menu-item:hover {
1762
- background: linear-gradient(
1763
- 90deg,
1764
- rgba(102, 126, 234, 0.08) 0,
1765
- rgba(118, 75, 162, 0.08) 100%
1766
- );
1767
- color: #667eea;
1768
- transform: translateX(4px);
1769
- }
1770
-
1771
- .action-menu-item:hover::before {
1772
- transform: scaleY(1);
1773
- }
1774
-
1775
- .action-menu-item svg {
1776
- flex-shrink: 0;
1777
- }
1778
-
1779
- @media (prefers-color-scheme: dark) {
1780
- .action-menu {
1781
- background: rgba(30, 30, 30, 0.98);
1782
- box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3), 0 2px 8px rgba(0, 0, 0, 0.2);
1783
- }
1784
-
1785
- .action-menu-item {
1786
- color: #fff;
1787
- }
1788
-
1789
- .action-menu-item::before {
1790
- background: linear-gradient(135deg, #4facfe 0, #00f2fe 100%);
1791
- }
1792
-
1793
- .action-menu-item:hover {
1794
- background: linear-gradient(
1795
- 90deg,
1796
- rgba(79, 172, 254, 0.12) 0,
1797
- rgba(0, 242, 254, 0.12) 100%
1798
- );
1799
- color: #4facfe;
1800
- }
1801
-
1802
- .add-button {
1803
- background: linear-gradient(135deg, #4facfe 0, #00f2fe 100%);
1804
- box-shadow: 0 2px 8px rgba(79, 172, 254, 0.3);
1805
- }
1806
-
1807
- .add-button:hover {
1808
- box-shadow: 0 4px 16px rgba(79, 172, 254, 0.4);
1809
- }
1810
-
1811
- .add-button.active {
1812
- background: linear-gradient(135deg, #fa709a 0, #fee140 100%);
1813
- box-shadow: 0 4px 16px rgba(250, 112, 154, 0.4);
1814
- }
1815
-
1816
- .image-preview-item {
1817
- border-color: rgba(100, 181, 246, 0.5);
1818
- background: rgba(255, 255, 255, 0.05);
1819
- }
1820
- }
1821
-
1822
- @media (max-width: 768px) {
1823
- .image-preview-container {
1824
- padding: 6px 0;
1825
- margin-bottom: 6px;
1826
- }
1827
-
1828
- .image-preview-item {
1829
- width: 50px;
1830
- height: 50px;
1831
- }
1832
-
1833
- .add-button {
1834
- width: 32px;
1835
- height: 32px;
1836
- border-radius: 10px;
1837
- }
1838
-
1839
- .action-menu {
1840
- min-width: 100px;
1841
- }
1842
-
1843
- .action-menu-item {
1844
- padding: 10px 12px;
1845
- font-size: 13px;
1846
- }
1847
-
1848
- .remove-image-btn {
1849
- width: 18px;
1850
- height: 18px;
1851
- top: -5px;
1852
- right: -5px;
1853
- }
1854
- }
1855
-
1856
- .message-history::-webkit-scrollbar {
1857
- width: 6px;
1858
- }
1859
-
1860
- .message-history::-webkit-scrollbar-track {
1861
- background: 0 0;
1862
- }
1863
-
1864
- .message-history::-webkit-scrollbar-thumb {
1865
- background-color: rgba(144, 147, 153, 0.3);
1866
- border-radius: 4px;
1867
- transition: background-color 0.3s;
1868
- }
1869
-
1870
- .message-history::-webkit-scrollbar-thumb:hover {
1871
- background-color: rgba(144, 147, 153, 0.5);
1872
- }
1873
-
1874
- .bot-items::-webkit-scrollbar,
1875
- .channel-items::-webkit-scrollbar {
1876
- width: 8px;
1877
- }
1878
-
1879
- .bot-items::-webkit-scrollbar-track,
1880
- .channel-items::-webkit-scrollbar-track {
1881
- background: rgba(0, 0, 0, 0.05);
1882
- border-radius: 4px;
1883
- }
1884
-
1885
- .bot-items::-webkit-scrollbar-thumb,
1886
- .channel-items::-webkit-scrollbar-thumb {
1887
- background-color: rgba(144, 147, 153, 0.4);
1888
- border-radius: 4px;
1889
- transition: all 0.3s ease;
1890
- border: 1px solid rgba(255, 255, 255, 0.1);
1891
- background-clip: padding-box;
1892
- }
1893
-
1894
- .bot-items::-webkit-scrollbar-thumb:hover,
1895
- .channel-items::-webkit-scrollbar-thumb:hover {
1896
- background-color: rgba(144, 147, 153, 0.6);
1897
- transform: scaleX(1.2);
1898
- }
1899
-
1900
- .bot-items::-webkit-scrollbar-thumb:active,
1901
- .channel-items::-webkit-scrollbar-thumb:active {
1902
- background-color: rgba(144, 147, 153, 0.8);
1903
- }
1904
-
1905
- .forward-message-expanded::-webkit-scrollbar {
1906
- width: 6px;
1907
- }
1908
-
1909
- .forward-message-expanded::-webkit-scrollbar-track {
1910
- background: 0 0;
1911
- }
1912
-
1913
- .forward-message-expanded::-webkit-scrollbar-thumb {
1914
- background-color: rgba(144, 147, 153, 0.3);
1915
- border-radius: 4px;
1916
- transition: background-color 0.3s;
1917
- }
1918
-
1919
- .forward-message-expanded::-webkit-scrollbar-thumb:hover {
1920
- background-color: rgba(144, 147, 153, 0.5);
1921
- }
1922
-
1923
- .json-raw-content::-webkit-scrollbar {
1924
- width: 6px;
1925
- }
1926
-
1927
- .json-raw-content::-webkit-scrollbar-track {
1928
- background: 0 0;
1929
- }
1930
-
1931
- .json-raw-content::-webkit-scrollbar-thumb {
1932
- background-color: rgba(144, 147, 153, 0.3);
1933
- border-radius: 4px;
1934
- transition: background-color 0.3s;
1935
- }
1936
-
1937
- .json-raw-content::-webkit-scrollbar-thumb:hover {
1938
- background-color: rgba(144, 147, 153, 0.5);
1939
- }
1940
-
1941
- @media (prefers-color-scheme: dark) {
1942
- .bot-items::-webkit-scrollbar-track,
1943
- .channel-items::-webkit-scrollbar-track {
1944
- background: rgba(255, 255, 255, 0.05);
1945
- }
1946
-
1947
- .bot-items::-webkit-scrollbar-thumb,
1948
- .channel-items::-webkit-scrollbar-thumb,
1949
- .forward-message-expanded::-webkit-scrollbar-thumb,
1950
- .json-raw-content::-webkit-scrollbar-thumb,
1951
- .message-history::-webkit-scrollbar-thumb {
1952
- background-color: rgba(255, 255, 255, 0.3);
1953
- border-color: rgba(0, 0, 0, 0.1);
1954
- }
1955
-
1956
- .bot-items::-webkit-scrollbar-thumb:hover,
1957
- .channel-items::-webkit-scrollbar-thumb:hover,
1958
- .forward-message-expanded::-webkit-scrollbar-thumb:hover,
1959
- .json-raw-content::-webkit-scrollbar-thumb:hover,
1960
- .message-history::-webkit-scrollbar-thumb:hover {
1961
- background-color: rgba(255, 255, 255, 0.5);
1962
- }
1963
-
1964
- .bot-items::-webkit-scrollbar-thumb:active,
1965
- .channel-items::-webkit-scrollbar-thumb:active {
1966
- background-color: rgba(255, 255, 255, 0.7);
1967
- }
1968
- }
1969
-
1970
- .loading-more-indicator {
1971
- display: flex;
1972
- align-items: center;
1973
- justify-content: center;
1974
- padding: 12px;
1975
- color: #6c757d;
1976
- font-size: 14px;
1977
- }
1978
-
1979
- .loading-spinner {
1980
- width: 20px;
1981
- height: 20px;
1982
- border: 2px solid #f3f3f3;
1983
- border-top: 2px solid #2196f3;
1984
- border-radius: 50%;
1985
- animation: spin 1s linear infinite;
1986
- margin-right: 8px;
1987
- }
1988
-
1989
- @keyframes spin {
1990
- 0% {
1991
- transform: rotate(0deg);
1992
- }
1993
-
1994
- 100% {
1995
- transform: rotate(360deg);
1996
- }
1997
- }