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,225 @@
1
+ // ========================================
2
+ // ZenKit - Progress
3
+ // ========================================
4
+
5
+ @use '../abstracts/variables' as *;
6
+
7
+ // ----------------------------------------
8
+ // Progress Container
9
+ // ----------------------------------------
10
+ .progress {
11
+ --progress-height: 1rem;
12
+ --progress-font-size: 0.75rem;
13
+ --progress-bg: var(--gray-200);
14
+ --progress-border-radius: var(--radius-full);
15
+ --progress-bar-color: var(--white);
16
+ --progress-bar-bg: var(--primary);
17
+ --progress-bar-transition: width 0.6s ease;
18
+
19
+ display: flex;
20
+ height: var(--progress-height);
21
+ overflow: hidden;
22
+ font-size: var(--progress-font-size);
23
+ background-color: var(--progress-bg);
24
+ border-radius: var(--progress-border-radius);
25
+ }
26
+
27
+ // ----------------------------------------
28
+ // Progress Bar
29
+ // ----------------------------------------
30
+ .progress-bar {
31
+ display: flex;
32
+ flex-direction: column;
33
+ justify-content: center;
34
+ overflow: hidden;
35
+ color: var(--progress-bar-color);
36
+ text-align: center;
37
+ white-space: nowrap;
38
+ background-color: var(--progress-bar-bg);
39
+ transition: var(--progress-bar-transition);
40
+ }
41
+
42
+ // ----------------------------------------
43
+ // Striped Progress Bar
44
+ // ----------------------------------------
45
+ .progress-bar-striped {
46
+ background-image: linear-gradient(
47
+ 45deg,
48
+ rgba(255, 255, 255, 0.15) 25%,
49
+ transparent 25%,
50
+ transparent 50%,
51
+ rgba(255, 255, 255, 0.15) 50%,
52
+ rgba(255, 255, 255, 0.15) 75%,
53
+ transparent 75%,
54
+ transparent
55
+ );
56
+ background-size: var(--progress-height) var(--progress-height);
57
+ }
58
+
59
+ // ----------------------------------------
60
+ // Animated Progress Bar
61
+ // ----------------------------------------
62
+ .progress-bar-animated {
63
+ animation: progress-bar-stripes 1s linear infinite;
64
+ }
65
+
66
+ @keyframes progress-bar-stripes {
67
+ 0% {
68
+ background-position-x: var(--progress-height);
69
+ }
70
+ }
71
+
72
+ // ----------------------------------------
73
+ // Progress Bar Colors
74
+ // ----------------------------------------
75
+ .progress-bar-primary {
76
+ --progress-bar-bg: var(--primary);
77
+ }
78
+
79
+ .progress-bar-secondary {
80
+ --progress-bar-bg: var(--gray-600);
81
+ }
82
+
83
+ .progress-bar-success {
84
+ --progress-bar-bg: var(--success);
85
+ }
86
+
87
+ .progress-bar-danger {
88
+ --progress-bar-bg: var(--danger);
89
+ }
90
+
91
+ .progress-bar-warning {
92
+ --progress-bar-bg: var(--warning);
93
+ --progress-bar-color: var(--gray-900);
94
+ }
95
+
96
+ .progress-bar-info {
97
+ --progress-bar-bg: var(--info);
98
+ }
99
+
100
+ .progress-bar-dark {
101
+ --progress-bar-bg: var(--gray-800);
102
+ }
103
+
104
+ // ----------------------------------------
105
+ // Progress Sizes
106
+ // ----------------------------------------
107
+ .progress-sm {
108
+ --progress-height: 0.5rem;
109
+ --progress-font-size: 0.625rem;
110
+ }
111
+
112
+ .progress-lg {
113
+ --progress-height: 1.5rem;
114
+ --progress-font-size: 0.875rem;
115
+ }
116
+
117
+ .progress-xl {
118
+ --progress-height: 2rem;
119
+ --progress-font-size: 1rem;
120
+ }
121
+
122
+ // ----------------------------------------
123
+ // Stacked Progress Bars
124
+ // ----------------------------------------
125
+ .progress-stacked {
126
+ display: flex;
127
+ height: var(--progress-height);
128
+ overflow: hidden;
129
+ background-color: var(--progress-bg);
130
+ border-radius: var(--progress-border-radius);
131
+
132
+ > .progress {
133
+ overflow: visible;
134
+ background-color: transparent;
135
+ border-radius: 0;
136
+ }
137
+ }
138
+
139
+ // ----------------------------------------
140
+ // Progress with Label
141
+ // ----------------------------------------
142
+ .progress-label {
143
+ display: flex;
144
+ flex-direction: column;
145
+ gap: 0.25rem;
146
+
147
+ .progress-text {
148
+ display: flex;
149
+ justify-content: space-between;
150
+ font-size: var(--text-sm);
151
+ color: var(--text-muted);
152
+ }
153
+ }
154
+
155
+ // ----------------------------------------
156
+ // Indeterminate Progress
157
+ // ----------------------------------------
158
+ .progress-indeterminate {
159
+ .progress-bar {
160
+ width: 100%;
161
+ animation: progress-indeterminate 1.5s ease-in-out infinite;
162
+ transform-origin: left;
163
+ }
164
+ }
165
+
166
+ @keyframes progress-indeterminate {
167
+ 0% {
168
+ transform: scaleX(0);
169
+ transform-origin: left;
170
+ }
171
+ 50% {
172
+ transform: scaleX(1);
173
+ transform-origin: left;
174
+ }
175
+ 50.1% {
176
+ transform-origin: right;
177
+ }
178
+ 100% {
179
+ transform: scaleX(0);
180
+ transform-origin: right;
181
+ }
182
+ }
183
+
184
+ // ----------------------------------------
185
+ // Circular Progress (Simple)
186
+ // ----------------------------------------
187
+ .progress-circle {
188
+ --progress-circle-size: 4rem;
189
+ --progress-circle-stroke: 4px;
190
+ --progress-circle-bg: var(--gray-200);
191
+ --progress-circle-color: var(--primary);
192
+
193
+ position: relative;
194
+ width: var(--progress-circle-size);
195
+ height: var(--progress-circle-size);
196
+
197
+ svg {
198
+ transform: rotate(-90deg);
199
+ }
200
+
201
+ circle {
202
+ fill: none;
203
+ stroke-width: var(--progress-circle-stroke);
204
+ stroke-linecap: round;
205
+ }
206
+
207
+ .progress-circle-bg {
208
+ stroke: var(--progress-circle-bg);
209
+ }
210
+
211
+ .progress-circle-bar {
212
+ stroke: var(--progress-circle-color);
213
+ transition: stroke-dashoffset 0.6s ease;
214
+ }
215
+
216
+ .progress-circle-text {
217
+ position: absolute;
218
+ top: 50%;
219
+ left: 50%;
220
+ transform: translate(-50%, -50%);
221
+ font-size: var(--text-sm);
222
+ font-weight: $font-weight-semibold;
223
+ color: var(--text);
224
+ }
225
+ }
@@ -0,0 +1,314 @@
1
+ // ========================================
2
+ // ZenKit - Rating / Stars
3
+ // ========================================
4
+
5
+ @use '../abstracts/variables' as *;
6
+
7
+ // ----------------------------------------
8
+ // Base Rating Container
9
+ // ----------------------------------------
10
+ .rating {
11
+ --rating-size: 1.5rem;
12
+ --rating-gap: 0.25rem;
13
+ --rating-color: var(--gray-300);
14
+ --rating-active-color: #FBBF24; // Amber/Gold
15
+ --rating-hover-color: #F59E0B;
16
+
17
+ display: inline-flex;
18
+ align-items: center;
19
+ gap: var(--rating-gap);
20
+ }
21
+
22
+ // ----------------------------------------
23
+ // Rating Item (Star)
24
+ // ----------------------------------------
25
+ .rating-item {
26
+ display: inline-flex;
27
+ align-items: center;
28
+ justify-content: center;
29
+ width: var(--rating-size);
30
+ height: var(--rating-size);
31
+ color: var(--rating-color);
32
+ cursor: pointer;
33
+ transition: color var(--transition-fast) ease-in-out,
34
+ transform var(--transition-fast) ease-in-out;
35
+
36
+ svg {
37
+ width: 100%;
38
+ height: 100%;
39
+ fill: currentColor;
40
+ }
41
+
42
+ &:hover {
43
+ transform: scale(1.1);
44
+ }
45
+ }
46
+
47
+ // Active/Filled State
48
+ .rating-item-active,
49
+ .rating-item-filled {
50
+ color: var(--rating-active-color);
51
+ }
52
+
53
+ // Half-filled (for half-star ratings)
54
+ .rating-item-half {
55
+ position: relative;
56
+
57
+ &::before {
58
+ content: "";
59
+ position: absolute;
60
+ left: 0;
61
+ top: 0;
62
+ width: 50%;
63
+ height: 100%;
64
+ overflow: hidden;
65
+ }
66
+
67
+ svg:first-child {
68
+ color: var(--rating-active-color);
69
+ clip-path: inset(0 50% 0 0);
70
+ }
71
+
72
+ svg:last-child {
73
+ position: absolute;
74
+ color: var(--rating-color);
75
+ clip-path: inset(0 0 0 50%);
76
+ }
77
+ }
78
+
79
+ // ----------------------------------------
80
+ // Rating Sizes
81
+ // ----------------------------------------
82
+ .rating-xs {
83
+ --rating-size: 0.875rem;
84
+ --rating-gap: 0.125rem;
85
+ }
86
+
87
+ .rating-sm {
88
+ --rating-size: 1.125rem;
89
+ --rating-gap: 0.125rem;
90
+ }
91
+
92
+ .rating-md {
93
+ --rating-size: 1.5rem;
94
+ --rating-gap: 0.25rem;
95
+ }
96
+
97
+ .rating-lg {
98
+ --rating-size: 2rem;
99
+ --rating-gap: 0.375rem;
100
+ }
101
+
102
+ .rating-xl {
103
+ --rating-size: 2.5rem;
104
+ --rating-gap: 0.5rem;
105
+ }
106
+
107
+ // ----------------------------------------
108
+ // Interactive Rating (Hover Effect)
109
+ // ----------------------------------------
110
+ .rating-interactive {
111
+ // On hover, fill all items up to and including hovered item
112
+ .rating-item:hover,
113
+ .rating-item:hover ~ .rating-item-reverse,
114
+ &:hover .rating-item:not(:hover):not(.rating-item ~ .rating-item) {
115
+ color: var(--rating-hover-color);
116
+ }
117
+ }
118
+
119
+ // For right-to-left hover fill effect
120
+ .rating-interactive:not(:hover) .rating-item-active {
121
+ color: var(--rating-active-color);
122
+ }
123
+
124
+ // ----------------------------------------
125
+ // Rating with Input (For Forms)
126
+ // ----------------------------------------
127
+ .rating-input {
128
+ display: inline-flex;
129
+ flex-direction: row-reverse;
130
+ gap: var(--rating-gap);
131
+
132
+ input {
133
+ display: none;
134
+ }
135
+
136
+ label {
137
+ display: inline-flex;
138
+ width: var(--rating-size);
139
+ height: var(--rating-size);
140
+ color: var(--rating-color);
141
+ cursor: pointer;
142
+ transition: color var(--transition-fast) ease-in-out;
143
+
144
+ svg {
145
+ width: 100%;
146
+ height: 100%;
147
+ fill: currentColor;
148
+ }
149
+
150
+ &:hover,
151
+ &:hover ~ label {
152
+ color: var(--rating-hover-color);
153
+ }
154
+ }
155
+
156
+ input:checked ~ label {
157
+ color: var(--rating-active-color);
158
+ }
159
+ }
160
+
161
+ // ----------------------------------------
162
+ // Rating Read-only
163
+ // ----------------------------------------
164
+ .rating-readonly {
165
+ .rating-item {
166
+ cursor: default;
167
+ pointer-events: none;
168
+
169
+ &:hover {
170
+ transform: none;
171
+ }
172
+ }
173
+ }
174
+
175
+ // ----------------------------------------
176
+ // Rating Color Variants
177
+ // ----------------------------------------
178
+ .rating-primary {
179
+ --rating-active-color: var(--primary);
180
+ --rating-hover-color: var(--primary-600);
181
+ }
182
+
183
+ .rating-success {
184
+ --rating-active-color: var(--success);
185
+ --rating-hover-color: #{$success-dark};
186
+ }
187
+
188
+ .rating-danger {
189
+ --rating-active-color: var(--danger);
190
+ --rating-hover-color: #{$danger-dark};
191
+ }
192
+
193
+ .rating-info {
194
+ --rating-active-color: var(--info);
195
+ --rating-hover-color: #{$info-dark};
196
+ }
197
+
198
+ // ----------------------------------------
199
+ // Rating with Count
200
+ // ----------------------------------------
201
+ .rating-with-count {
202
+ display: inline-flex;
203
+ align-items: center;
204
+ gap: 0.5rem;
205
+ }
206
+
207
+ .rating-count {
208
+ font-size: var(--text-sm);
209
+ color: var(--text-muted);
210
+ }
211
+
212
+ .rating-average {
213
+ font-size: var(--text-base);
214
+ font-weight: $font-weight-semibold;
215
+ color: var(--text);
216
+ }
217
+
218
+ // ----------------------------------------
219
+ // Rating Display (Show Value)
220
+ // ----------------------------------------
221
+ .rating-display {
222
+ display: inline-flex;
223
+ align-items: center;
224
+ gap: 0.5rem;
225
+ padding: 0.25rem 0.75rem;
226
+ background-color: var(--gray-100);
227
+ border-radius: var(--radius);
228
+ font-size: var(--text-sm);
229
+ font-weight: $font-weight-medium;
230
+
231
+ svg {
232
+ width: 1rem;
233
+ height: 1rem;
234
+ color: var(--rating-active-color);
235
+ fill: currentColor;
236
+ }
237
+ }
238
+
239
+ // ----------------------------------------
240
+ // Rating Bar (Progress Style)
241
+ // ----------------------------------------
242
+ .rating-bars {
243
+ display: flex;
244
+ flex-direction: column;
245
+ gap: 0.5rem;
246
+ width: 100%;
247
+ }
248
+
249
+ .rating-bar {
250
+ display: flex;
251
+ align-items: center;
252
+ gap: 0.75rem;
253
+ font-size: var(--text-sm);
254
+ }
255
+
256
+ .rating-bar-label {
257
+ flex-shrink: 0;
258
+ width: 3rem;
259
+ display: flex;
260
+ align-items: center;
261
+ gap: 0.25rem;
262
+ color: var(--text-muted);
263
+
264
+ svg {
265
+ width: 0.875rem;
266
+ height: 0.875rem;
267
+ color: var(--rating-active-color);
268
+ fill: currentColor;
269
+ }
270
+ }
271
+
272
+ .rating-bar-track {
273
+ flex: 1;
274
+ height: 0.5rem;
275
+ background-color: var(--gray-200);
276
+ border-radius: var(--radius-full);
277
+ overflow: hidden;
278
+ }
279
+
280
+ .rating-bar-fill {
281
+ height: 100%;
282
+ background-color: var(--rating-active-color);
283
+ border-radius: var(--radius-full);
284
+ transition: width var(--transition-slow) ease-in-out;
285
+ }
286
+
287
+ .rating-bar-count {
288
+ flex-shrink: 0;
289
+ width: 2.5rem;
290
+ text-align: right;
291
+ color: var(--text-muted);
292
+ }
293
+
294
+ // ----------------------------------------
295
+ // Emoji Rating
296
+ // ----------------------------------------
297
+ .rating-emoji {
298
+ --rating-size: 2rem;
299
+
300
+ .rating-item {
301
+ font-size: var(--rating-size);
302
+ opacity: 0.4;
303
+ filter: grayscale(100%);
304
+ transition: opacity var(--transition-fast) ease-in-out,
305
+ filter var(--transition-fast) ease-in-out,
306
+ transform var(--transition-fast) ease-in-out;
307
+
308
+ &:hover,
309
+ &.rating-item-active {
310
+ opacity: 1;
311
+ filter: grayscale(0%);
312
+ }
313
+ }
314
+ }