zenkit-css 1.0.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.
Files changed (96) hide show
  1. package/README.md +182 -0
  2. package/dist/zenkit.css +33721 -0
  3. package/dist/zenkit.css.map +1 -0
  4. package/dist/zenkit.min.css +1 -0
  5. package/dist/zenkit.min.css.map +1 -0
  6. package/package.json +41 -0
  7. package/scss/abstracts/_functions.scss +174 -0
  8. package/scss/abstracts/_mixins.scss +272 -0
  9. package/scss/abstracts/_variables.scss +216 -0
  10. package/scss/base/_reset.scss +130 -0
  11. package/scss/base/_root.scss +194 -0
  12. package/scss/base/_typography.scss +271 -0
  13. package/scss/components/_accordion.scss +200 -0
  14. package/scss/components/_affix.scss +278 -0
  15. package/scss/components/_alerts.scss +175 -0
  16. package/scss/components/_anchor.scss +438 -0
  17. package/scss/components/_autocomplete.scss +530 -0
  18. package/scss/components/_avatar.scss +256 -0
  19. package/scss/components/_backtop.scss +329 -0
  20. package/scss/components/_badges.scss +266 -0
  21. package/scss/components/_breadcrumb.scss +102 -0
  22. package/scss/components/_buttons.scss +340 -0
  23. package/scss/components/_calendar.scss +787 -0
  24. package/scss/components/_cards.scss +265 -0
  25. package/scss/components/_carousel.scss +306 -0
  26. package/scss/components/_cascader.scss +510 -0
  27. package/scss/components/_close-button.scss +106 -0
  28. package/scss/components/_colorpicker.scss +593 -0
  29. package/scss/components/_datepicker.scss +625 -0
  30. package/scss/components/_descriptions.scss +453 -0
  31. package/scss/components/_divider.scss +253 -0
  32. package/scss/components/_drawer.scss +485 -0
  33. package/scss/components/_dropdown.scss +323 -0
  34. package/scss/components/_empty.scss +321 -0
  35. package/scss/components/_floatbutton.scss +400 -0
  36. package/scss/components/_forms.scss +753 -0
  37. package/scss/components/_image.scss +497 -0
  38. package/scss/components/_inputnumber.scss +475 -0
  39. package/scss/components/_layout.scss +538 -0
  40. package/scss/components/_list-group.scss +227 -0
  41. package/scss/components/_list.scss +528 -0
  42. package/scss/components/_mentions.scss +479 -0
  43. package/scss/components/_menu.scss +510 -0
  44. package/scss/components/_message.scss +412 -0
  45. package/scss/components/_modal.scss +304 -0
  46. package/scss/components/_navbar.scss +329 -0
  47. package/scss/components/_notification.scss +499 -0
  48. package/scss/components/_offcanvas.scss +274 -0
  49. package/scss/components/_pagination.scss +176 -0
  50. package/scss/components/_placeholder.scss +237 -0
  51. package/scss/components/_popconfirm.scss +393 -0
  52. package/scss/components/_popover.scss +298 -0
  53. package/scss/components/_progress.scss +225 -0
  54. package/scss/components/_rating.scss +314 -0
  55. package/scss/components/_result.scss +383 -0
  56. package/scss/components/_segmented.scss +441 -0
  57. package/scss/components/_select.scss +412 -0
  58. package/scss/components/_spinners.scss +229 -0
  59. package/scss/components/_statistic.scss +336 -0
  60. package/scss/components/_steps.scss +343 -0
  61. package/scss/components/_tabs.scss +239 -0
  62. package/scss/components/_tag.scss +317 -0
  63. package/scss/components/_timeline.scss +341 -0
  64. package/scss/components/_timepicker.scss +468 -0
  65. package/scss/components/_toast.scss +279 -0
  66. package/scss/components/_tooltip.scss +305 -0
  67. package/scss/components/_tour.scss +488 -0
  68. package/scss/components/_transfer.scss +556 -0
  69. package/scss/components/_tree.scss +518 -0
  70. package/scss/components/_treeselect.scss +531 -0
  71. package/scss/components/_upload.scss +510 -0
  72. package/scss/components/_watermark.scss +314 -0
  73. package/scss/content/_figures.scss +38 -0
  74. package/scss/content/_images.scss +138 -0
  75. package/scss/content/_tables.scss +232 -0
  76. package/scss/layout/_container.scss +71 -0
  77. package/scss/layout/_grid.scss +258 -0
  78. package/scss/utilities/_animations.scss +494 -0
  79. package/scss/utilities/_borders.scss +246 -0
  80. package/scss/utilities/_colors.scss +194 -0
  81. package/scss/utilities/_display.scss +263 -0
  82. package/scss/utilities/_filters.scss +328 -0
  83. package/scss/utilities/_flex.scss +178 -0
  84. package/scss/utilities/_float.scss +70 -0
  85. package/scss/utilities/_grid-utils.scss +151 -0
  86. package/scss/utilities/_helpers.scss +479 -0
  87. package/scss/utilities/_interactions.scss +249 -0
  88. package/scss/utilities/_overflow.scss +204 -0
  89. package/scss/utilities/_position.scss +245 -0
  90. package/scss/utilities/_shadows.scss +67 -0
  91. package/scss/utilities/_sizing.scss +217 -0
  92. package/scss/utilities/_spacing.scss +207 -0
  93. package/scss/utilities/_text.scss +237 -0
  94. package/scss/utilities/_transforms.scss +368 -0
  95. package/scss/utilities/_visibility.scss +251 -0
  96. package/scss/zenkit.scss +121 -0
@@ -0,0 +1,499 @@
1
+ // ========================================
2
+ // ZenKit - Notification Component
3
+ // Rich notification panel with actions
4
+ // ========================================
5
+
6
+ @use '../abstracts/variables' as *;
7
+
8
+ // ----------------------------------------
9
+ // Notification Container
10
+ // ----------------------------------------
11
+ .notification-container {
12
+ position: fixed;
13
+ z-index: $z-toast;
14
+ display: flex;
15
+ flex-direction: column;
16
+ gap: 1rem;
17
+ max-width: 384px;
18
+ pointer-events: none;
19
+ }
20
+
21
+ // Position variants
22
+ .notification-container-top-right {
23
+ top: 24px;
24
+ right: 24px;
25
+ }
26
+
27
+ .notification-container-top-left {
28
+ top: 24px;
29
+ left: 24px;
30
+ }
31
+
32
+ .notification-container-bottom-right {
33
+ bottom: 24px;
34
+ right: 24px;
35
+ }
36
+
37
+ .notification-container-bottom-left {
38
+ bottom: 24px;
39
+ left: 24px;
40
+ }
41
+
42
+ .notification-container-top {
43
+ top: 24px;
44
+ left: 50%;
45
+ transform: translateX(-50%);
46
+ }
47
+
48
+ .notification-container-bottom {
49
+ bottom: 24px;
50
+ left: 50%;
51
+ transform: translateX(-50%);
52
+ }
53
+
54
+ // ----------------------------------------
55
+ // Notification Item
56
+ // ----------------------------------------
57
+ .notification {
58
+ display: flex;
59
+ width: 384px;
60
+ max-width: 100%;
61
+ padding: 1rem 1.5rem;
62
+ background-color: var(--bg-primary);
63
+ border-radius: $border-radius-lg;
64
+ box-shadow: 0 6px 16px 0 rgba(0, 0, 0, 0.08),
65
+ 0 3px 6px -4px rgba(0, 0, 0, 0.12),
66
+ 0 9px 28px 8px rgba(0, 0, 0, 0.05);
67
+ pointer-events: auto;
68
+ animation: notification-slide-in 0.3s ease;
69
+ }
70
+
71
+ @keyframes notification-slide-in {
72
+ from {
73
+ opacity: 0;
74
+ transform: translateX(100%);
75
+ }
76
+ to {
77
+ opacity: 1;
78
+ transform: translateX(0);
79
+ }
80
+ }
81
+
82
+ // Left slide animation
83
+ .notification-container-top-left .notification,
84
+ .notification-container-bottom-left .notification {
85
+ animation-name: notification-slide-in-left;
86
+ }
87
+
88
+ @keyframes notification-slide-in-left {
89
+ from {
90
+ opacity: 0;
91
+ transform: translateX(-100%);
92
+ }
93
+ to {
94
+ opacity: 1;
95
+ transform: translateX(0);
96
+ }
97
+ }
98
+
99
+ // Fade animation for top/bottom center
100
+ .notification-container-top .notification,
101
+ .notification-container-bottom .notification {
102
+ animation-name: notification-fade-in;
103
+ }
104
+
105
+ @keyframes notification-fade-in {
106
+ from {
107
+ opacity: 0;
108
+ transform: translateY(-20px);
109
+ }
110
+ to {
111
+ opacity: 1;
112
+ transform: translateY(0);
113
+ }
114
+ }
115
+
116
+ .notification-leaving {
117
+ animation: notification-fade-out 0.3s ease forwards;
118
+ }
119
+
120
+ @keyframes notification-fade-out {
121
+ from {
122
+ opacity: 1;
123
+ max-height: 150px;
124
+ }
125
+ to {
126
+ opacity: 0;
127
+ max-height: 0;
128
+ padding-top: 0;
129
+ padding-bottom: 0;
130
+ margin-bottom: 0;
131
+ }
132
+ }
133
+
134
+ // ----------------------------------------
135
+ // Notification Icon
136
+ // ----------------------------------------
137
+ .notification-icon {
138
+ flex-shrink: 0;
139
+ display: flex;
140
+ align-items: flex-start;
141
+ margin-right: 1rem;
142
+ font-size: 1.5rem;
143
+ line-height: 1;
144
+ }
145
+
146
+ // Type colors
147
+ .notification-info .notification-icon {
148
+ color: var(--info);
149
+ }
150
+
151
+ .notification-success .notification-icon {
152
+ color: var(--success);
153
+ }
154
+
155
+ .notification-warning .notification-icon {
156
+ color: var(--warning);
157
+ }
158
+
159
+ .notification-error .notification-icon {
160
+ color: var(--danger);
161
+ }
162
+
163
+ // ----------------------------------------
164
+ // Notification Content
165
+ // ----------------------------------------
166
+ .notification-content {
167
+ flex: 1;
168
+ min-width: 0;
169
+ }
170
+
171
+ .notification-title {
172
+ margin-bottom: 0.25rem;
173
+ font-size: 1rem;
174
+ font-weight: 500;
175
+ color: var(--text-primary);
176
+ line-height: 1.5;
177
+ word-break: break-word;
178
+ }
179
+
180
+ .notification-description {
181
+ font-size: 0.875rem;
182
+ color: var(--text-muted);
183
+ line-height: 1.5;
184
+ word-break: break-word;
185
+ }
186
+
187
+ // ----------------------------------------
188
+ // Notification Close Button
189
+ // ----------------------------------------
190
+ .notification-close {
191
+ position: absolute;
192
+ top: 1rem;
193
+ right: 1rem;
194
+ display: flex;
195
+ align-items: center;
196
+ justify-content: center;
197
+ width: 1.5rem;
198
+ height: 1.5rem;
199
+ padding: 0;
200
+ color: var(--text-muted);
201
+ background: transparent;
202
+ border: none;
203
+ border-radius: $border-radius-sm;
204
+ cursor: pointer;
205
+ transition: color 0.15s ease, background-color 0.15s ease;
206
+
207
+ &:hover {
208
+ color: var(--text-primary);
209
+ background-color: var(--bg-secondary);
210
+ }
211
+ }
212
+
213
+ .notification {
214
+ position: relative;
215
+ padding-right: 3rem;
216
+ }
217
+
218
+ // ----------------------------------------
219
+ // Notification Actions
220
+ // ----------------------------------------
221
+ .notification-actions {
222
+ display: flex;
223
+ align-items: center;
224
+ gap: 0.5rem;
225
+ margin-top: 0.75rem;
226
+ }
227
+
228
+ .notification-action {
229
+ padding: 0;
230
+ font-size: 0.875rem;
231
+ font-weight: 500;
232
+ color: var(--primary);
233
+ background: transparent;
234
+ border: none;
235
+ cursor: pointer;
236
+ transition: opacity 0.15s ease;
237
+
238
+ &:hover {
239
+ opacity: 0.8;
240
+ text-decoration: underline;
241
+ }
242
+ }
243
+
244
+ .notification-action-divider {
245
+ width: 1px;
246
+ height: 1rem;
247
+ background-color: var(--border-color);
248
+ }
249
+
250
+ // ----------------------------------------
251
+ // Notification Avatar / Image
252
+ // ----------------------------------------
253
+ .notification-avatar {
254
+ flex-shrink: 0;
255
+ width: 40px;
256
+ height: 40px;
257
+ margin-right: 1rem;
258
+ border-radius: 50%;
259
+ object-fit: cover;
260
+ background-color: var(--bg-tertiary);
261
+ }
262
+
263
+ .notification-image {
264
+ flex-shrink: 0;
265
+ width: 48px;
266
+ height: 48px;
267
+ margin-right: 1rem;
268
+ border-radius: $border-radius;
269
+ object-fit: cover;
270
+ background-color: var(--bg-tertiary);
271
+ }
272
+
273
+ // ----------------------------------------
274
+ // Notification Progress
275
+ // ----------------------------------------
276
+ .notification-with-progress {
277
+ position: relative;
278
+ overflow: hidden;
279
+ }
280
+
281
+ .notification-progress {
282
+ position: absolute;
283
+ bottom: 0;
284
+ left: 0;
285
+ height: 3px;
286
+ background-color: var(--primary);
287
+ animation: notification-progress linear forwards;
288
+ }
289
+
290
+ @keyframes notification-progress {
291
+ from {
292
+ width: 100%;
293
+ }
294
+ to {
295
+ width: 0%;
296
+ }
297
+ }
298
+
299
+ // Progress colors by type
300
+ .notification-info .notification-progress {
301
+ background-color: var(--info);
302
+ }
303
+
304
+ .notification-success .notification-progress {
305
+ background-color: var(--success);
306
+ }
307
+
308
+ .notification-warning .notification-progress {
309
+ background-color: var(--warning);
310
+ }
311
+
312
+ .notification-error .notification-progress {
313
+ background-color: var(--danger);
314
+ }
315
+
316
+ // ----------------------------------------
317
+ // Notification Bordered
318
+ // ----------------------------------------
319
+ .notification-bordered {
320
+ border: 1px solid var(--border-color);
321
+
322
+ &.notification-info {
323
+ border-left: 4px solid var(--info);
324
+ }
325
+
326
+ &.notification-success {
327
+ border-left: 4px solid var(--success);
328
+ }
329
+
330
+ &.notification-warning {
331
+ border-left: 4px solid var(--warning);
332
+ }
333
+
334
+ &.notification-error {
335
+ border-left: 4px solid var(--danger);
336
+ }
337
+ }
338
+
339
+ // ----------------------------------------
340
+ // Notification Filled
341
+ // ----------------------------------------
342
+ .notification-filled {
343
+ color: #fff;
344
+
345
+ &.notification-info {
346
+ background-color: var(--info);
347
+ }
348
+
349
+ &.notification-success {
350
+ background-color: var(--success);
351
+ }
352
+
353
+ &.notification-warning {
354
+ background-color: var(--warning);
355
+ color: var(--text-primary);
356
+ }
357
+
358
+ &.notification-error {
359
+ background-color: var(--danger);
360
+ }
361
+
362
+ .notification-title,
363
+ .notification-description {
364
+ color: inherit;
365
+ }
366
+
367
+ .notification-description {
368
+ opacity: 0.85;
369
+ }
370
+
371
+ .notification-icon {
372
+ color: inherit;
373
+ }
374
+
375
+ .notification-close {
376
+ color: inherit;
377
+ opacity: 0.7;
378
+
379
+ &:hover {
380
+ opacity: 1;
381
+ background-color: rgba(255, 255, 255, 0.2);
382
+ }
383
+ }
384
+
385
+ .notification-action {
386
+ color: inherit;
387
+ text-decoration: underline;
388
+ }
389
+ }
390
+
391
+ // ----------------------------------------
392
+ // Notification Compact
393
+ // ----------------------------------------
394
+ .notification-compact {
395
+ padding: 0.75rem 1rem;
396
+ padding-right: 2.5rem;
397
+
398
+ .notification-icon {
399
+ font-size: 1.25rem;
400
+ margin-right: 0.75rem;
401
+ }
402
+
403
+ .notification-title {
404
+ font-size: 0.875rem;
405
+ }
406
+
407
+ .notification-description {
408
+ font-size: 0.8125rem;
409
+ }
410
+
411
+ .notification-close {
412
+ top: 0.75rem;
413
+ right: 0.75rem;
414
+ }
415
+ }
416
+
417
+ // ----------------------------------------
418
+ // Notification Dark Theme
419
+ // ----------------------------------------
420
+ .notification-dark {
421
+ background-color: #1f1f1f;
422
+
423
+ .notification-title {
424
+ color: rgba(255, 255, 255, 0.85);
425
+ }
426
+
427
+ .notification-description {
428
+ color: rgba(255, 255, 255, 0.65);
429
+ }
430
+
431
+ .notification-close {
432
+ color: rgba(255, 255, 255, 0.45);
433
+
434
+ &:hover {
435
+ color: rgba(255, 255, 255, 0.85);
436
+ background-color: rgba(255, 255, 255, 0.1);
437
+ }
438
+ }
439
+ }
440
+
441
+ // ----------------------------------------
442
+ // Notification Stacking
443
+ // ----------------------------------------
444
+ .notification-stacked {
445
+ position: relative;
446
+
447
+ &::before,
448
+ &::after {
449
+ content: '';
450
+ position: absolute;
451
+ left: 8px;
452
+ right: 8px;
453
+ height: 8px;
454
+ background-color: var(--bg-primary);
455
+ border-radius: 0 0 $border-radius $border-radius;
456
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
457
+ opacity: 0.6;
458
+ z-index: -1;
459
+ }
460
+
461
+ &::before {
462
+ bottom: -8px;
463
+ }
464
+
465
+ &::after {
466
+ bottom: -16px;
467
+ left: 16px;
468
+ right: 16px;
469
+ opacity: 0.3;
470
+ }
471
+ }
472
+
473
+ // ----------------------------------------
474
+ // Notification Responsive
475
+ // ----------------------------------------
476
+ @media (max-width: 575.98px) {
477
+ .notification-container {
478
+ left: 12px;
479
+ right: 12px;
480
+ max-width: none;
481
+ transform: none;
482
+ }
483
+
484
+ .notification {
485
+ width: 100%;
486
+ }
487
+
488
+ .notification-container-top,
489
+ .notification-container-top-left,
490
+ .notification-container-top-right {
491
+ top: 12px;
492
+ }
493
+
494
+ .notification-container-bottom,
495
+ .notification-container-bottom-left,
496
+ .notification-container-bottom-right {
497
+ bottom: 12px;
498
+ }
499
+ }