snapexcel 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/src/styles.css ADDED
@@ -0,0 +1,845 @@
1
+ /* CSS Variables - Dark Blue Corporate Theme */
2
+ :root {
3
+ --primary-color: #041E42;
4
+ --primary-hover: #1A3D6D;
5
+ --primary-light: #E8EEF5;
6
+ --accent-color: #0071DC;
7
+ --accent-hover: #004F9A;
8
+ --accent-light: #E6F2FC;
9
+ --success-color: #2E7D32;
10
+ --success-light: #E8F5E9;
11
+ --warning-color: #ED6C02;
12
+ --warning-light: #FFF4E5;
13
+ --error-color: #D32F2F;
14
+ --error-light: #FFEBEE;
15
+ --text-primary: #1a1a2e;
16
+ --text-secondary: #64748b;
17
+ --text-muted: #94a3b8;
18
+ --border-color: #e2e8f0;
19
+ --background: #ffffff;
20
+ --background-secondary: #f8fafc;
21
+ --shadow-sm: 0 1px 2px rgba(0,0,0,0.05);
22
+ --shadow-md: 0 4px 6px rgba(0,0,0,0.07);
23
+ --shadow-lg: 0 10px 15px rgba(0,0,0,0.1);
24
+ --border-radius: 10px;
25
+ --border-radius-sm: 6px;
26
+ --border-radius-lg: 14px;
27
+ --transition: all 0.2s ease;
28
+ }
29
+
30
+ /* Reset & Base */
31
+ * {
32
+ margin: 0;
33
+ padding: 0;
34
+ box-sizing: border-box;
35
+ }
36
+
37
+ body {
38
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
39
+ font-size: 13px;
40
+ color: var(--text-primary);
41
+ background: var(--background);
42
+ line-height: 1.5;
43
+ overflow-x: hidden;
44
+ }
45
+
46
+ /* App Container */
47
+ .app-container {
48
+ display: flex;
49
+ flex-direction: column;
50
+ min-height: 100vh;
51
+ max-height: 100vh;
52
+ overflow: hidden;
53
+ }
54
+
55
+ /* Header */
56
+ .header {
57
+ display: flex;
58
+ align-items: center;
59
+ justify-content: space-between;
60
+ padding: 12px 16px;
61
+ background: linear-gradient(135deg, var(--primary-color), var(--accent-color));
62
+ color: white;
63
+ flex-shrink: 0;
64
+ }
65
+
66
+ .logo {
67
+ display: flex;
68
+ align-items: center;
69
+ gap: 8px;
70
+ }
71
+
72
+ .logo-icon {
73
+ font-size: 20px;
74
+ }
75
+
76
+ .logo h1 {
77
+ font-size: 15px;
78
+ font-weight: 600;
79
+ letter-spacing: -0.3px;
80
+ }
81
+
82
+ .header-actions {
83
+ display: flex;
84
+ gap: 8px;
85
+ }
86
+
87
+ .btn-icon {
88
+ background: rgba(255,255,255,0.15);
89
+ border: none;
90
+ color: white;
91
+ width: 32px;
92
+ height: 32px;
93
+ border-radius: var(--border-radius-sm);
94
+ cursor: pointer;
95
+ display: flex;
96
+ align-items: center;
97
+ justify-content: center;
98
+ font-size: 14px;
99
+ transition: var(--transition);
100
+ }
101
+
102
+ .btn-icon:hover {
103
+ background: rgba(255,255,255,0.25);
104
+ }
105
+
106
+ .btn-icon.active {
107
+ background: #4CAF50;
108
+ color: white;
109
+ box-shadow: 0 0 8px rgba(76, 175, 80, 0.5);
110
+ }
111
+
112
+ .btn-icon.active:hover {
113
+ background: #43A047;
114
+ }
115
+
116
+ .btn-minimize-header {
117
+ background: var(--accent-light);
118
+ border: 1px solid var(--accent-color);
119
+ color: var(--accent-color);
120
+ }
121
+
122
+ .btn-minimize-header:hover {
123
+ background: var(--accent-color);
124
+ color: white;
125
+ }
126
+
127
+ /* Views */
128
+ .view {
129
+ display: flex;
130
+ flex-direction: column;
131
+ overflow-y: auto;
132
+ padding: 16px;
133
+ }
134
+
135
+ .view.hidden {
136
+ display: none;
137
+ }
138
+
139
+ /* Setup View */
140
+ .setup-content {
141
+ display: flex;
142
+ flex-direction: column;
143
+ align-items: center;
144
+ justify-content: center;
145
+ flex: 1;
146
+ text-align: center;
147
+ padding: 20px;
148
+ }
149
+
150
+ .setup-icon {
151
+ display: flex;
152
+ align-items: center;
153
+ justify-content: center;
154
+ gap: 12px;
155
+ margin-bottom: 20px;
156
+ }
157
+
158
+ .setup-icon .icon-desktop,
159
+ .setup-icon .icon-excel {
160
+ width: 48px;
161
+ height: 48px;
162
+ }
163
+
164
+ .setup-icon .icon-arrow {
165
+ font-size: 28px;
166
+ color: var(--accent-color);
167
+ font-weight: bold;
168
+ animation: arrowPulse 1.5s ease-in-out infinite;
169
+ }
170
+
171
+ @keyframes arrowPulse {
172
+ 0%, 100% {
173
+ transform: translateX(0);
174
+ opacity: 0.6;
175
+ }
176
+ 50% {
177
+ transform: translateX(6px);
178
+ opacity: 1;
179
+ }
180
+ }
181
+
182
+ .setup-content h2 {
183
+ color: var(--primary-color);
184
+ margin-bottom: 8px;
185
+ font-size: 20px;
186
+ }
187
+
188
+ .setup-content p {
189
+ color: var(--text-secondary);
190
+ margin-bottom: 24px;
191
+ font-size: 13px;
192
+ }
193
+
194
+ /* Form Elements */
195
+ .form-group {
196
+ width: 100%;
197
+ max-width: 280px;
198
+ margin-bottom: 16px;
199
+ text-align: left;
200
+ }
201
+
202
+ .form-group label {
203
+ display: block;
204
+ font-size: 12px;
205
+ font-weight: 600;
206
+ color: var(--text-secondary);
207
+ margin-bottom: 6px;
208
+ }
209
+
210
+ .form-group input,
211
+ .form-group textarea,
212
+ .form-group select {
213
+ width: 100%;
214
+ padding: 10px 12px;
215
+ border: 1.5px solid var(--border-color);
216
+ border-radius: var(--border-radius-sm);
217
+ font-size: 13px;
218
+ transition: var(--transition);
219
+ background: var(--background);
220
+ }
221
+
222
+ .form-group input:focus,
223
+ .form-group textarea:focus,
224
+ .form-group select:focus {
225
+ outline: none;
226
+ border-color: var(--accent-color);
227
+ box-shadow: 0 0 0 3px var(--accent-light);
228
+ }
229
+
230
+ .form-group input::placeholder,
231
+ .form-group textarea::placeholder {
232
+ color: var(--text-muted);
233
+ }
234
+
235
+ /* Note textarea specific styling */
236
+ .form-group textarea#note-text {
237
+ font-size: 17px;
238
+ line-height: 1.5;
239
+ min-height: 100px;
240
+ }
241
+
242
+ /* Buttons */
243
+ .btn {
244
+ display: inline-flex;
245
+ align-items: center;
246
+ justify-content: center;
247
+ gap: 6px;
248
+ padding: 10px 16px;
249
+ border: none;
250
+ border-radius: var(--border-radius-sm);
251
+ font-size: 13px;
252
+ font-weight: 500;
253
+ cursor: pointer;
254
+ transition: var(--transition);
255
+ }
256
+
257
+ .btn-primary {
258
+ background: var(--primary-color);
259
+ color: white;
260
+ }
261
+
262
+ .btn-primary:hover {
263
+ background: var(--primary-hover);
264
+ }
265
+
266
+ .btn-secondary {
267
+ background: var(--primary-light);
268
+ color: var(--primary-color);
269
+ border: 1px solid var(--border-color);
270
+ }
271
+
272
+ .btn-secondary:hover {
273
+ background: var(--accent-light);
274
+ border-color: var(--accent-color);
275
+ }
276
+
277
+ .btn-outline {
278
+ background: transparent;
279
+ color: var(--text-secondary);
280
+ border: 1.5px solid var(--border-color);
281
+ }
282
+
283
+ .btn-outline:hover {
284
+ border-color: var(--primary-color);
285
+ color: var(--primary-color);
286
+ }
287
+
288
+ .btn-large {
289
+ padding: 14px 28px;
290
+ font-size: 15px;
291
+ border-radius: var(--border-radius);
292
+ }
293
+
294
+ .btn-small {
295
+ padding: 6px 12px;
296
+ font-size: 12px;
297
+ }
298
+
299
+ .btn:disabled {
300
+ opacity: 0.6;
301
+ cursor: not-allowed;
302
+ }
303
+
304
+ /* Capture Button */
305
+ .btn-capture {
306
+ width: 100%;
307
+ padding: 16px;
308
+ font-size: 16px;
309
+ font-weight: 600;
310
+ background: linear-gradient(135deg, var(--primary-color), var(--accent-color));
311
+ color: white;
312
+ border-radius: var(--border-radius);
313
+ margin-bottom: 8px;
314
+ }
315
+
316
+ .btn-capture:hover {
317
+ transform: translateY(-1px);
318
+ box-shadow: var(--shadow-md);
319
+ }
320
+
321
+ .btn-capture:active {
322
+ transform: translateY(0);
323
+ }
324
+
325
+ .shortcut-hint {
326
+ text-align: center;
327
+ font-size: 11px;
328
+ color: var(--text-muted);
329
+ margin-bottom: 12px;
330
+ }
331
+
332
+ /* Session Info */
333
+ .session-info {
334
+ display: flex;
335
+ align-items: center;
336
+ justify-content: space-between;
337
+ padding: 10px 12px;
338
+ background: var(--primary-light);
339
+ border-radius: var(--border-radius-sm);
340
+ margin-bottom: 12px;
341
+ }
342
+
343
+ .session-file {
344
+ display: flex;
345
+ align-items: baseline;
346
+ gap: 4px;
347
+ font-weight: 500;
348
+ color: var(--primary-color);
349
+ font-size: 12px;
350
+ line-height: 1;
351
+ }
352
+
353
+ .info-label {
354
+ font-size: 12px;
355
+ font-weight: 600;
356
+ color: var(--text-secondary);
357
+ line-height: 1;
358
+ }
359
+
360
+ .sheet-selector {
361
+ display: flex;
362
+ align-items: center;
363
+ gap: 4px;
364
+ }
365
+
366
+ .sheet-selector select {
367
+ padding: 4px 8px;
368
+ border: 1px solid var(--border-color);
369
+ border-radius: var(--border-radius-sm);
370
+ font-size: 12px;
371
+ background: white;
372
+ max-width: 100px;
373
+ }
374
+
375
+ .sheet-selector .btn-icon {
376
+ width: 28px;
377
+ height: 28px;
378
+ background: var(--accent-color);
379
+ color: white;
380
+ font-size: 12px;
381
+ }
382
+
383
+ .sheet-selector .btn-icon:hover {
384
+ background: var(--accent-hover);
385
+ }
386
+
387
+ /* Capture Source Section */
388
+ .capture-source-section {
389
+ margin-bottom: 12px;
390
+ }
391
+
392
+ .section-label {
393
+ display: block;
394
+ font-size: 11px;
395
+ font-weight: 600;
396
+ color: var(--text-secondary);
397
+ margin-bottom: 8px;
398
+ text-transform: uppercase;
399
+ letter-spacing: 0.5px;
400
+ }
401
+
402
+ .source-selector {
403
+ display: flex;
404
+ gap: 8px;
405
+ }
406
+
407
+ .source-selector select {
408
+ flex: 1;
409
+ padding: 10px 12px;
410
+ border: 1.5px solid var(--border-color);
411
+ border-radius: var(--border-radius-sm);
412
+ font-size: 13px;
413
+ background: var(--background);
414
+ cursor: pointer;
415
+ transition: var(--transition);
416
+ }
417
+
418
+ .source-selector select:hover {
419
+ border-color: var(--accent-color);
420
+ }
421
+
422
+ .source-selector select:focus {
423
+ outline: none;
424
+ border-color: var(--accent-color);
425
+ box-shadow: 0 0 0 3px var(--accent-light);
426
+ }
427
+
428
+ .source-selector .btn-icon {
429
+ width: 38px;
430
+ height: 38px;
431
+ background: var(--primary-light);
432
+ color: var(--primary-color);
433
+ flex-shrink: 0;
434
+ }
435
+
436
+ .source-selector .btn-icon:hover {
437
+ background: var(--accent-light);
438
+ color: var(--accent-color);
439
+ }
440
+
441
+ /* Shortcut Hint */
442
+ .shortcut-hint {
443
+ display: flex;
444
+ align-items: center;
445
+ justify-content: center;
446
+ gap: 20px;
447
+ margin-bottom: 12px;
448
+ padding: 10px 12px;
449
+ background: linear-gradient(135deg, var(--primary-light), #f0f4f8);
450
+ border-radius: var(--border-radius);
451
+ border: 1px solid var(--border-color);
452
+ }
453
+
454
+ .shortcut-item {
455
+ display: flex;
456
+ align-items: center;
457
+ gap: 5px;
458
+ }
459
+
460
+ .shortcut-key {
461
+ display: inline-flex;
462
+ align-items: center;
463
+ justify-content: center;
464
+ padding: 4px 8px;
465
+ background: white;
466
+ border: 1px solid #d0d0d0;
467
+ border-radius: 5px;
468
+ box-shadow: 0 1px 0 #c0c0c0;
469
+ font-family: -apple-system, BlinkMacSystemFont, sans-serif;
470
+ font-size: 12px;
471
+ font-weight: 600;
472
+ color: var(--primary-color);
473
+ letter-spacing: 1px;
474
+ }
475
+
476
+ .shortcut-hint .shortcut-label {
477
+ font-size: 12px;
478
+ font-weight: 500;
479
+ color: var(--text-secondary);
480
+ margin-left: 4px;
481
+ }
482
+
483
+ /* Secondary Actions */
484
+ .secondary-actions {
485
+ display: flex;
486
+ gap: 8px;
487
+ margin-bottom: 12px;
488
+ }
489
+
490
+ .secondary-actions .btn {
491
+ flex: 1;
492
+ }
493
+
494
+ .secondary-actions .btn-full {
495
+ width: 100%;
496
+ }
497
+
498
+ /* Screenshots Section */
499
+ .screenshots-section {
500
+ display: flex;
501
+ flex-direction: column;
502
+ margin-bottom: 12px;
503
+ }
504
+
505
+ .section-header {
506
+ display: flex;
507
+ align-items: center;
508
+ justify-content: space-between;
509
+ font-size: 12px;
510
+ font-weight: 600;
511
+ color: var(--text-secondary);
512
+ margin-bottom: 10px;
513
+ }
514
+
515
+ .badge {
516
+ background: var(--primary-color);
517
+ color: white;
518
+ padding: 2px 8px;
519
+ border-radius: 10px;
520
+ font-size: 11px;
521
+ font-weight: 600;
522
+ }
523
+
524
+ .screenshots-grid {
525
+ display: grid;
526
+ grid-template-columns: repeat(4, 1fr);
527
+ gap: 6px;
528
+ overflow-y: auto;
529
+ padding: 8px;
530
+ background: var(--background-secondary);
531
+ border-radius: var(--border-radius-sm);
532
+ min-height: 80px;
533
+ max-height: 120px;
534
+ }
535
+
536
+ .empty-state {
537
+ grid-column: 1 / -1;
538
+ display: flex;
539
+ flex-direction: column;
540
+ align-items: center;
541
+ justify-content: center;
542
+ padding: 15px;
543
+ color: var(--text-muted);
544
+ }
545
+
546
+ .empty-state span {
547
+ font-size: 24px;
548
+ margin-bottom: 6px;
549
+ opacity: 0.5;
550
+ }
551
+
552
+ .empty-state p {
553
+ font-size: 11px;
554
+ }
555
+
556
+ .screenshot-thumb {
557
+ position: relative;
558
+ aspect-ratio: 16/10;
559
+ border-radius: 4px;
560
+ overflow: hidden;
561
+ cursor: pointer;
562
+ border: 1px solid transparent;
563
+ transition: var(--transition);
564
+ }
565
+
566
+ .screenshot-thumb:hover {
567
+ border-color: var(--accent-color);
568
+ }
569
+
570
+ .screenshot-thumb img {
571
+ width: 100%;
572
+ height: 100%;
573
+ object-fit: cover;
574
+ }
575
+
576
+ .screenshot-thumb .delete-btn {
577
+ position: absolute;
578
+ top: 4px;
579
+ right: 4px;
580
+ width: 20px;
581
+ height: 20px;
582
+ background: rgba(211, 47, 47, 0.9);
583
+ color: white;
584
+ border: none;
585
+ border-radius: 50%;
586
+ font-size: 12px;
587
+ cursor: pointer;
588
+ opacity: 0;
589
+ transition: var(--transition);
590
+ }
591
+
592
+ .screenshot-thumb:hover .delete-btn {
593
+ opacity: 1;
594
+ }
595
+
596
+ .screenshot-thumb .note-indicator {
597
+ position: absolute;
598
+ bottom: 4px;
599
+ left: 4px;
600
+ background: var(--accent-color);
601
+ color: white;
602
+ padding: 2px 6px;
603
+ border-radius: 4px;
604
+ font-size: 10px;
605
+ }
606
+
607
+ .screenshot-thumb .edit-note-btn {
608
+ position: absolute;
609
+ bottom: 4px;
610
+ left: 4px;
611
+ width: 22px;
612
+ height: 22px;
613
+ background: rgba(0, 113, 220, 0.85);
614
+ color: white;
615
+ border: none;
616
+ border-radius: 4px;
617
+ font-size: 11px;
618
+ cursor: pointer;
619
+ opacity: 0;
620
+ transition: var(--transition);
621
+ display: flex;
622
+ align-items: center;
623
+ justify-content: center;
624
+ }
625
+
626
+ .screenshot-thumb .edit-note-btn.has-note {
627
+ opacity: 1;
628
+ background: var(--success-color);
629
+ }
630
+
631
+ .screenshot-thumb:hover .edit-note-btn {
632
+ opacity: 1;
633
+ }
634
+
635
+ .screenshot-thumb .edit-note-btn:hover {
636
+ background: var(--accent-hover);
637
+ transform: scale(1.1);
638
+ }
639
+
640
+ /* Export Section */
641
+ .export-section {
642
+ padding: 12px;
643
+ background: var(--background-secondary);
644
+ border-radius: var(--border-radius-sm);
645
+ margin-bottom: 12px;
646
+ }
647
+
648
+ .export-options {
649
+ display: flex;
650
+ gap: 8px;
651
+ }
652
+
653
+ .export-options select {
654
+ flex: 1;
655
+ padding: 10px;
656
+ border: 1px solid var(--border-color);
657
+ border-radius: var(--border-radius-sm);
658
+ font-size: 13px;
659
+ }
660
+
661
+ .export-options .btn {
662
+ flex-shrink: 0;
663
+ }
664
+
665
+ /* Footer Actions */
666
+ .footer-actions {
667
+ display: flex;
668
+ justify-content: center;
669
+ padding-bottom: 8px;
670
+ }
671
+
672
+ /* Minimal View */
673
+ .minimal-content {
674
+ display: flex;
675
+ flex-direction: column;
676
+ align-items: center;
677
+ gap: 12px;
678
+ padding: 16px;
679
+ }
680
+
681
+ .minimal-info {
682
+ display: flex;
683
+ align-items: center;
684
+ gap: 8px;
685
+ font-size: 13px;
686
+ font-weight: 500;
687
+ }
688
+
689
+ .btn-capture-minimal {
690
+ width: 100%;
691
+ padding: 14px;
692
+ font-size: 15px;
693
+ font-weight: 600;
694
+ background: linear-gradient(135deg, var(--primary-color), var(--accent-color));
695
+ color: white;
696
+ border-radius: var(--border-radius);
697
+ border: none;
698
+ cursor: pointer;
699
+ }
700
+
701
+ .btn-capture-minimal:hover {
702
+ transform: translateY(-1px);
703
+ box-shadow: var(--shadow-md);
704
+ }
705
+
706
+ /* Modal */
707
+ .modal {
708
+ position: fixed;
709
+ top: 0;
710
+ left: 0;
711
+ right: 0;
712
+ bottom: 0;
713
+ background: rgba(0,0,0,0.5);
714
+ display: flex;
715
+ align-items: center;
716
+ justify-content: center;
717
+ z-index: 1000;
718
+ padding: 20px;
719
+ }
720
+
721
+ .modal.hidden {
722
+ display: none;
723
+ }
724
+
725
+ .modal-content {
726
+ background: white;
727
+ border-radius: var(--border-radius-lg);
728
+ width: 100%;
729
+ max-width: 320px;
730
+ box-shadow: var(--shadow-lg);
731
+ }
732
+
733
+ .modal-header {
734
+ display: flex;
735
+ align-items: center;
736
+ justify-content: space-between;
737
+ padding: 16px;
738
+ border-bottom: 1px solid var(--border-color);
739
+ }
740
+
741
+ .modal-header h3 {
742
+ font-size: 16px;
743
+ color: var(--primary-color);
744
+ }
745
+
746
+ .btn-close {
747
+ background: none;
748
+ border: none;
749
+ font-size: 24px;
750
+ color: var(--text-muted);
751
+ cursor: pointer;
752
+ line-height: 1;
753
+ }
754
+
755
+ .btn-close:hover {
756
+ color: var(--text-primary);
757
+ }
758
+
759
+ .modal-body {
760
+ padding: 16px;
761
+ }
762
+
763
+ .modal-body .form-group {
764
+ max-width: none;
765
+ }
766
+
767
+ .modal-footer {
768
+ display: flex;
769
+ gap: 8px;
770
+ justify-content: flex-end;
771
+ padding: 16px;
772
+ border-top: 1px solid var(--border-color);
773
+ }
774
+
775
+ /* Toast */
776
+ #toast-container {
777
+ position: fixed;
778
+ top: 16px;
779
+ left: 50%;
780
+ transform: translateX(-50%);
781
+ z-index: 2000;
782
+ display: flex;
783
+ flex-direction: column;
784
+ gap: 8px;
785
+ }
786
+
787
+ .toast {
788
+ padding: 12px 20px;
789
+ border-radius: var(--border-radius-sm);
790
+ color: white;
791
+ font-size: 13px;
792
+ font-weight: 500;
793
+ animation: slideDown 0.3s ease;
794
+ box-shadow: var(--shadow-md);
795
+ }
796
+
797
+ .toast.success {
798
+ background: linear-gradient(135deg, var(--success-color), #388E3C);
799
+ }
800
+
801
+ .toast.error {
802
+ background: linear-gradient(135deg, var(--error-color), #E53935);
803
+ }
804
+
805
+ .toast.warning {
806
+ background: linear-gradient(135deg, var(--warning-color), #F57C00);
807
+ }
808
+
809
+ .toast.info {
810
+ background: linear-gradient(135deg, var(--primary-color), var(--accent-color));
811
+ }
812
+
813
+ @keyframes slideDown {
814
+ from {
815
+ opacity: 0;
816
+ transform: translateY(-20px);
817
+ }
818
+ to {
819
+ opacity: 1;
820
+ transform: translateY(0);
821
+ }
822
+ }
823
+
824
+ /* Scrollbar */
825
+ ::-webkit-scrollbar {
826
+ width: 6px;
827
+ }
828
+
829
+ ::-webkit-scrollbar-track {
830
+ background: var(--background-secondary);
831
+ }
832
+
833
+ ::-webkit-scrollbar-thumb {
834
+ background: var(--border-color);
835
+ border-radius: 3px;
836
+ }
837
+
838
+ ::-webkit-scrollbar-thumb:hover {
839
+ background: var(--text-muted);
840
+ }
841
+
842
+ /* Hidden utility */
843
+ .hidden {
844
+ display: none !important;
845
+ }