zenkit-css 1.0.7 → 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,401 @@
1
+ // ========================================
2
+ // ZenKit - Toggle Component
3
+ // ========================================
4
+
5
+ @use '../abstracts/variables' as *;
6
+
7
+ // ----------------------------------------
8
+ // Toggle Base
9
+ // ----------------------------------------
10
+ .toggle {
11
+ display: inline-flex;
12
+ align-items: center;
13
+ justify-content: center;
14
+ padding: 0.5rem 0.75rem;
15
+ font-size: var(--text-sm);
16
+ font-weight: $font-weight-medium;
17
+ color: var(--text);
18
+ background-color: transparent;
19
+ border: 1px solid var(--border);
20
+ border-radius: $border-radius;
21
+ cursor: pointer;
22
+ user-select: none;
23
+ transition: all $transition-fast $transition-timing;
24
+ -webkit-tap-highlight-color: transparent;
25
+
26
+ &:hover {
27
+ background-color: var(--gray-100);
28
+ }
29
+
30
+ &:focus {
31
+ outline: none;
32
+ box-shadow: 0 0 0 2px var(--primary-200);
33
+ }
34
+
35
+ &:active {
36
+ transform: scale(0.98);
37
+ }
38
+ }
39
+
40
+ // ----------------------------------------
41
+ // Toggle Pressed State
42
+ // ----------------------------------------
43
+ .toggle-pressed,
44
+ .toggle[aria-pressed="true"],
45
+ .toggle.active {
46
+ background-color: var(--primary);
47
+ border-color: var(--primary);
48
+ color: var(--white);
49
+
50
+ &:hover {
51
+ background-color: var(--primary-600);
52
+ border-color: var(--primary-600);
53
+ }
54
+ }
55
+
56
+ // ----------------------------------------
57
+ // Toggle Disabled
58
+ // ----------------------------------------
59
+ .toggle:disabled,
60
+ .toggle-disabled {
61
+ opacity: 0.5;
62
+ cursor: not-allowed;
63
+ pointer-events: none;
64
+ }
65
+
66
+ // ----------------------------------------
67
+ // Toggle Sizes
68
+ // ----------------------------------------
69
+ .toggle-xs {
70
+ padding: 0.25rem 0.5rem;
71
+ font-size: var(--text-xs);
72
+ }
73
+
74
+ .toggle-sm {
75
+ padding: 0.375rem 0.625rem;
76
+ font-size: var(--text-xs);
77
+ }
78
+
79
+ .toggle-md {
80
+ padding: 0.5rem 0.75rem;
81
+ font-size: var(--text-sm);
82
+ }
83
+
84
+ .toggle-lg {
85
+ padding: 0.625rem 1rem;
86
+ font-size: var(--text-base);
87
+ }
88
+
89
+ // ----------------------------------------
90
+ // Toggle with Icon
91
+ // ----------------------------------------
92
+ .toggle-icon {
93
+ padding: 0.5rem;
94
+
95
+ svg {
96
+ width: 1.25rem;
97
+ height: 1.25rem;
98
+ }
99
+ }
100
+
101
+ .toggle-icon-sm {
102
+ padding: 0.375rem;
103
+
104
+ svg {
105
+ width: 1rem;
106
+ height: 1rem;
107
+ }
108
+ }
109
+
110
+ .toggle-icon-lg {
111
+ padding: 0.625rem;
112
+
113
+ svg {
114
+ width: 1.5rem;
115
+ height: 1.5rem;
116
+ }
117
+ }
118
+
119
+ // Icon with text
120
+ .toggle-icon-text {
121
+ gap: 0.375rem;
122
+
123
+ svg {
124
+ width: 1rem;
125
+ height: 1rem;
126
+ }
127
+ }
128
+
129
+ // ----------------------------------------
130
+ // Toggle Variants
131
+ // ----------------------------------------
132
+
133
+ // Outline (default)
134
+ .toggle-outline {
135
+ background-color: transparent;
136
+
137
+ &.toggle-pressed,
138
+ &[aria-pressed="true"] {
139
+ background-color: var(--primary);
140
+ color: var(--white);
141
+ }
142
+ }
143
+
144
+ // Ghost
145
+ .toggle-ghost {
146
+ border-color: transparent;
147
+
148
+ &:hover {
149
+ background-color: var(--gray-100);
150
+ }
151
+
152
+ &.toggle-pressed,
153
+ &[aria-pressed="true"] {
154
+ background-color: var(--primary-100);
155
+ color: var(--primary);
156
+ border-color: transparent;
157
+ }
158
+ }
159
+
160
+ // Soft
161
+ .toggle-soft {
162
+ background-color: var(--gray-100);
163
+ border-color: transparent;
164
+
165
+ &.toggle-pressed,
166
+ &[aria-pressed="true"] {
167
+ background-color: var(--primary-100);
168
+ color: var(--primary);
169
+ }
170
+ }
171
+
172
+ // ----------------------------------------
173
+ // Toggle Colors
174
+ // ----------------------------------------
175
+ .toggle-primary {
176
+ &.toggle-pressed,
177
+ &[aria-pressed="true"] {
178
+ background-color: var(--primary);
179
+ border-color: var(--primary);
180
+ color: var(--white);
181
+ }
182
+ }
183
+
184
+ .toggle-secondary {
185
+ &.toggle-pressed,
186
+ &[aria-pressed="true"] {
187
+ background-color: var(--gray-600);
188
+ border-color: var(--gray-600);
189
+ color: var(--white);
190
+ }
191
+ }
192
+
193
+ .toggle-success {
194
+ &.toggle-pressed,
195
+ &[aria-pressed="true"] {
196
+ background-color: var(--success);
197
+ border-color: var(--success);
198
+ color: var(--white);
199
+ }
200
+ }
201
+
202
+ .toggle-danger {
203
+ &.toggle-pressed,
204
+ &[aria-pressed="true"] {
205
+ background-color: var(--danger);
206
+ border-color: var(--danger);
207
+ color: var(--white);
208
+ }
209
+ }
210
+
211
+ .toggle-warning {
212
+ &.toggle-pressed,
213
+ &[aria-pressed="true"] {
214
+ background-color: var(--warning);
215
+ border-color: var(--warning);
216
+ color: var(--gray-900);
217
+ }
218
+ }
219
+
220
+ // ----------------------------------------
221
+ // Toggle Group
222
+ // ----------------------------------------
223
+ .toggle-group {
224
+ display: inline-flex;
225
+ border-radius: $border-radius;
226
+ }
227
+
228
+ .toggle-group .toggle {
229
+ border-radius: 0;
230
+
231
+ &:first-child {
232
+ border-top-left-radius: $border-radius;
233
+ border-bottom-left-radius: $border-radius;
234
+ }
235
+
236
+ &:last-child {
237
+ border-top-right-radius: $border-radius;
238
+ border-bottom-right-radius: $border-radius;
239
+ }
240
+
241
+ &:not(:first-child) {
242
+ margin-left: -1px;
243
+ }
244
+
245
+ &:hover,
246
+ &:focus,
247
+ &.toggle-pressed {
248
+ z-index: 1;
249
+ }
250
+ }
251
+
252
+ // ----------------------------------------
253
+ // Toggle Group Vertical
254
+ // ----------------------------------------
255
+ .toggle-group-vertical {
256
+ flex-direction: column;
257
+
258
+ .toggle {
259
+ &:first-child {
260
+ border-top-left-radius: $border-radius;
261
+ border-top-right-radius: $border-radius;
262
+ border-bottom-left-radius: 0;
263
+ }
264
+
265
+ &:last-child {
266
+ border-bottom-left-radius: $border-radius;
267
+ border-bottom-right-radius: $border-radius;
268
+ border-top-right-radius: 0;
269
+ }
270
+
271
+ &:not(:first-child) {
272
+ margin-left: 0;
273
+ margin-top: -1px;
274
+ }
275
+ }
276
+ }
277
+
278
+ // ----------------------------------------
279
+ // Toggle Group Spaced
280
+ // ----------------------------------------
281
+ .toggle-group-spaced {
282
+ gap: 0.375rem;
283
+
284
+ .toggle {
285
+ border-radius: $border-radius;
286
+ margin: 0;
287
+ }
288
+ }
289
+
290
+ // ----------------------------------------
291
+ // Toggle Group Single Select
292
+ // ----------------------------------------
293
+ .toggle-group-single {
294
+ .toggle.toggle-pressed:not(:hover):not(:focus) {
295
+ z-index: 1;
296
+ }
297
+ }
298
+
299
+ // ----------------------------------------
300
+ // Toggle Group Multiple Select
301
+ // ----------------------------------------
302
+ .toggle-group-multiple {
303
+ .toggle.toggle-pressed {
304
+ z-index: 1;
305
+ }
306
+ }
307
+
308
+ // ----------------------------------------
309
+ // Toggle Group Full Width
310
+ // ----------------------------------------
311
+ .toggle-group-full {
312
+ width: 100%;
313
+ display: flex;
314
+
315
+ .toggle {
316
+ flex: 1;
317
+ justify-content: center;
318
+ }
319
+ }
320
+
321
+ // ----------------------------------------
322
+ // Toggle Group Sizes
323
+ // ----------------------------------------
324
+ .toggle-group-sm .toggle {
325
+ padding: 0.375rem 0.625rem;
326
+ font-size: var(--text-xs);
327
+ }
328
+
329
+ .toggle-group-lg .toggle {
330
+ padding: 0.625rem 1rem;
331
+ font-size: var(--text-base);
332
+ }
333
+
334
+ // ----------------------------------------
335
+ // Toggle Group Variants
336
+ // ----------------------------------------
337
+ .toggle-group-outline {
338
+ .toggle {
339
+ background-color: transparent;
340
+ }
341
+ }
342
+
343
+ .toggle-group-soft {
344
+ padding: 0.25rem;
345
+ background-color: var(--gray-100);
346
+ border: none;
347
+ border-radius: $border-radius-lg;
348
+
349
+ .toggle {
350
+ border: none;
351
+ background-color: transparent;
352
+
353
+ &.toggle-pressed {
354
+ background-color: var(--bg);
355
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
356
+ }
357
+ }
358
+ }
359
+
360
+ // ----------------------------------------
361
+ // Dark Mode
362
+ // ----------------------------------------
363
+ [data-theme="dark"] {
364
+ .toggle {
365
+ border-color: var(--gray-600);
366
+ color: var(--gray-300);
367
+
368
+ &:hover {
369
+ background-color: var(--gray-800);
370
+ }
371
+ }
372
+
373
+ .toggle-ghost:hover {
374
+ background-color: var(--gray-800);
375
+ }
376
+
377
+ .toggle-ghost.toggle-pressed,
378
+ .toggle-ghost[aria-pressed="true"] {
379
+ background-color: rgba($primary, 0.2);
380
+ color: var(--primary-300);
381
+ }
382
+
383
+ .toggle-soft {
384
+ background-color: var(--gray-800);
385
+
386
+ &.toggle-pressed,
387
+ &[aria-pressed="true"] {
388
+ background-color: rgba($primary, 0.2);
389
+ color: var(--primary-300);
390
+ }
391
+ }
392
+
393
+ .toggle-group-soft {
394
+ background-color: var(--gray-800);
395
+
396
+ .toggle.toggle-pressed {
397
+ background-color: var(--gray-700);
398
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
399
+ }
400
+ }
401
+ }
package/scss/zenkit.scss CHANGED
@@ -91,6 +91,26 @@
91
91
  @use 'components/kbd';
92
92
  @use 'components/aspectratio';
93
93
  @use 'components/inputotp';
94
+ @use 'components/table';
95
+ @use 'components/sidebar';
96
+ @use 'components/skeleton';
97
+ @use 'components/resizable';
98
+ @use 'components/qrcode';
99
+ @use 'components/masonry';
100
+ @use 'components/splitter';
101
+ @use 'components/commandpalette';
102
+ @use 'components/speeddial';
103
+ @use 'components/bottomnav';
104
+ @use 'components/icon';
105
+ @use 'components/iconbutton';
106
+ @use 'components/chip';
107
+ @use 'components/alertdialog';
108
+ @use 'components/buttongroup';
109
+ @use 'components/passwordinput';
110
+ @use 'components/code';
111
+ @use 'components/toggle';
112
+ @use 'components/hovercard';
113
+ @use 'components/circularprogress';
94
114
 
95
115
  // ----------------------------------------
96
116
  // 6. Components - JavaScript Enhanced