@visns-studio/visns-components 5.10.7 → 5.10.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,1852 +1,2535 @@
1
- @use 'sass:color';
1
+ // Use project root CSS variables instead of local SCSS variables
2
+ // This allows the component to adapt to different project themes
2
3
 
3
- .grid {
4
- width: 100%;
5
- display: flex;
6
- align-items: flex-start;
7
- flex-wrap: nowrap;
8
- height: auto;
9
- gap: 1rem;
10
- }
11
-
12
- .grid__row {
13
- width: 100%;
14
- display: flex;
15
- align-items: flex-start;
16
- flex-wrap: nowrap;
17
- height: auto;
18
- gap: 1rem;
19
- }
20
-
21
- .grid__full {
22
- width: 100%;
23
- background: white;
24
- border-radius: 8px;
25
- box-sizing: border-box;
26
- overflow: visible;
27
- position: relative;
28
- padding: 0;
29
- margin: 8px 0 16px 0;
30
- }
31
-
32
- .grid__half {
33
- width: 50%;
34
- background: white;
35
- box-sizing: border-box;
36
- overflow: visible;
37
- position: relative;
38
- padding: 20px;
39
- margin: 8px 0;
40
- }
41
-
42
- .grid__subrow {
4
+ // Main container
5
+ .reportBuilder {
43
6
  width: 100%;
44
- display: flex;
45
- flex-wrap: wrap;
46
- height: auto;
47
- gap: 0;
48
- border-radius: 8px;
49
- overflow: hidden;
50
- }
51
-
52
- .grid__subnav {
53
- flex: 0 1 30%;
54
- background: white;
55
- box-sizing: border-box;
56
- padding: 20px;
57
- margin: 0;
58
- height: auto;
59
- border-right: 1px solid var(--border-color, #e5e7eb);
60
- max-height: calc(100vh - 150px);
61
- overflow-y: auto;
62
- }
63
-
64
- .grid__subcontent {
65
- flex: 0 1 70%;
66
- background: white;
67
- box-sizing: border-box;
68
- padding: 24px;
69
- margin: 0;
70
- height: auto;
71
- position: relative;
72
- max-height: calc(100vh - 150px);
73
- overflow-y: auto;
74
- }
75
-
76
- .grid__subcontent h2 {
77
- color: var(--heading-color, #1f2937);
78
- font-size: 1.35em;
79
- padding: 0;
80
- margin: 0 0 20px 0;
7
+ min-height: 100vh;
8
+ background-color: var(--bg-color);
81
9
  }
82
10
 
83
- .crmtitle {
84
- padding: 24px;
85
- margin-bottom: 0;
86
- border-bottom: 1px solid var(--border-color, #e5e7eb);
87
- }
88
-
89
- .titleContainer {
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);
90
16
  display: flex;
91
17
  justify-content: space-between;
92
18
  align-items: center;
93
- margin-bottom: 8px;
94
- }
95
-
96
- .crmtitle h1 {
97
- color: var(--heading-color, #1f2937);
98
- font-size: 1.5em;
99
- font-weight: 600;
100
- padding: 0;
101
- margin: 0;
19
+ box-shadow: var(--box-shadow-small);
20
+ position: sticky;
21
+ top: 0;
22
+ z-index: 100;
102
23
  }
103
24
 
104
- .helpButtons {
25
+ .headerLeft {
105
26
  display: flex;
106
- gap: 8px;
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
+ }
107
36
  }
108
37
 
109
38
  .helpButton {
110
39
  display: flex;
111
40
  align-items: center;
112
41
  gap: 6px;
113
- background-color: #f3f4f6;
114
- border: 1px solid var(--border-color, #e5e7eb);
115
- border-radius: 4px;
116
- padding: 6px 10px;
117
- font-size: 0.8em;
118
- color: var(--paragraph-color, #4b5563);
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);
119
48
  cursor: pointer;
120
49
  transition: all 0.2s ease;
121
50
 
122
51
  &:hover {
123
- background-color: #e5e7eb;
124
- color: var(--heading-color, #1f2937);
52
+ background-color: var(--bg-color);
53
+ color: var(--header-color);
54
+ box-shadow: var(--box-shadow-small);
55
+ filter: brightness(0.95);
125
56
  }
126
57
 
127
58
  svg {
128
- color: var(--primary-color, #2563eb);
59
+ color: var(--primary-color);
129
60
  }
130
61
  }
131
62
 
132
- .titleInfo {
63
+ .headerRight {
133
64
  display: flex;
134
- flex-wrap: wrap;
135
- gap: 0.5rem;
136
- }
137
-
138
- .titleInfo span {
139
- font-size: 0.9em;
140
- color: var(--muted-color, #6b7280);
141
- }
142
-
143
- .reportBuilder {
144
- padding: 0;
145
- }
146
-
147
- .reportSection {
148
- padding-bottom: 0;
149
- margin-bottom: 16px;
150
- }
151
-
152
- .reportSection h3 {
153
- color: var(--heading-color, #1f2937);
154
- font-size: 1.1em;
155
- font-weight: 600;
156
- margin-bottom: 12px;
157
- margin-top: 0;
65
+ align-items: center;
66
+ gap: 16px;
158
67
  }
159
68
 
160
- .reportSection .sectionHeader {
69
+ // Mode toggle
70
+ .modeToggle {
161
71
  display: flex;
162
- justify-content: space-between;
163
72
  align-items: center;
164
- margin-bottom: 0;
165
- padding: 8px 12px;
166
- background-color: #f9fafb;
167
- border: 1px solid var(--border-color, #e5e7eb);
168
- border-radius: 0;
169
-
170
- h3 {
171
- margin: 0;
172
- font-size: 1em;
173
- font-weight: 600;
174
- }
73
+ gap: 12px;
74
+ padding: 8px;
75
+ background-color: var(--bg-color);
76
+ border-radius: var(--radius);
175
77
 
176
- .sectionHeaderActions {
78
+ span {
177
79
  display: flex;
178
80
  align-items: center;
179
- gap: 12px;
81
+ gap: 6px;
82
+ font-size: 0.875rem;
83
+ color: var(--paragraph-color);
84
+ transition: color 0.2s ease;
180
85
 
181
- .btn {
182
- margin: 0;
86
+ &.active {
87
+ color: var(--header-color);
88
+ font-weight: 500;
183
89
  }
184
90
  }
91
+ }
185
92
 
186
- .helpButton {
187
- background: none;
188
- border: none;
189
- color: var(--muted-color, #6b7280);
190
- cursor: pointer;
191
- font-size: 0.9rem;
192
- padding: 2px;
193
- border-radius: 4px;
194
- display: flex;
195
- align-items: center;
196
- justify-content: center;
197
- transition: all 0.2s ease;
198
- width: 24px;
199
- height: 24px;
200
-
201
- &:hover {
202
- color: var(--primary-color, #2563eb);
203
- background-color: rgba(37, 99, 235, 0.1);
204
- }
205
- }
93
+ .switch {
94
+ position: relative;
95
+ display: inline-block;
96
+ width: 44px;
97
+ height: 24px;
206
98
 
207
- .toggleBtn {
208
- background: none;
209
- border: none;
210
- color: var(--primary-color, #2563eb);
211
- cursor: pointer;
212
- font-size: 0.9rem;
213
- padding: 2px 6px;
214
- border-radius: 4px;
215
- display: flex;
216
- align-items: center;
217
- justify-content: center;
218
- transition: all 0.2s ease;
219
- width: 24px;
220
- height: 24px;
99
+ input {
100
+ opacity: 0;
101
+ width: 0;
102
+ height: 0;
221
103
 
222
- &:hover {
223
- background-color: rgba(37, 99, 235, 0.1);
224
- }
104
+ &:checked + .slider {
105
+ background-color: var(--primary-color);
225
106
 
226
- &.toggleBtnActive {
227
- background-color: rgba(37, 99, 235, 0.1);
107
+ &:before {
108
+ transform: translateX(20px);
109
+ }
228
110
  }
229
111
  }
230
112
  }
231
113
 
232
- .sectionTitle {
233
- font-size: 1em;
234
- font-weight: 600;
235
- color: var(--heading-color, #1f2937);
236
- margin-bottom: 16px;
237
- padding-bottom: 8px;
238
- border-bottom: 1px solid var(--border-color, #e5e7eb);
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
+ }
239
137
  }
240
138
 
241
- .tableList {
242
- display: grid;
243
- grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
244
- gap: 6px;
245
- margin-bottom: 16px;
246
- max-height: 250px;
247
- overflow-y: auto;
248
- padding-right: 5px;
139
+ // Content
140
+ .content {
141
+ padding: 24px;
249
142
  }
250
143
 
251
- .tableItem {
252
- background: #f9fafb;
253
- border-radius: 4px;
254
- padding: 6px 8px;
255
- cursor: pointer;
256
- transition: all 0.2s ease;
257
- font-size: 0.85em;
258
- color: var(--paragraph-color, #4b5563);
259
- display: flex;
260
- align-items: center;
261
- justify-content: center;
262
- text-align: center;
263
- word-break: break-word;
264
- height: 100%;
265
- position: relative;
144
+ // Template Selection
145
+ .templateSelection {
146
+ max-width: 1200px;
147
+ margin: 0 auto;
266
148
  }
267
149
 
268
- // Custom tooltip implementation
269
- .tableTooltip {
270
- position: fixed;
271
- background-color: rgba(0, 0, 0, 0.85);
272
- color: white;
273
- padding: 10px 14px;
274
- border-radius: 6px;
275
- font-size: 0.9em;
276
- line-height: 1.4;
277
- white-space: normal;
278
- width: 300px;
279
- max-width: 80vw;
280
- z-index: 9999;
281
- text-align: left;
282
- box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
283
- pointer-events: none;
284
- opacity: 0;
285
- visibility: hidden;
286
- transition: opacity 0.2s ease, visibility 0.2s ease;
150
+ .templateHeader {
151
+ text-align: center;
152
+ margin-bottom: 40px;
287
153
 
288
- &.visible {
289
- opacity: 1;
290
- visibility: visible;
154
+ h2 {
155
+ font-size: 2rem;
156
+ font-weight: 700;
157
+ color: var(--header-color);
158
+ margin-bottom: 12px;
291
159
  }
292
- }
293
-
294
- .tableItem:hover {
295
- background: #f3f4f6;
296
- }
297
160
 
298
- .tableItemSelected {
299
- background: var(--primary-color, #2563eb);
300
- color: white;
301
- font-weight: 500;
161
+ p {
162
+ font-size: 1.125rem;
163
+ color: var(--paragraph-color);
164
+ }
302
165
  }
303
166
 
304
- .columnList {
167
+ .templateCategories {
305
168
  display: grid;
306
- grid-template-columns: repeat(2, 1fr);
307
- gap: 8px;
308
- margin-bottom: 16px;
309
- max-height: 400px;
310
- overflow-y: auto;
311
- padding-right: 5px;
312
- }
313
-
314
- .joinedTableSection {
315
- margin-bottom: 16px;
169
+ gap: 32px;
316
170
  }
317
171
 
318
- .joinedTableHeader {
319
- font-size: 0.9em;
320
- font-weight: 500;
321
- color: var(--primary-color, #2563eb);
322
- margin-bottom: 8px;
323
- padding-left: 4px;
324
- border-left: 3px solid var(--primary-color, #2563eb);
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);
325
178
  }
326
179
 
327
- .columnItem {
180
+ .categoryHeader {
328
181
  display: flex;
329
182
  align-items: center;
330
- gap: 6px;
331
- background: #f9fafb;
332
- border-radius: 4px;
333
- padding: 6px 8px;
334
- font-size: 0.85em;
335
- color: var(--paragraph-color, #4b5563);
336
- cursor: pointer;
337
- transition: all 0.2s ease;
338
- height: 36px;
339
- overflow: hidden;
340
- white-space: nowrap;
341
-
342
- input[type='checkbox'] {
343
- flex-shrink: 0;
344
- }
183
+ gap: 12px;
184
+ margin-bottom: 20px;
345
185
 
346
- span {
347
- flex: 1;
348
- overflow: hidden;
349
- text-overflow: ellipsis;
350
- white-space: nowrap;
186
+ svg {
187
+ color: var(--primary-color);
351
188
  }
352
189
 
353
- small {
354
- color: #6b7280;
355
- font-size: 0.8em;
356
- flex-shrink: 0;
190
+ h3 {
191
+ margin: 0;
192
+ font-size: 1.25rem;
193
+ font-weight: 600;
194
+ color: var(--header-color);
357
195
  }
358
196
  }
359
197
 
360
- .columnItem:hover {
361
- background: #f3f4f6;
362
- }
363
-
364
- .columnItem input[type='checkbox'] {
365
- width: 14px;
366
- height: 14px;
367
- accent-color: var(--primary-color, #2563eb);
368
- margin: 0;
369
- padding: 0;
370
- }
371
-
372
- .addManualJoinContainer {
373
- margin: 12px 0 8px;
198
+ .templateGrid {
199
+ display: grid;
200
+ grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
201
+ gap: 16px;
374
202
  }
375
203
 
376
- .joinTablesContainer {
377
- background-color: transparent;
378
- padding: 0;
379
- margin-bottom: 0;
380
- margin-top: 0;
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;
381
212
 
382
- // When inside a filterGroup, add a border
383
- .filterGroup & {
384
- border: 1px solid var(--border-color, #e5e7eb);
385
- border-top: none;
386
- border-radius: 0;
387
- padding: 20px;
388
- background-color: #f9fafb;
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);
389
218
  }
390
- }
391
-
392
- // Filter group styles
393
- .filterGroup {
394
- margin-bottom: 16px;
395
- border: none;
396
- border-radius: 0;
397
- overflow: hidden;
398
- margin-top: 0;
399
- }
400
-
401
- .filterGroupHeader {
402
- display: flex;
403
- justify-content: space-between;
404
- align-items: center;
405
- padding: 12px 16px;
406
- background-color: #f3f4f6;
407
- border: 1px solid var(--border-color, #e5e7eb);
408
- border-radius: 0;
409
- }
410
219
 
411
- .filterGroupTitle {
412
- display: flex;
413
- align-items: center;
414
- gap: 16px;
220
+ svg {
221
+ color: var(--primary-color);
222
+ margin-bottom: 12px;
223
+ }
415
224
 
416
225
  h4 {
417
- margin: 0;
418
- font-size: 0.95em;
226
+ margin: 0 0 8px 0;
227
+ font-size: 1rem;
419
228
  font-weight: 600;
420
- color: var(--heading-color, #1f2937);
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;
421
237
  }
422
238
  }
423
239
 
424
- .filterGroupOperator {
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;
425
252
  display: flex;
253
+ flex-direction: column;
426
254
  align-items: center;
427
- gap: 8px;
255
+ justify-content: center;
256
+ min-height: 200px;
428
257
 
429
- label {
430
- font-size: 0.85em;
431
- color: var(--paragraph-color, #4b5563);
258
+ &:hover {
259
+ box-shadow: var(--box-shadow-large);
260
+ transform: translateY(-2px);
432
261
  }
433
- }
434
-
435
- .filterGroupActions {
436
- display: flex;
437
- gap: 8px;
438
- }
439
262
 
440
- .filterOperatorContainer {
441
- display: flex;
442
- justify-content: space-between;
443
- align-items: center;
444
- margin-bottom: 16px;
445
- padding: 12px 16px;
446
- background-color: #f9fafb;
447
- border: 1px solid var(--border-color, #e5e7eb);
448
- border-top: none;
449
- }
263
+ svg {
264
+ color: var(--tertiary-color);
265
+ margin-bottom: 16px;
266
+ }
450
267
 
451
- .mainFilterOperator {
452
- display: flex;
453
- align-items: center;
454
- gap: 12px;
268
+ h4 {
269
+ margin: 0 0 8px 0;
270
+ font-size: 1.25rem;
271
+ font-weight: 700;
272
+ }
455
273
 
456
- label {
457
- font-size: 0.9em;
458
- font-weight: 500;
459
- color: var(--heading-color, #1f2937);
274
+ p {
275
+ margin: 0;
276
+ font-size: 0.875rem;
277
+ opacity: 0.9;
460
278
  }
461
279
  }
462
280
 
463
- .operatorSelect {
464
- padding: 6px 10px;
465
- border: 1px solid var(--border-color, #d1d5db);
466
- border-radius: 4px;
467
- background-color: white;
468
- font-size: 0.85em;
469
- color: var(--paragraph-color, #4b5563);
470
- min-width: 200px;
281
+ // Reports Dashboard
282
+ .reportsDashboard {
283
+ max-width: 800px;
284
+ margin: 0 auto;
471
285
  }
472
286
 
473
- .operatorOptions {
474
- display: flex;
475
- gap: 12px;
476
- margin-left: 8px;
287
+ .newReportSection {
288
+ margin-bottom: 32px;
477
289
  }
478
290
 
479
- .operatorOption {
480
- border: 1px solid var(--border-color, #d1d5db);
481
- border-radius: 6px;
482
- padding: 8px 16px;
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;
483
301
  cursor: pointer;
484
302
  transition: all 0.2s ease;
485
- background-color: #f9fafb;
486
- min-width: 140px;
303
+ border: none;
487
304
 
488
305
  &:hover {
489
- background-color: #f3f4f6;
490
- border-color: #c1c5cb;
306
+ transform: translateY(-2px);
307
+ box-shadow: var(--box-shadow-large);
491
308
  }
492
- }
493
309
 
494
- .operatorOptionSelected {
495
- background-color: var(--primary-color, #3b82f6);
496
- color: white;
497
- border-color: var(--primary-color, #3b82f6);
310
+ svg {
311
+ margin-bottom: 16px;
312
+ }
498
313
 
499
- &:hover {
500
- background-color: color.adjust(#3b82f6, $lightness: -5%);
501
- border-color: color.adjust(#3b82f6, $lightness: -5%);
314
+ h4 {
315
+ margin: 0 0 8px 0;
316
+ font-size: 1.25rem;
317
+ font-weight: 700;
318
+ color: var(--tertiary-color);
502
319
  }
503
320
 
504
- .operatorDescription {
505
- color: rgba(255, 255, 255, 0.9);
321
+ p {
322
+ margin: 0;
323
+ opacity: 0.9;
324
+ font-size: 0.875rem;
325
+ color: var(--tertiary-color);
506
326
  }
507
327
  }
508
328
 
509
- .operatorName {
510
- font-weight: 600;
511
- font-size: 0.9em;
512
- margin-bottom: 4px;
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
+ }
513
336
  }
514
337
 
515
- .operatorDescription {
516
- font-size: 0.75em;
517
- color: var(--muted-color, #6b7280);
338
+ .reportsGrid {
339
+ display: grid;
340
+ grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
341
+ gap: 16px;
518
342
  }
519
343
 
520
- .operatorButtonGroup {
521
- display: flex;
522
- border: 1px solid var(--border-color, #d1d5db);
523
- border-radius: 4px;
344
+ .reportCard {
345
+ background-color: var(--tertiary-color);
346
+ border: 2px solid var(--border-color);
347
+ border-radius: var(--radius);
524
348
  overflow: hidden;
525
- }
526
-
527
- .operatorButton {
528
- padding: 4px 12px;
529
- background-color: #f9fafb;
530
- border: none;
531
- font-size: 0.8em;
532
- cursor: pointer;
533
349
  transition: all 0.2s ease;
534
-
535
- &:first-child {
536
- border-right: 1px solid var(--border-color, #d1d5db);
537
- }
350
+ position: relative;
538
351
 
539
352
  &:hover {
540
- background-color: #f3f4f6;
353
+ border-color: var(--primary-color);
354
+ box-shadow: var(--box-shadow-small);
355
+ transform: translateY(-2px);
541
356
  }
542
- }
543
357
 
544
- .operatorButtonSelected {
545
- background-color: var(--primary-color, #3b82f6);
546
- color: white;
547
-
548
- &:hover {
549
- background-color: color.adjust(#3b82f6, $lightness: -5%);
358
+ .reportCardContent {
359
+ padding: 16px;
360
+ cursor: pointer;
361
+ min-height: 120px;
362
+ display: flex;
363
+ flex-direction: column;
364
+ justify-content: space-between;
550
365
  }
551
- }
552
-
553
- .filterActionButtons {
554
- display: flex;
555
- gap: 8px;
556
- }
557
366
 
558
- .emptyFilterGroup {
559
- padding: 16px;
560
- text-align: center;
561
- color: var(--muted-color, #6b7280);
562
- font-style: italic;
563
- font-size: 0.9em;
564
- background-color: #f9fafb;
565
- border: 1px solid var(--border-color, #e5e7eb);
566
- border-top: none;
567
- border-radius: 0;
568
- }
367
+ .reportHeader {
368
+ margin-bottom: 12px;
569
369
 
570
- .joinSection {
571
- margin-top: 0;
572
- padding: 16px;
573
- border: 1px solid var(--border-color, #e5e7eb);
574
- border-radius: 0;
575
- background-color: white;
576
- margin-bottom: 0;
577
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
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
+ }
578
380
 
579
- &:first-child {
580
- margin-top: 0;
581
- }
381
+ .reportMeta {
382
+ display: flex;
383
+ align-items: center;
384
+ gap: 8px;
385
+ font-size: 0.75rem;
386
+ color: var(--paragraph-color);
582
387
 
583
- // When inside a filterGroup, style for better visual distinction
584
- .filterGroup .joinTablesContainer & {
585
- border: 1px solid var(--border-color, #e5e7eb);
586
- border-radius: 6px;
587
- background-color: white;
588
- margin: 0 0 16px 0;
589
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
590
- position: relative;
388
+ .reportVisibility {
389
+ font-size: 0.875rem;
390
+ }
591
391
 
592
- &:last-child {
593
- margin-bottom: 0;
392
+ .reportDate {
393
+ color: var(--paragraph-color);
394
+ }
594
395
  }
396
+ }
595
397
 
596
- // Add a left border with a distinct color for visual emphasis
597
- border-left: 3px solid var(--primary-color, #2563eb);
398
+ .reportTableInfo {
399
+ margin-bottom: 12px;
598
400
 
599
- // Add alternating background colors for even better distinction
600
- &:nth-child(odd) {
601
- background-color: white;
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);
602
409
  }
410
+ }
603
411
 
604
- &:nth-child(even) {
605
- background-color: #f9fafb;
606
- }
412
+ .reportClickHint {
413
+ font-size: 0.75rem;
414
+ color: var(--paragraph-color);
415
+ font-style: italic;
416
+ margin-top: auto;
417
+ }
607
418
 
608
- // Add a numbered indicator for each filter
609
- &::before {
610
- content: attr(data-filter-index);
611
- position: absolute;
612
- top: -10px;
613
- left: -10px;
419
+ .reportActions {
420
+ position: absolute;
421
+ top: 8px;
422
+ right: 8px;
423
+
424
+ .deleteReportBtn {
614
425
  width: 24px;
615
426
  height: 24px;
616
- background-color: var(--primary-color, #2563eb);
617
- color: white;
618
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;
619
434
  display: flex;
620
435
  align-items: center;
621
436
  justify-content: center;
622
- font-size: 0.8em;
623
- font-weight: bold;
624
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
625
- z-index: 1;
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
+ }
626
446
  }
627
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
+ }
628
464
 
629
- // Style for sort criteria
630
- &[data-sort-index] {
631
- border: 1px solid var(--border-color, #e5e7eb);
632
- border-radius: 0;
633
- background-color: white;
465
+ p {
634
466
  margin: 0;
635
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
636
- position: relative;
467
+ max-width: 400px;
468
+ margin: 0 auto;
469
+ }
470
+ }
637
471
 
638
- &:last-child {
639
- margin-bottom: 0;
640
- }
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
+ }
641
495
 
642
- // Add a left border with a distinct color for visual emphasis
643
- border-left: 3px solid var(--primary-color, #2563eb);
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;
644
507
 
645
- // Add alternating background colors for even better distinction
646
- &:nth-child(odd) {
647
- background-color: white;
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;
648
535
  }
649
536
 
650
- &:nth-child(even) {
651
- background-color: #f9fafb;
537
+ .stepTitle {
538
+ color: var(--primary-color);
539
+ font-weight: 700;
540
+ font-size: 0.95em;
652
541
  }
653
542
 
654
- // Add a numbered indicator for each sort criterion
655
- &::before {
656
- content: attr(data-sort-index);
657
- position: absolute;
658
- top: -10px;
659
- left: -10px;
660
- width: 24px;
661
- height: 24px;
662
- background-color: var(--primary-color, #2563eb);
663
- color: white;
664
- border-radius: 50%;
665
- display: flex;
666
- align-items: center;
667
- justify-content: center;
668
- font-size: 0.8em;
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);
669
551
  font-weight: bold;
670
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
671
- z-index: 1;
672
552
  }
673
553
  }
674
554
 
675
- // Style for join tables
676
- &[data-join-index] {
677
- border: 1px solid var(--border-color, #e5e7eb);
678
- border-radius: 0;
679
- background-color: white;
680
- margin: 0;
681
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
682
- position: relative;
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
+ }
683
561
 
684
- &:last-child {
685
- margin-bottom: 0;
562
+ .stepTitle {
563
+ color: rgba(var(--color-valid), 1);
564
+ font-weight: 600;
686
565
  }
687
566
 
688
- // Add a left border with a distinct color for visual emphasis
689
- border-left: 3px solid var(--primary-color, #2563eb);
567
+ .stepDescription {
568
+ color: rgba(var(--color-valid), 1);
569
+ opacity: 0.7;
570
+ }
690
571
 
691
- // Add alternating background colors for even better distinction
692
- &:nth-child(odd) {
693
- background-color: white;
572
+ // Color the arrow after completed step
573
+ &:not(:last-child)::after {
574
+ color: rgba(var(--color-valid), 1);
694
575
  }
576
+ }
577
+
578
+ &:hover:not(.active) {
579
+ background-color: rgba(var(--primary-rgb), 0.02);
580
+ border-radius: var(--radius);
581
+ padding: 8px;
695
582
 
696
- &:nth-child(even) {
697
- background-color: #f9fafb;
583
+ .stepIcon {
584
+ transform: scale(1.05);
585
+ background-color: rgba(var(--primary-rgb), 0.1);
586
+ color: var(--primary-color);
698
587
  }
699
588
 
700
- // Add a numbered indicator for each join
701
- &::before {
702
- content: attr(data-join-index);
703
- position: absolute;
704
- top: -10px;
705
- left: -10px;
706
- width: 24px;
707
- height: 24px;
708
- background-color: var(--primary-color, #2563eb);
709
- color: white;
710
- border-radius: 50%;
711
- display: flex;
712
- align-items: center;
713
- justify-content: center;
714
- font-size: 0.8em;
715
- font-weight: bold;
716
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
717
- z-index: 1;
589
+ .stepTitle {
590
+ color: var(--primary-color);
718
591
  }
719
592
  }
720
593
  }
721
594
 
722
- .joinHeader {
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);
723
601
  display: flex;
724
- justify-content: space-between;
725
602
  align-items: center;
726
- margin-bottom: 12px;
727
- padding-bottom: 8px;
728
- border-bottom: 1px solid var(--border-color, #e5e7eb);
603
+ justify-content: center;
604
+ transition: all 0.2s ease;
605
+ }
729
606
 
730
- h4 {
731
- margin: 0;
732
- font-size: 0.95em;
733
- color: var(--heading-color, #1f2937);
734
- font-weight: 600;
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;
735
616
  }
736
617
 
737
- // When inside a filterGroup, style for better visual distinction
738
- .filterGroup .joinTablesContainer .joinSection & {
739
- background-color: #f3f4f6;
740
- padding: 12px 16px;
741
- margin: -16px -16px 12px -16px;
742
- border-radius: 5px 5px 0 0;
743
- border-bottom: 1px solid var(--border-color, #e5e7eb);
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
+ }
744
626
 
745
- h4 {
746
- color: var(--primary-color, #2563eb);
747
- font-weight: 600;
748
- display: flex;
749
- align-items: center;
627
+ .wizardContent {
628
+ background-color: var(--tertiary-color);
629
+ border-radius: var(--radius);
630
+ box-shadow: var(--box-shadow-small);
631
+ overflow: hidden;
632
+ }
750
633
 
751
- &::before {
752
- content: 'Filter ' attr(data-filter-index);
753
- font-weight: 700;
754
- margin-right: 8px;
755
- color: var(--primary-color, #2563eb);
756
- }
757
- }
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);
758
658
  }
759
659
 
760
- // Style for sort criteria
761
- .joinTablesContainer .joinSection[data-sort-index] & {
762
- background-color: #f3f4f6;
763
- padding: 12px 16px;
764
- margin: -16px -16px 12px -16px;
765
- border-radius: 5px 5px 0 0;
766
- border-bottom: 1px solid var(--border-color, #e5e7eb);
660
+ .stepHeaderContent {
661
+ display: flex;
662
+ align-items: center;
663
+ gap: 16px;
664
+ flex: 1;
767
665
 
768
- h4 {
769
- color: var(--primary-color, #2563eb);
770
- font-weight: 600;
666
+ .stepIcon {
771
667
  display: flex;
772
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);
773
674
 
774
- &::before {
775
- content: 'Sort ' attr(data-sort-index);
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;
776
684
  font-weight: 700;
777
- margin-right: 8px;
778
- color: var(--primary-color, #2563eb);
685
+ color: var(--tertiary-color);
686
+ }
687
+
688
+ p {
689
+ margin: 0;
690
+ font-size: 1rem;
691
+ color: rgba(255, 255, 255, 0.9);
779
692
  }
780
693
  }
781
694
  }
695
+ }
782
696
 
783
- // Style for join tables
784
- .joinTablesContainer .joinSection[data-join-index] & {
785
- background-color: #f3f4f6;
786
- padding: 12px 16px;
787
- margin: -16px -16px 12px -16px;
788
- border-radius: 5px 5px 0 0;
789
- border-bottom: 1px solid var(--border-color, #e5e7eb);
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);
790
702
 
791
- h4 {
792
- color: var(--primary-color, #2563eb);
703
+ .guidanceContent {
704
+ h3 {
705
+ margin: 0 0 16px 0;
706
+ font-size: 1.125rem;
793
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 {
794
737
  display: flex;
795
- align-items: center;
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
+ }
796
750
 
797
- &::before {
798
- content: 'Join ' attr(data-join-index);
799
- font-weight: 700;
800
- margin-right: 8px;
801
- color: var(--primary-color, #2563eb);
751
+ span {
752
+ font-size: 0.875rem;
753
+ color: var(--header-color);
802
754
  }
803
755
  }
804
756
  }
805
757
  }
806
758
 
807
- .removeJoinBtn {
808
- background: none;
809
- border: none;
810
- color: var(--danger-color, #ef4444);
811
- cursor: pointer;
812
- font-size: 1.2em;
813
- display: flex;
814
- align-items: center;
815
- justify-content: center;
816
- padding: 4px 8px;
817
- border-radius: 4px;
818
- line-height: 1;
819
-
820
- &:hover {
821
- background: rgba(var(--danger-rgb, 239, 68, 68), 0.1);
822
- }
759
+ .stepBody {
760
+ padding: 32px;
761
+ min-height: 500px; // Increased from 400px to accommodate grid layout
823
762
  }
824
763
 
825
- .joinGrid {
764
+ .wizardNavigation {
826
765
  display: flex;
827
- flex-wrap: wrap;
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);
828
771
  gap: 16px;
829
- }
830
-
831
- .joinGridColumn {
832
- flex: 1 1 calc(50% - 8px);
833
- min-width: 250px;
834
- }
835
772
 
836
- .joinField {
837
- margin-bottom: 12px;
773
+ .btn {
774
+ min-width: 120px;
775
+ padding: 12px 24px;
776
+ font-weight: 600;
777
+ transition: all 0.2s ease;
838
778
 
839
- label {
840
- display: block;
841
- margin-bottom: 4px;
842
- font-size: 0.85em;
843
- color: var(--paragraph-color, #4b5563);
844
- font-weight: 500;
779
+ &:focus {
780
+ outline: 2px solid rgba(var(--primary-rgb), 0.3);
781
+ outline-offset: 2px;
782
+ }
845
783
  }
784
+ }
846
785
 
847
- // When inside a filter, add more spacing and styling
848
- .filterGroup .joinTablesContainer .joinSection & {
849
- margin-bottom: 16px;
786
+ // Table Selection
787
+ .tableSelection {
788
+ .noTables {
789
+ text-align: center;
790
+ padding: 48px 24px;
791
+ color: var(--paragraph-color);
850
792
 
851
- label {
852
- font-weight: 600;
853
- color: var(--heading-color, #1f2937);
854
- margin-bottom: 6px;
793
+ svg {
794
+ color: var(--paragraph-color);
795
+ margin-bottom: 16px;
855
796
  }
856
797
 
857
- select,
858
- input {
859
- border-color: #d1d5db;
798
+ h3 {
799
+ margin: 0 0 8px 0;
800
+ color: var(--header-color);
801
+ }
860
802
 
861
- &:focus {
862
- border-color: var(--primary-color, #2563eb);
863
- box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.1);
864
- }
803
+ p {
804
+ margin: 0;
805
+ max-width: 400px;
806
+ margin: 0 auto;
865
807
  }
866
808
  }
867
- }
868
-
869
- .addJoinButtonContainer {
870
- padding: 8px 0 16px;
871
- border-bottom: 1px solid var(--border-color, #e5e7eb);
872
- margin-bottom: 16px;
873
809
 
874
- .suggestedJoinsSection {
875
- margin-top: 1rem;
876
- text-align: left;
877
- border-radius: 0.375rem;
878
- background-color: white;
879
- margin-bottom: 1rem;
810
+ .simpleTableList {
811
+ max-width: 100%; // Use full width instead of 600px
812
+ margin: 0 auto;
880
813
 
881
- .sectionHeader {
882
- display: flex;
883
- justify-content: space-between;
884
- align-items: center;
885
- margin-bottom: 0.5rem;
886
- padding: 8px 12px;
887
- background-color: #f9fafb;
888
- border: 1px solid var(--border-color, #e5e7eb);
889
- border-radius: 6px;
814
+ .tableListHeader {
815
+ text-align: center;
816
+ margin-bottom: 24px;
890
817
 
891
- h4 {
892
- margin-top: 0;
893
- margin-bottom: 0;
894
- font-size: 0.9rem;
818
+ h3 {
819
+ margin: 0 0 8px 0;
820
+ font-size: 1.25rem;
895
821
  font-weight: 600;
896
- color: var(--heading-color, #1f2937);
897
- display: flex;
898
- align-items: center;
822
+ color: var(--header-color);
899
823
  }
900
824
 
901
- .toggleBtn {
902
- background: none;
903
- border: none;
904
- color: var(--primary-color, #2563eb);
905
- cursor: pointer;
906
- font-size: 0.9rem;
907
- padding: 2px 6px;
908
- border-radius: 4px;
909
- display: flex;
910
- align-items: center;
911
- justify-content: center;
912
- transition: all 0.2s ease;
913
- width: 24px;
914
- height: 24px;
915
-
916
- &:hover {
917
- background-color: rgba(37, 99, 235, 0.1);
918
- }
919
-
920
- &.toggleBtnActive {
921
- background-color: rgba(37, 99, 235, 0.1);
922
- }
825
+ p {
826
+ margin: 0;
827
+ color: var(--paragraph-color);
828
+ font-size: 0.875rem;
923
829
  }
924
830
  }
925
831
 
926
- .helpText {
927
- margin-top: 0.5rem;
928
- margin-bottom: 0.5rem;
929
- font-size: 0.75rem;
930
- color: #6b7280;
931
- padding: 0 12px;
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
+ }
932
840
 
933
- .ratingInfo {
934
- display: block;
935
- margin-top: 0.25rem;
936
- font-style: italic;
937
- color: #9ca3af;
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);
938
858
  }
939
- }
940
859
 
941
- .suggestedJoinsList {
942
- display: grid;
943
- grid-template-columns: repeat(auto-fill, minmax(450px, 1fr));
944
- gap: 0.5rem;
945
- max-height: 300px;
946
- overflow-y: auto;
947
- padding: 0 12px 12px;
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
+ }
948
865
 
949
- .suggestedJoinItem {
866
+ .tableCardIcon {
950
867
  display: flex;
951
- justify-content: space-between;
952
868
  align-items: center;
953
- padding: 0.75rem;
954
- border: 1px solid #e5e7eb;
955
- border-radius: 0.25rem;
956
- background-color: white;
957
- transition: all 0.2s ease;
958
- font-size: 0.8rem;
959
- min-height: 60px;
960
-
961
- &:hover {
962
- border-color: var(--primary-color, #2563eb);
963
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
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);
964
879
  }
880
+ }
965
881
 
966
- .suggestedJoinInfo {
967
- display: flex;
968
- flex-direction: row;
969
- align-items: center;
970
- gap: 0.5rem;
971
- max-width: 85%;
972
- overflow: hidden;
973
-
974
- .suggestedJoinDescription {
975
- font-size: 0.8rem;
976
- overflow: hidden;
977
- min-width: 0; // This is important for text-overflow to work in flex items
978
- }
882
+ .tableCardInfo {
883
+ flex: 1;
979
884
 
980
- .relationshipWithDescription {
981
- display: flex;
982
- flex-direction: column;
983
- gap: 0.25rem;
984
- overflow: hidden;
985
-
986
- div:first-child {
987
- font-weight: 500;
988
- color: var(--heading-color, #1f2937);
989
- }
990
-
991
- .relationshipDescription {
992
- font-size: 0.7rem;
993
- color: var(--muted-color, #6b7280);
994
- font-style: italic;
995
- line-height: 1.2;
996
- }
997
- }
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
+ }
998
892
 
999
- .confidenceBadge {
1000
- font-size: 0.7rem;
1001
- color: #f59e0b;
1002
- white-space: nowrap;
1003
- flex-shrink: 0;
1004
- }
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;
1005
902
  }
903
+ }
1006
904
 
1007
- .addSuggestedJoinBtn {
1008
- background-color: var(--primary-color, #2563eb);
1009
- color: white;
1010
- border: none;
1011
- border-radius: 0.25rem;
1012
- padding: 0.25rem 0.5rem;
1013
- font-size: 0.75rem;
1014
- cursor: pointer;
1015
- transition: background-color 0.2s ease;
1016
- min-width: 40px;
1017
-
1018
- &:hover {
1019
- background-color: color.adjust(
1020
- #2563eb,
1021
- $lightness: -10%
1022
- );
1023
- }
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);
1024
920
  }
1025
921
  }
1026
922
  }
1027
- }
1028
923
 
1029
- .loadingMessage {
1030
- margin-top: 1rem;
1031
- font-size: 0.875rem;
1032
- color: #6b7280;
1033
- font-style: italic;
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
+ }
1034
942
  }
1035
943
  }
1036
944
 
1037
- .joinRow {
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;
1038
969
  display: flex;
970
+ flex-direction: column;
1039
971
  align-items: center;
1040
- gap: 10px;
1041
- margin-bottom: 12px;
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
+ }
1042
1003
  }
1043
1004
 
1044
- .previewSection {
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 {
1045
1142
  margin-top: 24px;
1046
- border: 1px solid var(--border-color, #e5e7eb);
1047
- border-radius: 8px;
1048
1143
  padding: 16px;
1049
- background-color: #f9fafb;
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
+ }
1050
1151
 
1051
- h3 {
1052
- margin-top: 0;
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;
1053
1168
  margin-bottom: 16px;
1054
- color: var(--heading-color, #1f2937);
1055
- font-size: 1.2em;
1056
- font-weight: 600;
1057
- border-bottom: 1px solid var(--border-color, #e5e7eb);
1058
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
+ }
1059
1186
  }
1060
1187
  }
1061
1188
 
1062
- .sqlSection {
1063
- margin-top: 24px;
1064
- border: 1px solid var(--border-color, #e5e7eb);
1065
- border-radius: 8px;
1189
+ // Help boxes
1190
+ .helpBox {
1191
+ display: flex;
1192
+ gap: 16px;
1066
1193
  padding: 16px;
1067
- background-color: #f9fafb;
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;
1068
1198
 
1069
- h3 {
1070
- margin-top: 0;
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);
1071
1401
  margin-bottom: 16px;
1072
- color: var(--heading-color, #1f2937);
1073
- font-size: 1.2em;
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;
1074
1539
  font-weight: 600;
1075
- border-bottom: 1px solid var(--border-color, #e5e7eb);
1076
- padding-bottom: 12px;
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);
1077
1607
  }
1078
1608
  }
1079
1609
 
1080
- .sqlContainer {
1081
- background: white;
1082
- border: 1px solid var(--border-color, #e5e7eb);
1083
- border-radius: 6px;
1084
- padding: 12px;
1085
- overflow-x: auto;
1086
- margin-top: 10px;
1087
- max-height: 300px;
1088
- overflow-y: auto;
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
+ }
1089
1620
  }
1090
1621
 
1091
- .sqlContainer pre {
1092
- margin: 0;
1093
- font-family: monospace;
1094
- font-size: 0.85em;
1095
- white-space: pre-wrap;
1096
- color: var(--paragraph-color, #4b5563);
1097
- }
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
+ }
1098
1787
 
1099
- .previewTable {
1100
- width: 100%;
1101
- border-collapse: collapse;
1102
- border: 1px solid var(--border-color, #e5e7eb);
1103
- border-radius: 6px;
1104
- overflow: hidden;
1105
- }
1788
+ .exportOptions {
1789
+ text-align: center;
1106
1790
 
1107
- .previewTable th {
1108
- background: #f9fafb;
1109
- padding: 12px 16px;
1110
- text-align: left;
1111
- font-weight: 600;
1112
- color: var(--heading-color, #374151);
1113
- border-bottom: 1px solid var(--border-color, #e5e7eb);
1114
- }
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
+ }
1115
1798
 
1116
- .previewTable td {
1117
- padding: 12px 16px;
1118
- border-bottom: 1px solid var(--border-color, #e5e7eb);
1119
- color: var(--paragraph-color, #4b5563);
1799
+ .exportButtons {
1800
+ display: flex;
1801
+ justify-content: center;
1802
+ gap: 12px;
1803
+ }
1120
1804
  }
1121
1805
 
1122
- .actionButtons {
1123
- display: flex;
1124
- flex-wrap: wrap;
1125
- gap: 8px;
1126
- margin-top: 16px;
1127
- margin-bottom: 16px;
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);
1128
1812
  }
1129
1813
 
1814
+ // Buttons
1130
1815
  .btn {
1131
- background: var(--primary-color, #2563eb);
1132
- color: white;
1816
+ display: inline-flex;
1817
+ align-items: center;
1818
+ justify-content: center;
1819
+ gap: 8px;
1820
+ padding: 12px calc(var(--padding) * 1.5);
1133
1821
  border: none;
1134
- border-radius: 4px;
1135
- padding: 8px 12px;
1822
+ border-radius: var(--radius);
1823
+ font-size: 0.875rem;
1824
+ font-weight: 600;
1136
1825
  cursor: pointer;
1137
1826
  transition: all 0.2s ease;
1138
- font-weight: 500;
1139
- font-size: 0.85em;
1140
- }
1827
+ text-decoration: none;
1828
+ min-height: 44px;
1829
+ position: relative;
1830
+ overflow: hidden;
1141
1831
 
1142
- .btn:hover {
1143
- background: var(--primary-hover-color, #1d4ed8);
1144
- }
1832
+ &:disabled {
1833
+ opacity: 0.5;
1834
+ cursor: not-allowed;
1835
+ transform: none !important;
1836
+ }
1145
1837
 
1146
- .btn:disabled {
1147
- opacity: 0.6;
1148
- cursor: not-allowed;
1149
- }
1838
+ &:focus {
1839
+ outline: 2px solid rgba(var(--primary-rgb), 0.3);
1840
+ outline-offset: 2px;
1841
+ }
1150
1842
 
1151
- .btnSecondary {
1152
- background: var(--secondary-color, #4b5563);
1153
- }
1843
+ &:active:not(:disabled) {
1844
+ transform: translateY(1px);
1845
+ }
1154
1846
 
1155
- .btnSecondary:hover {
1156
- background: var(--secondary-hover-color, #374151);
1847
+ svg {
1848
+ width: 16px;
1849
+ height: 16px;
1850
+ flex-shrink: 0;
1851
+ }
1157
1852
  }
1158
1853
 
1159
1854
  .btnPrimary {
1160
- background: var(--primary-color, #2563eb);
1161
- }
1855
+ background-color: var(--primary-color);
1856
+ color: var(--tertiary-color);
1857
+ box-shadow: 0 2px 4px rgba(var(--primary-rgb), 0.2);
1162
1858
 
1163
- .btnPrimary:hover {
1164
- background: var(--primary-hover-color, #1d4ed8);
1165
- }
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
+ }
1166
1865
 
1167
- .btnDanger {
1168
- background: var(--danger-color, #ef4444);
1866
+ &:focus {
1867
+ outline-color: rgba(var(--primary-rgb), 0.5);
1868
+ }
1169
1869
  }
1170
1870
 
1171
- .btnDanger:hover {
1172
- background: var(--danger-hover-color, #dc2626);
1173
- }
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);
1174
1875
 
1175
- .selectedColumns {
1176
- margin-top: 16px;
1177
- padding: 0;
1178
- border-radius: 6px;
1179
- max-height: 300px;
1180
- overflow-y: auto;
1181
- display: grid;
1182
- grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
1183
- gap: 8px;
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
+ }
1184
1886
  }
1185
1887
 
1186
- .selectedColumnItem {
1187
- display: flex;
1188
- align-items: center;
1189
- padding: 6px 8px;
1190
- background: #f9fafb;
1191
- border-radius: 4px;
1192
- font-size: 0.85em;
1193
- cursor: grab;
1194
- transition: background 0.2s ease, box-shadow 0.2s ease;
1195
- border: 1px solid var(--border-color, #e5e7eb);
1196
- height: 36px;
1197
- overflow: hidden;
1198
- white-space: nowrap;
1199
- text-overflow: ellipsis;
1888
+ .btnCancel {
1889
+ background-color: #dc2626;
1890
+ color: var(--tertiary-color);
1891
+ box-shadow: 0 2px 4px rgba(220, 38, 38, 0.2);
1200
1892
 
1201
- span {
1202
- flex: 1;
1203
- overflow: hidden;
1204
- text-overflow: ellipsis;
1205
- white-space: nowrap;
1893
+ &:hover:not(:disabled) {
1894
+ background-color: #b91c1c;
1895
+ box-shadow: 0 4px 12px rgba(220, 38, 38, 0.3);
1896
+ transform: translateY(-1px);
1206
1897
  }
1207
1898
 
1208
- .inlineEditContainer {
1209
- display: flex;
1210
- flex: 1;
1211
- align-items: center;
1212
- gap: 4px;
1213
- width: 100%;
1899
+ &:focus {
1900
+ outline-color: rgba(220, 38, 38, 0.5);
1214
1901
  }
1902
+ }
1215
1903
 
1216
- .columnNameInput {
1217
- flex: 1;
1218
- padding: 4px 8px;
1219
- border: 1px solid var(--primary-color, #2563eb);
1220
- border-radius: 4px;
1221
- font-size: 0.9em;
1222
- color: var(--paragraph-color, #4b5563);
1223
- min-width: 50px;
1224
- max-width: 200px;
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);
1225
1913
  }
1226
1914
 
1227
- .saveBtn,
1228
- .cancelBtn {
1229
- background: none;
1230
- border: none;
1231
- cursor: pointer;
1232
- padding: 2px 4px;
1233
- border-radius: 4px;
1234
- display: flex;
1235
- align-items: center;
1236
- justify-content: center;
1237
- transition: all 0.2s ease;
1238
- font-size: 0.9em;
1239
- min-width: 20px;
1240
- min-height: 20px;
1915
+ &:focus {
1916
+ outline-color: rgba(107, 114, 128, 0.5);
1241
1917
  }
1918
+ }
1242
1919
 
1243
- .saveBtn {
1244
- color: var(--success-color, #10b981);
1245
- &:hover {
1246
- background: rgba(16, 185, 129, 0.1);
1247
- }
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);
1248
1929
  }
1249
1930
 
1250
- .cancelBtn {
1251
- color: var(--danger-color, #ef4444);
1252
- &:hover {
1253
- background: rgba(239, 68, 68, 0.1);
1254
- }
1931
+ &:focus {
1932
+ outline-color: rgba(234, 88, 12, 0.5);
1255
1933
  }
1256
1934
  }
1257
1935
 
1258
- .selectedColumnItem:hover {
1259
- background: #f3f4f6;
1260
- }
1936
+ .btnExportExcel {
1937
+ background-color: #059669;
1938
+ color: var(--tertiary-color);
1939
+ box-shadow: 0 2px 4px rgba(5, 150, 105, 0.2);
1261
1940
 
1262
- .selectedColumnItem:active {
1263
- cursor: grabbing;
1264
- }
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
+ }
1265
1946
 
1266
- .selectedColumnItem.dragging {
1267
- opacity: 0.5;
1268
- box-shadow: 0 0 8px rgba(0, 0, 0, 0.1);
1947
+ &:focus {
1948
+ outline-color: rgba(5, 150, 105, 0.5);
1949
+ }
1269
1950
  }
1270
1951
 
1271
- .selectedColumnItem.dragOver {
1272
- border: 1px dashed var(--primary-color, #2563eb);
1273
- background-color: rgba(var(--primary-rgb, 37, 99, 235), 0.05);
1274
- }
1952
+ .btnExportCsv {
1953
+ background-color: #2563eb;
1954
+ color: var(--tertiary-color);
1955
+ box-shadow: 0 2px 4px rgba(37, 99, 235, 0.2);
1275
1956
 
1276
- .dragHandle {
1277
- display: flex;
1278
- align-items: center;
1279
- justify-content: center;
1280
- margin-right: 8px;
1281
- color: #9ca3af;
1282
- font-size: 1.2em;
1283
- cursor: grab;
1284
- flex-shrink: 0;
1285
- }
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
+ }
1286
1962
 
1287
- .columnActions {
1288
- margin-left: auto;
1289
- display: flex;
1290
- gap: 4px;
1291
- flex-shrink: 0;
1963
+ &:focus {
1964
+ outline-color: rgba(37, 99, 235, 0.5);
1965
+ }
1292
1966
  }
1293
1967
 
1294
- .editBtn {
1295
- background: none;
1296
- border: none;
1297
- color: var(--primary-color, #2563eb);
1298
- cursor: pointer;
1299
- font-size: 1em;
1300
- display: flex;
1301
- align-items: center;
1302
- justify-content: center;
1303
- padding: 4px;
1304
- border-radius: 4px;
1305
- min-width: 24px;
1306
- min-height: 24px;
1307
- }
1968
+ .btnExportPdf {
1969
+ background-color: #dc2626;
1970
+ color: var(--tertiary-color);
1971
+ box-shadow: 0 2px 4px rgba(220, 38, 38, 0.2);
1308
1972
 
1309
- .editBtn:hover {
1310
- background: rgba(var(--primary-rgb, 37, 99, 235), 0.1);
1311
- }
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
+ }
1312
1978
 
1313
- .removeBtn {
1314
- background: none;
1315
- border: none;
1316
- color: var(--danger-color, #ef4444);
1317
- cursor: pointer;
1318
- font-size: 1em;
1319
- display: flex;
1320
- align-items: center;
1321
- justify-content: center;
1322
- padding: 4px;
1323
- border-radius: 4px;
1324
- min-width: 24px;
1325
- min-height: 24px;
1979
+ &:focus {
1980
+ outline-color: rgba(220, 38, 38, 0.5);
1981
+ }
1326
1982
  }
1327
1983
 
1328
- .removeBtn:hover {
1329
- background: rgba(var(--danger-rgb, 239, 68, 68), 0.1);
1330
- }
1984
+ .btnSuccess {
1985
+ background-color: rgba(var(--color-valid), 1);
1986
+ color: var(--tertiary-color);
1331
1987
 
1332
- .formGroup {
1333
- margin-bottom: 20px;
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
+ }
1334
1993
  }
1335
1994
 
1336
- .formGroup label {
1337
- display: block;
1338
- margin-bottom: 8px;
1339
- font-weight: 500;
1340
- color: var(--heading-color, #374151);
1341
- font-size: 0.95em;
1342
- }
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);
1343
2002
 
1344
- .formControl {
1345
- width: 100%;
1346
- padding: 10px 12px;
1347
- border: 1px solid var(--border-color, #d1d5db);
1348
- border-radius: 6px;
1349
- background: white;
1350
- font-size: 0.95em;
1351
- color: var(--paragraph-color, #1f2937);
2003
+ p {
2004
+ font-size: 1rem;
2005
+ color: var(--paragraph-color);
2006
+ }
1352
2007
  }
1353
2008
 
1354
- .formControl:focus {
1355
- outline: none;
1356
- border-color: var(--primary-color, #93c5fd);
1357
- box-shadow: 0 0 0 3px rgba(var(--primary-rgb, 147, 197, 253), 0.25);
1358
- }
2009
+ // Relationships section
2010
+ .relationshipsSection {
2011
+ .currentJoins {
2012
+ margin-bottom: 24px;
1359
2013
 
1360
- .formControl::placeholder {
1361
- color: #9ca3af;
1362
- }
2014
+ h3 {
2015
+ margin: 0 0 16px 0;
2016
+ font-size: 1.125rem;
2017
+ font-weight: 600;
2018
+ color: var(--header-color);
2019
+ }
2020
+ }
1363
2021
 
1364
- .checkboxContainer {
1365
- display: flex;
1366
- align-items: center;
1367
- gap: 8px;
1368
- margin-bottom: 10px;
1369
- }
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;
1370
2031
 
1371
- .checkboxContainer input[type='checkbox'] {
1372
- width: 16px;
1373
- height: 16px;
1374
- accent-color: var(--primary-color, #2563eb);
1375
- }
2032
+ .joinInfo {
2033
+ flex: 1;
1376
2034
 
1377
- .checkboxContainer label {
1378
- font-size: 0.9em;
1379
- color: var(--paragraph-color, #4b5563);
1380
- margin-bottom: 0;
1381
- }
2035
+ .joinDescription {
2036
+ display: block;
2037
+ font-weight: 500;
2038
+ color: var(--header-color);
2039
+ margin-bottom: 4px;
2040
+ }
1382
2041
 
1383
- .savedReportsSection {
1384
- margin-bottom: 20px;
1385
- }
2042
+ .joinDetails {
2043
+ display: block;
2044
+ font-size: 0.875rem;
2045
+ color: var(--paragraph-color);
2046
+ }
2047
+ }
1386
2048
 
1387
- .sectionHeader {
1388
- display: flex;
1389
- justify-content: space-between;
1390
- align-items: center;
1391
- margin-bottom: 0;
1392
- }
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
+ }
1393
2064
 
1394
- .sectionHeader h3 {
1395
- margin: 0;
1396
- }
2065
+ .detectedJoins {
2066
+ margin-bottom: 24px;
1397
2067
 
1398
- .columnSectionHeader {
1399
- display: flex;
1400
- align-items: center;
1401
- margin-bottom: 10px;
1402
- flex-wrap: wrap;
1403
- gap: 8px;
1404
- }
2068
+ h3 {
2069
+ margin: 0 0 8px 0;
2070
+ font-size: 1.125rem;
2071
+ font-weight: 600;
2072
+ color: var(--header-color);
2073
+ }
1405
2074
 
1406
- .columnSectionHeader h3 {
1407
- margin: 0;
1408
- margin-right: 8px;
1409
- }
2075
+ p {
2076
+ margin: 0 0 16px 0;
2077
+ color: var(--paragraph-color);
2078
+ }
2079
+ }
1410
2080
 
1411
- .instructionText {
1412
- font-size: 0.8em;
1413
- color: var(--muted-color, #6b7280);
1414
- font-style: italic;
1415
- }
2081
+ .detectionsGrid {
2082
+ display: grid;
2083
+ grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
2084
+ gap: 12px;
1416
2085
 
1417
- .btnSmall {
1418
- padding: 4px 8px;
1419
- font-size: 0.8em;
1420
- }
2086
+ @media (max-width: 768px) {
2087
+ grid-template-columns: 1fr;
2088
+ }
2089
+ }
1421
2090
 
1422
- .savedReportsList {
1423
- max-height: 300px;
1424
- overflow-y: auto;
1425
- margin-top: 10px;
1426
- border: 1px solid var(--border-color, #e5e7eb);
1427
- border-radius: 6px;
1428
- display: grid;
1429
- grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
1430
- gap: 1px;
1431
- background-color: var(--border-color, #e5e7eb);
1432
- padding: 1px;
1433
- }
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;
1434
2101
 
1435
- .savedReportItem {
1436
- display: flex;
1437
- justify-content: space-between;
1438
- align-items: center;
1439
- padding: 8px 12px;
1440
- background: #f9fafb;
1441
- transition: background 0.2s ease;
1442
- height: 40px;
1443
- overflow: hidden;
1444
- }
2102
+ &:hover {
2103
+ border-color: var(--primary-color);
2104
+ box-shadow: var(--box-shadow-small);
2105
+ }
1445
2106
 
1446
- .savedReportItem:hover {
1447
- background: #f3f4f6;
1448
- }
2107
+ .detectionInfo {
2108
+ flex: 1;
1449
2109
 
1450
- .selectedReportItem {
1451
- background: rgba(var(--primary-rgb, 37, 99, 235), 0.1);
1452
- }
2110
+ .detectionTitle {
2111
+ display: flex;
2112
+ align-items: center;
2113
+ gap: 8px;
2114
+ margin-bottom: 8px;
1453
2115
 
1454
- .selectedReportItem:hover {
1455
- background: rgba(var(--primary-rgb, 37, 99, 235), 0.15);
1456
- }
2116
+ span {
2117
+ font-weight: 500;
2118
+ color: var(--header-color);
2119
+ }
1457
2120
 
1458
- .reportInfo {
1459
- display: flex;
1460
- align-items: center;
1461
- gap: 8px;
1462
- cursor: pointer;
1463
- flex: 1;
1464
- overflow: hidden;
1465
- white-space: nowrap;
1466
- text-overflow: ellipsis;
1467
- }
2121
+ .confidenceRating {
2122
+ margin-left: auto;
2123
+ font-size: 0.875rem;
2124
+ }
1468
2125
 
1469
- .reportName {
1470
- font-size: 0.9em;
1471
- color: var(--paragraph-color, #4b5563);
1472
- overflow: hidden;
1473
- text-overflow: ellipsis;
1474
- white-space: nowrap;
1475
- }
2126
+ svg {
2127
+ color: var(--primary-color);
2128
+ }
2129
+ }
1476
2130
 
1477
- .publicBadge {
1478
- font-size: 0.7em;
1479
- background: var(--primary-color, #2563eb);
1480
- color: white;
1481
- padding: 2px 6px;
1482
- border-radius: 10px;
1483
- }
2131
+ .detectionDescription {
2132
+ margin: 0;
2133
+ font-size: 0.875rem;
2134
+ color: var(--paragraph-color);
2135
+ }
2136
+ }
1484
2137
 
1485
- .reportActions {
1486
- display: flex;
1487
- gap: 4px;
1488
- flex-shrink: 0;
1489
- }
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
+ }
1490
2157
 
1491
- .actionBtn {
1492
- background: none;
1493
- border: none;
1494
- cursor: pointer;
1495
- font-size: 1em;
1496
- min-width: 24px;
1497
- min-height: 24px;
1498
- display: flex;
1499
- align-items: center;
1500
- justify-content: center;
1501
- border-radius: 4px;
1502
- color: var(--primary-color, #2563eb);
1503
- transition: all 0.2s ease;
1504
- flex-shrink: 0;
1505
- }
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
+ }
1506
2230
 
1507
- .actionBtn:hover {
1508
- background: rgba(var(--primary-rgb, 37, 99, 235), 0.1);
1509
- }
2231
+ span {
2232
+ font-size: 0.875rem;
2233
+ color: var(--header-color);
2234
+ line-height: 1.4;
1510
2235
 
1511
- .deleteBtn {
1512
- color: var(--danger-color, #ef4444);
1513
- }
2236
+ strong {
2237
+ color: #f59e0b;
2238
+ }
2239
+ }
2240
+ }
1514
2241
 
1515
- .deleteBtn:hover {
1516
- background: rgba(var(--danger-rgb, 239, 68, 68), 0.1);
1517
- }
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
+ }
1518
2249
 
1519
- .selectControl {
1520
- min-width: 200px;
1521
- padding: 8px 12px;
1522
- border: 1px solid var(--border-color, #d1d5db);
1523
- border-radius: 6px;
1524
- background: white;
1525
- font-size: 0.95em;
1526
- color: var(--paragraph-color, #1f2937);
1527
- }
2250
+ .manualJoinGrid {
2251
+ display: grid;
2252
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
2253
+ gap: 16px;
2254
+ margin-bottom: 20px;
2255
+ }
1528
2256
 
1529
- .selectControl:focus {
1530
- outline: none;
1531
- border-color: var(--primary-color, #93c5fd);
1532
- }
2257
+ .manualJoinField {
2258
+ display: flex;
2259
+ flex-direction: column;
2260
+ gap: 6px;
1533
2261
 
1534
- .emptyMessage {
1535
- color: var(--muted-color, #6b7280);
1536
- font-size: 0.95em;
1537
- margin: 16px 0;
1538
- }
2262
+ label {
2263
+ font-size: 0.875rem;
2264
+ font-weight: 500;
2265
+ color: var(--paragraph-color);
2266
+ }
1539
2267
 
1540
- .jsonKeyInputContainer {
1541
- position: relative;
1542
- display: flex;
1543
- align-items: center;
1544
- width: 100%;
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);
1545
2275
 
1546
- .jsonKeyButton {
1547
- position: absolute;
1548
- right: 0;
1549
- top: 0;
1550
- height: 100%;
1551
- background-color: #f3f4f6;
1552
- border: none;
1553
- border-left: 1px solid var(--border-color, #d1d5db);
1554
- padding: 0 10px;
1555
- color: var(--primary-color, #2563eb);
1556
- cursor: pointer;
1557
- font-size: 0.9em;
1558
- transition: all 0.2s ease;
1559
- font-weight: 600;
1560
- min-width: 36px;
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
+ }
1561
2281
 
1562
- &:hover {
1563
- background-color: rgba(var(--primary-rgb, 37, 99, 235), 0.1);
1564
- color: var(--primary-color, #2563eb);
2282
+ &:disabled {
2283
+ background-color: var(--bg-color);
2284
+ color: var(--paragraph-color);
2285
+ cursor: not-allowed;
2286
+ }
1565
2287
  }
1566
2288
  }
1567
2289
 
1568
- input {
1569
- padding-right: 36px;
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);
1570
2296
  }
1571
- }
1572
2297
 
1573
- .jsonKeyDropdown {
1574
- position: relative;
1575
- width: 100%;
1576
- max-height: 300px;
1577
- overflow-y: auto;
1578
- background-color: white;
1579
- border: 1px solid var(--border-color, #d1d5db);
1580
- border-radius: 6px;
1581
- margin-top: 4px;
1582
- margin-bottom: 12px;
1583
- box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1),
1584
- 0 2px 4px -1px rgba(0, 0, 0, 0.06);
1585
- z-index: 100;
1586
- }
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;
1587
2307
 
1588
- .jsonKeyDropdownHeader {
1589
- display: flex;
1590
- justify-content: space-between;
1591
- align-items: center;
1592
- padding: 10px 12px;
1593
- background-color: #f3f4f6;
1594
- border-bottom: 1px solid var(--border-color, #e5e7eb);
1595
- position: sticky;
1596
- top: 0;
1597
- z-index: 2;
2308
+ .filterInfo {
2309
+ flex: 1;
1598
2310
 
1599
- span {
1600
- font-weight: 600;
1601
- font-size: 0.9em;
1602
- color: var(--heading-color, #1f2937);
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
+ }
1603
2331
  }
1604
- }
1605
2332
 
1606
- .jsonKeyCloseButton {
1607
- background: none;
1608
- border: none;
1609
- color: var(--paragraph-color, #4b5563);
1610
- font-size: 1.2em;
1611
- cursor: pointer;
1612
- width: 24px;
1613
- height: 24px;
1614
- display: flex;
1615
- align-items: center;
1616
- justify-content: center;
1617
- border-radius: 4px;
1618
- transition: all 0.2s ease;
2333
+ .reportActions {
2334
+ display: grid;
2335
+ grid-template-columns: 1fr 1fr;
2336
+ gap: 24px;
2337
+ margin-top: 32px;
1619
2338
 
1620
- &:hover {
1621
- background-color: rgba(0, 0, 0, 0.05);
1622
- color: var(--danger-color, #ef4444);
1623
- }
1624
- }
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);
1625
2345
 
1626
- .jsonKeyDropdownFooter {
1627
- padding: 8px 12px;
1628
- background-color: #f9fafb;
1629
- border-top: 1px solid var(--border-color, #e5e7eb);
1630
- text-align: center;
1631
- position: sticky;
1632
- bottom: 0;
2346
+ h3 {
2347
+ margin: 0 0 8px 0;
2348
+ font-size: 1.125rem;
2349
+ font-weight: 600;
2350
+ color: var(--header-color);
2351
+ }
1633
2352
 
1634
- small {
1635
- font-size: 0.8em;
1636
- color: var(--muted-color, #6b7280);
1637
- font-style: italic;
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
+ }
1638
2365
  }
1639
2366
  }
1640
2367
 
1641
- .jsonKeyList {
1642
- padding: 0;
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;
1643
2375
  }
1644
2376
 
1645
- .jsonKeyListHeader {
1646
- display: flex;
1647
- justify-content: space-between;
1648
- align-items: center;
1649
- padding: 8px 12px;
1650
- background-color: #f9fafb;
1651
- border-bottom: 1px solid var(--border-color, #e5e7eb);
1652
- font-size: 0.8em;
1653
- font-weight: 600;
1654
- color: var(--muted-color, #6b7280);
1655
- position: sticky;
1656
- top: 40px;
1657
- z-index: 1;
2377
+ .suggestionsIntro {
2378
+ margin: 0 0 16px 0;
2379
+ font-size: 0.875rem;
2380
+ color: var(--paragraph-color);
2381
+ line-height: 1.4;
1658
2382
  }
1659
2383
 
1660
- .jsonKeyNameHeader {
1661
- flex: 1;
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);
1662
2391
  }
1663
2392
 
1664
- .jsonKeyFrequencyHeader {
1665
- text-align: right;
1666
- padding-right: 8px;
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
+ }
1667
2401
  }
1668
2402
 
1669
- .jsonKeyItem {
1670
- display: flex;
1671
- justify-content: space-between;
1672
- align-items: center;
1673
- padding: 8px 12px;
1674
- cursor: pointer;
2403
+ .suggestionCard {
2404
+ background-color: var(--tertiary-color);
2405
+ border: 2px solid var(--border-color);
2406
+ border-radius: var(--radius);
2407
+ padding: 16px;
1675
2408
  transition: all 0.2s ease;
1676
- font-size: 0.85em;
1677
- border-bottom: 1px solid rgba(0, 0, 0, 0.03);
1678
2409
 
1679
2410
  &:hover {
1680
- background-color: rgba(var(--primary-rgb, 37, 99, 235), 0.05);
1681
- }
1682
-
1683
- &:active {
1684
- background-color: rgba(var(--primary-rgb, 37, 99, 235), 0.1);
1685
- }
1686
-
1687
- .jsonKeyName {
1688
- flex: 1;
1689
- overflow: hidden;
1690
- text-overflow: ellipsis;
1691
- white-space: nowrap;
1692
- color: var(--primary-color, #2563eb);
1693
- font-weight: 500;
1694
- }
1695
-
1696
- .jsonKeyFrequency {
1697
- color: var(--muted-color, #6b7280);
1698
- font-size: 0.85em;
1699
- margin-left: 8px;
1700
- min-width: 40px;
1701
- text-align: right;
2411
+ border-color: var(--primary-color);
2412
+ box-shadow: var(--box-shadow-small);
2413
+ transform: translateY(-1px);
1702
2414
  }
1703
2415
  }
1704
2416
 
1705
- .jsonKeyLoading,
1706
- .jsonKeyEmpty {
1707
- padding: 20px 12px;
1708
- text-align: center;
1709
- color: var(--muted-color, #6b7280);
1710
- font-size: 0.85em;
1711
- font-style: italic;
2417
+ .suggestionHeader {
2418
+ display: flex;
2419
+ align-items: center;
2420
+ justify-content: space-between;
2421
+ margin-bottom: 8px;
1712
2422
  }
1713
2423
 
1714
- .jsonPreview {
1715
- max-width: 100%;
1716
- max-height: 150px;
1717
- overflow: auto;
1718
- background-color: #f8f9fa;
1719
- border-radius: 4px;
1720
- padding: 6px;
1721
- border: 1px solid #e5e7eb;
1722
- position: relative;
1723
- z-index: 10;
1724
-
1725
- pre {
1726
- margin: 0;
1727
- font-family: monospace;
1728
- font-size: 0.75em;
1729
- white-space: pre-wrap;
1730
- color: #1f2937;
1731
- overflow-wrap: break-word;
1732
- word-break: break-word;
1733
-
1734
- // Style JSON keys to make them stand out
1735
- // This uses a CSS hack to style JSON keys in the pre element
1736
- // It targets the text before the colon
1737
- &::before {
1738
- content: attr(data-content);
1739
- display: none;
1740
- }
1741
- }
2424
+ .suggestionTitle {
2425
+ font-size: 0.875rem;
2426
+ font-weight: 600;
2427
+ color: var(--header-color);
2428
+ }
1742
2429
 
1743
- // Add custom styling for JSON keys and values
1744
- :global {
1745
- .json-key {
1746
- color: #2563eb; // Primary blue color
1747
- font-weight: 500;
1748
- }
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
+ }
1749
2440
 
1750
- .json-string {
1751
- color: #16a34a; // Green color for strings
1752
- }
2441
+ .suggestionDescription {
2442
+ margin: 0 0 12px 0;
2443
+ font-size: 0.8rem;
2444
+ color: var(--paragraph-color);
2445
+ line-height: 1.3;
2446
+ }
1753
2447
 
1754
- .json-number {
1755
- color: #9333ea; // Purple color for numbers
1756
- }
2448
+ .suggestionActions {
2449
+ display: flex;
2450
+ align-items: center;
2451
+ justify-content: space-between;
2452
+ gap: 12px;
1757
2453
 
1758
- .json-boolean {
1759
- color: #f59e0b; // Amber color for booleans
1760
- }
2454
+ .btn {
2455
+ padding: 6px 12px;
2456
+ font-size: 0.75rem;
2457
+ min-height: 32px;
2458
+ flex-shrink: 0;
1761
2459
 
1762
- .json-null {
1763
- color: #dc2626; // Red color for null values
2460
+ &:disabled {
2461
+ background-color: rgba(var(--color-valid), 1);
2462
+ color: var(--tertiary-color);
2463
+ cursor: default;
2464
+ transform: none !important;
1764
2465
  }
1765
2466
  }
1766
-
1767
- .jsonTruncated {
1768
- font-size: 0.7em;
1769
- color: #6b7280;
1770
- font-style: italic;
1771
- text-align: center;
1772
- padding-top: 4px;
1773
- border-top: 1px dashed #e5e7eb;
1774
- margin-top: 4px;
1775
- }
1776
2467
  }
1777
2468
 
1778
- // Smart formatted values styling
1779
- :global {
1780
- .status-active {
1781
- color: #16a34a; // Green
1782
- font-weight: 500;
1783
- }
1784
-
1785
- .status-inactive {
1786
- color: #dc2626; // Red
1787
- font-weight: 500;
1788
- }
2469
+ .suggestionReasoning {
2470
+ font-size: 0.7rem;
2471
+ color: var(--paragraph-color);
2472
+ font-style: italic;
2473
+ flex: 1;
2474
+ text-align: right;
2475
+ }
1789
2476
 
1790
- .boolean-yes {
1791
- color: #16a34a; // Green
1792
- font-weight: 500;
1793
- }
2477
+ // SweetAlert button sizing fix
2478
+ :global(.swal-button-fixed-width) {
2479
+ min-width: 120px !important;
2480
+ white-space: nowrap !important;
2481
+ }
1794
2482
 
1795
- .boolean-no {
1796
- color: #dc2626; // Red
1797
- font-weight: 500;
2483
+ // Responsive design
2484
+ @media (max-width: 768px) {
2485
+ .header {
2486
+ flex-direction: column;
2487
+ gap: 16px;
2488
+ align-items: stretch;
1798
2489
  }
1799
2490
 
1800
- .status-enabled {
1801
- color: #16a34a; // Green
1802
- font-weight: 500;
2491
+ .headerLeft,
2492
+ .headerRight {
2493
+ justify-content: center;
1803
2494
  }
1804
2495
 
1805
- .status-disabled {
1806
- color: #dc2626; // Red
1807
- font-weight: 500;
1808
- }
2496
+ .wizardProgress {
2497
+ overflow-x: auto;
2498
+ padding-bottom: 20px;
1809
2499
 
1810
- .status-approved {
1811
- color: #16a34a; // Green
1812
- font-weight: 500;
2500
+ &::before {
2501
+ display: none;
2502
+ }
1813
2503
  }
1814
2504
 
1815
- .status-rejected {
1816
- color: #dc2626; // Red
1817
- font-weight: 500;
1818
- }
2505
+ .wizardStep {
2506
+ min-width: 120px;
1819
2507
 
1820
- .status-verified {
1821
- color: #16a34a; // Green
1822
- font-weight: 500;
2508
+ .stepDescription {
2509
+ display: none;
2510
+ }
1823
2511
  }
1824
2512
 
1825
- .status-not-verified {
1826
- color: #dc2626; // Red
1827
- font-weight: 500;
2513
+ .tableGrid,
2514
+ .columnList {
2515
+ grid-template-columns: 1fr;
1828
2516
  }
1829
2517
 
1830
- // JSON link styling
1831
- .json-link {
1832
- color: #2563eb; // Blue
1833
- text-decoration: underline;
1834
-
1835
- &:hover {
1836
- text-decoration: none;
1837
- }
2518
+ .exportButtons {
2519
+ flex-direction: column;
2520
+ align-items: center;
1838
2521
  }
1839
2522
  }
1840
2523
 
1841
- // Human-friendly JSON styling
2524
+ // Human-friendly JSON styling (from original GenericReport)
1842
2525
  .humanJsonContainer {
1843
2526
  display: flex;
1844
2527
  flex-direction: column;
1845
2528
  gap: 3px;
1846
2529
  padding: 10px 12px;
1847
- background-color: #f9fafb;
1848
- border-radius: 6px;
1849
- border: 1px solid #e5e7eb;
2530
+ background-color: var(--bg-color);
2531
+ border: 1px solid var(--border-color);
2532
+ border-radius: var(--radius);
1850
2533
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
1851
2534
  font-size: 0.9rem;
1852
2535
  margin: 2px 0;
@@ -1858,12 +2541,10 @@
1858
2541
  padding: 5px 2px;
1859
2542
  line-height: 1.4;
1860
2543
  border-radius: 4px;
1861
-
1862
- &:not(:last-child) {
1863
- border-bottom: 1px dotted rgba(0, 0, 0, 0.08);
1864
- padding-bottom: 6px;
1865
- margin-bottom: 5px;
1866
- }
2544
+ transition: background-color 0.15s ease;
2545
+ min-height: 28px;
2546
+ word-break: break-word;
2547
+ overflow-wrap: break-word;
1867
2548
 
1868
2549
  &:hover {
1869
2550
  background-color: rgba(0, 0, 0, 0.03);
@@ -1872,7 +2553,7 @@
1872
2553
 
1873
2554
  .humanJsonKey {
1874
2555
  font-weight: 600;
1875
- color: #2563eb; // Blue
2556
+ color: var(--primary-color);
1876
2557
  margin-right: 12px;
1877
2558
  min-width: 120px;
1878
2559
  flex: 0 0 auto;
@@ -1883,126 +2564,68 @@
1883
2564
  flex: 1;
1884
2565
  word-break: break-word;
1885
2566
  padding-right: 5px;
1886
- color: #1f2937;
2567
+ color: var(--header-color);
1887
2568
  font-weight: 500;
1888
2569
  }
1889
2570
 
1890
- /* Suggested Filters Styles */
1891
- .suggestedFiltersContainer {
1892
- margin: 12px 0 20px;
1893
- background-color: #f3f4f6;
1894
- border: 1px solid var(--border-color, #e5e7eb);
1895
- border-radius: 6px;
1896
- padding: 12px;
1897
- }
1898
-
1899
- .suggestedFiltersHeader {
1900
- display: flex;
1901
- justify-content: space-between;
1902
- align-items: center;
1903
- margin-bottom: 10px;
1904
- padding: 6px 0;
1905
-
1906
- &:hover {
1907
- background-color: rgba(0, 0, 0, 0.02);
1908
- }
1909
- }
1910
-
1911
- .suggestedFiltersHeaderTitle {
1912
- display: flex;
1913
- flex-direction: column;
1914
-
1915
- h4 {
1916
- margin: 0;
1917
- font-size: 0.95em;
1918
- color: var(--heading-color, #1f2937);
1919
- font-weight: 600;
1920
- display: flex;
1921
- align-items: center;
1922
- gap: 6px;
1923
- }
1924
-
1925
- .suggestedFiltersCount {
1926
- font-size: 0.85em;
1927
- color: var(--muted-color, #6b7280);
1928
- font-weight: normal;
1929
- }
1930
-
1931
- small {
1932
- font-size: 0.8em;
1933
- color: var(--muted-color, #6b7280);
1934
- font-style: italic;
1935
- }
1936
- }
1937
-
1938
- .suggestedFiltersCategory {
1939
- margin-bottom: 12px;
1940
-
1941
- &:last-child {
1942
- margin-bottom: 0;
1943
- }
1944
- }
1945
-
1946
- .suggestedFiltersCategoryHeader {
1947
- font-size: 0.85em;
1948
- font-weight: 600;
1949
- color: var(--heading-color, #1f2937);
1950
- margin-bottom: 6px;
1951
- padding-bottom: 4px;
1952
- border-bottom: 1px solid var(--border-color, #e5e7eb);
1953
- }
1954
-
1955
- .suggestedFiltersList {
1956
- display: grid;
1957
- grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
1958
- gap: 8px;
1959
- }
1960
-
1961
- .suggestedFilterItem {
2571
+ // Pagination info styling
2572
+ .paginationInfo {
1962
2573
  display: flex;
1963
- justify-content: space-between;
2574
+ justify-content: center;
1964
2575
  align-items: center;
1965
- padding: 8px 12px;
1966
- background-color: white;
1967
- border: 1px solid var(--border-color, #e5e7eb);
1968
- border-radius: 4px;
1969
- cursor: pointer;
1970
- transition: all 0.2s ease;
1971
-
1972
- &:hover {
1973
- background-color: rgba(var(--primary-rgb, 37, 99, 235), 0.05);
1974
- border-color: var(--primary-color, #2563eb);
1975
- }
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;
1976
2582
  }
1977
2583
 
1978
- .suggestedFilterName {
1979
- font-size: 0.85em;
1980
- color: var(--paragraph-color, #4b5563);
1981
- flex: 1;
1982
- overflow: hidden;
1983
- text-overflow: ellipsis;
1984
- white-space: nowrap;
1985
- }
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;
1986
2593
 
1987
- .addSuggestedFilterBtn {
1988
- background-color: var(--primary-color, #2563eb);
1989
- color: white;
1990
- border: none;
1991
- border-radius: 50%;
1992
- width: 20px;
1993
- height: 20px;
1994
- display: flex;
1995
- align-items: center;
1996
- justify-content: center;
1997
- font-size: 1em;
1998
- font-weight: bold;
1999
- cursor: pointer;
2000
- transition: all 0.2s ease;
2001
- margin-left: 8px;
2002
- flex-shrink: 0;
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
+ }
2003
2621
 
2004
- &:hover {
2005
- background-color: var(--primary-hover-color, #1d4ed8);
2006
- transform: scale(1.1);
2622
+ // Ensure header alignment
2623
+ .InovuaReactDataGrid__header {
2624
+ .InovuaReactDataGrid__header-cell {
2625
+ display: flex;
2626
+ align-items: center;
2627
+ padding: 8px 12px;
2628
+ }
2629
+ }
2007
2630
  }
2008
2631
  }