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,485 @@
1
+ // ========================================
2
+ // ZenKit - Drawer Component
3
+ // Side panel / Sliding panel
4
+ // ========================================
5
+
6
+ @use '../abstracts/variables' as *;
7
+
8
+ // ----------------------------------------
9
+ // Drawer Wrapper
10
+ // ----------------------------------------
11
+ .drawer-wrapper {
12
+ position: fixed;
13
+ inset: 0;
14
+ z-index: $z-modal;
15
+ display: none;
16
+ pointer-events: none;
17
+
18
+ &.is-open {
19
+ display: block;
20
+ pointer-events: auto;
21
+ }
22
+ }
23
+
24
+ // ----------------------------------------
25
+ // Drawer Mask / Backdrop
26
+ // ----------------------------------------
27
+ .drawer-mask {
28
+ position: absolute;
29
+ inset: 0;
30
+ background-color: rgba(0, 0, 0, 0.45);
31
+ opacity: 0;
32
+ transition: opacity 0.3s ease;
33
+
34
+ .is-open & {
35
+ opacity: 1;
36
+ }
37
+ }
38
+
39
+ // ----------------------------------------
40
+ // Drawer Content Wrapper
41
+ // ----------------------------------------
42
+ .drawer-content-wrapper {
43
+ position: absolute;
44
+ display: flex;
45
+ flex-direction: column;
46
+ max-width: 100%;
47
+ max-height: 100%;
48
+ background-color: var(--bg-primary);
49
+ box-shadow: $shadow-xl;
50
+ transition: transform 0.3s ease;
51
+ }
52
+
53
+ // ----------------------------------------
54
+ // Drawer Placements
55
+ // ----------------------------------------
56
+ // Right (Default)
57
+ .drawer-right {
58
+ .drawer-content-wrapper {
59
+ top: 0;
60
+ right: 0;
61
+ bottom: 0;
62
+ width: 378px;
63
+ transform: translateX(100%);
64
+ }
65
+
66
+ &.is-open .drawer-content-wrapper {
67
+ transform: translateX(0);
68
+ }
69
+ }
70
+
71
+ // Left
72
+ .drawer-left {
73
+ .drawer-content-wrapper {
74
+ top: 0;
75
+ left: 0;
76
+ bottom: 0;
77
+ width: 378px;
78
+ transform: translateX(-100%);
79
+ }
80
+
81
+ &.is-open .drawer-content-wrapper {
82
+ transform: translateX(0);
83
+ }
84
+ }
85
+
86
+ // Top
87
+ .drawer-top {
88
+ .drawer-content-wrapper {
89
+ top: 0;
90
+ left: 0;
91
+ right: 0;
92
+ height: 378px;
93
+ transform: translateY(-100%);
94
+ }
95
+
96
+ &.is-open .drawer-content-wrapper {
97
+ transform: translateY(0);
98
+ }
99
+ }
100
+
101
+ // Bottom
102
+ .drawer-bottom {
103
+ .drawer-content-wrapper {
104
+ bottom: 0;
105
+ left: 0;
106
+ right: 0;
107
+ height: 378px;
108
+ transform: translateY(100%);
109
+ }
110
+
111
+ &.is-open .drawer-content-wrapper {
112
+ transform: translateY(0);
113
+ }
114
+ }
115
+
116
+ // ----------------------------------------
117
+ // Drawer Header
118
+ // ----------------------------------------
119
+ .drawer-header {
120
+ display: flex;
121
+ align-items: center;
122
+ justify-content: space-between;
123
+ flex-shrink: 0;
124
+ padding: 1rem 1.5rem;
125
+ border-bottom: 1px solid var(--border-color);
126
+ }
127
+
128
+ .drawer-header-title {
129
+ display: flex;
130
+ align-items: center;
131
+ gap: 0.5rem;
132
+ }
133
+
134
+ .drawer-title {
135
+ margin: 0;
136
+ font-size: 1rem;
137
+ font-weight: 600;
138
+ color: var(--text-primary);
139
+ line-height: 1.4;
140
+ }
141
+
142
+ .drawer-close {
143
+ display: flex;
144
+ align-items: center;
145
+ justify-content: center;
146
+ width: 2rem;
147
+ height: 2rem;
148
+ padding: 0;
149
+ color: var(--text-muted);
150
+ background: transparent;
151
+ border: none;
152
+ border-radius: $border-radius-sm;
153
+ cursor: pointer;
154
+ transition: color 0.15s ease, background-color 0.15s ease;
155
+
156
+ &:hover {
157
+ color: var(--text-primary);
158
+ background-color: var(--bg-secondary);
159
+ }
160
+ }
161
+
162
+ .drawer-extra {
163
+ display: flex;
164
+ align-items: center;
165
+ gap: 0.5rem;
166
+ margin-right: 0.5rem;
167
+ }
168
+
169
+ // ----------------------------------------
170
+ // Drawer Body
171
+ // ----------------------------------------
172
+ .drawer-body {
173
+ flex: 1;
174
+ padding: 1.5rem;
175
+ overflow-y: auto;
176
+ }
177
+
178
+ // ----------------------------------------
179
+ // Drawer Footer
180
+ // ----------------------------------------
181
+ .drawer-footer {
182
+ display: flex;
183
+ align-items: center;
184
+ justify-content: flex-end;
185
+ gap: 0.5rem;
186
+ flex-shrink: 0;
187
+ padding: 0.75rem 1.5rem;
188
+ border-top: 1px solid var(--border-color);
189
+ }
190
+
191
+ .drawer-footer-left {
192
+ justify-content: flex-start;
193
+ }
194
+
195
+ .drawer-footer-center {
196
+ justify-content: center;
197
+ }
198
+
199
+ .drawer-footer-space-between {
200
+ justify-content: space-between;
201
+ }
202
+
203
+ // ----------------------------------------
204
+ // Drawer Sizes
205
+ // ----------------------------------------
206
+ .drawer-sm {
207
+ .drawer-content-wrapper {
208
+ width: 280px;
209
+ }
210
+
211
+ &.drawer-top .drawer-content-wrapper,
212
+ &.drawer-bottom .drawer-content-wrapper {
213
+ width: auto;
214
+ height: 280px;
215
+ }
216
+ }
217
+
218
+ .drawer-lg {
219
+ .drawer-content-wrapper {
220
+ width: 560px;
221
+ }
222
+
223
+ &.drawer-top .drawer-content-wrapper,
224
+ &.drawer-bottom .drawer-content-wrapper {
225
+ width: auto;
226
+ height: 560px;
227
+ }
228
+ }
229
+
230
+ .drawer-xl {
231
+ .drawer-content-wrapper {
232
+ width: 800px;
233
+ }
234
+
235
+ &.drawer-top .drawer-content-wrapper,
236
+ &.drawer-bottom .drawer-content-wrapper {
237
+ width: auto;
238
+ height: 80vh;
239
+ }
240
+ }
241
+
242
+ .drawer-full {
243
+ .drawer-content-wrapper {
244
+ width: 100%;
245
+ }
246
+
247
+ &.drawer-top .drawer-content-wrapper,
248
+ &.drawer-bottom .drawer-content-wrapper {
249
+ height: 100%;
250
+ }
251
+ }
252
+
253
+ // ----------------------------------------
254
+ // Drawer No Mask
255
+ // ----------------------------------------
256
+ .drawer-no-mask {
257
+ .drawer-mask {
258
+ display: none;
259
+ }
260
+ }
261
+
262
+ // ----------------------------------------
263
+ // Drawer Push Mode
264
+ // ----------------------------------------
265
+ // The main content is pushed by JS/external styles
266
+
267
+ // ----------------------------------------
268
+ // Drawer Nested / Multi-level
269
+ // ----------------------------------------
270
+ .drawer-nested {
271
+ .drawer-content-wrapper {
272
+ box-shadow: -6px 0 16px -8px rgba(0, 0, 0, 0.08),
273
+ -9px 0 28px 0 rgba(0, 0, 0, 0.05),
274
+ -12px 0 48px 16px rgba(0, 0, 0, 0.03);
275
+ }
276
+ }
277
+
278
+ // ----------------------------------------
279
+ // Drawer Form Layout
280
+ // ----------------------------------------
281
+ .drawer-form {
282
+ .drawer-body {
283
+ display: flex;
284
+ flex-direction: column;
285
+ gap: 1rem;
286
+ }
287
+ }
288
+
289
+ .drawer-form-row {
290
+ display: grid;
291
+ grid-template-columns: repeat(2, 1fr);
292
+ gap: 1rem;
293
+ }
294
+
295
+ .drawer-form-full {
296
+ grid-column: 1 / -1;
297
+ }
298
+
299
+ // ----------------------------------------
300
+ // Drawer Section
301
+ // ----------------------------------------
302
+ .drawer-section {
303
+ margin-bottom: 1.5rem;
304
+
305
+ &:last-child {
306
+ margin-bottom: 0;
307
+ }
308
+ }
309
+
310
+ .drawer-section-title {
311
+ margin-bottom: 0.75rem;
312
+ font-size: 0.875rem;
313
+ font-weight: 600;
314
+ color: var(--text-primary);
315
+ }
316
+
317
+ .drawer-section-content {
318
+ padding-left: 0.5rem;
319
+ }
320
+
321
+ // ----------------------------------------
322
+ // Drawer Tabs
323
+ // ----------------------------------------
324
+ .drawer-tabs {
325
+ display: flex;
326
+ gap: 0;
327
+ padding: 0 1.5rem;
328
+ border-bottom: 1px solid var(--border-color);
329
+ margin: -1rem -1.5rem 1rem;
330
+ }
331
+
332
+ .drawer-tab {
333
+ padding: 0.75rem 1rem;
334
+ font-size: 0.875rem;
335
+ color: var(--text-muted);
336
+ background: transparent;
337
+ border: none;
338
+ border-bottom: 2px solid transparent;
339
+ cursor: pointer;
340
+ transition: color 0.15s ease, border-color 0.15s ease;
341
+ margin-bottom: -1px;
342
+
343
+ &:hover {
344
+ color: var(--text-primary);
345
+ }
346
+
347
+ &.is-active {
348
+ color: var(--primary);
349
+ border-bottom-color: var(--primary);
350
+ font-weight: 500;
351
+ }
352
+ }
353
+
354
+ // ----------------------------------------
355
+ // Drawer No Header
356
+ // ----------------------------------------
357
+ .drawer-no-header {
358
+ .drawer-header {
359
+ display: none;
360
+ }
361
+
362
+ .drawer-close {
363
+ position: absolute;
364
+ top: 0.75rem;
365
+ right: 0.75rem;
366
+ z-index: 1;
367
+ }
368
+ }
369
+
370
+ // ----------------------------------------
371
+ // Drawer Loading
372
+ // ----------------------------------------
373
+ .drawer-loading {
374
+ .drawer-body {
375
+ display: flex;
376
+ align-items: center;
377
+ justify-content: center;
378
+ }
379
+ }
380
+
381
+ .drawer-spinner {
382
+ width: 2rem;
383
+ height: 2rem;
384
+ border: 2px solid var(--border-color);
385
+ border-top-color: var(--primary);
386
+ border-radius: 50%;
387
+ animation: spin 0.8s linear infinite;
388
+ }
389
+
390
+ @keyframes spin {
391
+ to { transform: rotate(360deg); }
392
+ }
393
+
394
+ // ----------------------------------------
395
+ // Drawer Bordered
396
+ // ----------------------------------------
397
+ .drawer-bordered {
398
+ .drawer-content-wrapper {
399
+ border-left: 1px solid var(--border-color);
400
+ }
401
+
402
+ &.drawer-left .drawer-content-wrapper {
403
+ border-left: none;
404
+ border-right: 1px solid var(--border-color);
405
+ }
406
+
407
+ &.drawer-top .drawer-content-wrapper {
408
+ border-left: none;
409
+ border-bottom: 1px solid var(--border-color);
410
+ }
411
+
412
+ &.drawer-bottom .drawer-content-wrapper {
413
+ border-left: none;
414
+ border-top: 1px solid var(--border-color);
415
+ }
416
+ }
417
+
418
+ // ----------------------------------------
419
+ // Drawer Dark Theme
420
+ // ----------------------------------------
421
+ .drawer-dark {
422
+ .drawer-content-wrapper {
423
+ background-color: #1f1f1f;
424
+ color: rgba(255, 255, 255, 0.85);
425
+ }
426
+
427
+ .drawer-title {
428
+ color: rgba(255, 255, 255, 0.85);
429
+ }
430
+
431
+ .drawer-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
+ .drawer-header,
441
+ .drawer-footer {
442
+ border-color: rgba(255, 255, 255, 0.1);
443
+ }
444
+ }
445
+
446
+ // ----------------------------------------
447
+ // Drawer Responsive
448
+ // ----------------------------------------
449
+ @media (max-width: 575.98px) {
450
+ .drawer-right .drawer-content-wrapper,
451
+ .drawer-left .drawer-content-wrapper {
452
+ width: 100% !important;
453
+ }
454
+
455
+ .drawer-responsive-bottom {
456
+ &.drawer-right,
457
+ &.drawer-left {
458
+ .drawer-content-wrapper {
459
+ top: auto;
460
+ bottom: 0;
461
+ left: 0;
462
+ right: 0;
463
+ width: 100%;
464
+ height: 80vh;
465
+ transform: translateY(100%);
466
+ border-radius: $border-radius-lg $border-radius-lg 0 0;
467
+ }
468
+
469
+ &.is-open .drawer-content-wrapper {
470
+ transform: translateY(0);
471
+ }
472
+ }
473
+ }
474
+ }
475
+
476
+ // ----------------------------------------
477
+ // Drawer Handle (for swipe)
478
+ // ----------------------------------------
479
+ .drawer-handle {
480
+ width: 32px;
481
+ height: 4px;
482
+ margin: 0.5rem auto;
483
+ background-color: var(--border-color);
484
+ border-radius: 2px;
485
+ }