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,441 @@
1
+ // ========================================
2
+ // ZenKit - Segmented Component
3
+ // Toggle button group / Tab-like selector
4
+ // ========================================
5
+
6
+ @use '../abstracts/variables' as *;
7
+
8
+ // ----------------------------------------
9
+ // Segmented Container
10
+ // ----------------------------------------
11
+ .segmented {
12
+ display: inline-flex;
13
+ align-items: stretch;
14
+ padding: 2px;
15
+ background-color: var(--bg-secondary);
16
+ border-radius: $border-radius;
17
+ }
18
+
19
+ // ----------------------------------------
20
+ // Segmented Options
21
+ // ----------------------------------------
22
+ .segmented-options {
23
+ position: relative;
24
+ display: flex;
25
+ align-items: stretch;
26
+ gap: 2px;
27
+ }
28
+
29
+ // ----------------------------------------
30
+ // Segmented Thumb (Animated Background)
31
+ // ----------------------------------------
32
+ .segmented-thumb {
33
+ position: absolute;
34
+ top: 0;
35
+ bottom: 0;
36
+ background-color: var(--bg-primary);
37
+ border-radius: calc($border-radius - 2px);
38
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06), 0 1px 3px rgba(0, 0, 0, 0.1);
39
+ transition: left 0.2s ease, width 0.2s ease;
40
+ }
41
+
42
+ // ----------------------------------------
43
+ // Segmented Option
44
+ // ----------------------------------------
45
+ .segmented-option {
46
+ position: relative;
47
+ z-index: 1;
48
+ display: flex;
49
+ align-items: center;
50
+ justify-content: center;
51
+ gap: 0.375rem;
52
+ padding: 0.375rem 0.75rem;
53
+ font-size: 0.875rem;
54
+ color: var(--text-muted);
55
+ background: transparent;
56
+ border: none;
57
+ border-radius: calc($border-radius - 2px);
58
+ cursor: pointer;
59
+ transition: color 0.15s ease;
60
+ white-space: nowrap;
61
+
62
+ &:hover {
63
+ color: var(--text-primary);
64
+ }
65
+
66
+ &.is-selected {
67
+ color: var(--text-primary);
68
+ }
69
+
70
+ &:disabled,
71
+ &.is-disabled {
72
+ color: var(--text-muted);
73
+ cursor: not-allowed;
74
+ opacity: 0.5;
75
+ }
76
+ }
77
+
78
+ .segmented-option-icon {
79
+ display: flex;
80
+ align-items: center;
81
+ font-size: 1rem;
82
+ }
83
+
84
+ .segmented-option-label {
85
+ font-weight: 500;
86
+ }
87
+
88
+ // ----------------------------------------
89
+ // Segmented Without Animation (Static)
90
+ // ----------------------------------------
91
+ .segmented-static {
92
+ .segmented-thumb {
93
+ display: none;
94
+ }
95
+
96
+ .segmented-option.is-selected {
97
+ background-color: var(--bg-primary);
98
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06), 0 1px 3px rgba(0, 0, 0, 0.1);
99
+ }
100
+ }
101
+
102
+ // ----------------------------------------
103
+ // Segmented Block (Full Width)
104
+ // ----------------------------------------
105
+ .segmented-block {
106
+ display: flex;
107
+ width: 100%;
108
+
109
+ .segmented-options {
110
+ flex: 1;
111
+ }
112
+
113
+ .segmented-option {
114
+ flex: 1;
115
+ }
116
+ }
117
+
118
+ // ----------------------------------------
119
+ // Segmented Sizes
120
+ // ----------------------------------------
121
+ .segmented-sm {
122
+ padding: 1px;
123
+
124
+ .segmented-option {
125
+ padding: 0.25rem 0.5rem;
126
+ font-size: 0.75rem;
127
+ }
128
+
129
+ .segmented-option-icon {
130
+ font-size: 0.875rem;
131
+ }
132
+ }
133
+
134
+ .segmented-lg {
135
+ padding: 3px;
136
+
137
+ .segmented-option {
138
+ padding: 0.5rem 1rem;
139
+ font-size: 1rem;
140
+ }
141
+
142
+ .segmented-option-icon {
143
+ font-size: 1.25rem;
144
+ }
145
+ }
146
+
147
+ // ----------------------------------------
148
+ // Segmented Variants
149
+ // ----------------------------------------
150
+ // Outlined
151
+ .segmented-outlined {
152
+ background-color: transparent;
153
+ border: 1px solid var(--border-color);
154
+
155
+ .segmented-thumb {
156
+ box-shadow: none;
157
+ border: 1px solid var(--primary);
158
+ }
159
+
160
+ &.segmented-static .segmented-option.is-selected {
161
+ box-shadow: none;
162
+ border: 1px solid var(--primary);
163
+ }
164
+ }
165
+
166
+ // Filled / Solid selected
167
+ .segmented-filled {
168
+ .segmented-thumb {
169
+ background-color: var(--primary);
170
+ }
171
+
172
+ .segmented-option.is-selected {
173
+ color: #fff;
174
+ }
175
+
176
+ &.segmented-static .segmented-option.is-selected {
177
+ color: #fff;
178
+ background-color: var(--primary);
179
+ }
180
+ }
181
+
182
+ // Pill shape
183
+ .segmented-pill {
184
+ border-radius: 9999px;
185
+
186
+ .segmented-thumb {
187
+ border-radius: 9999px;
188
+ }
189
+
190
+ .segmented-option {
191
+ border-radius: 9999px;
192
+ }
193
+ }
194
+
195
+ // ----------------------------------------
196
+ // Segmented Icon Only
197
+ // ----------------------------------------
198
+ .segmented-icon-only {
199
+ .segmented-option {
200
+ padding: 0.5rem;
201
+ }
202
+
203
+ .segmented-option-label {
204
+ display: none;
205
+ }
206
+
207
+ &.segmented-sm .segmented-option {
208
+ padding: 0.375rem;
209
+ }
210
+
211
+ &.segmented-lg .segmented-option {
212
+ padding: 0.625rem;
213
+ }
214
+ }
215
+
216
+ // ----------------------------------------
217
+ // Segmented Vertical
218
+ // ----------------------------------------
219
+ .segmented-vertical {
220
+ flex-direction: column;
221
+
222
+ .segmented-options {
223
+ flex-direction: column;
224
+ }
225
+
226
+ .segmented-thumb {
227
+ top: auto;
228
+ left: 0;
229
+ right: 0;
230
+ transition: top 0.2s ease, height 0.2s ease;
231
+ }
232
+ }
233
+
234
+ // ----------------------------------------
235
+ // Segmented with Badge
236
+ // ----------------------------------------
237
+ .segmented-option-badge {
238
+ display: inline-flex;
239
+ align-items: center;
240
+ justify-content: center;
241
+ min-width: 1rem;
242
+ height: 1rem;
243
+ padding: 0 0.25rem;
244
+ margin-left: 0.25rem;
245
+ font-size: 0.625rem;
246
+ font-weight: 600;
247
+ color: #fff;
248
+ background-color: var(--danger);
249
+ border-radius: 8px;
250
+ }
251
+
252
+ // ----------------------------------------
253
+ // Segmented Colors
254
+ // ----------------------------------------
255
+ .segmented-primary {
256
+ .segmented-thumb {
257
+ background-color: var(--primary);
258
+ }
259
+
260
+ .segmented-option.is-selected {
261
+ color: #fff;
262
+ }
263
+ }
264
+
265
+ .segmented-success {
266
+ .segmented-thumb {
267
+ background-color: var(--success);
268
+ }
269
+
270
+ .segmented-option.is-selected {
271
+ color: #fff;
272
+ }
273
+ }
274
+
275
+ .segmented-warning {
276
+ .segmented-thumb {
277
+ background-color: var(--warning);
278
+ }
279
+
280
+ .segmented-option.is-selected {
281
+ color: var(--text-primary);
282
+ }
283
+ }
284
+
285
+ .segmented-danger {
286
+ .segmented-thumb {
287
+ background-color: var(--danger);
288
+ }
289
+
290
+ .segmented-option.is-selected {
291
+ color: #fff;
292
+ }
293
+ }
294
+
295
+ // ----------------------------------------
296
+ // Segmented Dark Theme
297
+ // ----------------------------------------
298
+ .segmented-dark {
299
+ background-color: #1f1f1f;
300
+
301
+ .segmented-option {
302
+ color: rgba(255, 255, 255, 0.65);
303
+
304
+ &:hover {
305
+ color: rgba(255, 255, 255, 0.85);
306
+ }
307
+
308
+ &.is-selected {
309
+ color: #fff;
310
+ }
311
+ }
312
+
313
+ .segmented-thumb {
314
+ background-color: #434343;
315
+ }
316
+ }
317
+
318
+ // ----------------------------------------
319
+ // Segmented with Tooltip
320
+ // ----------------------------------------
321
+ .segmented-option[data-tooltip] {
322
+ position: relative;
323
+
324
+ &::after {
325
+ content: attr(data-tooltip);
326
+ position: absolute;
327
+ bottom: 100%;
328
+ left: 50%;
329
+ transform: translateX(-50%);
330
+ padding: 0.25rem 0.5rem;
331
+ font-size: 0.75rem;
332
+ color: #fff;
333
+ background-color: rgba(0, 0, 0, 0.75);
334
+ border-radius: $border-radius-sm;
335
+ white-space: nowrap;
336
+ opacity: 0;
337
+ visibility: hidden;
338
+ transition: opacity 0.15s ease, visibility 0.15s ease;
339
+ margin-bottom: 0.25rem;
340
+ }
341
+
342
+ &:hover::after {
343
+ opacity: 1;
344
+ visibility: visible;
345
+ }
346
+ }
347
+
348
+ // ----------------------------------------
349
+ // Segmented Loading
350
+ // ----------------------------------------
351
+ .segmented-option.is-loading {
352
+ position: relative;
353
+ color: transparent;
354
+ pointer-events: none;
355
+
356
+ &::after {
357
+ content: '';
358
+ position: absolute;
359
+ top: 50%;
360
+ left: 50%;
361
+ width: 14px;
362
+ height: 14px;
363
+ margin: -7px 0 0 -7px;
364
+ border: 2px solid var(--border-color);
365
+ border-top-color: var(--primary);
366
+ border-radius: 50%;
367
+ animation: spin 0.8s linear infinite;
368
+ }
369
+ }
370
+
371
+ @keyframes spin {
372
+ to { transform: rotate(360deg); }
373
+ }
374
+
375
+ // ----------------------------------------
376
+ // Segmented Responsive
377
+ // ----------------------------------------
378
+ @media (max-width: 575.98px) {
379
+ .segmented-responsive {
380
+ flex-direction: column;
381
+
382
+ .segmented-options {
383
+ flex-direction: column;
384
+ }
385
+
386
+ .segmented-thumb {
387
+ top: auto;
388
+ left: 0;
389
+ right: 0;
390
+ transition: top 0.2s ease, height 0.2s ease;
391
+ }
392
+ }
393
+
394
+ .segmented-responsive-scroll {
395
+ overflow-x: auto;
396
+ -webkit-overflow-scrolling: touch;
397
+
398
+ &::-webkit-scrollbar {
399
+ display: none;
400
+ }
401
+
402
+ .segmented-options {
403
+ flex-wrap: nowrap;
404
+ }
405
+ }
406
+ }
407
+
408
+ // ----------------------------------------
409
+ // Segmented Bordered
410
+ // ----------------------------------------
411
+ .segmented-bordered {
412
+ border: 1px solid var(--border-color);
413
+ background-color: var(--bg-primary);
414
+ }
415
+
416
+ // ----------------------------------------
417
+ // Segmented Ghost
418
+ // ----------------------------------------
419
+ .segmented-ghost {
420
+ background-color: transparent;
421
+ padding: 0;
422
+
423
+ .segmented-thumb {
424
+ background-color: var(--bg-secondary);
425
+ }
426
+
427
+ .segmented-option {
428
+ padding: 0.5rem 1rem;
429
+ }
430
+ }
431
+
432
+ // ----------------------------------------
433
+ // Segmented Card Style
434
+ // ----------------------------------------
435
+ .segmented-card {
436
+ background-color: var(--bg-primary);
437
+ border: 1px solid var(--border-color);
438
+ border-radius: $border-radius-lg;
439
+ box-shadow: $shadow-sm;
440
+ padding: 4px;
441
+ }