zenkit-css 1.0.8 → 1.2.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.
@@ -0,0 +1,355 @@
1
+ // ========================================
2
+ // ZenKit - Circular Progress Component
3
+ // ========================================
4
+
5
+ @use '../abstracts/variables' as *;
6
+
7
+ // ----------------------------------------
8
+ // Circular Progress Container
9
+ // ----------------------------------------
10
+ .circular-progress {
11
+ position: relative;
12
+ display: inline-flex;
13
+ align-items: center;
14
+ justify-content: center;
15
+ width: 3rem;
16
+ height: 3rem;
17
+ }
18
+
19
+ // ----------------------------------------
20
+ // Circular Progress SVG
21
+ // ----------------------------------------
22
+ .circular-progress-svg {
23
+ width: 100%;
24
+ height: 100%;
25
+ transform: rotate(-90deg);
26
+ }
27
+
28
+ .circular-progress-track {
29
+ fill: none;
30
+ stroke: var(--gray-200);
31
+ stroke-width: 4;
32
+ }
33
+
34
+ .circular-progress-indicator {
35
+ fill: none;
36
+ stroke: var(--primary);
37
+ stroke-width: 4;
38
+ stroke-linecap: round;
39
+ transition: stroke-dashoffset 0.3s ease;
40
+ }
41
+
42
+ // ----------------------------------------
43
+ // Circular Progress Sizes
44
+ // ----------------------------------------
45
+ .circular-progress-xs {
46
+ width: 1.5rem;
47
+ height: 1.5rem;
48
+
49
+ .circular-progress-track,
50
+ .circular-progress-indicator {
51
+ stroke-width: 3;
52
+ }
53
+ }
54
+
55
+ .circular-progress-sm {
56
+ width: 2rem;
57
+ height: 2rem;
58
+
59
+ .circular-progress-track,
60
+ .circular-progress-indicator {
61
+ stroke-width: 3;
62
+ }
63
+ }
64
+
65
+ .circular-progress-md {
66
+ width: 3rem;
67
+ height: 3rem;
68
+ }
69
+
70
+ .circular-progress-lg {
71
+ width: 4rem;
72
+ height: 4rem;
73
+
74
+ .circular-progress-track,
75
+ .circular-progress-indicator {
76
+ stroke-width: 5;
77
+ }
78
+ }
79
+
80
+ .circular-progress-xl {
81
+ width: 5rem;
82
+ height: 5rem;
83
+
84
+ .circular-progress-track,
85
+ .circular-progress-indicator {
86
+ stroke-width: 6;
87
+ }
88
+ }
89
+
90
+ .circular-progress-2xl {
91
+ width: 6rem;
92
+ height: 6rem;
93
+
94
+ .circular-progress-track,
95
+ .circular-progress-indicator {
96
+ stroke-width: 6;
97
+ }
98
+ }
99
+
100
+ // ----------------------------------------
101
+ // Circular Progress Label
102
+ // ----------------------------------------
103
+ .circular-progress-label {
104
+ position: absolute;
105
+ top: 50%;
106
+ left: 50%;
107
+ transform: translate(-50%, -50%);
108
+ font-size: var(--text-xs);
109
+ font-weight: $font-weight-semibold;
110
+ color: var(--text);
111
+ }
112
+
113
+ .circular-progress-lg .circular-progress-label {
114
+ font-size: var(--text-sm);
115
+ }
116
+
117
+ .circular-progress-xl .circular-progress-label,
118
+ .circular-progress-2xl .circular-progress-label {
119
+ font-size: var(--text-base);
120
+ }
121
+
122
+ // ----------------------------------------
123
+ // Circular Progress Colors
124
+ // ----------------------------------------
125
+ .circular-progress-primary .circular-progress-indicator {
126
+ stroke: var(--primary);
127
+ }
128
+
129
+ .circular-progress-secondary .circular-progress-indicator {
130
+ stroke: var(--gray-600);
131
+ }
132
+
133
+ .circular-progress-success .circular-progress-indicator {
134
+ stroke: var(--success);
135
+ }
136
+
137
+ .circular-progress-danger .circular-progress-indicator {
138
+ stroke: var(--danger);
139
+ }
140
+
141
+ .circular-progress-warning .circular-progress-indicator {
142
+ stroke: var(--warning);
143
+ }
144
+
145
+ .circular-progress-info .circular-progress-indicator {
146
+ stroke: var(--info);
147
+ }
148
+
149
+ // ----------------------------------------
150
+ // Circular Progress Gradient
151
+ // ----------------------------------------
152
+ .circular-progress-gradient .circular-progress-indicator {
153
+ stroke: url(#circular-progress-gradient);
154
+ }
155
+
156
+ // ----------------------------------------
157
+ // Circular Progress Variants
158
+ // ----------------------------------------
159
+
160
+ // Thick stroke
161
+ .circular-progress-thick {
162
+ .circular-progress-track,
163
+ .circular-progress-indicator {
164
+ stroke-width: 8;
165
+ }
166
+ }
167
+
168
+ // Thin stroke
169
+ .circular-progress-thin {
170
+ .circular-progress-track,
171
+ .circular-progress-indicator {
172
+ stroke-width: 2;
173
+ }
174
+ }
175
+
176
+ // No track
177
+ .circular-progress-no-track .circular-progress-track {
178
+ stroke: transparent;
179
+ }
180
+
181
+ // Square linecap
182
+ .circular-progress-square .circular-progress-indicator {
183
+ stroke-linecap: butt;
184
+ }
185
+
186
+ // ----------------------------------------
187
+ // Indeterminate Progress
188
+ // ----------------------------------------
189
+ .circular-progress-indeterminate {
190
+ animation: circular-progress-rotate 2s linear infinite;
191
+
192
+ .circular-progress-indicator {
193
+ animation: circular-progress-dash 1.5s ease-in-out infinite;
194
+ }
195
+ }
196
+
197
+ @keyframes circular-progress-rotate {
198
+ 100% {
199
+ transform: rotate(270deg);
200
+ }
201
+ }
202
+
203
+ @keyframes circular-progress-dash {
204
+ 0% {
205
+ stroke-dasharray: 1, 150;
206
+ stroke-dashoffset: 0;
207
+ }
208
+ 50% {
209
+ stroke-dasharray: 90, 150;
210
+ stroke-dashoffset: -35;
211
+ }
212
+ 100% {
213
+ stroke-dasharray: 90, 150;
214
+ stroke-dashoffset: -124;
215
+ }
216
+ }
217
+
218
+ // ----------------------------------------
219
+ // Circular Progress with Icon
220
+ // ----------------------------------------
221
+ .circular-progress-icon {
222
+ position: absolute;
223
+ top: 50%;
224
+ left: 50%;
225
+ transform: translate(-50%, -50%);
226
+ display: flex;
227
+ align-items: center;
228
+ justify-content: center;
229
+
230
+ svg {
231
+ width: 1rem;
232
+ height: 1rem;
233
+ }
234
+ }
235
+
236
+ .circular-progress-lg .circular-progress-icon svg {
237
+ width: 1.25rem;
238
+ height: 1.25rem;
239
+ }
240
+
241
+ .circular-progress-xl .circular-progress-icon svg,
242
+ .circular-progress-2xl .circular-progress-icon svg {
243
+ width: 1.5rem;
244
+ height: 1.5rem;
245
+ }
246
+
247
+ // ----------------------------------------
248
+ // Circular Progress Wrapper
249
+ // ----------------------------------------
250
+ .circular-progress-wrapper {
251
+ display: inline-flex;
252
+ flex-direction: column;
253
+ align-items: center;
254
+ gap: 0.5rem;
255
+ }
256
+
257
+ .circular-progress-text {
258
+ font-size: var(--text-sm);
259
+ color: var(--text-muted);
260
+ }
261
+
262
+ // ----------------------------------------
263
+ // Circular Progress in Card
264
+ // ----------------------------------------
265
+ .circular-progress-card {
266
+ display: flex;
267
+ flex-direction: column;
268
+ align-items: center;
269
+ padding: 1.5rem;
270
+ background-color: var(--bg);
271
+ border: 1px solid var(--border);
272
+ border-radius: $border-radius-lg;
273
+ text-align: center;
274
+ }
275
+
276
+ .circular-progress-card-title {
277
+ margin-top: 0.75rem;
278
+ font-size: var(--text-sm);
279
+ font-weight: $font-weight-medium;
280
+ color: var(--text);
281
+ }
282
+
283
+ .circular-progress-card-description {
284
+ font-size: var(--text-xs);
285
+ color: var(--text-muted);
286
+ }
287
+
288
+ // ----------------------------------------
289
+ // Circular Progress Semi Circle
290
+ // ----------------------------------------
291
+ .circular-progress-semi {
292
+ .circular-progress-svg {
293
+ transform: rotate(-180deg);
294
+ }
295
+
296
+ .circular-progress-track,
297
+ .circular-progress-indicator {
298
+ stroke-dasharray: 157, 314; // Half circle
299
+ }
300
+
301
+ .circular-progress-label {
302
+ top: 70%;
303
+ }
304
+ }
305
+
306
+ // ----------------------------------------
307
+ // Multiple Progress Rings
308
+ // ----------------------------------------
309
+ .circular-progress-rings {
310
+ position: relative;
311
+ }
312
+
313
+ .circular-progress-ring {
314
+ position: absolute;
315
+ top: 50%;
316
+ left: 50%;
317
+ transform: translate(-50%, -50%);
318
+ }
319
+
320
+ // ----------------------------------------
321
+ // Circular Progress States
322
+ // ----------------------------------------
323
+ .circular-progress-complete {
324
+ .circular-progress-indicator {
325
+ stroke: var(--success);
326
+ }
327
+
328
+ .circular-progress-icon {
329
+ color: var(--success);
330
+ }
331
+ }
332
+
333
+ .circular-progress-error {
334
+ .circular-progress-indicator {
335
+ stroke: var(--danger);
336
+ }
337
+
338
+ .circular-progress-icon {
339
+ color: var(--danger);
340
+ }
341
+ }
342
+
343
+ // ----------------------------------------
344
+ // Dark Mode
345
+ // ----------------------------------------
346
+ [data-theme="dark"] {
347
+ .circular-progress-track {
348
+ stroke: var(--gray-700);
349
+ }
350
+
351
+ .circular-progress-card {
352
+ background-color: var(--gray-900);
353
+ border-color: var(--gray-700);
354
+ }
355
+ }