@visns-studio/visns-components 5.15.9 → 5.15.11

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,1211 @@
1
+ // DataSyncWizard.module.scss
2
+ // Step-by-step wizard for OAuth data synchronization
3
+
4
+ .wizardContainer {
5
+ display: flex;
6
+ flex-direction: column;
7
+ height: 100vh;
8
+ max-height: 100vh;
9
+ background: var(--bg-color, #f8f9ff);
10
+ overflow: hidden;
11
+ padding-bottom: 80px;
12
+ }
13
+
14
+ // Progress Steps Header
15
+ .progressSteps {
16
+ flex-shrink: 0;
17
+ background: var(--third-color, white);
18
+ padding: 20px 24px;
19
+ border-bottom: 1px solid var(--border-color, #e5e7eb);
20
+ display: flex;
21
+ align-items: center;
22
+ justify-content: center;
23
+ gap: 24px;
24
+ box-shadow: var(--box-shadow-small, 0 2px 4px rgba(0, 0, 0, 0.05));
25
+ }
26
+
27
+ .progressStep {
28
+ display: flex;
29
+ align-items: center;
30
+ gap: 16px;
31
+ position: relative;
32
+ opacity: 0.4;
33
+ transition: all 0.3s ease;
34
+
35
+ &.active {
36
+ opacity: 1;
37
+
38
+ .stepNumber {
39
+ background: var(--secondary-color, #3cbf7d);
40
+ color: var(--third-color, white);
41
+ transform: scale(1.1);
42
+ }
43
+
44
+ .stepDetails h4 {
45
+ color: var(--header-color, #1f2937);
46
+ }
47
+ }
48
+
49
+ &.completed {
50
+ opacity: 0.8;
51
+
52
+ .stepNumber {
53
+ background: var(--secondary-color, #3cbf7d);
54
+ color: var(--third-color, white);
55
+ }
56
+
57
+ .stepDetails h4 {
58
+ color: var(--secondary-color, #3cbf7d);
59
+ }
60
+ }
61
+ }
62
+
63
+ .stepNumber {
64
+ width: 36px;
65
+ height: 36px;
66
+ border-radius: 8px;
67
+ background: var(--bg-color, #f3f4f6);
68
+ border: 2px solid var(--border-color, #e5e7eb);
69
+ color: var(--paragraph-color, #6b7280);
70
+ display: flex;
71
+ align-items: center;
72
+ justify-content: center;
73
+ font-weight: 600;
74
+ font-size: 14px;
75
+ transition: all 0.3s ease;
76
+ }
77
+
78
+ .stepDetails {
79
+ text-align: left;
80
+
81
+ h4 {
82
+ margin: 0 0 2px 0;
83
+ font-size: 14px;
84
+ font-weight: 600;
85
+ color: var(--paragraph-color, #6b7280);
86
+ transition: color 0.3s ease;
87
+ }
88
+
89
+ p {
90
+ margin: 0;
91
+ font-size: 12px;
92
+ color: var(--paragraph-color, #9ca3af);
93
+ opacity: 0.7;
94
+ }
95
+ }
96
+
97
+ .progressLine {
98
+ width: 60px;
99
+ height: 2px;
100
+ background: var(--border-color, #e5e7eb);
101
+ position: absolute;
102
+ right: -46px;
103
+ top: 50%;
104
+ transform: translateY(-50%);
105
+ }
106
+
107
+ // Main Content Area
108
+ .wizardContent {
109
+ flex: 1;
110
+ overflow-y: auto;
111
+ padding: 0;
112
+ min-height: 0;
113
+
114
+ // Custom scrollbar
115
+ &::-webkit-scrollbar {
116
+ width: 8px;
117
+ }
118
+
119
+ &::-webkit-scrollbar-track {
120
+ background: #f1f1f1;
121
+ }
122
+
123
+ &::-webkit-scrollbar-thumb {
124
+ background: #c1c1c1;
125
+ border-radius: 4px;
126
+
127
+ &:hover {
128
+ background: #a1a1a1;
129
+ }
130
+ }
131
+ }
132
+
133
+ .stepContent {
134
+ padding: 20px 24px;
135
+ max-width: 1200px;
136
+ margin: 0 auto;
137
+ }
138
+
139
+ // Step Header
140
+ .stepHeader {
141
+ display: flex;
142
+ align-items: center;
143
+ gap: 16px;
144
+ margin-bottom: 20px;
145
+ padding-bottom: 16px;
146
+ border-bottom: 1px solid #e5e7eb;
147
+ }
148
+
149
+ .stepIcon {
150
+ width: 40px;
151
+ height: 40px;
152
+ border-radius: 10px;
153
+ background: var(--primary-color, #1b3933);
154
+ color: var(--third-color, white);
155
+ display: flex;
156
+ align-items: center;
157
+ justify-content: center;
158
+ }
159
+
160
+ .stepInfo {
161
+ h2 {
162
+ margin: 0 0 4px 0;
163
+ font-size: 20px;
164
+ font-weight: 700;
165
+ color: var(--header-color, #1f2937);
166
+ }
167
+
168
+ p {
169
+ margin: 0;
170
+ font-size: 14px;
171
+ color: var(--paragraph-color, #6b7280);
172
+ }
173
+ }
174
+
175
+ // Step 1: Settings
176
+ .settingsGrid {
177
+ display: grid;
178
+ grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
179
+ gap: 16px;
180
+ }
181
+
182
+ .settingCard {
183
+ background: white;
184
+ border: 1px solid #e5e7eb;
185
+ border-radius: 12px;
186
+ padding: 16px;
187
+ transition: all 0.2s ease;
188
+
189
+ &:hover {
190
+ border-color: #667eea;
191
+ box-shadow: 0 4px 12px rgba(102, 126, 234, 0.1);
192
+ transform: translateY(-1px);
193
+ }
194
+ }
195
+
196
+ .settingHeader {
197
+ display: flex;
198
+ align-items: center;
199
+ gap: 8px;
200
+ margin-bottom: 8px;
201
+
202
+ svg {
203
+ color: #667eea;
204
+ width: 18px;
205
+ height: 18px;
206
+ }
207
+
208
+ h3 {
209
+ margin: 0;
210
+ font-size: 16px;
211
+ font-weight: 600;
212
+ color: #1f2937;
213
+ }
214
+ }
215
+
216
+ .settingCard p {
217
+ margin: 0 0 12px 0;
218
+ color: #6b7280;
219
+ line-height: 1.4;
220
+ font-size: 13px;
221
+ }
222
+
223
+ // Toggle Switch
224
+ .toggle {
225
+ position: relative;
226
+ display: inline-block;
227
+ width: 60px;
228
+ height: 32px;
229
+
230
+ input {
231
+ opacity: 0;
232
+ width: 0;
233
+ height: 0;
234
+
235
+ &:checked + .slider {
236
+ background-color: var(--secondary-color, #3cbf7d);
237
+
238
+ &:before {
239
+ transform: translateX(28px);
240
+ }
241
+ }
242
+ }
243
+ }
244
+
245
+ .slider {
246
+ position: absolute;
247
+ cursor: pointer;
248
+ top: 0;
249
+ left: 0;
250
+ right: 0;
251
+ bottom: 0;
252
+ background-color: #d1d5db;
253
+ transition: 0.3s;
254
+ border-radius: 32px;
255
+
256
+ &:before {
257
+ position: absolute;
258
+ content: "";
259
+ height: 24px;
260
+ width: 24px;
261
+ left: 4px;
262
+ bottom: 4px;
263
+ background-color: white;
264
+ transition: 0.3s;
265
+ border-radius: 50%;
266
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
267
+ }
268
+ }
269
+
270
+ .batchSelect {
271
+ width: 100%;
272
+ padding: 12px 16px;
273
+ border: 1px solid #d1d5db;
274
+ border-radius: 8px;
275
+ font-size: 14px;
276
+ background: white;
277
+ cursor: pointer;
278
+ transition: all 0.2s ease;
279
+
280
+ &:focus {
281
+ outline: none;
282
+ border-color: #667eea;
283
+ box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);
284
+ }
285
+ }
286
+
287
+ // Step 2: Loading, Error, Summary (reuse from modal)
288
+ .loadingState, .errorState {
289
+ display: flex;
290
+ flex-direction: column;
291
+ align-items: center;
292
+ justify-content: center;
293
+ padding: 80px 20px;
294
+ text-align: center;
295
+ color: #666;
296
+ }
297
+
298
+ .spinner {
299
+ animation: spin 1s linear infinite;
300
+ color: #667eea;
301
+ margin-bottom: 16px;
302
+ }
303
+
304
+ @keyframes spin {
305
+ from { transform: rotate(0deg); }
306
+ to { transform: rotate(360deg); }
307
+ }
308
+
309
+ .errorState {
310
+ color: #e74c3c;
311
+
312
+ h3 {
313
+ margin: 16px 0 8px 0;
314
+ color: #c0392b;
315
+ }
316
+
317
+ svg {
318
+ color: #e74c3c;
319
+ margin-bottom: 16px;
320
+ }
321
+ }
322
+
323
+ .retryButton {
324
+ margin-top: 16px;
325
+ background: #e74c3c;
326
+ color: white;
327
+ border: none;
328
+ padding: 12px 24px;
329
+ border-radius: 8px;
330
+ cursor: pointer;
331
+ font-weight: 500;
332
+ transition: background-color 0.2s ease;
333
+
334
+ &:hover {
335
+ background: #c0392b;
336
+ }
337
+ }
338
+
339
+ .summaryGrid {
340
+ display: grid;
341
+ grid-template-columns: repeat(3, 1fr);
342
+ gap: 12px;
343
+ margin-bottom: 16px;
344
+ }
345
+
346
+ .summaryCard {
347
+ background: white;
348
+ border: 1px solid #e5e7eb;
349
+ border-radius: 8px;
350
+ padding: 16px 12px;
351
+ display: flex;
352
+ align-items: center;
353
+ gap: 12px;
354
+ transition: all 0.2s ease;
355
+
356
+ &:hover {
357
+ border-color: var(--secondary-color, #3cbf7d);
358
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1);
359
+ transform: translateY(-1px);
360
+ }
361
+ }
362
+
363
+ .summaryIcon {
364
+ width: 36px;
365
+ height: 36px;
366
+ border-radius: 6px;
367
+ display: flex;
368
+ align-items: center;
369
+ justify-content: center;
370
+ background: var(--primary-color, #1b3933);
371
+ color: white;
372
+ flex-shrink: 0;
373
+ }
374
+
375
+ .summaryContent {
376
+ flex: 1;
377
+ }
378
+
379
+ .summaryNumber {
380
+ display: block;
381
+ font-size: 20px;
382
+ font-weight: 700;
383
+ color: #1f2937;
384
+ line-height: 1;
385
+ }
386
+
387
+ .summaryLabel {
388
+ display: block;
389
+ font-size: 13px;
390
+ color: #6b7280;
391
+ margin-top: 2px;
392
+ font-weight: 500;
393
+ }
394
+
395
+ // Filters Section
396
+ .filtersSection {
397
+ background: white;
398
+ border: 1px solid #e5e7eb;
399
+ border-radius: 8px;
400
+ padding: 16px;
401
+ margin-bottom: 16px;
402
+ display: flex;
403
+ gap: 16px;
404
+ align-items: center;
405
+ }
406
+
407
+ .searchBox, .filterBox {
408
+ position: relative;
409
+ display: flex;
410
+ align-items: center;
411
+
412
+ svg {
413
+ position: absolute;
414
+ left: 12px;
415
+ color: #6b7280;
416
+ z-index: 1;
417
+ }
418
+
419
+ input, select {
420
+ padding: 8px 10px 8px 36px;
421
+ border: 1px solid var(--border-color, #d1d5db);
422
+ border-radius: 6px;
423
+ font-size: 14px;
424
+ width: 200px;
425
+ transition: all 0.2s ease;
426
+ background: white;
427
+
428
+ &:focus {
429
+ outline: none;
430
+ border-color: var(--secondary-color, #3cbf7d);
431
+ box-shadow: 0 0 0 2px rgba(var(--secondary-rgb, 60, 191, 125), 0.1);
432
+ }
433
+ }
434
+ }
435
+
436
+ // Records Section (reuse most styles from modal)
437
+ .recordsSection {
438
+ background: white;
439
+ border: 1px solid #e5e7eb;
440
+ border-radius: 8px;
441
+ padding: 0;
442
+ margin-bottom: 12px;
443
+ max-height: 350px;
444
+ overflow-y: auto;
445
+
446
+ &::-webkit-scrollbar {
447
+ width: 8px;
448
+ }
449
+
450
+ &::-webkit-scrollbar-track {
451
+ background: #f1f1f1;
452
+ border-radius: 4px;
453
+ }
454
+
455
+ &::-webkit-scrollbar-thumb {
456
+ background: #c1c1c1;
457
+ border-radius: 4px;
458
+
459
+ &:hover {
460
+ background: #a1a1a1;
461
+ }
462
+ }
463
+ }
464
+
465
+ .emptyState {
466
+ text-align: center;
467
+ padding: 60px 20px;
468
+ color: #6b7280;
469
+ font-size: 16px;
470
+ }
471
+
472
+ .recordCard {
473
+ border-bottom: 1px solid #e5e7eb;
474
+
475
+ &:last-child {
476
+ border-bottom: none;
477
+ }
478
+
479
+ &:hover {
480
+ background: #f8f9ff;
481
+ }
482
+ }
483
+
484
+ .recordHeader {
485
+ padding: 12px 16px;
486
+ display: flex;
487
+ align-items: center;
488
+ justify-content: space-between;
489
+ }
490
+
491
+ .recordInfo {
492
+ display: flex;
493
+ align-items: center;
494
+ gap: 12px;
495
+ }
496
+
497
+ .statusBadge {
498
+ display: inline-flex;
499
+ align-items: center;
500
+ gap: 6px;
501
+ padding: 4px 8px;
502
+ border-radius: 6px;
503
+ font-size: 11px;
504
+ font-weight: 600;
505
+ text-transform: uppercase;
506
+ letter-spacing: 0.5px;
507
+ }
508
+
509
+ .statusNew {
510
+ background: #dcfce7;
511
+ color: #166534;
512
+ }
513
+
514
+ .statusUpdate {
515
+ background: #dbeafe;
516
+ color: #1e40af;
517
+ }
518
+
519
+ .statusSkip {
520
+ background: #fef3c7;
521
+ color: #92400e;
522
+ }
523
+
524
+ .statusDefault {
525
+ background: #f3f4f6;
526
+ color: #374151;
527
+ }
528
+
529
+ .statusIconNew { color: #16a34a; }
530
+ .statusIconUpdate { color: #2563eb; }
531
+ .statusIconSkip { color: #ca8a04; }
532
+ .statusIconDefault { color: #6b7280; }
533
+
534
+ .recordTitle {
535
+ font-weight: 500;
536
+ color: #1f2937;
537
+ font-size: 14px;
538
+ }
539
+
540
+ .recordActions {
541
+ display: flex;
542
+ gap: 6px;
543
+ align-items: center;
544
+ flex-wrap: wrap;
545
+ }
546
+
547
+ .linkButton {
548
+ background: var(--secondary-color, #3cbf7d);
549
+ border: 1px solid var(--secondary-color, #3cbf7d);
550
+ color: white;
551
+ padding: 6px 10px;
552
+ border-radius: 4px;
553
+ font-size: 11px;
554
+ cursor: pointer;
555
+ display: flex;
556
+ align-items: center;
557
+ gap: 4px;
558
+ transition: all 0.2s ease;
559
+ font-weight: 500;
560
+
561
+ &:hover {
562
+ background: var(--highlight-color, #2da566);
563
+ border-color: var(--highlight-color, #2da566);
564
+ }
565
+ }
566
+
567
+ .toggleButton {
568
+ background: #f3f4f6;
569
+ border: 1px solid #d1d5db;
570
+ color: #374151;
571
+ padding: 6px 10px;
572
+ border-radius: 4px;
573
+ font-size: 11px;
574
+ cursor: pointer;
575
+ display: flex;
576
+ align-items: center;
577
+ gap: 4px;
578
+ transition: all 0.2s ease;
579
+
580
+ &:hover {
581
+ background: #e5e7eb;
582
+ border-color: #9ca3af;
583
+ }
584
+ }
585
+
586
+ .matchModal {
587
+ position: fixed;
588
+ top: 0;
589
+ left: 0;
590
+ right: 0;
591
+ bottom: 0;
592
+ background: rgba(0, 0, 0, 0.5);
593
+ display: flex;
594
+ align-items: center;
595
+ justify-content: center;
596
+ z-index: 2000;
597
+ }
598
+
599
+ .matchModalContent {
600
+ background: white;
601
+ border-radius: 8px;
602
+ padding: 24px;
603
+ max-width: 500px;
604
+ width: 90%;
605
+ max-height: 80vh;
606
+ overflow-y: auto;
607
+
608
+ h3 {
609
+ margin: 0 0 16px 0;
610
+ color: #1f2937;
611
+ font-size: 18px;
612
+ }
613
+
614
+ p {
615
+ margin: 0 0 16px 0;
616
+ color: #6b7280;
617
+ font-size: 14px;
618
+ }
619
+ }
620
+
621
+ .matchModalActions {
622
+ display: flex;
623
+ gap: 12px;
624
+ justify-content: flex-end;
625
+ margin-top: 20px;
626
+
627
+ button {
628
+ padding: 8px 16px;
629
+ border-radius: 6px;
630
+ font-size: 14px;
631
+ cursor: pointer;
632
+ transition: all 0.2s ease;
633
+
634
+ &.cancelButton {
635
+ background: #f3f4f6;
636
+ border: 1px solid #d1d5db;
637
+ color: #374151;
638
+
639
+ &:hover {
640
+ background: #e5e7eb;
641
+ }
642
+ }
643
+
644
+ &.confirmButton {
645
+ background: var(--secondary-color, #3cbf7d);
646
+ border: 1px solid var(--secondary-color, #3cbf7d);
647
+ color: white;
648
+
649
+ &:hover {
650
+ background: var(--highlight-color, #2da566);
651
+ }
652
+ }
653
+ }
654
+ }
655
+
656
+ .skipButton {
657
+ background: #f59e0b;
658
+ border: 1px solid #f59e0b;
659
+ color: white;
660
+ padding: 6px 10px;
661
+ border-radius: 4px;
662
+ font-size: 11px;
663
+ cursor: pointer;
664
+ display: flex;
665
+ align-items: center;
666
+ gap: 4px;
667
+ transition: all 0.2s ease;
668
+ font-weight: 500;
669
+
670
+ &:hover {
671
+ background: #d97706;
672
+ border-color: #d97706;
673
+ }
674
+ }
675
+
676
+ .unSkipButton {
677
+ background: var(--secondary-color, #3cbf7d);
678
+ border: 1px solid var(--secondary-color, #3cbf7d);
679
+ color: white;
680
+ padding: 6px 10px;
681
+ border-radius: 4px;
682
+ font-size: 11px;
683
+ cursor: pointer;
684
+ display: flex;
685
+ align-items: center;
686
+ gap: 4px;
687
+ transition: all 0.2s ease;
688
+ font-weight: 500;
689
+
690
+ &:hover {
691
+ background: var(--highlight-color, #2da566);
692
+ border-color: var(--highlight-color, #2da566);
693
+ }
694
+ }
695
+
696
+ .includeButton {
697
+ background: #2563eb;
698
+ border: 1px solid #2563eb;
699
+ color: white;
700
+ padding: 6px 10px;
701
+ border-radius: 4px;
702
+ font-size: 11px;
703
+ cursor: pointer;
704
+ display: flex;
705
+ align-items: center;
706
+ gap: 4px;
707
+ transition: all 0.2s ease;
708
+ font-weight: 500;
709
+
710
+ &:hover {
711
+ background: #1d4ed8;
712
+ border-color: #1d4ed8;
713
+ }
714
+ }
715
+
716
+ .duplicateButton {
717
+ background: #8b5cf6;
718
+ border: 1px solid #8b5cf6;
719
+ color: white;
720
+ padding: 6px 10px;
721
+ border-radius: 4px;
722
+ font-size: 11px;
723
+ cursor: pointer;
724
+ display: flex;
725
+ align-items: center;
726
+ gap: 4px;
727
+ transition: all 0.2s ease;
728
+ font-weight: 500;
729
+
730
+ &:hover {
731
+ background: #7c3aed;
732
+ border-color: #7c3aed;
733
+ }
734
+ }
735
+
736
+ .duplicatesList {
737
+ margin: 16px 0;
738
+ max-height: 300px;
739
+ overflow-y: auto;
740
+ }
741
+
742
+ .duplicateItem {
743
+ display: flex;
744
+ align-items: center;
745
+ justify-content: space-between;
746
+ padding: 12px;
747
+ margin-bottom: 8px;
748
+ background: #f9fafb;
749
+ border: 1px solid #e5e7eb;
750
+ border-radius: 6px;
751
+
752
+ &:last-child {
753
+ margin-bottom: 0;
754
+ }
755
+ }
756
+
757
+ .duplicateInfo {
758
+ display: flex;
759
+ flex-direction: column;
760
+ gap: 4px;
761
+ flex: 1;
762
+ }
763
+
764
+ .duplicateName {
765
+ font-weight: 500;
766
+ color: #1f2937;
767
+ font-size: 14px;
768
+ }
769
+
770
+ .duplicateStatus {
771
+ font-size: 10px;
772
+ font-weight: 600;
773
+ text-transform: uppercase;
774
+ letter-spacing: 0.5px;
775
+ padding: 2px 6px;
776
+ border-radius: 3px;
777
+ width: fit-content;
778
+ }
779
+
780
+ .duplicateActions {
781
+ margin-left: 12px;
782
+ }
783
+
784
+ .skipDuplicateButton {
785
+ background: #ef4444;
786
+ border: 1px solid #ef4444;
787
+ color: white;
788
+ padding: 6px 12px;
789
+ border-radius: 4px;
790
+ font-size: 12px;
791
+ cursor: pointer;
792
+ transition: all 0.2s ease;
793
+
794
+ &:hover {
795
+ background: #dc2626;
796
+ border-color: #dc2626;
797
+ }
798
+ }
799
+
800
+ .changesPreview {
801
+ padding: 16px 20px;
802
+ background: #f0f9ff;
803
+ border-bottom: 1px solid #e0f2fe;
804
+
805
+ strong {
806
+ color: #0c4a6e;
807
+ font-size: 13px;
808
+ display: block;
809
+ margin-bottom: 8px;
810
+ }
811
+
812
+ ul {
813
+ margin: 0;
814
+ padding-left: 0;
815
+ list-style: none;
816
+ }
817
+
818
+ li {
819
+ font-size: 12px;
820
+ color: #374151;
821
+ margin-bottom: 4px;
822
+ display: flex;
823
+ align-items: center;
824
+ gap: 8px;
825
+ }
826
+ }
827
+
828
+ .fieldName {
829
+ font-weight: 500;
830
+ color: #1f2937;
831
+ min-width: 100px;
832
+ }
833
+
834
+ .oldValue {
835
+ background: #fee2e2;
836
+ color: #991b1b;
837
+ padding: 2px 6px;
838
+ border-radius: 4px;
839
+ font-family: monospace;
840
+ font-size: 11px;
841
+ }
842
+
843
+ .newValue {
844
+ background: #dcfce7;
845
+ color: #166534;
846
+ padding: 2px 6px;
847
+ border-radius: 4px;
848
+ font-family: monospace;
849
+ font-size: 11px;
850
+ }
851
+
852
+ .recordDetails {
853
+ padding: 20px;
854
+ background: #fafbfc;
855
+ }
856
+
857
+ .dataSection {
858
+ margin-bottom: 20px;
859
+
860
+ &:last-child {
861
+ margin-bottom: 0;
862
+ }
863
+
864
+ h4 {
865
+ margin: 0 0 12px 0;
866
+ font-size: 14px;
867
+ font-weight: 600;
868
+ color: #374151;
869
+ padding-bottom: 8px;
870
+ border-bottom: 1px solid #e5e7eb;
871
+ }
872
+ }
873
+
874
+ .jsonData {
875
+ background: #1f2937;
876
+ color: #f9fafb;
877
+ padding: 16px;
878
+ border-radius: 8px;
879
+ font-family: 'SF Mono', 'Monaco', 'Inconsolata', 'Roboto Mono', monospace;
880
+ font-size: 12px;
881
+ line-height: 1.5;
882
+ overflow-x: auto;
883
+ margin: 0;
884
+ white-space: pre-wrap;
885
+ word-break: break-word;
886
+ max-height: 300px;
887
+ overflow-y: auto;
888
+ }
889
+
890
+ .paginationSection {
891
+ background: white;
892
+ border: 1px solid #e5e7eb;
893
+ border-radius: 12px;
894
+ padding: 16px 20px;
895
+ display: flex;
896
+ align-items: center;
897
+ justify-content: center;
898
+ gap: 16px;
899
+ }
900
+
901
+ .paginationButton {
902
+ background: white;
903
+ border: 1px solid #d1d5db;
904
+ color: #374151;
905
+ padding: 8px 16px;
906
+ border-radius: 6px;
907
+ cursor: pointer;
908
+ font-size: 14px;
909
+ transition: all 0.2s ease;
910
+
911
+ &:hover:not(:disabled) {
912
+ background: #f3f4f6;
913
+ border-color: #9ca3af;
914
+ }
915
+
916
+ &:disabled {
917
+ opacity: 0.5;
918
+ cursor: not-allowed;
919
+ }
920
+ }
921
+
922
+ .paginationInfo {
923
+ color: #6b7280;
924
+ font-size: 14px;
925
+ font-weight: 500;
926
+ }
927
+
928
+ // Step 3: Confirmation
929
+ .confirmationSection {
930
+ display: flex;
931
+ justify-content: center;
932
+ align-items: center;
933
+ min-height: 400px;
934
+ }
935
+
936
+ .confirmationCard {
937
+ background: white;
938
+ border: 1px solid #e5e7eb;
939
+ border-radius: 20px;
940
+ padding: 48px;
941
+ text-align: center;
942
+ max-width: 600px;
943
+ box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
944
+
945
+ svg {
946
+ color: #667eea;
947
+ margin-bottom: 24px;
948
+ }
949
+
950
+ h3 {
951
+ margin: 0 0 32px 0;
952
+ font-size: 28px;
953
+ font-weight: 700;
954
+ color: #1f2937;
955
+ }
956
+ }
957
+
958
+ .confirmationStats {
959
+ display: grid;
960
+ grid-template-columns: repeat(4, 1fr);
961
+ gap: 16px;
962
+ margin-bottom: 24px;
963
+ background: #f8f9fa;
964
+ padding: 20px;
965
+ border-radius: 12px;
966
+ border: 1px solid #e9ecef;
967
+ }
968
+
969
+ .stat {
970
+ display: flex;
971
+ flex-direction: column;
972
+ align-items: center;
973
+ text-align: center;
974
+
975
+ .statNumber {
976
+ font-size: 28px;
977
+ font-weight: 700;
978
+ color: #667eea;
979
+ line-height: 1;
980
+ margin-bottom: 4px;
981
+ }
982
+
983
+ .statLabel {
984
+ font-size: 12px;
985
+ color: #6b7280;
986
+ font-weight: 600;
987
+ text-transform: uppercase;
988
+ letter-spacing: 0.5px;
989
+ }
990
+ }
991
+
992
+ .warningBox {
993
+ background: #fef3c7;
994
+ border: 1px solid #fcd34d;
995
+ border-radius: 8px;
996
+ padding: 16px;
997
+ display: flex;
998
+ align-items: center;
999
+ gap: 12px;
1000
+
1001
+ svg {
1002
+ color: #f59e0b;
1003
+ margin: 0;
1004
+ }
1005
+
1006
+ p {
1007
+ margin: 0;
1008
+ color: #92400e;
1009
+ font-size: 14px;
1010
+ text-align: left;
1011
+ }
1012
+ }
1013
+
1014
+ // Navigation Footer
1015
+ .wizardNavigation {
1016
+ position: fixed;
1017
+ bottom: 0;
1018
+ left: 0;
1019
+ right: 0;
1020
+ z-index: 1000;
1021
+ background: white;
1022
+ padding: 16px 24px;
1023
+ border-top: 1px solid #e5e7eb;
1024
+ display: flex;
1025
+ align-items: center;
1026
+ justify-content: space-between;
1027
+ box-shadow: 0 -4px 12px rgba(0, 0, 0, 0.15);
1028
+ }
1029
+
1030
+ .cancelButton {
1031
+ background: white;
1032
+ border: 1px solid #d1d5db;
1033
+ color: #374151;
1034
+ padding: 12px 24px;
1035
+ border-radius: 8px;
1036
+ cursor: pointer;
1037
+ font-size: 14px;
1038
+ font-weight: 500;
1039
+ transition: all 0.2s ease;
1040
+
1041
+ &:hover {
1042
+ background: #f3f4f6;
1043
+ border-color: #9ca3af;
1044
+ }
1045
+ }
1046
+
1047
+ .navigationButtons {
1048
+ display: flex;
1049
+ gap: 12px;
1050
+ }
1051
+
1052
+ .backButton {
1053
+ background: white;
1054
+ border: 1px solid #d1d5db;
1055
+ color: #374151;
1056
+ padding: 12px 20px;
1057
+ border-radius: 8px;
1058
+ cursor: pointer;
1059
+ font-size: 14px;
1060
+ font-weight: 500;
1061
+ display: flex;
1062
+ align-items: center;
1063
+ gap: 8px;
1064
+ transition: all 0.2s ease;
1065
+
1066
+ &:hover:not(:disabled) {
1067
+ background: #f3f4f6;
1068
+ border-color: #9ca3af;
1069
+ }
1070
+
1071
+ &:disabled {
1072
+ opacity: 0.5;
1073
+ cursor: not-allowed;
1074
+ }
1075
+ }
1076
+
1077
+ .nextButton {
1078
+ background: var(--primary-color, #1b3933);
1079
+ border: none;
1080
+ color: var(--third-color, white);
1081
+ padding: 12px 20px;
1082
+ border-radius: 8px;
1083
+ cursor: pointer;
1084
+ font-size: 14px;
1085
+ font-weight: 500;
1086
+ display: flex;
1087
+ align-items: center;
1088
+ gap: 8px;
1089
+ transition: all 0.2s ease;
1090
+
1091
+ &:hover:not(:disabled) {
1092
+ background: var(--secondary-color, #3cbf7d);
1093
+ transform: translateY(-1px);
1094
+ box-shadow: 0 4px 12px rgba(var(--secondary-rgb, 60, 191, 125), 0.3);
1095
+ }
1096
+
1097
+ &:disabled {
1098
+ opacity: 0.6;
1099
+ cursor: not-allowed;
1100
+ transform: none;
1101
+ box-shadow: none;
1102
+ }
1103
+ }
1104
+
1105
+ .completeButton {
1106
+ background: var(--secondary-color, #3cbf7d);
1107
+ border: none;
1108
+ color: var(--third-color, white);
1109
+ padding: 12px 20px;
1110
+ border-radius: 8px;
1111
+ cursor: pointer;
1112
+ font-size: 14px;
1113
+ font-weight: 500;
1114
+ display: flex;
1115
+ align-items: center;
1116
+ gap: 8px;
1117
+ transition: all 0.2s ease;
1118
+
1119
+ &:hover:not(:disabled) {
1120
+ background: var(--highlight-color, #2da566);
1121
+ transform: translateY(-1px);
1122
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
1123
+ }
1124
+
1125
+ &:disabled {
1126
+ opacity: 0.6;
1127
+ cursor: not-allowed;
1128
+ transform: none;
1129
+ box-shadow: none;
1130
+ }
1131
+ }
1132
+
1133
+ // Responsive Design
1134
+ @media (max-width: 1024px) {
1135
+ .progressSteps {
1136
+ padding: 24px 20px;
1137
+ gap: 24px;
1138
+ }
1139
+
1140
+ .stepContent {
1141
+ padding: 32px 20px;
1142
+ }
1143
+
1144
+ .settingsGrid {
1145
+ grid-template-columns: 1fr;
1146
+ }
1147
+
1148
+ .summaryGrid {
1149
+ grid-template-columns: 1fr;
1150
+ }
1151
+ }
1152
+
1153
+ @media (max-width: 768px) {
1154
+ .progressSteps {
1155
+ flex-direction: column;
1156
+ gap: 16px;
1157
+
1158
+ .progressLine {
1159
+ display: none;
1160
+ }
1161
+ }
1162
+
1163
+ .progressStep {
1164
+ justify-content: center;
1165
+ text-align: center;
1166
+ }
1167
+
1168
+ .stepHeader {
1169
+ flex-direction: column;
1170
+ text-align: center;
1171
+ gap: 16px;
1172
+ }
1173
+
1174
+ .filtersSection {
1175
+ flex-direction: column;
1176
+ align-items: stretch;
1177
+ gap: 12px;
1178
+
1179
+ .searchBox, .filterBox {
1180
+ input, select {
1181
+ width: 100%;
1182
+ }
1183
+ }
1184
+ }
1185
+
1186
+ .recordHeader {
1187
+ flex-direction: column;
1188
+ align-items: flex-start;
1189
+ gap: 12px;
1190
+ }
1191
+
1192
+ .confirmationStats {
1193
+ flex-direction: column;
1194
+ gap: 16px;
1195
+ }
1196
+
1197
+ .wizardNavigation {
1198
+ padding: 16px 20px;
1199
+ flex-direction: column;
1200
+ gap: 16px;
1201
+
1202
+ .navigationButtons {
1203
+ width: 100%;
1204
+ justify-content: space-between;
1205
+ }
1206
+
1207
+ button {
1208
+ flex: 1;
1209
+ }
1210
+ }
1211
+ }