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,454 @@
1
+ // ========================================
2
+ // ZenKit - Chip Component
3
+ // ========================================
4
+
5
+ @use '../abstracts/variables' as *;
6
+
7
+ // ----------------------------------------
8
+ // Chip Base
9
+ // ----------------------------------------
10
+ .chip {
11
+ display: inline-flex;
12
+ align-items: center;
13
+ gap: 0.375rem;
14
+ padding: 0.25rem 0.75rem;
15
+ font-size: var(--text-sm);
16
+ font-weight: $font-weight-medium;
17
+ line-height: 1.5;
18
+ color: var(--text);
19
+ background-color: var(--gray-100);
20
+ border: 1px solid transparent;
21
+ border-radius: $border-radius-full;
22
+ transition: all $transition-fast $transition-timing;
23
+ white-space: nowrap;
24
+ max-width: 100%;
25
+ }
26
+
27
+ // ----------------------------------------
28
+ // Chip Sizes
29
+ // ----------------------------------------
30
+ .chip-xs {
31
+ padding: 0.125rem 0.5rem;
32
+ font-size: var(--text-xs);
33
+ gap: 0.25rem;
34
+ }
35
+
36
+ .chip-sm {
37
+ padding: 0.1875rem 0.625rem;
38
+ font-size: var(--text-xs);
39
+ }
40
+
41
+ .chip-md {
42
+ padding: 0.25rem 0.75rem;
43
+ font-size: var(--text-sm);
44
+ }
45
+
46
+ .chip-lg {
47
+ padding: 0.375rem 1rem;
48
+ font-size: var(--text-base);
49
+ }
50
+
51
+ // ----------------------------------------
52
+ // Chip Colors
53
+ // ----------------------------------------
54
+ .chip-primary {
55
+ background-color: var(--primary-100);
56
+ color: var(--primary-700);
57
+ }
58
+
59
+ .chip-secondary {
60
+ background-color: var(--gray-200);
61
+ color: var(--gray-700);
62
+ }
63
+
64
+ .chip-success {
65
+ background-color: var(--success-100);
66
+ color: var(--success-700);
67
+ }
68
+
69
+ .chip-danger {
70
+ background-color: var(--danger-100);
71
+ color: var(--danger-700);
72
+ }
73
+
74
+ .chip-warning {
75
+ background-color: var(--warning-100);
76
+ color: var(--warning-700);
77
+ }
78
+
79
+ .chip-info {
80
+ background-color: var(--info-100);
81
+ color: var(--info-700);
82
+ }
83
+
84
+ // ----------------------------------------
85
+ // Chip Variants
86
+ // ----------------------------------------
87
+
88
+ // Filled
89
+ .chip-filled {
90
+ &.chip-primary {
91
+ background-color: var(--primary);
92
+ color: var(--white);
93
+ }
94
+
95
+ &.chip-secondary {
96
+ background-color: var(--gray-600);
97
+ color: var(--white);
98
+ }
99
+
100
+ &.chip-success {
101
+ background-color: var(--success);
102
+ color: var(--white);
103
+ }
104
+
105
+ &.chip-danger {
106
+ background-color: var(--danger);
107
+ color: var(--white);
108
+ }
109
+
110
+ &.chip-warning {
111
+ background-color: var(--warning);
112
+ color: var(--gray-900);
113
+ }
114
+
115
+ &.chip-info {
116
+ background-color: var(--info);
117
+ color: var(--white);
118
+ }
119
+ }
120
+
121
+ // Outlined
122
+ .chip-outlined {
123
+ background-color: transparent;
124
+ border-color: var(--border);
125
+
126
+ &.chip-primary {
127
+ border-color: var(--primary);
128
+ color: var(--primary);
129
+ }
130
+
131
+ &.chip-secondary {
132
+ border-color: var(--gray-400);
133
+ color: var(--gray-600);
134
+ }
135
+
136
+ &.chip-success {
137
+ border-color: var(--success);
138
+ color: var(--success);
139
+ }
140
+
141
+ &.chip-danger {
142
+ border-color: var(--danger);
143
+ color: var(--danger);
144
+ }
145
+
146
+ &.chip-warning {
147
+ border-color: var(--warning);
148
+ color: var(--warning-700);
149
+ }
150
+
151
+ &.chip-info {
152
+ border-color: var(--info);
153
+ color: var(--info);
154
+ }
155
+ }
156
+
157
+ // ----------------------------------------
158
+ // Chip with Avatar
159
+ // ----------------------------------------
160
+ .chip-avatar {
161
+ padding-left: 0.25rem;
162
+ }
163
+
164
+ .chip-avatar-img {
165
+ width: 1.5rem;
166
+ height: 1.5rem;
167
+ border-radius: 50%;
168
+ object-fit: cover;
169
+ margin-right: 0.125rem;
170
+ }
171
+
172
+ .chip-sm .chip-avatar-img {
173
+ width: 1.25rem;
174
+ height: 1.25rem;
175
+ }
176
+
177
+ .chip-lg .chip-avatar-img {
178
+ width: 1.75rem;
179
+ height: 1.75rem;
180
+ }
181
+
182
+ // ----------------------------------------
183
+ // Chip with Icon
184
+ // ----------------------------------------
185
+ .chip-icon {
186
+ display: inline-flex;
187
+ align-items: center;
188
+ justify-content: center;
189
+ width: 1rem;
190
+ height: 1rem;
191
+ flex-shrink: 0;
192
+
193
+ svg {
194
+ width: 100%;
195
+ height: 100%;
196
+ }
197
+ }
198
+
199
+ .chip-icon-left {
200
+ margin-left: -0.125rem;
201
+ }
202
+
203
+ .chip-icon-right {
204
+ margin-right: -0.125rem;
205
+ }
206
+
207
+ // ----------------------------------------
208
+ // Chip Delete Button
209
+ // ----------------------------------------
210
+ .chip-delete {
211
+ display: inline-flex;
212
+ align-items: center;
213
+ justify-content: center;
214
+ width: 1.125rem;
215
+ height: 1.125rem;
216
+ margin-left: 0.125rem;
217
+ margin-right: -0.375rem;
218
+ padding: 0;
219
+ font-size: 0.875rem;
220
+ color: currentColor;
221
+ background-color: transparent;
222
+ border: none;
223
+ border-radius: 50%;
224
+ cursor: pointer;
225
+ opacity: 0.7;
226
+ transition: all $transition-fast $transition-timing;
227
+
228
+ &:hover {
229
+ opacity: 1;
230
+ background-color: rgba(0, 0, 0, 0.1);
231
+ }
232
+
233
+ &:focus {
234
+ outline: none;
235
+ opacity: 1;
236
+ }
237
+
238
+ svg {
239
+ width: 0.75rem;
240
+ height: 0.75rem;
241
+ }
242
+
243
+ &::before {
244
+ content: "×";
245
+ font-size: 1rem;
246
+ line-height: 1;
247
+ }
248
+ }
249
+
250
+ .chip-delete-icon::before {
251
+ content: none;
252
+ }
253
+
254
+ // ----------------------------------------
255
+ // Clickable Chip
256
+ // ----------------------------------------
257
+ .chip-clickable {
258
+ cursor: pointer;
259
+
260
+ &:hover {
261
+ background-color: var(--gray-200);
262
+ }
263
+
264
+ &:active {
265
+ transform: scale(0.98);
266
+ }
267
+
268
+ &.chip-primary:hover {
269
+ background-color: var(--primary-200);
270
+ }
271
+
272
+ &.chip-success:hover {
273
+ background-color: var(--success-200);
274
+ }
275
+
276
+ &.chip-danger:hover {
277
+ background-color: var(--danger-200);
278
+ }
279
+
280
+ &.chip-warning:hover {
281
+ background-color: var(--warning-200);
282
+ }
283
+
284
+ &.chip-info:hover {
285
+ background-color: var(--info-200);
286
+ }
287
+
288
+ &.chip-filled:hover {
289
+ filter: brightness(0.9);
290
+ }
291
+
292
+ &.chip-outlined:hover {
293
+ background-color: var(--gray-50);
294
+ }
295
+ }
296
+
297
+ // ----------------------------------------
298
+ // Selected Chip
299
+ // ----------------------------------------
300
+ .chip-selected {
301
+ background-color: var(--primary);
302
+ color: var(--white);
303
+ border-color: var(--primary);
304
+
305
+ .chip-delete:hover {
306
+ background-color: rgba(255, 255, 255, 0.2);
307
+ }
308
+ }
309
+
310
+ // ----------------------------------------
311
+ // Disabled Chip
312
+ // ----------------------------------------
313
+ .chip-disabled {
314
+ opacity: 0.5;
315
+ cursor: not-allowed;
316
+ pointer-events: none;
317
+ }
318
+
319
+ // ----------------------------------------
320
+ // Chip Group
321
+ // ----------------------------------------
322
+ .chip-group {
323
+ display: flex;
324
+ flex-wrap: wrap;
325
+ gap: 0.5rem;
326
+ }
327
+
328
+ .chip-group-vertical {
329
+ flex-direction: column;
330
+ align-items: flex-start;
331
+ }
332
+
333
+ // Chip group spacing variants
334
+ .chip-group-xs {
335
+ gap: 0.25rem;
336
+ }
337
+
338
+ .chip-group-sm {
339
+ gap: 0.375rem;
340
+ }
341
+
342
+ .chip-group-lg {
343
+ gap: 0.75rem;
344
+ }
345
+
346
+ // ----------------------------------------
347
+ // Chip Input (for TagsInput)
348
+ // ----------------------------------------
349
+ .chip-input-wrapper {
350
+ display: flex;
351
+ flex-wrap: wrap;
352
+ align-items: center;
353
+ gap: 0.375rem;
354
+ padding: 0.375rem 0.5rem;
355
+ background-color: var(--bg);
356
+ border: 1px solid var(--border);
357
+ border-radius: $border-radius;
358
+ min-height: 2.5rem;
359
+ cursor: text;
360
+ transition: border-color $transition-fast $transition-timing,
361
+ box-shadow $transition-fast $transition-timing;
362
+
363
+ &:focus-within {
364
+ border-color: var(--primary);
365
+ box-shadow: 0 0 0 3px rgba($primary, 0.15);
366
+ }
367
+ }
368
+
369
+ .chip-input {
370
+ flex: 1;
371
+ min-width: 60px;
372
+ border: none;
373
+ background: transparent;
374
+ font-size: var(--text-sm);
375
+ color: var(--text);
376
+ outline: none;
377
+
378
+ &::placeholder {
379
+ color: var(--text-muted);
380
+ }
381
+ }
382
+
383
+ // ----------------------------------------
384
+ // Chip Truncate
385
+ // ----------------------------------------
386
+ .chip-truncate {
387
+ .chip-text {
388
+ overflow: hidden;
389
+ text-overflow: ellipsis;
390
+ white-space: nowrap;
391
+ max-width: 150px;
392
+ }
393
+ }
394
+
395
+ // ----------------------------------------
396
+ // Dark Mode
397
+ // ----------------------------------------
398
+ [data-theme="dark"] {
399
+ .chip {
400
+ background-color: var(--gray-800);
401
+ color: var(--gray-200);
402
+ }
403
+
404
+ .chip-primary {
405
+ background-color: rgba($primary, 0.2);
406
+ color: var(--primary-300);
407
+ }
408
+
409
+ .chip-secondary {
410
+ background-color: var(--gray-700);
411
+ color: var(--gray-300);
412
+ }
413
+
414
+ .chip-success {
415
+ background-color: rgba($success, 0.2);
416
+ color: var(--success-300);
417
+ }
418
+
419
+ .chip-danger {
420
+ background-color: rgba($danger, 0.2);
421
+ color: var(--danger-300);
422
+ }
423
+
424
+ .chip-warning {
425
+ background-color: rgba($warning, 0.2);
426
+ color: var(--warning-300);
427
+ }
428
+
429
+ .chip-info {
430
+ background-color: rgba($info, 0.2);
431
+ color: var(--info-300);
432
+ }
433
+
434
+ .chip-outlined {
435
+ border-color: var(--gray-600);
436
+ }
437
+
438
+ .chip-clickable:hover {
439
+ background-color: var(--gray-700);
440
+ }
441
+
442
+ .chip-delete:hover {
443
+ background-color: rgba(255, 255, 255, 0.1);
444
+ }
445
+
446
+ .chip-input-wrapper {
447
+ background-color: var(--gray-900);
448
+ border-color: var(--gray-700);
449
+
450
+ &:focus-within {
451
+ border-color: var(--primary);
452
+ }
453
+ }
454
+ }