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,510 @@
1
+ // ========================================
2
+ // ZenKit - Upload / File Upload
3
+ // ========================================
4
+
5
+ @use '../abstracts/variables' as *;
6
+
7
+ // ----------------------------------------
8
+ // Base Upload Dropzone
9
+ // ----------------------------------------
10
+ .upload {
11
+ --upload-border-color: var(--border);
12
+ --upload-bg: var(--bg-secondary);
13
+ --upload-hover-bg: var(--gray-50);
14
+ --upload-active-border: var(--primary);
15
+ --upload-active-bg: var(--primary-50);
16
+
17
+ position: relative;
18
+ display: flex;
19
+ flex-direction: column;
20
+ align-items: center;
21
+ justify-content: center;
22
+ padding: 2rem;
23
+ min-height: 200px;
24
+ border: 2px dashed var(--upload-border-color);
25
+ border-radius: var(--radius-lg);
26
+ background-color: var(--upload-bg);
27
+ cursor: pointer;
28
+ transition: all var(--transition-base) ease-in-out;
29
+
30
+ &:hover {
31
+ border-color: var(--gray-400);
32
+ background-color: var(--upload-hover-bg);
33
+ }
34
+ }
35
+
36
+ // ----------------------------------------
37
+ // Upload Input (Hidden)
38
+ // ----------------------------------------
39
+ .upload-input {
40
+ position: absolute;
41
+ inset: 0;
42
+ width: 100%;
43
+ height: 100%;
44
+ opacity: 0;
45
+ cursor: pointer;
46
+ z-index: 1;
47
+ }
48
+
49
+ // ----------------------------------------
50
+ // Upload Icon
51
+ // ----------------------------------------
52
+ .upload-icon {
53
+ display: flex;
54
+ align-items: center;
55
+ justify-content: center;
56
+ width: 3rem;
57
+ height: 3rem;
58
+ margin-bottom: 1rem;
59
+ color: var(--gray-400);
60
+ background-color: var(--gray-100);
61
+ border-radius: var(--radius-full);
62
+ transition: all var(--transition-base) ease-in-out;
63
+
64
+ svg {
65
+ width: 1.5rem;
66
+ height: 1.5rem;
67
+ }
68
+ }
69
+
70
+ // ----------------------------------------
71
+ // Upload Content
72
+ // ----------------------------------------
73
+ .upload-content {
74
+ text-align: center;
75
+ }
76
+
77
+ .upload-title {
78
+ font-size: var(--text-base);
79
+ font-weight: $font-weight-medium;
80
+ color: var(--text);
81
+ margin-bottom: 0.25rem;
82
+
83
+ span {
84
+ color: var(--primary);
85
+ text-decoration: underline;
86
+ }
87
+ }
88
+
89
+ .upload-description {
90
+ font-size: var(--text-sm);
91
+ color: var(--text-muted);
92
+ }
93
+
94
+ .upload-hint {
95
+ font-size: var(--text-xs);
96
+ color: var(--text-muted);
97
+ margin-top: 0.5rem;
98
+ }
99
+
100
+ // ----------------------------------------
101
+ // Upload States
102
+ // ----------------------------------------
103
+
104
+ // Drag Over State
105
+ .upload-dragover,
106
+ .upload.dragover {
107
+ border-color: var(--upload-active-border);
108
+ background-color: var(--upload-active-bg);
109
+
110
+ .upload-icon {
111
+ color: var(--primary);
112
+ background-color: var(--primary-100);
113
+ transform: scale(1.1);
114
+ }
115
+ }
116
+
117
+ // Disabled State
118
+ .upload-disabled,
119
+ .upload:disabled,
120
+ .upload.disabled {
121
+ opacity: 0.5;
122
+ cursor: not-allowed;
123
+ pointer-events: none;
124
+ }
125
+
126
+ // Error State
127
+ .upload-error {
128
+ --upload-border-color: var(--danger);
129
+ --upload-bg: var(--danger-light);
130
+
131
+ .upload-icon {
132
+ color: var(--danger);
133
+ background-color: rgba($danger, 0.1);
134
+ }
135
+ }
136
+
137
+ // Success State
138
+ .upload-success {
139
+ --upload-border-color: var(--success);
140
+ --upload-bg: var(--success-light);
141
+
142
+ .upload-icon {
143
+ color: var(--success);
144
+ background-color: rgba($success, 0.1);
145
+ }
146
+ }
147
+
148
+ // ----------------------------------------
149
+ // Upload Sizes
150
+ // ----------------------------------------
151
+ .upload-sm {
152
+ padding: 1rem;
153
+ min-height: 120px;
154
+
155
+ .upload-icon {
156
+ width: 2rem;
157
+ height: 2rem;
158
+ margin-bottom: 0.75rem;
159
+
160
+ svg {
161
+ width: 1rem;
162
+ height: 1rem;
163
+ }
164
+ }
165
+
166
+ .upload-title {
167
+ font-size: var(--text-sm);
168
+ }
169
+
170
+ .upload-description {
171
+ font-size: var(--text-xs);
172
+ }
173
+ }
174
+
175
+ .upload-lg {
176
+ padding: 3rem;
177
+ min-height: 280px;
178
+
179
+ .upload-icon {
180
+ width: 4rem;
181
+ height: 4rem;
182
+ margin-bottom: 1.5rem;
183
+
184
+ svg {
185
+ width: 2rem;
186
+ height: 2rem;
187
+ }
188
+ }
189
+
190
+ .upload-title {
191
+ font-size: var(--text-lg);
192
+ }
193
+ }
194
+
195
+ // ----------------------------------------
196
+ // Upload Variants
197
+ // ----------------------------------------
198
+
199
+ // Compact / Inline Upload
200
+ .upload-compact {
201
+ flex-direction: row;
202
+ padding: 1rem;
203
+ min-height: auto;
204
+ gap: 1rem;
205
+
206
+ .upload-icon {
207
+ margin-bottom: 0;
208
+ }
209
+
210
+ .upload-content {
211
+ text-align: left;
212
+ flex: 1;
213
+ }
214
+ }
215
+
216
+ // Button Style Upload
217
+ .upload-button {
218
+ display: inline-flex;
219
+ align-items: center;
220
+ gap: 0.5rem;
221
+ padding: 0.625rem 1rem;
222
+ min-height: auto;
223
+ border: $border-width solid var(--border);
224
+ border-radius: var(--radius);
225
+ background-color: var(--bg);
226
+ font-size: var(--text-sm);
227
+ font-weight: $font-weight-medium;
228
+ color: var(--text);
229
+
230
+ &:hover {
231
+ background-color: var(--gray-50);
232
+ border-color: var(--gray-300);
233
+ }
234
+
235
+ .upload-icon {
236
+ width: auto;
237
+ height: auto;
238
+ margin: 0;
239
+ background: none;
240
+
241
+ svg {
242
+ width: 1.25rem;
243
+ height: 1.25rem;
244
+ }
245
+ }
246
+ }
247
+
248
+ // Avatar Upload (Circular)
249
+ .upload-avatar {
250
+ width: 8rem;
251
+ height: 8rem;
252
+ min-height: auto;
253
+ padding: 0;
254
+ border-radius: var(--radius-full);
255
+ overflow: hidden;
256
+
257
+ .upload-icon {
258
+ width: 2.5rem;
259
+ height: 2.5rem;
260
+ margin-bottom: 0.5rem;
261
+ }
262
+
263
+ .upload-title,
264
+ .upload-description {
265
+ font-size: var(--text-xs);
266
+ }
267
+
268
+ img {
269
+ position: absolute;
270
+ width: 100%;
271
+ height: 100%;
272
+ object-fit: cover;
273
+ z-index: 0;
274
+ }
275
+
276
+ &:hover .upload-overlay {
277
+ opacity: 1;
278
+ }
279
+ }
280
+
281
+ .upload-overlay {
282
+ position: absolute;
283
+ inset: 0;
284
+ display: flex;
285
+ flex-direction: column;
286
+ align-items: center;
287
+ justify-content: center;
288
+ background-color: rgba(0, 0, 0, 0.5);
289
+ color: var(--white);
290
+ opacity: 0;
291
+ transition: opacity var(--transition-base) ease-in-out;
292
+ z-index: 0;
293
+
294
+ svg {
295
+ width: 1.5rem;
296
+ height: 1.5rem;
297
+ }
298
+ }
299
+
300
+ // ----------------------------------------
301
+ // File List
302
+ // ----------------------------------------
303
+ .upload-list {
304
+ display: flex;
305
+ flex-direction: column;
306
+ gap: 0.5rem;
307
+ margin-top: 1rem;
308
+ }
309
+
310
+ .upload-file {
311
+ display: flex;
312
+ align-items: center;
313
+ gap: 0.75rem;
314
+ padding: 0.75rem;
315
+ background-color: var(--gray-50);
316
+ border: $border-width solid var(--border);
317
+ border-radius: var(--radius);
318
+ }
319
+
320
+ .upload-file-icon {
321
+ display: flex;
322
+ align-items: center;
323
+ justify-content: center;
324
+ width: 2.5rem;
325
+ height: 2.5rem;
326
+ color: var(--primary);
327
+ background-color: var(--primary-50);
328
+ border-radius: var(--radius);
329
+ flex-shrink: 0;
330
+
331
+ svg {
332
+ width: 1.25rem;
333
+ height: 1.25rem;
334
+ }
335
+ }
336
+
337
+ .upload-file-info {
338
+ flex: 1;
339
+ min-width: 0;
340
+ }
341
+
342
+ .upload-file-name {
343
+ font-size: var(--text-sm);
344
+ font-weight: $font-weight-medium;
345
+ color: var(--text);
346
+ white-space: nowrap;
347
+ overflow: hidden;
348
+ text-overflow: ellipsis;
349
+ }
350
+
351
+ .upload-file-size {
352
+ font-size: var(--text-xs);
353
+ color: var(--text-muted);
354
+ }
355
+
356
+ .upload-file-actions {
357
+ display: flex;
358
+ align-items: center;
359
+ gap: 0.5rem;
360
+ flex-shrink: 0;
361
+ }
362
+
363
+ .upload-file-remove {
364
+ display: flex;
365
+ align-items: center;
366
+ justify-content: center;
367
+ width: 1.75rem;
368
+ height: 1.75rem;
369
+ color: var(--gray-500);
370
+ background: none;
371
+ border: none;
372
+ border-radius: var(--radius);
373
+ cursor: pointer;
374
+ transition: all var(--transition-fast) ease-in-out;
375
+
376
+ &:hover {
377
+ color: var(--danger);
378
+ background-color: var(--danger-light);
379
+ }
380
+
381
+ svg {
382
+ width: 1rem;
383
+ height: 1rem;
384
+ }
385
+ }
386
+
387
+ // ----------------------------------------
388
+ // Upload Progress
389
+ // ----------------------------------------
390
+ .upload-file-progress {
391
+ margin-top: 0.5rem;
392
+ }
393
+
394
+ .upload-progress-bar {
395
+ height: 4px;
396
+ background-color: var(--gray-200);
397
+ border-radius: var(--radius-full);
398
+ overflow: hidden;
399
+ }
400
+
401
+ .upload-progress-fill {
402
+ height: 100%;
403
+ background-color: var(--primary);
404
+ border-radius: var(--radius-full);
405
+ transition: width var(--transition-base) ease-in-out;
406
+ }
407
+
408
+ .upload-progress-text {
409
+ font-size: var(--text-xs);
410
+ color: var(--text-muted);
411
+ margin-top: 0.25rem;
412
+ }
413
+
414
+ // ----------------------------------------
415
+ // Upload File States
416
+ // ----------------------------------------
417
+ .upload-file-uploading {
418
+ .upload-file-icon {
419
+ color: var(--info);
420
+ background-color: var(--info-light);
421
+ }
422
+ }
423
+
424
+ .upload-file-success {
425
+ .upload-file-icon {
426
+ color: var(--success);
427
+ background-color: var(--success-light);
428
+ }
429
+
430
+ .upload-progress-fill {
431
+ background-color: var(--success);
432
+ }
433
+ }
434
+
435
+ .upload-file-error {
436
+ border-color: var(--danger);
437
+ background-color: var(--danger-light);
438
+
439
+ .upload-file-icon {
440
+ color: var(--danger);
441
+ background-color: rgba($danger, 0.15);
442
+ }
443
+
444
+ .upload-file-name {
445
+ color: var(--danger);
446
+ }
447
+ }
448
+
449
+ // ----------------------------------------
450
+ // Image Preview Grid
451
+ // ----------------------------------------
452
+ .upload-preview-grid {
453
+ display: grid;
454
+ grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
455
+ gap: 0.75rem;
456
+ margin-top: 1rem;
457
+ }
458
+
459
+ .upload-preview-item {
460
+ position: relative;
461
+ aspect-ratio: 1;
462
+ border-radius: var(--radius);
463
+ overflow: hidden;
464
+ background-color: var(--gray-100);
465
+
466
+ img {
467
+ width: 100%;
468
+ height: 100%;
469
+ object-fit: cover;
470
+ }
471
+
472
+ &:hover .upload-preview-overlay {
473
+ opacity: 1;
474
+ }
475
+ }
476
+
477
+ .upload-preview-overlay {
478
+ position: absolute;
479
+ inset: 0;
480
+ display: flex;
481
+ align-items: center;
482
+ justify-content: center;
483
+ gap: 0.5rem;
484
+ background-color: rgba(0, 0, 0, 0.5);
485
+ opacity: 0;
486
+ transition: opacity var(--transition-fast) ease-in-out;
487
+ }
488
+
489
+ .upload-preview-action {
490
+ display: flex;
491
+ align-items: center;
492
+ justify-content: center;
493
+ width: 2rem;
494
+ height: 2rem;
495
+ color: var(--white);
496
+ background-color: rgba(0, 0, 0, 0.5);
497
+ border: none;
498
+ border-radius: var(--radius);
499
+ cursor: pointer;
500
+ transition: background-color var(--transition-fast) ease-in-out;
501
+
502
+ &:hover {
503
+ background-color: rgba(0, 0, 0, 0.7);
504
+ }
505
+
506
+ svg {
507
+ width: 1rem;
508
+ height: 1rem;
509
+ }
510
+ }