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,497 @@
1
+ // ========================================
2
+ // ZenKit - Image Component
3
+ // Image with preview, fallback, and loading
4
+ // ========================================
5
+
6
+ @use '../abstracts/variables' as *;
7
+
8
+ // ----------------------------------------
9
+ // Image Container
10
+ // ----------------------------------------
11
+ .image {
12
+ position: relative;
13
+ display: inline-block;
14
+ overflow: hidden;
15
+ }
16
+
17
+ // ----------------------------------------
18
+ // Image Element
19
+ // ----------------------------------------
20
+ .image-img {
21
+ display: block;
22
+ max-width: 100%;
23
+ height: auto;
24
+ transition: opacity 0.3s ease, transform 0.3s ease;
25
+ }
26
+
27
+ // ----------------------------------------
28
+ // Image Placeholder / Loading
29
+ // ----------------------------------------
30
+ .image-placeholder {
31
+ position: absolute;
32
+ inset: 0;
33
+ display: flex;
34
+ align-items: center;
35
+ justify-content: center;
36
+ background-color: var(--bg-secondary);
37
+ color: var(--text-muted);
38
+ }
39
+
40
+ .image-placeholder-icon {
41
+ font-size: 2rem;
42
+ opacity: 0.5;
43
+ }
44
+
45
+ .image-loading {
46
+ .image-placeholder-icon {
47
+ animation: pulse 1.5s ease-in-out infinite;
48
+ }
49
+ }
50
+
51
+ @keyframes pulse {
52
+ 0%, 100% { opacity: 0.5; }
53
+ 50% { opacity: 0.25; }
54
+ }
55
+
56
+ // ----------------------------------------
57
+ // Image Error / Fallback
58
+ // ----------------------------------------
59
+ .image-error {
60
+ .image-img {
61
+ display: none;
62
+ }
63
+
64
+ .image-placeholder {
65
+ position: static;
66
+ }
67
+ }
68
+
69
+ .image-fallback {
70
+ display: flex;
71
+ flex-direction: column;
72
+ align-items: center;
73
+ justify-content: center;
74
+ gap: 0.5rem;
75
+ padding: 1rem;
76
+ background-color: var(--bg-secondary);
77
+ color: var(--text-muted);
78
+ }
79
+
80
+ .image-fallback-icon {
81
+ font-size: 2rem;
82
+ opacity: 0.5;
83
+ }
84
+
85
+ .image-fallback-text {
86
+ font-size: 0.75rem;
87
+ }
88
+
89
+ // ----------------------------------------
90
+ // Image Preview Overlay
91
+ // ----------------------------------------
92
+ .image-preview-overlay {
93
+ position: absolute;
94
+ inset: 0;
95
+ display: flex;
96
+ align-items: center;
97
+ justify-content: center;
98
+ background-color: rgba(0, 0, 0, 0.5);
99
+ opacity: 0;
100
+ transition: opacity 0.2s ease;
101
+ cursor: pointer;
102
+
103
+ .image:hover & {
104
+ opacity: 1;
105
+ }
106
+ }
107
+
108
+ .image-preview-icon {
109
+ display: flex;
110
+ align-items: center;
111
+ justify-content: center;
112
+ width: 2.5rem;
113
+ height: 2.5rem;
114
+ color: #fff;
115
+ background-color: rgba(255, 255, 255, 0.2);
116
+ border-radius: 50%;
117
+ transition: background-color 0.15s ease;
118
+
119
+ &:hover {
120
+ background-color: rgba(255, 255, 255, 0.3);
121
+ }
122
+ }
123
+
124
+ .image-preview-text {
125
+ color: #fff;
126
+ font-size: 0.875rem;
127
+ }
128
+
129
+ // ----------------------------------------
130
+ // Image Preview Modal
131
+ // ----------------------------------------
132
+ .image-preview-modal {
133
+ position: fixed;
134
+ inset: 0;
135
+ z-index: $z-modal;
136
+ display: none;
137
+ align-items: center;
138
+ justify-content: center;
139
+ background-color: rgba(0, 0, 0, 0.85);
140
+
141
+ &.is-open {
142
+ display: flex;
143
+ }
144
+ }
145
+
146
+ .image-preview-modal-content {
147
+ position: relative;
148
+ max-width: 90vw;
149
+ max-height: 90vh;
150
+ }
151
+
152
+ .image-preview-modal-img {
153
+ max-width: 100%;
154
+ max-height: 90vh;
155
+ object-fit: contain;
156
+ transition: transform 0.3s ease;
157
+ }
158
+
159
+ // ----------------------------------------
160
+ // Image Preview Controls
161
+ // ----------------------------------------
162
+ .image-preview-controls {
163
+ position: fixed;
164
+ bottom: 2rem;
165
+ left: 50%;
166
+ transform: translateX(-50%);
167
+ display: flex;
168
+ align-items: center;
169
+ gap: 0.5rem;
170
+ padding: 0.5rem;
171
+ background-color: rgba(0, 0, 0, 0.65);
172
+ border-radius: $border-radius;
173
+ }
174
+
175
+ .image-preview-control {
176
+ display: flex;
177
+ align-items: center;
178
+ justify-content: center;
179
+ width: 2rem;
180
+ height: 2rem;
181
+ padding: 0;
182
+ color: #fff;
183
+ background: transparent;
184
+ border: none;
185
+ border-radius: $border-radius-sm;
186
+ cursor: pointer;
187
+ transition: background-color 0.15s ease;
188
+
189
+ &:hover {
190
+ background-color: rgba(255, 255, 255, 0.2);
191
+ }
192
+
193
+ &:disabled {
194
+ opacity: 0.5;
195
+ cursor: not-allowed;
196
+ }
197
+ }
198
+
199
+ .image-preview-control-divider {
200
+ width: 1px;
201
+ height: 1.5rem;
202
+ background-color: rgba(255, 255, 255, 0.3);
203
+ }
204
+
205
+ // ----------------------------------------
206
+ // Image Preview Close
207
+ // ----------------------------------------
208
+ .image-preview-close {
209
+ position: fixed;
210
+ top: 1rem;
211
+ right: 1rem;
212
+ display: flex;
213
+ align-items: center;
214
+ justify-content: center;
215
+ width: 2.5rem;
216
+ height: 2.5rem;
217
+ padding: 0;
218
+ color: #fff;
219
+ background-color: rgba(0, 0, 0, 0.5);
220
+ border: none;
221
+ border-radius: 50%;
222
+ cursor: pointer;
223
+ transition: background-color 0.15s ease;
224
+
225
+ &:hover {
226
+ background-color: rgba(0, 0, 0, 0.7);
227
+ }
228
+ }
229
+
230
+ // ----------------------------------------
231
+ // Image Preview Navigation
232
+ // ----------------------------------------
233
+ .image-preview-nav {
234
+ position: fixed;
235
+ top: 50%;
236
+ transform: translateY(-50%);
237
+ display: flex;
238
+ align-items: center;
239
+ justify-content: center;
240
+ width: 3rem;
241
+ height: 3rem;
242
+ padding: 0;
243
+ color: #fff;
244
+ background-color: rgba(0, 0, 0, 0.5);
245
+ border: none;
246
+ border-radius: 50%;
247
+ cursor: pointer;
248
+ transition: background-color 0.15s ease;
249
+
250
+ &:hover {
251
+ background-color: rgba(0, 0, 0, 0.7);
252
+ }
253
+
254
+ &:disabled {
255
+ opacity: 0.3;
256
+ cursor: not-allowed;
257
+ }
258
+ }
259
+
260
+ .image-preview-nav-prev {
261
+ left: 1rem;
262
+ }
263
+
264
+ .image-preview-nav-next {
265
+ right: 1rem;
266
+ }
267
+
268
+ // ----------------------------------------
269
+ // Image Preview Counter
270
+ // ----------------------------------------
271
+ .image-preview-counter {
272
+ position: fixed;
273
+ top: 1rem;
274
+ left: 50%;
275
+ transform: translateX(-50%);
276
+ padding: 0.25rem 0.75rem;
277
+ font-size: 0.875rem;
278
+ color: #fff;
279
+ background-color: rgba(0, 0, 0, 0.5);
280
+ border-radius: $border-radius;
281
+ }
282
+
283
+ // ----------------------------------------
284
+ // Image Shapes
285
+ // ----------------------------------------
286
+ .image-rounded {
287
+ border-radius: $border-radius;
288
+
289
+ .image-img,
290
+ .image-placeholder,
291
+ .image-preview-overlay {
292
+ border-radius: inherit;
293
+ }
294
+ }
295
+
296
+ .image-circle {
297
+ border-radius: 50%;
298
+
299
+ .image-img,
300
+ .image-placeholder,
301
+ .image-preview-overlay {
302
+ border-radius: inherit;
303
+ }
304
+ }
305
+
306
+ // ----------------------------------------
307
+ // Image Sizes
308
+ // ----------------------------------------
309
+ .image-sm {
310
+ width: 64px;
311
+ height: 64px;
312
+
313
+ .image-img {
314
+ width: 100%;
315
+ height: 100%;
316
+ object-fit: cover;
317
+ }
318
+ }
319
+
320
+ .image-md {
321
+ width: 128px;
322
+ height: 128px;
323
+
324
+ .image-img {
325
+ width: 100%;
326
+ height: 100%;
327
+ object-fit: cover;
328
+ }
329
+ }
330
+
331
+ .image-lg {
332
+ width: 256px;
333
+ height: 256px;
334
+
335
+ .image-img {
336
+ width: 100%;
337
+ height: 100%;
338
+ object-fit: cover;
339
+ }
340
+ }
341
+
342
+ .image-fluid {
343
+ width: 100%;
344
+
345
+ .image-img {
346
+ width: 100%;
347
+ }
348
+ }
349
+
350
+ // ----------------------------------------
351
+ // Image Fit Modes
352
+ // ----------------------------------------
353
+ .image-fit-contain .image-img {
354
+ object-fit: contain;
355
+ }
356
+
357
+ .image-fit-cover .image-img {
358
+ object-fit: cover;
359
+ }
360
+
361
+ .image-fit-fill .image-img {
362
+ object-fit: fill;
363
+ }
364
+
365
+ .image-fit-none .image-img {
366
+ object-fit: none;
367
+ }
368
+
369
+ .image-fit-scale-down .image-img {
370
+ object-fit: scale-down;
371
+ }
372
+
373
+ // ----------------------------------------
374
+ // Image Bordered
375
+ // ----------------------------------------
376
+ .image-bordered {
377
+ border: 1px solid var(--border-color);
378
+ }
379
+
380
+ // ----------------------------------------
381
+ // Image Shadow
382
+ // ----------------------------------------
383
+ .image-shadow {
384
+ box-shadow: $shadow-md;
385
+ }
386
+
387
+ // ----------------------------------------
388
+ // Image Hover Effects
389
+ // ----------------------------------------
390
+ .image-hover-zoom:hover .image-img {
391
+ transform: scale(1.1);
392
+ }
393
+
394
+ .image-hover-brightness:hover .image-img {
395
+ filter: brightness(1.1);
396
+ }
397
+
398
+ .image-hover-grayscale {
399
+ .image-img {
400
+ filter: grayscale(100%);
401
+ transition: filter 0.3s ease;
402
+ }
403
+
404
+ &:hover .image-img {
405
+ filter: grayscale(0%);
406
+ }
407
+ }
408
+
409
+ .image-hover-blur {
410
+ .image-img {
411
+ transition: filter 0.3s ease;
412
+ }
413
+
414
+ &:hover .image-img {
415
+ filter: blur(2px);
416
+ }
417
+ }
418
+
419
+ // ----------------------------------------
420
+ // Image Group
421
+ // ----------------------------------------
422
+ .image-group {
423
+ display: flex;
424
+ flex-wrap: wrap;
425
+ gap: 0.5rem;
426
+ }
427
+
428
+ .image-group-item {
429
+ position: relative;
430
+ }
431
+
432
+ .image-group-more {
433
+ position: absolute;
434
+ inset: 0;
435
+ display: flex;
436
+ align-items: center;
437
+ justify-content: center;
438
+ background-color: rgba(0, 0, 0, 0.6);
439
+ color: #fff;
440
+ font-size: 1.25rem;
441
+ font-weight: 600;
442
+ cursor: pointer;
443
+ }
444
+
445
+ // ----------------------------------------
446
+ // Image Lazy Loading
447
+ // ----------------------------------------
448
+ .image-lazy {
449
+ .image-img {
450
+ opacity: 0;
451
+ }
452
+
453
+ &.is-loaded .image-img {
454
+ opacity: 1;
455
+ }
456
+
457
+ &.is-loaded .image-placeholder {
458
+ display: none;
459
+ }
460
+ }
461
+
462
+ // ----------------------------------------
463
+ // Image Caption
464
+ // ----------------------------------------
465
+ .image-caption {
466
+ padding: 0.5rem;
467
+ font-size: 0.75rem;
468
+ color: var(--text-muted);
469
+ text-align: center;
470
+ background-color: var(--bg-secondary);
471
+ }
472
+
473
+ // ----------------------------------------
474
+ // Image Figure
475
+ // ----------------------------------------
476
+ .image-figure {
477
+ display: inline-flex;
478
+ flex-direction: column;
479
+ margin: 0;
480
+ }
481
+
482
+ .image-figure-caption {
483
+ padding: 0.5rem 0;
484
+ font-size: 0.875rem;
485
+ color: var(--text-muted);
486
+ text-align: center;
487
+ }
488
+
489
+ // ----------------------------------------
490
+ // Image Thumbnail
491
+ // ----------------------------------------
492
+ .image-thumbnail {
493
+ padding: 0.25rem;
494
+ background-color: var(--bg-primary);
495
+ border: 1px solid var(--border-color);
496
+ border-radius: $border-radius;
497
+ }