@codelitdev/design-system 0.1.0-alpha.5 → 0.1.0-alpha.7

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.
@@ -2,183 +2,533 @@
2
2
 
3
3
  /* ---------- Button ---------- */
4
4
  .cl-btn {
5
- display: inline-flex; align-items: center; justify-content: center; gap: 8px;
6
- font: 600 0.875rem/1 var(--font-sans);
7
- border-radius: var(--radius); border: 1px solid transparent;
8
- cursor: pointer; white-space: nowrap;
9
- transition: background var(--duration-fast) var(--ease-out), border-color var(--duration-fast) var(--ease-out), color var(--duration-fast) var(--ease-out);
10
- }
11
- .cl-btn:focus-visible { outline: none; box-shadow: var(--shadow-focus); }
12
- .cl-btn:disabled { opacity: 0.5; cursor: not-allowed; }
13
- .cl-btn--md { height: 36px; padding: 0 16px; }
14
- .cl-btn--sm { height: 30px; padding: 0 12px; font-size: 0.8125rem; }
15
- .cl-btn--lg { height: 42px; padding: 0 20px; font-size: 0.9375rem; }
16
- .cl-btn--primary { background: var(--primary); color: var(--primary-foreground); }
17
- .cl-btn--primary:hover:not(:disabled) { background: var(--primary-hover); }
18
- .cl-btn--secondary { background: var(--secondary); color: var(--secondary-foreground); }
19
- .cl-btn--secondary:hover:not(:disabled) { background: var(--border); }
20
- .cl-btn--outline { background: transparent; color: var(--foreground); border-color: var(--input); }
21
- .cl-btn--outline:hover:not(:disabled) { background: var(--muted); }
22
- .cl-btn--ghost { background: transparent; color: var(--foreground); }
23
- .cl-btn--ghost:hover:not(:disabled) { background: var(--muted); }
24
- .cl-btn--destructive { background: var(--destructive); color: var(--destructive-foreground); }
25
- .cl-btn--destructive:hover:not(:disabled) { filter: brightness(0.92); }
26
- .cl-btn--soft { background: var(--primary-soft); color: var(--primary); }
27
- .cl-btn--soft:hover:not(:disabled) { background: color-mix(in oklch, var(--primary-soft), var(--primary) 10%); }
5
+ display: inline-flex;
6
+ align-items: center;
7
+ justify-content: center;
8
+ gap: 8px;
9
+ font: 600 0.875rem / 1 var(--font-sans);
10
+ border-radius: var(--radius);
11
+ border: 1px solid transparent;
12
+ cursor: pointer;
13
+ white-space: nowrap;
14
+ transition:
15
+ background var(--duration-fast) var(--ease-out),
16
+ border-color var(--duration-fast) var(--ease-out),
17
+ color var(--duration-fast) var(--ease-out);
18
+ }
19
+ .cl-btn:focus-visible {
20
+ outline: none;
21
+ box-shadow: var(--shadow-focus);
22
+ }
23
+ .cl-btn:disabled {
24
+ opacity: 0.5;
25
+ cursor: not-allowed;
26
+ }
27
+ .cl-btn--md {
28
+ height: 36px;
29
+ padding: 0 16px;
30
+ }
31
+ .cl-btn--sm {
32
+ height: 30px;
33
+ padding: 0 12px;
34
+ font-size: 0.8125rem;
35
+ }
36
+ .cl-btn--lg {
37
+ height: 42px;
38
+ padding: 0 20px;
39
+ font-size: 0.9375rem;
40
+ }
41
+ .cl-btn--primary {
42
+ background: var(--primary);
43
+ color: var(--primary-foreground);
44
+ }
45
+ .cl-btn--primary:hover:not(:disabled) {
46
+ background: var(--primary-hover);
47
+ }
48
+ .cl-btn--secondary {
49
+ background: var(--secondary);
50
+ color: var(--secondary-foreground);
51
+ }
52
+ .cl-btn--secondary:hover:not(:disabled) {
53
+ background: var(--border);
54
+ }
55
+ .cl-btn--outline {
56
+ background: transparent;
57
+ color: var(--foreground);
58
+ border-color: var(--input);
59
+ }
60
+ .cl-btn--outline:hover:not(:disabled) {
61
+ background: var(--muted);
62
+ }
63
+ .cl-btn--ghost {
64
+ background: transparent;
65
+ color: var(--foreground);
66
+ }
67
+ .cl-btn--ghost:hover:not(:disabled) {
68
+ background: var(--muted);
69
+ }
70
+ .cl-btn--destructive {
71
+ background: var(--destructive);
72
+ color: var(--destructive-foreground);
73
+ }
74
+ .cl-btn--destructive:hover:not(:disabled) {
75
+ filter: brightness(0.92);
76
+ }
77
+ .cl-btn--soft {
78
+ background: var(--primary-soft);
79
+ color: var(--primary);
80
+ }
81
+ .cl-btn--soft:hover:not(:disabled) {
82
+ background: color-mix(in oklch, var(--primary-soft), var(--primary) 10%);
83
+ }
28
84
 
29
85
  /* ---------- IconButton ---------- */
30
86
  .cl-iconbtn {
31
- display: inline-flex; align-items: center; justify-content: center;
32
- border-radius: var(--radius); border: 1px solid transparent;
33
- background: transparent; color: var(--muted-foreground); cursor: pointer;
34
- transition: background var(--duration-fast) var(--ease-out), color var(--duration-fast) var(--ease-out);
35
- }
36
- .cl-iconbtn--md { width: 34px; height: 34px; }
37
- .cl-iconbtn--sm { width: 28px; height: 28px; }
38
- .cl-iconbtn:hover { background: var(--muted); color: var(--foreground); }
39
- .cl-iconbtn:focus-visible { outline: none; box-shadow: var(--shadow-focus); }
40
- .cl-iconbtn--outline { border-color: var(--input); }
87
+ display: inline-flex;
88
+ align-items: center;
89
+ justify-content: center;
90
+ border-radius: var(--radius);
91
+ border: 1px solid transparent;
92
+ background: transparent;
93
+ color: var(--muted-foreground);
94
+ cursor: pointer;
95
+ transition:
96
+ background var(--duration-fast) var(--ease-out),
97
+ color var(--duration-fast) var(--ease-out);
98
+ }
99
+ .cl-iconbtn--md {
100
+ width: 34px;
101
+ height: 34px;
102
+ }
103
+ .cl-iconbtn--sm {
104
+ width: 28px;
105
+ height: 28px;
106
+ }
107
+ .cl-iconbtn:hover {
108
+ background: var(--muted);
109
+ color: var(--foreground);
110
+ }
111
+ .cl-iconbtn:focus-visible {
112
+ outline: none;
113
+ box-shadow: var(--shadow-focus);
114
+ }
115
+ .cl-iconbtn--outline {
116
+ border-color: var(--input);
117
+ }
41
118
 
42
119
  /* ---------- Badge ---------- */
43
120
  .cl-badge {
44
- display: inline-flex; align-items: center; gap: 6px;
45
- font: 600 0.75rem/1 var(--font-sans);
46
- padding: 4px 10px; border-radius: var(--radius-full);
47
- }
48
- .cl-badge--default { background: var(--primary-soft); color: var(--primary); }
49
- .cl-badge--neutral { background: var(--muted); color: var(--muted-foreground); }
50
- .cl-badge--success { background: var(--success-soft); color: var(--success); }
51
- .cl-badge--warning { background: var(--warning-soft); color: var(--warning); }
52
- .cl-badge--destructive { background: var(--destructive-soft); color: var(--destructive); }
53
- .cl-badge--outline { background: transparent; color: var(--muted-foreground); box-shadow: inset 0 0 0 1px var(--border); }
54
- .cl-badge__dot { width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
121
+ display: inline-flex;
122
+ align-items: center;
123
+ gap: 6px;
124
+ font: 600 0.75rem / 1 var(--font-sans);
125
+ padding: 4px 10px;
126
+ border-radius: var(--radius-full);
127
+ }
128
+ .cl-badge--default {
129
+ background: var(--primary-soft);
130
+ color: var(--primary);
131
+ }
132
+ .cl-badge--neutral {
133
+ background: var(--muted);
134
+ color: var(--muted-foreground);
135
+ }
136
+ .cl-badge--success {
137
+ background: var(--success-soft);
138
+ color: var(--success);
139
+ }
140
+ .cl-badge--warning {
141
+ background: var(--warning-soft);
142
+ color: var(--warning);
143
+ }
144
+ .cl-badge--destructive {
145
+ background: var(--destructive-soft);
146
+ color: var(--destructive);
147
+ }
148
+ .cl-badge--outline {
149
+ background: transparent;
150
+ color: var(--muted-foreground);
151
+ box-shadow: inset 0 0 0 1px var(--border);
152
+ }
153
+ .cl-badge__dot {
154
+ width: 6px;
155
+ height: 6px;
156
+ border-radius: 50%;
157
+ background: currentColor;
158
+ }
55
159
 
56
160
  /* ---------- Card ---------- */
57
161
  .cl-card {
58
- background: var(--card); color: var(--card-foreground);
59
- border: 1px solid var(--border); border-radius: var(--radius-lg);
162
+ background: var(--card);
163
+ color: var(--card-foreground);
164
+ border: 1px solid var(--border);
165
+ border-radius: var(--radius-lg);
60
166
  box-shadow: var(--shadow-card);
61
167
  }
62
- .cl-card__header { display: flex; flex-direction: column; gap: 4px; padding: 20px 20px 0; }
63
- .cl-card__title { font: 600 1rem/1.3 var(--font-sans); margin: 0; }
64
- .cl-card__description { font: 400 0.875rem/1.5 var(--font-sans); color: var(--muted-foreground); margin: 0; }
65
- .cl-card__content { padding: 20px; }
66
- .cl-card__footer { display: flex; align-items: center; gap: 10px; padding: 0 20px 20px; }
168
+ .cl-card__header {
169
+ display: flex;
170
+ flex-direction: column;
171
+ gap: 4px;
172
+ padding: 20px 20px 0;
173
+ }
174
+ .cl-card__title {
175
+ font: 600 1rem / 1.3 var(--font-sans);
176
+ margin: 0;
177
+ }
178
+ .cl-card__description {
179
+ font: 400 0.875rem / 1.5 var(--font-sans);
180
+ color: var(--muted-foreground);
181
+ margin: 0;
182
+ }
183
+ .cl-card__content {
184
+ padding: 20px;
185
+ }
186
+ .cl-card__footer {
187
+ display: flex;
188
+ align-items: center;
189
+ gap: 10px;
190
+ padding: 0 20px 20px;
191
+ }
67
192
 
68
193
  /* ---------- Input / Textarea ---------- */
69
- .cl-field { display: flex; flex-direction: column; gap: 6px; }
70
- .cl-field__label { font: var(--text-label); color: var(--foreground); }
71
- .cl-field__hint { font: var(--text-caption); color: var(--muted-foreground); }
72
- .cl-field__error { font: var(--text-caption); color: var(--destructive); }
194
+ .cl-field {
195
+ display: flex;
196
+ flex-direction: column;
197
+ gap: 6px;
198
+ }
199
+ .cl-field__label {
200
+ font: var(--text-label);
201
+ color: var(--foreground);
202
+ }
203
+ .cl-field__hint {
204
+ font: var(--text-caption);
205
+ color: var(--muted-foreground);
206
+ }
207
+ .cl-field__error {
208
+ font: var(--text-caption);
209
+ color: var(--destructive);
210
+ }
73
211
  .cl-input {
74
- height: 36px; padding: 0 12px; width: 100%; box-sizing: border-box;
75
- font: 400 0.875rem/1 var(--font-sans); color: var(--foreground);
76
- background: var(--card); border: 1px solid var(--input); border-radius: var(--radius);
77
- transition: border-color var(--duration-fast) var(--ease-out), box-shadow var(--duration-fast) var(--ease-out);
78
- }
79
- .cl-input::placeholder { color: var(--muted-foreground); }
80
- .cl-input:focus { outline: none; border-color: var(--ring); box-shadow: 0 0 0 3px var(--primary-soft); }
81
- .cl-input:disabled { opacity: 0.5; cursor: not-allowed; background: var(--muted); }
82
- .cl-input--invalid { border-color: var(--destructive); }
83
- .cl-input--invalid:focus { border-color: var(--destructive); box-shadow: 0 0 0 3px var(--destructive-soft); }
84
- textarea.cl-input { height: auto; min-height: 80px; padding: 10px 12px; line-height: 1.5; resize: vertical; }
212
+ height: 36px;
213
+ padding: 0 12px;
214
+ width: 100%;
215
+ box-sizing: border-box;
216
+ font: 400 0.875rem / 1 var(--font-sans);
217
+ color: var(--foreground);
218
+ background: var(--card);
219
+ border: 1px solid var(--input);
220
+ border-radius: var(--radius);
221
+ transition:
222
+ border-color var(--duration-fast) var(--ease-out),
223
+ box-shadow var(--duration-fast) var(--ease-out);
224
+ }
225
+ .cl-input::placeholder {
226
+ color: var(--muted-foreground);
227
+ }
228
+ .cl-input:focus {
229
+ outline: none;
230
+ border-color: var(--ring);
231
+ box-shadow: 0 0 0 3px var(--primary-soft);
232
+ }
233
+ .cl-input:disabled {
234
+ opacity: 0.5;
235
+ cursor: not-allowed;
236
+ background: var(--muted);
237
+ }
238
+ .cl-input--invalid {
239
+ border-color: var(--destructive);
240
+ }
241
+ .cl-input--invalid:focus {
242
+ border-color: var(--destructive);
243
+ box-shadow: 0 0 0 3px var(--destructive-soft);
244
+ }
245
+ textarea.cl-input {
246
+ height: auto;
247
+ min-height: 80px;
248
+ padding: 10px 12px;
249
+ line-height: 1.5;
250
+ resize: vertical;
251
+ }
85
252
 
86
253
  /* ---------- Select ---------- */
87
- .cl-select { position: relative; display: inline-flex; width: 100%; }
254
+ .cl-select {
255
+ position: relative;
256
+ display: inline-flex;
257
+ width: 100%;
258
+ }
88
259
  .cl-select select {
89
- appearance: none; width: 100%; height: 36px; padding: 0 32px 0 12px;
90
- font: 400 0.875rem/1 var(--font-sans); color: var(--foreground);
91
- background: var(--card); border: 1px solid var(--input); border-radius: var(--radius); cursor: pointer;
260
+ appearance: none;
261
+ width: 100%;
262
+ height: 36px;
263
+ padding: 0 32px 0 12px;
264
+ font: 400 0.875rem / 1 var(--font-sans);
265
+ color: var(--foreground);
266
+ background: var(--card);
267
+ border: 1px solid var(--input);
268
+ border-radius: var(--radius);
269
+ cursor: pointer;
270
+ }
271
+ .cl-select select:focus {
272
+ outline: none;
273
+ border-color: var(--ring);
274
+ box-shadow: 0 0 0 3px var(--primary-soft);
275
+ }
276
+ .cl-select__chevron {
277
+ position: absolute;
278
+ right: 10px;
279
+ top: 50%;
280
+ transform: translateY(-50%);
281
+ pointer-events: none;
282
+ color: var(--muted-foreground);
283
+ display: flex;
92
284
  }
93
- .cl-select select:focus { outline: none; border-color: var(--ring); box-shadow: 0 0 0 3px var(--primary-soft); }
94
- .cl-select__chevron { position: absolute; right: 10px; top: 50%; transform: translateY(-50%); pointer-events: none; color: var(--muted-foreground); display: flex; }
95
285
 
96
286
  /* ---------- Checkbox / Radio ---------- */
97
- .cl-check { display: inline-flex; align-items: flex-start; gap: 10px; cursor: pointer; font: var(--text-body-sm); }
98
- .cl-check input { position: absolute; opacity: 0; width: 0; height: 0; }
287
+ .cl-check {
288
+ display: inline-flex;
289
+ align-items: flex-start;
290
+ gap: 10px;
291
+ cursor: pointer;
292
+ font: var(--text-body-sm);
293
+ }
294
+ .cl-check input {
295
+ position: absolute;
296
+ opacity: 0;
297
+ width: 0;
298
+ height: 0;
299
+ }
99
300
  .cl-check__box {
100
- flex: none; width: 18px; height: 18px; margin-top: 1px; border-radius: 5px;
101
- border: 1.5px solid var(--input); background: var(--card);
102
- display: grid; place-items: center; color: var(--primary-foreground);
103
- transition: background var(--duration-fast) var(--ease-out), border-color var(--duration-fast) var(--ease-out);
104
- }
105
- .cl-check__box--radio { border-radius: 50%; }
106
- .cl-check input:checked + .cl-check__box { background: var(--primary); border-color: var(--primary); }
107
- .cl-check input:focus-visible + .cl-check__box { box-shadow: var(--shadow-focus); }
108
- .cl-check__radio-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--primary-foreground); opacity: 0; }
109
- .cl-check input:checked + .cl-check__box .cl-check__radio-dot { opacity: 1; }
110
- .cl-check__label { color: var(--foreground); }
111
- .cl-check__sub { display: block; font: var(--text-caption); color: var(--muted-foreground); margin-top: 2px; }
112
- .cl-check--disabled { opacity: 0.5; cursor: not-allowed; }
301
+ flex: none;
302
+ width: 18px;
303
+ height: 18px;
304
+ margin-top: 1px;
305
+ border-radius: 5px;
306
+ border: 1.5px solid var(--input);
307
+ background: var(--card);
308
+ display: grid;
309
+ place-items: center;
310
+ color: var(--primary-foreground);
311
+ transition:
312
+ background var(--duration-fast) var(--ease-out),
313
+ border-color var(--duration-fast) var(--ease-out);
314
+ }
315
+ .cl-check__box--radio {
316
+ border-radius: 50%;
317
+ }
318
+ .cl-check input:checked + .cl-check__box {
319
+ background: var(--primary);
320
+ border-color: var(--primary);
321
+ }
322
+ .cl-check input:focus-visible + .cl-check__box {
323
+ box-shadow: var(--shadow-focus);
324
+ }
325
+ .cl-check__radio-dot {
326
+ width: 7px;
327
+ height: 7px;
328
+ border-radius: 50%;
329
+ background: var(--primary-foreground);
330
+ opacity: 0;
331
+ }
332
+ .cl-check input:checked + .cl-check__box .cl-check__radio-dot {
333
+ opacity: 1;
334
+ }
335
+ .cl-check__label {
336
+ color: var(--foreground);
337
+ }
338
+ .cl-check__sub {
339
+ display: block;
340
+ font: var(--text-caption);
341
+ color: var(--muted-foreground);
342
+ margin-top: 2px;
343
+ }
344
+ .cl-check--disabled {
345
+ opacity: 0.5;
346
+ cursor: not-allowed;
347
+ }
113
348
 
114
349
  /* ---------- Switch ---------- */
115
- .cl-switch { display: inline-flex; align-items: center; gap: 10px; cursor: pointer; font: var(--text-body-sm); }
116
- .cl-switch input { position: absolute; opacity: 0; width: 0; height: 0; }
350
+ .cl-switch {
351
+ display: inline-flex;
352
+ align-items: center;
353
+ gap: 10px;
354
+ cursor: pointer;
355
+ font: var(--text-body-sm);
356
+ }
357
+ .cl-switch input {
358
+ position: absolute;
359
+ opacity: 0;
360
+ width: 0;
361
+ height: 0;
362
+ }
117
363
  .cl-switch__track {
118
- flex: none; width: 36px; height: 21px; border-radius: var(--radius-full);
119
- background: var(--input); position: relative;
364
+ flex: none;
365
+ width: 36px;
366
+ height: 21px;
367
+ border-radius: var(--radius-full);
368
+ background: var(--input);
369
+ position: relative;
120
370
  transition: background var(--duration-fast) var(--ease-out);
121
371
  }
122
372
  .cl-switch__thumb {
123
- position: absolute; top: 2.5px; left: 2.5px; width: 16px; height: 16px; border-radius: 50%;
124
- background: var(--card); box-shadow: 0 1px 3px oklch(0.3 0.02 60 / 0.3);
373
+ position: absolute;
374
+ top: 2.5px;
375
+ left: 2.5px;
376
+ width: 16px;
377
+ height: 16px;
378
+ border-radius: 50%;
379
+ background: var(--card);
380
+ box-shadow: 0 1px 3px oklch(0.3 0.02 60 / 0.3);
125
381
  transition: transform var(--duration-fast) var(--ease-out);
126
382
  }
127
- .cl-switch input:checked + .cl-switch__track { background: var(--primary); }
128
- .cl-switch input:checked + .cl-switch__track .cl-switch__thumb { transform: translateX(15px); }
129
- .cl-switch input:focus-visible + .cl-switch__track { box-shadow: var(--shadow-focus); }
383
+ .cl-switch input:checked + .cl-switch__track {
384
+ background: var(--primary);
385
+ }
386
+ .cl-switch input:checked + .cl-switch__track .cl-switch__thumb {
387
+ transform: translateX(15px);
388
+ }
389
+ .cl-switch input:focus-visible + .cl-switch__track {
390
+ box-shadow: var(--shadow-focus);
391
+ }
130
392
 
131
393
  /* ---------- Tabs ---------- */
132
394
  .cl-tabs__list {
133
- display: inline-flex; gap: 2px; padding: 3px;
134
- background: var(--muted); border-radius: var(--radius);
395
+ display: inline-flex;
396
+ gap: 2px;
397
+ padding: 3px;
398
+ background: var(--muted);
399
+ border-radius: var(--radius);
135
400
  }
136
401
  .cl-tabs__trigger {
137
- font: 600 0.8125rem/1 var(--font-sans); color: var(--muted-foreground);
138
- padding: 7px 14px; border-radius: 7px; border: none; background: transparent; cursor: pointer;
139
- transition: background var(--duration-fast) var(--ease-out), color var(--duration-fast) var(--ease-out);
140
- }
141
- .cl-tabs__trigger:hover { color: var(--foreground); }
142
- .cl-tabs__trigger[data-active="true"] { background: var(--card); color: var(--foreground); box-shadow: var(--shadow-card); }
143
- .cl-tabs__list--underline { background: transparent; padding: 0; gap: 4px; border-bottom: 1px solid var(--border); border-radius: 0; }
144
- .cl-tabs__list--underline .cl-tabs__trigger { border-radius: 0; padding: 10px 12px; margin-bottom: -1px; border-bottom: 2px solid transparent; }
145
- .cl-tabs__list--underline .cl-tabs__trigger[data-active="true"] { background: transparent; box-shadow: none; border-bottom-color: var(--primary); color: var(--foreground); }
402
+ font: 600 0.8125rem / 1 var(--font-sans);
403
+ color: var(--muted-foreground);
404
+ padding: 7px 14px;
405
+ border-radius: 7px;
406
+ border: none;
407
+ background: transparent;
408
+ cursor: pointer;
409
+ transition:
410
+ background var(--duration-fast) var(--ease-out),
411
+ color var(--duration-fast) var(--ease-out);
412
+ }
413
+ .cl-tabs__trigger:hover {
414
+ color: var(--foreground);
415
+ }
416
+ .cl-tabs__trigger[data-active="true"] {
417
+ background: var(--card);
418
+ color: var(--foreground);
419
+ box-shadow: var(--shadow-card);
420
+ }
421
+ .cl-tabs__list--underline {
422
+ background: transparent;
423
+ padding: 0;
424
+ gap: 4px;
425
+ border-bottom: 1px solid var(--border);
426
+ border-radius: 0;
427
+ }
428
+ .cl-tabs__list--underline .cl-tabs__trigger {
429
+ border-radius: 0;
430
+ padding: 10px 12px;
431
+ margin-bottom: -1px;
432
+ border-bottom: 2px solid transparent;
433
+ }
434
+ .cl-tabs__list--underline .cl-tabs__trigger[data-active="true"] {
435
+ background: transparent;
436
+ box-shadow: none;
437
+ border-bottom-color: var(--primary);
438
+ color: var(--foreground);
439
+ }
146
440
 
147
441
  /* ---------- Dialog ---------- */
148
442
  .cl-dialog__scrim {
149
- position: fixed; inset: 0; background: var(--scrim);
150
- display: grid; place-items: center; z-index: 50; padding: 24px;
443
+ position: fixed;
444
+ inset: 0;
445
+ background: var(--scrim);
446
+ display: grid;
447
+ place-items: center;
448
+ z-index: 50;
449
+ padding: 24px;
151
450
  }
152
451
  .cl-dialog {
153
- background: var(--card); color: var(--card-foreground);
154
- border: 1px solid var(--border); border-radius: var(--radius-lg);
155
- box-shadow: var(--shadow-popover); width: 100%; max-width: 440px;
156
- padding: 24px; box-sizing: border-box;
157
- }
158
- .cl-dialog__title { font: 600 1.125rem/1.3 var(--font-sans); margin: 0 0 6px; }
159
- .cl-dialog__description { font: var(--text-body-sm); color: var(--muted-foreground); margin: 0 0 20px; }
160
- .cl-dialog__footer { display: flex; justify-content: flex-end; gap: 10px; margin-top: 20px; }
452
+ background: var(--card);
453
+ color: var(--card-foreground);
454
+ border: 1px solid var(--border);
455
+ border-radius: var(--radius-lg);
456
+ box-shadow: var(--shadow-popover);
457
+ width: 100%;
458
+ max-width: 440px;
459
+ padding: 24px;
460
+ box-sizing: border-box;
461
+ }
462
+ .cl-dialog__title {
463
+ font: 600 1.125rem / 1.3 var(--font-sans);
464
+ margin: 0 0 6px;
465
+ }
466
+ .cl-dialog__description {
467
+ font: var(--text-body-sm);
468
+ color: var(--muted-foreground);
469
+ margin: 0 0 20px;
470
+ }
471
+ .cl-dialog__footer {
472
+ display: flex;
473
+ justify-content: flex-end;
474
+ gap: 10px;
475
+ margin-top: 20px;
476
+ }
161
477
 
162
478
  /* ---------- Toast ---------- */
163
479
  .cl-toast {
164
- display: flex; align-items: flex-start; gap: 12px;
165
- background: var(--popover); color: var(--popover-foreground);
166
- border: 1px solid var(--border); border-radius: var(--radius-lg);
167
- box-shadow: var(--shadow-popover); padding: 14px 16px; width: 340px; box-sizing: border-box;
168
- }
169
- .cl-toast__icon { flex: none; display: flex; margin-top: 1px; color: var(--primary); }
170
- .cl-toast--success .cl-toast__icon { color: var(--success); }
171
- .cl-toast--destructive .cl-toast__icon { color: var(--destructive); }
172
- .cl-toast__title { font: 600 0.875rem/1.3 var(--font-sans); margin: 0; }
173
- .cl-toast__description { font: var(--text-caption); color: var(--muted-foreground); margin: 2px 0 0; }
480
+ display: flex;
481
+ align-items: flex-start;
482
+ gap: 12px;
483
+ background: var(--popover);
484
+ color: var(--popover-foreground);
485
+ border: 1px solid var(--border);
486
+ border-radius: var(--radius-lg);
487
+ box-shadow: var(--shadow-popover);
488
+ padding: 14px 16px;
489
+ width: 340px;
490
+ box-sizing: border-box;
491
+ }
492
+ .cl-toast__icon {
493
+ flex: none;
494
+ display: flex;
495
+ margin-top: 1px;
496
+ color: var(--primary);
497
+ }
498
+ .cl-toast--success .cl-toast__icon {
499
+ color: var(--success);
500
+ }
501
+ .cl-toast--destructive .cl-toast__icon {
502
+ color: var(--destructive);
503
+ }
504
+ .cl-toast__title {
505
+ font: 600 0.875rem / 1.3 var(--font-sans);
506
+ margin: 0;
507
+ }
508
+ .cl-toast__description {
509
+ font: var(--text-caption);
510
+ color: var(--muted-foreground);
511
+ margin: 2px 0 0;
512
+ }
174
513
 
175
514
  /* ---------- Tooltip ---------- */
176
- .cl-tooltip-wrap { position: relative; display: inline-flex; }
515
+ .cl-tooltip-wrap {
516
+ position: relative;
517
+ display: inline-flex;
518
+ }
177
519
  .cl-tooltip {
178
- position: absolute; bottom: calc(100% + 8px); left: 50%; transform: translateX(-50%);
179
- background: var(--foreground); color: var(--background);
180
- font: 500 0.75rem/1.3 var(--font-sans); padding: 6px 10px; border-radius: var(--radius-sm);
181
- white-space: nowrap; pointer-events: none; z-index: 60;
520
+ position: absolute;
521
+ bottom: calc(100% + 8px);
522
+ left: 50%;
523
+ transform: translateX(-50%);
524
+ background: var(--foreground);
525
+ color: var(--background);
526
+ font: 500 0.75rem / 1.3 var(--font-sans);
527
+ padding: 6px 10px;
528
+ border-radius: var(--radius-sm);
529
+ white-space: nowrap;
530
+ pointer-events: none;
531
+ z-index: 60;
182
532
  }
183
533
 
184
534
  /* ---------- Loader ---------- */
@@ -186,8 +536,13 @@ textarea.cl-input { height: auto; min-height: 80px; padding: 10px 12px; line-hei
186
536
  Each path sets stroke-dasharray:200 (safely larger than any real path length,
187
537
  so it never falls back to a repeating dash pattern) and animation:cl-draw. */
188
538
  @keyframes cl-draw {
189
- 0%, 100% { stroke-dashoffset: 200; }
190
- 50% { stroke-dashoffset: 0; }
539
+ 0%,
540
+ 100% {
541
+ stroke-dashoffset: 200;
542
+ }
543
+ 50% {
544
+ stroke-dashoffset: 0;
545
+ }
191
546
  }
192
547
  .cl-loader__path {
193
548
  animation: cl-draw 1.8s ease-in-out infinite;