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,556 @@
1
+ // ========================================
2
+ // ZenKit - Transfer Component
3
+ // Dual list transfer selection
4
+ // ========================================
5
+
6
+ @use '../abstracts/variables' as *;
7
+
8
+ // ----------------------------------------
9
+ // Transfer Container
10
+ // ----------------------------------------
11
+ .transfer {
12
+ display: flex;
13
+ align-items: stretch;
14
+ gap: 1rem;
15
+ }
16
+
17
+ // ----------------------------------------
18
+ // Transfer List (Source/Target)
19
+ // ----------------------------------------
20
+ .transfer-list {
21
+ display: flex;
22
+ flex-direction: column;
23
+ flex: 1;
24
+ min-width: 200px;
25
+ background-color: var(--bg-primary);
26
+ border: 1px solid var(--border-color);
27
+ border-radius: $border-radius;
28
+ }
29
+
30
+ // ----------------------------------------
31
+ // Transfer List Header
32
+ // ----------------------------------------
33
+ .transfer-list-header {
34
+ display: flex;
35
+ align-items: center;
36
+ justify-content: space-between;
37
+ padding: 0.75rem;
38
+ background-color: var(--bg-secondary);
39
+ border-bottom: 1px solid var(--border-color);
40
+ border-radius: $border-radius $border-radius 0 0;
41
+ }
42
+
43
+ .transfer-list-header-left {
44
+ display: flex;
45
+ align-items: center;
46
+ gap: 0.5rem;
47
+ }
48
+
49
+ .transfer-list-checkbox {
50
+ display: flex;
51
+ align-items: center;
52
+ }
53
+
54
+ .transfer-list-title {
55
+ font-size: 0.875rem;
56
+ font-weight: 600;
57
+ color: var(--text-primary);
58
+ }
59
+
60
+ .transfer-list-count {
61
+ font-size: 0.75rem;
62
+ color: var(--text-muted);
63
+ }
64
+
65
+ .transfer-list-header-right {
66
+ display: flex;
67
+ align-items: center;
68
+ gap: 0.5rem;
69
+ }
70
+
71
+ // ----------------------------------------
72
+ // Transfer List Search
73
+ // ----------------------------------------
74
+ .transfer-list-search {
75
+ padding: 0.5rem 0.75rem;
76
+ border-bottom: 1px solid var(--border-color);
77
+ }
78
+
79
+ .transfer-list-search-input {
80
+ width: 100%;
81
+ padding: 0.375rem 0.75rem;
82
+ font-size: 0.875rem;
83
+ border: 1px solid var(--border-color);
84
+ border-radius: $border-radius-sm;
85
+ background-color: var(--bg-primary);
86
+ color: var(--text-primary);
87
+
88
+ &::placeholder {
89
+ color: var(--text-muted);
90
+ }
91
+
92
+ &:focus {
93
+ border-color: var(--primary);
94
+ outline: 0;
95
+ box-shadow: 0 0 0 0.15rem rgba(var(--primary-rgb), 0.25);
96
+ }
97
+ }
98
+
99
+ // ----------------------------------------
100
+ // Transfer List Body
101
+ // ----------------------------------------
102
+ .transfer-list-body {
103
+ flex: 1;
104
+ overflow-y: auto;
105
+ min-height: 200px;
106
+ max-height: 300px;
107
+ }
108
+
109
+ .transfer-list-content {
110
+ padding: 0.25rem 0;
111
+ margin: 0;
112
+ list-style: none;
113
+ }
114
+
115
+ // ----------------------------------------
116
+ // Transfer List Item
117
+ // ----------------------------------------
118
+ .transfer-list-item {
119
+ display: flex;
120
+ align-items: center;
121
+ gap: 0.5rem;
122
+ padding: 0.5rem 0.75rem;
123
+ cursor: pointer;
124
+ transition: background-color 0.15s ease;
125
+
126
+ &:hover {
127
+ background-color: var(--bg-secondary);
128
+ }
129
+
130
+ &.is-selected {
131
+ background-color: rgba(var(--primary-rgb), 0.1);
132
+ }
133
+
134
+ &.is-disabled {
135
+ color: var(--text-muted);
136
+ cursor: not-allowed;
137
+ opacity: 0.5;
138
+
139
+ &:hover {
140
+ background-color: transparent;
141
+ }
142
+ }
143
+ }
144
+
145
+ .transfer-list-item-checkbox {
146
+ flex-shrink: 0;
147
+ }
148
+
149
+ .transfer-list-item-text {
150
+ flex: 1;
151
+ overflow: hidden;
152
+ text-overflow: ellipsis;
153
+ white-space: nowrap;
154
+ font-size: 0.875rem;
155
+ color: var(--text-primary);
156
+ }
157
+
158
+ .transfer-list-item-description {
159
+ font-size: 0.75rem;
160
+ color: var(--text-muted);
161
+ }
162
+
163
+ .transfer-list-item-remove {
164
+ display: flex;
165
+ align-items: center;
166
+ padding: 0.25rem;
167
+ color: var(--text-muted);
168
+ background: transparent;
169
+ border: none;
170
+ border-radius: 50%;
171
+ cursor: pointer;
172
+ transition: color 0.15s ease, background-color 0.15s ease;
173
+ opacity: 0;
174
+
175
+ .transfer-list-item:hover & {
176
+ opacity: 1;
177
+ }
178
+
179
+ &:hover {
180
+ color: var(--danger);
181
+ background-color: rgba(var(--danger-rgb), 0.1);
182
+ }
183
+ }
184
+
185
+ // ----------------------------------------
186
+ // Transfer List Empty
187
+ // ----------------------------------------
188
+ .transfer-list-empty {
189
+ display: flex;
190
+ flex-direction: column;
191
+ align-items: center;
192
+ justify-content: center;
193
+ padding: 2rem;
194
+ color: var(--text-muted);
195
+ }
196
+
197
+ .transfer-list-empty-icon {
198
+ font-size: 2rem;
199
+ margin-bottom: 0.5rem;
200
+ opacity: 0.5;
201
+ }
202
+
203
+ .transfer-list-empty-text {
204
+ font-size: 0.875rem;
205
+ }
206
+
207
+ // ----------------------------------------
208
+ // Transfer List Footer
209
+ // ----------------------------------------
210
+ .transfer-list-footer {
211
+ display: flex;
212
+ align-items: center;
213
+ justify-content: space-between;
214
+ padding: 0.5rem 0.75rem;
215
+ border-top: 1px solid var(--border-color);
216
+ background-color: var(--bg-secondary);
217
+ border-radius: 0 0 $border-radius $border-radius;
218
+ }
219
+
220
+ .transfer-list-footer-text {
221
+ font-size: 0.75rem;
222
+ color: var(--text-muted);
223
+ }
224
+
225
+ // ----------------------------------------
226
+ // Transfer Operation Buttons
227
+ // ----------------------------------------
228
+ .transfer-operation {
229
+ display: flex;
230
+ flex-direction: column;
231
+ align-items: center;
232
+ justify-content: center;
233
+ gap: 0.5rem;
234
+ }
235
+
236
+ .transfer-operation-btn {
237
+ display: flex;
238
+ align-items: center;
239
+ justify-content: center;
240
+ width: 2rem;
241
+ height: 2rem;
242
+ padding: 0;
243
+ color: var(--text-primary);
244
+ background-color: var(--bg-primary);
245
+ border: 1px solid var(--border-color);
246
+ border-radius: $border-radius-sm;
247
+ cursor: pointer;
248
+ transition: all 0.15s ease;
249
+
250
+ &:hover:not(:disabled) {
251
+ color: var(--primary);
252
+ border-color: var(--primary);
253
+ }
254
+
255
+ &:disabled {
256
+ color: var(--text-muted);
257
+ cursor: not-allowed;
258
+ opacity: 0.5;
259
+ }
260
+ }
261
+
262
+ // Move all buttons
263
+ .transfer-operation-move-all {
264
+ font-size: 0.75rem;
265
+ }
266
+
267
+ // ----------------------------------------
268
+ // Transfer Pagination
269
+ // ----------------------------------------
270
+ .transfer-list-pagination {
271
+ display: flex;
272
+ align-items: center;
273
+ justify-content: center;
274
+ gap: 0.25rem;
275
+ padding: 0.5rem;
276
+ border-top: 1px solid var(--border-color);
277
+ }
278
+
279
+ .transfer-list-pagination-btn {
280
+ display: flex;
281
+ align-items: center;
282
+ justify-content: center;
283
+ width: 1.5rem;
284
+ height: 1.5rem;
285
+ padding: 0;
286
+ font-size: 0.75rem;
287
+ color: var(--text-muted);
288
+ background: transparent;
289
+ border: none;
290
+ border-radius: $border-radius-sm;
291
+ cursor: pointer;
292
+ transition: all 0.15s ease;
293
+
294
+ &:hover:not(:disabled) {
295
+ color: var(--primary);
296
+ background-color: var(--bg-secondary);
297
+ }
298
+
299
+ &:disabled {
300
+ cursor: not-allowed;
301
+ opacity: 0.5;
302
+ }
303
+ }
304
+
305
+ .transfer-list-pagination-info {
306
+ font-size: 0.75rem;
307
+ color: var(--text-muted);
308
+ padding: 0 0.5rem;
309
+ }
310
+
311
+ // ----------------------------------------
312
+ // Transfer Sizes
313
+ // ----------------------------------------
314
+ .transfer-sm {
315
+ gap: 0.75rem;
316
+
317
+ .transfer-list {
318
+ min-width: 160px;
319
+ }
320
+
321
+ .transfer-list-header {
322
+ padding: 0.5rem;
323
+ }
324
+
325
+ .transfer-list-title {
326
+ font-size: 0.75rem;
327
+ }
328
+
329
+ .transfer-list-item {
330
+ padding: 0.375rem 0.5rem;
331
+ }
332
+
333
+ .transfer-list-item-text {
334
+ font-size: 0.75rem;
335
+ }
336
+
337
+ .transfer-operation-btn {
338
+ width: 1.5rem;
339
+ height: 1.5rem;
340
+ }
341
+ }
342
+
343
+ .transfer-lg {
344
+ gap: 1.5rem;
345
+
346
+ .transfer-list {
347
+ min-width: 280px;
348
+ }
349
+
350
+ .transfer-list-header {
351
+ padding: 1rem;
352
+ }
353
+
354
+ .transfer-list-title {
355
+ font-size: 1rem;
356
+ }
357
+
358
+ .transfer-list-item {
359
+ padding: 0.75rem 1rem;
360
+ }
361
+
362
+ .transfer-list-item-text {
363
+ font-size: 1rem;
364
+ }
365
+
366
+ .transfer-operation-btn {
367
+ width: 2.5rem;
368
+ height: 2.5rem;
369
+ }
370
+ }
371
+
372
+ // ----------------------------------------
373
+ // Transfer One Way
374
+ // ----------------------------------------
375
+ .transfer-one-way {
376
+ .transfer-operation {
377
+ gap: 0.25rem;
378
+ }
379
+ }
380
+
381
+ // ----------------------------------------
382
+ // Transfer Tree Mode
383
+ // ----------------------------------------
384
+ .transfer-tree {
385
+ .transfer-list-content {
386
+ padding: 0.5rem;
387
+ }
388
+ }
389
+
390
+ .transfer-tree-node {
391
+ display: flex;
392
+ align-items: center;
393
+ gap: 0.25rem;
394
+ padding: 0.25rem 0;
395
+ }
396
+
397
+ .transfer-tree-node-expand {
398
+ display: flex;
399
+ align-items: center;
400
+ justify-content: center;
401
+ width: 1.25rem;
402
+ height: 1.25rem;
403
+ color: var(--text-muted);
404
+ background: transparent;
405
+ border: none;
406
+ border-radius: $border-radius-sm;
407
+ cursor: pointer;
408
+ transition: color 0.15s ease, transform 0.15s ease;
409
+
410
+ &:hover {
411
+ color: var(--text-primary);
412
+ }
413
+
414
+ &.is-expanded {
415
+ transform: rotate(90deg);
416
+ }
417
+
418
+ &.is-leaf {
419
+ visibility: hidden;
420
+ }
421
+ }
422
+
423
+ .transfer-tree-node-checkbox {
424
+ flex-shrink: 0;
425
+ }
426
+
427
+ .transfer-tree-node-content {
428
+ flex: 1;
429
+ display: flex;
430
+ align-items: center;
431
+ gap: 0.5rem;
432
+ padding: 0.25rem 0.5rem;
433
+ border-radius: $border-radius-sm;
434
+ cursor: pointer;
435
+ transition: background-color 0.15s ease;
436
+
437
+ &:hover {
438
+ background-color: var(--bg-secondary);
439
+ }
440
+ }
441
+
442
+ .transfer-tree-node-icon {
443
+ color: var(--text-muted);
444
+ }
445
+
446
+ .transfer-tree-node-text {
447
+ flex: 1;
448
+ font-size: 0.875rem;
449
+ overflow: hidden;
450
+ text-overflow: ellipsis;
451
+ white-space: nowrap;
452
+ }
453
+
454
+ .transfer-tree-children {
455
+ padding-left: 1.25rem;
456
+ }
457
+
458
+ // ----------------------------------------
459
+ // Transfer Table Mode
460
+ // ----------------------------------------
461
+ .transfer-table {
462
+ .transfer-list-body {
463
+ overflow-x: auto;
464
+ }
465
+ }
466
+
467
+ .transfer-table-head {
468
+ display: flex;
469
+ background-color: var(--bg-secondary);
470
+ border-bottom: 1px solid var(--border-color);
471
+ }
472
+
473
+ .transfer-table-head-cell {
474
+ flex: 1;
475
+ padding: 0.5rem 0.75rem;
476
+ font-size: 0.75rem;
477
+ font-weight: 600;
478
+ color: var(--text-muted);
479
+ text-transform: uppercase;
480
+ }
481
+
482
+ .transfer-table-row {
483
+ display: flex;
484
+ align-items: center;
485
+ border-bottom: 1px solid var(--border-color);
486
+ cursor: pointer;
487
+ transition: background-color 0.15s ease;
488
+
489
+ &:last-child {
490
+ border-bottom: none;
491
+ }
492
+
493
+ &:hover {
494
+ background-color: var(--bg-secondary);
495
+ }
496
+
497
+ &.is-selected {
498
+ background-color: rgba(var(--primary-rgb), 0.1);
499
+ }
500
+ }
501
+
502
+ .transfer-table-cell {
503
+ flex: 1;
504
+ padding: 0.5rem 0.75rem;
505
+ font-size: 0.875rem;
506
+ overflow: hidden;
507
+ text-overflow: ellipsis;
508
+ white-space: nowrap;
509
+ }
510
+
511
+ .transfer-table-checkbox-cell {
512
+ flex: 0 0 40px;
513
+ display: flex;
514
+ align-items: center;
515
+ justify-content: center;
516
+ }
517
+
518
+ // ----------------------------------------
519
+ // Transfer Status
520
+ // ----------------------------------------
521
+ .transfer-error {
522
+ .transfer-list {
523
+ border-color: var(--danger);
524
+ }
525
+ }
526
+
527
+ // ----------------------------------------
528
+ // Transfer Disabled
529
+ // ----------------------------------------
530
+ .transfer-disabled {
531
+ opacity: 0.65;
532
+ pointer-events: none;
533
+
534
+ .transfer-list {
535
+ background-color: var(--bg-secondary);
536
+ }
537
+ }
538
+
539
+ // ----------------------------------------
540
+ // Transfer Responsive
541
+ // ----------------------------------------
542
+ @media (max-width: 767.98px) {
543
+ .transfer {
544
+ flex-direction: column;
545
+ align-items: stretch;
546
+ }
547
+
548
+ .transfer-operation {
549
+ flex-direction: row;
550
+ padding: 0.5rem 0;
551
+ }
552
+
553
+ .transfer-operation-btn {
554
+ transform: rotate(90deg);
555
+ }
556
+ }