@visns-studio/visns-components 5.10.8 → 5.10.10

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.
@@ -1,2631 +0,0 @@
1
- // Use project root CSS variables instead of local SCSS variables
2
- // This allows the component to adapt to different project themes
3
-
4
- // Main container
5
- .reportBuilder {
6
- width: 100%;
7
- min-height: 100vh;
8
- background-color: var(--bg-color);
9
- }
10
-
11
- // Header
12
- .header {
13
- background-color: var(--tertiary-color);
14
- border-bottom: 1px solid var(--border-color);
15
- padding: var(--padding) calc(var(--padding) * 1.5);
16
- display: flex;
17
- justify-content: space-between;
18
- align-items: center;
19
- box-shadow: var(--box-shadow-small);
20
- position: sticky;
21
- top: 0;
22
- z-index: 100;
23
- }
24
-
25
- .headerLeft {
26
- display: flex;
27
- align-items: center;
28
- gap: var(--padding);
29
-
30
- h1 {
31
- margin: 0;
32
- font-size: 1.5rem;
33
- font-weight: var(--title-weight);
34
- color: var(--header-color);
35
- }
36
- }
37
-
38
- .helpButton {
39
- display: flex;
40
- align-items: center;
41
- gap: 6px;
42
- background-color: var(--bg-color);
43
- border: 1px solid var(--border-color);
44
- border-radius: var(--radius);
45
- padding: 8px var(--padding);
46
- font-size: 0.875rem;
47
- color: var(--paragraph-color);
48
- cursor: pointer;
49
- transition: all 0.2s ease;
50
-
51
- &:hover {
52
- background-color: var(--bg-color);
53
- color: var(--header-color);
54
- box-shadow: var(--box-shadow-small);
55
- filter: brightness(0.95);
56
- }
57
-
58
- svg {
59
- color: var(--primary-color);
60
- }
61
- }
62
-
63
- .headerRight {
64
- display: flex;
65
- align-items: center;
66
- gap: 16px;
67
- }
68
-
69
- // Mode toggle
70
- .modeToggle {
71
- display: flex;
72
- align-items: center;
73
- gap: 12px;
74
- padding: 8px;
75
- background-color: var(--bg-color);
76
- border-radius: var(--radius);
77
-
78
- span {
79
- display: flex;
80
- align-items: center;
81
- gap: 6px;
82
- font-size: 0.875rem;
83
- color: var(--paragraph-color);
84
- transition: color 0.2s ease;
85
-
86
- &.active {
87
- color: var(--header-color);
88
- font-weight: 500;
89
- }
90
- }
91
- }
92
-
93
- .switch {
94
- position: relative;
95
- display: inline-block;
96
- width: 44px;
97
- height: 24px;
98
-
99
- input {
100
- opacity: 0;
101
- width: 0;
102
- height: 0;
103
-
104
- &:checked + .slider {
105
- background-color: var(--primary-color);
106
-
107
- &:before {
108
- transform: translateX(20px);
109
- }
110
- }
111
- }
112
- }
113
-
114
- .slider {
115
- position: absolute;
116
- cursor: pointer;
117
- top: 0;
118
- left: 0;
119
- right: 0;
120
- bottom: 0;
121
- background-color: var(--border-color);
122
- transition: 0.3s;
123
- border-radius: 24px;
124
-
125
- &:before {
126
- position: absolute;
127
- content: '';
128
- height: 18px;
129
- width: 18px;
130
- left: 3px;
131
- bottom: 3px;
132
- background-color: var(--tertiary-color);
133
- transition: 0.3s;
134
- border-radius: 50%;
135
- box-shadow: var(--box-shadow-small);
136
- }
137
- }
138
-
139
- // Content
140
- .content {
141
- padding: 24px;
142
- }
143
-
144
- // Template Selection
145
- .templateSelection {
146
- max-width: 1200px;
147
- margin: 0 auto;
148
- }
149
-
150
- .templateHeader {
151
- text-align: center;
152
- margin-bottom: 40px;
153
-
154
- h2 {
155
- font-size: 2rem;
156
- font-weight: 700;
157
- color: var(--header-color);
158
- margin-bottom: 12px;
159
- }
160
-
161
- p {
162
- font-size: 1.125rem;
163
- color: var(--paragraph-color);
164
- }
165
- }
166
-
167
- .templateCategories {
168
- display: grid;
169
- gap: 32px;
170
- }
171
-
172
- .templateCategory {
173
- background-color: var(--tertiary-color);
174
- border-radius: var(--radius);
175
- padding: 24px;
176
- box-shadow: var(--box-shadow-small);
177
- border: 1px solid var(--border-color);
178
- }
179
-
180
- .categoryHeader {
181
- display: flex;
182
- align-items: center;
183
- gap: 12px;
184
- margin-bottom: 20px;
185
-
186
- svg {
187
- color: var(--primary-color);
188
- }
189
-
190
- h3 {
191
- margin: 0;
192
- font-size: 1.25rem;
193
- font-weight: 600;
194
- color: var(--header-color);
195
- }
196
- }
197
-
198
- .templateGrid {
199
- display: grid;
200
- grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
201
- gap: 16px;
202
- }
203
-
204
- .templateCard {
205
- background-color: var(--bg-color);
206
- border: 2px solid transparent;
207
- border-radius: var(--radius);
208
- padding: 20px;
209
- cursor: pointer;
210
- transition: all 0.2s ease;
211
- text-align: center;
212
-
213
- &:hover {
214
- border-color: var(--primary-color);
215
- background-color: var(--tertiary-color);
216
- box-shadow: var(--box-shadow-small);
217
- transform: translateY(-2px);
218
- }
219
-
220
- svg {
221
- color: var(--primary-color);
222
- margin-bottom: 12px;
223
- }
224
-
225
- h4 {
226
- margin: 0 0 8px 0;
227
- font-size: 1rem;
228
- font-weight: 600;
229
- color: var(--header-color);
230
- }
231
-
232
- p {
233
- margin: 0;
234
- font-size: 0.875rem;
235
- color: var(--paragraph-color);
236
- line-height: 1.4;
237
- }
238
- }
239
-
240
- .customTemplate {
241
- background: linear-gradient(
242
- 135deg,
243
- var(--primary-color) 0%,
244
- var(--primary-color) 100%
245
- );
246
- color: var(--tertiary-color);
247
- border-radius: var(--radius);
248
- padding: 32px;
249
- cursor: pointer;
250
- transition: all 0.2s ease;
251
- text-align: center;
252
- display: flex;
253
- flex-direction: column;
254
- align-items: center;
255
- justify-content: center;
256
- min-height: 200px;
257
-
258
- &:hover {
259
- box-shadow: var(--box-shadow-large);
260
- transform: translateY(-2px);
261
- }
262
-
263
- svg {
264
- color: var(--tertiary-color);
265
- margin-bottom: 16px;
266
- }
267
-
268
- h4 {
269
- margin: 0 0 8px 0;
270
- font-size: 1.25rem;
271
- font-weight: 700;
272
- }
273
-
274
- p {
275
- margin: 0;
276
- font-size: 0.875rem;
277
- opacity: 0.9;
278
- }
279
- }
280
-
281
- // Reports Dashboard
282
- .reportsDashboard {
283
- max-width: 800px;
284
- margin: 0 auto;
285
- }
286
-
287
- .newReportSection {
288
- margin-bottom: 32px;
289
- }
290
-
291
- .newReportCard {
292
- background: linear-gradient(
293
- 135deg,
294
- var(--primary-color) 0%,
295
- var(--primary-color) 100%
296
- );
297
- color: var(--tertiary-color);
298
- border-radius: var(--radius);
299
- padding: 32px;
300
- text-align: center;
301
- cursor: pointer;
302
- transition: all 0.2s ease;
303
- border: none;
304
-
305
- &:hover {
306
- transform: translateY(-2px);
307
- box-shadow: var(--box-shadow-large);
308
- }
309
-
310
- svg {
311
- margin-bottom: 16px;
312
- }
313
-
314
- h4 {
315
- margin: 0 0 8px 0;
316
- font-size: 1.25rem;
317
- font-weight: 700;
318
- color: var(--tertiary-color);
319
- }
320
-
321
- p {
322
- margin: 0;
323
- opacity: 0.9;
324
- font-size: 0.875rem;
325
- color: var(--tertiary-color);
326
- }
327
- }
328
-
329
- .savedReportsSection {
330
- h3 {
331
- margin: 0 0 16px 0;
332
- font-size: 1.125rem;
333
- font-weight: 600;
334
- color: var(--header-color);
335
- }
336
- }
337
-
338
- .reportsGrid {
339
- display: grid;
340
- grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
341
- gap: 16px;
342
- }
343
-
344
- .reportCard {
345
- background-color: var(--tertiary-color);
346
- border: 2px solid var(--border-color);
347
- border-radius: var(--radius);
348
- overflow: hidden;
349
- transition: all 0.2s ease;
350
- position: relative;
351
-
352
- &:hover {
353
- border-color: var(--primary-color);
354
- box-shadow: var(--box-shadow-small);
355
- transform: translateY(-2px);
356
- }
357
-
358
- .reportCardContent {
359
- padding: 16px;
360
- cursor: pointer;
361
- min-height: 120px;
362
- display: flex;
363
- flex-direction: column;
364
- justify-content: space-between;
365
- }
366
-
367
- .reportHeader {
368
- margin-bottom: 12px;
369
-
370
- h4 {
371
- margin: 0 0 8px 0;
372
- font-size: 1rem;
373
- font-weight: 600;
374
- color: var(--header-color);
375
- line-height: 1.3;
376
- overflow: hidden;
377
- text-overflow: ellipsis;
378
- white-space: nowrap;
379
- }
380
-
381
- .reportMeta {
382
- display: flex;
383
- align-items: center;
384
- gap: 8px;
385
- font-size: 0.75rem;
386
- color: var(--paragraph-color);
387
-
388
- .reportVisibility {
389
- font-size: 0.875rem;
390
- }
391
-
392
- .reportDate {
393
- color: var(--paragraph-color);
394
- }
395
- }
396
- }
397
-
398
- .reportTableInfo {
399
- margin-bottom: 12px;
400
-
401
- .reportTable {
402
- display: inline-block;
403
- font-size: 0.75rem;
404
- background-color: var(--bg-color);
405
- color: var(--paragraph-color);
406
- padding: 4px 8px;
407
- border-radius: var(--radius);
408
- border: 1px solid var(--border-color);
409
- }
410
- }
411
-
412
- .reportClickHint {
413
- font-size: 0.75rem;
414
- color: var(--paragraph-color);
415
- font-style: italic;
416
- margin-top: auto;
417
- }
418
-
419
- .reportActions {
420
- position: absolute;
421
- top: 8px;
422
- right: 8px;
423
-
424
- .deleteReportBtn {
425
- width: 24px;
426
- height: 24px;
427
- border-radius: 50%;
428
- background-color: rgba(var(--approval-color), 0.1);
429
- border: 1px solid rgba(var(--approval-color), 0.2);
430
- color: var(--approval-color);
431
- font-size: 16px;
432
- font-weight: bold;
433
- cursor: pointer;
434
- display: flex;
435
- align-items: center;
436
- justify-content: center;
437
- transition: all 0.2s ease;
438
- opacity: 0.7;
439
-
440
- &:hover {
441
- background-color: var(--approval-color);
442
- color: var(--tertiary-color);
443
- opacity: 1;
444
- transform: scale(1.1);
445
- }
446
- }
447
- }
448
- }
449
-
450
- .noReports {
451
- text-align: center;
452
- padding: 48px 24px;
453
- color: var(--paragraph-color);
454
-
455
- svg {
456
- color: var(--paragraph-color);
457
- margin-bottom: 16px;
458
- }
459
-
460
- h3 {
461
- margin: 0 0 8px 0;
462
- color: var(--header-color);
463
- }
464
-
465
- p {
466
- margin: 0;
467
- max-width: 400px;
468
- margin: 0 auto;
469
- }
470
- }
471
-
472
- // Wizard Mode
473
- .wizardMode {
474
- max-width: 1400px; // Expanded from 1000px to fit more content
475
- margin: 0 auto;
476
- }
477
-
478
- .wizardProgress {
479
- background-color: var(--tertiary-color);
480
- border-radius: var(--radius);
481
- padding: 20px;
482
- margin-bottom: 24px;
483
- box-shadow: var(--box-shadow-small);
484
- display: flex;
485
- justify-content: space-between;
486
- align-items: center;
487
- position: relative;
488
- gap: 16px;
489
-
490
- // Remove the line - we'll use arrows instead
491
- &::before {
492
- display: none;
493
- }
494
- }
495
-
496
- .wizardStep {
497
- display: flex;
498
- flex-direction: column;
499
- align-items: center;
500
- gap: 8px;
501
- cursor: pointer;
502
- position: relative;
503
- z-index: 1;
504
- transition: all 0.2s ease;
505
- flex: 1;
506
- max-width: 200px;
507
-
508
- // Add arrow after each step except the last
509
- &:not(:last-child)::after {
510
- content: '→';
511
- position: absolute;
512
- right: -20px;
513
- top: 20px; // Align with step icon center
514
- color: var(--border-color);
515
- font-size: 20px;
516
- font-weight: bold;
517
- z-index: 1;
518
- transition: color 0.2s ease;
519
- }
520
-
521
- &.active {
522
- background-color: rgba(var(--primary-rgb), 0.05);
523
- border-radius: var(--radius);
524
- padding: 12px 8px;
525
- transform: scale(1.02);
526
-
527
- .stepIcon {
528
- background-color: var(--primary-color);
529
- color: var(--tertiary-color);
530
- box-shadow: 0 0 0 4px rgba(var(--primary-rgb), 0.15);
531
- border: 3px solid var(--tertiary-color);
532
- width: 48px;
533
- height: 48px;
534
- font-size: 1.1em;
535
- }
536
-
537
- .stepTitle {
538
- color: var(--primary-color);
539
- font-weight: 700;
540
- font-size: 0.95em;
541
- }
542
-
543
- .stepDescription {
544
- color: var(--primary-color);
545
- opacity: 0.8;
546
- }
547
-
548
- // Color the arrow after active step
549
- &:not(:last-child)::after {
550
- color: var(--primary-color);
551
- font-weight: bold;
552
- }
553
- }
554
-
555
- &.complete {
556
- .stepIcon {
557
- background-color: rgba(var(--color-valid), 1);
558
- color: var(--tertiary-color);
559
- border: 2px solid rgba(var(--color-valid), 0.3);
560
- }
561
-
562
- .stepTitle {
563
- color: rgba(var(--color-valid), 1);
564
- font-weight: 600;
565
- }
566
-
567
- .stepDescription {
568
- color: rgba(var(--color-valid), 1);
569
- opacity: 0.7;
570
- }
571
-
572
- // Color the arrow after completed step
573
- &:not(:last-child)::after {
574
- color: rgba(var(--color-valid), 1);
575
- }
576
- }
577
-
578
- &:hover:not(.active) {
579
- background-color: rgba(var(--primary-rgb), 0.02);
580
- border-radius: var(--radius);
581
- padding: 8px;
582
-
583
- .stepIcon {
584
- transform: scale(1.05);
585
- background-color: rgba(var(--primary-rgb), 0.1);
586
- color: var(--primary-color);
587
- }
588
-
589
- .stepTitle {
590
- color: var(--primary-color);
591
- }
592
- }
593
- }
594
-
595
- .stepIcon {
596
- width: 40px; // Reduced from 48px for more compact look
597
- height: 40px;
598
- border-radius: 50%;
599
- background-color: var(--tertiary-color);
600
- border: 2px solid var(--border-color);
601
- display: flex;
602
- align-items: center;
603
- justify-content: center;
604
- transition: all 0.2s ease;
605
- }
606
-
607
- .stepInfo {
608
- text-align: center;
609
-
610
- .stepTitle {
611
- display: block;
612
- font-size: 0.875rem;
613
- font-weight: 500;
614
- color: var(--paragraph-color);
615
- margin-bottom: 2px;
616
- }
617
-
618
- .stepDescription {
619
- display: block;
620
- font-size: 0.75rem;
621
- color: var(--paragraph-color);
622
- max-width: 150px;
623
- line-height: 1.3;
624
- }
625
- }
626
-
627
- .wizardContent {
628
- background-color: var(--tertiary-color);
629
- border-radius: var(--radius);
630
- box-shadow: var(--box-shadow-small);
631
- overflow: hidden;
632
- }
633
-
634
- .stepHeader {
635
- display: flex;
636
- align-items: center;
637
- gap: 24px;
638
- padding: 24px 32px;
639
- border-bottom: 1px solid var(--border-color);
640
- background: linear-gradient(
641
- 135deg,
642
- var(--primary-color) 0%,
643
- var(--primary-color) 100%
644
- );
645
- color: var(--tertiary-color);
646
-
647
- .stepNumber {
648
- display: flex;
649
- align-items: center;
650
- justify-content: center;
651
- width: 48px;
652
- height: 48px;
653
- background-color: rgba(255, 255, 255, 0.2);
654
- border-radius: 50%;
655
- font-size: 1.5rem;
656
- font-weight: 700;
657
- color: var(--tertiary-color);
658
- }
659
-
660
- .stepHeaderContent {
661
- display: flex;
662
- align-items: center;
663
- gap: 16px;
664
- flex: 1;
665
-
666
- .stepIcon {
667
- display: flex;
668
- align-items: center;
669
- justify-content: center;
670
- width: 40px;
671
- height: 40px;
672
- background-color: rgba(255, 255, 255, 0.15);
673
- border-radius: var(--radius);
674
-
675
- svg {
676
- color: var(--tertiary-color);
677
- }
678
- }
679
-
680
- .stepHeaderText {
681
- h2 {
682
- margin: 0 0 4px 0;
683
- font-size: 1.5rem;
684
- font-weight: 700;
685
- color: var(--tertiary-color);
686
- }
687
-
688
- p {
689
- margin: 0;
690
- font-size: 1rem;
691
- color: rgba(255, 255, 255, 0.9);
692
- }
693
- }
694
- }
695
- }
696
-
697
- .stepGuidance {
698
- padding: 20px 32px;
699
- background-color: rgba(var(--primary-rgb), 0.05);
700
- border-top: 1px solid var(--border-color);
701
- border-bottom: 1px solid var(--border-color);
702
-
703
- .guidanceContent {
704
- h3 {
705
- margin: 0 0 16px 0;
706
- font-size: 1.125rem;
707
- font-weight: 600;
708
- color: var(--header-color);
709
- }
710
-
711
- .howToSteps {
712
- margin-bottom: 16px;
713
-
714
- h4 {
715
- margin: 0 0 8px 0;
716
- font-size: 0.875rem;
717
- font-weight: 600;
718
- color: var(--paragraph-color);
719
- text-transform: uppercase;
720
- letter-spacing: 0.5px;
721
- }
722
-
723
- ol {
724
- margin: 0;
725
- padding-left: 20px;
726
- color: var(--paragraph-color);
727
-
728
- li {
729
- margin-bottom: 4px;
730
- font-size: 0.875rem;
731
- line-height: 1.4;
732
- }
733
- }
734
- }
735
-
736
- .guidanceTip {
737
- display: flex;
738
- align-items: flex-start;
739
- gap: 8px;
740
- padding: 12px;
741
- background-color: rgba(var(--color-alert), 0.1);
742
- border: 1px solid rgba(var(--color-alert), 0.2);
743
- border-radius: var(--radius);
744
-
745
- svg {
746
- color: rgba(var(--color-alert), 1);
747
- flex-shrink: 0;
748
- margin-top: 2px;
749
- }
750
-
751
- span {
752
- font-size: 0.875rem;
753
- color: var(--header-color);
754
- }
755
- }
756
- }
757
- }
758
-
759
- .stepBody {
760
- padding: 32px;
761
- min-height: 500px; // Increased from 400px to accommodate grid layout
762
- }
763
-
764
- .wizardNavigation {
765
- display: flex;
766
- justify-content: space-between;
767
- align-items: center;
768
- padding: 24px 32px;
769
- border-top: 1px solid var(--border-color);
770
- background-color: var(--bg-color);
771
- gap: 16px;
772
-
773
- .btn {
774
- min-width: 120px;
775
- padding: 12px 24px;
776
- font-weight: 600;
777
- transition: all 0.2s ease;
778
-
779
- &:focus {
780
- outline: 2px solid rgba(var(--primary-rgb), 0.3);
781
- outline-offset: 2px;
782
- }
783
- }
784
- }
785
-
786
- // Table Selection
787
- .tableSelection {
788
- .noTables {
789
- text-align: center;
790
- padding: 48px 24px;
791
- color: var(--paragraph-color);
792
-
793
- svg {
794
- color: var(--paragraph-color);
795
- margin-bottom: 16px;
796
- }
797
-
798
- h3 {
799
- margin: 0 0 8px 0;
800
- color: var(--header-color);
801
- }
802
-
803
- p {
804
- margin: 0;
805
- max-width: 400px;
806
- margin: 0 auto;
807
- }
808
- }
809
-
810
- .simpleTableList {
811
- max-width: 100%; // Use full width instead of 600px
812
- margin: 0 auto;
813
-
814
- .tableListHeader {
815
- text-align: center;
816
- margin-bottom: 24px;
817
-
818
- h3 {
819
- margin: 0 0 8px 0;
820
- font-size: 1.25rem;
821
- font-weight: 600;
822
- color: var(--header-color);
823
- }
824
-
825
- p {
826
- margin: 0;
827
- color: var(--paragraph-color);
828
- font-size: 0.875rem;
829
- }
830
- }
831
-
832
- .tableGrid {
833
- display: grid;
834
- grid-template-columns: repeat(
835
- auto-fill,
836
- minmax(220px, 1fr)
837
- ); // Reduced from 280px for more compact
838
- gap: 12px; // Reduced from 16px
839
- }
840
-
841
- .tableCard {
842
- display: flex;
843
- flex-direction: column;
844
- padding: 16px; // Reduced from 20px
845
- background-color: var(--tertiary-color);
846
- border: 2px solid var(--border-color);
847
- border-radius: var(--radius);
848
- cursor: pointer;
849
- transition: all 0.2s ease;
850
- text-align: center;
851
- position: relative;
852
- min-height: 120px; // Reduced from 140px
853
-
854
- &:hover {
855
- border-color: var(--primary-color);
856
- box-shadow: var(--box-shadow-small);
857
- transform: translateY(-2px);
858
- }
859
-
860
- &.selected {
861
- border-color: var(--primary-color);
862
- background-color: rgba(var(--primary-rgb), 0.05);
863
- box-shadow: var(--box-shadow-small);
864
- }
865
-
866
- .tableCardIcon {
867
- display: flex;
868
- align-items: center;
869
- justify-content: center;
870
- width: 40px; // Reduced from 48px
871
- height: 40px;
872
- background-color: rgba(var(--primary-rgb), 0.1);
873
- border-radius: var(--radius);
874
- margin: 0 auto 12px auto; // Reduced from 16px
875
- flex-shrink: 0;
876
-
877
- svg {
878
- color: var(--primary-color);
879
- }
880
- }
881
-
882
- .tableCardInfo {
883
- flex: 1;
884
-
885
- h4 {
886
- margin: 0 0 6px 0; // Reduced from 8px
887
- font-size: 0.9rem; // Reduced from 1rem
888
- font-weight: 600;
889
- color: var(--header-color);
890
- line-height: 1.2;
891
- }
892
-
893
- p {
894
- margin: 0;
895
- font-size: 0.7rem; // Reduced from 0.75rem
896
- color: var(--paragraph-color);
897
- line-height: 1.3; // Reduced from 1.4
898
- display: -webkit-box;
899
- -webkit-line-clamp: 2; // Reduced from 3 lines
900
- -webkit-box-orient: vertical;
901
- overflow: hidden;
902
- }
903
- }
904
-
905
- .tableCardCheck {
906
- position: absolute;
907
- top: 12px;
908
- right: 12px;
909
- display: flex;
910
- align-items: center;
911
- justify-content: center;
912
- width: 24px;
913
- height: 24px;
914
- background-color: var(--primary-color);
915
- border-radius: 50%;
916
- color: var(--tertiary-color);
917
-
918
- svg {
919
- color: var(--tertiary-color);
920
- }
921
- }
922
- }
923
-
924
- .selectedTableInfo {
925
- display: flex;
926
- align-items: center;
927
- justify-content: center;
928
- gap: 8px;
929
- margin-top: 16px;
930
- padding: 12px;
931
- background-color: rgba(var(--color-valid), 0.1);
932
- border: 1px solid rgba(var(--color-valid), 0.2);
933
- border-radius: var(--radius);
934
- color: rgba(var(--color-valid), 1);
935
- font-weight: 500;
936
- font-size: 0.875rem;
937
-
938
- svg {
939
- color: rgba(var(--color-valid), 1);
940
- }
941
- }
942
- }
943
- }
944
-
945
- .tableCategory {
946
- margin-bottom: 32px;
947
-
948
- h3 {
949
- margin: 0 0 16px 0;
950
- font-size: 1.125rem;
951
- font-weight: 600;
952
- color: var(--header-color);
953
- }
954
- }
955
-
956
- .tableGrid {
957
- display: grid;
958
- grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
959
- gap: 12px;
960
- }
961
-
962
- .tableCard {
963
- background-color: var(--bg-color);
964
- border: 2px solid transparent;
965
- border-radius: var(--radius);
966
- padding: 16px;
967
- cursor: pointer;
968
- transition: all 0.2s ease;
969
- display: flex;
970
- flex-direction: column;
971
- align-items: center;
972
- gap: 8px;
973
- position: relative;
974
-
975
- &:hover {
976
- border-color: var(--primary-color);
977
- background-color: var(--tertiary-color);
978
- box-shadow: var(--box-shadow-small);
979
- }
980
-
981
- &.selected {
982
- border-color: var(--primary-color);
983
- background-color: rgba(var(--primary-rgb), 0.05);
984
- }
985
-
986
- svg {
987
- color: var(--primary-color);
988
- }
989
-
990
- span {
991
- font-size: 0.875rem;
992
- font-weight: 500;
993
- color: var(--header-color);
994
- text-align: center;
995
- }
996
-
997
- .checkIcon {
998
- position: absolute;
999
- top: 8px;
1000
- right: 8px;
1001
- color: var(--primary-color);
1002
- }
1003
- }
1004
-
1005
- // Column Selection
1006
- .columnSelection {
1007
- .noColumns {
1008
- text-align: center;
1009
- padding: 48px 24px;
1010
- color: var(--paragraph-color);
1011
-
1012
- svg {
1013
- color: var(--paragraph-color);
1014
- margin-bottom: 16px;
1015
- }
1016
-
1017
- h3 {
1018
- margin: 0 0 8px 0;
1019
- color: var(--header-color);
1020
- }
1021
-
1022
- p {
1023
- margin: 0;
1024
- max-width: 400px;
1025
- margin: 0 auto;
1026
- }
1027
- }
1028
-
1029
- .columnSelectionHeader {
1030
- margin-bottom: 24px;
1031
-
1032
- p {
1033
- margin: 0 0 12px 0;
1034
- font-size: 1rem;
1035
- color: var(--paragraph-color);
1036
- }
1037
- }
1038
-
1039
- .quickActions {
1040
- display: flex;
1041
- gap: 16px;
1042
- }
1043
-
1044
- .linkButton {
1045
- background: none;
1046
- border: none;
1047
- color: var(--primary-color);
1048
- font-size: 0.875rem;
1049
- font-weight: 500;
1050
- cursor: pointer;
1051
- transition: all 0.2s ease;
1052
-
1053
- &:hover {
1054
- color: var(--primary-color);
1055
- text-decoration: underline;
1056
- }
1057
- }
1058
- }
1059
-
1060
- .columnCategories {
1061
- display: grid;
1062
- gap: 16px; // Reduced from 24px for more compact layout
1063
- }
1064
-
1065
- .columnCategory {
1066
- background-color: var(--bg-color);
1067
- border-radius: var(--radius);
1068
- padding: 16px; // Reduced from 20px
1069
- border: 1px solid var(--border-color);
1070
-
1071
- .categoryHeader {
1072
- display: flex;
1073
- align-items: center;
1074
- gap: 12px;
1075
- margin-bottom: 16px;
1076
-
1077
- svg {
1078
- color: var(--primary-color);
1079
- }
1080
-
1081
- h4 {
1082
- margin: 0;
1083
- font-size: 1rem;
1084
- font-weight: 600;
1085
- color: var(--header-color);
1086
- }
1087
-
1088
- span {
1089
- font-size: 0.875rem;
1090
- color: var(--paragraph-color);
1091
- }
1092
- }
1093
- }
1094
-
1095
- .columnList {
1096
- display: grid;
1097
- grid-template-columns: repeat(
1098
- auto-fill,
1099
- minmax(180px, 1fr)
1100
- ); // Reduced from 200px
1101
- gap: 6px; // Reduced from 8px
1102
- }
1103
-
1104
- .columnItem {
1105
- display: flex;
1106
- align-items: center;
1107
- gap: 6px; // Reduced from 8px
1108
- padding: 6px 10px; // Reduced from 8px 12px
1109
- background-color: var(--tertiary-color);
1110
- border-radius: var(--radius);
1111
- cursor: pointer;
1112
- transition: all 0.2s ease;
1113
-
1114
- &:hover {
1115
- background-color: rgba(var(--primary-rgb), 0.05);
1116
- }
1117
-
1118
- input[type='checkbox'] {
1119
- width: 16px;
1120
- height: 16px;
1121
- cursor: pointer;
1122
- accent-color: var(--primary-color);
1123
- }
1124
-
1125
- .columnName {
1126
- flex: 1;
1127
- font-size: 0.875rem;
1128
- font-weight: 500;
1129
- color: var(--header-color);
1130
- }
1131
-
1132
- .columnType {
1133
- font-size: 0.75rem;
1134
- color: var(--paragraph-color);
1135
- padding: 2px 8px;
1136
- background-color: var(--bg-color);
1137
- border-radius: var(--radius);
1138
- }
1139
- }
1140
-
1141
- .selectedSummary {
1142
- margin-top: 24px;
1143
- padding: 16px;
1144
- background-color: rgba(var(--primary-rgb), 0.05);
1145
- border: 1px solid rgba(var(--primary-rgb), 0.2);
1146
- border-radius: var(--radius);
1147
- text-align: center;
1148
- font-size: 0.875rem;
1149
- color: var(--primary-color);
1150
- }
1151
-
1152
- .tableColumnSections {
1153
- display: flex;
1154
- flex-direction: column;
1155
- gap: 24px;
1156
- }
1157
-
1158
- .tableSection {
1159
- background-color: var(--tertiary-color);
1160
- border: 1px solid var(--border-color);
1161
- border-radius: var(--radius);
1162
- padding: 16px;
1163
-
1164
- .tableSectionHeader {
1165
- display: flex;
1166
- align-items: center;
1167
- justify-content: space-between;
1168
- margin-bottom: 16px;
1169
- padding-bottom: 12px;
1170
- border-bottom: 1px solid var(--border-color);
1171
-
1172
- h3 {
1173
- margin: 0;
1174
- font-size: 1.125rem;
1175
- font-weight: 600;
1176
- color: var(--header-color);
1177
- }
1178
-
1179
- .tableColumnCount {
1180
- font-size: 0.875rem;
1181
- color: var(--paragraph-color);
1182
- background-color: var(--bg-color);
1183
- padding: 4px 8px;
1184
- border-radius: var(--radius);
1185
- }
1186
- }
1187
- }
1188
-
1189
- // Help boxes
1190
- .helpBox {
1191
- display: flex;
1192
- gap: 16px;
1193
- padding: 16px;
1194
- background-color: rgba(var(--primary-color), 0.05);
1195
- border: 1px solid rgba(var(--primary-color), 0.2);
1196
- border-radius: var(--radius);
1197
- margin-bottom: 24px;
1198
-
1199
- svg {
1200
- color: var(--primary-color);
1201
- flex-shrink: 0;
1202
- }
1203
-
1204
- h4 {
1205
- margin: 0 0 8px 0;
1206
- font-size: 1rem;
1207
- font-weight: 600;
1208
- color: var(--header-color);
1209
- }
1210
-
1211
- p {
1212
- margin: 0;
1213
- font-size: 0.875rem;
1214
- color: var(--paragraph-color);
1215
- line-height: 1.5;
1216
- }
1217
- }
1218
-
1219
- // Skip options
1220
- .skipOption {
1221
- text-align: center;
1222
- margin-top: 32px;
1223
- padding-top: 32px;
1224
- border-top: 1px solid var(--border-color);
1225
-
1226
- p {
1227
- margin: 0 0 16px 0;
1228
- font-size: 0.875rem;
1229
- color: var(--paragraph-color);
1230
- }
1231
- }
1232
-
1233
- // Advanced Filters section (from original GenericReport)
1234
- .filtersSection {
1235
- // Filter operator container
1236
- .filterOperatorContainer {
1237
- margin-bottom: 24px;
1238
- padding: 20px;
1239
- background-color: var(--tertiary-color);
1240
- border: 1px solid var(--border-color);
1241
- border-radius: var(--radius);
1242
- display: flex;
1243
- justify-content: space-between;
1244
- align-items: center;
1245
- gap: 20px;
1246
- }
1247
-
1248
- .mainFilterOperator {
1249
- flex: 1;
1250
-
1251
- label {
1252
- display: block;
1253
- margin-bottom: 12px;
1254
- font-size: 1rem;
1255
- font-weight: 600;
1256
- color: var(--header-color);
1257
- }
1258
- }
1259
-
1260
- .operatorOptions {
1261
- display: flex;
1262
- gap: 16px;
1263
- }
1264
-
1265
- .operatorOption {
1266
- padding: 16px 20px;
1267
- border: 2px solid var(--border-color);
1268
- border-radius: var(--radius);
1269
- cursor: pointer;
1270
- transition: all 0.2s ease;
1271
- background-color: var(--tertiary-color);
1272
- text-align: center;
1273
- flex: 1;
1274
-
1275
- &:hover {
1276
- border-color: var(--primary-color);
1277
- background-color: rgba(var(--primary-rgb), 0.05);
1278
- }
1279
-
1280
- &.operatorOptionSelected {
1281
- border-color: var(--primary-color);
1282
- background-color: rgba(var(--primary-rgb), 0.1);
1283
-
1284
- .operatorName {
1285
- color: var(--primary-color);
1286
- }
1287
- }
1288
- }
1289
-
1290
- .operatorName {
1291
- font-size: 1rem;
1292
- font-weight: 600;
1293
- color: var(--header-color);
1294
- margin-bottom: 4px;
1295
- }
1296
-
1297
- .operatorDescription {
1298
- font-size: 0.875rem;
1299
- color: var(--paragraph-color);
1300
- line-height: 1.3;
1301
- }
1302
-
1303
- .filterActionButtons {
1304
- display: flex;
1305
- gap: 12px;
1306
- }
1307
-
1308
- // Filter groups
1309
- .filterGroup {
1310
- margin-bottom: 24px;
1311
- background-color: var(--tertiary-color);
1312
- border: 1px solid var(--border-color);
1313
- border-radius: var(--radius);
1314
- overflow: hidden;
1315
- }
1316
-
1317
- .filterGroupHeader {
1318
- background-color: var(--bg-color);
1319
- padding: 16px 20px;
1320
- border-bottom: 1px solid var(--border-color);
1321
- display: flex;
1322
- justify-content: space-between;
1323
- align-items: center;
1324
- gap: 20px;
1325
- }
1326
-
1327
- .filterGroupTitle {
1328
- display: flex;
1329
- align-items: center;
1330
- gap: 24px;
1331
- flex: 1;
1332
-
1333
- h4 {
1334
- margin: 0;
1335
- font-size: 1.125rem;
1336
- font-weight: 600;
1337
- color: var(--header-color);
1338
- }
1339
- }
1340
-
1341
- .filterGroupOperator {
1342
- display: flex;
1343
- align-items: center;
1344
- gap: 12px;
1345
-
1346
- label {
1347
- font-size: 0.875rem;
1348
- font-weight: 500;
1349
- color: var(--paragraph-color);
1350
- }
1351
- }
1352
-
1353
- .operatorButtonGroup {
1354
- display: flex;
1355
- border-radius: var(--radius);
1356
- overflow: hidden;
1357
- border: 1px solid var(--border-color);
1358
- }
1359
-
1360
- .operatorButton {
1361
- padding: 8px 16px;
1362
- background-color: var(--tertiary-color);
1363
- border: none;
1364
- font-size: 0.875rem;
1365
- font-weight: 500;
1366
- color: var(--paragraph-color);
1367
- cursor: pointer;
1368
- transition: all 0.2s ease;
1369
- border-right: 1px solid var(--border-color);
1370
-
1371
- &:last-child {
1372
- border-right: none;
1373
- }
1374
-
1375
- &:hover {
1376
- background-color: rgba(var(--primary-rgb), 0.05);
1377
- color: var(--primary-color);
1378
- }
1379
-
1380
- &.operatorButtonSelected {
1381
- background-color: var(--primary-color);
1382
- color: var(--tertiary-color);
1383
- }
1384
- }
1385
-
1386
- .filterGroupActions {
1387
- display: flex;
1388
- gap: 12px;
1389
- align-items: center;
1390
- }
1391
-
1392
- // Filter criteria
1393
- .filterCriteriaContainer {
1394
- padding: 20px;
1395
- }
1396
-
1397
- .filterCriterion {
1398
- background-color: var(--bg-color);
1399
- border: 1px solid var(--border-color);
1400
- border-radius: var(--radius);
1401
- margin-bottom: 16px;
1402
- overflow: hidden;
1403
-
1404
- &:last-child {
1405
- margin-bottom: 0;
1406
- }
1407
- }
1408
-
1409
- .filterCriterionHeader {
1410
- padding: 12px 16px;
1411
- background-color: var(--tertiary-color);
1412
- border-bottom: 1px solid var(--border-color);
1413
- display: flex;
1414
- justify-content: space-between;
1415
- align-items: center;
1416
-
1417
- h4 {
1418
- margin: 0;
1419
- font-size: 0.875rem;
1420
- font-weight: 500;
1421
- color: var(--header-color);
1422
- }
1423
- }
1424
-
1425
- .filterCriterionFields {
1426
- padding: 16px;
1427
- display: grid;
1428
- grid-template-columns: 2fr 1fr 2fr;
1429
- gap: 16px;
1430
- align-items: end;
1431
-
1432
- @media (max-width: 768px) {
1433
- grid-template-columns: 1fr;
1434
- gap: 12px;
1435
- }
1436
- }
1437
-
1438
- .filterField {
1439
- display: flex;
1440
- flex-direction: column;
1441
- gap: 4px;
1442
-
1443
- label {
1444
- font-size: 0.75rem;
1445
- font-weight: 500;
1446
- color: var(--paragraph-color);
1447
- text-transform: uppercase;
1448
- letter-spacing: 0.5px;
1449
- }
1450
- }
1451
-
1452
- .filterSelect {
1453
- padding: 8px 12px;
1454
- border: 1px solid var(--border-color);
1455
- border-radius: var(--radius);
1456
- background-color: var(--tertiary-color);
1457
- font-size: 0.875rem;
1458
- color: var(--header-color);
1459
- cursor: pointer;
1460
-
1461
- &:focus {
1462
- outline: none;
1463
- border-color: var(--primary-color);
1464
- box-shadow: 0 0 0 2px rgba(var(--primary-rgb), 0.1);
1465
- }
1466
- }
1467
-
1468
- .filterInput {
1469
- padding: 8px 12px;
1470
- border: 1px solid var(--border-color);
1471
- border-radius: var(--radius);
1472
- font-size: 0.875rem;
1473
- color: var(--header-color);
1474
-
1475
- &:focus {
1476
- outline: none;
1477
- border-color: var(--primary-color);
1478
- box-shadow: 0 0 0 2px rgba(var(--primary-rgb), 0.1);
1479
- }
1480
-
1481
- &::placeholder {
1482
- color: var(--paragraph-color);
1483
- }
1484
- }
1485
-
1486
- .removeJoinBtn {
1487
- background: none;
1488
- border: none;
1489
- color: var(--approval-color);
1490
- font-size: 1.25rem;
1491
- cursor: pointer;
1492
- padding: 4px 8px;
1493
- border-radius: var(--radius);
1494
- transition: all 0.2s ease;
1495
- flex-shrink: 0;
1496
-
1497
- &:hover {
1498
- background-color: rgba(var(--approval-color), 0.1);
1499
- }
1500
- }
1501
-
1502
- .emptyFilterGroup {
1503
- padding: 40px 20px;
1504
- text-align: center;
1505
- color: var(--paragraph-color);
1506
- background-color: var(--bg-color) er;
1507
-
1508
- p {
1509
- margin: 0;
1510
- font-style: italic;
1511
- }
1512
- }
1513
- }
1514
-
1515
- // Streamlined Report Section (for sorting and filtering)
1516
- .reportSection {
1517
- margin-bottom: 24px;
1518
- }
1519
-
1520
- .sectionHeader {
1521
- display: flex;
1522
- align-items: center;
1523
- justify-content: space-between;
1524
- padding: 16px 20px;
1525
- background-color: rgba(var(--primary-color), 0.05);
1526
- border: 1px solid rgba(var(--primary-color), 0.2);
1527
- border-radius: var(--radius);
1528
- margin-bottom: 16px;
1529
- transition: all 0.2s ease;
1530
-
1531
- &:hover {
1532
- background-color: rgba(var(--primary-color), 0.08);
1533
- cursor: pointer;
1534
- }
1535
-
1536
- h3 {
1537
- margin: 0;
1538
- font-size: 1.125rem;
1539
- font-weight: 600;
1540
- color: var(--header-color);
1541
- display: flex;
1542
- align-items: center;
1543
- gap: 8px;
1544
- cursor: pointer;
1545
- }
1546
- }
1547
-
1548
- .sectionHeaderActions {
1549
- display: flex;
1550
- align-items: center;
1551
- gap: 12px;
1552
- }
1553
-
1554
- .streamlinedToggle {
1555
- display: flex;
1556
- align-items: center;
1557
- gap: 8px;
1558
- font-size: 0.875rem;
1559
- color: var(--paragraph-color);
1560
- cursor: pointer;
1561
- transition: all 0.2s ease;
1562
-
1563
- &:hover {
1564
- color: var(--primary-color);
1565
- }
1566
-
1567
- svg {
1568
- transition: transform 0.2s ease;
1569
- }
1570
-
1571
- &.expanded svg {
1572
- transform: rotate(180deg);
1573
- }
1574
- }
1575
-
1576
- // Streamlined sorting styles
1577
- .sortingContainer {
1578
- display: flex;
1579
- flex-direction: column;
1580
- gap: 12px;
1581
- }
1582
-
1583
- .sortingItem {
1584
- background-color: var(--tertiary-color);
1585
- border: 1px solid var(--border-color);
1586
- border-radius: var(--radius);
1587
- padding: 16px 20px;
1588
- transition: all 0.2s ease;
1589
-
1590
- &:hover {
1591
- border-color: var(--primary-color);
1592
- box-shadow: var(--box-shadow-small);
1593
- }
1594
- }
1595
-
1596
- .sortingHeader {
1597
- display: flex;
1598
- align-items: center;
1599
- justify-content: space-between;
1600
- margin-bottom: 12px;
1601
-
1602
- h4 {
1603
- margin: 0;
1604
- font-size: 0.875rem;
1605
- font-weight: 600;
1606
- color: var(--header-color);
1607
- }
1608
- }
1609
-
1610
- .sortingControls {
1611
- display: grid;
1612
- grid-template-columns: 2fr 1fr 1fr auto;
1613
- gap: 16px;
1614
- align-items: end;
1615
-
1616
- @media (max-width: 768px) {
1617
- grid-template-columns: 1fr;
1618
- gap: 12px;
1619
- }
1620
- }
1621
-
1622
- .sortingField {
1623
- display: flex;
1624
- flex-direction: column;
1625
- gap: 6px;
1626
-
1627
- label {
1628
- font-size: 0.75rem;
1629
- font-weight: 500;
1630
- color: var(--paragraph-color);
1631
- text-transform: uppercase;
1632
- letter-spacing: 0.5px;
1633
- }
1634
- }
1635
-
1636
- .sortingSelect {
1637
- padding: 8px 12px;
1638
- border: 1px solid var(--border-color);
1639
- border-radius: var(--radius);
1640
- background-color: var(--bg-color);
1641
- font-size: 0.875rem;
1642
- color: var(--header-color);
1643
- cursor: pointer;
1644
- transition: all 0.2s ease;
1645
-
1646
- &:focus {
1647
- outline: none;
1648
- border-color: var(--primary-color);
1649
- box-shadow: 0 0 0 2px rgba(var(--primary-rgb), 0.1);
1650
- }
1651
-
1652
- &:hover {
1653
- border-color: var(--primary-color);
1654
- }
1655
- }
1656
-
1657
- .removeSortBtn {
1658
- background: none;
1659
- border: none;
1660
- color: var(--approval-color);
1661
- font-size: 1.25rem;
1662
- cursor: pointer;
1663
- padding: 8px;
1664
- border-radius: var(--radius);
1665
- transition: all 0.2s ease;
1666
- width: 36px;
1667
- height: 36px;
1668
- display: flex;
1669
- align-items: center;
1670
- justify-content: center;
1671
-
1672
- &:hover {
1673
- background-color: rgba(var(--approval-color), 0.1);
1674
- transform: scale(1.1);
1675
- }
1676
- }
1677
-
1678
- .joinGrid {
1679
- display: grid;
1680
- grid-template-columns: 1fr 1fr;
1681
- gap: var(--padding);
1682
- padding: var(--padding);
1683
-
1684
- @media (max-width: 768px) {
1685
- grid-template-columns: 1fr;
1686
- }
1687
- }
1688
-
1689
- .joinGridColumn {
1690
- display: flex;
1691
- flex-direction: column;
1692
- }
1693
-
1694
- .joinField {
1695
- display: flex;
1696
- flex-direction: column;
1697
- gap: 6px;
1698
-
1699
- label {
1700
- font-size: 0.75rem;
1701
- font-weight: 600;
1702
- color: var(--paragraph-color);
1703
- text-transform: uppercase;
1704
- letter-spacing: 0.5px;
1705
- }
1706
- }
1707
-
1708
- .selectControl {
1709
- padding: 8px 12px;
1710
- border: 1px solid var(--border-color);
1711
- border-radius: var(--radius);
1712
- background-color: var(--tertiary-color);
1713
- font-size: 0.875rem;
1714
- color: var(--header-color);
1715
- cursor: pointer;
1716
- transition: all 0.2s ease;
1717
-
1718
- &:focus {
1719
- outline: none;
1720
- border-color: var(--primary-color);
1721
- box-shadow: 0 0 0 2px rgba(var(--primary-rgb), 0.1);
1722
- }
1723
-
1724
- &:hover {
1725
- border-color: var(--primary-color);
1726
- }
1727
-
1728
- optgroup {
1729
- font-weight: 600;
1730
- color: var(--header-color);
1731
- }
1732
-
1733
- option {
1734
- padding: 4px 8px;
1735
- color: var(--paragraph-color);
1736
- }
1737
- }
1738
-
1739
- .removeJoinBtn {
1740
- background: none;
1741
- border: none;
1742
- color: var(--approval-color);
1743
- font-size: 1.25rem;
1744
- cursor: pointer;
1745
- padding: 4px 8px;
1746
- border-radius: var(--radius);
1747
- transition: all 0.2s ease;
1748
- flex-shrink: 0;
1749
-
1750
- &:hover {
1751
- background-color: rgba(var(--color-invalid), 0.1);
1752
- transform: scale(1.1);
1753
- }
1754
- }
1755
-
1756
- // Preview section
1757
- .previewSection {
1758
- .previewActions {
1759
- margin-bottom: 24px;
1760
- text-align: center;
1761
- }
1762
-
1763
- .resultSummary {
1764
- display: flex;
1765
- align-items: center;
1766
- justify-content: center;
1767
- gap: 8px;
1768
- padding: var(--padding);
1769
- background-color: rgba(var(--color-valid), 0.1);
1770
- border-radius: var(--radius);
1771
- margin-bottom: calc(var(--padding) * 1.5);
1772
- font-size: 1rem;
1773
- font-weight: 500;
1774
- color: rgba(var(--color-valid), 1);
1775
-
1776
- svg {
1777
- color: rgba(var(--color-valid), 1);
1778
- }
1779
- }
1780
-
1781
- .gridContainer {
1782
- margin-bottom: calc(var(--padding) * 2);
1783
- border: 1px solid var(--border-color);
1784
- border-radius: var(--radius);
1785
- overflow: hidden;
1786
- }
1787
-
1788
- .exportOptions {
1789
- text-align: center;
1790
-
1791
- h3 {
1792
- margin: 0 0 var(--padding) 0;
1793
- font-size: 1.125rem;
1794
- font-weight: 600;
1795
- color: var(--header-color);
1796
- }
1797
- }
1798
-
1799
- .exportButtons {
1800
- display: flex;
1801
- justify-content: center;
1802
- gap: 12px;
1803
- }
1804
- }
1805
-
1806
- // Loading state
1807
- .loading {
1808
- text-align: center;
1809
- padding: calc(var(--padding) * 2.5);
1810
- font-size: 1rem;
1811
- color: var(--paragraph-color);
1812
- }
1813
-
1814
- // Buttons
1815
- .btn {
1816
- display: inline-flex;
1817
- align-items: center;
1818
- justify-content: center;
1819
- gap: 8px;
1820
- padding: 12px calc(var(--padding) * 1.5);
1821
- border: none;
1822
- border-radius: var(--radius);
1823
- font-size: 0.875rem;
1824
- font-weight: 600;
1825
- cursor: pointer;
1826
- transition: all 0.2s ease;
1827
- text-decoration: none;
1828
- min-height: 44px;
1829
- position: relative;
1830
- overflow: hidden;
1831
-
1832
- &:disabled {
1833
- opacity: 0.5;
1834
- cursor: not-allowed;
1835
- transform: none !important;
1836
- }
1837
-
1838
- &:focus {
1839
- outline: 2px solid rgba(var(--primary-rgb), 0.3);
1840
- outline-offset: 2px;
1841
- }
1842
-
1843
- &:active:not(:disabled) {
1844
- transform: translateY(1px);
1845
- }
1846
-
1847
- svg {
1848
- width: 16px;
1849
- height: 16px;
1850
- flex-shrink: 0;
1851
- }
1852
- }
1853
-
1854
- .btnPrimary {
1855
- background-color: var(--primary-color);
1856
- color: var(--tertiary-color);
1857
- box-shadow: 0 2px 4px rgba(var(--primary-rgb), 0.2);
1858
-
1859
- &:hover:not(:disabled) {
1860
- background-color: var(--primary-color);
1861
- box-shadow: 0 4px 12px rgba(var(--primary-rgb), 0.3);
1862
- transform: translateY(-1px);
1863
- filter: brightness(0.9);
1864
- }
1865
-
1866
- &:focus {
1867
- outline-color: rgba(var(--primary-rgb), 0.5);
1868
- }
1869
- }
1870
-
1871
- .btnSecondary {
1872
- background-color: var(--secondary-color);
1873
- color: var(--tertiary-color);
1874
- box-shadow: 0 2px 4px rgba(var(--secondary-rgb), 0.2);
1875
-
1876
- &:hover:not(:disabled) {
1877
- background-color: var(--secondary-color);
1878
- box-shadow: 0 4px 12px rgba(var(--secondary-rgb), 0.3);
1879
- transform: translateY(-1px);
1880
- filter: brightness(0.9);
1881
- }
1882
-
1883
- &:focus {
1884
- outline-color: rgba(var(--secondary-rgb), 0.5);
1885
- }
1886
- }
1887
-
1888
- .btnCancel {
1889
- background-color: #dc2626;
1890
- color: var(--tertiary-color);
1891
- box-shadow: 0 2px 4px rgba(220, 38, 38, 0.2);
1892
-
1893
- &:hover:not(:disabled) {
1894
- background-color: #b91c1c;
1895
- box-shadow: 0 4px 12px rgba(220, 38, 38, 0.3);
1896
- transform: translateY(-1px);
1897
- }
1898
-
1899
- &:focus {
1900
- outline-color: rgba(220, 38, 38, 0.5);
1901
- }
1902
- }
1903
-
1904
- .btnPrevious {
1905
- background-color: #6b7280;
1906
- color: var(--tertiary-color);
1907
- box-shadow: 0 2px 4px rgba(107, 114, 128, 0.2);
1908
-
1909
- &:hover:not(:disabled) {
1910
- background-color: #4b5563;
1911
- box-shadow: 0 4px 12px rgba(107, 114, 128, 0.3);
1912
- transform: translateY(-1px);
1913
- }
1914
-
1915
- &:focus {
1916
- outline-color: rgba(107, 114, 128, 0.5);
1917
- }
1918
- }
1919
-
1920
- .btnStartAgain {
1921
- background-color: #ea580c;
1922
- color: var(--tertiary-color);
1923
- box-shadow: 0 2px 4px rgba(234, 88, 12, 0.2);
1924
-
1925
- &:hover:not(:disabled) {
1926
- background-color: #c2410c;
1927
- box-shadow: 0 4px 12px rgba(234, 88, 12, 0.3);
1928
- transform: translateY(-1px);
1929
- }
1930
-
1931
- &:focus {
1932
- outline-color: rgba(234, 88, 12, 0.5);
1933
- }
1934
- }
1935
-
1936
- .btnExportExcel {
1937
- background-color: #059669;
1938
- color: var(--tertiary-color);
1939
- box-shadow: 0 2px 4px rgba(5, 150, 105, 0.2);
1940
-
1941
- &:hover:not(:disabled) {
1942
- background-color: #047857;
1943
- box-shadow: 0 4px 12px rgba(5, 150, 105, 0.3);
1944
- transform: translateY(-1px);
1945
- }
1946
-
1947
- &:focus {
1948
- outline-color: rgba(5, 150, 105, 0.5);
1949
- }
1950
- }
1951
-
1952
- .btnExportCsv {
1953
- background-color: #2563eb;
1954
- color: var(--tertiary-color);
1955
- box-shadow: 0 2px 4px rgba(37, 99, 235, 0.2);
1956
-
1957
- &:hover:not(:disabled) {
1958
- background-color: #1d4ed8;
1959
- box-shadow: 0 4px 12px rgba(37, 99, 235, 0.3);
1960
- transform: translateY(-1px);
1961
- }
1962
-
1963
- &:focus {
1964
- outline-color: rgba(37, 99, 235, 0.5);
1965
- }
1966
- }
1967
-
1968
- .btnExportPdf {
1969
- background-color: #dc2626;
1970
- color: var(--tertiary-color);
1971
- box-shadow: 0 2px 4px rgba(220, 38, 38, 0.2);
1972
-
1973
- &:hover:not(:disabled) {
1974
- background-color: #b91c1c;
1975
- box-shadow: 0 4px 12px rgba(220, 38, 38, 0.3);
1976
- transform: translateY(-1px);
1977
- }
1978
-
1979
- &:focus {
1980
- outline-color: rgba(220, 38, 38, 0.5);
1981
- }
1982
- }
1983
-
1984
- .btnSuccess {
1985
- background-color: rgba(var(--color-valid), 1);
1986
- color: var(--tertiary-color);
1987
-
1988
- &:hover:not(:disabled) {
1989
- background-color: rgba(var(--color-valid), 1);
1990
- box-shadow: var(--box-shadow-small);
1991
- filter: brightness(0.9);
1992
- }
1993
- }
1994
-
1995
- // Advanced mode placeholder
1996
- .advancedMode {
1997
- background-color: var(--tertiary-color);
1998
- border-radius: var(--radius);
1999
- padding: 40px;
2000
- text-align: center;
2001
- box-shadow: var(--box-shadow-small);
2002
-
2003
- p {
2004
- font-size: 1rem;
2005
- color: var(--paragraph-color);
2006
- }
2007
- }
2008
-
2009
- // Relationships section
2010
- .relationshipsSection {
2011
- .currentJoins {
2012
- margin-bottom: 24px;
2013
-
2014
- h3 {
2015
- margin: 0 0 16px 0;
2016
- font-size: 1.125rem;
2017
- font-weight: 600;
2018
- color: var(--header-color);
2019
- }
2020
- }
2021
-
2022
- .joinItem {
2023
- display: flex;
2024
- align-items: center;
2025
- justify-content: space-between;
2026
- padding: 12px 16px;
2027
- background-color: rgba(var(--color-valid), 0.05);
2028
- border: 1px solid rgba(var(--color-valid), 0.2);
2029
- border-radius: var(--radius);
2030
- margin-bottom: 8px;
2031
-
2032
- .joinInfo {
2033
- flex: 1;
2034
-
2035
- .joinDescription {
2036
- display: block;
2037
- font-weight: 500;
2038
- color: var(--header-color);
2039
- margin-bottom: 4px;
2040
- }
2041
-
2042
- .joinDetails {
2043
- display: block;
2044
- font-size: 0.875rem;
2045
- color: var(--paragraph-color);
2046
- }
2047
- }
2048
-
2049
- .removeJoinBtn {
2050
- background: none;
2051
- border: none;
2052
- color: var(--approval-color);
2053
- font-size: 1.25rem;
2054
- cursor: pointer;
2055
- padding: 4px 8px;
2056
- border-radius: var(--radius);
2057
- transition: all 0.2s ease;
2058
-
2059
- &:hover {
2060
- background-color: rgba(var(--approval-color), 0.1);
2061
- }
2062
- }
2063
- }
2064
-
2065
- .detectedJoins {
2066
- margin-bottom: 24px;
2067
-
2068
- h3 {
2069
- margin: 0 0 8px 0;
2070
- font-size: 1.125rem;
2071
- font-weight: 600;
2072
- color: var(--header-color);
2073
- }
2074
-
2075
- p {
2076
- margin: 0 0 16px 0;
2077
- color: var(--paragraph-color);
2078
- }
2079
- }
2080
-
2081
- .detectionsGrid {
2082
- display: grid;
2083
- grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
2084
- gap: 12px;
2085
-
2086
- @media (max-width: 768px) {
2087
- grid-template-columns: 1fr;
2088
- }
2089
- }
2090
-
2091
- .detectionCard {
2092
- display: flex;
2093
- align-items: center;
2094
- justify-content: space-between;
2095
- padding: 12px;
2096
- background-color: var(--tertiary-color);
2097
- border: 2px solid var(--border-color);
2098
- border-radius: var(--radius);
2099
- margin-bottom: 0;
2100
- transition: all 0.2s ease;
2101
-
2102
- &:hover {
2103
- border-color: var(--primary-color);
2104
- box-shadow: var(--box-shadow-small);
2105
- }
2106
-
2107
- .detectionInfo {
2108
- flex: 1;
2109
-
2110
- .detectionTitle {
2111
- display: flex;
2112
- align-items: center;
2113
- gap: 8px;
2114
- margin-bottom: 8px;
2115
-
2116
- span {
2117
- font-weight: 500;
2118
- color: var(--header-color);
2119
- }
2120
-
2121
- .confidenceRating {
2122
- margin-left: auto;
2123
- font-size: 0.875rem;
2124
- }
2125
-
2126
- svg {
2127
- color: var(--primary-color);
2128
- }
2129
- }
2130
-
2131
- .detectionDescription {
2132
- margin: 0;
2133
- font-size: 0.875rem;
2134
- color: var(--paragraph-color);
2135
- }
2136
- }
2137
-
2138
- .connectIconBtn {
2139
- display: flex;
2140
- align-items: center;
2141
- justify-content: center;
2142
- width: 40px;
2143
- height: 40px;
2144
- border: 2px solid var(--primary-color);
2145
- border-radius: 50%;
2146
- background-color: transparent;
2147
- color: var(--primary-color);
2148
- cursor: pointer;
2149
- transition: all 0.2s ease;
2150
- flex-shrink: 0;
2151
-
2152
- &:hover:not(:disabled) {
2153
- background-color: var(--primary-color);
2154
- color: var(--tertiary-color);
2155
- transform: scale(1.05);
2156
- }
2157
-
2158
- &:disabled {
2159
- opacity: 0.5;
2160
- cursor: not-allowed;
2161
- transform: none !important;
2162
- }
2163
-
2164
- &.connected {
2165
- background-color: rgba(var(--color-valid), 1);
2166
- border-color: rgba(var(--color-valid), 1);
2167
- color: var(--tertiary-color);
2168
-
2169
- &:hover {
2170
- background-color: rgba(var(--color-valid), 0.8);
2171
- border-color: rgba(var(--color-valid), 0.8);
2172
- transform: none;
2173
- }
2174
- }
2175
-
2176
- svg {
2177
- flex-shrink: 0;
2178
- }
2179
- }
2180
- }
2181
-
2182
- .currentFilters {
2183
- margin-bottom: 24px;
2184
-
2185
- h3 {
2186
- margin: 0 0 16px 0;
2187
- font-size: 1.125rem;
2188
- font-weight: 600;
2189
- color: var(--header-color);
2190
- }
2191
- }
2192
-
2193
- // Manual join section styling
2194
- .manualJoinSection {
2195
- margin-bottom: 24px;
2196
- padding: 20px;
2197
- background-color: var(--bg-color) er;
2198
- border-radius: var(--radius);
2199
- border: 1px solid var(--border-color);
2200
-
2201
- h3 {
2202
- margin: 0 0 8px 0;
2203
- font-size: 1.125rem;
2204
- font-weight: 600;
2205
- color: var(--header-color);
2206
- }
2207
-
2208
- p {
2209
- margin: 0 0 16px 0;
2210
- color: var(--paragraph-color);
2211
- font-size: 0.875rem;
2212
- }
2213
- }
2214
-
2215
- .advancedWarning {
2216
- display: flex;
2217
- align-items: flex-start;
2218
- gap: 8px;
2219
- padding: 12px;
2220
- background-color: rgba(251, 146, 60, 0.1);
2221
- border: 1px solid rgba(251, 146, 60, 0.3);
2222
- border-radius: var(--radius);
2223
- margin-bottom: 16px;
2224
-
2225
- svg {
2226
- color: #f59e0b;
2227
- flex-shrink: 0;
2228
- margin-top: 2px;
2229
- }
2230
-
2231
- span {
2232
- font-size: 0.875rem;
2233
- color: var(--header-color);
2234
- line-height: 1.4;
2235
-
2236
- strong {
2237
- color: #f59e0b;
2238
- }
2239
- }
2240
- }
2241
-
2242
- .manualJoinForm {
2243
- background-color: var(--tertiary-color);
2244
- padding: 20px;
2245
- border-radius: var(--radius);
2246
- border: 1px solid var(--border-color);
2247
- margin-top: 16px;
2248
- }
2249
-
2250
- .manualJoinGrid {
2251
- display: grid;
2252
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
2253
- gap: 16px;
2254
- margin-bottom: 20px;
2255
- }
2256
-
2257
- .manualJoinField {
2258
- display: flex;
2259
- flex-direction: column;
2260
- gap: 6px;
2261
-
2262
- label {
2263
- font-size: 0.875rem;
2264
- font-weight: 500;
2265
- color: var(--paragraph-color);
2266
- }
2267
-
2268
- select {
2269
- padding: 8px 12px;
2270
- border: 1px solid var(--border-color);
2271
- border-radius: var(--radius);
2272
- background-color: var(--tertiary-color);
2273
- font-size: 0.875rem;
2274
- color: var(--header-color);
2275
-
2276
- &:focus {
2277
- outline: none;
2278
- border-color: var(--primary-color);
2279
- box-shadow: 0 0 0 2px rgba(var(--primary-color), 0.1);
2280
- }
2281
-
2282
- &:disabled {
2283
- background-color: var(--bg-color);
2284
- color: var(--paragraph-color);
2285
- cursor: not-allowed;
2286
- }
2287
- }
2288
- }
2289
-
2290
- .manualJoinActions {
2291
- display: flex;
2292
- gap: 12px;
2293
- justify-content: flex-end;
2294
- padding-top: 16px;
2295
- border-top: 1px solid var(--border-color);
2296
- }
2297
-
2298
- .filterItem {
2299
- display: flex;
2300
- align-items: center;
2301
- justify-content: space-between;
2302
- padding: 12px 16px;
2303
- background-color: rgba(var(--primary-rgb), 0.05);
2304
- border: 1px solid rgba(var(--primary-rgb), 0.2);
2305
- border-radius: var(--radius);
2306
- margin-bottom: 8px;
2307
-
2308
- .filterInfo {
2309
- flex: 1;
2310
-
2311
- .filterDescription {
2312
- font-weight: 500;
2313
- color: var(--header-color);
2314
- }
2315
- }
2316
-
2317
- .removeFilterBtn {
2318
- background: none;
2319
- border: none;
2320
- color: var(--approval-color);
2321
- font-size: 1.25rem;
2322
- cursor: pointer;
2323
- padding: 4px 8px;
2324
- border-radius: var(--radius);
2325
- transition: all 0.2s ease;
2326
-
2327
- &:hover {
2328
- background-color: rgba(var(--approval-color), 0.1);
2329
- }
2330
- }
2331
- }
2332
-
2333
- .reportActions {
2334
- display: grid;
2335
- grid-template-columns: 1fr 1fr;
2336
- gap: 24px;
2337
- margin-top: 32px;
2338
-
2339
- .saveSection,
2340
- .exportOptions {
2341
- background-color: var(--bg-color);
2342
- border-radius: var(--radius);
2343
- padding: 20px;
2344
- border: 1px solid var(--border-color);
2345
-
2346
- h3 {
2347
- margin: 0 0 8px 0;
2348
- font-size: 1.125rem;
2349
- font-weight: 600;
2350
- color: var(--header-color);
2351
- }
2352
-
2353
- p {
2354
- margin: 0 0 16px 0;
2355
- font-size: 0.875rem;
2356
- color: var(--paragraph-color);
2357
- }
2358
- }
2359
-
2360
- .saveButtons {
2361
- display: flex;
2362
- gap: 12px;
2363
- flex-wrap: wrap;
2364
- }
2365
- }
2366
- }
2367
-
2368
- // Smart Suggestions Styling
2369
- .smartSuggestionsContainer {
2370
- background-color: var(--bg-color);
2371
- border-radius: var(--radius);
2372
- padding: 20px;
2373
- border: 1px solid var(--border-color);
2374
- margin-bottom: 16px;
2375
- }
2376
-
2377
- .suggestionsIntro {
2378
- margin: 0 0 16px 0;
2379
- font-size: 0.875rem;
2380
- color: var(--paragraph-color);
2381
- line-height: 1.4;
2382
- }
2383
-
2384
- .suggestionsCount {
2385
- font-size: 0.75rem;
2386
- color: var(--paragraph-color);
2387
- background-color: var(--bg-color);
2388
- padding: 4px 8px;
2389
- border-radius: var(--radius);
2390
- border: 1px solid var(--border-color);
2391
- }
2392
-
2393
- .suggestionsGrid {
2394
- display: grid;
2395
- grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
2396
- gap: 16px;
2397
-
2398
- @media (max-width: 768px) {
2399
- grid-template-columns: 1fr;
2400
- }
2401
- }
2402
-
2403
- .suggestionCard {
2404
- background-color: var(--tertiary-color);
2405
- border: 2px solid var(--border-color);
2406
- border-radius: var(--radius);
2407
- padding: 16px;
2408
- transition: all 0.2s ease;
2409
-
2410
- &:hover {
2411
- border-color: var(--primary-color);
2412
- box-shadow: var(--box-shadow-small);
2413
- transform: translateY(-1px);
2414
- }
2415
- }
2416
-
2417
- .suggestionHeader {
2418
- display: flex;
2419
- align-items: center;
2420
- justify-content: space-between;
2421
- margin-bottom: 8px;
2422
- }
2423
-
2424
- .suggestionTitle {
2425
- font-size: 0.875rem;
2426
- font-weight: 600;
2427
- color: var(--header-color);
2428
- }
2429
-
2430
- .suggestionType {
2431
- font-size: 0.75rem;
2432
- padding: 2px 8px;
2433
- border-radius: var(--radius);
2434
- background-color: var(--primary-color);
2435
- color: var(--tertiary-color);
2436
- text-transform: uppercase;
2437
- letter-spacing: 0.5px;
2438
- font-weight: 500;
2439
- }
2440
-
2441
- .suggestionDescription {
2442
- margin: 0 0 12px 0;
2443
- font-size: 0.8rem;
2444
- color: var(--paragraph-color);
2445
- line-height: 1.3;
2446
- }
2447
-
2448
- .suggestionActions {
2449
- display: flex;
2450
- align-items: center;
2451
- justify-content: space-between;
2452
- gap: 12px;
2453
-
2454
- .btn {
2455
- padding: 6px 12px;
2456
- font-size: 0.75rem;
2457
- min-height: 32px;
2458
- flex-shrink: 0;
2459
-
2460
- &:disabled {
2461
- background-color: rgba(var(--color-valid), 1);
2462
- color: var(--tertiary-color);
2463
- cursor: default;
2464
- transform: none !important;
2465
- }
2466
- }
2467
- }
2468
-
2469
- .suggestionReasoning {
2470
- font-size: 0.7rem;
2471
- color: var(--paragraph-color);
2472
- font-style: italic;
2473
- flex: 1;
2474
- text-align: right;
2475
- }
2476
-
2477
- // SweetAlert button sizing fix
2478
- :global(.swal-button-fixed-width) {
2479
- min-width: 120px !important;
2480
- white-space: nowrap !important;
2481
- }
2482
-
2483
- // Responsive design
2484
- @media (max-width: 768px) {
2485
- .header {
2486
- flex-direction: column;
2487
- gap: 16px;
2488
- align-items: stretch;
2489
- }
2490
-
2491
- .headerLeft,
2492
- .headerRight {
2493
- justify-content: center;
2494
- }
2495
-
2496
- .wizardProgress {
2497
- overflow-x: auto;
2498
- padding-bottom: 20px;
2499
-
2500
- &::before {
2501
- display: none;
2502
- }
2503
- }
2504
-
2505
- .wizardStep {
2506
- min-width: 120px;
2507
-
2508
- .stepDescription {
2509
- display: none;
2510
- }
2511
- }
2512
-
2513
- .tableGrid,
2514
- .columnList {
2515
- grid-template-columns: 1fr;
2516
- }
2517
-
2518
- .exportButtons {
2519
- flex-direction: column;
2520
- align-items: center;
2521
- }
2522
- }
2523
-
2524
- // Human-friendly JSON styling (from original GenericReport)
2525
- .humanJsonContainer {
2526
- display: flex;
2527
- flex-direction: column;
2528
- gap: 3px;
2529
- padding: 10px 12px;
2530
- background-color: var(--bg-color);
2531
- border: 1px solid var(--border-color);
2532
- border-radius: var(--radius);
2533
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
2534
- font-size: 0.9rem;
2535
- margin: 2px 0;
2536
- }
2537
-
2538
- .humanJsonRow {
2539
- display: flex;
2540
- align-items: center;
2541
- padding: 5px 2px;
2542
- line-height: 1.4;
2543
- border-radius: 4px;
2544
- transition: background-color 0.15s ease;
2545
- min-height: 28px;
2546
- word-break: break-word;
2547
- overflow-wrap: break-word;
2548
-
2549
- &:hover {
2550
- background-color: rgba(0, 0, 0, 0.03);
2551
- }
2552
- }
2553
-
2554
- .humanJsonKey {
2555
- font-weight: 600;
2556
- color: var(--primary-color);
2557
- margin-right: 12px;
2558
- min-width: 120px;
2559
- flex: 0 0 auto;
2560
- padding-left: 3px;
2561
- }
2562
-
2563
- .humanJsonValue {
2564
- flex: 1;
2565
- word-break: break-word;
2566
- padding-right: 5px;
2567
- color: var(--header-color);
2568
- font-weight: 500;
2569
- }
2570
-
2571
- // Pagination info styling
2572
- .paginationInfo {
2573
- display: flex;
2574
- justify-content: center;
2575
- align-items: center;
2576
- padding: 12px 16px;
2577
- background-color: var(--bg-color);
2578
- border-top: 1px solid var(--border-color);
2579
- font-size: 0.875rem;
2580
- color: var(--paragraph-color);
2581
- font-weight: 500;
2582
- }
2583
-
2584
- // Grid container enhancements for JSON content
2585
- .gridContainer {
2586
- // Ensure the grid can handle dynamic row heights
2587
- :global(.InovuaReactDataGrid) {
2588
- // Allow rows to expand for JSON content
2589
- .InovuaReactDataGrid__row {
2590
- min-height: 40px;
2591
- // Allow rows to expand to fit content
2592
- height: auto !important;
2593
-
2594
- // JSON cell styling
2595
- .InovuaReactDataGrid__cell {
2596
- // Ensure proper vertical alignment for JSON content
2597
- display: flex;
2598
- align-items: flex-start;
2599
- padding: 8px 12px;
2600
-
2601
- // Handle text overflow for JSON content
2602
- overflow: visible;
2603
- // Allow cells to expand vertically
2604
- height: auto !important;
2605
-
2606
- // JSON content wrapper
2607
- > div {
2608
- width: 100%;
2609
- // Remove height restrictions for JSON content
2610
- height: auto;
2611
-
2612
- // JSON container should expand fully
2613
- .humanJsonContainer {
2614
- // Remove any height restrictions
2615
- max-height: none;
2616
- overflow: visible;
2617
- }
2618
- }
2619
- }
2620
- }
2621
-
2622
- // Ensure header alignment
2623
- .InovuaReactDataGrid__header {
2624
- .InovuaReactDataGrid__header-cell {
2625
- display: flex;
2626
- align-items: center;
2627
- padding: 8px 12px;
2628
- }
2629
- }
2630
- }
2631
- }