@keyflow2/keyflow-kit-wx-reply 0.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,825 @@
1
+ :root {
2
+ --background: 220 33% 98%;
3
+ --foreground: 222 42% 17%;
4
+ --card: 0 0% 100%;
5
+ --card-foreground: 222 42% 17%;
6
+ --muted: 220 30% 96%;
7
+ --muted-foreground: 219 18% 57%;
8
+ --border: 220 22% 90%;
9
+ --input: 220 22% 90%;
10
+ --ring: 245 82% 62%;
11
+ --primary: 245 82% 62%;
12
+ --primary-foreground: 0 0% 100%;
13
+ --secondary: 220 28% 96%;
14
+ --secondary-foreground: 222 42% 17%;
15
+ --accent: 220 28% 96%;
16
+ --accent-foreground: 222 42% 17%;
17
+ --destructive: 0 83% 61%;
18
+ --destructive-foreground: 0 0% 100%;
19
+ --primary-soft: hsl(245 82% 62% / 0.13);
20
+ --avatar-green: #eafbf1;
21
+ --avatar-purple: #eef0ff;
22
+ --shadow-sm: 0 1px 2px rgba(15, 23, 42, 0.05);
23
+ --shadow-md: 0 14px 30px rgba(15, 23, 42, 0.08);
24
+ }
25
+
26
+ html,
27
+ body {
28
+ min-height: 100%;
29
+ }
30
+
31
+ body {
32
+ margin: 0;
33
+ background: hsl(var(--background));
34
+ color: hsl(var(--foreground));
35
+ font-family: var(--font-sans);
36
+ }
37
+
38
+ [v-cloak] {
39
+ display: none;
40
+ }
41
+
42
+ button,
43
+ input {
44
+ font: inherit;
45
+ }
46
+
47
+ .wx-shell {
48
+ min-height: 100vh;
49
+ background:
50
+ linear-gradient(180deg, rgba(255, 255, 255, 0.86) 0%, rgba(255, 255, 255, 0) 18%),
51
+ hsl(var(--background));
52
+ border-radius: 28px 28px 0 0;
53
+ overflow: hidden;
54
+ }
55
+
56
+ .wx-toast {
57
+ position: fixed;
58
+ left: 50%;
59
+ bottom: calc(12px + env(safe-area-inset-bottom, 0px));
60
+ transform: translateX(-50%);
61
+ z-index: 30;
62
+ max-width: min(88vw, 360px);
63
+ padding: 10px 14px;
64
+ border-radius: 999px;
65
+ background: hsl(var(--foreground));
66
+ color: hsl(var(--primary-foreground));
67
+ box-shadow: var(--shadow-md);
68
+ font-size: 12px;
69
+ line-height: 1.3;
70
+ }
71
+
72
+ .wx-toast[data-kind="error"] {
73
+ background: hsl(var(--destructive));
74
+ }
75
+
76
+ .wx-toast[data-kind="success"] {
77
+ background: hsl(160 84% 28%);
78
+ }
79
+
80
+ .screen {
81
+ min-height: 100vh;
82
+ display: flex;
83
+ flex-direction: column;
84
+ }
85
+
86
+ .screen--reply {
87
+ min-height: auto;
88
+ }
89
+
90
+ .screen__header,
91
+ .subpage-header {
92
+ display: flex;
93
+ align-items: center;
94
+ justify-content: space-between;
95
+ gap: 12px;
96
+ padding: 16px 20px 10px;
97
+ }
98
+
99
+ .screen__title,
100
+ .subpage-title,
101
+ .reply-header__title {
102
+ margin: 0;
103
+ font-size: 18px;
104
+ line-height: 1.15;
105
+ font-weight: 800;
106
+ letter-spacing: -0.02em;
107
+ color: hsl(var(--foreground));
108
+ }
109
+
110
+ .header-actions {
111
+ display: inline-flex;
112
+ align-items: center;
113
+ gap: 4px;
114
+ }
115
+
116
+ .icon-button,
117
+ .back-button {
118
+ appearance: none;
119
+ border: 0;
120
+ background: transparent;
121
+ width: 36px;
122
+ height: 36px;
123
+ padding: 0;
124
+ display: inline-flex;
125
+ align-items: center;
126
+ justify-content: center;
127
+ color: hsl(218 24% 56%);
128
+ cursor: pointer;
129
+ border-radius: 999px;
130
+ }
131
+
132
+ .icon-button svg,
133
+ .back-button svg {
134
+ width: 22px;
135
+ height: 22px;
136
+ }
137
+
138
+ .search-box {
139
+ position: relative;
140
+ margin: 0 20px 12px;
141
+ }
142
+
143
+ .search-box__icon {
144
+ position: absolute;
145
+ left: 16px;
146
+ top: 50%;
147
+ width: 19px;
148
+ height: 19px;
149
+ transform: translateY(-50%);
150
+ color: hsl(218 25% 66%);
151
+ }
152
+
153
+ .search-box__input,
154
+ .config-input {
155
+ width: 100%;
156
+ appearance: none;
157
+ border: 1px solid hsl(var(--border));
158
+ background: hsl(var(--card));
159
+ color: hsl(var(--foreground));
160
+ box-shadow: var(--shadow-sm);
161
+ outline: none;
162
+ }
163
+
164
+ .search-box__input {
165
+ border-radius: 18px;
166
+ height: 56px;
167
+ padding: 0 148px 0 50px;
168
+ font-size: 15px;
169
+ color: hsl(220 22% 48%);
170
+ }
171
+
172
+ .search-box__clear,
173
+ .search-box__action {
174
+ position: absolute;
175
+ top: 8px;
176
+ z-index: 2;
177
+ height: 40px;
178
+ border: 0;
179
+ border-radius: 14px;
180
+ font-size: 13px;
181
+ font-weight: 800;
182
+ cursor: pointer;
183
+ pointer-events: auto;
184
+ }
185
+
186
+ .search-box__clear {
187
+ right: 76px;
188
+ min-width: 56px;
189
+ padding: 0 10px;
190
+ background: hsl(var(--secondary));
191
+ color: hsl(220 16% 44%);
192
+ }
193
+
194
+ .search-box__action {
195
+ right: 8px;
196
+ min-width: 62px;
197
+ padding: 0 14px;
198
+ background: hsl(var(--primary) / 0.14);
199
+ color: hsl(var(--primary));
200
+ }
201
+
202
+ .search-box__action[data-disabled="true"] {
203
+ opacity: 0.5;
204
+ }
205
+
206
+ .search-box__clear:active,
207
+ .search-box__action:active {
208
+ transform: translateY(1px);
209
+ }
210
+
211
+ .search-box__input::placeholder,
212
+ .config-input::placeholder {
213
+ color: hsl(220 20% 72%);
214
+ }
215
+
216
+ .screen__body {
217
+ flex: 1;
218
+ padding: 0 0 14px;
219
+ }
220
+
221
+ .screen--reply .screen__body {
222
+ flex: 0 0 auto;
223
+ }
224
+
225
+ .section {
226
+ padding: 0 0 12px;
227
+ }
228
+
229
+ .section__title {
230
+ display: flex;
231
+ align-items: center;
232
+ gap: 8px;
233
+ padding: 0 20px 10px;
234
+ color: hsl(223 22% 60%);
235
+ font-size: 12px;
236
+ font-weight: 500;
237
+ }
238
+
239
+ .section__title svg {
240
+ width: 16px;
241
+ height: 16px;
242
+ flex: 0 0 auto;
243
+ }
244
+
245
+ .contact-strip {
246
+ display: flex;
247
+ gap: 10px;
248
+ padding: 0 20px;
249
+ overflow-x: auto;
250
+ overflow-y: hidden;
251
+ scrollbar-width: none;
252
+ }
253
+
254
+ .contact-strip::-webkit-scrollbar {
255
+ display: none;
256
+ }
257
+
258
+ .avatar-tile,
259
+ .session-tile {
260
+ appearance: none;
261
+ border: 0;
262
+ background: transparent;
263
+ padding: 0;
264
+ cursor: pointer;
265
+ color: inherit;
266
+ }
267
+
268
+ .avatar-tile {
269
+ width: 60px;
270
+ flex: 0 0 60px;
271
+ }
272
+
273
+ .avatar-tile__name,
274
+ .session-tile__name {
275
+ display: block;
276
+ margin-top: 7px;
277
+ font-size: 11px;
278
+ line-height: 1.25;
279
+ text-align: center;
280
+ color: hsl(222 18% 37%);
281
+ white-space: nowrap;
282
+ overflow: hidden;
283
+ text-overflow: ellipsis;
284
+ }
285
+
286
+ .session-grid {
287
+ display: grid;
288
+ grid-template-columns: repeat(auto-fill, minmax(64px, 1fr));
289
+ gap: 14px 10px;
290
+ padding: 0 20px;
291
+ }
292
+
293
+ .avatar-frame {
294
+ position: relative;
295
+ display: inline-flex;
296
+ align-items: center;
297
+ justify-content: center;
298
+ width: 56px;
299
+ height: 56px;
300
+ margin: 0 auto;
301
+ border-radius: 18px;
302
+ background: var(--avatar-green);
303
+ color: #0db57c;
304
+ font-size: 16px;
305
+ font-weight: 700;
306
+ overflow: hidden;
307
+ }
308
+
309
+ .avatar-frame--group {
310
+ background: var(--avatar-purple);
311
+ color: #5a64ff;
312
+ }
313
+
314
+ .avatar-frame img {
315
+ width: 100%;
316
+ height: 100%;
317
+ object-fit: cover;
318
+ }
319
+
320
+ .unread-badge {
321
+ position: absolute;
322
+ top: -5px;
323
+ right: -5px;
324
+ min-width: 22px;
325
+ height: 22px;
326
+ padding: 0 6px;
327
+ display: inline-flex;
328
+ align-items: center;
329
+ justify-content: center;
330
+ border-radius: 999px;
331
+ background: #ff4c4c;
332
+ color: #fff;
333
+ font-size: 12px;
334
+ font-weight: 700;
335
+ box-shadow: 0 6px 12px rgba(255, 76, 76, 0.28);
336
+ }
337
+
338
+ .service-inline,
339
+ .config-card,
340
+ .reply-card,
341
+ .empty-state,
342
+ .loading-card {
343
+ border: 1px solid hsl(var(--border));
344
+ background: hsl(var(--card));
345
+ box-shadow: var(--shadow-sm);
346
+ }
347
+
348
+ .service-inline {
349
+ margin: 0 20px 12px;
350
+ padding: 11px 14px;
351
+ border-radius: 18px;
352
+ display: flex;
353
+ align-items: center;
354
+ justify-content: space-between;
355
+ gap: 12px;
356
+ }
357
+
358
+ .service-inline strong,
359
+ .service-inline span {
360
+ display: block;
361
+ }
362
+
363
+ .service-inline strong {
364
+ font-size: 13px;
365
+ color: hsl(var(--foreground));
366
+ }
367
+
368
+ .service-inline span {
369
+ margin-top: 4px;
370
+ font-size: 12px;
371
+ line-height: 1.35;
372
+ color: hsl(var(--muted-foreground));
373
+ }
374
+
375
+ .service-inline__action {
376
+ appearance: none;
377
+ border: 0;
378
+ border-radius: 999px;
379
+ background: hsl(var(--primary) / 0.12);
380
+ color: hsl(var(--primary));
381
+ min-height: 36px;
382
+ padding: 0 14px;
383
+ font-weight: 700;
384
+ cursor: pointer;
385
+ }
386
+
387
+ .subpage-header {
388
+ justify-content: flex-start;
389
+ }
390
+
391
+ .subpage-title {
392
+ flex: 1;
393
+ text-align: center;
394
+ margin-right: 36px;
395
+ font-size: 17px;
396
+ }
397
+
398
+ .config-card {
399
+ margin: 0 20px;
400
+ min-height: 0;
401
+ padding: 24px 16px 18px;
402
+ border-radius: 22px;
403
+ }
404
+
405
+ .config-label {
406
+ display: inline-flex;
407
+ align-items: center;
408
+ gap: 8px;
409
+ font-size: 15px;
410
+ color: hsl(220 18% 53%);
411
+ }
412
+
413
+ .config-label svg {
414
+ width: 18px;
415
+ height: 18px;
416
+ }
417
+
418
+ .config-input {
419
+ margin-top: 12px;
420
+ height: 56px;
421
+ border-radius: 18px;
422
+ padding: 0 16px;
423
+ font-size: 14px;
424
+ }
425
+
426
+ .config-hint,
427
+ .config-status {
428
+ margin: 10px 2px 0;
429
+ font-size: 12px;
430
+ line-height: 1.5;
431
+ color: hsl(219 24% 67%);
432
+ }
433
+
434
+ .config-status[data-kind="error"] {
435
+ color: hsl(var(--destructive));
436
+ }
437
+
438
+ .save-button {
439
+ appearance: none;
440
+ border: 0;
441
+ width: 100%;
442
+ margin-top: 18px;
443
+ min-height: 52px;
444
+ border-radius: 18px;
445
+ background: linear-gradient(90deg, #5e54f8 0%, #4a3fe7 100%);
446
+ color: #fff;
447
+ font-size: 15px;
448
+ font-weight: 800;
449
+ box-shadow: 0 12px 24px rgba(90, 84, 248, 0.24);
450
+ cursor: pointer;
451
+ }
452
+
453
+ .save-button:disabled {
454
+ opacity: 0.6;
455
+ cursor: default;
456
+ }
457
+
458
+ .subpage-header--reply {
459
+ align-items: flex-start;
460
+ padding-bottom: 4px;
461
+ }
462
+
463
+ .reply-header {
464
+ flex: 1;
465
+ min-width: 0;
466
+ }
467
+
468
+ .reply-header__subtitle {
469
+ display: flex;
470
+ align-items: flex-start;
471
+ gap: 6px;
472
+ margin-top: 4px;
473
+ font-size: 12px;
474
+ line-height: 1.35;
475
+ color: hsl(217 18% 61%);
476
+ }
477
+
478
+ .reply-header__subtitle svg {
479
+ width: 16px;
480
+ height: 16px;
481
+ margin-top: 1px;
482
+ flex: 0 0 auto;
483
+ }
484
+
485
+ .reply-header__subtitle span {
486
+ display: -webkit-box;
487
+ overflow: hidden;
488
+ -webkit-box-orient: vertical;
489
+ -webkit-line-clamp: 2;
490
+ }
491
+
492
+ .screen__body--reply {
493
+ padding-bottom: 10px;
494
+ }
495
+
496
+ .reply-list,
497
+ .loading-list {
498
+ display: grid;
499
+ gap: 10px;
500
+ padding: 0 20px;
501
+ }
502
+
503
+ .reply-card,
504
+ .loading-card {
505
+ width: 100%;
506
+ border-radius: 22px;
507
+ }
508
+
509
+ .reply-card {
510
+ appearance: none;
511
+ text-align: left;
512
+ padding: 18px 16px;
513
+ cursor: pointer;
514
+ transition: transform 160ms ease, box-shadow 160ms ease, border-color 160ms ease;
515
+ }
516
+
517
+ .reply-card--selected {
518
+ border-color: hsl(var(--primary) / 0.34);
519
+ box-shadow: 0 10px 24px rgba(94, 84, 248, 0.14);
520
+ }
521
+
522
+ .reply-card__lead {
523
+ font-weight: 800;
524
+ margin-right: 8px;
525
+ color: hsl(219 38% 28%);
526
+ }
527
+
528
+ .reply-card__text {
529
+ font-size: 15px;
530
+ line-height: 1.48;
531
+ color: hsl(219 37% 28%);
532
+ word-break: break-word;
533
+ }
534
+
535
+ .loading-card {
536
+ height: 96px;
537
+ background:
538
+ linear-gradient(90deg, rgba(255, 255, 255, 0) 0%, rgba(245, 247, 255, 0.9) 50%, rgba(255, 255, 255, 0) 100%),
539
+ hsl(var(--card));
540
+ background-size: 200% 100%;
541
+ animation: shimmer 1.2s linear infinite;
542
+ }
543
+
544
+ .reply-dock {
545
+ position: sticky;
546
+ left: 0;
547
+ right: 0;
548
+ bottom: 0;
549
+ z-index: 15;
550
+ margin-top: 4px;
551
+ padding: 0 0 calc(10px + env(safe-area-inset-bottom, 0px));
552
+ background:
553
+ linear-gradient(180deg, rgba(247, 249, 253, 0) 0%, rgba(247, 249, 253, 0.92) 28%, rgba(247, 249, 253, 1) 100%);
554
+ }
555
+
556
+ .advanced-sheet {
557
+ margin: 0 0 8px;
558
+ padding: 12px 20px 0;
559
+ background: hsl(var(--card));
560
+ border-top: 1px solid hsl(var(--border));
561
+ box-shadow: 0 -10px 30px rgba(15, 23, 42, 0.04);
562
+ }
563
+
564
+ .advanced-section + .advanced-section {
565
+ margin-top: 10px;
566
+ }
567
+
568
+ .advanced-section__label {
569
+ display: flex;
570
+ align-items: center;
571
+ gap: 8px;
572
+ margin-bottom: 7px;
573
+ color: hsl(223 22% 58%);
574
+ font-size: 12px;
575
+ font-weight: 500;
576
+ }
577
+
578
+ .advanced-section__label svg {
579
+ width: 18px;
580
+ height: 18px;
581
+ }
582
+
583
+ .advanced-section__hint {
584
+ margin: 8px 2px 0;
585
+ color: hsl(220 18% 61%);
586
+ font-size: 11px;
587
+ line-height: 1.45;
588
+ }
589
+
590
+ .intent-editor {
591
+ display: grid;
592
+ grid-template-columns: 1fr auto;
593
+ gap: 8px;
594
+ }
595
+
596
+ .intent-editor__input {
597
+ width: 100%;
598
+ appearance: none;
599
+ border: 1px solid hsl(var(--border));
600
+ border-radius: 14px;
601
+ background: hsl(var(--card));
602
+ min-height: 42px;
603
+ padding: 0 12px;
604
+ color: hsl(var(--foreground));
605
+ outline: none;
606
+ box-shadow: var(--shadow-sm);
607
+ }
608
+
609
+ .intent-editor__input::placeholder {
610
+ color: hsl(220 20% 72%);
611
+ }
612
+
613
+ .intent-editor__button {
614
+ appearance: none;
615
+ border: 0;
616
+ min-width: 58px;
617
+ min-height: 42px;
618
+ border-radius: 14px;
619
+ padding: 0 14px;
620
+ background: hsl(var(--primary) / 0.14);
621
+ color: hsl(var(--primary));
622
+ font-size: 13px;
623
+ font-weight: 800;
624
+ cursor: pointer;
625
+ }
626
+
627
+ .intent-editor__button:disabled {
628
+ opacity: 0.5;
629
+ cursor: default;
630
+ }
631
+
632
+ .segmented-grid {
633
+ display: grid;
634
+ grid-template-columns: repeat(3, minmax(0, 1fr));
635
+ gap: 7px;
636
+ }
637
+
638
+ .segmented-grid--wide {
639
+ grid-template-columns: repeat(2, minmax(0, 1fr));
640
+ }
641
+
642
+ .segmented-button {
643
+ appearance: none;
644
+ border: 1px solid transparent;
645
+ border-radius: 12px;
646
+ background: hsl(var(--muted));
647
+ min-height: 38px;
648
+ padding: 0 8px;
649
+ color: hsl(223 24% 36%);
650
+ font-size: 13px;
651
+ cursor: pointer;
652
+ }
653
+
654
+ .segmented-button--active {
655
+ border-color: hsl(var(--primary) / 0.28);
656
+ background: hsl(var(--primary) / 0.08);
657
+ color: hsl(var(--primary));
658
+ }
659
+
660
+ .count-stepper {
661
+ display: grid;
662
+ grid-template-columns: 40px 1fr 40px;
663
+ gap: 8px;
664
+ align-items: center;
665
+ }
666
+
667
+ .count-stepper__button {
668
+ appearance: none;
669
+ border: 1px solid hsl(var(--border));
670
+ min-height: 40px;
671
+ border-radius: 12px;
672
+ background: hsl(var(--card));
673
+ color: hsl(223 24% 32%);
674
+ font-size: 22px;
675
+ line-height: 1;
676
+ cursor: pointer;
677
+ }
678
+
679
+ .count-stepper__button:disabled {
680
+ opacity: 0.45;
681
+ cursor: default;
682
+ }
683
+
684
+ .count-stepper__value {
685
+ min-height: 40px;
686
+ border-radius: 14px;
687
+ background: hsl(var(--muted));
688
+ display: flex;
689
+ align-items: center;
690
+ justify-content: center;
691
+ gap: 6px;
692
+ color: hsl(223 24% 32%);
693
+ }
694
+
695
+ .count-stepper__value strong {
696
+ font-size: 18px;
697
+ font-weight: 800;
698
+ }
699
+
700
+ .count-stepper__value span {
701
+ font-size: 12px;
702
+ color: hsl(220 18% 57%);
703
+ }
704
+
705
+ .dock-actions {
706
+ display: grid;
707
+ grid-template-columns: 1fr 1fr;
708
+ gap: 8px;
709
+ padding: 0 20px;
710
+ }
711
+
712
+ .dock-button {
713
+ appearance: none;
714
+ border: 0;
715
+ min-height: 46px;
716
+ border-radius: 999px;
717
+ padding: 0 14px;
718
+ display: inline-flex;
719
+ align-items: center;
720
+ justify-content: center;
721
+ gap: 6px;
722
+ font-size: 14px;
723
+ font-weight: 800;
724
+ cursor: pointer;
725
+ }
726
+
727
+ .dock-button svg {
728
+ width: 16px;
729
+ height: 16px;
730
+ }
731
+
732
+ .dock-button--secondary {
733
+ background: hsl(var(--secondary));
734
+ color: hsl(219 32% 27%);
735
+ }
736
+
737
+ .dock-button--primary {
738
+ background: hsl(var(--primary) / 0.16);
739
+ color: hsl(var(--primary));
740
+ }
741
+
742
+ .dock-button:disabled {
743
+ opacity: 0.6;
744
+ cursor: default;
745
+ }
746
+
747
+ .empty-state {
748
+ margin: 0 20px;
749
+ padding: 18px 16px;
750
+ border-radius: 22px;
751
+ text-align: center;
752
+ }
753
+
754
+ .empty-state--compact {
755
+ padding: 18px 16px;
756
+ }
757
+
758
+ .empty-state p {
759
+ margin: 0;
760
+ color: hsl(var(--muted-foreground));
761
+ line-height: 1.5;
762
+ }
763
+
764
+ @keyframes shimmer {
765
+ from {
766
+ background-position: 200% 0;
767
+ }
768
+ to {
769
+ background-position: -200% 0;
770
+ }
771
+ }
772
+
773
+ @media (max-width: 420px), (max-height: 720px) {
774
+ .wx-shell {
775
+ border-radius: 24px 24px 0 0;
776
+ }
777
+
778
+ .screen__header,
779
+ .subpage-header {
780
+ padding: 16px 16px 10px;
781
+ }
782
+
783
+ .search-box {
784
+ margin: 0 16px 14px;
785
+ }
786
+
787
+ .service-inline,
788
+ .config-card,
789
+ .reply-list,
790
+ .loading-list,
791
+ .empty-state,
792
+ .dock-actions,
793
+ .advanced-sheet,
794
+ .section__title,
795
+ .contact-strip,
796
+ .session-grid {
797
+ padding-left: 16px;
798
+ padding-right: 16px;
799
+ }
800
+
801
+ .service-inline,
802
+ .config-card,
803
+ .empty-state {
804
+ margin-left: 16px;
805
+ margin-right: 16px;
806
+ }
807
+
808
+ .search-box__input,
809
+ .config-input {
810
+ height: 56px;
811
+ }
812
+
813
+ .reply-card {
814
+ padding: 16px 14px;
815
+ }
816
+
817
+ .reply-card__text {
818
+ font-size: 14px;
819
+ }
820
+
821
+ .dock-button {
822
+ min-height: 44px;
823
+ font-size: 13px;
824
+ }
825
+ }