@visns-studio/visns-components 5.15.9 → 5.15.11

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.
@@ -3831,3 +3831,345 @@
3831
3831
  font-size: 0.9rem;
3832
3832
  }
3833
3833
  }
3834
+
3835
+ /* Unique Field Configuration Styling */
3836
+ .uniqueFieldConfig {
3837
+ margin-top: 24px;
3838
+ background-color: rgba(106, 90, 205, 0.05); // Subtle purple background
3839
+ border: 1px solid rgba(106, 90, 205, 0.15);
3840
+ border-radius: var(--radius);
3841
+ overflow: hidden;
3842
+ transition: all 0.3s ease;
3843
+
3844
+ &:hover {
3845
+ border-color: rgba(106, 90, 205, 0.25);
3846
+ box-shadow: 0 2px 8px rgba(106, 90, 205, 0.1);
3847
+ }
3848
+ }
3849
+
3850
+ .configHeader {
3851
+ padding: 16px 20px 12px 20px;
3852
+ background: linear-gradient(135deg, rgba(106, 90, 205, 0.08) 0%, rgba(106, 90, 205, 0.03) 100%);
3853
+ border-bottom: 1px solid rgba(106, 90, 205, 0.1);
3854
+
3855
+ h4 {
3856
+ margin: 0 0 6px 0;
3857
+ font-size: 1rem;
3858
+ font-weight: 600;
3859
+ color: #4c46a6;
3860
+ display: flex;
3861
+ align-items: center;
3862
+ gap: 8px;
3863
+
3864
+ svg {
3865
+ color: #6a5acd;
3866
+ flex-shrink: 0;
3867
+ }
3868
+
3869
+ &::before {
3870
+ content: '';
3871
+ width: 3px;
3872
+ height: 18px;
3873
+ background: linear-gradient(45deg, #6a5acd, #9370db);
3874
+ border-radius: 2px;
3875
+ }
3876
+ }
3877
+
3878
+ p {
3879
+ margin: 0;
3880
+ font-size: 0.875rem;
3881
+ color: var(--paragraph-color);
3882
+ opacity: 0.8;
3883
+ }
3884
+ }
3885
+
3886
+ .configContent {
3887
+ padding: 20px;
3888
+ }
3889
+
3890
+ .checkboxLabel {
3891
+ display: flex;
3892
+ align-items: flex-start;
3893
+ cursor: pointer;
3894
+ font-size: 0.875rem;
3895
+ color: var(--header-color);
3896
+ margin-bottom: 16px;
3897
+ padding: 12px;
3898
+ background-color: rgba(255, 255, 255, 0.3);
3899
+ border-radius: var(--radius);
3900
+ border: 1px solid rgba(106, 90, 205, 0.1);
3901
+ transition: all 0.2s ease;
3902
+
3903
+ &:hover {
3904
+ background-color: rgba(255, 255, 255, 0.5);
3905
+ border-color: rgba(106, 90, 205, 0.2);
3906
+ transform: translateY(-1px);
3907
+ }
3908
+
3909
+ input[type="checkbox"] {
3910
+ margin-right: 12px;
3911
+ width: 18px;
3912
+ height: 18px;
3913
+ cursor: pointer;
3914
+ accent-color: #6a5acd;
3915
+ margin-top: 1px; // Align with text
3916
+ flex-shrink: 0;
3917
+ }
3918
+ }
3919
+
3920
+ .checkboxText {
3921
+ font-weight: 500;
3922
+ color: var(--header-color);
3923
+ line-height: 1.4;
3924
+
3925
+ .activeIndicator {
3926
+ display: inline-flex;
3927
+ align-items: center;
3928
+ gap: 4px;
3929
+ margin-left: 8px;
3930
+ padding: 2px 8px;
3931
+ background-color: rgba(40, 167, 69, 0.1);
3932
+ color: #28a745;
3933
+ font-size: 0.75rem;
3934
+ font-weight: 600;
3935
+ border-radius: 12px;
3936
+ border: 1px solid rgba(40, 167, 69, 0.2);
3937
+
3938
+ svg {
3939
+ color: #28a745;
3940
+ flex-shrink: 0;
3941
+ }
3942
+ }
3943
+ }
3944
+
3945
+ .uniqueFieldSelector {
3946
+ margin-left: 30px; // Align with checkbox text
3947
+ padding-left: 16px;
3948
+ border-left: 2px solid rgba(106, 90, 205, 0.2);
3949
+ animation: slideDown 0.3s ease-out;
3950
+ }
3951
+
3952
+ @keyframes slideDown {
3953
+ from {
3954
+ opacity: 0;
3955
+ transform: translateY(-10px);
3956
+ }
3957
+ to {
3958
+ opacity: 1;
3959
+ transform: translateY(0);
3960
+ }
3961
+ }
3962
+
3963
+ .fieldLabel {
3964
+ display: block;
3965
+ font-size: 0.875rem;
3966
+ font-weight: 500;
3967
+ color: var(--header-color);
3968
+ margin-bottom: 8px;
3969
+ }
3970
+
3971
+ .fieldSelect {
3972
+ width: 100%;
3973
+ padding: 12px 16px;
3974
+ border: 2px solid rgba(106, 90, 205, 0.2);
3975
+ border-radius: var(--radius);
3976
+ font-size: 0.875rem;
3977
+ background-color: var(--bg-color);
3978
+ color: var(--header-color);
3979
+ transition: all 0.2s ease;
3980
+ cursor: pointer;
3981
+
3982
+ &:focus {
3983
+ outline: none;
3984
+ border-color: #6a5acd;
3985
+ box-shadow: 0 0 0 3px rgba(106, 90, 205, 0.15);
3986
+ }
3987
+
3988
+ &:hover {
3989
+ border-color: rgba(106, 90, 205, 0.3);
3990
+ }
3991
+
3992
+ option {
3993
+ padding: 8px;
3994
+ color: var(--header-color);
3995
+ background-color: var(--bg-color);
3996
+ }
3997
+ }
3998
+
3999
+ .fieldHelp {
4000
+ margin-top: 8px;
4001
+ font-size: 0.75rem;
4002
+ color: var(--paragraph-color);
4003
+ line-height: 1.4;
4004
+ padding: 8px 12px;
4005
+ background-color: rgba(106, 90, 205, 0.05);
4006
+ border-radius: var(--radius);
4007
+ border-left: 3px solid rgba(106, 90, 205, 0.3);
4008
+
4009
+ code {
4010
+ display: block;
4011
+ margin-top: 6px;
4012
+ padding: 6px 8px;
4013
+ background-color: rgba(0, 0, 0, 0.05);
4014
+ border-radius: 4px;
4015
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
4016
+ font-size: 0.7rem;
4017
+ color: #4c46a6;
4018
+ border: 1px solid rgba(106, 90, 205, 0.15);
4019
+ white-space: pre-wrap;
4020
+ word-break: break-word;
4021
+ }
4022
+
4023
+ strong {
4024
+ color: var(--header-color);
4025
+ font-weight: 600;
4026
+ }
4027
+ }
4028
+
4029
+ /* Row Exclusion Modal Styling */
4030
+ .rowExclusionModal {
4031
+ background-color: var(--bg-color);
4032
+ border-radius: var(--radius);
4033
+ box-shadow: 0 20px 40px rgba(0, 0, 0, 0.15);
4034
+ max-width: 800px;
4035
+ width: 90vw;
4036
+ max-height: 80vh;
4037
+ display: flex;
4038
+ flex-direction: column;
4039
+
4040
+ .modalHeader {
4041
+ padding: 24px;
4042
+ border-bottom: 1px solid var(--border-color);
4043
+ background: linear-gradient(135deg, rgba(220, 38, 127, 0.05) 0%, rgba(220, 38, 127, 0.02) 100%);
4044
+
4045
+ h3 {
4046
+ margin: 0 0 8px 0;
4047
+ font-size: 1.25rem;
4048
+ color: var(--header-color);
4049
+ font-weight: 600;
4050
+ }
4051
+
4052
+ p {
4053
+ margin: 0;
4054
+ color: var(--paragraph-color);
4055
+ font-size: 0.875rem;
4056
+ }
4057
+ }
4058
+
4059
+ .modalBody {
4060
+ flex: 1;
4061
+ overflow: hidden;
4062
+ display: flex;
4063
+ flex-direction: column;
4064
+ }
4065
+
4066
+ .rowExclusionList {
4067
+ flex: 1;
4068
+ overflow-y: auto;
4069
+ padding: 16px 24px;
4070
+ max-height: 400px;
4071
+ }
4072
+
4073
+ .rowExclusionItem {
4074
+ display: flex;
4075
+ align-items: center;
4076
+ padding: 12px;
4077
+ margin-bottom: 8px;
4078
+ border-radius: var(--radius);
4079
+ border: 1px solid var(--border-color);
4080
+ background-color: var(--tertiary-color);
4081
+ cursor: pointer;
4082
+ transition: all 0.2s ease;
4083
+
4084
+ &:hover {
4085
+ background-color: rgba(var(--primary-rgb), 0.05);
4086
+ border-color: rgba(var(--primary-rgb), 0.2);
4087
+ transform: translateX(4px);
4088
+ }
4089
+
4090
+ input[type="checkbox"] {
4091
+ margin-right: 12px;
4092
+ width: 16px;
4093
+ height: 16px;
4094
+ cursor: pointer;
4095
+ accent-color: var(--primary-color);
4096
+ flex-shrink: 0;
4097
+ }
4098
+ }
4099
+
4100
+ .rowPreview {
4101
+ display: flex;
4102
+ flex-direction: column;
4103
+ gap: 4px;
4104
+ flex: 1;
4105
+ min-width: 0;
4106
+ }
4107
+
4108
+ .rowValue {
4109
+ font-size: 0.875rem;
4110
+ color: var(--header-color);
4111
+ white-space: nowrap;
4112
+ overflow: hidden;
4113
+ text-overflow: ellipsis;
4114
+
4115
+ &:not(:first-child) {
4116
+ color: var(--paragraph-color);
4117
+ font-size: 0.8rem;
4118
+ }
4119
+ }
4120
+
4121
+ .exclusionSummary {
4122
+ padding: 16px 24px;
4123
+ background-color: rgba(var(--primary-rgb), 0.05);
4124
+ border-top: 1px solid var(--border-color);
4125
+
4126
+ p {
4127
+ margin: 0;
4128
+ font-size: 0.875rem;
4129
+ color: var(--primary-color);
4130
+ text-align: center;
4131
+ font-weight: 500;
4132
+ }
4133
+ }
4134
+
4135
+ .modalFooter {
4136
+ padding: 16px 24px;
4137
+ border-top: 1px solid var(--border-color);
4138
+ display: flex;
4139
+ gap: 12px;
4140
+ justify-content: flex-end;
4141
+ background-color: var(--tertiary-color);
4142
+
4143
+ button {
4144
+ padding: 10px 20px;
4145
+ border-radius: var(--radius);
4146
+ font-size: 0.875rem;
4147
+ font-weight: 500;
4148
+ cursor: pointer;
4149
+ transition: all 0.2s ease;
4150
+ border: 1px solid transparent;
4151
+
4152
+ &.cancelButton {
4153
+ background-color: transparent;
4154
+ color: var(--paragraph-color);
4155
+ border-color: var(--border-color);
4156
+
4157
+ &:hover {
4158
+ background-color: var(--border-color);
4159
+ color: var(--header-color);
4160
+ }
4161
+ }
4162
+
4163
+ &.confirmButton {
4164
+ background-color: var(--primary-color);
4165
+ color: white;
4166
+
4167
+ &:hover {
4168
+ background-color: var(--primary-hover, var(--primary-color));
4169
+ transform: translateY(-1px);
4170
+ box-shadow: 0 4px 12px rgba(var(--primary-rgb), 0.3);
4171
+ }
4172
+ }
4173
+ }
4174
+ }
4175
+ }
@@ -0,0 +1,143 @@
1
+ .connectionStatus {
2
+ padding: 12px;
3
+ border-radius: 8px;
4
+ border: 1px solid #e9ecef;
5
+ background: #f8f9fa;
6
+
7
+ &.connected {
8
+ border-color: #28a745;
9
+ background: #d4edda;
10
+ }
11
+
12
+ &.expired {
13
+ border-color: #ffc107;
14
+ background: #fff3cd;
15
+ }
16
+
17
+ &.error {
18
+ border-color: #dc3545;
19
+ background: #f8d7da;
20
+ }
21
+
22
+ &.disconnected {
23
+ border-color: #6c757d;
24
+ background: #e9ecef;
25
+ }
26
+
27
+ .statusHeader {
28
+ display: flex;
29
+ align-items: center;
30
+ gap: 8px;
31
+
32
+ .icon {
33
+ font-size: 1.2rem;
34
+ }
35
+
36
+ .message {
37
+ font-weight: 500;
38
+ color: #333;
39
+ }
40
+ }
41
+
42
+ .statusDetails {
43
+ margin-top: 12px;
44
+ font-size: 0.9rem;
45
+
46
+ .detail {
47
+ display: flex;
48
+ justify-content: space-between;
49
+ align-items: center;
50
+ margin-bottom: 6px;
51
+
52
+ &:last-child {
53
+ margin-bottom: 0;
54
+ }
55
+
56
+ .label {
57
+ color: #666;
58
+ font-weight: 500;
59
+ }
60
+
61
+ .value {
62
+ color: #333;
63
+
64
+ &.pending {
65
+ color: #6c757d;
66
+ }
67
+
68
+ &.syncing {
69
+ color: #007bff;
70
+ font-weight: 500;
71
+ }
72
+
73
+ &.completed {
74
+ color: #28a745;
75
+ }
76
+
77
+ &.error {
78
+ color: #dc3545;
79
+ }
80
+ }
81
+ }
82
+ }
83
+
84
+ // Compact version
85
+ &.compact {
86
+ padding: 8px 12px;
87
+ display: flex;
88
+ align-items: center;
89
+ gap: 12px;
90
+ background: white;
91
+ border-radius: 6px;
92
+
93
+ .icon {
94
+ font-size: 1rem;
95
+ }
96
+
97
+ .provider {
98
+ font-weight: 500;
99
+ color: #333;
100
+ min-width: 120px;
101
+ }
102
+
103
+ .status {
104
+ color: #666;
105
+ font-size: 0.85rem;
106
+ }
107
+
108
+ &.connected .status {
109
+ color: #28a745;
110
+ }
111
+
112
+ &.expired .status {
113
+ color: #ffc107;
114
+ }
115
+
116
+ &.error .status {
117
+ color: #dc3545;
118
+ }
119
+ }
120
+ }
121
+
122
+ // Responsive design
123
+ @media (max-width: 768px) {
124
+ .connectionStatus {
125
+ &.compact {
126
+ flex-direction: column;
127
+ align-items: flex-start;
128
+ gap: 4px;
129
+
130
+ .provider {
131
+ min-width: auto;
132
+ }
133
+ }
134
+
135
+ .statusDetails {
136
+ .detail {
137
+ flex-direction: column;
138
+ align-items: flex-start;
139
+ gap: 2px;
140
+ }
141
+ }
142
+ }
143
+ }
@@ -0,0 +1,119 @@
1
+ .oauthManager {
2
+ max-width: 1200px;
3
+ margin: 0 auto;
4
+ padding: 0;
5
+
6
+ .header {
7
+ margin-bottom: 30px;
8
+ text-align: center;
9
+
10
+ h2 {
11
+ font-size: 2rem;
12
+ margin-bottom: 10px;
13
+ color: #333;
14
+ }
15
+
16
+ p {
17
+ color: #666;
18
+ font-size: 1.1rem;
19
+ }
20
+ }
21
+
22
+ .loading, .error, .empty {
23
+ text-align: center;
24
+ padding: 60px 20px;
25
+ color: #666;
26
+
27
+ .spinner {
28
+ width: 40px;
29
+ height: 40px;
30
+ border: 3px solid #f3f3f3;
31
+ border-top: 3px solid #007bff;
32
+ border-radius: 50%;
33
+ animation: spin 1s linear infinite;
34
+ margin: 0 auto 20px;
35
+ }
36
+
37
+ .retryButton {
38
+ margin-top: 20px;
39
+ padding: 10px 20px;
40
+ background: #007bff;
41
+ color: white;
42
+ border: none;
43
+ border-radius: 5px;
44
+ cursor: pointer;
45
+ font-size: 1rem;
46
+
47
+ &:hover {
48
+ background: #0056b3;
49
+ }
50
+ }
51
+ }
52
+
53
+ .providersGrid {
54
+ display: grid;
55
+ grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
56
+ gap: 16px;
57
+ margin-bottom: 20px;
58
+
59
+ // Responsive grid adjustments
60
+ @media (min-width: 768px) {
61
+ grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
62
+ gap: 20px;
63
+ }
64
+
65
+ @media (min-width: 1200px) {
66
+ grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
67
+ }
68
+
69
+ @media (min-width: 1600px) {
70
+ grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
71
+ }
72
+ }
73
+
74
+ .statusOverview {
75
+ margin-top: 40px;
76
+ padding: 20px;
77
+ background: #f8f9fa;
78
+ border-radius: 8px;
79
+
80
+ h3 {
81
+ margin-bottom: 20px;
82
+ color: #333;
83
+ font-size: 1.3rem;
84
+ }
85
+
86
+ .statusList {
87
+ display: flex;
88
+ flex-direction: column;
89
+ gap: 10px;
90
+ }
91
+ }
92
+ }
93
+
94
+ @keyframes spin {
95
+ 0% { transform: rotate(0deg); }
96
+ 100% { transform: rotate(360deg); }
97
+ }
98
+
99
+ // Responsive design
100
+ @media (max-width: 768px) {
101
+ .oauthManager {
102
+ padding: 15px;
103
+
104
+ .providersGrid {
105
+ grid-template-columns: 1fr;
106
+ gap: 15px;
107
+ }
108
+
109
+ .header {
110
+ h2 {
111
+ font-size: 1.5rem;
112
+ }
113
+
114
+ p {
115
+ font-size: 1rem;
116
+ }
117
+ }
118
+ }
119
+ }