@mesob/ui 0.3.0 → 0.3.2

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,2320 @@
1
+
2
+ .style-vega {
3
+ /* MARK: Accordion */
4
+ .cn-accordion-item {
5
+ @apply not-last:border-b;
6
+ }
7
+
8
+ .cn-accordion-trigger {
9
+ @apply focus-visible:ring-ring/50 focus-visible:border-ring focus-visible:after:border-ring **:data-[slot=accordion-trigger-icon]:text-muted-foreground rounded-md py-4 text-left text-sm font-medium hover:underline focus-visible:ring-3 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4;
10
+ }
11
+
12
+ .cn-accordion-content {
13
+ @apply data-open:animate-accordion-down data-closed:animate-accordion-up text-sm;
14
+ }
15
+
16
+ .cn-accordion-content-inner {
17
+ @apply pt-0 pb-4;
18
+ }
19
+
20
+ /* MARK: Action Icon */
21
+ .cn-action-icon-variant-default {
22
+ @apply bg-primary text-primary-foreground hover:bg-primary/90 active:bg-primary/95;
23
+ }
24
+
25
+ .cn-action-icon-variant-destructive {
26
+ @apply bg-destructive text-destructive-foreground hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40;
27
+ }
28
+
29
+ .cn-action-icon-variant-outline {
30
+ @apply border-input/70 bg-background hover:bg-accent/60 hover:text-accent-foreground border;
31
+ }
32
+
33
+ .cn-action-icon-variant-secondary {
34
+ @apply bg-secondary text-secondary-foreground hover:bg-secondary/90;
35
+ }
36
+
37
+ .cn-action-icon-variant-ghost {
38
+ @apply bg-transparent hover:bg-accent/50 hover:text-accent-foreground;
39
+ }
40
+
41
+ .cn-action-icon-variant-light {
42
+ @apply bg-primary/12 text-primary hover:bg-primary/18 dark:bg-primary/20 dark:hover:bg-primary/28;
43
+ }
44
+
45
+ .cn-action-icon-loader {
46
+ @apply bg-background/60;
47
+ }
48
+
49
+ /* MARK: Anchor */
50
+ .cn-anchor-variant-default {
51
+ @apply text-primary underline-offset-4 hover:text-primary/80;
52
+ }
53
+
54
+ .cn-anchor-variant-subtle {
55
+ @apply text-foreground underline-offset-4 hover:text-primary hover:underline;
56
+ }
57
+
58
+ .cn-anchor-variant-gradient {
59
+ @apply from-primary via-indigo-500 to-accent bg-gradient-to-r bg-clip-text text-transparent underline-offset-4 font-medium hover:underline;
60
+ }
61
+
62
+ .cn-anchor-variant-muted {
63
+ @apply text-muted-foreground underline-offset-4 hover:text-foreground hover:underline;
64
+ }
65
+
66
+ /* MARK: Blockquote */
67
+ .cn-blockquote-variant-default {
68
+ @apply border-border bg-muted/30 py-3 rounded-[var(--radius-md)];
69
+ }
70
+
71
+ .cn-blockquote-variant-primary {
72
+ @apply border-primary bg-primary/10 py-3 rounded-[var(--radius-md)];
73
+ }
74
+
75
+ .cn-blockquote-variant-secondary {
76
+ @apply border-secondary bg-secondary/10 py-3 rounded-[var(--radius-md)];
77
+ }
78
+
79
+ /* MARK: Burger */
80
+ .cn-burger {
81
+ @apply rounded-[var(--radius-md)] hover:bg-accent;
82
+ }
83
+
84
+ /* MARK: Background Image */
85
+ .cn-background-image[data-radius='xs'] {
86
+ @apply rounded-[var(--radius-sm)];
87
+ }
88
+
89
+ .cn-background-image[data-radius='sm'] {
90
+ @apply rounded;
91
+ }
92
+
93
+ .cn-background-image[data-radius='md'] {
94
+ @apply rounded-[var(--radius-md)];
95
+ }
96
+
97
+ .cn-background-image[data-radius='lg'] {
98
+ @apply rounded-[var(--radius-lg)];
99
+ }
100
+
101
+ .cn-background-image[data-radius='xl'] {
102
+ @apply rounded-[var(--radius-xl)];
103
+ }
104
+
105
+ .cn-background-image[data-radius='full'] {
106
+ @apply rounded-full;
107
+ }
108
+
109
+ /* MARK: Unstyled Button */
110
+ .cn-unstyled-button {
111
+ @apply hover:text-foreground/80;
112
+ }
113
+
114
+ /* MARK: Chip */
115
+ .cn-chip {
116
+ @apply rounded-full;
117
+ }
118
+
119
+ .cn-chip-variant-default {
120
+ @apply border-transparent bg-primary text-primary-foreground hover:bg-primary/90;
121
+ }
122
+
123
+ .cn-chip-variant-secondary {
124
+ @apply border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/90;
125
+ }
126
+
127
+ .cn-chip-variant-outline {
128
+ @apply border-input/70 bg-background hover:bg-accent/60 hover:text-accent-foreground;
129
+ }
130
+
131
+ .cn-chip-variant-input {
132
+ @apply border-input/70 bg-muted/40 text-foreground hover:bg-muted/60;
133
+ }
134
+
135
+ .cn-chip-remove {
136
+ @apply rounded-full hover:bg-foreground/20;
137
+ }
138
+
139
+ /* MARK: Copy Button */
140
+ .cn-copy-button {
141
+ @apply shrink-0;
142
+ }
143
+
144
+ /* MARK: File Button */
145
+ .cn-file-button {
146
+ @apply transition-colors disabled:text-muted-foreground;
147
+ }
148
+
149
+ /* MARK: Highlight */
150
+ .cn-highlight-mark {
151
+ @apply border-border/60 bg-muted/40 text-foreground rounded-[var(--radius-sm)] border px-1;
152
+ }
153
+
154
+ /* MARK: Image */
155
+ .cn-image {
156
+ @apply border-border/60 bg-muted/20 border;
157
+ }
158
+
159
+ .cn-image-fallback {
160
+ @apply border-border/60 bg-muted/20 text-muted-foreground border;
161
+ }
162
+
163
+ .cn-image[data-radius='none'],
164
+ .cn-image-fallback[data-radius='none'] {
165
+ @apply rounded-none;
166
+ }
167
+
168
+ .cn-image[data-radius='sm'],
169
+ .cn-image-fallback[data-radius='sm'] {
170
+ @apply rounded-[var(--radius-sm)];
171
+ }
172
+
173
+ .cn-image[data-radius='md'],
174
+ .cn-image-fallback[data-radius='md'] {
175
+ @apply rounded-[var(--radius-md)];
176
+ }
177
+
178
+ .cn-image[data-radius='lg'],
179
+ .cn-image-fallback[data-radius='lg'] {
180
+ @apply rounded-[var(--radius-lg)];
181
+ }
182
+
183
+ .cn-image[data-radius='full'],
184
+ .cn-image-fallback[data-radius='full'] {
185
+ @apply rounded-full;
186
+ }
187
+
188
+ /* MARK: Nav Link */
189
+ .cn-nav-link {
190
+ @apply rounded-[var(--radius-md)];
191
+ }
192
+
193
+ .cn-nav-link[data-active='true'] {
194
+ @apply bg-primary text-primary-foreground;
195
+ }
196
+
197
+ .cn-nav-link[data-active='true'][data-variant='subtle'] {
198
+ @apply bg-primary/10 text-primary hover:bg-primary/20;
199
+ }
200
+
201
+ .cn-nav-link[data-active='false'] {
202
+ @apply border-border/60 bg-muted/20 text-muted-foreground hover:bg-muted/60 hover:text-foreground border;
203
+ }
204
+
205
+ /* MARK: Theme Icon */
206
+ .cn-theme-icon-variant-default {
207
+ @apply border-border/60 bg-muted/20 text-foreground border;
208
+ }
209
+
210
+ .cn-theme-icon-variant-light {
211
+ @apply border-border/60 bg-primary/10 text-primary dark:bg-primary/20 border;
212
+ }
213
+
214
+ .cn-theme-icon-variant-outline {
215
+ @apply border-border/60 bg-background text-primary hover:bg-muted/60 border;
216
+ }
217
+
218
+ .cn-theme-icon-radius-none {
219
+ @apply rounded-none;
220
+ }
221
+
222
+ .cn-theme-icon-radius-sm {
223
+ @apply rounded-[var(--radius-sm)];
224
+ }
225
+
226
+ .cn-theme-icon-radius-md {
227
+ @apply rounded-[var(--radius-md)];
228
+ }
229
+
230
+ .cn-theme-icon-radius-lg {
231
+ @apply rounded-[var(--radius-lg)];
232
+ }
233
+
234
+ .cn-theme-icon-radius-full {
235
+ @apply rounded-full;
236
+ }
237
+
238
+ /* MARK: Alert Dialog */
239
+ .cn-alert-dialog-overlay {
240
+ @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/50 duration-100;
241
+ }
242
+
243
+ .cn-alert-dialog-content {
244
+ @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 bg-background ring-foreground/10 gap-6 rounded-xl p-6 ring-1 duration-100 data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-lg;
245
+ }
246
+
247
+ .cn-alert-dialog-header {
248
+ @apply grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr];
249
+ }
250
+
251
+ .cn-alert-dialog-media {
252
+ @apply bg-muted mb-2 inline-flex size-16 items-center justify-center rounded-md sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-8;
253
+ }
254
+
255
+ .cn-alert-dialog-title {
256
+ @apply text-lg font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2;
257
+ }
258
+
259
+ .cn-alert-dialog-description {
260
+ @apply text-muted-foreground *:[a]:hover:text-foreground text-sm text-balance md:text-pretty *:[a]:underline *:[a]:underline-offset-3;
261
+ }
262
+
263
+ /* MARK: Alert */
264
+ .cn-alert {
265
+ @apply grid gap-0.5 rounded-lg border px-4 py-3 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2.5 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4;
266
+ }
267
+
268
+ .cn-alert-variant-default {
269
+ @apply bg-card text-card-foreground;
270
+ }
271
+
272
+ .cn-alert-variant-destructive {
273
+ @apply text-destructive bg-card *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current;
274
+ }
275
+
276
+ .cn-alert-title {
277
+ @apply font-medium group-has-[>svg]/alert:col-start-2;
278
+ }
279
+
280
+ .cn-alert-description {
281
+ @apply text-muted-foreground text-sm text-balance md:text-pretty [&_p:not(:last-child)]:mb-4;
282
+ }
283
+
284
+ .cn-alert-action {
285
+ @apply absolute top-2.5 right-3;
286
+ }
287
+
288
+ /* MARK: Avatar */
289
+ .cn-avatar {
290
+ @apply size-8 rounded-full after:rounded-full data-[size=lg]:size-10 data-[size=sm]:size-6;
291
+ }
292
+
293
+ .cn-avatar-fallback {
294
+ @apply bg-muted text-muted-foreground rounded-full;
295
+ }
296
+
297
+ .cn-avatar-image {
298
+ @apply rounded-full;
299
+ }
300
+
301
+ .cn-avatar-badge {
302
+ @apply bg-primary text-primary-foreground ring-background;
303
+ }
304
+
305
+ .cn-avatar-group-count {
306
+ @apply bg-muted text-muted-foreground size-8 rounded-full text-sm group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3;
307
+ }
308
+
309
+ /* MARK: Badge */
310
+ .cn-badge {
311
+ @apply h-5 gap-1 rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium transition-all has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&>svg]:size-3!;
312
+ }
313
+
314
+ .cn-badge-variant-default {
315
+ @apply bg-primary text-primary-foreground [a]:hover:bg-primary/80;
316
+ }
317
+
318
+ .cn-badge-variant-secondary {
319
+ @apply bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80;
320
+ }
321
+
322
+ .cn-badge-variant-outline {
323
+ @apply border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground;
324
+ }
325
+
326
+ .cn-badge-variant-destructive {
327
+ @apply bg-destructive/10 [a]:hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 text-destructive dark:bg-destructive/20;
328
+ }
329
+
330
+ .cn-badge-variant-destructive-filled {
331
+ @apply border-transparent bg-destructive text-white [a]:hover:bg-destructive/90 dark:bg-destructive/60;
332
+ }
333
+
334
+ .cn-badge-variant-ghost {
335
+ @apply hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50;
336
+ }
337
+
338
+ .cn-badge-variant-link {
339
+ @apply text-primary underline-offset-4 hover:underline;
340
+ }
341
+
342
+ .cn-badge-variant-light {
343
+ @apply border-transparent bg-primary/10 text-primary [a]:hover:bg-primary/20 dark:bg-primary/20 dark:[a]:hover:bg-primary/30;
344
+ }
345
+
346
+ .cn-badge-variant-dot {
347
+ @apply border-transparent bg-transparent text-foreground [a]:hover:bg-accent;
348
+ }
349
+
350
+ .cn-badge-variant-success {
351
+ @apply border-transparent bg-green-600 text-white [a]:hover:bg-green-700 dark:bg-green-500;
352
+ }
353
+
354
+ .cn-badge-variant-warning {
355
+ @apply border-transparent bg-yellow-600 text-white [a]:hover:bg-yellow-700 dark:bg-yellow-500;
356
+ }
357
+
358
+ /* MARK: Breadcrumb */
359
+ .cn-breadcrumb-list {
360
+ @apply text-muted-foreground gap-1.5 text-sm sm:gap-2.5;
361
+ }
362
+
363
+ .cn-breadcrumb-item {
364
+ @apply gap-1.5;
365
+ }
366
+
367
+ .cn-breadcrumb-link {
368
+ @apply hover:text-foreground transition-colors;
369
+ }
370
+
371
+ .cn-breadcrumb-page {
372
+ @apply text-foreground font-normal;
373
+ }
374
+
375
+ .cn-breadcrumb-separator {
376
+ @apply [&>svg]:size-3.5;
377
+ }
378
+
379
+ .cn-breadcrumb-ellipsis {
380
+ @apply size-5 [&>svg]:size-4;
381
+ }
382
+
383
+ /* MARK: Button */
384
+ .cn-button {
385
+ @apply focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-md border border-transparent bg-clip-padding text-sm font-medium focus-visible:ring-3 aria-invalid:ring-3 [&_svg:not([class*='size-'])]:size-4;
386
+ }
387
+
388
+ .cn-button-variant-default {
389
+ @apply bg-primary text-primary-foreground hover:bg-primary/80;
390
+ }
391
+
392
+ .cn-button-variant-outline {
393
+ @apply border-border bg-background hover:bg-muted hover:text-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 aria-expanded:bg-muted aria-expanded:text-foreground;
394
+ }
395
+
396
+ .cn-button-variant-secondary {
397
+ @apply bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground;
398
+ }
399
+
400
+ .cn-button-variant-ghost {
401
+ @apply hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground;
402
+ }
403
+
404
+ .cn-button-variant-destructive {
405
+ @apply bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30;
406
+ }
407
+
408
+ .cn-button-variant-link {
409
+ @apply text-primary underline-offset-4 hover:underline;
410
+ }
411
+
412
+ .cn-button-variant-light {
413
+ @apply bg-primary/12 text-primary hover:bg-primary/18 dark:bg-primary/20 dark:hover:bg-primary/28;
414
+ }
415
+
416
+ .cn-button-variant-destructive-filled {
417
+ @apply bg-destructive text-destructive-foreground hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40;
418
+ }
419
+
420
+ .cn-button-size-xl {
421
+ @apply h-12 gap-2 px-7 has-data-[icon=inline-end]:pr-5 has-data-[icon=inline-start]:pl-5 text-lg;
422
+ }
423
+
424
+ .cn-button-size-icon-xl {
425
+ @apply size-12;
426
+ }
427
+
428
+ .cn-button-size-xs {
429
+ @apply h-6 gap-1 rounded-md px-2 text-xs has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3;
430
+ }
431
+
432
+ .cn-button-size-sm {
433
+ @apply h-8 gap-1 rounded-md px-2.5 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5;
434
+ }
435
+
436
+ .cn-button-size-default {
437
+ @apply h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2;
438
+ }
439
+
440
+ .cn-button-size-lg {
441
+ @apply h-10 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3;
442
+ }
443
+
444
+ .cn-button-size-icon-xs {
445
+ @apply size-6 rounded-md [&_svg:not([class*='size-'])]:size-3;
446
+ }
447
+
448
+ .cn-button-size-icon-sm {
449
+ @apply size-8 rounded-md;
450
+ }
451
+
452
+ .cn-button-size-icon {
453
+ @apply size-9;
454
+ }
455
+
456
+ .cn-button-size-icon-lg {
457
+ @apply size-10;
458
+ }
459
+ /* MARK: Button Group */
460
+ .cn-button-group {
461
+ @apply has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md;
462
+ }
463
+
464
+ .cn-button-group-orientation-horizontal {
465
+ @apply [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-md!;
466
+ }
467
+
468
+ .cn-button-group-orientation-vertical {
469
+ @apply [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-md!;
470
+ }
471
+
472
+ .cn-button-group-text {
473
+ @apply bg-muted gap-2 rounded-md border px-2.5 text-sm font-medium shadow-xs [&_svg:not([class*='size-'])]:size-4;
474
+ }
475
+
476
+ .cn-button-group-separator {
477
+ @apply bg-input;
478
+ }
479
+
480
+ /* MARK: Calendar */
481
+ .cn-calendar {
482
+ @apply p-3 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(8)];
483
+ }
484
+
485
+ .cn-calendar-dropdown-root {
486
+ @apply has-focus:border-ring border-input has-focus:ring-ring/50 border shadow-xs has-focus:ring-3;
487
+ }
488
+
489
+ .cn-calendar-caption-label {
490
+ @apply h-8 pr-1 pl-2;
491
+ }
492
+
493
+ /* MARK: Card */
494
+ .cn-card {
495
+ @apply ring-foreground/10 bg-card text-card-foreground gap-4 overflow-hidden rounded-xl py-4 text-sm shadow-xs ring-1 has-[>img:first-child]:pt-0 data-[size=sm]:gap-4 data-[size=sm]:py-4 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl;
496
+ }
497
+
498
+ .cn-card-with-border {
499
+ @apply border-border/60 border ring-0;
500
+ }
501
+
502
+ .cn-card-variant-outline {
503
+ @apply bg-transparent;
504
+ }
505
+
506
+ .cn-card-variant-filled {
507
+ @apply bg-muted/40;
508
+ }
509
+
510
+ .cn-card-header {
511
+ @apply gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-4 [.border-b]:pb-6 group-data-[size=sm]/card:[.border-b]:pb-4;
512
+ }
513
+
514
+ .cn-card-title {
515
+ @apply text-base leading-normal font-medium group-data-[size=sm]/card:text-sm;
516
+ }
517
+
518
+ .cn-card-description {
519
+ @apply text-muted-foreground text-sm;
520
+ }
521
+
522
+ .cn-card-content {
523
+ @apply px-4 group-data-[size=sm]/card:px-4;
524
+ }
525
+
526
+ .cn-card-footer {
527
+ @apply rounded-b-xl px-6 group-data-[size=sm]/card:px-4 [.border-t]:pt-6 group-data-[size=sm]/card:[.border-t]:pt-4;
528
+ }
529
+
530
+ /* MARK: Carousel */
531
+ .cn-carousel-previous {
532
+ @apply bg-background/90 backdrop-blur border-border/60 rounded-full border shadow-sm;
533
+ }
534
+
535
+ .cn-carousel-next {
536
+ @apply bg-background/90 backdrop-blur border-border/60 rounded-full border shadow-sm;
537
+ }
538
+
539
+ /* MARK: Chart */
540
+ .cn-chart-tooltip {
541
+ @apply border-border/50 bg-background gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-xl;
542
+ }
543
+
544
+ /* MARK: Checkbox */
545
+ .cn-checkbox {
546
+ @apply border-input dark:bg-input/30 data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary data-checked:border-primary aria-invalid:aria-checked:border-primary aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 flex size-4 items-center justify-center rounded-[4px] border shadow-xs transition-shadow group-has-disabled/field:opacity-50 focus-visible:ring-3 aria-invalid:ring-3;
547
+ }
548
+
549
+ .cn-checkbox-indicator {
550
+ @apply [&>svg]:size-3.5;
551
+ }
552
+
553
+ /* MARK: Combobox */
554
+ .cn-combobox-content {
555
+ @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:border-input/30 max-h-72 min-w-36 overflow-hidden rounded-md shadow-md ring-1 duration-100 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:shadow-none;
556
+ }
557
+
558
+ .cn-combobox-content-logical {
559
+ @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;
560
+ }
561
+
562
+ .cn-combobox-label {
563
+ @apply text-muted-foreground px-2 py-1.5 text-xs;
564
+ }
565
+
566
+ .cn-combobox-item {
567
+ @apply data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm [&_svg:not([class*='size-'])]:size-4;
568
+ }
569
+
570
+ .cn-combobox-item-indicator {
571
+ @apply pointer-events-none absolute right-2 flex size-4 items-center justify-center;
572
+ }
573
+
574
+ .cn-combobox-empty {
575
+ @apply text-muted-foreground hidden w-full justify-center py-2 text-center text-sm group-data-empty/combobox-content:flex;
576
+ }
577
+
578
+ .cn-combobox-list {
579
+ @apply no-scrollbar max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto p-1 data-empty:p-0;
580
+ }
581
+
582
+ .cn-combobox-item-text {
583
+ @apply flex flex-1 gap-2;
584
+ }
585
+
586
+ .cn-combobox-separator {
587
+ @apply bg-border -mx-1 my-1 h-px;
588
+ }
589
+
590
+ .cn-combobox-trigger {
591
+ @apply [&_svg:not([class*='size-'])]:size-4;
592
+ }
593
+
594
+ .cn-combobox-trigger-icon {
595
+ @apply text-muted-foreground size-4;
596
+ }
597
+
598
+ .cn-combobox-chips {
599
+ @apply dark:bg-input/30 border-input focus-within:border-ring focus-within:ring-ring/50 has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40 has-aria-invalid:border-destructive dark:has-aria-invalid:border-destructive/50 flex min-h-9 flex-wrap items-center gap-1.5 rounded-md border bg-transparent bg-clip-padding px-2.5 py-1.5 text-sm shadow-xs transition-[color,box-shadow] focus-within:ring-3 has-aria-invalid:ring-3 has-data-[slot=combobox-chip]:px-1.5;
600
+ }
601
+
602
+ .cn-combobox-chip {
603
+ @apply bg-muted text-foreground flex h-[calc(--spacing(5.5))] w-fit items-center justify-center gap-1 rounded-sm px-1.5 text-xs font-medium whitespace-nowrap has-data-[slot=combobox-chip-remove]:pr-0;
604
+ }
605
+
606
+ .cn-combobox-chip-remove {
607
+ @apply -ml-1 opacity-50 hover:opacity-100;
608
+ }
609
+
610
+ .cn-tags-input-input {
611
+ @apply placeholder:text-muted-foreground min-w-[120px] flex-1 bg-transparent text-xs/relaxed outline-none disabled:cursor-not-allowed disabled:text-muted-foreground;
612
+ }
613
+
614
+ /* MARK: Command */
615
+ .cn-command {
616
+ @apply bg-popover text-popover-foreground rounded-xl! p-1;
617
+ }
618
+
619
+ .cn-command-dialog {
620
+ @apply rounded-xl! p-0;
621
+ }
622
+
623
+ .cn-command-input-wrapper {
624
+ @apply p-1 pb-0;
625
+ }
626
+
627
+ .cn-command-input-group {
628
+ @apply bg-input/30 border-input/30 h-8! rounded-lg! shadow-none! *:data-[slot=input-group-addon]:pl-2!;
629
+ }
630
+
631
+ .cn-command-input-icon {
632
+ @apply size-4 shrink-0 opacity-50;
633
+ }
634
+
635
+ .cn-command-input {
636
+ @apply w-full text-sm;
637
+ }
638
+
639
+ .cn-command-list {
640
+ @apply no-scrollbar max-h-72 scroll-py-1 outline-none;
641
+ }
642
+
643
+ .cn-command-empty {
644
+ @apply py-6 text-center text-sm;
645
+ }
646
+
647
+ .cn-command-group {
648
+ @apply text-foreground **:[[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 **:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium;
649
+ }
650
+
651
+ .cn-command-separator {
652
+ @apply bg-border -mx-1 h-px w-auto;
653
+ }
654
+
655
+ .cn-command-item {
656
+ @apply data-selected:bg-muted data-selected:text-foreground data-selected:**:[svg]:text-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none in-data-[slot=dialog-content]:rounded-lg! [&_svg:not([class*='size-'])]:size-4;
657
+ }
658
+
659
+ .cn-command-shortcut {
660
+ @apply text-muted-foreground group-data-selected/command-item:text-foreground ml-auto text-xs tracking-widest;
661
+ }
662
+
663
+ /* MARK: Context Menu */
664
+ .cn-context-menu-content {
665
+ @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-36 rounded-md p-1 shadow-md ring-1 duration-100;
666
+ }
667
+
668
+ .cn-context-menu-content-logical {
669
+ @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;
670
+ }
671
+
672
+ .cn-context-menu-item {
673
+ @apply focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive focus:*:[svg]:text-accent-foreground gap-2 rounded-sm px-2 py-1.5 text-sm data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4;
674
+ }
675
+
676
+ .cn-context-menu-checkbox-item {
677
+ @apply focus:bg-accent focus:text-accent-foreground gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4;
678
+ }
679
+
680
+ .cn-context-menu-radio-item {
681
+ @apply focus:bg-accent focus:text-accent-foreground gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4;
682
+ }
683
+
684
+ .cn-context-menu-item-indicator {
685
+ @apply absolute right-2;
686
+ }
687
+
688
+ .cn-context-menu-label {
689
+ @apply text-muted-foreground px-2 py-1.5 text-xs font-medium data-inset:pl-8;
690
+ }
691
+
692
+ .cn-context-menu-separator {
693
+ @apply bg-border -mx-1 my-1 h-px;
694
+ }
695
+
696
+ .cn-context-menu-shortcut {
697
+ @apply text-muted-foreground group-focus/context-menu-item:text-accent-foreground ml-auto text-xs tracking-widest;
698
+ }
699
+
700
+ .cn-context-menu-sub-trigger {
701
+ @apply focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground rounded-sm px-2 py-1.5 text-sm data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4;
702
+ }
703
+
704
+ .cn-context-menu-sub-content {
705
+ @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 bg-popover text-popover-foreground min-w-32 rounded-md border p-1 shadow-lg duration-100;
706
+ }
707
+
708
+ .cn-context-menu-subcontent {
709
+ @apply shadow-lg;
710
+ }
711
+
712
+ /* MARK: Dialog */
713
+ .cn-dialog-overlay {
714
+ @apply fixed inset-0 z-50 data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/50 duration-200;
715
+ }
716
+
717
+ .cn-dialog-content {
718
+ @apply fixed top-1/2 left-1/2 z-50 grid max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-6 rounded-xl border border-border/60 bg-background p-6 text-sm shadow-lg duration-200 data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 sm:max-w-md;
719
+ }
720
+
721
+ .cn-dialog-close {
722
+ @apply absolute top-4 right-4;
723
+ }
724
+
725
+ .cn-dialog-header {
726
+ @apply gap-2;
727
+ }
728
+
729
+ .cn-dialog-footer {
730
+ @apply gap-2;
731
+ }
732
+
733
+ .cn-dialog-title {
734
+ @apply leading-none font-medium;
735
+ }
736
+
737
+ .cn-dialog-description {
738
+ @apply text-muted-foreground *:[a]:hover:text-foreground text-sm *:[a]:underline *:[a]:underline-offset-3;
739
+ }
740
+
741
+ /* MARK: Drawer */
742
+ .cn-drawer-overlay {
743
+ @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/50;
744
+ }
745
+
746
+ .cn-drawer-content {
747
+ @apply bg-background flex h-auto flex-col text-sm data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-xl data-[vaul-drawer-direction=bottom]:border-t data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:rounded-r-xl data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:rounded-l-xl data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-xl data-[vaul-drawer-direction=top]:border-b data-[vaul-drawer-direction=left]:sm:max-w-sm data-[vaul-drawer-direction=right]:sm:max-w-sm;
748
+ }
749
+
750
+ .cn-drawer-handle {
751
+ @apply bg-muted mx-auto mt-4 hidden h-1.5 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block;
752
+ }
753
+
754
+ .cn-drawer-header {
755
+ @apply gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-1.5 md:text-left;
756
+ }
757
+
758
+ .cn-drawer-title {
759
+ @apply text-foreground font-medium;
760
+ }
761
+
762
+ .cn-drawer-description {
763
+ @apply text-muted-foreground text-sm;
764
+ }
765
+
766
+ .cn-drawer-footer {
767
+ @apply gap-2 p-4;
768
+ }
769
+
770
+ /* MARK: Dropdown Menu */
771
+ .cn-dropdown-menu-content {
772
+ @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-32 rounded-md p-1 shadow-md ring-1 duration-100;
773
+ }
774
+
775
+ .cn-dropdown-menu-content-logical {
776
+ @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;
777
+ }
778
+
779
+ .cn-dropdown-menu-item {
780
+ @apply focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-sm px-2 py-1.5 text-sm data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4;
781
+ }
782
+
783
+ .cn-dropdown-menu-checkbox-item {
784
+ @apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4;
785
+ }
786
+
787
+ .cn-dropdown-menu-radio-item {
788
+ @apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4;
789
+ }
790
+
791
+ .cn-dropdown-menu-item-indicator {
792
+ @apply absolute right-2 flex items-center justify-center;
793
+ }
794
+
795
+ .cn-dropdown-menu-label {
796
+ @apply text-muted-foreground px-2 py-1.5 text-xs font-medium data-inset:pl-8;
797
+ }
798
+
799
+ .cn-dropdown-menu-separator {
800
+ @apply bg-border -mx-1 my-1 h-px;
801
+ }
802
+
803
+ .cn-dropdown-menu-shortcut {
804
+ @apply text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground ml-auto text-xs tracking-widest;
805
+ }
806
+
807
+ .cn-dropdown-menu-sub-trigger {
808
+ @apply focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-sm px-2 py-1.5 text-sm data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4;
809
+ }
810
+
811
+ .cn-dropdown-menu-sub-content {
812
+ @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-[96px] rounded-md p-1 shadow-lg ring-1 duration-100;
813
+ }
814
+
815
+ .cn-dropdown-menu-subcontent {
816
+ @apply shadow-lg;
817
+ }
818
+
819
+ /* MARK: Empty */
820
+ .cn-empty {
821
+ @apply gap-4 rounded-lg border-dashed p-12;
822
+ }
823
+
824
+ .cn-empty-header {
825
+ @apply gap-2;
826
+ }
827
+
828
+ .cn-empty-media {
829
+ @apply mb-2;
830
+ }
831
+
832
+ .cn-empty-media-default {
833
+ @apply bg-transparent;
834
+ }
835
+
836
+ .cn-empty-media-icon {
837
+ @apply bg-muted text-foreground flex size-10 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-6;
838
+ }
839
+
840
+ .cn-empty-title {
841
+ @apply text-lg font-medium tracking-tight;
842
+ }
843
+
844
+ .cn-empty-description {
845
+ @apply text-sm/relaxed;
846
+ }
847
+
848
+ .cn-empty-content {
849
+ @apply gap-4 text-sm;
850
+ }
851
+
852
+ /* MARK: Field */
853
+ .cn-field-set {
854
+ @apply gap-6 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3;
855
+ }
856
+
857
+ .cn-field-legend {
858
+ @apply mb-3 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base;
859
+ }
860
+
861
+ .cn-field-group {
862
+ @apply gap-7 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4;
863
+ }
864
+
865
+ .cn-field {
866
+ @apply data-[invalid=true]:text-destructive gap-3;
867
+ }
868
+
869
+ .cn-field-content {
870
+ @apply gap-1;
871
+ }
872
+
873
+ .cn-field-label {
874
+ @apply has-data-checked:bg-primary/10 has-data-checked:border-primary/30 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10 gap-2 group-data-[disabled=true]/field:opacity-50 has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border *:data-[slot=field]:p-3;
875
+ }
876
+
877
+ .cn-field-title {
878
+ @apply gap-2 text-sm font-medium group-data-[disabled=true]/field:opacity-50;
879
+ }
880
+
881
+ .cn-field-description {
882
+ @apply text-muted-foreground text-left text-sm [[data-variant=legend]+&]:-mt-1.5;
883
+ }
884
+
885
+ .cn-field-separator {
886
+ @apply -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2;
887
+ }
888
+
889
+ .cn-field-separator-content {
890
+ @apply bg-background text-muted-foreground relative mx-auto block w-fit px-2;
891
+ }
892
+
893
+ .cn-field-error {
894
+ @apply text-destructive text-sm;
895
+ }
896
+
897
+ /* MARK: Hover Card */
898
+ .cn-hover-card-content {
899
+ @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground w-64 rounded-lg p-4 text-sm shadow-md ring-1 duration-100;
900
+ }
901
+
902
+ .cn-hover-card-content-logical {
903
+ @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;
904
+ }
905
+
906
+ /* MARK: Input */
907
+ .cn-input {
908
+ @apply dark:bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-9 rounded-md border bg-transparent px-2.5 py-1 text-base shadow-xs transition-[color,box-shadow] file:h-7 file:text-sm file:font-medium focus-visible:ring-3 aria-invalid:ring-3 md:text-sm;
909
+ }
910
+
911
+ /* MARK: Input OTP */
912
+ .cn-input-otp {
913
+ @apply gap-2;
914
+ }
915
+
916
+ .cn-input-otp-group {
917
+ @apply has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40 has-aria-invalid:border-destructive rounded-md has-aria-invalid:ring-3;
918
+ }
919
+
920
+ .cn-input-otp-slot {
921
+ @apply dark:bg-input/30 border-input data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive size-9 border-y border-r text-sm shadow-xs transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md data-[active=true]:ring-3;
922
+ }
923
+
924
+ .cn-input-otp-caret-line {
925
+ @apply animate-caret-blink bg-foreground h-4 w-px duration-1000;
926
+ }
927
+
928
+ .cn-input-otp-separator {
929
+ @apply [&_svg:not([class*='size-'])]:size-4;
930
+ }
931
+
932
+ /* MARK: Item */
933
+ .cn-item {
934
+ @apply [a]:hover:bg-muted rounded-md border text-sm;
935
+ }
936
+
937
+ .cn-item-variant-default {
938
+ @apply border-transparent;
939
+ }
940
+
941
+ .cn-item-variant-outline {
942
+ @apply border-border;
943
+ }
944
+
945
+ .cn-item-variant-muted {
946
+ @apply bg-muted/50 border-transparent;
947
+ }
948
+
949
+ .cn-item-size-default {
950
+ @apply gap-3.5 px-4 py-3.5;
951
+ }
952
+
953
+ .cn-item-size-sm {
954
+ @apply gap-2.5 px-3 py-2.5;
955
+ }
956
+
957
+ .cn-item-size-xs {
958
+ @apply gap-2 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0;
959
+ }
960
+
961
+ .cn-item-media {
962
+ @apply gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start;
963
+ }
964
+
965
+ .cn-item-media-variant-default {
966
+ @apply bg-transparent;
967
+ }
968
+
969
+ .cn-item-media-variant-icon {
970
+ @apply bg-muted border-border/50 flex size-8 items-center justify-center rounded-sm border group-data-[size=xs]/item:size-6 [&_svg:not([class*='size-'])]:size-4;
971
+ }
972
+
973
+ .cn-item-media-variant-image {
974
+ @apply size-10 overflow-hidden rounded-sm group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover;
975
+ }
976
+
977
+ .cn-item-content {
978
+ @apply gap-1 group-data-[size=xs]/item:gap-0;
979
+ }
980
+
981
+ .cn-item-title {
982
+ @apply gap-2 text-sm leading-snug font-medium underline-offset-4;
983
+ }
984
+
985
+ .cn-item-description {
986
+ @apply text-muted-foreground text-left text-sm leading-normal group-data-[size=xs]/item:text-xs;
987
+ }
988
+
989
+ .cn-item-actions {
990
+ @apply gap-2;
991
+ }
992
+
993
+ .cn-item-header {
994
+ @apply gap-2;
995
+ }
996
+
997
+ .cn-item-footer {
998
+ @apply gap-2;
999
+ }
1000
+
1001
+ .cn-item-group {
1002
+ @apply gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2;
1003
+ }
1004
+
1005
+ .cn-item-separator {
1006
+ @apply my-2;
1007
+ }
1008
+
1009
+ /* MARK: Kbd */
1010
+ .cn-kbd {
1011
+ @apply bg-muted text-muted-foreground in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 h-5 w-fit min-w-5 gap-1 rounded-sm px-1 font-sans text-xs font-medium [&_svg:not([class*='size-'])]:size-3;
1012
+ }
1013
+
1014
+ .cn-kbd-group {
1015
+ @apply gap-1;
1016
+ }
1017
+
1018
+ /* MARK: Loader */
1019
+ .cn-loader-bars-bar {
1020
+ @apply rounded-sm;
1021
+ }
1022
+
1023
+ .cn-loader-dot {
1024
+ @apply rounded-full;
1025
+ }
1026
+
1027
+ /* MARK: Loading Overlay */
1028
+ .cn-loading-overlay {
1029
+ @apply absolute inset-0 rounded-[inherit];
1030
+ }
1031
+
1032
+ /* MARK: Overlay */
1033
+ .cn-overlay {
1034
+ @apply bg-background;
1035
+ }
1036
+
1037
+ /* MARK: Code */
1038
+ .cn-code-inline {
1039
+ @apply bg-muted/40 text-foreground rounded-md border border-border/60;
1040
+ }
1041
+
1042
+ .cn-code-block {
1043
+ @apply bg-muted/40 text-foreground rounded-md border border-border/60;
1044
+ }
1045
+
1046
+ /* MARK: List */
1047
+ .cn-list-item {
1048
+ @apply text-muted-foreground text-sm;
1049
+ }
1050
+
1051
+ /* MARK: Mark */
1052
+ .cn-mark {
1053
+ @apply border-border/60 bg-muted/40 text-foreground rounded-md border;
1054
+ }
1055
+
1056
+ /* MARK: Paper */
1057
+ .cn-paper {
1058
+ @apply border-border/60 bg-card text-card-foreground;
1059
+ }
1060
+
1061
+ /* MARK: Pill */
1062
+ .cn-pill {
1063
+ @apply border-border/60 rounded-full border;
1064
+ }
1065
+
1066
+ .cn-pill-variant-default {
1067
+ @apply bg-muted/20 text-muted-foreground;
1068
+ }
1069
+
1070
+ .cn-pill-variant-contrast {
1071
+ @apply bg-primary text-primary-foreground border-transparent;
1072
+ }
1073
+
1074
+ /* MARK: Spinner */
1075
+ .cn-spinner {
1076
+ @apply animate-spin text-primary;
1077
+ }
1078
+
1079
+ /* MARK: Label */
1080
+ .cn-label {
1081
+ @apply gap-2 text-sm leading-none font-medium group-data-[disabled=true]:opacity-50 peer-disabled:opacity-50;
1082
+ }
1083
+
1084
+ /* MARK: Menubar */
1085
+ .cn-menubar {
1086
+ @apply bg-background h-9 gap-1 rounded-md border p-1 shadow-xs;
1087
+ }
1088
+
1089
+ .cn-menubar-trigger {
1090
+ @apply hover:bg-muted aria-expanded:bg-muted rounded-sm px-2 py-1 text-sm font-medium;
1091
+ }
1092
+
1093
+ .cn-menubar-content {
1094
+ @apply bg-popover text-popover-foreground data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-36 rounded-md p-1 shadow-md ring-1 duration-100;
1095
+ }
1096
+
1097
+ .cn-menubar-content-logical {
1098
+ @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;
1099
+ }
1100
+
1101
+ .cn-menubar-item {
1102
+ @apply focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive! not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-sm px-2 py-1.5 text-sm data-disabled:opacity-50 data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4;
1103
+ }
1104
+
1105
+ .cn-menubar-checkbox-item {
1106
+ @apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2 rounded-md py-1.5 pr-2 pl-8 text-sm data-inset:pl-8;
1107
+ }
1108
+
1109
+ .cn-menubar-checkbox-item-indicator {
1110
+ @apply left-2 size-4 [&_svg:not([class*='size-'])]:size-4;
1111
+ }
1112
+
1113
+ .cn-menubar-radio-item {
1114
+ @apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2 rounded-md py-1.5 pr-2 pl-8 text-sm data-disabled:opacity-50 data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4;
1115
+ }
1116
+
1117
+ .cn-menubar-radio-item-indicator {
1118
+ @apply left-2 size-4 [&_svg:not([class*='size-'])]:size-4;
1119
+ }
1120
+
1121
+ .cn-menubar-label {
1122
+ @apply px-2 py-1.5 text-sm font-medium data-inset:pl-8;
1123
+ }
1124
+
1125
+ .cn-menubar-separator {
1126
+ @apply bg-border;
1127
+ }
1128
+
1129
+ .cn-menubar-shortcut {
1130
+ @apply text-muted-foreground group-focus/menubar-item:text-accent-foreground text-xs tracking-widest;
1131
+ }
1132
+
1133
+ .cn-menubar-sub-trigger {
1134
+ @apply focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground gap-2 rounded-sm px-2 py-1.5 text-sm data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4;
1135
+ }
1136
+
1137
+ .cn-menubar-sub-content {
1138
+ @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-32 rounded-md p-1 shadow-lg ring-1 duration-100;
1139
+ }
1140
+
1141
+ /* MARK: Navigation Menu */
1142
+ .cn-navigation-menu {
1143
+ @apply max-w-max;
1144
+ }
1145
+
1146
+ .cn-navigation-menu-list {
1147
+ @apply gap-0;
1148
+ }
1149
+
1150
+ .cn-navigation-menu-trigger {
1151
+ @apply bg-background hover:bg-muted focus:bg-muted data-open:hover:bg-muted data-open:focus:bg-muted data-open:bg-muted/50 focus-visible:ring-ring/50 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted rounded-md px-4 py-2 text-sm font-medium transition-all focus-visible:ring-3 focus-visible:outline-1 disabled:opacity-50;
1152
+ }
1153
+
1154
+ .cn-navigation-menu-trigger-icon {
1155
+ @apply relative top-px ml-1 size-3 transition duration-300 group-data-open/navigation-menu-trigger:rotate-180 group-data-popup-open/navigation-menu-trigger:rotate-180;
1156
+ }
1157
+
1158
+ .cn-navigation-menu-content {
1159
+ @apply data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0 group-data-[viewport=false]/navigation-menu:ring-foreground/10 p-2 pr-2.5 ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:ring-1 group-data-[viewport=false]/navigation-menu:duration-300;
1160
+ }
1161
+
1162
+ .cn-navigation-menu-viewport {
1163
+ @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:zoom-out-95 data-open:zoom-in-90 ring-foreground/10 rounded-lg shadow ring-1 duration-100;
1164
+ }
1165
+
1166
+ .cn-navigation-menu-link {
1167
+ @apply data-[active=true]:focus:bg-muted data-[active=true]:hover:bg-muted data-[active=true]:bg-muted/50 focus-visible:ring-ring/50 hover:bg-muted focus:bg-muted flex items-center gap-1.5 rounded-sm p-2 text-sm transition-all outline-none focus-visible:ring-3 focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4;
1168
+ }
1169
+
1170
+ .cn-navigation-menu-indicator {
1171
+ @apply data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in;
1172
+ }
1173
+
1174
+ .cn-navigation-menu-indicator-arrow {
1175
+ @apply bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm shadow-md;
1176
+ }
1177
+
1178
+ .cn-navigation-menu-positioner {
1179
+ @apply transition-[top,left,right,bottom] duration-300 ease-[cubic-bezier(0.22,1,0.36,1)] data-[side=bottom]:before:top-[-10px] data-[side=bottom]:before:right-0 data-[side=bottom]:before:left-0;
1180
+ }
1181
+
1182
+ .cn-navigation-menu-popup {
1183
+ @apply bg-popover text-popover-foreground ring-foreground/10 rounded-lg shadow ring-1 transition-all ease-[cubic-bezier(0.22,1,0.36,1)] outline-none data-ending-style:scale-90 data-ending-style:opacity-0 data-ending-style:duration-150 data-starting-style:scale-90 data-starting-style:opacity-0;
1184
+ }
1185
+
1186
+ /* MARK: Native Select */
1187
+ .cn-native-select {
1188
+ @apply border-input placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-9 w-full min-w-0 appearance-none rounded-md border bg-transparent py-1 pr-8 pl-2.5 text-sm shadow-xs transition-[color,box-shadow] select-none focus-visible:ring-3 aria-invalid:ring-3 data-[size=sm]:h-8;
1189
+ }
1190
+
1191
+ .cn-native-select-icon {
1192
+ @apply text-muted-foreground top-1/2 right-2.5 size-4 -translate-y-1/2;
1193
+ }
1194
+
1195
+ /* MARK: Money Input */
1196
+ .cn-money-input-currency-divider {
1197
+ @apply border-input border-l;
1198
+ }
1199
+
1200
+ .cn-money-input-currency-trigger {
1201
+ @apply rounded-md border-0 bg-transparent shadow-none ring-0 transition-none focus-visible:ring-0;
1202
+ }
1203
+
1204
+ /* MARK: Multi Select */
1205
+ .cn-multi-select-input {
1206
+ @apply placeholder:text-muted-foreground min-w-[120px] flex-1 bg-transparent text-sm outline-none disabled:cursor-not-allowed disabled:text-muted-foreground;
1207
+ }
1208
+
1209
+ .cn-multi-select-trigger-icon {
1210
+ @apply pointer-events-none absolute top-1/2 right-3 size-4 -translate-y-1/2 opacity-50;
1211
+ }
1212
+
1213
+ .cn-multi-select-content {
1214
+ @apply absolute top-full z-50 mt-1 w-full max-h-[300px] overflow-y-auto;
1215
+ }
1216
+
1217
+ .cn-multi-select-empty {
1218
+ @apply text-muted-foreground py-2 text-center text-sm;
1219
+ }
1220
+
1221
+ /* MARK: Pagination */
1222
+ .cn-pagination-content {
1223
+ @apply gap-1;
1224
+ }
1225
+
1226
+ .cn-pagination-ellipsis {
1227
+ @apply size-9 items-center justify-center [&_svg:not([class*='size-'])]:size-4;
1228
+ }
1229
+
1230
+ .cn-pagination-previous {
1231
+ @apply pl-2!;
1232
+ }
1233
+
1234
+ .cn-pagination-next {
1235
+ @apply pr-2!;
1236
+ }
1237
+
1238
+ /* MARK: Popover */
1239
+ .cn-popover-content {
1240
+ @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 flex flex-col gap-4 rounded-md p-4 text-sm shadow-md ring-1 duration-100;
1241
+ }
1242
+
1243
+ .cn-popover-content-logical {
1244
+ @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;
1245
+ }
1246
+
1247
+ .cn-popover-header {
1248
+ @apply flex flex-col gap-1 text-sm;
1249
+ }
1250
+
1251
+ .cn-popover-title {
1252
+ @apply font-medium;
1253
+ }
1254
+
1255
+ .cn-popover-description {
1256
+ @apply text-muted-foreground;
1257
+ }
1258
+
1259
+ /* MARK: Progress */
1260
+ .cn-progress {
1261
+ @apply bg-muted rounded-full data-[size=xs]:h-1 data-[size=sm]:h-1.5 data-[size=md]:h-1.5 data-[size=lg]:h-2 data-[size=xl]:h-3;
1262
+ }
1263
+
1264
+ .cn-progress-track {
1265
+ @apply bg-muted rounded-full data-[size=xs]:h-1 data-[size=sm]:h-1.5 data-[size=md]:h-1.5 data-[size=lg]:h-2 data-[size=xl]:h-3;
1266
+ }
1267
+
1268
+ .cn-progress-indicator {
1269
+ @apply bg-primary;
1270
+ }
1271
+
1272
+ .cn-progress-label {
1273
+ @apply text-sm font-medium;
1274
+ }
1275
+
1276
+ .cn-progress-value {
1277
+ @apply text-muted-foreground ml-auto text-sm tabular-nums;
1278
+ }
1279
+
1280
+ /* MARK: Radio Group */
1281
+ .cn-radio-group {
1282
+ @apply grid gap-3;
1283
+ }
1284
+
1285
+ .cn-radio-group-item {
1286
+ @apply border-input bg-background text-primary dark:bg-input/30 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 grid place-items-center rounded-full border shadow-xs focus-visible:ring-3 aria-invalid:ring-3;
1287
+ }
1288
+
1289
+ .cn-radio-group-indicator {
1290
+ @apply group-aria-invalid/radio-group-item:text-destructive absolute inset-0;
1291
+ }
1292
+
1293
+ .cn-radio-group-indicator-icon {
1294
+ @apply absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 rounded-full;
1295
+ }
1296
+
1297
+ /* MARK: Resizable */
1298
+ .cn-resizable-handle-icon {
1299
+ @apply bg-border h-6 w-1 rounded-lg;
1300
+ }
1301
+
1302
+ /* MARK: Scroll Area */
1303
+ .cn-scroll-area-viewport {
1304
+ @apply focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1;
1305
+ }
1306
+
1307
+ .cn-scroll-area-scrollbar {
1308
+ @apply data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent;
1309
+ }
1310
+
1311
+ .cn-scroll-area-thumb {
1312
+ @apply bg-border/80 relative flex-1 rounded-full;
1313
+ }
1314
+
1315
+ /* MARK: Select */
1316
+ .cn-select-trigger {
1317
+ @apply border-input data-placeholder:text-muted-foreground dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 gap-1.5 rounded-md border bg-transparent py-2 pr-2 pl-2.5 text-sm shadow-xs transition-[color,box-shadow] focus-visible:ring-3 aria-invalid:ring-3 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:flex *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*='size-'])]:size-4;
1318
+ }
1319
+
1320
+ .cn-select-value {
1321
+ @apply flex flex-1 text-left;
1322
+ }
1323
+
1324
+ .cn-select-trigger-icon {
1325
+ @apply text-muted-foreground size-4;
1326
+ }
1327
+
1328
+ .cn-select-content {
1329
+ @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-36 rounded-md shadow-md ring-1 duration-100;
1330
+ }
1331
+
1332
+ .cn-select-content-logical {
1333
+ @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;
1334
+ }
1335
+
1336
+ .cn-select-label {
1337
+ @apply text-muted-foreground px-2 py-1.5 text-xs;
1338
+ }
1339
+
1340
+ .cn-select-item {
1341
+ @apply focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2;
1342
+ }
1343
+
1344
+ .cn-select-item-indicator {
1345
+ @apply pointer-events-none absolute right-2 flex size-4 items-center justify-center;
1346
+ }
1347
+
1348
+ .cn-select-group {
1349
+ @apply scroll-my-1 p-1;
1350
+ }
1351
+
1352
+ .cn-select-item-text {
1353
+ @apply flex flex-1 gap-2;
1354
+ }
1355
+
1356
+ .cn-select-separator {
1357
+ @apply bg-border -mx-1 my-1 h-px;
1358
+ }
1359
+
1360
+ .cn-select-scroll-up-button {
1361
+ @apply bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4;
1362
+ }
1363
+
1364
+ .cn-select-scroll-down-button {
1365
+ @apply bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4;
1366
+ }
1367
+
1368
+ /* MARK: Separator */
1369
+ .cn-separator {
1370
+ @apply bg-border shrink-0;
1371
+ }
1372
+
1373
+ .cn-separator-horizontal {
1374
+ @apply h-px w-full;
1375
+ }
1376
+
1377
+ .cn-separator-vertical {
1378
+ @apply h-full w-px;
1379
+ }
1380
+
1381
+ /* MARK: Sheet */
1382
+ .cn-sheet-overlay {
1383
+ @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/20 duration-100 data-ending-style:opacity-0 data-starting-style:opacity-0;
1384
+ }
1385
+
1386
+ .cn-sheet-content {
1387
+ @apply bg-background data-open:animate-in data-closed:animate-out data-[side=right]:data-closed:slide-out-to-right-10 data-[side=right]:data-open:slide-in-from-right-10 data-[side=left]:data-closed:slide-out-to-left-10 data-[side=left]:data-open:slide-in-from-left-10 data-[side=top]:data-closed:slide-out-to-top-10 data-[side=top]:data-open:slide-in-from-top-10 data-closed:fade-out-0 data-open:fade-in-0 data-[side=bottom]:data-closed:slide-out-to-bottom-10 data-[side=bottom]:data-open:slide-in-from-bottom-10 fixed z-50 flex flex-col gap-4 bg-clip-padding text-sm shadow-lg transition duration-200 ease-in-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm;
1388
+ }
1389
+
1390
+ .cn-sheet-close {
1391
+ @apply absolute! top-4 right-4 z-10;
1392
+ }
1393
+
1394
+ .cn-sheet-header {
1395
+ @apply gap-1.5 p-4;
1396
+ }
1397
+
1398
+ .cn-sheet-footer {
1399
+ @apply gap-2 p-4;
1400
+ }
1401
+
1402
+ .cn-sheet-title {
1403
+ @apply text-foreground font-medium;
1404
+ }
1405
+
1406
+ .cn-sheet-description {
1407
+ @apply text-muted-foreground text-sm;
1408
+ }
1409
+
1410
+ /* MARK: Sidebar */
1411
+ .cn-sidebar-gap {
1412
+ @apply transition-[width] duration-200 ease-linear;
1413
+ }
1414
+
1415
+ .cn-sidebar-inner {
1416
+ @apply bg-sidebar group-data-[variant=floating]:ring-sidebar-border group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1;
1417
+ }
1418
+
1419
+ .cn-sidebar-rail {
1420
+ @apply hover:after:bg-sidebar-border;
1421
+ }
1422
+
1423
+ .cn-sidebar-inset {
1424
+ @apply bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2;
1425
+ }
1426
+
1427
+ .cn-sidebar-input {
1428
+ @apply bg-background h-8 w-full shadow-none;
1429
+ }
1430
+
1431
+ .cn-sidebar-header {
1432
+ @apply gap-2 p-2;
1433
+ }
1434
+
1435
+ .cn-sidebar-content {
1436
+ @apply no-scrollbar gap-2;
1437
+ }
1438
+
1439
+ .cn-sidebar-footer {
1440
+ @apply gap-2 p-2;
1441
+ }
1442
+
1443
+ .cn-sidebar-separator {
1444
+ @apply bg-sidebar-border mx-2;
1445
+ }
1446
+
1447
+ .cn-sidebar-group {
1448
+ @apply p-2;
1449
+ }
1450
+
1451
+ .cn-sidebar-menu {
1452
+ @apply gap-1;
1453
+ }
1454
+
1455
+ .cn-sidebar-group-content {
1456
+ @apply text-sm;
1457
+ }
1458
+
1459
+ .cn-sidebar-group-label {
1460
+ @apply text-sidebar-foreground/70 ring-sidebar-ring h-8 rounded-md px-2 text-xs font-medium transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4;
1461
+ }
1462
+
1463
+ .cn-sidebar-group-action {
1464
+ @apply text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 w-5 rounded-md p-0 focus-visible:ring-2 [&>svg]:size-4;
1465
+ }
1466
+
1467
+ .cn-sidebar-menu-button {
1468
+ @apply ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground data-active:bg-primary/10 data-active:text-sidebar-accent-foreground data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground gap-2 rounded-md p-2 text-left text-sm transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! focus-visible:ring-2 data-active:font-medium;
1469
+ }
1470
+
1471
+ .cn-sidebar-menu-button-variant-default {
1472
+ @apply hover:bg-sidebar-accent hover:text-sidebar-accent-foreground;
1473
+ }
1474
+
1475
+ .cn-sidebar-menu-button-variant-outline {
1476
+ @apply bg-background hover:bg-sidebar-accent hover:text-sidebar-accent-foreground shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))];
1477
+ }
1478
+
1479
+ .cn-sidebar-menu-button-size-default {
1480
+ @apply h-8 text-sm;
1481
+ }
1482
+
1483
+ .cn-sidebar-menu-button-size-sm {
1484
+ @apply h-7 text-xs;
1485
+ }
1486
+
1487
+ .cn-sidebar-menu-button-size-lg {
1488
+ @apply h-12 text-sm group-data-[collapsible=icon]:p-0!;
1489
+ }
1490
+
1491
+ .cn-sidebar-menu-action {
1492
+ @apply text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 aspect-square w-5 rounded-md p-0 peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 focus-visible:ring-2 [&>svg]:size-4;
1493
+ }
1494
+
1495
+ .cn-sidebar-menu-badge {
1496
+ @apply text-sidebar-foreground peer-hover/menu-button:text-sidebar-accent-foreground peer-data-active/menu-button:text-sidebar-accent-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 rounded-md px-1 text-xs font-medium peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1;
1497
+ }
1498
+
1499
+ .cn-sidebar-menu-skeleton {
1500
+ @apply h-8 gap-2 rounded-md px-2;
1501
+ }
1502
+
1503
+ .cn-sidebar-menu-skeleton-icon {
1504
+ @apply size-4 rounded-md;
1505
+ }
1506
+
1507
+ .cn-sidebar-menu-skeleton-text {
1508
+ @apply h-4;
1509
+ }
1510
+
1511
+ .cn-sidebar-menu-sub {
1512
+ @apply border-sidebar-border mx-3.5 translate-x-px gap-1 border-l px-2.5 py-0.5 group-data-[collapsible=icon]:hidden;
1513
+ }
1514
+
1515
+ .cn-sidebar-menu-sub-button {
1516
+ @apply text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground data-active:bg-primary/10 data-active:text-sidebar-accent-foreground h-7 gap-2 rounded-md px-2 focus-visible:ring-2 data-[size=md]:text-sm data-[size=sm]:text-xs [&>svg]:size-4;
1517
+ }
1518
+
1519
+ /* MARK: Skeleton */
1520
+ .cn-skeleton {
1521
+ @apply bg-muted rounded-md;
1522
+ }
1523
+
1524
+ /* MARK: Slider */
1525
+ .cn-slider {
1526
+ @apply data-[orientation=vertical]:min-h-40;
1527
+ }
1528
+
1529
+ .cn-slider-track {
1530
+ @apply bg-muted rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5;
1531
+ }
1532
+
1533
+ .cn-slider-range {
1534
+ @apply bg-primary;
1535
+ }
1536
+
1537
+ .cn-slider-thumb {
1538
+ @apply border-primary ring-ring/50 size-4 rounded-full border bg-white shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden;
1539
+ }
1540
+
1541
+ /* MARK: Sonner */
1542
+ .cn-toast {
1543
+ @apply rounded-2xl;
1544
+ }
1545
+
1546
+ /* MARK: Switch */
1547
+ .cn-switch {
1548
+ @apply data-checked:bg-primary data-unchecked:bg-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 dark:data-unchecked:bg-input/80 shrink-0 rounded-full border border-transparent shadow-xs focus-visible:ring-3 aria-invalid:ring-3 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px];
1549
+ }
1550
+
1551
+ .cn-switch-thumb {
1552
+ @apply bg-background dark:data-unchecked:bg-foreground dark:data-checked:bg-primary-foreground rounded-full group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0;
1553
+ }
1554
+
1555
+ /* MARK: Table */
1556
+ .cn-table-container {
1557
+ @apply border-border/60 bg-muted/20 relative w-full overflow-x-auto rounded-xl border p-2;
1558
+ }
1559
+
1560
+ .cn-table {
1561
+ @apply w-full caption-bottom text-sm;
1562
+ }
1563
+
1564
+ .cn-table-header {
1565
+ @apply [&_tr]:border-b;
1566
+ }
1567
+
1568
+ .cn-table-body {
1569
+ @apply [&_tr:last-child]:border-0;
1570
+ }
1571
+
1572
+ .cn-table-footer {
1573
+ @apply bg-muted/50 border-t font-medium [&>tr]:last:border-b-0;
1574
+ }
1575
+
1576
+ .cn-table-row {
1577
+ @apply hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors;
1578
+ }
1579
+
1580
+ .cn-table-head {
1581
+ @apply text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0;
1582
+ }
1583
+
1584
+ .cn-table-cell {
1585
+ @apply p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0;
1586
+ }
1587
+
1588
+ .cn-table-caption {
1589
+ @apply text-muted-foreground mt-4 text-sm;
1590
+ }
1591
+
1592
+ /* MARK: Tabs */
1593
+ .cn-tabs {
1594
+ @apply gap-2;
1595
+ }
1596
+
1597
+ .cn-tabs-list {
1598
+ @apply rounded-lg p-[3px] group-data-horizontal/tabs:h-9 data-[variant=line]:rounded-none;
1599
+ }
1600
+
1601
+ .cn-tabs-trigger {
1602
+ @apply gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg:not([class*='size-'])]:size-4;
1603
+ }
1604
+
1605
+ .cn-tabs-content {
1606
+ @apply text-sm;
1607
+ }
1608
+
1609
+ /* MARK: Textarea */
1610
+ .cn-textarea {
1611
+ @apply border-input dark:bg-input/30 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-md border bg-transparent px-2.5 py-2 text-base shadow-xs transition-[color,box-shadow] focus-visible:ring-3 aria-invalid:ring-3 md:text-sm;
1612
+ }
1613
+
1614
+ /* MARK: Json Input */
1615
+ .cn-json-input-textarea {
1616
+ @apply font-mono text-sm;
1617
+ }
1618
+
1619
+ .cn-json-input-error {
1620
+ @apply mt-1.5 text-sm text-destructive;
1621
+ }
1622
+
1623
+ /* MARK: Toggle */
1624
+ .cn-toggle {
1625
+ @apply hover:text-foreground aria-pressed:bg-muted focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive gap-1 rounded-md text-sm font-medium transition-[color,box-shadow] [&_svg:not([class*='size-'])]:size-4;
1626
+ }
1627
+
1628
+ .cn-toggle-variant-default {
1629
+ @apply bg-transparent;
1630
+ }
1631
+
1632
+ .cn-toggle-variant-outline {
1633
+ @apply border-input hover:bg-muted border bg-transparent shadow-xs;
1634
+ }
1635
+
1636
+ .cn-toggle-size-default {
1637
+ @apply h-9 min-w-9 px-2;
1638
+ }
1639
+
1640
+ .cn-toggle-size-sm {
1641
+ @apply h-8 min-w-8 px-1.5;
1642
+ }
1643
+
1644
+ .cn-toggle-size-lg {
1645
+ @apply h-10 min-w-10 px-2.5;
1646
+ }
1647
+
1648
+ /* MARK: Toggle Group */
1649
+ .cn-toggle-group {
1650
+ @apply rounded-md data-[spacing=0]:data-[variant=outline]:shadow-xs;
1651
+ }
1652
+
1653
+ .cn-toggle-group-item {
1654
+ @apply data-[state=on]:bg-muted group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 group-data-[spacing=0]/toggle-group:shadow-none group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-md group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-md group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-md group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-md;
1655
+ }
1656
+
1657
+ /* MARK: Tooltip */
1658
+ .cn-tooltip-content {
1659
+ @apply data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 rounded-md px-3 py-1.5 text-xs;
1660
+ }
1661
+
1662
+ .cn-tooltip-content-logical {
1663
+ @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;
1664
+ }
1665
+
1666
+ .cn-tooltip-arrow {
1667
+ @apply size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px];
1668
+ }
1669
+
1670
+ .cn-tooltip-arrow-logical {
1671
+ @apply data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2;
1672
+ }
1673
+
1674
+ /* MARK: Input Group */
1675
+ .cn-input-group {
1676
+ @apply border-input dark:bg-input/30 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 h-9 rounded-md border shadow-xs transition-[color,box-shadow] overflow-hidden in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-3 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5;
1677
+ }
1678
+
1679
+ .cn-input-group-addon {
1680
+ @apply text-muted-foreground h-auto gap-2 py-1.5 text-sm font-medium group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4;
1681
+ }
1682
+
1683
+ .cn-input-group-addon-align-inline-start {
1684
+ @apply pl-2 has-[>button]:-ml-1 has-[>kbd]:ml-[-0.15rem];
1685
+ }
1686
+
1687
+ .cn-input-group-addon-align-inline-end {
1688
+ @apply pr-2 has-[>button]:-mr-1 has-[>kbd]:mr-[-0.15rem];
1689
+ }
1690
+
1691
+ .cn-input-group-addon-align-block-start {
1692
+ @apply px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2;
1693
+ }
1694
+
1695
+ .cn-input-group-addon-align-block-end {
1696
+ @apply px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2;
1697
+ }
1698
+
1699
+ .cn-input-group-button {
1700
+ @apply gap-2 text-sm;
1701
+ }
1702
+
1703
+ .cn-input-group-button-size-xs {
1704
+ @apply h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5;
1705
+ }
1706
+
1707
+ .cn-input-group-button-size-icon-xs {
1708
+ @apply size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0;
1709
+ }
1710
+
1711
+ .cn-input-group-button-size-icon-sm {
1712
+ @apply size-8 p-0 has-[>svg]:p-0;
1713
+ }
1714
+
1715
+ .cn-input-group-text {
1716
+ @apply text-muted-foreground gap-2 text-sm [&_svg:not([class*='size-'])]:size-4;
1717
+ }
1718
+
1719
+ .cn-input-group-input {
1720
+ @apply rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent;
1721
+ }
1722
+
1723
+ .cn-input-group-textarea {
1724
+ @apply rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent;
1725
+ }
1726
+
1727
+ /* MARK: Number Input */
1728
+ .cn-number-input-controls-addon {
1729
+ @apply py-0 pr-0;
1730
+ }
1731
+
1732
+ .cn-number-input-controls {
1733
+ @apply border-input flex w-8 shrink-0 flex-col border-l;
1734
+ }
1735
+
1736
+ .cn-number-input-control {
1737
+ @apply hover:bg-accent hover:text-accent-foreground flex flex-1 items-center justify-center text-muted-foreground transition-colors;
1738
+ }
1739
+
1740
+ /* MARK: File Input */
1741
+ .cn-file-input-wrapper {
1742
+ @apply w-full space-y-2 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50;
1743
+ }
1744
+
1745
+ .cn-file-input-dropzone {
1746
+ @apply border-input bg-input/20 dark:bg-input/30 hover:bg-input/30 dark:hover:bg-input/50 focus-within:border-ring focus-within:ring-ring/50 relative flex min-h-[9rem] w-full cursor-pointer flex-col items-center justify-center rounded-xl border-2 border-dashed px-4 py-6 text-sm transition-colors outline-none focus-within:ring-3 data-[dragging=true]:border-ring data-[dragging=true]:bg-input/30;
1747
+ }
1748
+
1749
+ .cn-file-input-hidden-input {
1750
+ @apply absolute inset-0 cursor-pointer opacity-0;
1751
+ }
1752
+
1753
+ .cn-file-input-prompt {
1754
+ @apply text-muted-foreground flex flex-col items-center gap-2 text-center;
1755
+ }
1756
+
1757
+ .cn-file-input-icon {
1758
+ @apply size-8;
1759
+ }
1760
+
1761
+ .cn-file-input-title {
1762
+ @apply text-sm;
1763
+ }
1764
+
1765
+ .cn-file-input-accept {
1766
+ @apply text-xs opacity-70;
1767
+ }
1768
+
1769
+ .cn-file-input-list {
1770
+ @apply space-y-2;
1771
+ }
1772
+
1773
+ .cn-file-input-item {
1774
+ @apply border-input bg-input/20 dark:bg-input/30 flex items-center justify-between rounded-xl border px-4 py-2 text-sm;
1775
+ }
1776
+
1777
+ .cn-file-input-item-left {
1778
+ @apply flex min-w-0 items-center gap-2;
1779
+ }
1780
+
1781
+ .cn-file-input-item-icon {
1782
+ @apply text-muted-foreground size-4 shrink-0;
1783
+ }
1784
+
1785
+ .cn-file-input-item-name {
1786
+ @apply truncate;
1787
+ }
1788
+
1789
+ .cn-file-input-item-size {
1790
+ @apply text-muted-foreground text-xs tabular-nums;
1791
+ }
1792
+
1793
+ .cn-file-input-item-remove {
1794
+ @apply hover:bg-accent transition-colors;
1795
+ }
1796
+
1797
+ /* MARK: Animated Tabs */
1798
+ .cn-animated-tabs-list {
1799
+ @apply gap-1 border-b border-border/60;
1800
+ }
1801
+
1802
+ .cn-animated-tabs-underline {
1803
+ @apply bottom-[-1px] left-0 z-20 h-0.5 bg-primary;
1804
+ }
1805
+
1806
+ .cn-animated-tabs-tab {
1807
+ @apply cursor-pointer px-3 py-2.5 text-sm font-medium relative z-10 transition-colors duration-200 hover:text-foreground;
1808
+ }
1809
+
1810
+ .cn-animated-tabs-tab-active {
1811
+ @apply text-foreground;
1812
+ }
1813
+
1814
+ .cn-animated-tabs-tab-inactive {
1815
+ @apply text-muted-foreground;
1816
+ }
1817
+
1818
+ .cn-animated-tabs-more {
1819
+ @apply gap-1;
1820
+ }
1821
+
1822
+ .cn-animated-tabs-dropdown-item {
1823
+ @apply cursor-pointer;
1824
+ }
1825
+
1826
+ .cn-animated-tabs-dropdown-item-active {
1827
+ @apply bg-accent font-medium;
1828
+ }
1829
+
1830
+ /* MARK: Color Input */
1831
+ .cn-color-input-eye-dropper {
1832
+ @apply border-border/60 bg-muted/20 text-muted-foreground hover:bg-muted/60 hover:text-foreground min-h-[unset] min-w-[unset] rounded-lg border transition-colors;
1833
+ }
1834
+
1835
+ .cn-color-input-popover {
1836
+ @apply border-border/60 bg-muted/20 w-auto min-w-0 rounded-xl border p-2.5 shadow-none ring-0;
1837
+ }
1838
+
1839
+ /* MARK: Color Picker */
1840
+ .cn-color-picker {
1841
+ @apply border-border/60 bg-muted/20 rounded-xl border p-3;
1842
+ }
1843
+
1844
+ .cn-color-picker-saturation {
1845
+ @apply border-border/60 rounded-xl border;
1846
+ }
1847
+
1848
+ .cn-color-picker-thumb {
1849
+ @apply border-border/60 rounded-full border;
1850
+ }
1851
+
1852
+ .cn-color-picker-slider {
1853
+ @apply bg-muted/30 border-border/60 rounded-xl border;
1854
+ }
1855
+
1856
+ .cn-color-picker-slider-thumb {
1857
+ @apply bg-background border-border/60 rounded-full border;
1858
+ }
1859
+
1860
+ .cn-color-picker-alpha-bg {
1861
+ @apply rounded-xl opacity-30;
1862
+ }
1863
+
1864
+ .cn-color-picker-swatch {
1865
+ @apply ring-offset-background hover:bg-muted/60 cursor-pointer transition-colors focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2;
1866
+ }
1867
+
1868
+ /* MARK: Resizable */
1869
+ .cn-resizable-handle {
1870
+ @apply bg-border/70 hover:bg-border focus-visible:ring-ring relative flex w-px items-center justify-center transition-colors after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-3 focus-visible:ring-offset-1 focus-visible:outline-hidden data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:translate-x-0 data-[panel-group-direction=vertical]:after:-translate-y-1/2;
1871
+ }
1872
+
1873
+ .cn-resizable-handle[data-panel-group-direction='vertical']
1874
+ > .cn-resizable-handle-icon {
1875
+ @apply rotate-90;
1876
+ }
1877
+
1878
+ /* MARK: Spoiler */
1879
+ .cn-spoiler {
1880
+ @apply border-border/60 bg-muted/20 rounded-xl border p-3;
1881
+ }
1882
+
1883
+ .cn-spoiler-content {
1884
+ @apply overflow-hidden transition-all duration-300;
1885
+ }
1886
+
1887
+ .cn-spoiler-fade {
1888
+ @apply h-16 bg-gradient-to-t from-background to-transparent;
1889
+ }
1890
+
1891
+ /* MARK: Stepper */
1892
+ .cn-step-indicator {
1893
+ @apply border-border/60 bg-muted/20 text-muted-foreground flex size-8 items-center justify-center rounded-full border-2 text-sm font-semibold transition-colors;
1894
+ }
1895
+
1896
+ .cn-step-indicator[data-state='completed'] {
1897
+ @apply border-primary bg-primary text-primary-foreground;
1898
+ }
1899
+
1900
+ .cn-step-indicator[data-state='active'] {
1901
+ @apply border-primary bg-background text-primary;
1902
+ }
1903
+
1904
+ .cn-step-label {
1905
+ @apply text-muted-foreground text-sm font-semibold;
1906
+ }
1907
+
1908
+ .cn-step[data-state='active'] .cn-step-label {
1909
+ @apply text-foreground;
1910
+ }
1911
+
1912
+ .cn-step[data-state='completed'] .cn-step-label {
1913
+ @apply text-foreground;
1914
+ }
1915
+
1916
+ .cn-step-description {
1917
+ @apply text-muted-foreground text-xs;
1918
+ }
1919
+
1920
+ .cn-step-connector {
1921
+ @apply border-border/60 mx-4 flex-1 border-t-2;
1922
+ }
1923
+
1924
+ .cn-step-connector[data-state='completed'] {
1925
+ @apply border-primary;
1926
+ }
1927
+
1928
+ /* MARK: Table Of Contents */
1929
+ .cn-table-of-contents {
1930
+ @apply border-border/60 bg-muted/20 rounded-xl border p-2;
1931
+ }
1932
+
1933
+ .cn-table-of-contents-item {
1934
+ @apply text-muted-foreground hover:bg-muted/60 hover:text-foreground data-[active=true]:border-primary data-[active=true]:text-primary data-[active=true]:font-medium rounded-lg border-l-2 border-transparent px-2 text-left transition-colors;
1935
+ }
1936
+
1937
+ .cn-table-of-contents-item[data-size='xs'] {
1938
+ @apply py-1 text-xs;
1939
+ }
1940
+
1941
+ .cn-table-of-contents-item[data-size='sm'] {
1942
+ @apply py-1.5 text-sm;
1943
+ }
1944
+
1945
+ .cn-table-of-contents-item[data-size='md'] {
1946
+ @apply py-2 text-sm;
1947
+ }
1948
+
1949
+ .cn-table-of-contents-item[data-size='lg'] {
1950
+ @apply py-2 text-base;
1951
+ }
1952
+
1953
+ .cn-table-of-contents-item[data-size='xl'] {
1954
+ @apply py-2.5 text-lg;
1955
+ }
1956
+
1957
+ /* MARK: Timeline */
1958
+ .cn-timeline {
1959
+ @apply border-border/60 border-l;
1960
+ }
1961
+
1962
+ .cn-timeline-item {
1963
+ @apply mb-8 ml-6 last:mb-0;
1964
+ }
1965
+
1966
+ .cn-timeline-dot {
1967
+ @apply bg-background absolute -left-3 flex size-6 items-center justify-center rounded-full border transition-colors;
1968
+ }
1969
+
1970
+ .cn-timeline-dot[data-variant='default'] {
1971
+ @apply border-border/60 bg-muted/20;
1972
+ }
1973
+
1974
+ .cn-timeline-dot[data-variant='primary'] {
1975
+ @apply border-primary/60 bg-primary/10;
1976
+ }
1977
+
1978
+ .cn-timeline-dot[data-variant='secondary'] {
1979
+ @apply border-border/60 bg-secondary/20;
1980
+ }
1981
+
1982
+ .cn-timeline-content {
1983
+ @apply mb-4 space-y-1.5;
1984
+ }
1985
+
1986
+ .cn-timeline-title {
1987
+ @apply text-foreground text-base font-semibold;
1988
+ }
1989
+
1990
+ .cn-timeline-description {
1991
+ @apply text-muted-foreground text-sm;
1992
+ }
1993
+
1994
+ .cn-timeline-time {
1995
+ @apply text-muted-foreground block text-xs uppercase tracking-wide;
1996
+ }
1997
+
1998
+ /* MARK: Color Swatch */
1999
+ .cn-color-swatch {
2000
+ @apply border-border/60 bg-muted/20 border;
2001
+ }
2002
+
2003
+ .cn-color-swatch-shadow {
2004
+ @apply absolute inset-0 block rounded-[inherit] shadow-[inset_0_0_0_1px_rgba(0,0,0,0.12)];
2005
+ }
2006
+
2007
+ /* MARK: Angle Slider */
2008
+ .cn-angle-slider-inner {
2009
+ @apply border-border/60 bg-background/70 rounded-full border;
2010
+ }
2011
+
2012
+ .cn-angle-slider-thumb {
2013
+ @apply bg-primary border-background rounded-full border-2 shadow-md;
2014
+ }
2015
+
2016
+ /* MARK: Floating Indicator */
2017
+ .cn-floating-indicator {
2018
+ @apply border-border/60 bg-muted/20 rounded-xl border;
2019
+ }
2020
+
2021
+ /* MARK: Semi Circle Progress */
2022
+ .cn-semi-circle-progress {
2023
+ @apply border-border/60 bg-muted/20 gap-3 rounded-xl border p-3;
2024
+ }
2025
+
2026
+ .cn-semi-circle-progress-label {
2027
+ @apply text-sm font-semibold;
2028
+ }
2029
+
2030
+ /* MARK: Tree */
2031
+ .cn-tree {
2032
+ @apply m-0 list-none space-y-1 p-0;
2033
+ }
2034
+
2035
+ .cn-tree-node-button {
2036
+ @apply text-muted-foreground hover:bg-muted/60 hover:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 data-[selected=true]:border-border/60 data-[selected=true]:bg-muted/70 data-[selected=true]:text-foreground flex w-full items-center gap-2 rounded-lg border border-transparent bg-transparent py-1.5 pr-2 text-left text-sm shadow-none outline-none transition-colors focus-visible:ring-2;
2037
+ }
2038
+
2039
+ /* MARK: Data Table */
2040
+ .cn-data-table {
2041
+ @apply w-full;
2042
+ }
2043
+
2044
+ .cn-data-table-action-button {
2045
+ @apply h-8 w-8 p-0 opacity-0 transition-opacity;
2046
+ }
2047
+
2048
+ .cn-data-table-column-header {
2049
+ @apply gap-2;
2050
+ }
2051
+
2052
+ .cn-data-table-view-options-trigger {
2053
+ @apply h-8;
2054
+ }
2055
+
2056
+ .cn-data-table-pagination {
2057
+ @apply gap-4 px-2 sm:items-center sm:justify-between;
2058
+ }
2059
+
2060
+ .cn-data-table-pagination-left {
2061
+ @apply gap-4;
2062
+ }
2063
+
2064
+ .cn-data-table-pagination-summary {
2065
+ @apply text-sm;
2066
+ }
2067
+
2068
+ .cn-data-table-pagination-size {
2069
+ @apply gap-2;
2070
+ }
2071
+
2072
+ .cn-data-table-pagination-size-label {
2073
+ @apply text-sm;
2074
+ }
2075
+
2076
+ .cn-data-table-pagination-size-trigger {
2077
+ @apply h-8;
2078
+ }
2079
+
2080
+ /* MARK: Display Table */
2081
+ .cn-display-table-container {
2082
+ @apply border-border/60 bg-muted/20 overflow-hidden rounded-xl border;
2083
+ }
2084
+
2085
+ .cn-display-table-container[data-border='false'] {
2086
+ @apply border-transparent;
2087
+ }
2088
+
2089
+ .cn-display-table-container[data-sticky-header='true'] {
2090
+ @apply [&_thead]:sticky [&_thead]:top-[var(--sticky-offset,0px)] [&_thead]:z-10 [&_thead]:bg-background [&_thead]:shadow-[0_1px_0_0_hsl(var(--border))];
2091
+ }
2092
+
2093
+ .cn-display-table-scroll {
2094
+ @apply relative w-full overflow-auto;
2095
+ }
2096
+
2097
+ .cn-display-table {
2098
+ @apply w-full caption-bottom text-sm;
2099
+ }
2100
+
2101
+ .cn-display-table[data-variant='vertical'] {
2102
+ @apply table-fixed [&_tbody_th]:bg-primary/10;
2103
+ }
2104
+
2105
+ .cn-display-table[data-striped='true'][data-variant='horizontal'] {
2106
+ @apply [&_tbody_tr:nth-child(even)]:bg-muted/30;
2107
+ }
2108
+
2109
+ .cn-display-table[data-striped='true'][data-variant='horizontal'][data-stripe-inverted='true'] {
2110
+ @apply [&_tbody_tr:nth-child(odd)]:bg-muted/30 [&_tbody_tr:nth-child(even)]:bg-transparent;
2111
+ }
2112
+
2113
+ .cn-display-table[data-hover='true'] {
2114
+ @apply [&_tbody_tr:hover]:bg-muted/50;
2115
+ }
2116
+
2117
+ .cn-display-table[data-with-row-borders='true'] {
2118
+ @apply [&_tr]:border-b [&_tr]:border-border;
2119
+ }
2120
+
2121
+ .cn-display-table[data-with-column-borders='true'] {
2122
+ @apply [&_th]:border-r [&_td]:border-r [&_th]:border-border [&_td]:border-border [&_th:last-child]:border-r-0 [&_td:last-child]:border-r-0;
2123
+ }
2124
+
2125
+ .cn-display-table-thead {
2126
+ @apply border-b border-border bg-primary/10;
2127
+ }
2128
+
2129
+ .cn-display-table-tbody {
2130
+ @apply [&_tr:last-child]:border-0;
2131
+ }
2132
+
2133
+ .cn-display-table-tfoot {
2134
+ @apply border-t border-border bg-muted/50 font-medium [&_tr]:last:border-b-0;
2135
+ }
2136
+
2137
+ .cn-display-table-tr {
2138
+ @apply transition-colors data-[state=selected]:bg-muted;
2139
+ }
2140
+
2141
+ .cn-display-table-th {
2142
+ @apply text-foreground px-4 py-2 text-left align-middle text-sm font-semibold [&:has([role=checkbox])]:pr-0;
2143
+ }
2144
+
2145
+ .cn-display-table-td {
2146
+ @apply px-4 py-2 align-middle text-sm [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px];
2147
+ }
2148
+
2149
+ .cn-display-table-caption {
2150
+ @apply text-muted-foreground mt-4 text-sm;
2151
+ }
2152
+
2153
+ /* MARK: Selector */
2154
+ .cn-selector-modal-header {
2155
+ @apply border-border shrink-0 border-b px-6 py-4;
2156
+ }
2157
+
2158
+ .cn-selector-modal-body {
2159
+ @apply p-4;
2160
+ }
2161
+
2162
+ .cn-selector-modal-footer {
2163
+ @apply border-border shrink-0 flex items-center justify-end gap-2 border-t px-6 py-4;
2164
+ }
2165
+
2166
+ .cn-selector-selected-bar {
2167
+ @apply bg-background sticky top-[-18px] z-10 -mx-4 -mt-4 flex flex-wrap items-center gap-2 px-4 pt-4 pb-2;
2168
+ }
2169
+
2170
+ .cn-selector-selected-bar-label {
2171
+ @apply text-muted-foreground text-sm;
2172
+ }
2173
+
2174
+ /* MARK: Locale Input */
2175
+ .cn-locale-input {
2176
+ @apply space-y-2;
2177
+ }
2178
+
2179
+ .cn-locale-input-toggle {
2180
+ @apply text-muted-foreground hover:text-foreground hover:bg-accent absolute right-2 top-1/2 flex size-7 -translate-y-1/2 items-center justify-center rounded-[var(--radius-md)] transition-colors disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50;
2181
+ }
2182
+
2183
+ .cn-locale-input-toggle-icon {
2184
+ @apply text-muted-foreground hover:text-foreground hover:bg-accent flex size-7 shrink-0 items-center justify-center rounded-[var(--radius-md)] transition-colors disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50;
2185
+ }
2186
+
2187
+ .cn-locale-input-toggle-textarea {
2188
+ @apply text-muted-foreground hover:text-foreground hover:bg-accent absolute right-2 top-2 flex size-7 items-center justify-center rounded-[var(--radius-md)] transition-colors disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50;
2189
+ }
2190
+
2191
+ .cn-locale-input-error {
2192
+ @apply text-destructive text-sm;
2193
+ }
2194
+
2195
+ .cn-locale-input-expanded {
2196
+ @apply border-border mt-3 space-y-3 border-l-2 pl-4;
2197
+ }
2198
+
2199
+ .cn-locale-input-expanded-rich {
2200
+ @apply border-border mt-4 space-y-4 border-l-2 pl-4;
2201
+ }
2202
+
2203
+ .cn-locale-input-fullscreen-close {
2204
+ @apply border-border bg-background/80 text-foreground hover:bg-accent absolute top-4 right-4 z-50 flex size-10 items-center justify-center rounded-[var(--radius-md)] border transition-colors backdrop-blur-sm;
2205
+ }
2206
+
2207
+ /* MARK: Entity */
2208
+ .cn-entity-drawer-header {
2209
+ @apply border-border bg-background border-b px-6 py-4;
2210
+ }
2211
+
2212
+ .cn-entity-drawer-body {
2213
+ @apply bg-background flex-1 overflow-y-auto px-6 py-4;
2214
+ }
2215
+
2216
+ .cn-entity-drawer-footer {
2217
+ @apply border-border bg-background flex flex-wrap items-center justify-start gap-2 border-t px-6 py-4;
2218
+ }
2219
+
2220
+ .cn-entity-loading-card {
2221
+ @apply border-border space-y-3 rounded-xl border p-4;
2222
+ }
2223
+
2224
+ .cn-entity-loading-table {
2225
+ @apply rounded-xl;
2226
+ }
2227
+
2228
+ .cn-entity-empty-state {
2229
+ @apply border-border/60 bg-muted/20 flex flex-col items-center justify-center gap-6 rounded-xl border px-6 py-14;
2230
+ }
2231
+
2232
+ .cn-entity-view-toggle {
2233
+ @apply border-input bg-muted shadow-xs rounded-md border overflow-hidden;
2234
+ }
2235
+
2236
+ .cn-selector-view-toggle {
2237
+ @apply border-input bg-muted shadow-xs rounded-md border overflow-hidden;
2238
+ }
2239
+
2240
+ .cn-entity-view-toggle [data-slot='toggle-group-item'][data-state='on'] {
2241
+ @apply bg-background! text-foreground! shadow-xs!;
2242
+ }
2243
+
2244
+ .cn-entity-view-toggle [data-slot='toggle-group-item'][aria-pressed='true'] {
2245
+ @apply bg-background! text-foreground! shadow-xs!;
2246
+ }
2247
+
2248
+ .cn-selector-view-toggle [data-slot='toggle-group-item'][data-state='on'] {
2249
+ @apply bg-background! text-foreground! shadow-xs!;
2250
+ }
2251
+
2252
+ .cn-selector-view-toggle
2253
+ [data-slot='toggle-group-item'][aria-pressed='true'] {
2254
+ @apply bg-background! text-foreground! shadow-xs!;
2255
+ }
2256
+
2257
+ .cn-entity-view-toggle [data-slot='toggle-group-item'][data-state='off'] {
2258
+ @apply bg-transparent! text-muted-foreground;
2259
+ }
2260
+
2261
+ .cn-selector-view-toggle [data-slot='toggle-group-item'][data-state='off'] {
2262
+ @apply bg-transparent! text-muted-foreground;
2263
+ }
2264
+
2265
+ .cn-entity-page-loading {
2266
+ @apply border-border bg-background rounded-xl border;
2267
+ }
2268
+
2269
+ .cn-entity-detail-header-tab {
2270
+ @apply hover:bg-muted/60 rounded-t-xl;
2271
+ }
2272
+
2273
+ /* MARK: App */
2274
+ .cn-app-header-actions-account-trigger {
2275
+ @apply hover:bg-accent/70 data-[popup-open]:bg-accent data-[popup-open]:text-accent-foreground rounded-xl;
2276
+ }
2277
+
2278
+ .cn-app-sidebar-item {
2279
+ @apply rounded-[var(--radius-md)] hover:bg-primary/10 data-[active=true]:bg-primary/10;
2280
+ }
2281
+
2282
+ .cn-app-sidebar-active-indicator {
2283
+ @apply bg-primary rounded-full;
2284
+ }
2285
+
2286
+ .cn-spotlight-kbd {
2287
+ @apply border-border bg-muted rounded-[var(--radius-sm)] border;
2288
+ }
2289
+
2290
+ /* MARK: Shell */
2291
+ .cn-shell-header {
2292
+ @apply flex h-16 shrink-0 items-center justify-between gap-2 border-b px-4;
2293
+ }
2294
+
2295
+ /* MARK: Layout */
2296
+ .cn-page-title {
2297
+ @apply border-border border-b;
2298
+ }
2299
+
2300
+ .cn-entity-detail-header-underline {
2301
+ @apply bottom-0 left-0 z-20 h-0.5 bg-primary;
2302
+ }
2303
+
2304
+ /* MARK: Rich Text */
2305
+ .cn-rich-text-display img {
2306
+ @apply shadow-sm rounded-[var(--radius-md)];
2307
+ }
2308
+
2309
+ .cn-rich-text-editor {
2310
+ @apply border-input bg-background rounded-xl border;
2311
+ }
2312
+
2313
+ .cn-rich-text-editor-toolbar {
2314
+ @apply bg-muted/50 border-border border-b;
2315
+ }
2316
+
2317
+ .cn-rich-text-editor-control {
2318
+ @apply hover:bg-accent hover:text-accent-foreground data-[active=true]:bg-accent data-[active=true]:text-accent-foreground rounded-[var(--radius-sm)];
2319
+ }
2320
+ }