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,518 @@
1
+ // ========================================
2
+ // ZenKit - Tree Component
3
+ // Hierarchical tree view
4
+ // ========================================
5
+
6
+ @use '../abstracts/variables' as *;
7
+
8
+ // ----------------------------------------
9
+ // Tree Container
10
+ // ----------------------------------------
11
+ .tree {
12
+ display: flex;
13
+ flex-direction: column;
14
+ }
15
+
16
+ // ----------------------------------------
17
+ // Tree List
18
+ // ----------------------------------------
19
+ .tree-list {
20
+ margin: 0;
21
+ padding: 0;
22
+ list-style: none;
23
+ }
24
+
25
+ // ----------------------------------------
26
+ // Tree Node
27
+ // ----------------------------------------
28
+ .tree-node {
29
+ display: flex;
30
+ flex-direction: column;
31
+ }
32
+
33
+ // ----------------------------------------
34
+ // Tree Node Content (Single Row)
35
+ // ----------------------------------------
36
+ .tree-node-content {
37
+ display: flex;
38
+ align-items: center;
39
+ padding: 0.25rem 0;
40
+ }
41
+
42
+ // ----------------------------------------
43
+ // Tree Node Indent
44
+ // ----------------------------------------
45
+ .tree-indent {
46
+ display: flex;
47
+ align-items: stretch;
48
+ align-self: stretch;
49
+ }
50
+
51
+ .tree-indent-unit {
52
+ display: inline-block;
53
+ width: 24px;
54
+ }
55
+
56
+ // ----------------------------------------
57
+ // Tree Switcher (Expand/Collapse)
58
+ // ----------------------------------------
59
+ .tree-switcher {
60
+ display: flex;
61
+ align-items: center;
62
+ justify-content: center;
63
+ width: 24px;
64
+ height: 24px;
65
+ padding: 0;
66
+ color: var(--text-muted);
67
+ background: transparent;
68
+ border: none;
69
+ border-radius: $border-radius-sm;
70
+ cursor: pointer;
71
+ transition: color 0.15s ease, transform 0.2s ease, background-color 0.15s ease;
72
+
73
+ &:hover {
74
+ color: var(--text-primary);
75
+ background-color: var(--bg-secondary);
76
+ }
77
+
78
+ &.is-expanded {
79
+ transform: rotate(90deg);
80
+ }
81
+
82
+ &.is-loading {
83
+ animation: spin 1s linear infinite;
84
+ }
85
+ }
86
+
87
+ @keyframes spin {
88
+ from { transform: rotate(0deg); }
89
+ to { transform: rotate(360deg); }
90
+ }
91
+
92
+ .tree-switcher-leaf {
93
+ visibility: hidden;
94
+ }
95
+
96
+ .tree-switcher-noop {
97
+ width: 24px;
98
+ }
99
+
100
+ // ----------------------------------------
101
+ // Tree Checkbox
102
+ // ----------------------------------------
103
+ .tree-checkbox {
104
+ display: flex;
105
+ align-items: center;
106
+ margin-right: 0.25rem;
107
+ }
108
+
109
+ // ----------------------------------------
110
+ // Tree Node Icon
111
+ // ----------------------------------------
112
+ .tree-node-icon {
113
+ display: flex;
114
+ align-items: center;
115
+ margin-right: 0.5rem;
116
+ color: var(--text-muted);
117
+ }
118
+
119
+ .tree-node.is-folder > .tree-node-content .tree-node-icon {
120
+ color: var(--warning);
121
+ }
122
+
123
+ // ----------------------------------------
124
+ // Tree Node Title
125
+ // ----------------------------------------
126
+ .tree-node-title {
127
+ flex: 1;
128
+ display: flex;
129
+ align-items: center;
130
+ padding: 0.25rem 0.5rem;
131
+ font-size: 0.875rem;
132
+ color: var(--text-primary);
133
+ border-radius: $border-radius-sm;
134
+ cursor: pointer;
135
+ transition: background-color 0.15s ease;
136
+
137
+ &:hover {
138
+ background-color: var(--bg-secondary);
139
+ }
140
+
141
+ .tree-node.is-selected > .tree-node-content & {
142
+ color: var(--primary);
143
+ background-color: rgba(var(--primary-rgb), 0.1);
144
+ }
145
+
146
+ .tree-node.is-disabled > .tree-node-content & {
147
+ color: var(--text-muted);
148
+ cursor: not-allowed;
149
+ opacity: 0.5;
150
+
151
+ &:hover {
152
+ background-color: transparent;
153
+ }
154
+ }
155
+ }
156
+
157
+ .tree-node-title-text {
158
+ flex: 1;
159
+ overflow: hidden;
160
+ text-overflow: ellipsis;
161
+ white-space: nowrap;
162
+ }
163
+
164
+ // ----------------------------------------
165
+ // Tree Node Extra (Actions)
166
+ // ----------------------------------------
167
+ .tree-node-extra {
168
+ display: flex;
169
+ align-items: center;
170
+ gap: 0.25rem;
171
+ margin-left: 0.5rem;
172
+ opacity: 0;
173
+ transition: opacity 0.15s ease;
174
+
175
+ .tree-node-content:hover & {
176
+ opacity: 1;
177
+ }
178
+ }
179
+
180
+ .tree-node-action {
181
+ display: flex;
182
+ align-items: center;
183
+ justify-content: center;
184
+ width: 1.5rem;
185
+ height: 1.5rem;
186
+ padding: 0;
187
+ color: var(--text-muted);
188
+ background: transparent;
189
+ border: none;
190
+ border-radius: $border-radius-sm;
191
+ cursor: pointer;
192
+ transition: color 0.15s ease, background-color 0.15s ease;
193
+
194
+ &:hover {
195
+ color: var(--primary);
196
+ background-color: var(--bg-tertiary);
197
+ }
198
+
199
+ &.tree-node-action-delete:hover {
200
+ color: var(--danger);
201
+ background-color: rgba(var(--danger-rgb), 0.1);
202
+ }
203
+ }
204
+
205
+ // ----------------------------------------
206
+ // Tree Node Children
207
+ // ----------------------------------------
208
+ .tree-node-children {
209
+ display: none;
210
+
211
+ .tree-node.is-expanded > & {
212
+ display: block;
213
+ }
214
+ }
215
+
216
+ // ----------------------------------------
217
+ // Tree with Lines
218
+ // ----------------------------------------
219
+ .tree-show-lines {
220
+ .tree-indent-unit {
221
+ position: relative;
222
+
223
+ &::before {
224
+ content: '';
225
+ position: absolute;
226
+ top: 0;
227
+ bottom: 0;
228
+ left: 50%;
229
+ width: 1px;
230
+ background-color: var(--border-color);
231
+ }
232
+ }
233
+
234
+ .tree-node:last-child > .tree-node-content .tree-indent-unit::before {
235
+ height: 50%;
236
+ }
237
+
238
+ .tree-switcher::after {
239
+ content: '';
240
+ position: absolute;
241
+ top: 50%;
242
+ left: -12px;
243
+ width: 12px;
244
+ height: 1px;
245
+ background-color: var(--border-color);
246
+ }
247
+ }
248
+
249
+ // ----------------------------------------
250
+ // Tree Draggable
251
+ // ----------------------------------------
252
+ .tree-draggable {
253
+ .tree-node-title {
254
+ cursor: grab;
255
+ }
256
+
257
+ .tree-node.is-dragging {
258
+ opacity: 0.5;
259
+ }
260
+
261
+ .tree-node.is-drag-over > .tree-node-content .tree-node-title {
262
+ background-color: rgba(var(--primary-rgb), 0.2);
263
+ }
264
+ }
265
+
266
+ .tree-drop-indicator {
267
+ position: absolute;
268
+ left: 0;
269
+ right: 0;
270
+ height: 2px;
271
+ background-color: var(--primary);
272
+ pointer-events: none;
273
+
274
+ &::before {
275
+ content: '';
276
+ position: absolute;
277
+ left: -3px;
278
+ top: -3px;
279
+ width: 8px;
280
+ height: 8px;
281
+ background-color: var(--primary);
282
+ border-radius: 50%;
283
+ }
284
+ }
285
+
286
+ // ----------------------------------------
287
+ // Tree Directory Style
288
+ // ----------------------------------------
289
+ .tree-directory {
290
+ .tree-node-title {
291
+ padding: 0.375rem 0.75rem;
292
+ }
293
+
294
+ .tree-node.is-selected > .tree-node-content .tree-node-title {
295
+ color: #fff;
296
+ background-color: var(--primary);
297
+ }
298
+ }
299
+
300
+ // ----------------------------------------
301
+ // Tree Block Node
302
+ // ----------------------------------------
303
+ .tree-block-node {
304
+ .tree-node-content {
305
+ display: flex;
306
+ width: 100%;
307
+ }
308
+
309
+ .tree-node-title {
310
+ flex: 1;
311
+ }
312
+
313
+ .tree-node.is-selected > .tree-node-content {
314
+ background-color: rgba(var(--primary-rgb), 0.1);
315
+ }
316
+ }
317
+
318
+ // ----------------------------------------
319
+ // Tree Virtual (for large lists)
320
+ // ----------------------------------------
321
+ .tree-virtual {
322
+ position: relative;
323
+ overflow-y: auto;
324
+ }
325
+
326
+ .tree-virtual-list {
327
+ position: relative;
328
+ }
329
+
330
+ .tree-virtual-node {
331
+ position: absolute;
332
+ left: 0;
333
+ right: 0;
334
+ }
335
+
336
+ // ----------------------------------------
337
+ // Tree Searchable
338
+ // ----------------------------------------
339
+ .tree-search {
340
+ margin-bottom: 0.5rem;
341
+ }
342
+
343
+ .tree-search-input {
344
+ width: 100%;
345
+ padding: 0.375rem 0.75rem;
346
+ font-size: 0.875rem;
347
+ border: 1px solid var(--border-color);
348
+ border-radius: $border-radius-sm;
349
+ background-color: var(--bg-primary);
350
+ color: var(--text-primary);
351
+
352
+ &::placeholder {
353
+ color: var(--text-muted);
354
+ }
355
+
356
+ &:focus {
357
+ border-color: var(--primary);
358
+ outline: 0;
359
+ box-shadow: 0 0 0 0.15rem rgba(var(--primary-rgb), 0.25);
360
+ }
361
+ }
362
+
363
+ .tree-search-highlight {
364
+ color: var(--primary);
365
+ font-weight: 600;
366
+ background-color: transparent;
367
+ }
368
+
369
+ // ----------------------------------------
370
+ // Tree Empty
371
+ // ----------------------------------------
372
+ .tree-empty {
373
+ display: flex;
374
+ flex-direction: column;
375
+ align-items: center;
376
+ justify-content: center;
377
+ padding: 2rem;
378
+ color: var(--text-muted);
379
+ }
380
+
381
+ .tree-empty-icon {
382
+ font-size: 2rem;
383
+ margin-bottom: 0.5rem;
384
+ opacity: 0.5;
385
+ }
386
+
387
+ .tree-empty-text {
388
+ font-size: 0.875rem;
389
+ }
390
+
391
+ // ----------------------------------------
392
+ // Tree Sizes
393
+ // ----------------------------------------
394
+ .tree-sm {
395
+ .tree-indent-unit,
396
+ .tree-switcher {
397
+ width: 20px;
398
+ height: 20px;
399
+ }
400
+
401
+ .tree-node-title {
402
+ padding: 0.125rem 0.375rem;
403
+ font-size: 0.75rem;
404
+ }
405
+
406
+ .tree-node-icon {
407
+ font-size: 0.875rem;
408
+ }
409
+ }
410
+
411
+ .tree-lg {
412
+ .tree-indent-unit,
413
+ .tree-switcher {
414
+ width: 28px;
415
+ height: 28px;
416
+ }
417
+
418
+ .tree-node-title {
419
+ padding: 0.375rem 0.625rem;
420
+ font-size: 1rem;
421
+ }
422
+
423
+ .tree-node-icon {
424
+ font-size: 1.25rem;
425
+ }
426
+ }
427
+
428
+ // ----------------------------------------
429
+ // Tree Bordered
430
+ // ----------------------------------------
431
+ .tree-bordered {
432
+ padding: 0.75rem;
433
+ border: 1px solid var(--border-color);
434
+ border-radius: $border-radius;
435
+ }
436
+
437
+ // ----------------------------------------
438
+ // Tree Card Style
439
+ // ----------------------------------------
440
+ .tree-card {
441
+ padding: 1rem;
442
+ background-color: var(--bg-primary);
443
+ border: 1px solid var(--border-color);
444
+ border-radius: $border-radius;
445
+ box-shadow: $shadow-sm;
446
+ }
447
+
448
+ .tree-card-header {
449
+ display: flex;
450
+ align-items: center;
451
+ justify-content: space-between;
452
+ padding-bottom: 0.75rem;
453
+ margin-bottom: 0.75rem;
454
+ border-bottom: 1px solid var(--border-color);
455
+ }
456
+
457
+ .tree-card-title {
458
+ font-size: 1rem;
459
+ font-weight: 600;
460
+ color: var(--text-primary);
461
+ }
462
+
463
+ .tree-card-actions {
464
+ display: flex;
465
+ gap: 0.5rem;
466
+ }
467
+
468
+ // ----------------------------------------
469
+ // Tree Scrollable
470
+ // ----------------------------------------
471
+ .tree-scrollable {
472
+ max-height: 400px;
473
+ overflow-y: auto;
474
+ }
475
+
476
+ // ----------------------------------------
477
+ // Tree Loading State
478
+ // ----------------------------------------
479
+ .tree-loading {
480
+ display: flex;
481
+ flex-direction: column;
482
+ gap: 0.5rem;
483
+ padding: 0.5rem;
484
+ }
485
+
486
+ .tree-loading-node {
487
+ display: flex;
488
+ align-items: center;
489
+ gap: 0.5rem;
490
+ }
491
+
492
+ .tree-loading-switcher,
493
+ .tree-loading-icon,
494
+ .tree-loading-title {
495
+ background-color: var(--bg-tertiary);
496
+ border-radius: $border-radius-sm;
497
+ animation: pulse 1.5s ease-in-out infinite;
498
+ }
499
+
500
+ .tree-loading-switcher {
501
+ width: 16px;
502
+ height: 16px;
503
+ }
504
+
505
+ .tree-loading-icon {
506
+ width: 16px;
507
+ height: 16px;
508
+ }
509
+
510
+ .tree-loading-title {
511
+ flex: 1;
512
+ height: 16px;
513
+ }
514
+
515
+ @keyframes pulse {
516
+ 0%, 100% { opacity: 1; }
517
+ 50% { opacity: 0.5; }
518
+ }