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