@visns-studio/visns-components 5.15.10 → 5.15.12

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,760 @@
1
+ .providerCard {
2
+ background: white;
3
+ border-radius: 12px;
4
+ padding: 24px;
5
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
6
+ transition: all 0.3s ease;
7
+ border: 2px solid transparent;
8
+ min-height: 200px;
9
+ display: flex;
10
+ flex-direction: column;
11
+
12
+ &:hover {
13
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
14
+ transform: translateY(-2px);
15
+ }
16
+
17
+ &.connected {
18
+ border-color: #28a745;
19
+ background: linear-gradient(135deg, #ffffff 0%, #f8fff9 100%);
20
+ }
21
+
22
+ &.disconnected {
23
+ border-color: #e9ecef;
24
+ }
25
+
26
+ // Compact mode styles
27
+ &.compact {
28
+ padding: 16px;
29
+ min-height: 160px;
30
+
31
+ .header {
32
+ margin-bottom: 12px;
33
+
34
+ .icon {
35
+ padding: 8px;
36
+ border-radius: 8px;
37
+ margin-right: 12px;
38
+
39
+ .providerIcon {
40
+ // Icon is already sized in the component
41
+ }
42
+ }
43
+
44
+ .info {
45
+ h3 {
46
+ font-size: 1.1rem;
47
+ margin-bottom: 4px;
48
+ }
49
+
50
+ .status {
51
+ font-size: 0.8rem;
52
+ padding: 3px 8px;
53
+ }
54
+ }
55
+ }
56
+
57
+ .actions {
58
+ margin-top: auto;
59
+ gap: 6px;
60
+
61
+ .button {
62
+ padding: 6px 12px;
63
+ font-size: 0.85rem;
64
+ min-width: 80px;
65
+
66
+ &.compactButton {
67
+ padding: 8px 12px;
68
+ font-size: 0.85rem;
69
+ }
70
+ }
71
+
72
+ .dataTypeActions {
73
+ &.compactActions {
74
+ display: flex;
75
+ gap: 4px;
76
+
77
+ .button {
78
+ flex: 1;
79
+ min-width: 70px;
80
+ }
81
+ }
82
+ }
83
+ }
84
+
85
+ .compactDataTypes {
86
+ margin: 8px 0 12px 0;
87
+
88
+ .compactDataType {
89
+ display: flex;
90
+ align-items: center;
91
+ gap: 6px;
92
+ padding: 4px 8px;
93
+ background: #f8f9fa;
94
+ border-radius: 6px;
95
+ margin-bottom: 4px;
96
+ font-size: 0.8rem;
97
+ transition: all 0.2s ease;
98
+
99
+ .dataIcon {
100
+ color: var(--secondary-color, #007bff);
101
+ flex-shrink: 0;
102
+ }
103
+
104
+ .dataTypeName {
105
+ flex: 1;
106
+ font-weight: 500;
107
+ color: var(--paragraph-color, #333);
108
+ }
109
+
110
+ &.clickableRow {
111
+ cursor: pointer;
112
+ border: 1px solid transparent;
113
+
114
+ &:hover {
115
+ border-color: var(--secondary-color, #3cbf7d);
116
+ background: rgba(var(--secondary-rgb, 60, 191, 125), 0.1);
117
+ transform: translateY(-1px);
118
+ box-shadow: 0 2px 8px rgba(var(--secondary-rgb, 60, 191, 125), 0.15);
119
+ }
120
+
121
+ &:active {
122
+ transform: translateY(0);
123
+ }
124
+ }
125
+
126
+ .syncSettingsIndicator {
127
+ display: flex;
128
+ align-items: center;
129
+ color: var(--paragraph-color, #666);
130
+ opacity: 0.7;
131
+ transition: opacity 0.2s ease;
132
+ }
133
+
134
+ &.clickableRow:hover .syncSettingsIndicator {
135
+ opacity: 1;
136
+ color: var(--secondary-color, #3cbf7d);
137
+ }
138
+
139
+ .previewIconButton {
140
+ background: none;
141
+ border: none;
142
+ cursor: pointer;
143
+ padding: 2px;
144
+ border-radius: 3px;
145
+ transition: background-color 0.2s ease;
146
+ display: flex;
147
+ align-items: center;
148
+ justify-content: center;
149
+
150
+ &:hover {
151
+ background-color: #e9ecef;
152
+ }
153
+
154
+ &:disabled {
155
+ cursor: not-allowed;
156
+ opacity: 0.5;
157
+ }
158
+
159
+ .directionIcon {
160
+ color: #6c757d;
161
+ transition: color 0.2s ease;
162
+ }
163
+
164
+ &:hover:not(:disabled) .directionIcon {
165
+ color: #007bff;
166
+ }
167
+ }
168
+
169
+ .directionIcon {
170
+ color: #6c757d;
171
+ flex-shrink: 0;
172
+ }
173
+ }
174
+ }
175
+ }
176
+
177
+ .header {
178
+ display: flex;
179
+ align-items: flex-start;
180
+ margin-bottom: 20px;
181
+
182
+ .icon {
183
+ background: #f8f9fa;
184
+ padding: 12px;
185
+ border-radius: 12px;
186
+ margin-right: 16px;
187
+ flex-shrink: 0;
188
+ display: flex;
189
+ align-items: center;
190
+ justify-content: center;
191
+
192
+ .providerIcon {
193
+ color: #007bff;
194
+ }
195
+ }
196
+
197
+ .info {
198
+ flex: 1;
199
+
200
+ h3 {
201
+ margin: 0 0 8px 0;
202
+ font-size: 1.3rem;
203
+ color: #333;
204
+ font-weight: 600;
205
+ }
206
+
207
+ .status {
208
+ padding: 4px 12px;
209
+ border-radius: 20px;
210
+ font-size: 0.85rem;
211
+ font-weight: 500;
212
+ display: inline-block;
213
+
214
+ &.statusConnected {
215
+ background: #d4edda;
216
+ color: #155724;
217
+ }
218
+
219
+ &.statusExpired {
220
+ background: #fff3cd;
221
+ color: #856404;
222
+ }
223
+
224
+ &.statusError {
225
+ background: #f8d7da;
226
+ color: #721c24;
227
+ }
228
+
229
+ &.statusDisconnected {
230
+ background: #e9ecef;
231
+ color: #6c757d;
232
+ }
233
+ }
234
+ }
235
+ }
236
+
237
+ .content {
238
+ margin-bottom: 20px;
239
+
240
+ .dataTypes {
241
+ margin-top: 16px;
242
+
243
+ h4 {
244
+ font-size: 1rem;
245
+ margin-bottom: 12px;
246
+ color: #555;
247
+ font-weight: 600;
248
+ }
249
+
250
+ .dataTypesList {
251
+ .dataType {
252
+ margin-bottom: 12px;
253
+ padding: 12px;
254
+ background: #f8f9fa;
255
+ border-radius: 8px;
256
+ border-left: 3px solid #007bff;
257
+
258
+ .dataTypeHeader {
259
+ display: flex;
260
+ align-items: center;
261
+ gap: 8px;
262
+ margin-bottom: 4px;
263
+
264
+ .dataIcon {
265
+ color: #007bff;
266
+ flex-shrink: 0;
267
+ }
268
+
269
+ .dataTypeName {
270
+ font-weight: 500;
271
+ color: #333;
272
+ flex: 1;
273
+ }
274
+
275
+ .syncDirection {
276
+ .directionIcon {
277
+ color: #6c757d;
278
+ padding: 2px;
279
+ background: white;
280
+ border-radius: 4px;
281
+ }
282
+ }
283
+ }
284
+
285
+ .dataTypeDescription {
286
+ font-size: 0.85rem;
287
+ color: #666;
288
+ margin-bottom: 6px;
289
+ }
290
+
291
+ .syncInfo {
292
+ .syncDirectionText {
293
+ color: #6c757d;
294
+ font-style: italic;
295
+ font-size: 0.8rem;
296
+ }
297
+ }
298
+ }
299
+ }
300
+ }
301
+
302
+ .testResult {
303
+ margin-top: 12px;
304
+ padding: 10px 12px;
305
+ border-radius: 6px;
306
+ font-size: 0.9rem;
307
+
308
+ &.success {
309
+ background: #d4edda;
310
+ color: #155724;
311
+ border: 1px solid #c3e6cb;
312
+ }
313
+
314
+ &.error {
315
+ background: #f8d7da;
316
+ color: #721c24;
317
+ border: 1px solid #f5c6cb;
318
+ }
319
+ }
320
+ }
321
+
322
+ .actions {
323
+ display: flex;
324
+ gap: 8px;
325
+ flex-wrap: wrap;
326
+ margin-top: auto;
327
+
328
+ .button {
329
+ padding: 10px 16px;
330
+ border-radius: 8px;
331
+ border: none;
332
+ cursor: pointer;
333
+ font-size: 0.9rem;
334
+ font-weight: 500;
335
+ transition: all 0.2s ease;
336
+ flex: 1;
337
+ min-width: 120px;
338
+ display: flex;
339
+ align-items: center;
340
+ justify-content: center;
341
+ gap: 6px;
342
+
343
+ .buttonIcon {
344
+ flex-shrink: 0;
345
+
346
+ &.spinning {
347
+ animation: spin 1s linear infinite;
348
+ }
349
+ }
350
+
351
+ &:disabled {
352
+ opacity: 0.6;
353
+ cursor: not-allowed;
354
+ }
355
+
356
+ &.primary {
357
+ background: #007bff;
358
+ color: white;
359
+
360
+ &:hover:not(:disabled) {
361
+ background: #0056b3;
362
+ }
363
+ }
364
+
365
+ &.secondary {
366
+ background: #6c757d;
367
+ color: white;
368
+
369
+ &:hover:not(:disabled) {
370
+ background: #545b62;
371
+ }
372
+ }
373
+
374
+ &.sync {
375
+ background: #28a745;
376
+ color: white;
377
+
378
+ &:hover:not(:disabled) {
379
+ background: #1e7e34;
380
+ }
381
+ }
382
+
383
+ &.danger {
384
+ background: #dc3545;
385
+ color: white;
386
+
387
+ &:hover:not(:disabled) {
388
+ background: #c82333;
389
+ }
390
+ }
391
+
392
+ &.preview {
393
+ background: #17a2b8;
394
+ color: white;
395
+
396
+ &:hover:not(:disabled) {
397
+ background: #138496;
398
+ }
399
+ }
400
+ }
401
+
402
+ .dataTypeActions {
403
+ display: flex;
404
+ gap: 8px;
405
+ flex-wrap: wrap;
406
+
407
+ .button {
408
+ flex: 1;
409
+ min-width: 140px;
410
+ }
411
+ }
412
+ }
413
+
414
+ // Modal styles
415
+ .modal {
416
+ position: fixed;
417
+ top: 0;
418
+ left: 0;
419
+ right: 0;
420
+ bottom: 0;
421
+ background: rgba(0, 0, 0, 0.5);
422
+ display: flex;
423
+ align-items: center;
424
+ justify-content: center;
425
+ z-index: 1000;
426
+ padding: 20px;
427
+
428
+ .modalContent {
429
+ background: white;
430
+ border-radius: 16px;
431
+ max-width: 800px;
432
+ width: 100%;
433
+ max-height: 85vh;
434
+ overflow: hidden;
435
+ display: flex;
436
+ flex-direction: column;
437
+ box-shadow: 0 25px 50px rgba(0, 0, 0, 0.25);
438
+ animation: modalSlideIn 0.3s ease-out;
439
+
440
+ .modalHeader {
441
+ display: flex;
442
+ justify-content: space-between;
443
+ align-items: center;
444
+ padding: 24px 28px;
445
+ border-bottom: 1px solid #e9ecef;
446
+ background: linear-gradient(135deg, #f8f9fa 0%, #ffffff 100%);
447
+
448
+ h3 {
449
+ margin: 0;
450
+ color: #2c3e50;
451
+ font-size: 1.4rem;
452
+ font-weight: 600;
453
+ display: flex;
454
+ align-items: center;
455
+ gap: 10px;
456
+
457
+ &::before {
458
+ content: "🔍";
459
+ font-size: 1.2rem;
460
+ }
461
+ }
462
+
463
+ .modalClose {
464
+ background: none;
465
+ border: none;
466
+ cursor: pointer;
467
+ color: #6c757d;
468
+ padding: 4px;
469
+ border-radius: 4px;
470
+ transition: all 0.2s ease;
471
+
472
+ &:hover {
473
+ background: #e9ecef;
474
+ color: #333;
475
+ }
476
+ }
477
+ }
478
+
479
+ .modalBody {
480
+ padding: 28px;
481
+ overflow-y: auto;
482
+ flex: 1;
483
+ background: #fafbfc;
484
+
485
+ .previewSummary {
486
+ margin-bottom: 28px;
487
+ background: white;
488
+ padding: 20px;
489
+ border-radius: 12px;
490
+ border-left: 4px solid #007bff;
491
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
492
+
493
+ p {
494
+ margin-bottom: 12px;
495
+ font-size: 1rem;
496
+ line-height: 1.6;
497
+
498
+ strong {
499
+ color: #2c3e50;
500
+ font-weight: 600;
501
+ }
502
+ }
503
+
504
+ .pullDirection, .pushDirection {
505
+ display: inline-flex;
506
+ align-items: center;
507
+ gap: 4px;
508
+ padding: 2px 8px;
509
+ border-radius: 4px;
510
+ font-size: 0.9rem;
511
+ }
512
+
513
+ .pullDirection {
514
+ background: #d1ecf1;
515
+ color: #0c5460;
516
+ }
517
+
518
+ .pushDirection {
519
+ background: #d4edda;
520
+ color: #155724;
521
+ }
522
+ }
523
+
524
+ .validationIssues {
525
+ background: linear-gradient(135deg, #fff3cd 0%, #fefbf0 100%);
526
+ border: 1px solid #ffeaa7;
527
+ border-radius: 12px;
528
+ padding: 20px;
529
+ margin-bottom: 24px;
530
+ box-shadow: 0 2px 8px rgba(255, 193, 7, 0.15);
531
+
532
+ h4 {
533
+ display: flex;
534
+ align-items: center;
535
+ gap: 8px;
536
+ margin: 0 0 16px 0;
537
+ color: #856404;
538
+ font-size: 1.1rem;
539
+ font-weight: 600;
540
+ }
541
+
542
+ ul {
543
+ margin: 0;
544
+ padding-left: 20px;
545
+
546
+ li {
547
+ margin-bottom: 4px;
548
+ color: #856404;
549
+ }
550
+ }
551
+ }
552
+
553
+ .sampleData {
554
+ background: white;
555
+ border-radius: 12px;
556
+ padding: 24px;
557
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
558
+ margin-top: 20px;
559
+
560
+ h4 {
561
+ margin: 0 0 20px 0;
562
+ color: #2c3e50;
563
+ font-size: 1.2rem;
564
+ font-weight: 600;
565
+ display: flex;
566
+ align-items: center;
567
+ gap: 8px;
568
+
569
+ &::before {
570
+ content: "📄";
571
+ font-size: 1rem;
572
+ }
573
+ }
574
+
575
+ .sampleTable {
576
+ border-radius: 12px;
577
+ overflow: hidden;
578
+ background: #f8f9fa;
579
+ border: 1px solid #e9ecef;
580
+
581
+ .sampleRecord {
582
+ padding: 20px;
583
+ border-bottom: 1px solid #e9ecef;
584
+ transition: background-color 0.2s ease;
585
+
586
+ &:hover {
587
+ background-color: #f1f3f4;
588
+ }
589
+
590
+ &:last-child {
591
+ border-bottom: none;
592
+ }
593
+
594
+ strong {
595
+ display: block;
596
+ margin-bottom: 12px;
597
+ color: white;
598
+ font-size: 0.95rem;
599
+ font-weight: 600;
600
+ padding: 8px 12px;
601
+ background: linear-gradient(135deg, #007bff 0%, #0056b3 100%);
602
+ border-radius: 6px;
603
+ box-shadow: 0 2px 4px rgba(0, 123, 255, 0.3);
604
+ }
605
+
606
+ pre {
607
+ margin: 0;
608
+ background: #2d3748;
609
+ color: #e2e8f0;
610
+ padding: 16px;
611
+ border-radius: 8px;
612
+ font-size: 0.85rem;
613
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
614
+ line-height: 1.5;
615
+ overflow-x: auto;
616
+ border: 1px solid #4a5568;
617
+ box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.1);
618
+ word-wrap: break-word;
619
+ white-space: pre-wrap;
620
+
621
+ &::-webkit-scrollbar {
622
+ height: 8px;
623
+ }
624
+
625
+ &::-webkit-scrollbar-track {
626
+ background: #4a5568;
627
+ border-radius: 4px;
628
+ }
629
+
630
+ &::-webkit-scrollbar-thumb {
631
+ background: #718096;
632
+ border-radius: 4px;
633
+
634
+ &:hover {
635
+ background: #a0aec0;
636
+ }
637
+ }
638
+ }
639
+ }
640
+ }
641
+ }
642
+
643
+ .previewError {
644
+ display: flex;
645
+ align-items: center;
646
+ gap: 12px;
647
+ padding: 20px;
648
+ background: #f8d7da;
649
+ border: 1px solid #f5c6cb;
650
+ border-radius: 8px;
651
+ color: #721c24;
652
+
653
+ p {
654
+ margin: 0;
655
+ }
656
+ }
657
+ }
658
+
659
+ .modalFooter {
660
+ padding: 20px 28px;
661
+ border-top: 1px solid #e9ecef;
662
+ background: linear-gradient(135deg, #f8f9fa 0%, #ffffff 100%);
663
+ display: flex;
664
+ gap: 16px;
665
+ justify-content: flex-end;
666
+
667
+ .button {
668
+ min-width: 140px;
669
+ padding: 12px 24px;
670
+ border-radius: 8px;
671
+ font-weight: 600;
672
+ font-size: 0.95rem;
673
+ transition: all 0.3s ease;
674
+ border: none;
675
+ cursor: pointer;
676
+ display: flex;
677
+ align-items: center;
678
+ justify-content: center;
679
+ gap: 8px;
680
+
681
+ &.secondary {
682
+ background: #6c757d;
683
+ color: white;
684
+
685
+ &:hover {
686
+ background: #5a6268;
687
+ transform: translateY(-1px);
688
+ box-shadow: 0 4px 12px rgba(108, 117, 125, 0.3);
689
+ }
690
+ }
691
+
692
+ &.sync {
693
+ background: linear-gradient(135deg, #28a745 0%, #20c997 100%);
694
+ color: white;
695
+ box-shadow: 0 4px 12px rgba(40, 167, 69, 0.3);
696
+
697
+ &:hover {
698
+ background: linear-gradient(135deg, #218838 0%, #1a9b7a 100%);
699
+ transform: translateY(-2px);
700
+ box-shadow: 0 8px 20px rgba(40, 167, 69, 0.4);
701
+ }
702
+
703
+ &:disabled {
704
+ background: #6c757d;
705
+ cursor: not-allowed;
706
+ transform: none;
707
+ box-shadow: none;
708
+ }
709
+ }
710
+ }
711
+ }
712
+ }
713
+ }
714
+ }
715
+
716
+ // Animations
717
+ @keyframes spin {
718
+ from {
719
+ transform: rotate(0deg);
720
+ }
721
+ to {
722
+ transform: rotate(360deg);
723
+ }
724
+ }
725
+
726
+ @keyframes modalSlideIn {
727
+ from {
728
+ opacity: 0;
729
+ transform: translateY(-50px) scale(0.95);
730
+ }
731
+ to {
732
+ opacity: 1;
733
+ transform: translateY(0) scale(1);
734
+ }
735
+ }
736
+
737
+ // Responsive design
738
+ @media (max-width: 768px) {
739
+ .providerCard {
740
+ padding: 20px;
741
+
742
+ .header {
743
+ .icon {
744
+ font-size: 2rem;
745
+ margin-right: 12px;
746
+ }
747
+
748
+ .info h3 {
749
+ font-size: 1.2rem;
750
+ }
751
+ }
752
+
753
+ .actions {
754
+ .button {
755
+ flex: 1 1 100%;
756
+ margin-bottom: 8px;
757
+ }
758
+ }
759
+ }
760
+ }