@helpway/react 0.1.1 → 0.3.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 DELETED
@@ -1,2865 +0,0 @@
1
- /* src/themed/styles.css */
2
- :host {
3
- all: initial;
4
- font-family:
5
- -apple-system,
6
- BlinkMacSystemFont,
7
- "Segoe UI",
8
- Roboto,
9
- "Helvetica Neue",
10
- Arial,
11
- sans-serif;
12
- font-size: 14px;
13
- line-height: 1.5;
14
- color: #1a1a1a;
15
- -webkit-font-smoothing: antialiased;
16
- -moz-osx-font-smoothing: grayscale;
17
- }
18
- .hw-widget *,
19
- .hw-widget *::before,
20
- .hw-widget *::after {
21
- box-sizing: border-box;
22
- margin: 0;
23
- padding: 0;
24
- }
25
- .hw-widget {
26
- --hw-primary: #171717;
27
- --hw-primary-hover: #2a2a2a;
28
- --hw-focus-border: #9ca3af;
29
- --hw-focus-ring: rgba(0, 0, 0, 0.06);
30
- --hw-accent: #6366f1;
31
- --hw-bg: #ffffff;
32
- --hw-bg-subtle: #fafafa;
33
- --hw-bg-hover: #f5f5f5;
34
- --hw-border: #f0f0f0;
35
- --hw-border-md: #e5e5e5;
36
- --hw-text: #111;
37
- --hw-text-1: #111;
38
- --hw-text-2: #666;
39
- --hw-text-3: #999;
40
- --hw-text-4: #bbb;
41
- --hw-radius: 16px;
42
- --hw-visitor-bubble-bg: #f0f0f0;
43
- --hw-visitor-bubble-text: #1a1a1a;
44
- --hw-font: inherit;
45
- }
46
- .hw-agent-img {
47
- width: 100%;
48
- height: 100%;
49
- object-fit: cover;
50
- }
51
- .hw-agent-icon {
52
- width: 100%;
53
- height: 100%;
54
- border-radius: inherit;
55
- }
56
- .hw-widget :focus-visible {
57
- outline: 2px solid var(--hw-primary);
58
- outline-offset: 2px;
59
- }
60
- .hw-widget :focus:not(:focus-visible) {
61
- outline: none;
62
- }
63
- .hw-widget {
64
- position: fixed;
65
- bottom: 20px;
66
- right: var(--hw-position-right, 20px);
67
- left: var(--hw-position-left, auto);
68
- z-index: 999999;
69
- font-family: var(--hw-font);
70
- }
71
- .hw-bubble {
72
- width: 48px;
73
- height: 48px;
74
- border-radius: 14px;
75
- background: var(--hw-primary);
76
- color: white;
77
- border: none;
78
- cursor: pointer;
79
- display: flex;
80
- align-items: center;
81
- justify-content: center;
82
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
83
- transition: transform 0.2s cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow 0.2s ease;
84
- position: relative;
85
- overflow: visible;
86
- }
87
- .hw-bubble--rounded {
88
- border-radius: 14px;
89
- }
90
- .hw-bubble--square {
91
- border-radius: 8px;
92
- }
93
- .hw-bubble--pill {
94
- border-radius: 24px;
95
- }
96
- .hw-bubble--launcher-bubble,
97
- .hw-bubble--launcher-help {
98
- width: auto;
99
- padding: 0 16px 0 12px;
100
- gap: 8px;
101
- border-radius: 24px;
102
- }
103
- .hw-bubble--launcher-bubble.hw-bubble--square,
104
- .hw-bubble--launcher-help.hw-bubble--square {
105
- border-radius: 8px;
106
- }
107
- .hw-bubble--launcher-bubble.hw-bubble--rounded,
108
- .hw-bubble--launcher-help.hw-bubble--rounded {
109
- border-radius: 14px;
110
- }
111
- .hw-bubble-label {
112
- font-size: 14px;
113
- font-weight: 600;
114
- white-space: nowrap;
115
- line-height: 1;
116
- position: static;
117
- opacity: 1;
118
- transform: none;
119
- }
120
- .hw-bubble--launcher-bubble .hw-bubble-icon,
121
- .hw-bubble--launcher-help .hw-bubble-icon {
122
- position: static;
123
- }
124
- .hw-bubble:hover {
125
- transform: scale(1.05);
126
- box-shadow: 0 6px 20px rgba(0, 0, 0, 0.2);
127
- }
128
- .hw-bubble:active {
129
- transform: scale(0.95);
130
- }
131
- .hw-bubble--open {
132
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
133
- }
134
- .hw-bubble:focus-visible {
135
- outline: 2px solid white;
136
- outline-offset: 2px;
137
- }
138
- .hw-bubble-icon {
139
- display: flex;
140
- align-items: center;
141
- justify-content: center;
142
- position: absolute;
143
- transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1), opacity 0.2s ease;
144
- }
145
- .hw-bubble-icon svg {
146
- width: 22px;
147
- height: 22px;
148
- }
149
- .hw-bubble-icon--hidden {
150
- transform: scale(0.3) rotate(90deg);
151
- opacity: 0;
152
- }
153
- .hw-bubble-icon--bot {
154
- }
155
- .hw-bubble--avatar .hw-bubble-icon--bot {
156
- width: 100%;
157
- height: 100%;
158
- }
159
- .hw-bubble--avatar .hw-bubble-icon--bot .hw-agent-img {
160
- width: 100%;
161
- height: 100%;
162
- border-radius: 0;
163
- }
164
- .hw-bubble-icon--close svg {
165
- width: 22px;
166
- height: 22px;
167
- }
168
- .hw-bubble-badge {
169
- position: absolute;
170
- top: -4px;
171
- right: -4px;
172
- min-width: 20px;
173
- height: 20px;
174
- border-radius: 10px;
175
- background: var(--hw-primary);
176
- color: white;
177
- font-size: 11px;
178
- font-weight: 700;
179
- display: flex;
180
- align-items: center;
181
- justify-content: center;
182
- padding: 0 5px;
183
- border: 2px solid white;
184
- animation: hw-badge-pop 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
185
- }
186
- @keyframes hw-badge-pop {
187
- from {
188
- transform: scale(0);
189
- }
190
- to {
191
- transform: scale(1);
192
- }
193
- }
194
- .hw-bubble-badge::after {
195
- content: "";
196
- position: absolute;
197
- inset: -2px;
198
- border-radius: inherit;
199
- background: var(--hw-primary);
200
- opacity: 0;
201
- animation: hw-badge-pulse 2s ease-out infinite;
202
- }
203
- @keyframes hw-badge-pulse {
204
- 0% {
205
- opacity: 0.5;
206
- transform: scale(1);
207
- }
208
- 100% {
209
- opacity: 0;
210
- transform: scale(1.8);
211
- }
212
- }
213
- .hw-window {
214
- position: absolute;
215
- bottom: 72px;
216
- right: var(--hw-window-right, 0);
217
- left: var(--hw-window-left, auto);
218
- width: 440px;
219
- height: 640px;
220
- background: var(--hw-bg-subtle);
221
- color: var(--hw-text);
222
- border-radius: var(--hw-radius);
223
- box-shadow: 0 8px 30px rgba(0, 0, 0, 0.12), 0 0 0 1px rgba(0, 0, 0, 0.04);
224
- display: flex;
225
- flex-direction: column;
226
- overflow: hidden;
227
- animation: hw-window-open 0.35s cubic-bezier(0.34, 1.56, 0.64, 1);
228
- }
229
- @keyframes hw-window-open {
230
- from {
231
- opacity: 0;
232
- transform: translateY(12px) scale(0.96);
233
- }
234
- to {
235
- opacity: 1;
236
- transform: translateY(0) scale(1);
237
- }
238
- }
239
- .hw-window--closing {
240
- animation: hw-window-close 0.2s ease forwards;
241
- }
242
- @keyframes hw-window-close {
243
- from {
244
- opacity: 1;
245
- transform: translateY(0) scale(1);
246
- }
247
- to {
248
- opacity: 0;
249
- transform: translateY(8px) scale(0.98);
250
- }
251
- }
252
- .hw-content {
253
- flex: 1;
254
- display: flex;
255
- flex-direction: column;
256
- overflow: hidden;
257
- min-height: 0;
258
- }
259
- @media (prefers-reduced-motion: reduce) {
260
- .hw-window,
261
- .hw-window--closing,
262
- .hw-content,
263
- .hw-msg,
264
- .hw-bubble-icon,
265
- .hw-bubble-badge,
266
- .hw-bubble-badge::after,
267
- .hw-typing-dot,
268
- .hw-loading-dot {
269
- animation-duration: 0.01ms !important;
270
- transition-duration: 0.01ms !important;
271
- }
272
- }
273
- .hw-hero {
274
- flex-shrink: 0;
275
- background:
276
- linear-gradient(
277
- 160deg,
278
- color-mix(in srgb, var(--hw-primary) 60%, black) 0%,
279
- var(--hw-primary) 50%,
280
- color-mix(in srgb, var(--hw-primary) 40%, black) 100%);
281
- color: white;
282
- padding: 20px 22px 40px;
283
- }
284
- .hw-hero-top {
285
- display: flex;
286
- align-items: center;
287
- justify-content: space-between;
288
- margin-bottom: 16px;
289
- }
290
- .hw-hero-close {
291
- width: 30px;
292
- height: 30px;
293
- border-radius: 50%;
294
- border: none;
295
- background: rgba(255, 255, 255, 0.1);
296
- color: rgba(255, 255, 255, 0.6);
297
- cursor: pointer;
298
- display: flex;
299
- align-items: center;
300
- justify-content: center;
301
- transition: background 0.15s, color 0.15s;
302
- }
303
- .hw-hero-close:hover {
304
- background: rgba(255, 255, 255, 0.2);
305
- color: white;
306
- }
307
- .hw-hero-close:active {
308
- transform: scale(0.92);
309
- transition:
310
- transform 0.14s cubic-bezier(0.23, 1, 0.32, 1),
311
- background 0.15s,
312
- color 0.15s;
313
- }
314
- .hw-hero-close svg {
315
- width: 20px;
316
- height: 20px;
317
- }
318
- .hw-hero-bot-icon {
319
- width: 36px;
320
- height: 36px;
321
- flex-shrink: 0;
322
- color: white;
323
- display: flex;
324
- align-items: center;
325
- justify-content: center;
326
- border-radius: 10px;
327
- overflow: hidden;
328
- }
329
- .hw-hero-bot-icon svg {
330
- width: 32px;
331
- height: 32px;
332
- }
333
- .hw-hero-greeting {
334
- font-size: 26px;
335
- font-weight: 700;
336
- line-height: 1.15;
337
- margin-bottom: 6px;
338
- }
339
- .hw-hero-greeting-name {
340
- font-weight: 300;
341
- }
342
- .hw-hero-greeting-question {
343
- font-weight: 700;
344
- }
345
- .hw-hero-subtitle {
346
- font-size: 15px;
347
- color: rgba(255, 255, 255, 0.5);
348
- line-height: 1.35;
349
- }
350
- .hw-sheet {
351
- flex: 1;
352
- overflow-y: auto;
353
- min-height: 0;
354
- background: #ffffff;
355
- border-radius: 20px 20px 0 0;
356
- margin-top: -24px;
357
- box-shadow: 0 -4px 16px rgba(0, 0, 0, 0.08);
358
- position: relative;
359
- z-index: 1;
360
- }
361
- .hw-sheet-inner {
362
- padding: 20px 16px;
363
- display: flex;
364
- flex-direction: column;
365
- gap: 12px;
366
- }
367
- .hw-header {
368
- display: flex;
369
- align-items: center;
370
- padding: 12px 16px;
371
- background: var(--hw-primary);
372
- color: white;
373
- flex-shrink: 0;
374
- gap: 10px;
375
- }
376
- .hw-header--sub {
377
- justify-content: space-between;
378
- background: transparent;
379
- color: var(--hw-text);
380
- border-bottom: 1px solid var(--hw-border);
381
- }
382
- .hw-header-back {
383
- width: 28px;
384
- height: 28px;
385
- border-radius: 8px;
386
- border: none;
387
- background: transparent;
388
- color: var(--hw-text-3);
389
- cursor: pointer;
390
- display: flex;
391
- align-items: center;
392
- justify-content: center;
393
- transition: color 0.15s, background 0.15s;
394
- flex-shrink: 0;
395
- }
396
- .hw-header-back svg {
397
- width: 18px;
398
- height: 18px;
399
- }
400
- .hw-header-back:hover {
401
- color: var(--hw-text);
402
- background: var(--hw-bg-subtle);
403
- }
404
- .hw-header-identity {
405
- display: flex;
406
- align-items: center;
407
- gap: 10px;
408
- flex: 1;
409
- min-width: 0;
410
- }
411
- .hw-header-bot-icon {
412
- width: 28px;
413
- height: 28px;
414
- flex-shrink: 0;
415
- color: var(--hw-text);
416
- display: flex;
417
- align-items: center;
418
- justify-content: center;
419
- border-radius: 8px;
420
- overflow: hidden;
421
- }
422
- .hw-header-bot-icon svg {
423
- width: 24px;
424
- height: 24px;
425
- }
426
- .hw-header-info {
427
- flex: 1;
428
- min-width: 0;
429
- }
430
- .hw-header-name {
431
- font-size: 14px;
432
- font-weight: 600;
433
- line-height: 1.3;
434
- }
435
- .hw-header-status {
436
- font-size: 12px;
437
- color: var(--hw-text-3);
438
- line-height: 1.3;
439
- }
440
- .hw-header-close {
441
- width: 28px;
442
- height: 28px;
443
- border-radius: 8px;
444
- border: none;
445
- background: transparent;
446
- color: var(--hw-text-3);
447
- cursor: pointer;
448
- display: flex;
449
- align-items: center;
450
- justify-content: center;
451
- transition:
452
- background-color 140ms cubic-bezier(0.23, 1, 0.32, 1),
453
- color 140ms cubic-bezier(0.23, 1, 0.32, 1),
454
- transform 140ms cubic-bezier(0.23, 1, 0.32, 1);
455
- flex-shrink: 0;
456
- }
457
- .hw-header-close svg {
458
- width: 20px;
459
- height: 20px;
460
- }
461
- .hw-header-close:hover {
462
- background: var(--hw-bg-subtle);
463
- color: var(--hw-text);
464
- }
465
- .hw-header-close:active {
466
- transform: scale(0.92);
467
- }
468
- .hw-header--centered {
469
- justify-content: space-between;
470
- background: transparent;
471
- color: var(--hw-text);
472
- border-bottom: 1px solid var(--hw-border);
473
- }
474
- .hw-header--centered .hw-header-title {
475
- position: absolute;
476
- left: 50%;
477
- transform: translateX(-50%);
478
- max-width: calc(100% - 88px);
479
- white-space: nowrap;
480
- overflow: hidden;
481
- text-overflow: ellipsis;
482
- text-align: center;
483
- }
484
- .hw-header-spacer {
485
- width: 28px;
486
- flex-shrink: 0;
487
- }
488
- .hw-header--messages {
489
- justify-content: space-between;
490
- background: transparent;
491
- color: var(--hw-text);
492
- border-bottom: 1px solid var(--hw-border);
493
- }
494
- .hw-header-title {
495
- font-size: 16px;
496
- font-weight: 600;
497
- }
498
- .hw-header-actions {
499
- display: flex;
500
- align-items: center;
501
- gap: 6px;
502
- }
503
- .hw-header-action {
504
- width: 28px;
505
- height: 28px;
506
- border-radius: 8px;
507
- border: none;
508
- background: transparent;
509
- color: var(--hw-text-3);
510
- cursor: pointer;
511
- display: flex;
512
- align-items: center;
513
- justify-content: center;
514
- transition:
515
- background-color 140ms cubic-bezier(0.23, 1, 0.32, 1),
516
- color 140ms cubic-bezier(0.23, 1, 0.32, 1),
517
- transform 140ms cubic-bezier(0.23, 1, 0.32, 1);
518
- }
519
- .hw-header-action svg {
520
- width: 16px;
521
- height: 16px;
522
- }
523
- .hw-header-action:hover {
524
- background: var(--hw-bg-subtle);
525
- color: var(--hw-text);
526
- }
527
- .hw-header-action:active {
528
- transform: scale(0.94);
529
- }
530
- .hw-card {
531
- display: flex;
532
- align-items: center;
533
- gap: 12px;
534
- width: 100%;
535
- padding: 14px 16px;
536
- border-radius: 14px;
537
- background: var(--hw-bg);
538
- border: 1px solid rgba(0, 0, 0, 0.06);
539
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06), 0 0 0 1px rgba(0, 0, 0, 0.03);
540
- cursor: pointer;
541
- transition: box-shadow 180ms cubic-bezier(0.23, 1, 0.32, 1), transform 180ms cubic-bezier(0.23, 1, 0.32, 1);
542
- text-align: left;
543
- color: var(--hw-text);
544
- font-family: inherit;
545
- }
546
- .hw-card:hover {
547
- box-shadow: 0 6px 20px rgba(0, 0, 0, 0.08), 0 0 0 1px rgba(0, 0, 0, 0.05);
548
- transform: translateY(-1px);
549
- }
550
- .hw-card:active {
551
- transform: translateY(0) scale(0.99);
552
- transition-duration: 120ms;
553
- }
554
- .hw-card-body {
555
- flex: 1;
556
- min-width: 0;
557
- }
558
- .hw-card-title {
559
- font-size: 14px;
560
- font-weight: 600;
561
- line-height: 1.3;
562
- color: var(--hw-text);
563
- }
564
- .hw-card-meta {
565
- font-size: 12px;
566
- color: var(--hw-text-3);
567
- line-height: 1.3;
568
- margin-top: 1px;
569
- }
570
- .hw-card-arrow {
571
- width: 32px;
572
- height: 32px;
573
- border-radius: 50%;
574
- background: var(--hw-primary);
575
- color: white;
576
- display: flex;
577
- align-items: center;
578
- justify-content: center;
579
- flex-shrink: 0;
580
- }
581
- .hw-card-arrow svg {
582
- width: 14px;
583
- height: 14px;
584
- }
585
- .hw-msgs-tab {
586
- flex: 1;
587
- overflow-y: auto;
588
- padding: 12px 16px;
589
- display: flex;
590
- flex-direction: column;
591
- gap: 8px;
592
- }
593
- .hw-recent-card {
594
- border-radius: 14px;
595
- background: var(--hw-bg);
596
- border: 1px solid rgba(0, 0, 0, 0.06);
597
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06), 0 0 0 1px rgba(0, 0, 0, 0.03);
598
- overflow: hidden;
599
- }
600
- .hw-recent-header {
601
- font-size: 12px;
602
- font-weight: 600;
603
- color: var(--hw-text-2);
604
- padding: 12px 14px 0;
605
- }
606
- .hw-recent-row {
607
- display: flex;
608
- align-items: center;
609
- gap: 10px;
610
- width: 100%;
611
- padding: 10px 14px;
612
- border: none;
613
- border-bottom: 1px solid var(--hw-border);
614
- background: none;
615
- cursor: pointer;
616
- text-align: left;
617
- font-family: inherit;
618
- color: var(--hw-text);
619
- transition: background-color 140ms cubic-bezier(0.23, 1, 0.32, 1), transform 140ms cubic-bezier(0.23, 1, 0.32, 1);
620
- position: relative;
621
- }
622
- .hw-recent-row:hover {
623
- background: rgba(0, 0, 0, 0.03);
624
- }
625
- .hw-recent-row:active {
626
- transform: scale(0.995);
627
- }
628
- .hw-recent-row--last {
629
- border-bottom: none;
630
- }
631
- .hw-recent-row .hw-conv-card-avatar {
632
- width: 32px;
633
- height: 32px;
634
- border-radius: 8px;
635
- }
636
- .hw-recent-row .hw-conv-card-avatar svg {
637
- width: 18px;
638
- height: 18px;
639
- }
640
- .hw-recent-row .hw-conv-card-name {
641
- font-size: 13px;
642
- }
643
- .hw-recent-row .hw-conv-card-preview {
644
- font-size: 12px;
645
- }
646
- .hw-recent-row--unread .hw-conv-card-name {
647
- color: var(--hw-text);
648
- }
649
- .hw-recent-row--unread .hw-conv-card-time {
650
- color: var(--hw-accent);
651
- font-weight: 500;
652
- }
653
- .hw-recent-row-badge {
654
- min-width: 18px;
655
- height: 18px;
656
- border-radius: 9px;
657
- background: var(--hw-primary);
658
- color: white;
659
- font-size: 11px;
660
- font-weight: 600;
661
- display: flex;
662
- align-items: center;
663
- justify-content: center;
664
- padding: 0 5px;
665
- flex-shrink: 0;
666
- font-variant-numeric: tabular-nums;
667
- }
668
- .hw-recent-see-all {
669
- display: block;
670
- width: 100%;
671
- padding: 10px 14px;
672
- text-align: center;
673
- font-size: 13px;
674
- font-weight: 500;
675
- color: var(--hw-text);
676
- background: none;
677
- border: none;
678
- border-top: 1px solid var(--hw-border);
679
- cursor: pointer;
680
- font-family: inherit;
681
- transition: background 0.1s;
682
- }
683
- .hw-recent-see-all:hover {
684
- background: rgba(0, 0, 0, 0.02);
685
- }
686
- .hw-conv-card {
687
- position: relative;
688
- display: flex;
689
- flex-direction: column;
690
- gap: 4px;
691
- width: 100%;
692
- padding: 14px 16px;
693
- border-radius: 14px;
694
- background: var(--hw-bg);
695
- border: 1px solid rgba(0, 0, 0, 0.06);
696
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06), 0 0 0 1px rgba(0, 0, 0, 0.03);
697
- cursor: pointer;
698
- transition: box-shadow 0.15s, transform 0.1s;
699
- text-align: left;
700
- font-family: inherit;
701
- color: var(--hw-text);
702
- }
703
- .hw-conv-card:hover {
704
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1), 0 0 0 1px rgba(0, 0, 0, 0.04);
705
- }
706
- .hw-conv-card:active {
707
- transform: scale(0.99);
708
- }
709
- .hw-conv-card-row {
710
- display: flex;
711
- align-items: center;
712
- gap: 12px;
713
- }
714
- .hw-conv-card-avatar {
715
- width: 36px;
716
- height: 36px;
717
- border-radius: 10px;
718
- background: var(--hw-bg-subtle);
719
- color: var(--hw-text-3);
720
- display: flex;
721
- align-items: center;
722
- justify-content: center;
723
- flex-shrink: 0;
724
- overflow: hidden;
725
- }
726
- .hw-conv-card-avatar svg {
727
- width: 20px;
728
- height: 20px;
729
- }
730
- .hw-conv-card-content {
731
- flex: 1;
732
- min-width: 0;
733
- }
734
- .hw-conv-card-top {
735
- display: flex;
736
- align-items: baseline;
737
- gap: 8px;
738
- }
739
- .hw-conv-card-name {
740
- flex: 1;
741
- font-size: 14px;
742
- font-weight: 600;
743
- color: var(--hw-text);
744
- }
745
- .hw-conv-card-time {
746
- font-size: 11px;
747
- color: var(--hw-text-3);
748
- flex-shrink: 0;
749
- font-variant-numeric: tabular-nums;
750
- }
751
- .hw-conv-card-preview {
752
- font-size: 13px;
753
- color: var(--hw-text-2);
754
- overflow: hidden;
755
- text-overflow: ellipsis;
756
- white-space: nowrap;
757
- line-height: 1.4;
758
- margin-top: 1px;
759
- }
760
- .hw-conv-card--unread .hw-conv-card-name {
761
- color: var(--hw-text);
762
- }
763
- .hw-conv-card--unread .hw-conv-card-time {
764
- color: var(--hw-accent);
765
- font-weight: 500;
766
- }
767
- .hw-conv-card-badge {
768
- position: absolute;
769
- top: 12px;
770
- right: 12px;
771
- min-width: 18px;
772
- height: 18px;
773
- border-radius: 9px;
774
- background: var(--hw-primary);
775
- color: white;
776
- font-size: 11px;
777
- font-weight: 600;
778
- display: flex;
779
- align-items: center;
780
- justify-content: center;
781
- padding: 0 5px;
782
- font-variant-numeric: tabular-nums;
783
- }
784
- .hw-empty-state {
785
- flex: 1;
786
- display: flex;
787
- flex-direction: column;
788
- align-items: center;
789
- justify-content: center;
790
- padding: 32px;
791
- text-align: center;
792
- }
793
- .hw-empty-icon-wrap {
794
- width: 48px;
795
- height: 48px;
796
- border-radius: 50%;
797
- background: var(--hw-bg-subtle);
798
- display: flex;
799
- align-items: center;
800
- justify-content: center;
801
- margin-bottom: 16px;
802
- color: var(--hw-text-3);
803
- }
804
- .hw-empty-icon-wrap svg {
805
- width: 24px;
806
- height: 24px;
807
- }
808
- .hw-empty-title {
809
- font-size: 15px;
810
- font-weight: 600;
811
- color: var(--hw-text);
812
- margin-bottom: 4px;
813
- }
814
- .hw-empty-desc {
815
- font-size: 13px;
816
- color: var(--hw-text-3);
817
- margin-bottom: 20px;
818
- }
819
- .hw-empty-btn {
820
- padding: 8px 20px;
821
- border-radius: 10px;
822
- background: var(--hw-primary);
823
- color: white;
824
- border: none;
825
- font-size: 13px;
826
- font-weight: 500;
827
- cursor: pointer;
828
- font-family: inherit;
829
- transition: background 0.15s;
830
- }
831
- .hw-empty-btn:hover {
832
- background: var(--hw-primary-hover);
833
- }
834
- .hw-tabs {
835
- display: flex;
836
- border-top: 1px solid var(--hw-border);
837
- flex-shrink: 0;
838
- background: var(--hw-bg-subtle);
839
- }
840
- .hw-tabs-item {
841
- flex: 1;
842
- display: flex;
843
- flex-direction: column;
844
- align-items: center;
845
- gap: 2px;
846
- padding: 8px 0;
847
- border: none;
848
- background: none;
849
- cursor: pointer;
850
- font-family: inherit;
851
- font-size: 11px;
852
- font-weight: 500;
853
- color: var(--hw-text-3);
854
- transition: color 0.15s;
855
- }
856
- .hw-tabs-item svg {
857
- width: 22px;
858
- height: 22px;
859
- }
860
- .hw-tabs-item--active {
861
- color: var(--hw-text);
862
- }
863
- .hw-tabs-item:hover {
864
- color: var(--hw-text-2);
865
- }
866
- .hw-tabs-item:active {
867
- transform: scale(0.94);
868
- transition: transform 0.14s cubic-bezier(0.23, 1, 0.32, 1), color 0.15s;
869
- }
870
- .hw-tabs-icon-wrap {
871
- position: relative;
872
- display: inline-flex;
873
- }
874
- .hw-tabs-badge {
875
- position: absolute;
876
- top: -6px;
877
- right: -10px;
878
- min-width: 16px;
879
- height: 16px;
880
- border-radius: 8px;
881
- background: var(--hw-primary);
882
- color: white;
883
- font-size: 10px;
884
- font-weight: 700;
885
- display: flex;
886
- align-items: center;
887
- justify-content: center;
888
- padding: 0 4px;
889
- font-variant-numeric: tabular-nums;
890
- }
891
- .hw-messages {
892
- flex: 1;
893
- overflow-y: auto;
894
- overflow-x: hidden;
895
- padding: 16px 20px;
896
- background: var(--hw-bg-subtle);
897
- display: flex;
898
- flex-direction: column;
899
- gap: 2px;
900
- overscroll-behavior: contain;
901
- min-width: 0;
902
- }
903
- .hw-empty {
904
- flex: 1;
905
- display: flex;
906
- flex-direction: column;
907
- align-items: center;
908
- justify-content: center;
909
- padding: 32px;
910
- color: var(--hw-text-3);
911
- text-align: center;
912
- }
913
- .hw-empty-icon {
914
- width: 40px;
915
- height: 40px;
916
- margin-bottom: 12px;
917
- opacity: 0.3;
918
- }
919
- .hw-date-sep {
920
- display: flex;
921
- align-items: center;
922
- gap: 12px;
923
- padding: 12px 0;
924
- }
925
- .hw-date-sep-line {
926
- flex: 1;
927
- height: 1px;
928
- background: var(--hw-border-md);
929
- }
930
- .hw-date-sep-text {
931
- font-size: 11px;
932
- color: var(--hw-text-3);
933
- font-weight: 500;
934
- white-space: nowrap;
935
- }
936
- .hw-msg {
937
- display: flex;
938
- padding: 4px 0;
939
- max-width: 75%;
940
- min-width: 0;
941
- animation: hw-msg-appear 0.25s ease-out;
942
- }
943
- @keyframes hw-msg-appear {
944
- from {
945
- opacity: 0;
946
- transform: translateY(6px);
947
- }
948
- to {
949
- opacity: 1;
950
- transform: translateY(0);
951
- }
952
- }
953
- .hw-msg--visitor {
954
- align-self: flex-end;
955
- }
956
- .hw-msg--team,
957
- .hw-msg--ai {
958
- align-self: flex-start;
959
- }
960
- .hw-msg-body {
961
- display: flex;
962
- flex-direction: column;
963
- min-width: 0;
964
- max-width: 100%;
965
- }
966
- .hw-msg-bubble {
967
- padding: 10px 14px;
968
- border-radius: 18px;
969
- font-size: 14px;
970
- line-height: 1.45;
971
- white-space: pre-wrap;
972
- word-break: break-word;
973
- overflow-wrap: anywhere;
974
- max-width: 100%;
975
- }
976
- .hw-msg--visitor .hw-msg-bubble {
977
- background: var(--hw-primary);
978
- color: white;
979
- border-bottom-right-radius: 4px;
980
- }
981
- .hw-msg--team .hw-msg-bubble {
982
- background: var(--hw-visitor-bubble-bg);
983
- color: var(--hw-visitor-bubble-text);
984
- border-bottom-left-radius: 4px;
985
- }
986
- .hw-msg--ai .hw-msg-bubble {
987
- background: var(--hw-visitor-bubble-bg);
988
- color: var(--hw-text);
989
- border-bottom-left-radius: 4px;
990
- white-space: normal;
991
- }
992
- .hw-msg-meta {
993
- font-size: 11px;
994
- color: var(--hw-text-3);
995
- margin-top: 3px;
996
- padding: 0 4px;
997
- opacity: 0;
998
- transition: opacity 0.15s;
999
- font-variant-numeric: tabular-nums;
1000
- }
1001
- .hw-msg:hover .hw-msg-meta,
1002
- .hw-msg:focus-within .hw-msg-meta {
1003
- opacity: 1;
1004
- }
1005
- .hw-msg--visitor .hw-msg-meta {
1006
- text-align: right;
1007
- }
1008
- .hw-msg--team .hw-msg-body,
1009
- .hw-msg--ai .hw-msg-body {
1010
- align-items: flex-start;
1011
- }
1012
- .hw-msg--visitor .hw-msg-body {
1013
- align-items: flex-end;
1014
- }
1015
- .hw-msg-sender {
1016
- font-size: 11px;
1017
- font-weight: 500;
1018
- color: var(--hw-text-3);
1019
- margin-bottom: 3px;
1020
- padding: 0 4px;
1021
- }
1022
- .hw-typing {
1023
- display: flex;
1024
- flex-direction: column;
1025
- gap: 3px;
1026
- padding: 8px 0;
1027
- width: fit-content;
1028
- animation: hw-msg-appear 0.25s ease-out;
1029
- }
1030
- .hw-typing-label {
1031
- font-size: 11px;
1032
- font-weight: 500;
1033
- color: var(--hw-text-3);
1034
- padding: 0 4px;
1035
- }
1036
- .hw-typing-dots {
1037
- display: flex;
1038
- gap: 3px;
1039
- padding: 10px 14px;
1040
- width: fit-content;
1041
- background: var(--hw-visitor-bubble-bg);
1042
- border-radius: var(--hw-radius);
1043
- border-bottom-left-radius: 4px;
1044
- }
1045
- .hw-typing-dot {
1046
- width: 6px;
1047
- height: 6px;
1048
- border-radius: 50%;
1049
- background: var(--hw-text-3);
1050
- animation: hw-typing-bounce 1.4s infinite;
1051
- }
1052
- .hw-typing-dot:nth-child(2) {
1053
- animation-delay: 0.2s;
1054
- }
1055
- .hw-typing-dot:nth-child(3) {
1056
- animation-delay: 0.4s;
1057
- }
1058
- @keyframes hw-typing-bounce {
1059
- 0%, 60%, 100% {
1060
- transform: translateY(0);
1061
- }
1062
- 30% {
1063
- transform: translateY(-4px);
1064
- }
1065
- }
1066
- .hw-loading {
1067
- flex: 1;
1068
- display: flex;
1069
- align-items: center;
1070
- justify-content: center;
1071
- }
1072
- .hw-loading-dots {
1073
- display: flex;
1074
- gap: 4px;
1075
- }
1076
- .hw-loading-dot {
1077
- width: 8px;
1078
- height: 8px;
1079
- border-radius: 50%;
1080
- background: var(--hw-text-4);
1081
- animation: hw-loading-pulse 1.4s infinite;
1082
- }
1083
- .hw-loading-dot:nth-child(2) {
1084
- animation-delay: 0.2s;
1085
- }
1086
- .hw-loading-dot:nth-child(3) {
1087
- animation-delay: 0.4s;
1088
- }
1089
- @keyframes hw-loading-pulse {
1090
- 0%, 60%, 100% {
1091
- opacity: 0.3;
1092
- transform: scale(0.8);
1093
- }
1094
- 30% {
1095
- opacity: 1;
1096
- transform: scale(1);
1097
- }
1098
- }
1099
- @keyframes hw-skeleton-shimmer {
1100
- 0% {
1101
- background-position: -200px 0;
1102
- }
1103
- 100% {
1104
- background-position: calc(200px + 100%) 0;
1105
- }
1106
- }
1107
- .hw-skeleton {
1108
- background:
1109
- linear-gradient(
1110
- 90deg,
1111
- var(--hw-bg-subtle) 25%,
1112
- rgba(0, 0, 0, 0.04) 50%,
1113
- var(--hw-bg-subtle) 75%);
1114
- background-size: 200px 100%;
1115
- animation: hw-skeleton-shimmer 1.5s ease-in-out infinite;
1116
- border-radius: 6px;
1117
- }
1118
- .hw-skeleton-messages {
1119
- flex: 1;
1120
- display: flex;
1121
- flex-direction: column;
1122
- padding: 16px;
1123
- gap: 16px;
1124
- }
1125
- .hw-skeleton-msg {
1126
- display: flex;
1127
- gap: 10px;
1128
- align-items: flex-start;
1129
- }
1130
- .hw-skeleton-msg--right {
1131
- flex-direction: row-reverse;
1132
- }
1133
- .hw-skeleton-avatar {
1134
- width: 28px;
1135
- height: 28px;
1136
- border-radius: 8px;
1137
- flex-shrink: 0;
1138
- }
1139
- .hw-skeleton-bubble {
1140
- display: flex;
1141
- flex-direction: column;
1142
- gap: 6px;
1143
- }
1144
- .hw-skeleton-line {
1145
- height: 12px;
1146
- border-radius: 6px;
1147
- }
1148
- .hw-skeleton-convs {
1149
- display: flex;
1150
- flex-direction: column;
1151
- padding: 8px 0;
1152
- }
1153
- .hw-skeleton-conv {
1154
- display: flex;
1155
- gap: 10px;
1156
- align-items: center;
1157
- padding: 10px 16px;
1158
- }
1159
- .hw-skeleton-conv-avatar {
1160
- width: 36px;
1161
- height: 36px;
1162
- border-radius: 8px;
1163
- flex-shrink: 0;
1164
- }
1165
- .hw-skeleton-conv-lines {
1166
- flex: 1;
1167
- display: flex;
1168
- flex-direction: column;
1169
- gap: 6px;
1170
- }
1171
- .hw-skeleton-content {
1172
- display: flex;
1173
- flex-direction: column;
1174
- padding: 12px 16px;
1175
- gap: 12px;
1176
- }
1177
- .hw-skeleton-content-item {
1178
- display: flex;
1179
- flex-direction: column;
1180
- gap: 6px;
1181
- padding: 12px;
1182
- border-radius: 10px;
1183
- background: var(--hw-bg);
1184
- }
1185
- .hw-email-card {
1186
- margin: 0 12px;
1187
- padding: 14px 16px 10px;
1188
- border: 1px solid var(--hw-border, rgba(0,0,0,0.08));
1189
- border-radius: 14px;
1190
- background: var(--hw-surface, #fff);
1191
- box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06), 0 4px 12px rgba(0, 0, 0, 0.03);
1192
- animation: hw-email-slide-in 0.25s ease-out;
1193
- }
1194
- @keyframes hw-email-slide-in {
1195
- from {
1196
- opacity: 0;
1197
- transform: translateY(8px);
1198
- }
1199
- to {
1200
- opacity: 1;
1201
- transform: translateY(0);
1202
- }
1203
- }
1204
- .hw-email-card-header {
1205
- display: flex;
1206
- align-items: flex-start;
1207
- gap: 10px;
1208
- margin-bottom: 12px;
1209
- }
1210
- .hw-email-card-icon {
1211
- flex-shrink: 0;
1212
- width: 32px;
1213
- height: 32px;
1214
- border-radius: 8px;
1215
- background: var(--hw-brand, #0a0a0a);
1216
- display: flex;
1217
- align-items: center;
1218
- justify-content: center;
1219
- color: #fff;
1220
- }
1221
- .hw-email-card-title {
1222
- font-size: 13px;
1223
- font-weight: 600;
1224
- color: var(--hw-text, #1a1a1a);
1225
- line-height: 1.3;
1226
- margin: 0 0 2px;
1227
- }
1228
- .hw-email-card-subtitle {
1229
- font-size: 12px;
1230
- color: var(--hw-text-muted, #888);
1231
- line-height: 1.4;
1232
- margin: 0;
1233
- }
1234
- .hw-email-card-input {
1235
- width: 100%;
1236
- padding: 9px 12px;
1237
- border-radius: 10px;
1238
- border: 1px solid var(--hw-border, rgba(0,0,0,0.1));
1239
- background: var(--hw-bg, #fafafa);
1240
- color: var(--hw-text, #1a1a1a);
1241
- font-size: 13px;
1242
- outline: none;
1243
- margin-bottom: 8px;
1244
- box-sizing: border-box;
1245
- transition: border-color 0.15s;
1246
- }
1247
- .hw-email-card-input:focus {
1248
- border-color: var(--hw-brand, #0a0a0a);
1249
- box-shadow: 0 0 0 2px rgba(0, 0, 0, 0.06);
1250
- }
1251
- .hw-email-card-input--error {
1252
- border-color: #ef4444;
1253
- }
1254
- .hw-email-card-submit {
1255
- width: 100%;
1256
- padding: 9px;
1257
- border-radius: 10px;
1258
- border: none;
1259
- background: var(--hw-brand, #0a0a0a);
1260
- color: #fff;
1261
- font-size: 13px;
1262
- font-weight: 500;
1263
- cursor: pointer;
1264
- transition: opacity 0.15s;
1265
- display: flex;
1266
- align-items: center;
1267
- justify-content: center;
1268
- gap: 6px;
1269
- }
1270
- .hw-email-card-submit:hover:not(:disabled) {
1271
- opacity: 0.88;
1272
- }
1273
- .hw-email-card-submit:disabled {
1274
- opacity: 0.5;
1275
- cursor: not-allowed;
1276
- }
1277
- .hw-email-card--success {
1278
- display: flex;
1279
- align-items: center;
1280
- justify-content: center;
1281
- gap: 6px;
1282
- padding: 10px 16px;
1283
- font-size: 13px;
1284
- color: var(--hw-text-muted, #888);
1285
- animation: hw-email-slide-in 0.2s ease-out;
1286
- }
1287
- .hw-email-card--success svg {
1288
- flex-shrink: 0;
1289
- }
1290
- .hw-composer {
1291
- display: flex;
1292
- flex-direction: column;
1293
- padding: 12px 16px;
1294
- background: transparent;
1295
- flex-shrink: 0;
1296
- }
1297
- .hw-composer--compact {
1298
- padding: 8px 12px;
1299
- }
1300
- .hw-composer-box {
1301
- display: flex;
1302
- flex-direction: column;
1303
- border: 2px solid var(--hw-border-md);
1304
- border-radius: 16px;
1305
- overflow: hidden;
1306
- transition: border-color 0.2s;
1307
- background: var(--hw-bg);
1308
- }
1309
- .hw-composer-box:focus-within {
1310
- border-color: var(--hw-focus-border);
1311
- box-shadow: 0 0 0 3px var(--hw-focus-ring);
1312
- }
1313
- .hw-composer-input {
1314
- flex: 1;
1315
- resize: none;
1316
- border: none;
1317
- padding: 12px 16px 4px;
1318
- font-size: 14px;
1319
- font-family: inherit;
1320
- line-height: 1.4;
1321
- outline: none;
1322
- min-height: 40px;
1323
- max-height: 120px;
1324
- background: transparent;
1325
- color: var(--hw-text);
1326
- }
1327
- .hw-composer-input:focus {
1328
- outline: none;
1329
- }
1330
- .hw-composer-input:focus-visible {
1331
- outline: none;
1332
- }
1333
- .hw-composer-input::placeholder {
1334
- color: var(--hw-text-4);
1335
- }
1336
- .hw-composer-toolbar {
1337
- display: flex;
1338
- align-items: center;
1339
- justify-content: space-between;
1340
- padding: 4px 10px 10px;
1341
- }
1342
- .hw-composer-toolbar-left {
1343
- display: flex;
1344
- align-items: center;
1345
- gap: 4px;
1346
- }
1347
- .hw-composer-send {
1348
- width: 32px;
1349
- height: 32px;
1350
- border-radius: 50%;
1351
- border: none;
1352
- cursor: pointer;
1353
- display: flex;
1354
- align-items: center;
1355
- justify-content: center;
1356
- flex-shrink: 0;
1357
- transition:
1358
- background-color 140ms cubic-bezier(0.23, 1, 0.32, 1),
1359
- color 140ms cubic-bezier(0.23, 1, 0.32, 1),
1360
- transform 140ms cubic-bezier(0.23, 1, 0.32, 1);
1361
- }
1362
- .hw-composer-send:active:not(:disabled) {
1363
- transform: scale(0.9);
1364
- }
1365
- .hw-composer-send--active {
1366
- background: var(--hw-primary);
1367
- color: white;
1368
- }
1369
- .hw-composer-send--inactive {
1370
- background: var(--hw-border);
1371
- color: var(--hw-text-4);
1372
- cursor: default;
1373
- }
1374
- .hw-composer-send svg {
1375
- width: 14px;
1376
- height: 14px;
1377
- }
1378
- .hw-composer-charcount {
1379
- font-size: 11px;
1380
- color: var(--hw-text-3);
1381
- font-variant-numeric: tabular-nums;
1382
- opacity: 1;
1383
- transform: translateY(0);
1384
- transition:
1385
- color 180ms cubic-bezier(0.23, 1, 0.32, 1),
1386
- opacity 180ms cubic-bezier(0.23, 1, 0.32, 1),
1387
- transform 180ms cubic-bezier(0.23, 1, 0.32, 1);
1388
- }
1389
- @starting-style {
1390
- .hw-composer-charcount {
1391
- opacity: 0;
1392
- transform: translateY(3px);
1393
- }
1394
- }
1395
- .hw-composer-charcount--over {
1396
- color: #ef4444;
1397
- font-weight: 600;
1398
- }
1399
- @media (prefers-reduced-motion: reduce) {
1400
- .hw-composer-charcount {
1401
- transform: none;
1402
- transition: color 160ms ease, opacity 160ms ease;
1403
- }
1404
- @starting-style {
1405
- .hw-composer-charcount {
1406
- transform: none;
1407
- }
1408
- }
1409
- }
1410
- .hw-composer-previews {
1411
- display: flex;
1412
- gap: 6px;
1413
- padding: 8px 10px 0;
1414
- overflow-x: auto;
1415
- scrollbar-width: none;
1416
- }
1417
- .hw-composer-previews::-webkit-scrollbar {
1418
- display: none;
1419
- }
1420
- .hw-composer-preview {
1421
- position: relative;
1422
- width: 48px;
1423
- height: 48px;
1424
- border-radius: 8px;
1425
- overflow: hidden;
1426
- flex-shrink: 0;
1427
- background: var(--hw-border);
1428
- cursor: pointer;
1429
- }
1430
- .hw-composer-preview--error {
1431
- outline: 2px solid #ef4444;
1432
- outline-offset: -2px;
1433
- }
1434
- .hw-composer-preview-img {
1435
- width: 100%;
1436
- height: 100%;
1437
- object-fit: cover;
1438
- }
1439
- .hw-composer-preview-file {
1440
- width: 100%;
1441
- height: 100%;
1442
- display: flex;
1443
- align-items: center;
1444
- justify-content: center;
1445
- background: var(--hw-bg-subtle);
1446
- }
1447
- .hw-composer-preview-ext {
1448
- font-size: 10px;
1449
- font-weight: 700;
1450
- color: var(--hw-text-3);
1451
- text-transform: uppercase;
1452
- }
1453
- .hw-composer-preview-loader {
1454
- position: absolute;
1455
- inset: 0;
1456
- background: rgba(0, 0, 0, 0.35);
1457
- display: flex;
1458
- align-items: center;
1459
- justify-content: center;
1460
- }
1461
- .hw-composer-preview-loader::after {
1462
- content: "";
1463
- width: 16px;
1464
- height: 16px;
1465
- border: 2px solid rgba(255, 255, 255, 0.3);
1466
- border-top-color: white;
1467
- border-radius: 50%;
1468
- animation: hw-spin 0.6s linear infinite;
1469
- }
1470
- @keyframes hw-spin {
1471
- to {
1472
- transform: rotate(360deg);
1473
- }
1474
- }
1475
- .hw-composer-preview-badge {
1476
- position: absolute;
1477
- top: 2px;
1478
- right: 2px;
1479
- width: 16px;
1480
- height: 16px;
1481
- border-radius: 50%;
1482
- background: #ef4444;
1483
- color: white;
1484
- font-size: 10px;
1485
- font-weight: 700;
1486
- display: flex;
1487
- align-items: center;
1488
- justify-content: center;
1489
- }
1490
- .hw-composer-preview-remove {
1491
- position: absolute;
1492
- top: 2px;
1493
- right: 2px;
1494
- width: 18px;
1495
- height: 18px;
1496
- border-radius: 50%;
1497
- border: none;
1498
- background: rgba(0, 0, 0, 0.55);
1499
- color: white;
1500
- cursor: pointer;
1501
- display: flex;
1502
- align-items: center;
1503
- justify-content: center;
1504
- opacity: 0;
1505
- transition: opacity 0.15s;
1506
- }
1507
- .hw-composer-preview-remove svg {
1508
- width: 10px;
1509
- height: 10px;
1510
- }
1511
- .hw-composer-preview:hover .hw-composer-preview-remove {
1512
- opacity: 1;
1513
- }
1514
- .hw-composer-attach {
1515
- width: 28px;
1516
- height: 28px;
1517
- border: none;
1518
- background: none;
1519
- color: var(--hw-text-3);
1520
- cursor: pointer;
1521
- display: flex;
1522
- align-items: center;
1523
- justify-content: center;
1524
- border-radius: 6px;
1525
- opacity: 0.7;
1526
- transition: opacity 0.15s;
1527
- }
1528
- .hw-composer-attach:hover {
1529
- opacity: 1;
1530
- }
1531
- .hw-composer-attach svg {
1532
- width: 16px;
1533
- height: 16px;
1534
- }
1535
- .hw-msg-images {
1536
- display: flex;
1537
- flex-direction: column;
1538
- gap: 4px;
1539
- margin-bottom: 4px;
1540
- }
1541
- .hw-msg-image-link {
1542
- display: block;
1543
- border-radius: 14px;
1544
- overflow: hidden;
1545
- line-height: 0;
1546
- }
1547
- .hw-msg-image {
1548
- max-width: 140px;
1549
- max-height: 80px;
1550
- object-fit: cover;
1551
- border-radius: 8px;
1552
- outline: 1px solid rgba(0, 0, 0, 0.08);
1553
- outline-offset: -1px;
1554
- }
1555
- .hw-msg-files {
1556
- display: flex;
1557
- flex-direction: column;
1558
- gap: 4px;
1559
- margin-top: 4px;
1560
- }
1561
- .hw-msg-file {
1562
- display: flex;
1563
- align-items: center;
1564
- gap: 8px;
1565
- padding: 8px 12px;
1566
- border-radius: 10px;
1567
- background: var(--hw-bg-subtle);
1568
- text-decoration: none;
1569
- color: var(--hw-text);
1570
- transition: background 0.15s;
1571
- }
1572
- .hw-msg-file:hover {
1573
- background: var(--hw-border);
1574
- }
1575
- .hw-msg-file-icon {
1576
- flex-shrink: 0;
1577
- width: 20px;
1578
- height: 20px;
1579
- color: var(--hw-text-3);
1580
- }
1581
- .hw-msg-file-icon svg {
1582
- width: 100%;
1583
- height: 100%;
1584
- }
1585
- .hw-msg-file-info {
1586
- display: flex;
1587
- flex-direction: column;
1588
- min-width: 0;
1589
- }
1590
- .hw-msg-file-name {
1591
- font-size: 13px;
1592
- font-weight: 500;
1593
- white-space: nowrap;
1594
- overflow: hidden;
1595
- text-overflow: ellipsis;
1596
- }
1597
- .hw-msg-file-size {
1598
- font-size: 11px;
1599
- color: var(--hw-text-3);
1600
- }
1601
- .hw-msg-image-link {
1602
- cursor: pointer;
1603
- border: none;
1604
- padding: 0;
1605
- background: none;
1606
- display: block;
1607
- line-height: 0;
1608
- }
1609
- .hw-hover-preview {
1610
- position: fixed;
1611
- z-index: 99998;
1612
- padding: 6px;
1613
- border-radius: 14px;
1614
- background: white;
1615
- box-shadow: 0 8px 32px rgba(0, 0, 0, 0.18), 0 0 0 1px rgba(0, 0, 0, 0.06);
1616
- cursor: pointer;
1617
- animation: hw-hover-in 0.15s ease-out;
1618
- }
1619
- @media (prefers-color-scheme: dark) {
1620
- .hw-hover-preview {
1621
- background: #1c1c1e;
1622
- box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(255, 255, 255, 0.08);
1623
- }
1624
- }
1625
- @keyframes hw-hover-in {
1626
- from {
1627
- opacity: 0;
1628
- transform: scale(0.96) translateY(4px);
1629
- }
1630
- to {
1631
- opacity: 1;
1632
- transform: scale(1) translateY(0);
1633
- }
1634
- }
1635
- .hw-hover-preview-img {
1636
- width: 100%;
1637
- max-height: 200px;
1638
- object-fit: contain;
1639
- border-radius: 10px;
1640
- display: block;
1641
- outline: 1px solid rgba(0, 0, 0, 0.08);
1642
- outline-offset: -1px;
1643
- }
1644
- .hw-hover-preview--doc {
1645
- display: flex;
1646
- align-items: center;
1647
- gap: 10px;
1648
- padding: 10px 14px;
1649
- }
1650
- .hw-hover-preview-doc-icon {
1651
- width: 28px;
1652
- height: 28px;
1653
- flex-shrink: 0;
1654
- }
1655
- .hw-hover-preview-doc-icon svg {
1656
- width: 100%;
1657
- height: 100%;
1658
- }
1659
- .hw-hover-preview-doc-info {
1660
- display: flex;
1661
- flex-direction: column;
1662
- min-width: 0;
1663
- }
1664
- .hw-hover-preview-doc-name {
1665
- font-size: 13px;
1666
- font-weight: 500;
1667
- color: var(--hw-text);
1668
- white-space: nowrap;
1669
- overflow: hidden;
1670
- text-overflow: ellipsis;
1671
- }
1672
- .hw-hover-preview-doc-hint {
1673
- font-size: 11px;
1674
- color: var(--hw-text-3);
1675
- }
1676
- .hw-event {
1677
- display: flex;
1678
- justify-content: center;
1679
- padding: 8px 16px;
1680
- }
1681
- .hw-event-text {
1682
- font-size: 12px;
1683
- color: var(--hw-text-3);
1684
- text-align: center;
1685
- }
1686
- .hw-event--card {
1687
- justify-content: flex-start;
1688
- align-items: center;
1689
- gap: 10px;
1690
- background: var(--hw-bg-subtle);
1691
- padding: 10px 14px;
1692
- border-radius: 12px;
1693
- margin: 4px 16px;
1694
- }
1695
- .hw-event-avatar {
1696
- width: 32px;
1697
- height: 32px;
1698
- border-radius: 50%;
1699
- background: #e0e0e0;
1700
- color: #555;
1701
- display: flex;
1702
- align-items: center;
1703
- justify-content: center;
1704
- font-size: 11px;
1705
- font-weight: 600;
1706
- flex-shrink: 0;
1707
- overflow: hidden;
1708
- }
1709
- .hw-event-avatar-img {
1710
- width: 100%;
1711
- height: 100%;
1712
- object-fit: cover;
1713
- }
1714
- .hw-event-body {
1715
- font-size: 13px;
1716
- line-height: 1.3;
1717
- }
1718
- .hw-event-name {
1719
- font-weight: 600;
1720
- color: var(--hw-text);
1721
- }
1722
- .hw-event-action {
1723
- color: var(--hw-text-2);
1724
- }
1725
- .hw-resolved-banner {
1726
- display: flex;
1727
- align-items: center;
1728
- justify-content: center;
1729
- padding: 12px 16px;
1730
- border-top: 1px solid var(--hw-border);
1731
- background: var(--hw-bg-subtle);
1732
- color: var(--hw-text-2);
1733
- font-size: 13px;
1734
- flex-shrink: 0;
1735
- }
1736
- .hw-new {
1737
- flex: 1;
1738
- display: flex;
1739
- flex-direction: column;
1740
- background: var(--hw-bg-subtle);
1741
- }
1742
- .hw-new-body {
1743
- flex: 1;
1744
- display: flex;
1745
- flex-direction: column;
1746
- align-items: center;
1747
- justify-content: center;
1748
- padding: 32px 24px;
1749
- text-align: center;
1750
- }
1751
- .hw-new-welcome {
1752
- flex: 1;
1753
- padding: 16px 20px;
1754
- overflow-y: auto;
1755
- }
1756
- .hw-new-heading {
1757
- font-size: 17px;
1758
- font-weight: 600;
1759
- color: var(--hw-text);
1760
- margin-bottom: 6px;
1761
- }
1762
- .hw-new-desc {
1763
- font-size: 13px;
1764
- color: var(--hw-text-2);
1765
- margin-bottom: 24px;
1766
- }
1767
- .hw-powered {
1768
- text-align: center;
1769
- padding: 8px;
1770
- font-size: 11px;
1771
- color: var(--hw-text-4);
1772
- flex-shrink: 0;
1773
- }
1774
- .hw-powered a {
1775
- color: var(--hw-text-2);
1776
- text-decoration: none;
1777
- font-weight: 500;
1778
- }
1779
- .hw-powered a:hover {
1780
- color: var(--hw-text);
1781
- }
1782
- @media (max-width: 479px) {
1783
- .hw-widget {
1784
- bottom: 16px;
1785
- right: 16px;
1786
- left: auto;
1787
- }
1788
- .hw-window {
1789
- position: fixed;
1790
- top: 0;
1791
- left: 0;
1792
- right: 0;
1793
- bottom: 0;
1794
- width: 100%;
1795
- height: var(--hw-visible-height, 100%);
1796
- border-radius: 0;
1797
- animation: hw-mob-up 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
1798
- }
1799
- .hw-window--closing {
1800
- animation: hw-mob-down 0.2s ease forwards;
1801
- }
1802
- @keyframes hw-mob-up {
1803
- from {
1804
- opacity: 0;
1805
- transform: translateY(100%);
1806
- }
1807
- to {
1808
- opacity: 1;
1809
- transform: translateY(0);
1810
- }
1811
- }
1812
- @keyframes hw-mob-down {
1813
- from {
1814
- opacity: 1;
1815
- transform: translateY(0);
1816
- }
1817
- to {
1818
- opacity: 0;
1819
- transform: translateY(100%);
1820
- }
1821
- }
1822
- .hw-hero {
1823
- padding-top: calc(20px + env(safe-area-inset-top, 0px));
1824
- }
1825
- .hw-header {
1826
- padding-top: env(safe-area-inset-top, 0px);
1827
- }
1828
- .hw-tabs {
1829
- padding-bottom: env(safe-area-inset-bottom, 0px);
1830
- }
1831
- .hw-composer {
1832
- padding-bottom: calc(8px + env(safe-area-inset-bottom, 0px));
1833
- }
1834
- .hw-powered {
1835
- padding-bottom: calc(5px + env(safe-area-inset-bottom, 0px));
1836
- }
1837
- .hw-header-close,
1838
- .hw-header-back,
1839
- .hw-header-action {
1840
- width: 34px;
1841
- height: 34px;
1842
- }
1843
- .hw-composer-send {
1844
- width: 40px;
1845
- height: 40px;
1846
- }
1847
- .hw-window ~ .hw-bubble {
1848
- display: none;
1849
- }
1850
- .hw-messages {
1851
- padding: 12px 14px;
1852
- }
1853
- .hw-msg {
1854
- max-width: 82%;
1855
- }
1856
- }
1857
- .hw-preview {
1858
- position: absolute;
1859
- bottom: calc(100% + 12px);
1860
- right: 0;
1861
- width: 300px;
1862
- max-width: calc(100vw - 40px);
1863
- background: var(--hw-bg);
1864
- border: 1px solid var(--hw-border);
1865
- border-radius: 16px;
1866
- box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12), 0 2px 8px rgba(0, 0, 0, 0.06);
1867
- animation: hw-preview-in 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
1868
- overflow: hidden;
1869
- cursor: pointer;
1870
- transition: transform 0.15s, box-shadow 0.15s;
1871
- }
1872
- .hw-preview:hover {
1873
- transform: translateY(-2px);
1874
- box-shadow: 0 12px 40px rgba(0, 0, 0, 0.15), 0 4px 12px rgba(0, 0, 0, 0.08);
1875
- }
1876
- .hw-preview--closing {
1877
- animation: hw-preview-out 0.2s ease forwards;
1878
- }
1879
- @keyframes hw-preview-in {
1880
- from {
1881
- opacity: 0;
1882
- transform: translateY(8px) scale(0.95);
1883
- }
1884
- to {
1885
- opacity: 1;
1886
- transform: translateY(0) scale(1);
1887
- }
1888
- }
1889
- @keyframes hw-preview-out {
1890
- from {
1891
- opacity: 1;
1892
- transform: translateY(0) scale(1);
1893
- }
1894
- to {
1895
- opacity: 0;
1896
- transform: translateY(8px) scale(0.95);
1897
- }
1898
- }
1899
- .hw-preview-header {
1900
- display: flex;
1901
- align-items: center;
1902
- gap: 8px;
1903
- padding: 12px 14px 0;
1904
- }
1905
- .hw-preview-avatar {
1906
- width: 28px;
1907
- height: 28px;
1908
- border-radius: 50%;
1909
- background:
1910
- linear-gradient(
1911
- 135deg,
1912
- var(--hw-primary),
1913
- color-mix(in srgb, var(--hw-primary) 50%, black));
1914
- display: flex;
1915
- align-items: center;
1916
- justify-content: center;
1917
- color: white;
1918
- flex-shrink: 0;
1919
- overflow: hidden;
1920
- }
1921
- .hw-preview-avatar svg {
1922
- width: 16px;
1923
- height: 16px;
1924
- }
1925
- .hw-preview-name {
1926
- font-size: 13px;
1927
- font-weight: 600;
1928
- color: var(--hw-text);
1929
- flex: 1;
1930
- }
1931
- .hw-preview-close {
1932
- width: 24px;
1933
- height: 24px;
1934
- border: none;
1935
- background: transparent;
1936
- color: var(--hw-text-3);
1937
- cursor: pointer;
1938
- display: flex;
1939
- align-items: center;
1940
- justify-content: center;
1941
- border-radius: 50%;
1942
- transition: background 0.15s, color 0.15s;
1943
- flex-shrink: 0;
1944
- }
1945
- .hw-preview-close:hover {
1946
- background: var(--hw-bg-subtle);
1947
- color: var(--hw-text-2);
1948
- }
1949
- .hw-preview-close:active {
1950
- transform: scale(0.90);
1951
- transition:
1952
- transform 0.14s cubic-bezier(0.23, 1, 0.32, 1),
1953
- background 0.15s,
1954
- color 0.15s;
1955
- }
1956
- .hw-preview-close svg {
1957
- width: 12px;
1958
- height: 12px;
1959
- }
1960
- .hw-preview-body {
1961
- padding: 8px 14px 14px;
1962
- font-size: 14px;
1963
- line-height: 1.45;
1964
- color: var(--hw-text-2);
1965
- display: -webkit-box;
1966
- -webkit-line-clamp: 3;
1967
- -webkit-box-orient: vertical;
1968
- overflow: hidden;
1969
- }
1970
- .hw-content-search {
1971
- padding: 10px 16px;
1972
- }
1973
- .hw-content-search-box {
1974
- display: flex;
1975
- align-items: center;
1976
- gap: 8px;
1977
- padding: 8px 12px;
1978
- background: var(--hw-bg);
1979
- border: 1px solid var(--hw-border-md);
1980
- border-radius: 10px;
1981
- transition: border-color 0.15s, box-shadow 0.15s;
1982
- }
1983
- .hw-content-search-box:focus-within {
1984
- border-color: var(--hw-focus-border);
1985
- box-shadow: 0 0 0 3px var(--hw-focus-ring);
1986
- }
1987
- .hw-content-search-input {
1988
- flex: 1;
1989
- border: none !important;
1990
- outline: none !important;
1991
- box-shadow: none !important;
1992
- background: none;
1993
- font-size: 13px;
1994
- color: var(--hw-text-1);
1995
- font-family: inherit;
1996
- line-height: 1;
1997
- -webkit-appearance: none;
1998
- }
1999
- .hw-content-search-input:focus,
2000
- .hw-content-search-input:focus-visible {
2001
- outline: none !important;
2002
- box-shadow: none !important;
2003
- border: none !important;
2004
- }
2005
- .hw-content-search-input::placeholder {
2006
- color: var(--hw-text-3);
2007
- }
2008
- .hw-content-search-icon {
2009
- width: 15px;
2010
- height: 15px;
2011
- color: var(--hw-text-3);
2012
- flex-shrink: 0;
2013
- }
2014
- .hw-content-list {
2015
- display: flex;
2016
- flex-direction: column;
2017
- height: 100%;
2018
- }
2019
- .hw-content-entries {
2020
- flex: 1;
2021
- overflow-y: auto;
2022
- overscroll-behavior: contain;
2023
- }
2024
- .hw-content-entry {
2025
- display: block;
2026
- width: 100%;
2027
- padding: 14px 16px;
2028
- border: none;
2029
- border-bottom: 1px solid var(--hw-border);
2030
- background: none;
2031
- cursor: pointer;
2032
- text-align: left;
2033
- transition: background-color 0.15s ease;
2034
- -webkit-tap-highlight-color: transparent;
2035
- }
2036
- .hw-content-entry:hover {
2037
- background: var(--hw-bg-hover);
2038
- }
2039
- .hw-content-entry:active {
2040
- background: var(--hw-border);
2041
- }
2042
- .hw-content-entry:last-child {
2043
- border-bottom: none;
2044
- }
2045
- .hw-content-entry-main {
2046
- display: flex;
2047
- align-items: center;
2048
- gap: 12px;
2049
- }
2050
- .hw-content-entry-text {
2051
- flex: 1;
2052
- min-width: 0;
2053
- display: flex;
2054
- flex-direction: column;
2055
- gap: 3px;
2056
- }
2057
- .hw-content-entry-title {
2058
- font-size: 14px;
2059
- font-weight: 600;
2060
- color: var(--hw-text-1);
2061
- line-height: 1.3;
2062
- }
2063
- .hw-content-entry-desc {
2064
- font-size: 13px;
2065
- color: var(--hw-text-2);
2066
- line-height: 1.4;
2067
- display: -webkit-box;
2068
- -webkit-line-clamp: 2;
2069
- -webkit-box-orient: vertical;
2070
- overflow: hidden;
2071
- }
2072
- .hw-content-entry-meta {
2073
- display: flex;
2074
- align-items: center;
2075
- gap: 6px;
2076
- margin-top: 2px;
2077
- }
2078
- .hw-content-entry-badge {
2079
- font-size: 11px;
2080
- font-weight: 500;
2081
- color: var(--hw-text-3);
2082
- background: var(--hw-bg-hover);
2083
- padding: 1px 6px;
2084
- border-radius: 4px;
2085
- }
2086
- .hw-content-entry-date {
2087
- font-size: 11px;
2088
- color: var(--hw-text-3);
2089
- }
2090
- .hw-content-entry-chevron {
2091
- width: 16px;
2092
- height: 16px;
2093
- color: var(--hw-text-3);
2094
- flex-shrink: 0;
2095
- opacity: 0.5;
2096
- }
2097
- .hw-content-detail {
2098
- padding: 16px;
2099
- overflow-y: auto;
2100
- overscroll-behavior: contain;
2101
- height: 100%;
2102
- }
2103
- .hw-content-detail-header {
2104
- margin-bottom: 16px;
2105
- }
2106
- .hw-content-detail-title {
2107
- font-size: 17px;
2108
- font-weight: 700;
2109
- color: var(--hw-text-1);
2110
- margin: 0 0 6px;
2111
- line-height: 1.3;
2112
- display: flex;
2113
- align-items: center;
2114
- gap: 6px;
2115
- }
2116
- .hw-content-detail-meta {
2117
- display: flex;
2118
- align-items: center;
2119
- gap: 8px;
2120
- flex-wrap: wrap;
2121
- }
2122
- .hw-content-detail-date {
2123
- font-size: 12px;
2124
- color: var(--hw-text-3);
2125
- }
2126
- .hw-content-detail-body {
2127
- font-size: 14px;
2128
- line-height: 1.6;
2129
- color: var(--hw-text-1);
2130
- }
2131
- .hw-markdown h1 {
2132
- font-size: 17px;
2133
- font-weight: 700;
2134
- margin: 20px 0 8px;
2135
- }
2136
- .hw-markdown h2 {
2137
- font-size: 15px;
2138
- font-weight: 600;
2139
- margin: 16px 0 6px;
2140
- }
2141
- .hw-markdown h3 {
2142
- font-size: 14px;
2143
- font-weight: 600;
2144
- margin: 12px 0 4px;
2145
- }
2146
- .hw-markdown p {
2147
- margin: 0 0 12px;
2148
- }
2149
- .hw-markdown ul {
2150
- margin: 0 0 12px;
2151
- padding-left: 20px;
2152
- }
2153
- .hw-markdown li {
2154
- margin: 4px 0;
2155
- }
2156
- .hw-markdown code {
2157
- font-family:
2158
- ui-monospace,
2159
- "SF Mono",
2160
- monospace;
2161
- font-size: 12px;
2162
- background: var(--hw-bg-hover);
2163
- padding: 1px 5px;
2164
- border-radius: 4px;
2165
- }
2166
- .hw-code {
2167
- margin: 10px 0;
2168
- border-radius: 10px;
2169
- overflow: hidden;
2170
- border: 1px solid var(--hw-border, rgba(0, 0, 0, 0.08));
2171
- background: var(--hw-bg-hover, #f5f5f4);
2172
- font-family:
2173
- ui-monospace,
2174
- "SF Mono",
2175
- "Menlo",
2176
- monospace;
2177
- }
2178
- .hw-code-header {
2179
- display: flex;
2180
- align-items: center;
2181
- justify-content: space-between;
2182
- padding: 6px 12px;
2183
- font-size: 11px;
2184
- color: var(--hw-text-2, #6b7280);
2185
- background: rgba(0, 0, 0, 0.03);
2186
- border-bottom: 1px solid var(--hw-border, rgba(0, 0, 0, 0.06));
2187
- }
2188
- .hw-code-lang {
2189
- text-transform: lowercase;
2190
- letter-spacing: 0.02em;
2191
- font-weight: 500;
2192
- }
2193
- .hw-code-copy {
2194
- display: inline-flex;
2195
- align-items: center;
2196
- gap: 4px;
2197
- padding: 2px 8px;
2198
- font-size: 11px;
2199
- font-family: inherit;
2200
- color: var(--hw-text-2, #6b7280);
2201
- background: transparent;
2202
- border: 1px solid transparent;
2203
- border-radius: 5px;
2204
- cursor: pointer;
2205
- transition: background 120ms ease, color 120ms ease;
2206
- }
2207
- .hw-code-copy:hover {
2208
- color: var(--hw-text, #111);
2209
- background: rgba(0, 0, 0, 0.06);
2210
- }
2211
- .hw-code-copy--copied {
2212
- color: #16a34a;
2213
- }
2214
- .hw-code-copy--failed {
2215
- color: #dc2626;
2216
- }
2217
- .hw-code pre {
2218
- margin: 0;
2219
- padding: 10px 12px;
2220
- background: transparent;
2221
- border-radius: 0;
2222
- overflow-x: auto;
2223
- max-width: 100%;
2224
- }
2225
- .hw-code pre code {
2226
- display: block;
2227
- background: transparent;
2228
- padding: 0;
2229
- font-size: 12px;
2230
- line-height: 1.55;
2231
- white-space: pre;
2232
- color: var(--hw-text, #111);
2233
- }
2234
- @media (prefers-color-scheme: dark) {
2235
- .hw-code {
2236
- background: rgba(255, 255, 255, 0.04);
2237
- border-color: rgba(255, 255, 255, 0.08);
2238
- }
2239
- .hw-code-header {
2240
- background: rgba(255, 255, 255, 0.03);
2241
- border-bottom-color: rgba(255, 255, 255, 0.06);
2242
- }
2243
- .hw-code-copy:hover {
2244
- background: rgba(255, 255, 255, 0.08);
2245
- }
2246
- }
2247
- .hw-markdown pre {
2248
- margin: 8px 0;
2249
- padding: 10px 12px;
2250
- background: var(--hw-bg-hover);
2251
- border-radius: 8px;
2252
- overflow-x: auto;
2253
- max-width: 100%;
2254
- }
2255
- .hw-markdown pre code {
2256
- display: block;
2257
- background: transparent;
2258
- padding: 0;
2259
- border-radius: 0;
2260
- font-size: 12px;
2261
- line-height: 1.5;
2262
- white-space: pre;
2263
- word-break: normal;
2264
- color: inherit;
2265
- }
2266
- .hw-msg-bubble pre {
2267
- margin: 6px 0;
2268
- padding: 8px 10px;
2269
- background: rgba(0, 0, 0, 0.06);
2270
- border-radius: 6px;
2271
- overflow-x: auto;
2272
- max-width: 100%;
2273
- }
2274
- .hw-msg-bubble pre code {
2275
- background: transparent;
2276
- padding: 0;
2277
- font-size: 12px;
2278
- line-height: 1.5;
2279
- white-space: pre;
2280
- }
2281
- .hw-msg--team .hw-msg-bubble pre,
2282
- .hw-msg--visitor .hw-msg-bubble pre {
2283
- background: rgba(255, 255, 255, 0.12);
2284
- }
2285
- .hw-markdown blockquote {
2286
- margin: 0 0 12px;
2287
- padding: 8px 12px;
2288
- border-left: 3px solid var(--hw-border);
2289
- color: var(--hw-text-2);
2290
- font-style: italic;
2291
- }
2292
- .hw-markdown a {
2293
- color: var(--hw-primary);
2294
- text-decoration: underline;
2295
- text-underline-offset: 2px;
2296
- }
2297
- .hw-markdown img {
2298
- max-width: 100%;
2299
- border-radius: 8px;
2300
- margin: 8px 0;
2301
- outline: 1px solid rgba(0, 0, 0, 0.08);
2302
- outline-offset: -1px;
2303
- }
2304
- .hw-markdown hr {
2305
- border: none;
2306
- border-top: 1px solid var(--hw-border);
2307
- margin: 16px 0;
2308
- }
2309
- .hw-content-empty {
2310
- display: flex;
2311
- flex-direction: column;
2312
- align-items: center;
2313
- justify-content: center;
2314
- padding: 40px 20px;
2315
- text-align: center;
2316
- }
2317
- .hw-content-empty-title {
2318
- font-size: 14px;
2319
- font-weight: 600;
2320
- color: var(--hw-text-1);
2321
- margin-bottom: 4px;
2322
- }
2323
- .hw-content-empty-desc {
2324
- font-size: 12px;
2325
- color: var(--hw-text-3);
2326
- }
2327
- .hw-content-loading {
2328
- display: flex;
2329
- align-items: center;
2330
- justify-content: center;
2331
- padding: 40px 20px;
2332
- }
2333
- .hw-content-load-more {
2334
- display: block;
2335
- width: 100%;
2336
- padding: 10px;
2337
- border: none;
2338
- background: none;
2339
- color: var(--hw-primary);
2340
- font-size: 13px;
2341
- font-weight: 500;
2342
- cursor: pointer;
2343
- text-align: center;
2344
- }
2345
- .hw-content-load-more:hover {
2346
- background: var(--hw-bg-hover);
2347
- }
2348
- .hw-content-load-more:disabled {
2349
- opacity: 0.5;
2350
- cursor: default;
2351
- }
2352
- @media (hover: none) {
2353
- .hw-composer-preview-remove {
2354
- opacity: 0.7;
2355
- }
2356
- .hw-msg-meta {
2357
- opacity: 1;
2358
- }
2359
- }
2360
- .hw-composer--dragging .hw-composer-box {
2361
- border-color: var(--hw-primary);
2362
- background: color-mix(in srgb, var(--hw-primary) 4%, transparent);
2363
- }
2364
- .hw-composer-drop-overlay {
2365
- position: absolute;
2366
- inset: 0;
2367
- display: flex;
2368
- align-items: center;
2369
- justify-content: center;
2370
- background: color-mix(in srgb, var(--hw-bg) 90%, transparent);
2371
- border: 2px dashed var(--hw-primary);
2372
- border-radius: 12px;
2373
- z-index: 10;
2374
- pointer-events: none;
2375
- animation: hw-drop-pulse 1.5s ease-in-out infinite;
2376
- }
2377
- .hw-composer-drop-text {
2378
- font-size: 13px;
2379
- font-weight: 500;
2380
- color: var(--hw-primary);
2381
- }
2382
- @keyframes hw-drop-pulse {
2383
- 0%, 100% {
2384
- opacity: 0.8;
2385
- }
2386
- 50% {
2387
- opacity: 1;
2388
- }
2389
- }
2390
- .hw-msg-copy {
2391
- display: inline-flex;
2392
- align-items: center;
2393
- justify-content: center;
2394
- width: 20px;
2395
- height: 20px;
2396
- margin-left: 4px;
2397
- border: none;
2398
- border-radius: 4px;
2399
- background: none;
2400
- color: var(--hw-text-4);
2401
- cursor: pointer;
2402
- vertical-align: middle;
2403
- transition: color 0.15s, background 0.15s;
2404
- padding: 0;
2405
- flex-shrink: 0;
2406
- }
2407
- .hw-msg-copy:hover {
2408
- background: var(--hw-bg-hover);
2409
- color: var(--hw-text-2);
2410
- }
2411
- .hw-msg-copy svg {
2412
- width: 12px;
2413
- height: 12px;
2414
- }
2415
- .hw-msg-copy--done {
2416
- color: #22c55e;
2417
- }
2418
- .hw-disconnect {
2419
- display: flex;
2420
- align-items: center;
2421
- justify-content: center;
2422
- gap: 6px;
2423
- padding: 6px 12px;
2424
- background: #fef3c7;
2425
- color: #92400e;
2426
- font-size: 12px;
2427
- font-weight: 500;
2428
- flex-shrink: 0;
2429
- animation: hw-msg-appear 0.25s ease-out;
2430
- }
2431
- .hw-disconnect-dot {
2432
- width: 6px;
2433
- height: 6px;
2434
- border-radius: 50%;
2435
- background: #f59e0b;
2436
- animation: hw-loading-pulse 1.4s infinite;
2437
- }
2438
- .hw-error-state {
2439
- flex: 1;
2440
- display: flex;
2441
- flex-direction: column;
2442
- align-items: center;
2443
- justify-content: center;
2444
- padding: 32px 24px;
2445
- text-align: center;
2446
- gap: 12px;
2447
- }
2448
- .hw-error-icon {
2449
- width: 48px;
2450
- height: 48px;
2451
- border-radius: 50%;
2452
- background: #fef2f2;
2453
- color: #ef4444;
2454
- display: flex;
2455
- align-items: center;
2456
- justify-content: center;
2457
- }
2458
- .hw-error-icon svg {
2459
- width: 24px;
2460
- height: 24px;
2461
- }
2462
- .hw-error-title {
2463
- font-size: 15px;
2464
- font-weight: 600;
2465
- color: var(--hw-text);
2466
- }
2467
- .hw-error-desc {
2468
- font-size: 13px;
2469
- color: var(--hw-text-2);
2470
- }
2471
- .hw-error-btn {
2472
- padding: 8px 20px;
2473
- border: 1px solid var(--hw-border-md);
2474
- border-radius: 8px;
2475
- background: var(--hw-bg);
2476
- color: var(--hw-text);
2477
- font-size: 13px;
2478
- font-weight: 500;
2479
- cursor: pointer;
2480
- transition: background 0.15s;
2481
- }
2482
- .hw-error-btn:hover {
2483
- background: var(--hw-bg-hover);
2484
- }
2485
- .hw-send-error {
2486
- display: flex;
2487
- align-items: center;
2488
- gap: 8px;
2489
- padding: 8px 12px;
2490
- background: #fef2f2;
2491
- color: #dc2626;
2492
- font-size: 12px;
2493
- font-weight: 500;
2494
- flex-shrink: 0;
2495
- animation: hw-msg-appear 0.25s ease-out;
2496
- }
2497
- .hw-send-error-retry {
2498
- margin-left: auto;
2499
- padding: 2px 8px;
2500
- border: 1px solid #fca5a5;
2501
- border-radius: 4px;
2502
- background: none;
2503
- color: #dc2626;
2504
- font-size: 11px;
2505
- font-weight: 600;
2506
- cursor: pointer;
2507
- }
2508
- .hw-send-error-retry:hover {
2509
- background: #fee2e2;
2510
- }
2511
- .hw-resolved {
2512
- display: flex;
2513
- flex-direction: column;
2514
- align-items: center;
2515
- gap: 12px;
2516
- padding: 16px 20px;
2517
- border-top: 1px solid var(--hw-border);
2518
- flex-shrink: 0;
2519
- }
2520
- .hw-resolved-text {
2521
- font-size: 13px;
2522
- color: var(--hw-text-3);
2523
- font-weight: 500;
2524
- }
2525
- .hw-resolved-actions {
2526
- display: flex;
2527
- gap: 8px;
2528
- }
2529
- .hw-resolved-reopen {
2530
- padding: 6px 16px;
2531
- border: 1px solid var(--hw-border-md);
2532
- border-radius: 8px;
2533
- background: var(--hw-bg);
2534
- color: var(--hw-text);
2535
- font-size: 13px;
2536
- font-weight: 500;
2537
- cursor: pointer;
2538
- transition: background 0.15s;
2539
- }
2540
- .hw-resolved-reopen:hover {
2541
- background: var(--hw-bg-hover);
2542
- }
2543
- .hw-csat {
2544
- display: flex;
2545
- flex-direction: column;
2546
- align-items: center;
2547
- gap: 8px;
2548
- }
2549
- .hw-csat-label {
2550
- font-size: 12px;
2551
- color: var(--hw-text-3);
2552
- }
2553
- .hw-csat-buttons {
2554
- display: flex;
2555
- gap: 8px;
2556
- }
2557
- .hw-csat-btn {
2558
- width: 36px;
2559
- height: 36px;
2560
- border: 1px solid var(--hw-border-md);
2561
- border-radius: 8px;
2562
- background: var(--hw-bg);
2563
- cursor: pointer;
2564
- display: flex;
2565
- align-items: center;
2566
- justify-content: center;
2567
- font-size: 18px;
2568
- transition:
2569
- transform 0.15s,
2570
- border-color 0.15s,
2571
- background 0.15s;
2572
- }
2573
- .hw-csat-btn:hover {
2574
- transform: scale(1.1);
2575
- border-color: var(--hw-text-3);
2576
- }
2577
- .hw-csat-btn--selected {
2578
- border-color: var(--hw-primary);
2579
- background: var(--hw-bg-hover);
2580
- transform: scale(1.15);
2581
- }
2582
- .hw-csat-thanks {
2583
- font-size: 12px;
2584
- color: #22c55e;
2585
- font-weight: 500;
2586
- animation: hw-msg-appear 0.25s ease-out;
2587
- }
2588
- .hw-load-more-trigger {
2589
- display: flex;
2590
- justify-content: center;
2591
- min-height: 1px;
2592
- }
2593
- .hw-load-more-trigger:has(.hw-load-more-spinner) {
2594
- padding: 8px 0;
2595
- }
2596
- .hw-load-more-spinner {
2597
- display: flex;
2598
- gap: 3px;
2599
- }
2600
- .hw-load-more-spinner > div {
2601
- width: 5px;
2602
- height: 5px;
2603
- border-radius: 50%;
2604
- background: var(--hw-text-4);
2605
- animation: hw-loading-pulse 1.4s infinite;
2606
- }
2607
- .hw-load-more-spinner > div:nth-child(2) {
2608
- animation-delay: 0.2s;
2609
- }
2610
- .hw-load-more-spinner > div:nth-child(3) {
2611
- animation-delay: 0.4s;
2612
- }
2613
- .hw-drag-handle {
2614
- display: none;
2615
- }
2616
- @media (max-width: 479px) {
2617
- .hw-drag-handle {
2618
- display: flex;
2619
- justify-content: center;
2620
- padding: 8px 0 4px;
2621
- flex-shrink: 0;
2622
- }
2623
- .hw-drag-handle-pill {
2624
- width: 32px;
2625
- height: 4px;
2626
- border-radius: 2px;
2627
- background: var(--hw-text-4);
2628
- }
2629
- }
2630
- .hw-msg-bubble p {
2631
- margin: 0 0 8px;
2632
- }
2633
- .hw-msg-bubble p:last-child {
2634
- margin-bottom: 0;
2635
- }
2636
- .hw-msg-bubble strong {
2637
- font-weight: 600;
2638
- }
2639
- .hw-msg-bubble em {
2640
- font-style: italic;
2641
- }
2642
- .hw-msg-bubble a {
2643
- color: var(--hw-primary);
2644
- text-decoration: underline;
2645
- text-underline-offset: 2px;
2646
- word-break: break-all;
2647
- }
2648
- .hw-msg-bubble a:hover {
2649
- opacity: 0.8;
2650
- }
2651
- .hw-msg--visitor .hw-msg-bubble a {
2652
- color: rgba(255, 255, 255, 0.9);
2653
- }
2654
- .hw-msg--visitor .hw-msg-bubble a:hover {
2655
- color: white;
2656
- }
2657
- .hw-msg-bubble ul,
2658
- .hw-msg-bubble ol {
2659
- margin: 4px 0 8px;
2660
- padding-left: 20px;
2661
- }
2662
- .hw-msg-bubble li {
2663
- margin: 2px 0;
2664
- }
2665
- .hw-msg-bubble code {
2666
- padding: 1px 4px;
2667
- border-radius: 3px;
2668
- background: rgba(0, 0, 0, 0.06);
2669
- font-size: 0.9em;
2670
- font-family:
2671
- ui-monospace,
2672
- SFMono-Regular,
2673
- Menlo,
2674
- monospace;
2675
- }
2676
- .hw-msg-bubble pre {
2677
- margin: 4px 0 8px;
2678
- padding: 8px 10px;
2679
- border-radius: 6px;
2680
- background: rgba(0, 0, 0, 0.06);
2681
- overflow-x: auto;
2682
- font-size: 0.85em;
2683
- }
2684
- .hw-msg-bubble pre code {
2685
- padding: 0;
2686
- background: none;
2687
- }
2688
- .hw-msg-bubble blockquote {
2689
- margin: 4px 0 8px;
2690
- padding: 4px 0 4px 12px;
2691
- border-left: 3px solid var(--hw-border-md);
2692
- color: var(--hw-text-2);
2693
- }
2694
- .hw-widget[data-theme=dark] {
2695
- --hw-bg: #1c1c1e;
2696
- --hw-bg-subtle: #161618;
2697
- --hw-bg-hover: #2c2c2e;
2698
- --hw-border: rgba(255, 255, 255, 0.08);
2699
- --hw-border-md: rgba(255, 255, 255, 0.14);
2700
- --hw-text: #f5f5f5;
2701
- --hw-text-1: #f5f5f5;
2702
- --hw-text-2: #a1a1aa;
2703
- --hw-text-3: #71717a;
2704
- --hw-text-4: #52525b;
2705
- --hw-visitor-bubble-bg: #2c2c2e;
2706
- --hw-visitor-bubble-text: #f5f5f5;
2707
- --hw-focus-border: rgba(255, 255, 255, 0.28);
2708
- --hw-focus-ring: rgba(255, 255, 255, 0.08);
2709
- }
2710
- @media (prefers-color-scheme: dark) {
2711
- .hw-widget:not([data-theme=light]) {
2712
- --hw-bg: #1c1c1e;
2713
- --hw-bg-subtle: #161618;
2714
- --hw-bg-hover: #2c2c2e;
2715
- --hw-border: rgba(255, 255, 255, 0.08);
2716
- --hw-border-md: rgba(255, 255, 255, 0.14);
2717
- --hw-text: #f5f5f5;
2718
- --hw-text-1: #f5f5f5;
2719
- --hw-text-2: #a1a1aa;
2720
- --hw-text-3: #71717a;
2721
- --hw-text-4: #52525b;
2722
- --hw-visitor-bubble-bg: #2c2c2e;
2723
- --hw-visitor-bubble-text: #f5f5f5;
2724
- --hw-focus-border: rgba(255, 255, 255, 0.28);
2725
- --hw-focus-ring: rgba(255, 255, 255, 0.08);
2726
- }
2727
- }
2728
- @media (prefers-color-scheme: dark) {
2729
- .hw-widget:not([data-theme=light]) .hw-header {
2730
- background: var(--hw-bg);
2731
- border-color: var(--hw-border);
2732
- }
2733
- .hw-header-bot-icon {
2734
- background: var(--hw-bg-hover);
2735
- }
2736
- .hw-header-name,
2737
- .hw-header-title {
2738
- color: var(--hw-text);
2739
- }
2740
- .hw-header-status {
2741
- color: var(--hw-text-2);
2742
- }
2743
- .hw-header-close,
2744
- .hw-header-back {
2745
- color: var(--hw-text-2);
2746
- }
2747
- .hw-header-close:hover,
2748
- .hw-header-back:hover {
2749
- background: var(--hw-bg-hover);
2750
- color: var(--hw-text);
2751
- }
2752
- .hw-content-entry {
2753
- background: var(--hw-bg);
2754
- border-color: var(--hw-border);
2755
- }
2756
- .hw-content-entry:hover {
2757
- background: var(--hw-bg-hover);
2758
- border-color: var(--hw-border-md);
2759
- }
2760
- .hw-content-empty,
2761
- .hw-empty {
2762
- color: var(--hw-text-3);
2763
- }
2764
- .hw-conv-card {
2765
- border-color: var(--hw-border);
2766
- }
2767
- .hw-recent-row {
2768
- border-color: var(--hw-border);
2769
- }
2770
- .hw-composer-drop-overlay {
2771
- background: rgba(0, 0, 0, 0.6);
2772
- color: var(--hw-text);
2773
- }
2774
- .hw-composer--dragging .hw-composer-box {
2775
- border-color: var(--hw-focus-border);
2776
- box-shadow: 0 0 0 3px var(--hw-focus-ring);
2777
- }
2778
- .hw-hero {
2779
- background:
2780
- linear-gradient(
2781
- 160deg,
2782
- color-mix(in srgb, var(--hw-primary) 40%, black) 0%,
2783
- var(--hw-primary) 50%,
2784
- color-mix(in srgb, var(--hw-primary) 25%, black) 100%);
2785
- }
2786
- .hw-sheet {
2787
- background: var(--hw-bg);
2788
- }
2789
- .hw-card {
2790
- background: var(--hw-bg-hover);
2791
- border-color: var(--hw-border);
2792
- }
2793
- .hw-card:hover {
2794
- background: #333;
2795
- }
2796
- .hw-window {
2797
- box-shadow: 0 8px 30px rgba(0, 0, 0, 0.4), 0 0 0 1px rgba(255, 255, 255, 0.06);
2798
- }
2799
- .hw-bubble:focus-visible {
2800
- outline-color: var(--hw-text-3);
2801
- }
2802
- .hw-msg--visitor .hw-msg-bubble {
2803
- background: var(--hw-primary);
2804
- color: white;
2805
- }
2806
- .hw-msg-bubble code {
2807
- background: rgba(255, 255, 255, 0.08);
2808
- }
2809
- .hw-msg-bubble pre {
2810
- background: rgba(255, 255, 255, 0.08);
2811
- }
2812
- .hw-composer-box {
2813
- background: var(--hw-bg);
2814
- border-color: var(--hw-border);
2815
- }
2816
- .hw-composer-input {
2817
- color: var(--hw-text);
2818
- }
2819
- .hw-tabs {
2820
- background: var(--hw-bg);
2821
- border-color: var(--hw-border);
2822
- }
2823
- .hw-conv-card:hover,
2824
- .hw-recent-row:hover {
2825
- background: var(--hw-bg-hover);
2826
- }
2827
- .hw-disconnect {
2828
- background: #422006;
2829
- color: #fcd34d;
2830
- }
2831
- .hw-send-error {
2832
- background: #450a0a;
2833
- color: #fca5a5;
2834
- }
2835
- .hw-error-icon {
2836
- background: #450a0a;
2837
- color: #f87171;
2838
- }
2839
- .hw-msg-copy:hover {
2840
- background: var(--hw-bg-hover);
2841
- color: var(--hw-text-2);
2842
- }
2843
- .hw-resolved {
2844
- border-color: var(--hw-border);
2845
- }
2846
- .hw-resolved-reopen,
2847
- .hw-csat-btn {
2848
- background: var(--hw-bg-hover);
2849
- border-color: var(--hw-border-md);
2850
- color: var(--hw-text);
2851
- }
2852
- .hw-hover-preview {
2853
- background: #1c1c1e;
2854
- border-color: var(--hw-border);
2855
- }
2856
- .hw-content-search-box {
2857
- background: var(--hw-bg-hover);
2858
- border-color: var(--hw-border-md);
2859
- }
2860
- .hw-preview {
2861
- background: var(--hw-bg);
2862
- border-color: var(--hw-border);
2863
- }
2864
- }
2865
- /*# sourceMappingURL=index.css.map */