instbyte 1.6.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.
@@ -0,0 +1,813 @@
1
+ :root {
2
+ --color-primary: #111827;
3
+ --color-primary-hover: #1f2937;
4
+ --color-primary-light: #f3f4f6;
5
+ --color-primary-dark: #030712;
6
+ --color-on-primary: #ffffff;
7
+ --color-secondary: #6b7280;
8
+ --color-secondary-hover: #4b5563;
9
+ --color-secondary-light: #f9fafb;
10
+ --color-on-secondary: #ffffff;
11
+ }
12
+
13
+ body {
14
+ font-family: system-ui;
15
+ background: #f3f4f6;
16
+ margin: 0;
17
+ }
18
+
19
+ header {
20
+ background: #ffffff;
21
+ color: #111827;
22
+ padding: 14px 20px;
23
+ border-bottom: 1px solid #e5e7eb;
24
+ }
25
+
26
+ .container {
27
+ max-width: 900px;
28
+ margin: 20px auto;
29
+ padding: 0 12px;
30
+ }
31
+
32
+ .channel-bar {
33
+ background: #e5e7eb;
34
+ border-radius: 12px;
35
+ padding: 6px;
36
+ margin-bottom: 16px;
37
+ display: flex;
38
+ align-items: center;
39
+ gap: 6px;
40
+ position: relative;
41
+ }
42
+
43
+ .channels {
44
+ flex: 1;
45
+ display: flex;
46
+ gap: 6px;
47
+ }
48
+
49
+ .channels::-webkit-scrollbar {
50
+ display: none;
51
+ }
52
+
53
+ .channels button {
54
+ position: relative;
55
+ display: flex;
56
+ align-items: center;
57
+ gap: 4px;
58
+ background: transparent;
59
+ border: none;
60
+ padding: 7px 12px;
61
+ border-radius: 10px;
62
+ cursor: pointer;
63
+ font-size: 14px;
64
+ color: #4b5563;
65
+ transition: all 0.15s ease;
66
+ }
67
+
68
+ .channels button:hover {
69
+ background: #d1d5db;
70
+ color: #111827;
71
+ }
72
+
73
+ .channels button.active {
74
+ background: #f9fafb;
75
+ color: #111827;
76
+ }
77
+
78
+ .composer {
79
+ background: #fff;
80
+ padding: 12px;
81
+ border-radius: 8px;
82
+ margin-top: 12px;
83
+ display: flex;
84
+ gap: 8px;
85
+ }
86
+
87
+ input[type=text] {
88
+ flex: 1;
89
+ padding: 10px;
90
+ border: 1px solid #ddd;
91
+ border-radius: 6px;
92
+ }
93
+
94
+ button {
95
+ padding: 10px 14px;
96
+ border: none;
97
+ background: var(--color-primary);
98
+ color: var(--color-on-primary);
99
+ border-radius: 6px;
100
+ cursor: pointer;
101
+ }
102
+
103
+ input[type=text]:focus {
104
+ outline: none;
105
+ border-color: var(--color-primary);
106
+ box-shadow: 0 0 0 3px var(--color-primary-light);
107
+ }
108
+
109
+ .drop {
110
+ border: 2px dashed #ccc;
111
+ padding: 18px;
112
+ margin-top: 12px;
113
+ text-align: center;
114
+ background: #fff;
115
+ border-radius: 8px;
116
+ }
117
+
118
+ .item {
119
+ background: #fff;
120
+ padding: 12px;
121
+ margin-top: 10px;
122
+ border-radius: 8px;
123
+ display: flex;
124
+ flex-direction: column;
125
+ }
126
+
127
+ .item-top {
128
+ display: flex;
129
+ justify-content: space-between;
130
+ align-items: center;
131
+ }
132
+
133
+ .meta {
134
+ font-size: 12px;
135
+ color: #6b7280;
136
+ }
137
+
138
+ .left {
139
+ max-width: 70%;
140
+ word-break: break-word;
141
+ }
142
+
143
+ .item-actions {
144
+ display: flex;
145
+ gap: 8px;
146
+ }
147
+
148
+ .icon-btn {
149
+ background: #f9fafb;
150
+ border: 1px solid #e5e7eb;
151
+ border-radius: 6px;
152
+ padding: 6px 8px;
153
+ cursor: pointer;
154
+ font-size: 14px;
155
+ line-height: 1;
156
+ color: #6b7280;
157
+ }
158
+
159
+ .icon-btn:hover {
160
+ background: #e5e7eb;
161
+ }
162
+
163
+ .icon-btn.delete {
164
+ color: #b91c1c;
165
+ border-color: #fecaca;
166
+ background: #fff;
167
+ }
168
+
169
+ .icon-btn.delete:hover {
170
+ background: #fee2e2;
171
+ }
172
+
173
+ .app-header {
174
+ background: #ffffff;
175
+ border-bottom: 1px solid #e5e7eb;
176
+ padding: 10px 20px;
177
+ display: flex;
178
+ align-items: center;
179
+ justify-content: space-between;
180
+ gap: 20px;
181
+ }
182
+
183
+ .header-left {
184
+ display: flex;
185
+ align-items: center;
186
+ gap: 10px;
187
+ }
188
+
189
+ .logo {
190
+ height: 24px;
191
+ }
192
+
193
+ .app-name {
194
+ font-weight: 600;
195
+ font-size: 15px;
196
+ color: #111827;
197
+ }
198
+
199
+ .header-center {
200
+ flex: 1;
201
+ display: flex;
202
+ justify-content: center;
203
+ }
204
+
205
+ .search-wrapper {
206
+ position: relative;
207
+ width: 100%;
208
+ max-width: 420px;
209
+ }
210
+
211
+ .search-wrapper input {
212
+ width: 100%;
213
+ padding: 8px 12px 8px 32px;
214
+ border-radius: 8px;
215
+ border: 1px solid #e5e7eb;
216
+ background: #f9fafb;
217
+ font-size: 14px;
218
+ }
219
+
220
+ .search-wrapper input:focus {
221
+ outline: none;
222
+ border-color: #d1d5db;
223
+ background: #ffffff;
224
+ }
225
+
226
+ .search-icon {
227
+ position: absolute;
228
+ left: 10px;
229
+ top: 50%;
230
+ transform: translateY(-50%);
231
+ font-size: 14px;
232
+ color: #9ca3af;
233
+ }
234
+
235
+ .header-right {
236
+ display: flex;
237
+ align-items: center;
238
+ gap: 8px;
239
+ font-size: 13px;
240
+ }
241
+
242
+ .link-btn {
243
+ background: none;
244
+ border: none;
245
+ color: #6b7280;
246
+ cursor: pointer;
247
+ font-size: 13px;
248
+ }
249
+
250
+ .link-btn:hover {
251
+ color: #111827;
252
+ }
253
+
254
+ .add-channel {
255
+ background: transparent;
256
+ color: #6b7280;
257
+ font-weight: 600;
258
+ border: none;
259
+ padding: 8px 16px;
260
+ border-radius: 10px;
261
+ cursor: pointer;
262
+ }
263
+
264
+ .add-channel-mobile {
265
+ display: none;
266
+ }
267
+
268
+ .add-channel:hover {
269
+ background: #d1d5db;
270
+ }
271
+
272
+ .size-tag {
273
+ display: inline-block;
274
+ font-size: 11px;
275
+ font-weight: 500;
276
+ padding: 2px 7px;
277
+ border-radius: 4px;
278
+ margin-left: 6px;
279
+ vertical-align: middle;
280
+ }
281
+
282
+ .size-tag.warn {
283
+ background: #fef9c3;
284
+ color: #854d0e;
285
+ }
286
+
287
+ .size-tag.danger-light {
288
+ background: #fee2e2;
289
+ color: #b91c1c;
290
+ }
291
+
292
+ .size-tag.danger-dark {
293
+ background: #7f1d1d;
294
+ color: #fff;
295
+ }
296
+
297
+ .left {
298
+ cursor: pointer;
299
+ position: relative;
300
+ }
301
+
302
+ .left:hover::after {
303
+ content: attr(data-tooltip);
304
+ position: absolute;
305
+ bottom: calc(100% + 6px);
306
+ left: 0;
307
+ background: #111827;
308
+ color: #fff;
309
+ font-size: 11px;
310
+ padding: 4px 8px;
311
+ border-radius: 5px;
312
+ white-space: nowrap;
313
+ pointer-events: none;
314
+ z-index: 10;
315
+ }
316
+
317
+ .left.flash {
318
+ background: #d1fae5;
319
+ border-radius: 6px;
320
+ transition: background 0.3s ease;
321
+ }
322
+
323
+ .qr-widget {
324
+ position: fixed;
325
+ bottom: 20px;
326
+ right: 20px;
327
+ z-index: 999;
328
+ display: flex;
329
+ flex-direction: column;
330
+ align-items: flex-end;
331
+ gap: 8px;
332
+ }
333
+
334
+ .qr-card {
335
+ background: #fff;
336
+ border: 1px solid #e5e7eb;
337
+ border-radius: 12px;
338
+ padding: 16px;
339
+ text-align: center;
340
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
341
+ display: none;
342
+ width: 200px;
343
+ }
344
+
345
+ .qr-card.open {
346
+ display: block;
347
+ }
348
+
349
+ .qr-card img {
350
+ width: 160px;
351
+ height: 160px;
352
+ border-radius: 6px;
353
+ }
354
+
355
+ .qr-card .qr-url {
356
+ font-size: 11px;
357
+ color: #6b7280;
358
+ margin-top: 8px;
359
+ word-break: break-all;
360
+ line-height: 1.4;
361
+ }
362
+
363
+ .qr-card .qr-label {
364
+ font-size: 12px;
365
+ font-weight: 600;
366
+ color: #111827;
367
+ margin-bottom: 10px;
368
+ }
369
+
370
+ .qr-toggle {
371
+ background: #111827;
372
+ color: #fff;
373
+ border: none;
374
+ border-radius: 20px;
375
+ padding: 8px 14px;
376
+ font-size: 13px;
377
+ cursor: pointer;
378
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
379
+ }
380
+
381
+ .qr-toggle:hover {
382
+ background: #1f2937;
383
+ }
384
+
385
+ .move-wrapper {
386
+ position: relative;
387
+ }
388
+
389
+ .move-dropdown {
390
+ position: absolute;
391
+ bottom: calc(100% + 6px);
392
+ right: 0;
393
+ background: #fff;
394
+ border: 1px solid #e5e7eb;
395
+ border-radius: 8px;
396
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
397
+ z-index: 100;
398
+ min-width: 130px;
399
+ overflow: hidden;
400
+ display: none;
401
+ }
402
+
403
+ .move-dropdown.open {
404
+ display: block;
405
+ }
406
+
407
+ .move-dropdown button {
408
+ display: block;
409
+ width: 100%;
410
+ text-align: left;
411
+ background: none;
412
+ border: none;
413
+ padding: 9px 14px;
414
+ font-size: 13px;
415
+ color: #374151;
416
+ cursor: pointer;
417
+ border-radius: 0;
418
+ }
419
+
420
+ .move-dropdown button:hover {
421
+ background: #f3f4f6;
422
+ color: #111827;
423
+ }
424
+
425
+ .move-dropdown .dropdown-label {
426
+ font-size: 11px;
427
+ color: #9ca3af;
428
+ padding: 8px 14px 4px;
429
+ font-weight: 500;
430
+ text-transform: uppercase;
431
+ letter-spacing: 0.05em;
432
+ cursor: default;
433
+ }
434
+
435
+ .ch-pin-dot {
436
+ display: inline-block;
437
+ width: 6px;
438
+ height: 6px;
439
+ background: #f59e0b;
440
+ border-radius: 50%;
441
+ flex-shrink: 0;
442
+ }
443
+
444
+ .ch-more {
445
+ display: inline-flex;
446
+ align-items: center;
447
+ justify-content: center;
448
+ width: 18px;
449
+ height: 18px;
450
+ border-radius: 4px;
451
+ font-size: 13px;
452
+ color: #6b7280;
453
+ opacity: 0;
454
+ transition: opacity 0.12s ease, background 0.12s ease;
455
+ margin-left: 2px;
456
+ line-height: 1;
457
+ }
458
+
459
+ .channels button:hover .ch-more,
460
+ .channels button.active .ch-more {
461
+ opacity: 1;
462
+ }
463
+
464
+ .ch-more:hover {
465
+ background: rgba(0, 0, 0, 0.1);
466
+ color: #111827;
467
+ }
468
+
469
+ .context-menu {
470
+ position: fixed;
471
+ background: #fff;
472
+ border: 1px solid #e5e7eb;
473
+ border-radius: 10px;
474
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
475
+ z-index: 9999;
476
+ min-width: 170px;
477
+ overflow: hidden;
478
+ display: none;
479
+ padding: 4px;
480
+ }
481
+
482
+ .context-menu.open {
483
+ display: block;
484
+ }
485
+
486
+ .context-menu button {
487
+ display: flex;
488
+ align-items: center;
489
+ gap: 8px;
490
+ width: 100%;
491
+ text-align: left;
492
+ background: none;
493
+ border: none;
494
+ padding: 8px 12px;
495
+ font-size: 13px;
496
+ color: #374151;
497
+ cursor: pointer;
498
+ border-radius: 6px;
499
+ }
500
+
501
+ .context-menu button:hover {
502
+ background: #f3f4f6;
503
+ }
504
+
505
+ .context-menu button.danger {
506
+ color: #b91c1c;
507
+ }
508
+
509
+ .context-menu button.danger:hover {
510
+ background: #fee2e2;
511
+ }
512
+
513
+ .context-menu button.muted {
514
+ color: #9ca3af;
515
+ cursor: not-allowed;
516
+ }
517
+
518
+ .context-menu button.muted:hover {
519
+ background: none;
520
+ }
521
+
522
+ .context-menu .menu-divider {
523
+ height: 1px;
524
+ background: #f3f4f6;
525
+ margin: 4px 0;
526
+ }
527
+
528
+ .markdown-body {
529
+ line-height: 1.5;
530
+ font-size: 14px;
531
+ }
532
+
533
+ .markdown-body p {
534
+ margin: 0 0 6px;
535
+ }
536
+
537
+ .markdown-body p:last-child {
538
+ margin-bottom: 0;
539
+ }
540
+
541
+ .markdown-body h1,
542
+ .markdown-body h2,
543
+ .markdown-body h3 {
544
+ font-size: 14px;
545
+ font-weight: 600;
546
+ margin: 4px 0;
547
+ }
548
+
549
+ .markdown-body code {
550
+ background: #f3f4f6;
551
+ padding: 1px 5px;
552
+ border-radius: 4px;
553
+ font-size: 12px;
554
+ font-family: ui-monospace, monospace;
555
+ }
556
+
557
+ .markdown-body pre {
558
+ background: #f8fafc;
559
+ border: 1px solid #e5e7eb;
560
+ border-radius: 6px;
561
+ padding: 10px 12px;
562
+ overflow-x: auto;
563
+ margin: 6px 0;
564
+ }
565
+
566
+ .markdown-body pre code {
567
+ background: none;
568
+ padding: 0;
569
+ font-size: 12px;
570
+ }
571
+
572
+ .markdown-body a {
573
+ color: #2563eb;
574
+ }
575
+
576
+ .markdown-body ul,
577
+ .markdown-body ol {
578
+ margin: 4px 0;
579
+ padding-left: 20px;
580
+ }
581
+
582
+ .preview-panel {
583
+ display: none;
584
+ margin-top: 10px;
585
+ border-top: 1px solid #f3f4f6;
586
+ padding-top: 10px;
587
+ }
588
+
589
+ .preview-panel.open {
590
+ display: block;
591
+ }
592
+
593
+ .preview-panel img {
594
+ max-width: 100%;
595
+ border-radius: 6px;
596
+ display: block;
597
+ }
598
+
599
+ .preview-panel video,
600
+ .preview-panel audio {
601
+ width: 100%;
602
+ border-radius: 6px;
603
+ outline: none;
604
+ }
605
+
606
+ .preview-panel audio {
607
+ width: 100%;
608
+ height: 40px;
609
+ }
610
+
611
+ .preview-panel embed,
612
+ .preview-panel iframe {
613
+ width: 100%;
614
+ height: 480px;
615
+ border: none;
616
+ border-radius: 6px;
617
+ background: #f9fafb;
618
+ }
619
+
620
+ .preview-panel pre {
621
+ background: #f8fafc;
622
+ border: 1px solid #e5e7eb;
623
+ border-radius: 6px;
624
+ padding: 12px;
625
+ overflow-x: auto;
626
+ max-height: 400px;
627
+ overflow-y: auto;
628
+ margin: 0;
629
+ font-size: 12px;
630
+ font-family: ui-monospace, monospace;
631
+ line-height: 1.5;
632
+ }
633
+
634
+ .preview-panel pre code {
635
+ background: none;
636
+ padding: 0;
637
+ font-size: 12px;
638
+ }
639
+
640
+ .preview-truncated {
641
+ font-size: 11px;
642
+ color: #9ca3af;
643
+ margin-top: 6px;
644
+ text-align: right;
645
+ }
646
+
647
+ .preview-error {
648
+ font-size: 13px;
649
+ color: #9ca3af;
650
+ padding: 12px 0;
651
+ }
652
+
653
+ .preview-loading {
654
+ font-size: 13px;
655
+ color: #9ca3af;
656
+ padding: 12px 0;
657
+ }
658
+
659
+ .icon-btn.preview-active {
660
+ background: #eff6ff;
661
+ border-color: #bfdbfe;
662
+ color: #1d4ed8;
663
+ }
664
+
665
+ /* Make item flex-direction column to allow panel below content */
666
+ .item {
667
+ flex-direction: column;
668
+ align-items: stretch;
669
+ transition: box-shadow 0.15s ease;
670
+ }
671
+
672
+ .item-top {
673
+ display: flex;
674
+ justify-content: space-between;
675
+ align-items: center;
676
+ }
677
+
678
+ .item:hover {
679
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
680
+ }
681
+
682
+ .empty-state {
683
+ text-align: center;
684
+ color: #9ca3af;
685
+ font-size: 14px;
686
+ padding: 60px 20px;
687
+ }
688
+
689
+ @media (max-width: 640px) {
690
+ .app-header {
691
+ flex-wrap: wrap;
692
+ padding: 8px 12px;
693
+ gap: 6px;
694
+ }
695
+
696
+ .header-left {
697
+ flex: 1;
698
+ }
699
+
700
+ .header-center {
701
+ order: 3;
702
+ width: 100%;
703
+ flex: none;
704
+ }
705
+
706
+ .header-right {
707
+ font-size: 12px;
708
+ gap: 6px;
709
+ flex-shrink: 0;
710
+ }
711
+
712
+ .search-wrapper {
713
+ max-width: 100%;
714
+ width: 100%;
715
+ }
716
+
717
+ .search-wrapper input {
718
+ width: 100%;
719
+ box-sizing: border-box;
720
+ }
721
+
722
+ .drop {
723
+ display: none;
724
+ }
725
+
726
+ .channel-bar {
727
+ overflow: hidden;
728
+ display: flex;
729
+ align-items: center;
730
+ gap: 0;
731
+ padding: 6px;
732
+ }
733
+
734
+ .channel-bar::after {
735
+ content: "";
736
+ position: absolute;
737
+ top: 0;
738
+ right: 0;
739
+ width: 80px;
740
+ height: 100%;
741
+ background: linear-gradient(to right, transparent, #e5e7eb);
742
+ border-radius: 0 12px 12px 0;
743
+ pointer-events: none;
744
+ z-index: 1;
745
+ }
746
+
747
+ .channels {
748
+ flex: 1;
749
+ min-width: 0;
750
+ overflow-x: auto;
751
+ flex-wrap: nowrap;
752
+ scrollbar-width: none;
753
+ -ms-overflow-style: none;
754
+ padding-right: 40px;
755
+ }
756
+
757
+ .channels::-webkit-scrollbar {
758
+ display: none;
759
+ }
760
+
761
+ .add-channel {
762
+ display: none;
763
+ }
764
+
765
+ .add-channel-mobile {
766
+ display: flex;
767
+ align-items: center;
768
+ justify-content: center;
769
+ flex-shrink: 0;
770
+ background: transparent;
771
+ color: #6b7280;
772
+ font-weight: 600;
773
+ border: none;
774
+ border-left: 1px solid #d1d5db;
775
+ padding: 4px 12px;
776
+ font-size: 16px;
777
+ cursor: pointer;
778
+ position: static;
779
+ width: auto;
780
+ height: auto;
781
+ border-radius: 0;
782
+ box-shadow: none;
783
+ }
784
+
785
+ .add-channel-mobile:hover {
786
+ color: #111827;
787
+ background: #d1d5db;
788
+ }
789
+
790
+ .composer {
791
+ flex-wrap: wrap;
792
+ gap: 6px;
793
+ }
794
+
795
+ .composer input {
796
+ width: 100%;
797
+ flex: none;
798
+ box-sizing: border-box;
799
+ }
800
+
801
+ .composer button {
802
+ flex: 1;
803
+ }
804
+
805
+ .qr-widget {
806
+ bottom: 80px;
807
+ }
808
+
809
+ .qr-toggle {
810
+ padding: 6px 12px;
811
+ font-size: 12px;
812
+ }
813
+ }