@visns-studio/visns-components 5.10.10 → 5.11.1

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,367 @@
1
+ /* Contact Selector Modal Styles */
2
+
3
+ .contact-selector-dialog {
4
+ max-width: 90vw !important;
5
+ width: 600px !important;
6
+ min-width: 400px !important;
7
+ }
8
+
9
+ .contact-selector-content {
10
+ max-width: 100% !important;
11
+ overflow: hidden !important;
12
+ }
13
+
14
+ .contact-selector-modal {
15
+ text-align: left;
16
+ font-family: inherit;
17
+ }
18
+
19
+ .contact-modal-header {
20
+ margin-bottom: 15px;
21
+ padding-bottom: 10px;
22
+ border-bottom: 1px solid #e5e7eb;
23
+ }
24
+
25
+ .contact-modal-message {
26
+ margin: 0 0 8px 0;
27
+ color: #374151;
28
+ font-size: 14px;
29
+ }
30
+
31
+ .field-info {
32
+ color: #6b7280;
33
+ font-size: 12px;
34
+ }
35
+
36
+ /* Existing contacts section */
37
+ .existing-contacts {
38
+ margin-bottom: 18px;
39
+ }
40
+
41
+ .existing-contacts h4 {
42
+ margin: 0 0 8px 0;
43
+ font-size: 13px;
44
+ font-weight: 600;
45
+ color: #374151;
46
+ }
47
+
48
+ .contacts-list {
49
+ max-height: 180px;
50
+ overflow-y: auto;
51
+ border: 1px solid #e5e7eb;
52
+ border-radius: 4px;
53
+ padding: 6px;
54
+ background-color: #f9fafb;
55
+ }
56
+
57
+ .contact-item {
58
+ display: flex;
59
+ justify-content: space-between;
60
+ align-items: flex-start;
61
+ padding: 8px;
62
+ margin-bottom: 6px;
63
+ background-color: #ffffff;
64
+ border: 1px solid #e5e7eb;
65
+ border-radius: 4px;
66
+ position: relative;
67
+ }
68
+
69
+ .contact-item:last-child {
70
+ margin-bottom: 0;
71
+ }
72
+
73
+ .contact-info {
74
+ flex: 1;
75
+ min-width: 0;
76
+ }
77
+
78
+ .contact-info strong {
79
+ color: #111827;
80
+ font-weight: 500;
81
+ display: block;
82
+ margin-bottom: 2px;
83
+ }
84
+
85
+ .contact-info small {
86
+ color: #6b7280;
87
+ font-size: 12px;
88
+ }
89
+
90
+ .contact-type {
91
+ display: inline-block;
92
+ background-color: #dbeafe;
93
+ color: #1e40af;
94
+ padding: 2px 6px;
95
+ border-radius: 10px;
96
+ font-size: 10px;
97
+ font-weight: 500;
98
+ margin-top: 4px;
99
+ }
100
+
101
+ .contact-item .contact-type {
102
+ position: absolute;
103
+ top: 8px;
104
+ right: 35px;
105
+ }
106
+
107
+ .remove-contact-btn {
108
+ background-color: #dc2626;
109
+ color: white;
110
+ border: none;
111
+ border-radius: 50%;
112
+ width: 24px;
113
+ height: 24px;
114
+ font-size: 14px;
115
+ font-weight: bold;
116
+ cursor: pointer;
117
+ display: flex;
118
+ align-items: center;
119
+ justify-content: center;
120
+ flex-shrink: 0;
121
+ transition: background-color 0.2s ease;
122
+ }
123
+
124
+ .remove-contact-btn:hover {
125
+ background-color: #b91c1c;
126
+ }
127
+
128
+ .no-contacts {
129
+ text-align: center;
130
+ color: #6b7280;
131
+ font-style: italic;
132
+ margin: 0;
133
+ padding: 20px;
134
+ }
135
+
136
+ /* Add contact section */
137
+ .add-contact-section {
138
+ border-top: 1px solid #e5e7eb;
139
+ padding-top: 15px;
140
+ }
141
+
142
+ .add-contact-section h4 {
143
+ margin: 0 0 10px 0;
144
+ font-size: 13px;
145
+ font-weight: 600;
146
+ color: #374151;
147
+ }
148
+
149
+ .existing-contact-selector {
150
+ margin-bottom: 15px;
151
+ padding: 12px;
152
+ background-color: #f9fafb;
153
+ border-radius: 6px;
154
+ border: 1px solid #e5e7eb;
155
+ }
156
+
157
+ .existing-contact-selector label {
158
+ display: block;
159
+ margin-bottom: 6px;
160
+ font-weight: 500;
161
+ color: #374151;
162
+ font-size: 12px;
163
+ }
164
+
165
+ .contact-select-row {
166
+ display: flex;
167
+ gap: 8px;
168
+ align-items: flex-end;
169
+ }
170
+
171
+ .existing-contact-selector select {
172
+ flex: 1;
173
+ margin: 0 !important;
174
+ padding: 6px 10px !important;
175
+ border: 1px solid #d1d5db !important;
176
+ border-radius: 4px !important;
177
+ font-size: 13px !important;
178
+ background-color: white !important;
179
+ height: 32px !important;
180
+ min-width: 0;
181
+ }
182
+
183
+ .add-contact-btn {
184
+ background-color: #4f46e5;
185
+ color: white;
186
+ border: none;
187
+ padding: 6px 12px;
188
+ border-radius: 4px;
189
+ font-size: 12px;
190
+ font-weight: 500;
191
+ cursor: pointer;
192
+ transition: background-color 0.2s ease;
193
+ height: 32px;
194
+ white-space: nowrap;
195
+ flex-shrink: 0;
196
+ }
197
+
198
+ .add-contact-btn:hover {
199
+ background-color: #4338ca;
200
+ }
201
+
202
+ .add-contact-btn:disabled {
203
+ background-color: #9ca3af;
204
+ cursor: not-allowed;
205
+ }
206
+
207
+ /* Manual contact section */
208
+ .manual-contact-section {
209
+ border-top: 1px solid #e5e7eb;
210
+ padding-top: 12px;
211
+ }
212
+
213
+ .manual-contact-toggle {
214
+ margin-bottom: 10px;
215
+ }
216
+
217
+ .toggle-manual-btn {
218
+ background-color: #6b7280;
219
+ color: white;
220
+ border: none;
221
+ padding: 8px 16px;
222
+ border-radius: 4px;
223
+ font-size: 12px;
224
+ cursor: pointer;
225
+ transition: background-color 0.2s ease;
226
+ }
227
+
228
+ .toggle-manual-btn:hover {
229
+ background-color: #4b5563;
230
+ }
231
+
232
+ .manual-contact-form {
233
+ padding: 12px;
234
+ background-color: #f9fafb;
235
+ border-radius: 6px;
236
+ border: 1px solid #e5e7eb;
237
+ }
238
+
239
+ .form-group {
240
+ margin-bottom: 10px;
241
+ }
242
+
243
+ .form-group:last-child {
244
+ margin-bottom: 0;
245
+ }
246
+
247
+ .form-field-row {
248
+ display: flex;
249
+ gap: 8px;
250
+ align-items: center;
251
+ }
252
+
253
+ .form-group label {
254
+ font-weight: 500;
255
+ color: #374151;
256
+ font-size: 12px;
257
+ white-space: nowrap;
258
+ min-width: 60px;
259
+ flex-shrink: 0;
260
+ }
261
+
262
+ .form-group input {
263
+ flex: 1;
264
+ margin: 0 !important;
265
+ padding: 6px 10px !important;
266
+ border: 1px solid #d1d5db !important;
267
+ border-radius: 4px !important;
268
+ font-size: 13px !important;
269
+ box-sizing: border-box !important;
270
+ height: 32px !important;
271
+ min-width: 0;
272
+ }
273
+
274
+ .form-group input:focus {
275
+ border-color: #4f46e5 !important;
276
+ outline: none !important;
277
+ box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.1) !important;
278
+ }
279
+
280
+ .form-group input[style*="border-color: rgb(220, 38, 38)"] {
281
+ border-color: #dc2626 !important;
282
+ }
283
+
284
+ /* Contact limits */
285
+ .contact-limits {
286
+ margin-top: 15px;
287
+ text-align: center;
288
+ }
289
+
290
+ .contact-limits small {
291
+ color: #6b7280;
292
+ font-size: 11px;
293
+ }
294
+
295
+ /* Responsive design */
296
+ @media (max-width: 640px) {
297
+ .contact-selector-dialog {
298
+ width: 95vw !important;
299
+ max-width: 95vw !important;
300
+ min-width: 300px !important;
301
+ }
302
+
303
+ .contact-select-row {
304
+ flex-direction: column;
305
+ gap: 6px;
306
+ align-items: stretch;
307
+ }
308
+
309
+ .existing-contact-selector select {
310
+ margin-bottom: 6px !important;
311
+ }
312
+
313
+ .add-contact-btn {
314
+ width: 100%;
315
+ height: 36px;
316
+ }
317
+
318
+ .form-field-row {
319
+ flex-direction: column;
320
+ gap: 4px;
321
+ align-items: stretch;
322
+ }
323
+
324
+ .form-group label {
325
+ min-width: auto;
326
+ margin-bottom: 4px;
327
+ }
328
+
329
+ .form-group input {
330
+ height: 36px !important;
331
+ }
332
+
333
+ .contact-item {
334
+ flex-direction: column;
335
+ align-items: flex-start;
336
+ }
337
+
338
+ .contact-type {
339
+ position: static !important;
340
+ margin-top: 8px;
341
+ }
342
+
343
+ .remove-contact-btn {
344
+ position: absolute;
345
+ top: 8px;
346
+ right: 8px;
347
+ }
348
+ }
349
+
350
+ /* Integration with SweetAlert2 */
351
+ .contact-selector-dialog .swal2-html-container {
352
+ margin: 0 !important;
353
+ padding: 0 !important;
354
+ overflow: visible !important;
355
+ }
356
+
357
+ .contact-selector-dialog .swal2-actions {
358
+ margin-top: 20px !important;
359
+ }
360
+
361
+ .contact-selector-dialog .swal2-confirm {
362
+ background-color: var(--primary-color, #4f46e5) !important;
363
+ }
364
+
365
+ .contact-selector-dialog .swal2-cancel {
366
+ background-color: #6b7280 !important;
367
+ }
@@ -0,0 +1,84 @@
1
+ /* Compact Date Picker Dialog Styles */
2
+ .date-picker-dialog {
3
+ max-width: 90vw !important;
4
+ width: auto !important;
5
+ min-width: 300px !important;
6
+ box-sizing: border-box !important;
7
+ }
8
+
9
+ .date-picker-content {
10
+ overflow: hidden !important;
11
+ word-wrap: break-word !important;
12
+ max-width: 100% !important;
13
+ padding: 0 !important;
14
+ }
15
+
16
+ .date-picker-dialog .swal2-html-container {
17
+ max-width: 100% !important;
18
+ overflow: hidden !important;
19
+ margin: 0 !important;
20
+ padding: 0.5rem 0 !important;
21
+ }
22
+
23
+ .date-picker-dialog .swal2-title {
24
+ font-size: 1.1rem !important;
25
+ margin-bottom: 0.5rem !important;
26
+ padding: 0 !important;
27
+ }
28
+
29
+ .date-picker-dialog #swal-date-input {
30
+ width: 100% !important;
31
+ max-width: 100% !important;
32
+ box-sizing: border-box !important;
33
+ padding: 8px 10px !important;
34
+ border: 1px solid #d1d5db !important;
35
+ border-radius: 4px !important;
36
+ font-size: 13px !important;
37
+ font-family: inherit !important;
38
+ background-color: #ffffff !important;
39
+ outline: none !important;
40
+ transition: border-color 0.2s ease !important;
41
+ margin: 0 !important;
42
+ display: block !important;
43
+ overflow: hidden !important;
44
+ height: 34px !important;
45
+ }
46
+
47
+ .date-picker-dialog #swal-date-input:focus {
48
+ border-color: #4f46e5 !important;
49
+ box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.1) !important;
50
+ }
51
+
52
+ .date-picker-dialog #swal-date-input:hover {
53
+ border-color: #9ca3af !important;
54
+ }
55
+
56
+ /* Compact responsive adjustments */
57
+ @media (max-width: 480px) {
58
+ .date-picker-dialog {
59
+ width: 95vw !important;
60
+ max-width: 95vw !important;
61
+ min-width: 280px !important;
62
+ margin: 10px !important;
63
+ }
64
+
65
+ .date-picker-dialog #swal-date-input {
66
+ padding: 8px 10px !important;
67
+ font-size: 16px !important; /* Prevents zoom on iOS */
68
+ height: 36px !important;
69
+ }
70
+
71
+ .date-picker-dialog .swal2-title {
72
+ font-size: 1rem !important;
73
+ }
74
+ }
75
+
76
+ /* Fix for SweetAlert2 default input styles that might conflict */
77
+ .date-picker-dialog .swal2-input.swal2-inputerror {
78
+ border-color: #dc2626 !important;
79
+ }
80
+
81
+ .date-picker-dialog .swal2-input.swal2-inputerror:focus {
82
+ border-color: #dc2626 !important;
83
+ box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.1) !important;
84
+ }
@@ -742,3 +742,80 @@
742
742
  box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.1); /* Gentle shadow for depth */
743
743
  font-style: italic; /* Optional: Add a subtle font style */
744
744
  }
745
+
746
+ /* Enhanced JSON Rendering Styles */
747
+ .jsonQuestionAnswer {
748
+ padding: 0.75rem;
749
+ background: rgba(var(--primary-rgb), 0.02);
750
+ border-radius: 4px;
751
+ border: 1px solid rgba(var(--primary-rgb), 0.08);
752
+ }
753
+
754
+ .questionAnswerPair {
755
+ margin-bottom: 1rem;
756
+ padding: 0.75rem;
757
+ background: rgba(var(--primary-rgb), 0.01);
758
+ border-radius: 4px;
759
+ border-left: 3px solid var(--secondary-color);
760
+
761
+ &:last-child {
762
+ margin-bottom: 0;
763
+ }
764
+ }
765
+
766
+ .question {
767
+ margin-bottom: 0.4rem;
768
+
769
+ strong {
770
+ color: var(--primary-color);
771
+ font-size: 0.9rem;
772
+ font-weight: 600;
773
+ }
774
+ }
775
+
776
+ .answer {
777
+ color: var(--paragraph-color);
778
+ font-size: 0.85rem;
779
+ margin-left: 1rem;
780
+ font-weight: 500;
781
+ }
782
+
783
+ .jsonKeyValue {
784
+ padding: 0.75rem;
785
+ background: rgba(var(--primary-rgb), 0.02);
786
+ border-radius: 4px;
787
+ border: 1px solid rgba(var(--primary-rgb), 0.08);
788
+ }
789
+
790
+ .keyValuePair {
791
+ margin-bottom: 0.6rem;
792
+ padding: 0.5rem;
793
+ background: rgba(var(--primary-rgb), 0.01);
794
+ border-radius: 3px;
795
+ display: flex;
796
+ gap: 0.5rem;
797
+
798
+ &:last-child {
799
+ margin-bottom: 0;
800
+ }
801
+
802
+ strong {
803
+ color: var(--primary-color);
804
+ font-size: 0.85rem;
805
+ min-width: 120px;
806
+ flex: 0 0 auto;
807
+ }
808
+ }
809
+
810
+ .jsonRaw {
811
+ background: rgba(var(--primary-rgb), 0.03);
812
+ border: 1px solid rgba(var(--primary-rgb), 0.1);
813
+ border-radius: 4px;
814
+ padding: 0.75rem;
815
+ font-family: monospace;
816
+ font-size: 0.8rem;
817
+ line-height: 1.4;
818
+ color: var(--paragraph-color);
819
+ overflow-x: auto;
820
+ white-space: pre-wrap;
821
+ }
@@ -405,6 +405,51 @@
405
405
  }
406
406
  }
407
407
 
408
+ .multiselectContainer {
409
+ min-width: 200px;
410
+ }
411
+
412
+ // Override MultiSelect component styles to match our filter theme
413
+ :global(.react-select__control) {
414
+ border: 1px solid rgba(var(--primary-rgb, 0, 123, 255), 0.2) !important;
415
+ border-radius: 4px !important;
416
+ font-size: 0.85rem !important;
417
+ min-height: 34px !important;
418
+
419
+ &:hover {
420
+ border-color: rgba(var(--primary-rgb, 0, 123, 255), 0.4) !important;
421
+ }
422
+ }
423
+
424
+ :global(.react-select__control--is-focused) {
425
+ border-color: var(--primary-color, #007bff) !important;
426
+ box-shadow: 0 0 0 2px rgba(var(--primary-rgb, 0, 123, 255), 0.15) !important;
427
+ }
428
+
429
+ :global(.react-select__placeholder) {
430
+ font-size: 0.85rem !important;
431
+ color: rgba(var(--paragraph-rgb, 33, 37, 41), 0.6) !important;
432
+ }
433
+
434
+ :global(.react-select__multi-value) {
435
+ background-color: rgba(var(--primary-rgb, 0, 123, 255), 0.1) !important;
436
+ border-radius: 3px !important;
437
+ }
438
+
439
+ :global(.react-select__multi-value__label) {
440
+ color: var(--primary-color, #007bff) !important;
441
+ font-size: 0.8rem !important;
442
+ }
443
+
444
+ :global(.react-select__multi-value__remove) {
445
+ color: var(--primary-color, #007bff) !important;
446
+
447
+ &:hover {
448
+ background-color: var(--primary-color, #007bff) !important;
449
+ color: white !important;
450
+ }
451
+ }
452
+
408
453
  .clearFiltersButton {
409
454
  padding: 6px 12px;
410
455
  border-radius: 4px;
@@ -527,6 +572,37 @@
527
572
  max-width: 120px;
528
573
  display: inline-block;
529
574
  }
575
+ }
576
+
577
+ /* Date with contacts display */
578
+ .dateWithContacts {
579
+ display: flex;
580
+ flex-direction: column;
581
+ gap: 4px;
582
+ min-width: 140px;
583
+ }
584
+
585
+ .dateValue {
586
+ font-weight: 500;
587
+ color: var(--paragraph-color, #212529);
588
+ font-size: 0.9rem;
589
+ }
590
+
591
+ .contactsSummary {
592
+ font-size: 0.75rem;
593
+ color: var(--primary-color, #007bff);
594
+ background-color: rgba(var(--primary-rgb, 0, 123, 255), 0.1);
595
+ padding: 2px 6px;
596
+ border-radius: 12px;
597
+ display: flex;
598
+ align-items: center;
599
+ gap: 4px;
600
+ width: fit-content;
601
+ cursor: help;
602
+
603
+ &:hover {
604
+ background-color: rgba(var(--primary-rgb, 0, 123, 255), 0.2);
605
+ }
530
606
 
531
607
  &[data-type='datetime'] {
532
608
  min-width: 160px;
@@ -645,3 +721,103 @@
645
721
  color: rgba(var(--paragraph-color-rgb), 0.65);
646
722
  }
647
723
  }
724
+
725
+ // Enhanced Contact Tooltip Styles
726
+ .contactTooltip {
727
+ background: white;
728
+ border: 1px solid rgba(0, 0, 0, 0.1);
729
+ border-radius: 8px;
730
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
731
+ padding: 0;
732
+ min-width: 250px;
733
+ max-width: 350px;
734
+ font-size: 0.875rem;
735
+ line-height: 1.4;
736
+ position: relative;
737
+ animation: tooltipFadeIn 0.2s ease-out;
738
+ }
739
+
740
+ @keyframes tooltipFadeIn {
741
+ from {
742
+ opacity: 0;
743
+ transform: translateX(-50%) translateY(-100%) scale(0.95);
744
+ }
745
+ to {
746
+ opacity: 1;
747
+ transform: translateX(-50%) translateY(-100%) scale(1);
748
+ }
749
+ }
750
+
751
+ .contactTooltipHeader {
752
+ background: var(--primary-color, #007bff);
753
+ color: white;
754
+ padding: 8px 12px;
755
+ border-radius: 7px 7px 0 0;
756
+ font-size: 0.8rem;
757
+ font-weight: 600;
758
+ text-align: center;
759
+ }
760
+
761
+ .contactTooltipBody {
762
+ padding: 0;
763
+ max-height: 200px;
764
+ overflow-y: auto;
765
+ }
766
+
767
+ .contactTooltipItem {
768
+ padding: 10px 12px;
769
+ border-bottom: 1px solid rgba(0, 0, 0, 0.05);
770
+
771
+ &:last-child {
772
+ border-bottom: none;
773
+ }
774
+
775
+ &:hover {
776
+ background-color: rgba(var(--primary-rgb, 0, 123, 255), 0.03);
777
+ }
778
+ }
779
+
780
+ .contactName {
781
+ font-weight: 600;
782
+ color: var(--paragraph-color, #212529);
783
+ margin-bottom: 2px;
784
+ }
785
+
786
+ .contactEmail {
787
+ color: var(--primary-color, #007bff);
788
+ font-size: 0.8rem;
789
+ margin-bottom: 4px;
790
+ word-break: break-all;
791
+ }
792
+
793
+ .contactType {
794
+ font-size: 0.75rem;
795
+ color: var(--secondary-color, #6c757d);
796
+ text-transform: uppercase;
797
+ letter-spacing: 0.5px;
798
+ font-weight: 500;
799
+ }
800
+
801
+ .contactTooltipArrow {
802
+ position: absolute;
803
+ bottom: -6px;
804
+ left: 50%;
805
+ transform: translateX(-50%);
806
+ width: 0;
807
+ height: 0;
808
+ border-left: 6px solid transparent;
809
+ border-right: 6px solid transparent;
810
+ border-top: 6px solid white;
811
+
812
+ &::before {
813
+ content: '';
814
+ position: absolute;
815
+ bottom: 1px;
816
+ left: -7px;
817
+ width: 0;
818
+ height: 0;
819
+ border-left: 7px solid transparent;
820
+ border-right: 7px solid transparent;
821
+ border-top: 7px solid rgba(0, 0, 0, 0.1);
822
+ }
823
+ }