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,538 @@
1
+ // ========================================
2
+ // ZenKit - Layout Component
3
+ // App layout structure (Header, Sider, Content, Footer)
4
+ // ========================================
5
+
6
+ @use '../abstracts/variables' as *;
7
+
8
+ // ----------------------------------------
9
+ // Layout Container
10
+ // ----------------------------------------
11
+ .layout {
12
+ display: flex;
13
+ flex-direction: column;
14
+ min-height: 100%;
15
+ background-color: var(--bg-secondary);
16
+ }
17
+
18
+ // Horizontal layout (with sider)
19
+ .layout-has-sider {
20
+ flex-direction: row;
21
+ }
22
+
23
+ // ----------------------------------------
24
+ // Layout Header
25
+ // ----------------------------------------
26
+ .layout-header {
27
+ flex-shrink: 0;
28
+ display: flex;
29
+ align-items: center;
30
+ height: 64px;
31
+ padding: 0 24px;
32
+ background-color: var(--bg-primary);
33
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
34
+ z-index: $z-fixed;
35
+ }
36
+
37
+ .layout-header-logo {
38
+ display: flex;
39
+ align-items: center;
40
+ gap: 0.5rem;
41
+ font-size: 1.25rem;
42
+ font-weight: 600;
43
+ color: var(--text-primary);
44
+ text-decoration: none;
45
+
46
+ img {
47
+ height: 32px;
48
+ width: auto;
49
+ }
50
+ }
51
+
52
+ .layout-header-nav {
53
+ flex: 1;
54
+ display: flex;
55
+ align-items: center;
56
+ margin-left: 2rem;
57
+ }
58
+
59
+ .layout-header-actions {
60
+ display: flex;
61
+ align-items: center;
62
+ gap: 1rem;
63
+ margin-left: auto;
64
+ }
65
+
66
+ // ----------------------------------------
67
+ // Layout Sider
68
+ // ----------------------------------------
69
+ .layout-sider {
70
+ flex-shrink: 0;
71
+ display: flex;
72
+ flex-direction: column;
73
+ width: 200px;
74
+ background-color: var(--bg-primary);
75
+ border-right: 1px solid var(--border-color);
76
+ transition: width 0.2s ease, margin 0.2s ease;
77
+ overflow: hidden;
78
+ }
79
+
80
+ // Sider collapsed state
81
+ .layout-sider-collapsed {
82
+ width: 80px;
83
+
84
+ .layout-sider-logo-text,
85
+ .layout-sider-menu-text {
86
+ display: none;
87
+ }
88
+
89
+ .layout-sider-menu-item {
90
+ justify-content: center;
91
+ padding: 0.75rem;
92
+ }
93
+ }
94
+
95
+ .layout-sider-logo {
96
+ display: flex;
97
+ align-items: center;
98
+ gap: 0.75rem;
99
+ height: 64px;
100
+ padding: 0 24px;
101
+ border-bottom: 1px solid var(--border-color);
102
+ }
103
+
104
+ .layout-sider-logo-icon {
105
+ flex-shrink: 0;
106
+ width: 32px;
107
+ height: 32px;
108
+ }
109
+
110
+ .layout-sider-logo-text {
111
+ font-size: 1.125rem;
112
+ font-weight: 600;
113
+ color: var(--text-primary);
114
+ white-space: nowrap;
115
+ overflow: hidden;
116
+ text-overflow: ellipsis;
117
+ }
118
+
119
+ .layout-sider-content {
120
+ flex: 1;
121
+ overflow-y: auto;
122
+ padding: 0.5rem 0;
123
+ }
124
+
125
+ .layout-sider-footer {
126
+ flex-shrink: 0;
127
+ padding: 1rem;
128
+ border-top: 1px solid var(--border-color);
129
+ }
130
+
131
+ // Sider menu
132
+ .layout-sider-menu {
133
+ display: flex;
134
+ flex-direction: column;
135
+ padding: 0;
136
+ margin: 0;
137
+ list-style: none;
138
+ }
139
+
140
+ .layout-sider-menu-item {
141
+ display: flex;
142
+ align-items: center;
143
+ gap: 0.75rem;
144
+ padding: 0.75rem 1.5rem;
145
+ font-size: 0.875rem;
146
+ color: var(--text-primary);
147
+ text-decoration: none;
148
+ cursor: pointer;
149
+ transition: background-color 0.15s ease, color 0.15s ease;
150
+
151
+ &:hover {
152
+ background-color: var(--bg-secondary);
153
+ }
154
+
155
+ &.is-active {
156
+ color: var(--primary);
157
+ background-color: rgba(var(--primary-rgb), 0.1);
158
+ }
159
+ }
160
+
161
+ .layout-sider-menu-icon {
162
+ flex-shrink: 0;
163
+ display: flex;
164
+ align-items: center;
165
+ font-size: 1rem;
166
+ }
167
+
168
+ .layout-sider-menu-text {
169
+ flex: 1;
170
+ white-space: nowrap;
171
+ overflow: hidden;
172
+ text-overflow: ellipsis;
173
+ }
174
+
175
+ .layout-sider-menu-badge {
176
+ display: inline-flex;
177
+ align-items: center;
178
+ justify-content: center;
179
+ min-width: 18px;
180
+ height: 18px;
181
+ padding: 0 5px;
182
+ font-size: 0.625rem;
183
+ font-weight: 600;
184
+ color: #fff;
185
+ background-color: var(--danger);
186
+ border-radius: 9px;
187
+ }
188
+
189
+ // Sider toggle
190
+ .layout-sider-toggle {
191
+ position: absolute;
192
+ top: 50%;
193
+ right: -12px;
194
+ transform: translateY(-50%);
195
+ display: flex;
196
+ align-items: center;
197
+ justify-content: center;
198
+ width: 24px;
199
+ height: 24px;
200
+ color: var(--text-muted);
201
+ background-color: var(--bg-primary);
202
+ border: 1px solid var(--border-color);
203
+ border-radius: 50%;
204
+ cursor: pointer;
205
+ transition: color 0.15s ease;
206
+ z-index: 1;
207
+
208
+ &:hover {
209
+ color: var(--primary);
210
+ }
211
+ }
212
+
213
+ // ----------------------------------------
214
+ // Layout Content
215
+ // ----------------------------------------
216
+ .layout-content {
217
+ flex: 1;
218
+ display: flex;
219
+ flex-direction: column;
220
+ min-height: 0;
221
+ }
222
+
223
+ .layout-content-main {
224
+ flex: 1;
225
+ padding: 24px;
226
+ overflow-y: auto;
227
+ }
228
+
229
+ .layout-content-header {
230
+ flex-shrink: 0;
231
+ display: flex;
232
+ align-items: center;
233
+ justify-content: space-between;
234
+ padding: 16px 24px;
235
+ background-color: var(--bg-primary);
236
+ border-bottom: 1px solid var(--border-color);
237
+ }
238
+
239
+ .layout-content-title {
240
+ margin: 0;
241
+ font-size: 1.25rem;
242
+ font-weight: 600;
243
+ color: var(--text-primary);
244
+ }
245
+
246
+ .layout-content-breadcrumb {
247
+ font-size: 0.875rem;
248
+ color: var(--text-muted);
249
+ }
250
+
251
+ // ----------------------------------------
252
+ // Layout Footer
253
+ // ----------------------------------------
254
+ .layout-footer {
255
+ flex-shrink: 0;
256
+ display: flex;
257
+ align-items: center;
258
+ justify-content: center;
259
+ padding: 24px;
260
+ font-size: 0.875rem;
261
+ color: var(--text-muted);
262
+ background-color: var(--bg-secondary);
263
+ border-top: 1px solid var(--border-color);
264
+ }
265
+
266
+ .layout-footer-links {
267
+ display: flex;
268
+ align-items: center;
269
+ gap: 1.5rem;
270
+ margin-bottom: 0.5rem;
271
+
272
+ a {
273
+ color: var(--text-muted);
274
+ text-decoration: none;
275
+
276
+ &:hover {
277
+ color: var(--primary);
278
+ }
279
+ }
280
+ }
281
+
282
+ .layout-footer-copyright {
283
+ color: var(--text-muted);
284
+ }
285
+
286
+ // ----------------------------------------
287
+ // Layout Variations
288
+ // ----------------------------------------
289
+ // Top navigation layout
290
+ .layout-top-nav {
291
+ .layout-header {
292
+ position: sticky;
293
+ top: 0;
294
+ }
295
+ }
296
+
297
+ // Side navigation layout
298
+ .layout-side-nav {
299
+ .layout-sider {
300
+ position: sticky;
301
+ top: 0;
302
+ height: 100vh;
303
+ overflow-y: auto;
304
+ }
305
+ }
306
+
307
+ // Fixed header
308
+ .layout-fixed-header {
309
+ .layout-header {
310
+ position: fixed;
311
+ top: 0;
312
+ left: 0;
313
+ right: 0;
314
+ }
315
+
316
+ .layout-content,
317
+ .layout-sider {
318
+ margin-top: 64px;
319
+ }
320
+ }
321
+
322
+ // Fixed sider
323
+ .layout-fixed-sider {
324
+ .layout-sider {
325
+ position: fixed;
326
+ top: 0;
327
+ left: 0;
328
+ bottom: 0;
329
+ overflow-y: auto;
330
+ }
331
+
332
+ .layout-content {
333
+ margin-left: 200px;
334
+ }
335
+
336
+ &.layout-sider-collapsed .layout-content {
337
+ margin-left: 80px;
338
+ }
339
+ }
340
+
341
+ // Fixed header + sider
342
+ .layout-fixed-header.layout-fixed-sider {
343
+ .layout-sider {
344
+ top: 64px;
345
+ height: calc(100vh - 64px);
346
+ }
347
+ }
348
+
349
+ // ----------------------------------------
350
+ // Layout Dark Theme
351
+ // ----------------------------------------
352
+ .layout-dark {
353
+ background-color: #141414;
354
+
355
+ .layout-header {
356
+ background-color: #1f1f1f;
357
+ color: rgba(255, 255, 255, 0.85);
358
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
359
+ }
360
+
361
+ .layout-sider {
362
+ background-color: #001529;
363
+ border-right-color: transparent;
364
+ }
365
+
366
+ .layout-sider-logo-text {
367
+ color: rgba(255, 255, 255, 0.85);
368
+ }
369
+
370
+ .layout-sider-menu-item {
371
+ color: rgba(255, 255, 255, 0.65);
372
+
373
+ &:hover {
374
+ color: rgba(255, 255, 255, 0.85);
375
+ background-color: rgba(255, 255, 255, 0.05);
376
+ }
377
+
378
+ &.is-active {
379
+ color: #fff;
380
+ background-color: var(--primary);
381
+ }
382
+ }
383
+
384
+ .layout-footer {
385
+ background-color: #1f1f1f;
386
+ border-top-color: rgba(255, 255, 255, 0.1);
387
+ color: rgba(255, 255, 255, 0.45);
388
+ }
389
+ }
390
+
391
+ // ----------------------------------------
392
+ // Layout Responsive
393
+ // ----------------------------------------
394
+ @media (max-width: 991.98px) {
395
+ .layout-sider {
396
+ position: fixed;
397
+ top: 0;
398
+ left: 0;
399
+ bottom: 0;
400
+ z-index: $z-modal;
401
+ transform: translateX(-100%);
402
+ transition: transform 0.3s ease;
403
+
404
+ &.is-open {
405
+ transform: translateX(0);
406
+ }
407
+ }
408
+
409
+ .layout-sider-overlay {
410
+ position: fixed;
411
+ inset: 0;
412
+ z-index: $z-modal - 1;
413
+ background-color: rgba(0, 0, 0, 0.45);
414
+ opacity: 0;
415
+ visibility: hidden;
416
+ transition: opacity 0.3s ease, visibility 0.3s ease;
417
+
418
+ .layout-sider.is-open ~ & {
419
+ opacity: 1;
420
+ visibility: visible;
421
+ }
422
+ }
423
+
424
+ .layout-content {
425
+ margin-left: 0 !important;
426
+ }
427
+
428
+ .layout-header-toggle {
429
+ display: flex;
430
+ align-items: center;
431
+ justify-content: center;
432
+ width: 2.5rem;
433
+ height: 2.5rem;
434
+ margin-right: 0.5rem;
435
+ color: var(--text-primary);
436
+ background: transparent;
437
+ border: none;
438
+ border-radius: $border-radius-sm;
439
+ cursor: pointer;
440
+
441
+ &:hover {
442
+ background-color: var(--bg-secondary);
443
+ }
444
+ }
445
+ }
446
+
447
+ @media (min-width: 992px) {
448
+ .layout-header-toggle {
449
+ display: none;
450
+ }
451
+
452
+ .layout-sider-overlay {
453
+ display: none;
454
+ }
455
+ }
456
+
457
+ @media (max-width: 575.98px) {
458
+ .layout-header {
459
+ height: 56px;
460
+ padding: 0 16px;
461
+ }
462
+
463
+ .layout-content-main {
464
+ padding: 16px;
465
+ }
466
+
467
+ .layout-footer {
468
+ padding: 16px;
469
+ flex-direction: column;
470
+ gap: 0.5rem;
471
+ }
472
+ }
473
+
474
+ // ----------------------------------------
475
+ // Layout Spacing Variants
476
+ // ----------------------------------------
477
+ .layout-compact {
478
+ .layout-header {
479
+ height: 48px;
480
+ }
481
+
482
+ .layout-sider-logo {
483
+ height: 48px;
484
+ padding: 0 16px;
485
+ }
486
+
487
+ .layout-sider-menu-item {
488
+ padding: 0.5rem 1rem;
489
+ }
490
+
491
+ .layout-content-main {
492
+ padding: 16px;
493
+ }
494
+
495
+ .layout-footer {
496
+ padding: 16px;
497
+ }
498
+ }
499
+
500
+ .layout-spacious {
501
+ .layout-header {
502
+ height: 80px;
503
+ padding: 0 32px;
504
+ }
505
+
506
+ .layout-sider {
507
+ width: 256px;
508
+ }
509
+
510
+ .layout-sider-logo {
511
+ height: 80px;
512
+ padding: 0 32px;
513
+ }
514
+
515
+ .layout-content-main {
516
+ padding: 32px;
517
+ }
518
+
519
+ .layout-footer {
520
+ padding: 32px;
521
+ }
522
+ }
523
+
524
+ // ----------------------------------------
525
+ // Layout Boxed
526
+ // ----------------------------------------
527
+ .layout-boxed {
528
+ max-width: 1440px;
529
+ margin: 0 auto;
530
+ box-shadow: 0 0 24px rgba(0, 0, 0, 0.1);
531
+ }
532
+
533
+ // ----------------------------------------
534
+ // Layout Full Height
535
+ // ----------------------------------------
536
+ .layout-full-height {
537
+ min-height: 100vh;
538
+ }