@visns-studio/visns-components 5.6.14 → 5.7.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.
@@ -1,148 +1,365 @@
1
+ /* Notification Container */
2
+ .notificationContainer {
3
+ position: relative;
4
+ display: inline-flex;
5
+ align-items: center;
6
+ }
7
+
8
+ /* Notification Trigger Button */
9
+ .notificationTrigger {
10
+ position: relative;
11
+ background: transparent;
12
+ border: none;
13
+ cursor: pointer;
14
+ padding: 6px;
15
+ display: flex;
16
+ align-items: center;
17
+ justify-content: center;
18
+ color: var(--paragraph-color);
19
+ border-radius: 50%;
20
+ transition: all 0.2s ease;
21
+ outline: none;
22
+ }
23
+
24
+ .notificationTrigger:hover {
25
+ background-color: rgba(0, 0, 0, 0.05);
26
+ color: var(--primary-color);
27
+ }
28
+
29
+ .notificationTrigger:focus {
30
+ box-shadow: 0 0 0 2px rgba(var(--primary-color-rgb), 0.2);
31
+ }
32
+
33
+ /* Badge for unread notifications */
34
+ .badge {
35
+ position: absolute;
36
+ top: -2px;
37
+ right: -2px;
38
+ min-width: 16px;
39
+ height: 16px;
40
+ border-radius: 8px;
41
+ background-color: var(--secondary-color);
42
+ color: white;
43
+ font-size: 10px;
44
+ font-weight: 600;
45
+ display: flex;
46
+ align-items: center;
47
+ justify-content: center;
48
+ padding: 0 4px;
49
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
50
+ }
51
+
52
+ /* Dropdown Wrapper */
53
+ .dropdownWrapper {
54
+ position: absolute;
55
+ top: 100%;
56
+ right: 0;
57
+ z-index: 1000;
58
+ margin-top: 8px;
59
+ filter: drop-shadow(0 4px 12px rgba(0, 0, 0, 0.15));
60
+ }
61
+
62
+ /* Notification Box */
1
63
  .notibox {
2
64
  background: #fff;
3
- border: 1px solid var(--primary-color-lighter);
4
- border-top-color: rgb(204, 204, 204);
5
- border-right-color: rgb(204, 204, 204);
6
- border-bottom-color: rgb(204, 204, 204);
7
- border-left-color: rgb(204, 204, 204);
8
- border-color: rgba(0, 0, 0, 0.2);
9
- box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
10
- display: block;
11
- opacity: 1;
12
- outline: none;
65
+ border-radius: 8px;
66
+ width: 360px;
67
+ max-width: 90vw;
13
68
  overflow: hidden;
14
- position: absolute;
15
- padding: 6px;
16
- border-radius: var(--br);
17
- width: 550px;
18
- overflow-y: scroll;
19
- transform: translateX(-470px);
20
- text-align: left;
21
69
  color: var(--paragraph-color);
22
70
  box-sizing: border-box;
23
- transition: all 0.25s cubic-bezier(0.25, 0.8, 0.25, 1);
24
- z-index: 999;
25
- font-size: 1rem;
71
+ animation: slideIn 0.2s ease-out;
72
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
73
+ border: 1px solid rgba(0, 0, 0, 0.08);
26
74
  }
27
75
 
28
- .notibox .notiscrollwrap {
29
- max-height: 190px;
76
+ /* Notification Box Header */
77
+ .notiboxHeader {
78
+ display: flex;
79
+ align-items: center;
80
+ justify-content: space-between;
81
+ padding: 12px 16px;
82
+ border-bottom: 1px solid rgba(0, 0, 0, 0.06);
83
+ }
84
+
85
+ .notiboxHeader h3 {
86
+ margin: 0;
87
+ font-size: 16px;
88
+ font-weight: 600;
89
+ color: var(--heading-color, #333);
90
+ }
91
+
92
+ .markAllReadBtn {
93
+ background: transparent;
94
+ border: none;
95
+ display: flex;
96
+ align-items: center;
97
+ gap: 4px;
98
+ font-size: 12px;
99
+ color: var(--primary-color);
100
+ cursor: pointer;
101
+ padding: 4px 8px;
102
+ border-radius: 4px;
103
+ transition: background-color 0.2s;
104
+ }
105
+
106
+ .markAllReadBtn:hover {
107
+ background-color: rgba(var(--primary-color-rgb), 0.08);
108
+ }
109
+
110
+ .markAllReadBtn:disabled {
111
+ opacity: 0.5;
112
+ cursor: not-allowed;
113
+ }
114
+
115
+ /* Notification Scroll Wrap */
116
+ .notiscrollwrap {
117
+ max-height: 320px;
30
118
  overflow-y: auto;
119
+ padding: 8px;
120
+ scrollbar-width: thin;
31
121
  }
32
122
 
33
- .notibox .notibox-item {
34
- width: 100%;
35
- display: block;
36
- background: #f0f0f0;
37
- border-radius: var(--br);
38
- padding: 9px 36px 8px 6px;
39
- box-sizing: border-box;
40
- margin-bottom: 4px;
123
+ .notiscrollwrap::-webkit-scrollbar {
124
+ width: 6px;
125
+ }
126
+
127
+ .notiscrollwrap::-webkit-scrollbar-track {
128
+ background: rgba(0, 0, 0, 0.03);
129
+ }
130
+
131
+ .notiscrollwrap::-webkit-scrollbar-thumb {
132
+ background-color: rgba(0, 0, 0, 0.2);
133
+ border-radius: 3px;
134
+ }
135
+
136
+ /* Notification Item */
137
+ .notiboxItem {
138
+ border-radius: 6px;
139
+ margin-bottom: 8px;
140
+ transition: background-color 0.2s;
141
+ }
142
+
143
+ .notiboxItem:last-child {
144
+ margin-bottom: 0;
145
+ }
146
+
147
+ .notiboxItem:hover {
148
+ background-color: rgba(0, 0, 0, 0.02);
149
+ }
150
+
151
+ .notiContent {
152
+ display: flex;
153
+ align-items: flex-start;
154
+ padding: 10px 12px;
41
155
  position: relative;
42
156
  }
43
157
 
44
- .notibox-item a {
45
- background: none !important;
46
- padding: 0 !important;
47
- line-height: inherit !important;
48
- border-radius: 0 !important;
49
- color: inherit !important;
50
- display: inline !important;
51
- text-decoration: underline !important;
52
- border: none !important;
53
- font-weight: 700 !important;
54
- text-decoration: none !important;
158
+ .notiIcon {
159
+ flex-shrink: 0;
160
+ width: 28px;
161
+ height: 28px;
162
+ border-radius: 50%;
163
+ background-color: rgba(var(--primary-color-rgb), 0.1);
164
+ display: flex;
165
+ align-items: center;
166
+ justify-content: center;
167
+ color: var(--primary-color);
168
+ margin-right: 12px;
169
+ }
170
+
171
+ .notiMessage {
172
+ flex: 1;
173
+ min-width: 0;
174
+ padding-right: 24px;
55
175
  }
56
176
 
57
- .notibox-item a:hover {
58
- background: none !important;
59
- color: var(--secondary-color) !important;
177
+ .notiText {
178
+ font-size: 14px;
179
+ line-height: 1.4;
180
+ margin-bottom: 4px;
181
+ word-break: break-word;
60
182
  }
61
183
 
62
- .notibox .notibox-item span {
63
- color: var(--paragraph-color);
64
- font-size: 80%;
184
+ .notiText a {
185
+ color: var(--primary-color);
186
+ font-weight: 500;
187
+ text-decoration: none;
188
+ transition: color 0.2s;
65
189
  }
66
190
 
67
- .notibox .notibox-item > button {
191
+ .notiText a:hover {
192
+ color: var(--secondary-color);
193
+ text-decoration: underline;
194
+ }
195
+
196
+ .notiTime {
197
+ font-size: 12px;
198
+ color: rgba(var(--paragraph-color-rgb), 0.6);
199
+ }
200
+
201
+ .notiDismiss {
68
202
  position: absolute;
69
- right: 6px;
70
- top: 5px;
203
+ right: 12px;
204
+ top: 10px;
205
+ background: transparent;
206
+ border: none;
207
+ color: rgba(var(--paragraph-color-rgb), 0.4);
71
208
  cursor: pointer;
72
209
  padding: 0;
210
+ display: flex;
211
+ align-items: center;
212
+ justify-content: center;
213
+ width: 24px;
214
+ height: 24px;
215
+ border-radius: 50%;
216
+ transition: all 0.2s;
217
+ opacity: 0;
218
+ }
219
+
220
+ .notiContent:hover .notiDismiss {
221
+ opacity: 1;
222
+ }
223
+
224
+ .notiDismiss:hover {
225
+ background-color: rgba(0, 0, 0, 0.05);
226
+ color: var(--paragraph-color);
227
+ }
228
+
229
+ /* Empty State */
230
+ .emptyState {
231
+ display: flex;
232
+ flex-direction: column;
233
+ align-items: center;
234
+ justify-content: center;
235
+ padding: 32px 16px;
236
+ color: rgba(var(--paragraph-color-rgb), 0.6);
237
+ }
238
+
239
+ .emptyIcon {
240
+ width: 48px;
241
+ height: 48px;
242
+ border-radius: 50%;
243
+ background-color: rgba(0, 0, 0, 0.04);
244
+ display: flex;
245
+ align-items: center;
246
+ justify-content: center;
247
+ margin-bottom: 12px;
248
+ }
249
+
250
+ .emptyState p {
73
251
  margin: 0;
74
- outline: none;
75
- background: none;
76
- border: none;
252
+ font-size: 14px;
77
253
  }
78
254
 
79
- .notibox .notibox-item > button svg {
80
- width: 100%;
81
- max-width: 20px;
255
+ /* Loading State */
256
+ .loadingState {
257
+ display: flex;
258
+ flex-direction: column;
259
+ align-items: center;
260
+ justify-content: center;
261
+ padding: 32px 16px;
262
+ color: rgba(var(--paragraph-color-rgb), 0.6);
82
263
  }
83
264
 
84
- .notibox .notibox-item .noti-read {
85
- color: var(--primary-color);
265
+ .loadingSpinner {
266
+ width: 24px;
267
+ height: 24px;
268
+ border: 2px solid rgba(var(--primary-color-rgb), 0.2);
269
+ border-top-color: var(--primary-color);
270
+ border-radius: 50%;
271
+ margin-bottom: 12px;
272
+ animation: spin 0.8s linear infinite;
86
273
  }
87
274
 
88
- .notibox .notibox-item .cis-bell-exclamation {
89
- display: none;
90
- visibility: hidden;
275
+ .loadingState p {
276
+ margin: 0;
277
+ font-size: 14px;
91
278
  }
92
279
 
93
- .notibox .notibox-actions {
94
- width: 100%;
95
- display: block;
96
- border-top: 1px solid rgba(240, 240, 240, 1.05);
97
- padding: 10px 0 5px 0;
98
- margin-top: 10px;
280
+ /* Footer Actions */
281
+ .notiboxActions {
282
+ border-top: 1px solid rgba(0, 0, 0, 0.06);
283
+ padding: 12px 16px;
284
+ display: flex;
285
+ justify-content: center;
286
+ background-color: rgba(0, 0, 0, 0.02);
99
287
  }
100
288
 
101
- .notibox .notibox-actions button {
289
+ .buttonWrapper {
102
290
  display: inline-block;
103
- border-radius: 6px;
104
- border: 1px solid var(--primary-color-lighter);
105
- margin-right: 5px;
106
- padding: 8px;
107
- font-size: 0.875em;
108
- outline: none;
109
- color: var(--tertiary-color);
110
- background: var(--primary-color);
291
+ position: relative;
292
+ z-index: 5;
111
293
  }
112
294
 
113
- .notilink {
114
- background: none;
115
- padding: 0;
116
- line-height: inherit;
117
- border-radius: 0;
118
- color: inherit;
119
- display: inline;
120
- text-decoration: underline;
295
+ .viewAllBtn {
296
+ background-color: var(--primary-color);
297
+ color: var(--tertiary-color, white);
298
+ font-size: 14px;
299
+ font-weight: 500;
300
+ cursor: pointer;
301
+ padding: 10px 20px;
302
+ border-radius: var(--br, 6px);
121
303
  border: none;
122
- font-weight: 700;
123
- text-decoration: none;
304
+ width: auto;
305
+ min-width: 200px;
306
+ text-align: center;
307
+ transition: all 0.2s ease;
308
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
309
+ /* Ensure the button is always visible */
310
+ outline: none;
311
+ position: relative;
312
+ z-index: 1;
124
313
  }
125
314
 
126
- .notilink:hover {
127
- background: none;
128
- color: var(--secondary-color);
315
+ .viewAllBtn:hover {
316
+ background-color: var(--secondary-color);
317
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
318
+ }
319
+
320
+ .viewAllBtn:focus {
321
+ box-shadow: 0 0 0 3px rgba(var(--primary-color-rgb), 0.4);
322
+ outline: none;
129
323
  }
130
324
 
325
+ /* Bell Animation */
131
326
  .noti {
132
- animation: notification 1s infinite;
327
+ animation: pulse 2s infinite;
328
+ color: var(--secondary-color);
133
329
  }
134
330
 
135
- @keyframes notification {
331
+ @keyframes pulse {
136
332
  0% {
137
- color: var(--secondary-color);
138
- opacity: 0;
333
+ transform: scale(1);
139
334
  }
140
335
  50% {
141
- color: #c0ff52;
142
- opacity: 1;
336
+ transform: scale(1.1);
143
337
  }
144
338
  100% {
145
- color: var(--secondary-color);
339
+ transform: scale(1);
340
+ }
341
+ }
342
+
343
+ @keyframes spin {
344
+ to {
345
+ transform: rotate(360deg);
346
+ }
347
+ }
348
+
349
+ @keyframes slideIn {
350
+ from {
146
351
  opacity: 0;
352
+ transform: translateY(-10px);
353
+ }
354
+ to {
355
+ opacity: 1;
356
+ transform: translateY(0);
357
+ }
358
+ }
359
+
360
+ /* Responsive adjustments */
361
+ @media (max-width: 480px) {
362
+ .notibox {
363
+ width: 300px;
147
364
  }
148
365
  }