@visns-studio/visns-components 5.4.19 → 5.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,905 @@
1
+ @use 'sass:color';
2
+
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 {
43
+ 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;
81
+ }
82
+
83
+ .crmtitle {
84
+ padding: 24px;
85
+ margin-bottom: 0;
86
+ border-bottom: 1px solid var(--border-color, #e5e7eb);
87
+ }
88
+
89
+ .crmtitle h1 {
90
+ color: var(--heading-color, #1f2937);
91
+ font-size: 1.5em;
92
+ font-weight: 600;
93
+ padding: 0;
94
+ margin: 0 0 8px 0;
95
+ }
96
+
97
+ .titleInfo {
98
+ display: flex;
99
+ flex-wrap: wrap;
100
+ gap: 0.5rem;
101
+ }
102
+
103
+ .titleInfo span {
104
+ font-size: 0.9em;
105
+ color: var(--muted-color, #6b7280);
106
+ }
107
+
108
+ .reportBuilder {
109
+ padding: 0;
110
+ }
111
+
112
+ .reportSection {
113
+ padding-bottom: 16px;
114
+ }
115
+
116
+ .reportSection h3 {
117
+ color: var(--heading-color, #1f2937);
118
+ font-size: 1.1em;
119
+ font-weight: 600;
120
+ margin-bottom: 12px;
121
+ }
122
+
123
+ .sectionTitle {
124
+ font-size: 1em;
125
+ font-weight: 600;
126
+ color: var(--heading-color, #1f2937);
127
+ margin-bottom: 16px;
128
+ padding-bottom: 8px;
129
+ border-bottom: 1px solid var(--border-color, #e5e7eb);
130
+ }
131
+
132
+ .tableList {
133
+ display: grid;
134
+ grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
135
+ gap: 6px;
136
+ margin-bottom: 16px;
137
+ max-height: 250px;
138
+ overflow-y: auto;
139
+ padding-right: 5px;
140
+ }
141
+
142
+ .tableItem {
143
+ background: #f9fafb;
144
+ border-radius: 4px;
145
+ padding: 6px 8px;
146
+ cursor: pointer;
147
+ transition: all 0.2s ease;
148
+ font-size: 0.85em;
149
+ color: var(--paragraph-color, #4b5563);
150
+ display: flex;
151
+ align-items: center;
152
+ justify-content: center;
153
+ text-align: center;
154
+ word-break: break-word;
155
+ height: 100%;
156
+ }
157
+
158
+ .tableItem:hover {
159
+ background: #f3f4f6;
160
+ }
161
+
162
+ .tableItemSelected {
163
+ background: var(--primary-color, #2563eb);
164
+ color: white;
165
+ font-weight: 500;
166
+ }
167
+
168
+ .columnList {
169
+ display: grid;
170
+ grid-template-columns: repeat(2, 1fr);
171
+ gap: 8px;
172
+ margin-bottom: 16px;
173
+ max-height: 400px;
174
+ overflow-y: auto;
175
+ padding-right: 5px;
176
+ }
177
+
178
+ .joinedTableSection {
179
+ margin-bottom: 16px;
180
+ }
181
+
182
+ .joinedTableHeader {
183
+ font-size: 0.9em;
184
+ font-weight: 500;
185
+ color: var(--primary-color, #2563eb);
186
+ margin-bottom: 8px;
187
+ padding-left: 4px;
188
+ border-left: 3px solid var(--primary-color, #2563eb);
189
+ }
190
+
191
+ .columnItem {
192
+ display: flex;
193
+ align-items: center;
194
+ gap: 6px;
195
+ background: #f9fafb;
196
+ border-radius: 4px;
197
+ padding: 6px 8px;
198
+ font-size: 0.85em;
199
+ color: var(--paragraph-color, #4b5563);
200
+ cursor: pointer;
201
+ transition: all 0.2s ease;
202
+ height: 36px;
203
+ overflow: hidden;
204
+ white-space: nowrap;
205
+
206
+ input[type='checkbox'] {
207
+ flex-shrink: 0;
208
+ }
209
+
210
+ span {
211
+ flex: 1;
212
+ overflow: hidden;
213
+ text-overflow: ellipsis;
214
+ white-space: nowrap;
215
+ }
216
+
217
+ small {
218
+ color: #6b7280;
219
+ font-size: 0.8em;
220
+ flex-shrink: 0;
221
+ }
222
+ }
223
+
224
+ .columnItem:hover {
225
+ background: #f3f4f6;
226
+ }
227
+
228
+ .columnItem input[type='checkbox'] {
229
+ width: 14px;
230
+ height: 14px;
231
+ accent-color: var(--primary-color, #2563eb);
232
+ margin: 0;
233
+ padding: 0;
234
+ }
235
+
236
+ .joinSection {
237
+ margin-top: 16px;
238
+ padding: 16px;
239
+ border: 1px solid var(--border-color, #e5e7eb);
240
+ border-radius: 6px;
241
+ background-color: #f9fafb;
242
+ margin-bottom: 16px;
243
+ }
244
+
245
+ .joinHeader {
246
+ display: flex;
247
+ justify-content: space-between;
248
+ align-items: center;
249
+ margin-bottom: 12px;
250
+ padding-bottom: 8px;
251
+ border-bottom: 1px solid var(--border-color, #e5e7eb);
252
+
253
+ h4 {
254
+ margin: 0;
255
+ font-size: 0.95em;
256
+ color: var(--heading-color, #1f2937);
257
+ font-weight: 600;
258
+ }
259
+ }
260
+
261
+ .removeJoinBtn {
262
+ background: none;
263
+ border: none;
264
+ color: var(--danger-color, #ef4444);
265
+ cursor: pointer;
266
+ font-size: 1.2em;
267
+ display: flex;
268
+ align-items: center;
269
+ justify-content: center;
270
+ padding: 4px 8px;
271
+ border-radius: 4px;
272
+ line-height: 1;
273
+
274
+ &:hover {
275
+ background: rgba(var(--danger-rgb, 239, 68, 68), 0.1);
276
+ }
277
+ }
278
+
279
+ .joinGrid {
280
+ display: flex;
281
+ flex-wrap: wrap;
282
+ gap: 16px;
283
+ }
284
+
285
+ .joinGridColumn {
286
+ flex: 1 1 calc(50% - 8px);
287
+ min-width: 250px;
288
+ }
289
+
290
+ .joinField {
291
+ margin-bottom: 12px;
292
+
293
+ label {
294
+ display: block;
295
+ margin-bottom: 4px;
296
+ font-size: 0.85em;
297
+ color: var(--paragraph-color, #4b5563);
298
+ font-weight: 500;
299
+ }
300
+ }
301
+
302
+ .addJoinButtonContainer {
303
+ padding: 16px 0;
304
+ border-bottom: 1px solid var(--border-color, #e5e7eb);
305
+ margin-bottom: 16px;
306
+
307
+ .suggestedJoinsSection {
308
+ margin-top: 1rem;
309
+ text-align: left;
310
+ border: 1px solid #e5e7eb;
311
+ border-radius: 0.375rem;
312
+ padding: 0.5rem;
313
+ background-color: #f9fafb;
314
+ margin-bottom: 1rem;
315
+
316
+ h4 {
317
+ margin-top: 0;
318
+ margin-bottom: 0.25rem;
319
+ font-size: 0.9rem;
320
+ color: var(--primary-color, #2563eb);
321
+ display: flex;
322
+ align-items: center;
323
+
324
+ &::before {
325
+ content: '';
326
+ display: inline-block;
327
+ width: 4px;
328
+ height: 16px;
329
+ background-color: var(--primary-color, #2563eb);
330
+ margin-right: 8px;
331
+ border-radius: 2px;
332
+ }
333
+ }
334
+
335
+ .helpText {
336
+ margin-top: 0;
337
+ margin-bottom: 0.5rem;
338
+ font-size: 0.75rem;
339
+ color: #6b7280;
340
+
341
+ .ratingInfo {
342
+ display: block;
343
+ margin-top: 0.25rem;
344
+ font-style: italic;
345
+ color: #9ca3af;
346
+ }
347
+ }
348
+
349
+ .suggestedJoinsList {
350
+ display: grid;
351
+ grid-template-columns: repeat(auto-fill, minmax(350px, 1fr));
352
+ gap: 0.5rem;
353
+ max-height: 200px;
354
+ overflow-y: auto;
355
+ padding-right: 0.5rem;
356
+
357
+ .suggestedJoinItem {
358
+ display: flex;
359
+ justify-content: space-between;
360
+ align-items: center;
361
+ padding: 0.5rem;
362
+ border: 1px solid #e5e7eb;
363
+ border-radius: 0.25rem;
364
+ background-color: white;
365
+ transition: all 0.2s ease;
366
+ font-size: 0.8rem;
367
+
368
+ &:hover {
369
+ border-color: var(--primary-color, #2563eb);
370
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
371
+ }
372
+
373
+ .suggestedJoinInfo {
374
+ display: flex;
375
+ flex-direction: row;
376
+ align-items: center;
377
+ gap: 0.5rem;
378
+ max-width: 85%;
379
+ overflow: hidden;
380
+
381
+ .suggestedJoinDescription {
382
+ font-size: 0.8rem;
383
+ white-space: nowrap;
384
+ overflow: hidden;
385
+ text-overflow: ellipsis;
386
+ min-width: 0; // This is important for text-overflow to work in flex items
387
+ }
388
+
389
+ .confidenceBadge {
390
+ font-size: 0.7rem;
391
+ color: #f59e0b;
392
+ white-space: nowrap;
393
+ flex-shrink: 0;
394
+ }
395
+ }
396
+
397
+ .addSuggestedJoinBtn {
398
+ background-color: var(--primary-color, #2563eb);
399
+ color: white;
400
+ border: none;
401
+ border-radius: 0.25rem;
402
+ padding: 0.25rem 0.5rem;
403
+ font-size: 0.75rem;
404
+ cursor: pointer;
405
+ transition: background-color 0.2s ease;
406
+ min-width: 40px;
407
+
408
+ &:hover {
409
+ background-color: color.adjust(
410
+ #2563eb,
411
+ $lightness: -10%
412
+ );
413
+ }
414
+ }
415
+ }
416
+ }
417
+ }
418
+
419
+ .loadingMessage {
420
+ margin-top: 1rem;
421
+ font-size: 0.875rem;
422
+ color: #6b7280;
423
+ font-style: italic;
424
+ }
425
+ }
426
+
427
+ .joinRow {
428
+ display: flex;
429
+ align-items: center;
430
+ gap: 10px;
431
+ margin-bottom: 12px;
432
+ }
433
+
434
+ .previewSection {
435
+ margin-top: 24px;
436
+ border: 1px solid var(--border-color, #e5e7eb);
437
+ border-radius: 8px;
438
+ padding: 16px;
439
+ background-color: #f9fafb;
440
+
441
+ h3 {
442
+ margin-top: 0;
443
+ margin-bottom: 16px;
444
+ color: var(--heading-color, #1f2937);
445
+ font-size: 1.2em;
446
+ font-weight: 600;
447
+ border-bottom: 1px solid var(--border-color, #e5e7eb);
448
+ padding-bottom: 12px;
449
+ }
450
+ }
451
+
452
+ .sqlSection {
453
+ margin-top: 24px;
454
+ border: 1px solid var(--border-color, #e5e7eb);
455
+ border-radius: 8px;
456
+ padding: 16px;
457
+ background-color: #f9fafb;
458
+
459
+ h3 {
460
+ margin-top: 0;
461
+ margin-bottom: 16px;
462
+ color: var(--heading-color, #1f2937);
463
+ font-size: 1.2em;
464
+ font-weight: 600;
465
+ border-bottom: 1px solid var(--border-color, #e5e7eb);
466
+ padding-bottom: 12px;
467
+ }
468
+ }
469
+
470
+ .sqlContainer {
471
+ background: white;
472
+ border: 1px solid var(--border-color, #e5e7eb);
473
+ border-radius: 6px;
474
+ padding: 12px;
475
+ overflow-x: auto;
476
+ margin-top: 10px;
477
+ max-height: 300px;
478
+ overflow-y: auto;
479
+ }
480
+
481
+ .sqlContainer pre {
482
+ margin: 0;
483
+ font-family: monospace;
484
+ font-size: 0.85em;
485
+ white-space: pre-wrap;
486
+ color: var(--paragraph-color, #4b5563);
487
+ }
488
+
489
+ .previewTable {
490
+ width: 100%;
491
+ border-collapse: collapse;
492
+ border: 1px solid var(--border-color, #e5e7eb);
493
+ border-radius: 6px;
494
+ overflow: hidden;
495
+ }
496
+
497
+ .previewTable th {
498
+ background: #f9fafb;
499
+ padding: 12px 16px;
500
+ text-align: left;
501
+ font-weight: 600;
502
+ color: var(--heading-color, #374151);
503
+ border-bottom: 1px solid var(--border-color, #e5e7eb);
504
+ }
505
+
506
+ .previewTable td {
507
+ padding: 12px 16px;
508
+ border-bottom: 1px solid var(--border-color, #e5e7eb);
509
+ color: var(--paragraph-color, #4b5563);
510
+ }
511
+
512
+ .actionButtons {
513
+ display: flex;
514
+ flex-wrap: wrap;
515
+ gap: 8px;
516
+ margin-top: 16px;
517
+ margin-bottom: 16px;
518
+ }
519
+
520
+ .btn {
521
+ background: var(--primary-color, #2563eb);
522
+ color: white;
523
+ border: none;
524
+ border-radius: 4px;
525
+ padding: 8px 12px;
526
+ cursor: pointer;
527
+ transition: all 0.2s ease;
528
+ font-weight: 500;
529
+ font-size: 0.85em;
530
+ }
531
+
532
+ .btn:hover {
533
+ background: var(--primary-hover-color, #1d4ed8);
534
+ }
535
+
536
+ .btn:disabled {
537
+ opacity: 0.6;
538
+ cursor: not-allowed;
539
+ }
540
+
541
+ .btnSecondary {
542
+ background: var(--secondary-color, #4b5563);
543
+ }
544
+
545
+ .btnSecondary:hover {
546
+ background: var(--secondary-hover-color, #374151);
547
+ }
548
+
549
+ .btnPrimary {
550
+ background: var(--primary-color, #2563eb);
551
+ }
552
+
553
+ .btnPrimary:hover {
554
+ background: var(--primary-hover-color, #1d4ed8);
555
+ }
556
+
557
+ .btnDanger {
558
+ background: var(--danger-color, #ef4444);
559
+ }
560
+
561
+ .btnDanger:hover {
562
+ background: var(--danger-hover-color, #dc2626);
563
+ }
564
+
565
+ .selectedColumns {
566
+ margin-top: 16px;
567
+ padding: 0;
568
+ border-radius: 6px;
569
+ max-height: 300px;
570
+ overflow-y: auto;
571
+ display: grid;
572
+ grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
573
+ gap: 8px;
574
+ }
575
+
576
+ .selectedColumnItem {
577
+ display: flex;
578
+ align-items: center;
579
+ padding: 6px 8px;
580
+ background: #f9fafb;
581
+ border-radius: 4px;
582
+ font-size: 0.85em;
583
+ cursor: grab;
584
+ transition: background 0.2s ease, box-shadow 0.2s ease;
585
+ border: 1px solid var(--border-color, #e5e7eb);
586
+ height: 36px;
587
+ overflow: hidden;
588
+ white-space: nowrap;
589
+ text-overflow: ellipsis;
590
+
591
+ span {
592
+ flex: 1;
593
+ overflow: hidden;
594
+ text-overflow: ellipsis;
595
+ white-space: nowrap;
596
+ }
597
+ }
598
+
599
+ .selectedColumnItem:hover {
600
+ background: #f3f4f6;
601
+ }
602
+
603
+ .selectedColumnItem:active {
604
+ cursor: grabbing;
605
+ }
606
+
607
+ .selectedColumnItem.dragging {
608
+ opacity: 0.5;
609
+ box-shadow: 0 0 8px rgba(0, 0, 0, 0.1);
610
+ }
611
+
612
+ .selectedColumnItem.dragOver {
613
+ border: 1px dashed var(--primary-color, #2563eb);
614
+ background-color: rgba(var(--primary-rgb, 37, 99, 235), 0.05);
615
+ }
616
+
617
+ .dragHandle {
618
+ display: flex;
619
+ align-items: center;
620
+ justify-content: center;
621
+ margin-right: 8px;
622
+ color: #9ca3af;
623
+ font-size: 1.2em;
624
+ cursor: grab;
625
+ flex-shrink: 0;
626
+ }
627
+
628
+ .columnActions {
629
+ margin-left: auto;
630
+ display: flex;
631
+ gap: 4px;
632
+ flex-shrink: 0;
633
+ }
634
+
635
+ .removeBtn {
636
+ background: none;
637
+ border: none;
638
+ color: var(--danger-color, #ef4444);
639
+ cursor: pointer;
640
+ font-size: 1em;
641
+ display: flex;
642
+ align-items: center;
643
+ justify-content: center;
644
+ padding: 4px;
645
+ border-radius: 4px;
646
+ min-width: 24px;
647
+ min-height: 24px;
648
+ }
649
+
650
+ .removeBtn:hover {
651
+ background: rgba(var(--danger-rgb, 239, 68, 68), 0.1);
652
+ }
653
+
654
+ .formGroup {
655
+ margin-bottom: 20px;
656
+ }
657
+
658
+ .formGroup label {
659
+ display: block;
660
+ margin-bottom: 8px;
661
+ font-weight: 500;
662
+ color: var(--heading-color, #374151);
663
+ font-size: 0.95em;
664
+ }
665
+
666
+ .formControl {
667
+ width: 100%;
668
+ padding: 10px 12px;
669
+ border: 1px solid var(--border-color, #d1d5db);
670
+ border-radius: 6px;
671
+ background: white;
672
+ font-size: 0.95em;
673
+ color: var(--paragraph-color, #1f2937);
674
+ }
675
+
676
+ .formControl:focus {
677
+ outline: none;
678
+ border-color: var(--primary-color, #93c5fd);
679
+ box-shadow: 0 0 0 3px rgba(var(--primary-rgb, 147, 197, 253), 0.25);
680
+ }
681
+
682
+ .formControl::placeholder {
683
+ color: #9ca3af;
684
+ }
685
+
686
+ .checkboxContainer {
687
+ display: flex;
688
+ align-items: center;
689
+ gap: 8px;
690
+ margin-bottom: 10px;
691
+ }
692
+
693
+ .checkboxContainer input[type='checkbox'] {
694
+ width: 16px;
695
+ height: 16px;
696
+ accent-color: var(--primary-color, #2563eb);
697
+ }
698
+
699
+ .checkboxContainer label {
700
+ font-size: 0.9em;
701
+ color: var(--paragraph-color, #4b5563);
702
+ margin-bottom: 0;
703
+ }
704
+
705
+ .savedReportsSection {
706
+ margin-bottom: 20px;
707
+ }
708
+
709
+ .sectionHeader {
710
+ display: flex;
711
+ justify-content: space-between;
712
+ align-items: center;
713
+ margin-bottom: 10px;
714
+ }
715
+
716
+ .sectionHeader h3 {
717
+ margin: 0;
718
+ }
719
+
720
+ .btnSmall {
721
+ padding: 4px 8px;
722
+ font-size: 0.8em;
723
+ }
724
+
725
+ .savedReportsList {
726
+ max-height: 300px;
727
+ overflow-y: auto;
728
+ margin-top: 10px;
729
+ border: 1px solid var(--border-color, #e5e7eb);
730
+ border-radius: 6px;
731
+ display: grid;
732
+ grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
733
+ gap: 1px;
734
+ background-color: var(--border-color, #e5e7eb);
735
+ padding: 1px;
736
+ }
737
+
738
+ .savedReportItem {
739
+ display: flex;
740
+ justify-content: space-between;
741
+ align-items: center;
742
+ padding: 8px 12px;
743
+ background: #f9fafb;
744
+ transition: background 0.2s ease;
745
+ height: 40px;
746
+ overflow: hidden;
747
+ }
748
+
749
+ .savedReportItem:hover {
750
+ background: #f3f4f6;
751
+ }
752
+
753
+ .selectedReportItem {
754
+ background: rgba(var(--primary-rgb, 37, 99, 235), 0.1);
755
+ }
756
+
757
+ .selectedReportItem:hover {
758
+ background: rgba(var(--primary-rgb, 37, 99, 235), 0.15);
759
+ }
760
+
761
+ .reportInfo {
762
+ display: flex;
763
+ align-items: center;
764
+ gap: 8px;
765
+ cursor: pointer;
766
+ flex: 1;
767
+ overflow: hidden;
768
+ white-space: nowrap;
769
+ text-overflow: ellipsis;
770
+ }
771
+
772
+ .reportName {
773
+ font-size: 0.9em;
774
+ color: var(--paragraph-color, #4b5563);
775
+ overflow: hidden;
776
+ text-overflow: ellipsis;
777
+ white-space: nowrap;
778
+ }
779
+
780
+ .publicBadge {
781
+ font-size: 0.7em;
782
+ background: var(--primary-color, #2563eb);
783
+ color: white;
784
+ padding: 2px 6px;
785
+ border-radius: 10px;
786
+ }
787
+
788
+ .reportActions {
789
+ display: flex;
790
+ gap: 4px;
791
+ flex-shrink: 0;
792
+ }
793
+
794
+ .actionBtn {
795
+ background: none;
796
+ border: none;
797
+ cursor: pointer;
798
+ font-size: 1em;
799
+ min-width: 24px;
800
+ min-height: 24px;
801
+ display: flex;
802
+ align-items: center;
803
+ justify-content: center;
804
+ border-radius: 4px;
805
+ color: var(--primary-color, #2563eb);
806
+ transition: all 0.2s ease;
807
+ flex-shrink: 0;
808
+ }
809
+
810
+ .actionBtn:hover {
811
+ background: rgba(var(--primary-rgb, 37, 99, 235), 0.1);
812
+ }
813
+
814
+ .deleteBtn {
815
+ color: var(--danger-color, #ef4444);
816
+ }
817
+
818
+ .deleteBtn:hover {
819
+ background: rgba(var(--danger-rgb, 239, 68, 68), 0.1);
820
+ }
821
+
822
+ .selectControl {
823
+ min-width: 200px;
824
+ padding: 8px 12px;
825
+ border: 1px solid var(--border-color, #d1d5db);
826
+ border-radius: 6px;
827
+ background: white;
828
+ font-size: 0.95em;
829
+ color: var(--paragraph-color, #1f2937);
830
+ }
831
+
832
+ .selectControl:focus {
833
+ outline: none;
834
+ border-color: var(--primary-color, #93c5fd);
835
+ }
836
+
837
+ .emptyMessage {
838
+ color: var(--muted-color, #6b7280);
839
+ font-size: 0.95em;
840
+ margin: 16px 0;
841
+ }
842
+
843
+ .jsonPreview {
844
+ max-width: 100%;
845
+ max-height: 150px;
846
+ overflow: auto;
847
+ background-color: #f8f9fa;
848
+ border-radius: 4px;
849
+ padding: 6px;
850
+ border: 1px solid #e5e7eb;
851
+ position: relative;
852
+ z-index: 10;
853
+
854
+ pre {
855
+ margin: 0;
856
+ font-family: monospace;
857
+ font-size: 0.75em;
858
+ white-space: pre-wrap;
859
+ color: #1f2937;
860
+ overflow-wrap: break-word;
861
+ word-break: break-word;
862
+
863
+ // Style JSON keys to make them stand out
864
+ // This uses a CSS hack to style JSON keys in the pre element
865
+ // It targets the text before the colon
866
+ &::before {
867
+ content: attr(data-content);
868
+ display: none;
869
+ }
870
+ }
871
+
872
+ // Add custom styling for JSON keys and values
873
+ :global {
874
+ .json-key {
875
+ color: #2563eb; // Primary blue color
876
+ font-weight: 500;
877
+ }
878
+
879
+ .json-string {
880
+ color: #16a34a; // Green color for strings
881
+ }
882
+
883
+ .json-number {
884
+ color: #9333ea; // Purple color for numbers
885
+ }
886
+
887
+ .json-boolean {
888
+ color: #f59e0b; // Amber color for booleans
889
+ }
890
+
891
+ .json-null {
892
+ color: #dc2626; // Red color for null values
893
+ }
894
+ }
895
+
896
+ .jsonTruncated {
897
+ font-size: 0.7em;
898
+ color: #6b7280;
899
+ font-style: italic;
900
+ text-align: center;
901
+ padding-top: 4px;
902
+ border-top: 1px dashed #e5e7eb;
903
+ margin-top: 4px;
904
+ }
905
+ }