@yuva-devlab/ui 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/dist/common.css +158 -0
  2. package/dist/components/accordion/accordion.css +49 -0
  3. package/dist/components/alert/alert.css +41 -0
  4. package/dist/components/alert-dialog/alert-dialog.css +78 -0
  5. package/dist/components/avatar/avatar.css +26 -0
  6. package/dist/components/badge/badge.css +76 -0
  7. package/dist/components/breadcrumb/breadcrumb.css +63 -0
  8. package/dist/components/button/button.css +106 -0
  9. package/dist/components/card/card.css +30 -0
  10. package/dist/components/carousel/carousel.css +67 -0
  11. package/dist/components/chart/chart.css +38 -0
  12. package/dist/components/checkbox/checkbox.css +27 -0
  13. package/dist/components/command/command.css +125 -0
  14. package/dist/components/context-menu/context-menu.css +19 -0
  15. package/dist/components/date-picker/date-picker.css +30 -0
  16. package/dist/components/dialog/dialog.css +78 -0
  17. package/dist/components/drawer/drawer.css +64 -0
  18. package/dist/components/dropdown-menu/dropdown-menu.css +82 -0
  19. package/dist/components/form/form.css +17 -0
  20. package/dist/components/hover-card/hover-card.css +23 -0
  21. package/dist/components/input/input.css +89 -0
  22. package/dist/components/input-otp/input-otp.css +70 -0
  23. package/dist/components/label/label.css +9 -0
  24. package/dist/components/loading-state/loading-state.css +26 -0
  25. package/dist/components/menubar/menubar.css +36 -0
  26. package/dist/components/navigation-menu/navigation-menu.css +137 -0
  27. package/dist/components/pagination/pagination.css +43 -0
  28. package/dist/components/panel/panel.css +24 -0
  29. package/dist/components/popover/popover.css +17 -0
  30. package/dist/components/progress/progress.css +15 -0
  31. package/dist/components/radio-group/radio-group.css +37 -0
  32. package/dist/components/resizable/resizable.css +67 -0
  33. package/dist/components/scroll-area/scroll-area.css +32 -0
  34. package/dist/components/searchable-select/searchable-select.css +128 -0
  35. package/dist/components/select/select.css +97 -0
  36. package/dist/components/separator/separator.css +14 -0
  37. package/dist/components/sheet/sheet.css +83 -0
  38. package/dist/components/sidebar/sidebar.css +18 -0
  39. package/dist/components/skeleton/skeleton.css +5 -0
  40. package/dist/components/slider/slider.css +37 -0
  41. package/dist/components/sonner/sonner.css +25 -0
  42. package/dist/components/status-badge/status-badge.css +53 -0
  43. package/dist/components/status-chip/status-chip.css +44 -0
  44. package/dist/components/switch/switch.css +45 -0
  45. package/dist/components/table/table.css +46 -0
  46. package/dist/components/tabs/tabs.css +46 -0
  47. package/dist/components/textarea/textarea.css +30 -0
  48. package/dist/components/toggle/toggle.css +91 -0
  49. package/dist/components/tooltip/tooltip.css +17 -0
  50. package/dist/components.css +2523 -0
  51. package/dist/index.cjs +1445 -1833
  52. package/dist/index.cjs.map +1 -1
  53. package/dist/index.d.cts +1786 -202
  54. package/dist/index.d.ts +1786 -202
  55. package/dist/index.js +1440 -1833
  56. package/dist/index.js.map +1 -1
  57. package/dist/preset.css +6 -157
  58. package/dist/root.css +1 -0
  59. package/dist/styles/common.css +158 -0
  60. package/dist/styles/components.css +2523 -0
  61. package/dist/styles/preset.css +6 -157
  62. package/dist/styles/root.css +1 -0
  63. package/dist/styles/styles.css +17 -5
  64. package/dist/styles/themes/finai.css +1 -114
  65. package/dist/styles/themes/orchestrai.css +1 -75
  66. package/dist/styles.css +17 -5
  67. package/dist/themes/finai.css +1 -114
  68. package/dist/themes/orchestrai.css +1 -75
  69. package/package.json +10 -5
@@ -0,0 +1,2523 @@
1
+ /**
2
+ * @file components.css
3
+ * @description Bundled modular dl-* component styles wrapped in @layer dl-components.
4
+ * Pure CSS — zero Tailwind dependency. Scoped in @layer so consumer utilities take precedence.
5
+ */
6
+
7
+ @layer dl-components {
8
+ /* ── accordion ── */
9
+ .dl-accordion-item {
10
+ border-bottom: 1px solid var(--border);
11
+ }
12
+ .dl-accordion-header {
13
+ display: flex;
14
+ }
15
+ .dl-accordion-trigger {
16
+ display: flex;
17
+ flex: 1;
18
+ width: 100%;
19
+ align-items: center;
20
+ justify-content: space-between;
21
+ padding: 1rem 0;
22
+ font-size: 0.875rem;
23
+ font-weight: 500;
24
+ cursor: pointer;
25
+ background: transparent;
26
+ border: none;
27
+ text-align: left;
28
+ font-family: inherit;
29
+ transition: color 0.15s ease;
30
+ }
31
+ .dl-accordion-trigger:hover {
32
+ text-decoration: underline;
33
+ }
34
+ .dl-accordion-trigger svg {
35
+ height: 1rem;
36
+ width: 1rem;
37
+ flex-shrink: 0;
38
+ color: var(--muted-foreground);
39
+ transition: transform 0.2s ease;
40
+ }
41
+ .dl-accordion-trigger[data-state="open"] svg {
42
+ transform: rotate(180deg);
43
+ }
44
+ .dl-accordion-content {
45
+ overflow: hidden;
46
+ font-size: 0.875rem;
47
+ }
48
+ .dl-accordion-content[data-state="open"] {
49
+ animation: dl-accordion-down 200ms ease;
50
+ }
51
+ .dl-accordion-content[data-state="closed"] {
52
+ animation: dl-accordion-up 200ms ease;
53
+ }
54
+ .dl-accordion-content__inner {
55
+ padding-bottom: 1rem;
56
+ padding-top: 0;
57
+ }
58
+
59
+ /* ── alert ── */
60
+ .dl-alert {
61
+ position: relative;
62
+ width: 100%;
63
+ border-radius: var(--radius-lg, 0.5rem);
64
+ border: 1px solid var(--border);
65
+ padding: 1rem;
66
+ font-size: 0.875rem;
67
+ display: grid;
68
+ grid-template-columns: auto 1fr;
69
+ gap: 0 0.75rem;
70
+ align-items: start;
71
+ }
72
+ .dl-alert svg {
73
+ width: 1rem;
74
+ height: 1rem;
75
+ margin-top: 0.125rem;
76
+ }
77
+ .dl-alert--default {
78
+ background-color: var(--background);
79
+ color: var(--foreground);
80
+ }
81
+ .dl-alert--destructive {
82
+ border-color: color-mix(in oklch, var(--destructive) 50%, transparent);
83
+ color: var(--destructive);
84
+ background-color: color-mix(
85
+ in oklch,
86
+ var(--destructive) 6%,
87
+ var(--background)
88
+ );
89
+ }
90
+ .dl-alert__title {
91
+ font-weight: 600;
92
+ line-height: 1;
93
+ letter-spacing: -0.01em;
94
+ margin-bottom: 0.25rem;
95
+ }
96
+ .dl-alert__desc {
97
+ font-size: 0.875rem;
98
+ color: var(--muted-foreground);
99
+ line-height: 1.5;
100
+ }
101
+
102
+ /* ── alert-dialog ── */
103
+ .dl-alert-dialog-overlay {
104
+ position: fixed;
105
+ inset: 0;
106
+ z-index: 50;
107
+ background-color: rgb(0 0 0 / 0.8);
108
+ }
109
+
110
+ .dl-alert-dialog-overlay[data-state="open"] {
111
+ animation: dl-fade-in 150ms ease;
112
+ }
113
+
114
+ .dl-alert-dialog-overlay[data-state="closed"] {
115
+ animation: dl-fade-out 150ms ease;
116
+ }
117
+
118
+ .dl-alert-dialog-content {
119
+ position: fixed;
120
+ left: 50%;
121
+ top: 50%;
122
+ transform: translate(-50%, -50%);
123
+ z-index: 50;
124
+ display: grid;
125
+ width: 100%;
126
+ max-width: 32rem;
127
+ gap: 1rem;
128
+ border: 1px solid var(--border);
129
+ background-color: var(--background);
130
+ padding: 1.5rem;
131
+ box-shadow: 0 8px 32px rgb(0 0 0 / 0.2);
132
+ border-radius: var(--radius-lg, 0.5rem);
133
+ }
134
+
135
+ .dl-alert-dialog-content[data-state="open"] {
136
+ animation: dl-zoom-in 150ms ease;
137
+ }
138
+
139
+ .dl-alert-dialog-content[data-state="closed"] {
140
+ animation: dl-zoom-out 150ms ease;
141
+ }
142
+
143
+ .dl-alert-dialog-header {
144
+ display: flex;
145
+ flex-direction: column;
146
+ gap: 0.5rem;
147
+ text-align: center;
148
+ }
149
+
150
+ @media (min-width: 640px) {
151
+ .dl-alert-dialog-header {
152
+ text-align: left;
153
+ }
154
+ }
155
+
156
+ .dl-alert-dialog-footer {
157
+ display: flex;
158
+ flex-direction: column-reverse;
159
+ gap: 0.5rem;
160
+ }
161
+
162
+ @media (min-width: 640px) {
163
+ .dl-alert-dialog-footer {
164
+ flex-direction: row;
165
+ justify-content: flex-end;
166
+ }
167
+ }
168
+
169
+ .dl-alert-dialog-title {
170
+ font-size: 1.125rem;
171
+ font-weight: 600;
172
+ line-height: 1.25;
173
+ color: var(--foreground);
174
+ }
175
+
176
+ .dl-alert-dialog-desc {
177
+ font-size: 0.875rem;
178
+ color: var(--muted-foreground);
179
+ line-height: 1.5;
180
+ }
181
+
182
+ /* ── avatar ── */
183
+ .dl-avatar {
184
+ position: relative;
185
+ display: flex;
186
+ height: 2.5rem;
187
+ width: 2.5rem;
188
+ flex-shrink: 0;
189
+ overflow: hidden;
190
+ border-radius: 9999px;
191
+ }
192
+ .dl-avatar__img {
193
+ aspect-ratio: 1;
194
+ width: 100%;
195
+ height: 100%;
196
+ object-fit: cover;
197
+ }
198
+ .dl-avatar__fallback {
199
+ display: flex;
200
+ height: 100%;
201
+ width: 100%;
202
+ align-items: center;
203
+ justify-content: center;
204
+ border-radius: 9999px;
205
+ background-color: var(--muted);
206
+ font-size: 0.875rem;
207
+ font-weight: 500;
208
+ }
209
+
210
+ /* ── badge ── */
211
+ .dl-badge {
212
+ display: inline-flex;
213
+ align-items: center;
214
+ border-radius: 0.375rem;
215
+ border: 1px solid transparent;
216
+ padding: 0.125rem 0.625rem;
217
+ font-size: 0.75rem;
218
+ font-weight: 600;
219
+ transition: background-color 0.15s ease;
220
+ }
221
+ .dl-badge--default {
222
+ background-color: var(--primary);
223
+ color: var(--primary-foreground);
224
+ box-shadow: 0 1px 2px rgb(0 0 0/0.08);
225
+ }
226
+ .dl-badge--secondary {
227
+ background-color: var(--secondary);
228
+ color: var(--secondary-foreground);
229
+ }
230
+ .dl-badge--destructive {
231
+ background-color: var(--destructive);
232
+ color: var(--destructive-foreground);
233
+ box-shadow: 0 1px 2px rgb(0 0 0/0.08);
234
+ }
235
+ .dl-badge--success {
236
+ background-color: var(--success);
237
+ color: var(--success-foreground);
238
+ }
239
+ .dl-badge--warning {
240
+ background-color: var(--warning);
241
+ color: var(--warning-foreground);
242
+ }
243
+ .dl-badge--info {
244
+ background-color: var(--info);
245
+ color: var(--info-foreground);
246
+ }
247
+ .dl-badge--outline {
248
+ color: var(--foreground);
249
+ border-color: var(--border);
250
+ }
251
+
252
+ .dl-status-badge {
253
+ display: inline-flex;
254
+ align-items: center;
255
+ gap: 0.375rem;
256
+ border-radius: 9999px;
257
+ padding: 0.25rem 0.625rem;
258
+ font-size: 0.75rem;
259
+ font-weight: 500;
260
+ }
261
+ .dl-status-badge__dot {
262
+ width: 0.5rem;
263
+ height: 0.5rem;
264
+ border-radius: 9999px;
265
+ flex-shrink: 0;
266
+ }
267
+ .dl-status-badge--success {
268
+ background-color: color-mix(in oklch, var(--success) 15%, transparent);
269
+ color: var(--success);
270
+ }
271
+ .dl-status-badge--destructive {
272
+ background-color: color-mix(in oklch, var(--destructive) 15%, transparent);
273
+ color: var(--destructive);
274
+ }
275
+ .dl-status-badge--warning {
276
+ background-color: color-mix(in oklch, var(--warning) 15%, transparent);
277
+ color: var(--warning);
278
+ }
279
+ .dl-status-badge--info {
280
+ background-color: color-mix(in oklch, var(--info) 15%, transparent);
281
+ color: var(--info);
282
+ }
283
+ .dl-status-badge--muted {
284
+ background-color: var(--muted);
285
+ color: var(--muted-foreground);
286
+ }
287
+
288
+ /* ── breadcrumb ── */
289
+ .dl-breadcrumb-list {
290
+ display: flex;
291
+ flex-wrap: wrap;
292
+ align-items: center;
293
+ gap: 0.375rem;
294
+ overflow-wrap: break-word;
295
+ font-size: 0.875rem;
296
+ color: var(--muted-foreground);
297
+ list-style: none;
298
+ margin: 0;
299
+ padding: 0;
300
+ }
301
+
302
+ @media (min-width: 640px) {
303
+ .dl-breadcrumb-list {
304
+ gap: 0.625rem;
305
+ }
306
+ }
307
+
308
+ .dl-breadcrumb-item {
309
+ display: inline-flex;
310
+ align-items: center;
311
+ gap: 0.375rem;
312
+ }
313
+
314
+ .dl-breadcrumb-link {
315
+ cursor: pointer;
316
+ color: inherit;
317
+ text-decoration: none;
318
+ transition: color 0.15s ease;
319
+ }
320
+
321
+ .dl-breadcrumb-link:hover {
322
+ color: var(--foreground);
323
+ }
324
+
325
+ .dl-breadcrumb-page {
326
+ font-weight: 400;
327
+ color: var(--foreground);
328
+ }
329
+
330
+ .dl-breadcrumb-separator {
331
+ display: inline-flex;
332
+ align-items: center;
333
+ }
334
+
335
+ .dl-breadcrumb-separator svg {
336
+ width: 0.875rem;
337
+ height: 0.875rem;
338
+ }
339
+
340
+ .dl-breadcrumb-ellipsis {
341
+ display: flex;
342
+ align-items: center;
343
+ justify-content: center;
344
+ width: 2.25rem;
345
+ height: 2.25rem;
346
+ }
347
+
348
+ .dl-breadcrumb-ellipsis svg {
349
+ width: 1rem;
350
+ height: 1rem;
351
+ }
352
+
353
+ /* ── button ── */
354
+ .dl-btn {
355
+ display: inline-flex;
356
+ align-items: center;
357
+ justify-content: center;
358
+ gap: 0.5rem;
359
+ white-space: nowrap;
360
+ border-radius: var(--radius-md, 0.375rem);
361
+ font-size: 0.875rem;
362
+ font-weight: 500;
363
+ cursor: pointer;
364
+ transition:
365
+ background-color 0.15s ease,
366
+ opacity 0.15s ease,
367
+ color 0.15s ease;
368
+ border: none;
369
+ text-decoration: none;
370
+ font-family: inherit;
371
+ }
372
+ .dl-btn:focus-visible {
373
+ outline: 2px solid var(--ring);
374
+ outline-offset: 2px;
375
+ }
376
+ .dl-btn:disabled,
377
+ .dl-btn[aria-disabled="true"] {
378
+ pointer-events: none;
379
+ opacity: 0.5;
380
+ cursor: not-allowed;
381
+ }
382
+ .dl-btn svg {
383
+ pointer-events: none;
384
+ width: 1rem;
385
+ height: 1rem;
386
+ flex-shrink: 0;
387
+ }
388
+
389
+ /* Sizes */
390
+ .dl-btn--sm {
391
+ height: 2rem;
392
+ padding: 0 0.75rem;
393
+ font-size: 0.75rem;
394
+ }
395
+ .dl-btn--md {
396
+ height: 2.25rem;
397
+ padding: 0 1rem;
398
+ }
399
+ .dl-btn--lg {
400
+ height: 2.5rem;
401
+ padding: 0 2rem;
402
+ }
403
+ .dl-btn--icon {
404
+ width: 2.25rem;
405
+ height: 2.25rem;
406
+ padding: 0;
407
+ }
408
+
409
+ /* Variants */
410
+ .dl-btn--default {
411
+ background-color: var(--primary);
412
+ color: var(--primary-foreground);
413
+ box-shadow: 0 1px 2px rgb(0 0 0/0.08);
414
+ }
415
+ .dl-btn--default:hover {
416
+ background-color: color-mix(in oklch, var(--primary) 88%, black);
417
+ }
418
+ .dl-btn--destructive {
419
+ background-color: var(--destructive);
420
+ color: var(--destructive-foreground);
421
+ box-shadow: 0 1px 2px rgb(0 0 0/0.08);
422
+ }
423
+ .dl-btn--destructive:hover {
424
+ background-color: color-mix(in oklch, var(--destructive) 88%, black);
425
+ }
426
+ .dl-btn--outline {
427
+ background-color: var(--background);
428
+ border: 1px solid var(--input);
429
+ color: var(--foreground);
430
+ box-shadow: 0 1px 2px rgb(0 0 0/0.05);
431
+ }
432
+ .dl-btn--outline:hover {
433
+ background-color: var(--accent);
434
+ color: var(--accent-foreground);
435
+ }
436
+ .dl-btn--secondary {
437
+ background-color: var(--secondary);
438
+ color: var(--secondary-foreground);
439
+ box-shadow: 0 1px 2px rgb(0 0 0/0.05);
440
+ }
441
+ .dl-btn--secondary:hover {
442
+ background-color: color-mix(in oklch, var(--secondary) 80%, black);
443
+ }
444
+ .dl-btn--ghost {
445
+ background-color: transparent;
446
+ color: var(--foreground);
447
+ }
448
+ .dl-btn--ghost:hover {
449
+ background-color: var(--accent);
450
+ color: var(--accent-foreground);
451
+ }
452
+ .dl-btn--link {
453
+ background-color: transparent;
454
+ color: var(--primary);
455
+ text-underline-offset: 4px;
456
+ }
457
+ .dl-btn--link:hover {
458
+ text-decoration: underline;
459
+ }
460
+
461
+ /* ── card ── */
462
+ .dl-card {
463
+ border-radius: var(--radius-lg, 0.5rem);
464
+ border: 1px solid var(--border);
465
+ background-color: var(--card);
466
+ color: var(--card-foreground);
467
+ box-shadow: 0 1px 3px rgb(0 0 0/0.08);
468
+ }
469
+ .dl-card__header {
470
+ display: flex;
471
+ flex-direction: column;
472
+ gap: 0.375rem;
473
+ padding: 1.5rem;
474
+ }
475
+ .dl-card__title {
476
+ font-weight: 600;
477
+ line-height: 1;
478
+ letter-spacing: -0.01em;
479
+ }
480
+ .dl-card__desc {
481
+ font-size: 0.875rem;
482
+ color: var(--muted-foreground);
483
+ }
484
+ .dl-card__content {
485
+ padding: 1.5rem;
486
+ }
487
+ .dl-card__footer {
488
+ display: flex;
489
+ align-items: center;
490
+ padding: 1.5rem;
491
+ }
492
+
493
+ /* ── carousel ── */
494
+ .dl-carousel {
495
+ position: relative;
496
+ }
497
+
498
+ .dl-carousel-viewport {
499
+ overflow: hidden;
500
+ }
501
+
502
+ .dl-carousel-track {
503
+ display: flex;
504
+ }
505
+
506
+ .dl-carousel-track--horizontal {
507
+ margin-left: -1rem;
508
+ }
509
+
510
+ .dl-carousel-track--vertical {
511
+ margin-top: -1rem;
512
+ flex-direction: column;
513
+ }
514
+
515
+ .dl-carousel-item {
516
+ min-width: 0;
517
+ flex-shrink: 0;
518
+ flex-grow: 0;
519
+ flex-basis: 100%;
520
+ }
521
+
522
+ .dl-carousel-item--horizontal {
523
+ padding-left: 1rem;
524
+ }
525
+
526
+ .dl-carousel-item--vertical {
527
+ padding-top: 1rem;
528
+ }
529
+
530
+ .dl-carousel-btn {
531
+ position: absolute;
532
+ border-radius: 9999px;
533
+ width: 2rem;
534
+ height: 2rem;
535
+ padding: 0;
536
+ }
537
+
538
+ .dl-carousel-btn--prev-horizontal {
539
+ left: -3rem;
540
+ top: 50%;
541
+ transform: translateY(-50%);
542
+ }
543
+
544
+ .dl-carousel-btn--prev-vertical {
545
+ top: -3rem;
546
+ left: 50%;
547
+ transform: translateX(-50%) rotate(90deg);
548
+ }
549
+
550
+ .dl-carousel-btn--next-horizontal {
551
+ right: -3rem;
552
+ top: 50%;
553
+ transform: translateY(-50%);
554
+ }
555
+
556
+ .dl-carousel-btn--next-vertical {
557
+ bottom: -3rem;
558
+ left: 50%;
559
+ transform: translateX(-50%) rotate(90deg);
560
+ }
561
+
562
+ /* ── chart ── */
563
+ .dl-chart-container {
564
+ display: flex;
565
+ aspect-ratio: 16 / 9;
566
+ justify-content: center;
567
+ font-size: 0.75rem;
568
+ }
569
+
570
+ .dl-chart-container .recharts-cartesian-axis-tick text {
571
+ fill: var(--muted-foreground);
572
+ }
573
+
574
+ .dl-chart-container .recharts-cartesian-grid line[stroke="#ccc"] {
575
+ stroke: color-mix(in oklch, var(--border) 50%, transparent);
576
+ }
577
+
578
+ .dl-chart-container .recharts-layer {
579
+ outline: none;
580
+ }
581
+
582
+ .dl-chart-tooltip {
583
+ display: grid;
584
+ min-width: 8rem;
585
+ align-items: flex-start;
586
+ gap: 0.375rem;
587
+ border-radius: var(--radius-lg, 0.5rem);
588
+ border: 1px solid color-mix(in oklch, var(--border) 50%, transparent);
589
+ background-color: var(--background);
590
+ padding: 0.375rem 0.625rem;
591
+ font-size: 0.75rem;
592
+ box-shadow: 0 8px 32px rgb(0 0 0 / 0.18);
593
+ }
594
+
595
+ .dl-chart-legend {
596
+ display: flex;
597
+ align-items: center;
598
+ justify-content: center;
599
+ gap: 1rem;
600
+ }
601
+
602
+ /* ── checkbox ── */
603
+ .dl-checkbox {
604
+ display: flex;
605
+ height: 1rem;
606
+ width: 1rem;
607
+ flex-shrink: 0;
608
+ align-items: center;
609
+ justify-content: center;
610
+ border-radius: var(--radius-sm, 0.25rem);
611
+ border: 1px solid var(--primary);
612
+ box-shadow: 0 1px 2px rgb(0 0 0/0.05);
613
+ cursor: pointer;
614
+ background: transparent;
615
+ padding: 0;
616
+ transition: background-color 0.15s ease;
617
+ }
618
+ .dl-checkbox:focus-visible {
619
+ outline: 2px solid var(--ring);
620
+ outline-offset: 2px;
621
+ }
622
+ .dl-checkbox:disabled {
623
+ cursor: not-allowed;
624
+ opacity: 0.5;
625
+ }
626
+ .dl-checkbox[data-state="checked"] {
627
+ background-color: var(--primary);
628
+ color: var(--primary-foreground);
629
+ }
630
+
631
+ /* ── command ── */
632
+ .dl-command {
633
+ display: flex;
634
+ flex-direction: column;
635
+ overflow: hidden;
636
+ border-radius: var(--radius-md, 0.375rem);
637
+ background-color: var(--popover);
638
+ color: var(--popover-foreground);
639
+ width: 100%;
640
+ height: 100%;
641
+ }
642
+
643
+ .dl-command-dialog-content {
644
+ overflow: hidden;
645
+ padding: 0;
646
+ }
647
+
648
+ .dl-command-input-wrapper {
649
+ display: flex;
650
+ align-items: center;
651
+ border-bottom: 1px solid var(--border);
652
+ padding-inline: 0.75rem;
653
+ }
654
+
655
+ .dl-command-input-icon {
656
+ margin-inline-end: 0.5rem;
657
+ width: 1rem;
658
+ height: 1rem;
659
+ flex-shrink: 0;
660
+ opacity: 0.5;
661
+ }
662
+
663
+ .dl-command-input {
664
+ display: flex;
665
+ height: 2.5rem;
666
+ width: 100%;
667
+ border-radius: var(--radius-md, 0.375rem);
668
+ background-color: transparent;
669
+ padding-block: 0.75rem;
670
+ font-size: 0.875rem;
671
+ color: var(--foreground);
672
+ outline: none;
673
+ border: none;
674
+ font-family: inherit;
675
+ }
676
+
677
+ .dl-command-input::placeholder {
678
+ color: var(--muted-foreground);
679
+ }
680
+
681
+ .dl-command-input:disabled {
682
+ cursor: not-allowed;
683
+ opacity: 0.5;
684
+ }
685
+
686
+ .dl-command-list {
687
+ max-height: 18.75rem;
688
+ overflow-y: auto;
689
+ overflow-x: hidden;
690
+ }
691
+
692
+ .dl-command-empty {
693
+ padding-block: 1.5rem;
694
+ text-align: center;
695
+ font-size: 0.875rem;
696
+ color: var(--muted-foreground);
697
+ }
698
+
699
+ .dl-command-group {
700
+ overflow: hidden;
701
+ padding: 0.25rem;
702
+ }
703
+
704
+ .dl-command-group [cmdk-group-heading] {
705
+ padding-inline: 0.5rem;
706
+ padding-block: 0.375rem;
707
+ font-size: 0.75rem;
708
+ font-weight: 500;
709
+ color: var(--muted-foreground);
710
+ }
711
+
712
+ .dl-command-separator {
713
+ margin-inline: -0.25rem;
714
+ height: 1px;
715
+ background-color: var(--border);
716
+ }
717
+
718
+ .dl-command-item {
719
+ position: relative;
720
+ display: flex;
721
+ cursor: default;
722
+ gap: 0.5rem;
723
+ user-select: none;
724
+ align-items: center;
725
+ border-radius: var(--radius-sm, 0.25rem);
726
+ padding: 0.375rem 0.5rem;
727
+ font-size: 0.875rem;
728
+ outline: none;
729
+ color: inherit;
730
+ transition:
731
+ background-color 0.1s ease,
732
+ color 0.1s ease;
733
+ }
734
+
735
+ .dl-command-item[data-disabled="true"] {
736
+ pointer-events: none;
737
+ opacity: 0.5;
738
+ }
739
+
740
+ .dl-command-item[data-selected="true"] {
741
+ background-color: var(--accent);
742
+ color: var(--accent-foreground);
743
+ }
744
+
745
+ .dl-command-item svg {
746
+ width: 1rem;
747
+ height: 1rem;
748
+ flex-shrink: 0;
749
+ }
750
+
751
+ .dl-command-shortcut {
752
+ margin-inline-start: auto;
753
+ font-size: 0.75rem;
754
+ letter-spacing: 0.1em;
755
+ color: var(--muted-foreground);
756
+ }
757
+
758
+ /* ── context-menu ── */
759
+ .dl-context-menu-content {
760
+ z-index: 50;
761
+ min-width: 8rem;
762
+ overflow: hidden;
763
+ border-radius: var(--radius-md, 0.375rem);
764
+ border: 1px solid var(--border);
765
+ background-color: var(--popover);
766
+ color: var(--popover-foreground);
767
+ padding: 0.25rem;
768
+ box-shadow: 0 4px 24px rgb(0 0 0 / 0.12);
769
+ }
770
+
771
+ .dl-context-menu-content[data-state="open"] {
772
+ animation: dl-fade-in 100ms ease;
773
+ }
774
+
775
+ .dl-context-menu-content[data-state="closed"] {
776
+ animation: dl-fade-out 100ms ease;
777
+ }
778
+
779
+ /* ── date-picker ── */
780
+ .dl-date-picker-trigger {
781
+ width: 100%;
782
+ justify-content: flex-start;
783
+ text-align: left;
784
+ font-weight: 400;
785
+ height: 2.25rem;
786
+ border-color: var(--border);
787
+ background-color: color-mix(in oklch, var(--secondary) 40%, transparent);
788
+ }
789
+
790
+ .dl-date-picker-trigger:hover {
791
+ background-color: color-mix(in oklch, var(--secondary) 60%, transparent);
792
+ color: var(--foreground);
793
+ }
794
+
795
+ .dl-date-picker-trigger--placeholder {
796
+ color: var(--muted-foreground);
797
+ }
798
+
799
+ .dl-date-picker-icon {
800
+ margin-inline-end: 0.5rem;
801
+ width: 1rem;
802
+ height: 1rem;
803
+ flex-shrink: 0;
804
+ }
805
+
806
+ .dl-date-picker-content {
807
+ width: auto;
808
+ padding: 0;
809
+ }
810
+
811
+ /* ── dialog ── */
812
+ .dl-dialog-overlay {
813
+ position: fixed;
814
+ inset: 0;
815
+ z-index: 50;
816
+ background-color: rgb(0 0 0 / 0.75);
817
+ }
818
+ .dl-dialog-overlay[data-state="open"] {
819
+ animation: dl-fade-in 150ms ease;
820
+ }
821
+ .dl-dialog-overlay[data-state="closed"] {
822
+ animation: dl-fade-out 150ms ease;
823
+ }
824
+
825
+ .dl-dialog-content {
826
+ position: fixed;
827
+ left: 50%;
828
+ top: 50%;
829
+ transform: translate(-50%, -50%);
830
+ z-index: 50;
831
+ display: grid;
832
+ width: 100%;
833
+ max-width: 32rem;
834
+ gap: 1rem;
835
+ border: 1px solid var(--border);
836
+ background-color: var(--background);
837
+ padding: 1.5rem;
838
+ box-shadow: 0 8px 32px rgb(0 0 0/0.18);
839
+ border-radius: var(--radius-lg, 0.5rem);
840
+ }
841
+ .dl-dialog-content[data-state="open"] {
842
+ animation: dl-zoom-in 150ms ease;
843
+ }
844
+ .dl-dialog-content[data-state="closed"] {
845
+ animation: dl-zoom-out 150ms ease;
846
+ }
847
+
848
+ .dl-dialog-close {
849
+ position: absolute;
850
+ right: 1rem;
851
+ top: 1rem;
852
+ border-radius: var(--radius-sm, 0.25rem);
853
+ opacity: 0.7;
854
+ cursor: pointer;
855
+ background: transparent;
856
+ border: none;
857
+ padding: 0.25rem;
858
+ transition: opacity 0.15s ease;
859
+ color: var(--foreground);
860
+ }
861
+ .dl-dialog-close:hover {
862
+ opacity: 1;
863
+ }
864
+ .dl-dialog-close:focus-visible {
865
+ outline: 2px solid var(--ring);
866
+ outline-offset: 2px;
867
+ }
868
+
869
+ .dl-dialog__header {
870
+ display: flex;
871
+ flex-direction: column;
872
+ gap: 0.375rem;
873
+ }
874
+ .dl-dialog__footer {
875
+ display: flex;
876
+ flex-direction: row;
877
+ justify-content: flex-end;
878
+ gap: 0.5rem;
879
+ }
880
+ .dl-dialog__title {
881
+ font-size: 1.125rem;
882
+ font-weight: 600;
883
+ line-height: 1;
884
+ letter-spacing: -0.01em;
885
+ }
886
+ .dl-dialog__desc {
887
+ font-size: 0.875rem;
888
+ color: var(--muted-foreground);
889
+ }
890
+
891
+ /* ── drawer ── */
892
+ .dl-drawer-overlay {
893
+ position: fixed;
894
+ inset: 0;
895
+ z-index: 50;
896
+ background-color: rgb(0 0 0 / 0.8);
897
+ }
898
+
899
+ .dl-drawer-content {
900
+ position: fixed;
901
+ inset-inline: 0;
902
+ bottom: 0;
903
+ z-index: 50;
904
+ margin-top: 6rem;
905
+ display: flex;
906
+ height: auto;
907
+ flex-direction: column;
908
+ border-top-left-radius: 10px;
909
+ border-top-right-radius: 10px;
910
+ border: 1px solid var(--border);
911
+ background-color: var(--background);
912
+ }
913
+
914
+ .dl-drawer-handle {
915
+ margin-inline: auto;
916
+ margin-top: 1rem;
917
+ height: 0.5rem;
918
+ width: 6.25rem;
919
+ border-radius: 9999px;
920
+ background-color: var(--muted);
921
+ }
922
+
923
+ .dl-drawer-header {
924
+ display: grid;
925
+ gap: 0.375rem;
926
+ padding: 1rem;
927
+ text-align: center;
928
+ }
929
+
930
+ @media (min-width: 640px) {
931
+ .dl-drawer-header {
932
+ text-align: left;
933
+ }
934
+ }
935
+
936
+ .dl-drawer-footer {
937
+ margin-top: auto;
938
+ display: flex;
939
+ flex-direction: column;
940
+ gap: 0.5rem;
941
+ padding: 1rem;
942
+ }
943
+
944
+ .dl-drawer-title {
945
+ font-size: 1.125rem;
946
+ font-weight: 600;
947
+ line-height: 1;
948
+ letter-spacing: -0.01em;
949
+ color: var(--foreground);
950
+ }
951
+
952
+ .dl-drawer-desc {
953
+ font-size: 0.875rem;
954
+ color: var(--muted-foreground);
955
+ }
956
+
957
+ /* ── dropdown-menu ── */
958
+ .dl-menu-content {
959
+ z-index: 50;
960
+ min-width: 8rem;
961
+ overflow: hidden;
962
+ border-radius: var(--radius-md, 0.375rem);
963
+ border: 1px solid var(--border);
964
+ background-color: var(--popover);
965
+ color: var(--popover-foreground);
966
+ padding: 0.25rem;
967
+ box-shadow: 0 4px 24px rgb(0 0 0/0.12);
968
+ }
969
+ .dl-menu-content[data-state="open"] {
970
+ animation: dl-fade-in 100ms ease;
971
+ }
972
+ .dl-menu-content[data-state="closed"] {
973
+ animation: dl-fade-out 100ms ease;
974
+ }
975
+
976
+ .dl-menu-item {
977
+ position: relative;
978
+ display: flex;
979
+ cursor: pointer;
980
+ align-items: center;
981
+ gap: 0.5rem;
982
+ border-radius: var(--radius-sm, 0.25rem);
983
+ padding: 0.375rem 0.5rem;
984
+ font-size: 0.875rem;
985
+ outline: none;
986
+ transition: background-color 0.1s ease;
987
+ user-select: none;
988
+ }
989
+ .dl-menu-item:focus,
990
+ .dl-menu-item[data-highlighted] {
991
+ background-color: var(--accent);
992
+ color: var(--accent-foreground);
993
+ }
994
+ .dl-menu-item[data-disabled] {
995
+ opacity: 0.5;
996
+ pointer-events: none;
997
+ }
998
+ .dl-menu-item--destructive {
999
+ color: var(--destructive);
1000
+ }
1001
+ .dl-menu-item--destructive:focus {
1002
+ background-color: color-mix(in oklch, var(--destructive) 12%, transparent);
1003
+ }
1004
+
1005
+ .dl-menu-label {
1006
+ padding: 0.375rem 0.5rem;
1007
+ font-size: 0.75rem;
1008
+ font-weight: 600;
1009
+ color: var(--muted-foreground);
1010
+ }
1011
+ .dl-menu-separator {
1012
+ margin: 0.25rem -0.25rem;
1013
+ height: 1px;
1014
+ background-color: var(--border);
1015
+ }
1016
+ .dl-menu-shortcut {
1017
+ margin-left: auto;
1018
+ font-size: 0.75rem;
1019
+ letter-spacing: 0.05em;
1020
+ opacity: 0.6;
1021
+ }
1022
+ .dl-menu-sub-trigger[data-state="open"] {
1023
+ background-color: var(--accent);
1024
+ color: var(--accent-foreground);
1025
+ }
1026
+ .dl-menu-checkbox-item,
1027
+ .dl-menu-radio-item {
1028
+ padding-left: 2rem;
1029
+ }
1030
+ .dl-menu-checkbox-item__indicator,
1031
+ .dl-menu-radio-item__indicator {
1032
+ position: absolute;
1033
+ left: 0.5rem;
1034
+ display: flex;
1035
+ align-items: center;
1036
+ justify-content: center;
1037
+ width: 0.875rem;
1038
+ height: 0.875rem;
1039
+ }
1040
+
1041
+ /* ── form ── */
1042
+ .dl-form-item {
1043
+ display: flex;
1044
+ flex-direction: column;
1045
+ gap: 0.5rem;
1046
+ }
1047
+ .dl-form-label--error {
1048
+ color: var(--destructive);
1049
+ }
1050
+ .dl-form-desc {
1051
+ font-size: 0.8rem;
1052
+ color: var(--muted-foreground);
1053
+ }
1054
+ .dl-form-error {
1055
+ font-size: 0.8rem;
1056
+ font-weight: 500;
1057
+ color: var(--destructive);
1058
+ }
1059
+
1060
+ /* ── hover-card ── */
1061
+ .dl-hover-card {
1062
+ z-index: 50;
1063
+ width: 16rem;
1064
+ border-radius: var(--radius-md, 0.375rem);
1065
+ border: 1px solid var(--border);
1066
+ background-color: var(--popover);
1067
+ color: var(--popover-foreground);
1068
+ padding: 1rem;
1069
+ box-shadow: 0 4px 20px rgb(0 0 0 / 0.12);
1070
+ outline: none;
1071
+ }
1072
+
1073
+ .dl-hover-card[data-state="open"] {
1074
+ animation:
1075
+ dl-fade-in 150ms ease,
1076
+ dl-zoom-in 150ms ease;
1077
+ }
1078
+
1079
+ .dl-hover-card[data-state="closed"] {
1080
+ animation:
1081
+ dl-fade-out 150ms ease,
1082
+ dl-zoom-out 150ms ease;
1083
+ }
1084
+
1085
+ /* ── input ── */
1086
+ .dl-input-wrapper {
1087
+ position: relative;
1088
+ display: inline-flex;
1089
+ align-items: center;
1090
+ width: 100%;
1091
+ }
1092
+
1093
+ .dl-input-icon {
1094
+ position: absolute;
1095
+ top: 50%;
1096
+ transform: translateY(-50%);
1097
+ display: inline-flex;
1098
+ align-items: center;
1099
+ justify-content: center;
1100
+ color: var(--muted-foreground);
1101
+ pointer-events: none;
1102
+ }
1103
+
1104
+ .dl-input-icon svg {
1105
+ width: 1rem;
1106
+ height: 1rem;
1107
+ }
1108
+
1109
+ .dl-input-icon--start {
1110
+ left: 0.75rem;
1111
+ }
1112
+
1113
+ .dl-input-icon--end {
1114
+ right: 0.75rem;
1115
+ }
1116
+
1117
+ .dl-input {
1118
+ display: block;
1119
+ width: 100%;
1120
+ height: 2.25rem;
1121
+ border-radius: var(--radius-md, 0.375rem);
1122
+ border: 1px solid var(--input);
1123
+ background-color: transparent;
1124
+ padding-block: 0.25rem;
1125
+ padding-inline: 0.75rem;
1126
+ font-size: 0.875rem;
1127
+ line-height: 1.25rem;
1128
+ font-family: inherit;
1129
+ color: var(--foreground);
1130
+ box-shadow: 0 1px 2px rgb(0 0 0 / 0.05);
1131
+ outline: none;
1132
+ transition:
1133
+ border-color 0.15s ease,
1134
+ box-shadow 0.15s ease;
1135
+ }
1136
+
1137
+ .dl-input--has-start-icon {
1138
+ padding-inline-start: 2.25rem;
1139
+ }
1140
+
1141
+ .dl-input--has-end-icon {
1142
+ padding-inline-end: 2.25rem;
1143
+ }
1144
+
1145
+ .dl-input::placeholder {
1146
+ color: var(--muted-foreground);
1147
+ }
1148
+
1149
+ .dl-input:focus,
1150
+ .dl-input:focus-visible {
1151
+ outline: none;
1152
+ border-color: var(--ring);
1153
+ box-shadow: 0 0 0 2px color-mix(in oklch, var(--ring) 25%, transparent);
1154
+ }
1155
+
1156
+ .dl-input:disabled {
1157
+ cursor: not-allowed;
1158
+ opacity: 0.5;
1159
+ }
1160
+
1161
+ .dl-input::file-selector-button {
1162
+ border: 0;
1163
+ background: transparent;
1164
+ font-size: 0.875rem;
1165
+ font-weight: 500;
1166
+ color: var(--foreground);
1167
+ cursor: pointer;
1168
+ margin-inline-end: 0.75rem;
1169
+ }
1170
+
1171
+ .dl-input[type="search"]::-webkit-search-cancel-button,
1172
+ .dl-input[type="search"]::-webkit-search-decoration {
1173
+ -webkit-appearance: none;
1174
+ }
1175
+
1176
+ /* ── input-otp ── */
1177
+ .dl-input-otp-container {
1178
+ display: flex;
1179
+ align-items: center;
1180
+ gap: 0.5rem;
1181
+ }
1182
+
1183
+ .dl-input-otp-container:has(:disabled) {
1184
+ opacity: 0.5;
1185
+ }
1186
+
1187
+ .dl-input-otp {
1188
+ cursor: default;
1189
+ }
1190
+
1191
+ .dl-input-otp:disabled {
1192
+ cursor: not-allowed;
1193
+ }
1194
+
1195
+ .dl-input-otp-group {
1196
+ display: flex;
1197
+ align-items: center;
1198
+ }
1199
+
1200
+ .dl-input-otp-slot {
1201
+ position: relative;
1202
+ display: flex;
1203
+ align-items: center;
1204
+ justify-content: center;
1205
+ width: 2.25rem;
1206
+ height: 2.25rem;
1207
+ border-top: 1px solid var(--input);
1208
+ border-bottom: 1px solid var(--input);
1209
+ border-right: 1px solid var(--input);
1210
+ font-size: 0.875rem;
1211
+ box-shadow: 0 1px 2px rgb(0 0 0 / 0.05);
1212
+ transition: all 0.15s ease;
1213
+ }
1214
+
1215
+ .dl-input-otp-slot:first-child {
1216
+ border-top-left-radius: var(--radius-md, 0.375rem);
1217
+ border-bottom-left-radius: var(--radius-md, 0.375rem);
1218
+ border-left: 1px solid var(--input);
1219
+ }
1220
+
1221
+ .dl-input-otp-slot:last-child {
1222
+ border-top-right-radius: var(--radius-md, 0.375rem);
1223
+ border-bottom-right-radius: var(--radius-md, 0.375rem);
1224
+ }
1225
+
1226
+ .dl-input-otp-slot--active {
1227
+ z-index: 10;
1228
+ outline: 2px solid var(--ring);
1229
+ outline-offset: -1px;
1230
+ }
1231
+
1232
+ .dl-input-otp-caret {
1233
+ position: absolute;
1234
+ inset: 0;
1235
+ display: flex;
1236
+ align-items: center;
1237
+ justify-content: center;
1238
+ pointer-events: none;
1239
+ }
1240
+
1241
+ .dl-input-otp-caret__line {
1242
+ height: 1rem;
1243
+ width: 1px;
1244
+ background-color: var(--foreground);
1245
+ animation: dl-pulse 1s infinite;
1246
+ }
1247
+
1248
+ /* ── label ── */
1249
+ .dl-label {
1250
+ font-size: 0.875rem;
1251
+ font-weight: 500;
1252
+ line-height: 1;
1253
+ color: var(--foreground);
1254
+ }
1255
+ .dl-label--error {
1256
+ color: var(--destructive);
1257
+ }
1258
+
1259
+ /* ── loading-state ── */
1260
+ .dl-loading {
1261
+ display: flex;
1262
+ flex-direction: column;
1263
+ align-items: center;
1264
+ justify-content: center;
1265
+ gap: 0.5rem;
1266
+ padding: 2rem;
1267
+ color: var(--muted-foreground);
1268
+ font-size: 0.875rem;
1269
+ }
1270
+ .dl-loading svg {
1271
+ animation: dl-spin 1s linear infinite;
1272
+ }
1273
+
1274
+ .dl-loading-skeleton {
1275
+ width: 100%;
1276
+ display: flex;
1277
+ flex-direction: column;
1278
+ gap: 1rem;
1279
+ padding: 0.5rem;
1280
+ }
1281
+ .dl-loading-skeleton__list {
1282
+ display: flex;
1283
+ flex-direction: column;
1284
+ gap: 0.5rem;
1285
+ }
1286
+
1287
+ /* ── menubar ── */
1288
+ .dl-menubar {
1289
+ display: flex;
1290
+ height: 2.25rem;
1291
+ align-items: center;
1292
+ gap: 0.25rem;
1293
+ border-radius: var(--radius-md, 0.375rem);
1294
+ border: 1px solid var(--border);
1295
+ background-color: var(--background);
1296
+ padding: 0.25rem;
1297
+ box-shadow: 0 1px 2px rgb(0 0 0 / 0.05);
1298
+ }
1299
+
1300
+ .dl-menubar-trigger {
1301
+ display: flex;
1302
+ cursor: pointer;
1303
+ user-select: none;
1304
+ align-items: center;
1305
+ border-radius: var(--radius-sm, 0.25rem);
1306
+ padding: 0.25rem 0.75rem;
1307
+ font-size: 0.875rem;
1308
+ font-weight: 500;
1309
+ outline: none;
1310
+ background: transparent;
1311
+ border: none;
1312
+ color: inherit;
1313
+ font-family: inherit;
1314
+ transition:
1315
+ background-color 0.15s ease,
1316
+ color 0.15s ease;
1317
+ }
1318
+
1319
+ .dl-menubar-trigger:focus,
1320
+ .dl-menubar-trigger[data-state="open"] {
1321
+ background-color: var(--accent);
1322
+ color: var(--accent-foreground);
1323
+ }
1324
+
1325
+ /* ── navigation-menu ── */
1326
+ .dl-navigation-menu {
1327
+ position: relative;
1328
+ z-index: 10;
1329
+ display: flex;
1330
+ max-width: max-content;
1331
+ flex: 1;
1332
+ align-items: center;
1333
+ justify-content: center;
1334
+ }
1335
+
1336
+ .dl-navigation-menu-list {
1337
+ display: flex;
1338
+ flex: 1;
1339
+ list-style: none;
1340
+ align-items: center;
1341
+ justify-content: center;
1342
+ gap: 0.25rem;
1343
+ margin: 0;
1344
+ padding: 0;
1345
+ }
1346
+
1347
+ .dl-navigation-menu-trigger {
1348
+ display: inline-flex;
1349
+ height: 2.25rem;
1350
+ width: max-content;
1351
+ align-items: center;
1352
+ justify-content: center;
1353
+ border-radius: var(--radius-md, 0.375rem);
1354
+ background-color: var(--background);
1355
+ padding: 0.5rem 1rem;
1356
+ font-size: 0.875rem;
1357
+ font-weight: 500;
1358
+ cursor: pointer;
1359
+ border: none;
1360
+ color: inherit;
1361
+ font-family: inherit;
1362
+ transition:
1363
+ background-color 0.15s ease,
1364
+ color 0.15s ease;
1365
+ outline: none;
1366
+ }
1367
+
1368
+ .dl-navigation-menu-trigger:hover,
1369
+ .dl-navigation-menu-trigger:focus,
1370
+ .dl-navigation-menu-trigger[data-state="open"] {
1371
+ background-color: var(--accent);
1372
+ color: var(--accent-foreground);
1373
+ }
1374
+
1375
+ .dl-navigation-menu-trigger:disabled {
1376
+ pointer-events: none;
1377
+ opacity: 0.5;
1378
+ cursor: not-allowed;
1379
+ }
1380
+
1381
+ .dl-navigation-menu-chevron {
1382
+ position: relative;
1383
+ top: 1px;
1384
+ margin-left: 0.25rem;
1385
+ width: 0.75rem;
1386
+ height: 0.75rem;
1387
+ transition: transform 0.2s ease;
1388
+ }
1389
+
1390
+ .dl-navigation-menu-trigger[data-state="open"] .dl-navigation-menu-chevron {
1391
+ transform: rotate(180deg);
1392
+ }
1393
+
1394
+ .dl-navigation-menu-content {
1395
+ left: 0;
1396
+ top: 0;
1397
+ width: 100%;
1398
+ }
1399
+
1400
+ @media (min-width: 768px) {
1401
+ .dl-navigation-menu-content {
1402
+ position: absolute;
1403
+ width: auto;
1404
+ }
1405
+ }
1406
+
1407
+ .dl-navigation-menu-viewport-wrapper {
1408
+ position: absolute;
1409
+ left: 0;
1410
+ top: 100%;
1411
+ display: flex;
1412
+ justify-content: center;
1413
+ }
1414
+
1415
+ .dl-navigation-menu-viewport {
1416
+ position: relative;
1417
+ margin-top: 0.375rem;
1418
+ height: var(--radix-navigation-menu-viewport-height);
1419
+ width: 100%;
1420
+ overflow: hidden;
1421
+ border-radius: var(--radius-md, 0.375rem);
1422
+ border: 1px solid var(--border);
1423
+ background-color: var(--popover);
1424
+ color: var(--popover-foreground);
1425
+ box-shadow: 0 4px 20px rgb(0 0 0 / 0.12);
1426
+ transform-origin: top center;
1427
+ }
1428
+
1429
+ @media (min-width: 768px) {
1430
+ .dl-navigation-menu-viewport {
1431
+ width: var(--radix-navigation-menu-viewport-width);
1432
+ }
1433
+ }
1434
+
1435
+ .dl-navigation-menu-viewport[data-state="open"] {
1436
+ animation: dl-zoom-in 150ms ease;
1437
+ }
1438
+
1439
+ .dl-navigation-menu-viewport[data-state="closed"] {
1440
+ animation: dl-zoom-out 150ms ease;
1441
+ }
1442
+
1443
+ .dl-navigation-menu-indicator {
1444
+ top: 100%;
1445
+ z-index: 1;
1446
+ display: flex;
1447
+ height: 0.375rem;
1448
+ align-items: flex-end;
1449
+ justify-content: center;
1450
+ overflow: hidden;
1451
+ }
1452
+
1453
+ .dl-navigation-menu-indicator__arrow {
1454
+ position: relative;
1455
+ top: 60%;
1456
+ width: 0.5rem;
1457
+ height: 0.5rem;
1458
+ transform: rotate(45deg);
1459
+ border-top-left-radius: 0.125rem;
1460
+ background-color: var(--border);
1461
+ box-shadow: 0 2px 4px rgb(0 0 0 / 0.1);
1462
+ }
1463
+
1464
+ /* ── pagination ── */
1465
+ .dl-pagination {
1466
+ margin-inline: auto;
1467
+ display: flex;
1468
+ width: 100%;
1469
+ justify-content: center;
1470
+ }
1471
+
1472
+ .dl-pagination-content {
1473
+ display: flex;
1474
+ flex-direction: row;
1475
+ align-items: center;
1476
+ gap: 0.25rem;
1477
+ list-style: none;
1478
+ margin: 0;
1479
+ padding: 0;
1480
+ }
1481
+
1482
+ .dl-pagination-item {
1483
+ display: inline-flex;
1484
+ }
1485
+
1486
+ .dl-pagination-prev {
1487
+ gap: 0.25rem;
1488
+ padding-inline-start: 0.625rem;
1489
+ }
1490
+
1491
+ .dl-pagination-next {
1492
+ gap: 0.25rem;
1493
+ padding-inline-end: 0.625rem;
1494
+ }
1495
+
1496
+ .dl-pagination-ellipsis {
1497
+ display: flex;
1498
+ align-items: center;
1499
+ justify-content: center;
1500
+ width: 2.25rem;
1501
+ height: 2.25rem;
1502
+ }
1503
+
1504
+ .dl-pagination-ellipsis svg {
1505
+ width: 1rem;
1506
+ height: 1rem;
1507
+ }
1508
+
1509
+ /* ── panel ── */
1510
+ .dl-panel {
1511
+ border-radius: var(--radius-lg, 0.5rem);
1512
+ border: 1px solid var(--border);
1513
+ background-color: var(--card);
1514
+ padding: 1rem;
1515
+ }
1516
+ .dl-panel__header {
1517
+ margin-bottom: 0.75rem;
1518
+ display: flex;
1519
+ align-items: center;
1520
+ gap: 0.5rem;
1521
+ }
1522
+ .dl-panel__title {
1523
+ font-family: inherit;
1524
+ font-size: 0.875rem;
1525
+ font-weight: 600;
1526
+ margin: 0;
1527
+ }
1528
+ .dl-panel__meta {
1529
+ margin-left: auto;
1530
+ font-family: monospace;
1531
+ font-size: 0.625rem;
1532
+ color: var(--muted-foreground);
1533
+ }
1534
+
1535
+ /* ── popover ── */
1536
+ .dl-popover {
1537
+ z-index: 50;
1538
+ width: 18rem;
1539
+ border-radius: var(--radius-lg, 0.5rem);
1540
+ border: 1px solid var(--border);
1541
+ background-color: var(--popover);
1542
+ color: var(--popover-foreground);
1543
+ padding: 1rem;
1544
+ box-shadow: 0 4px 24px rgb(0 0 0/0.12);
1545
+ outline: none;
1546
+ }
1547
+ .dl-popover[data-state="open"] {
1548
+ animation: dl-fade-in 150ms ease;
1549
+ }
1550
+ .dl-popover[data-state="closed"] {
1551
+ animation: dl-fade-out 150ms ease;
1552
+ }
1553
+
1554
+ /* ── progress ── */
1555
+ .dl-progress {
1556
+ position: relative;
1557
+ height: 0.5rem;
1558
+ width: 100%;
1559
+ overflow: hidden;
1560
+ border-radius: 9999px;
1561
+ background-color: var(--secondary);
1562
+ }
1563
+ .dl-progress__indicator {
1564
+ height: 100%;
1565
+ width: 100%;
1566
+ background-color: var(--primary);
1567
+ transition: transform 0.3s ease;
1568
+ transform-origin: left;
1569
+ }
1570
+
1571
+ /* ── radio-group ── */
1572
+ .dl-radio-group {
1573
+ display: grid;
1574
+ gap: 0.5rem;
1575
+ }
1576
+ .dl-radio-item {
1577
+ aspect-ratio: 1;
1578
+ height: 1rem;
1579
+ width: 1rem;
1580
+ border-radius: 9999px;
1581
+ border: 1px solid var(--primary);
1582
+ box-shadow: 0 1px 2px rgb(0 0 0/0.05);
1583
+ cursor: pointer;
1584
+ background: transparent;
1585
+ display: flex;
1586
+ align-items: center;
1587
+ justify-content: center;
1588
+ padding: 0;
1589
+ }
1590
+ .dl-radio-item:focus-visible {
1591
+ outline: 2px solid var(--ring);
1592
+ outline-offset: 2px;
1593
+ }
1594
+ .dl-radio-item:disabled {
1595
+ cursor: not-allowed;
1596
+ opacity: 0.5;
1597
+ }
1598
+ .dl-radio-item__indicator {
1599
+ display: flex;
1600
+ align-items: center;
1601
+ justify-content: center;
1602
+ }
1603
+ .dl-radio-item__indicator svg {
1604
+ fill: var(--primary);
1605
+ color: var(--primary);
1606
+ width: 0.5625rem;
1607
+ height: 0.5625rem;
1608
+ }
1609
+
1610
+ /* ── resizable ── */
1611
+ .dl-resizable-group {
1612
+ display: flex;
1613
+ width: 100%;
1614
+ height: 100%;
1615
+ }
1616
+
1617
+ .dl-resizable-group[data-panel-group-direction="vertical"] {
1618
+ flex-direction: column;
1619
+ }
1620
+
1621
+ .dl-resizable-handle {
1622
+ position: relative;
1623
+ display: flex;
1624
+ width: 1px;
1625
+ align-items: center;
1626
+ justify-content: center;
1627
+ background-color: var(--border);
1628
+ outline: none;
1629
+ transition: background-color 0.15s ease;
1630
+ }
1631
+
1632
+ .dl-resizable-handle::after {
1633
+ content: "";
1634
+ position: absolute;
1635
+ inset-block: 0;
1636
+ left: 50%;
1637
+ width: 0.25rem;
1638
+ transform: translateX(-50%);
1639
+ }
1640
+
1641
+ .dl-resizable-handle:focus-visible {
1642
+ outline: 2px solid var(--ring);
1643
+ outline-offset: 1px;
1644
+ }
1645
+
1646
+ .dl-resizable-handle[data-panel-group-direction="vertical"] {
1647
+ height: 1px;
1648
+ width: 100%;
1649
+ }
1650
+
1651
+ .dl-resizable-handle[data-panel-group-direction="vertical"]::after {
1652
+ left: 0;
1653
+ height: 0.25rem;
1654
+ width: 100%;
1655
+ transform: translateY(-50%);
1656
+ }
1657
+
1658
+ .dl-resizable-handle[data-panel-group-direction="vertical"] > div {
1659
+ transform: rotate(90deg);
1660
+ }
1661
+
1662
+ .dl-resizable-grip {
1663
+ z-index: 10;
1664
+ display: flex;
1665
+ height: 1rem;
1666
+ width: 0.75rem;
1667
+ align-items: center;
1668
+ justify-content: center;
1669
+ border-radius: var(--radius-sm, 0.25rem);
1670
+ border: 1px solid var(--border);
1671
+ background-color: var(--border);
1672
+ }
1673
+
1674
+ .dl-resizable-grip svg {
1675
+ width: 0.625rem;
1676
+ height: 0.625rem;
1677
+ }
1678
+
1679
+ /* ── scroll-area ── */
1680
+ .dl-scroll-area {
1681
+ position: relative;
1682
+ overflow: hidden;
1683
+ }
1684
+ .dl-scroll-area__viewport {
1685
+ height: 100%;
1686
+ width: 100%;
1687
+ border-radius: inherit;
1688
+ }
1689
+ .dl-scroll-area__bar {
1690
+ display: flex;
1691
+ touch-action: none;
1692
+ user-select: none;
1693
+ transition: background-color 0.2s ease;
1694
+ padding: 1px;
1695
+ }
1696
+ .dl-scroll-area__bar[data-orientation="vertical"] {
1697
+ height: 100%;
1698
+ width: 0.625rem;
1699
+ border-left: 1px solid transparent;
1700
+ }
1701
+ .dl-scroll-area__bar[data-orientation="horizontal"] {
1702
+ height: 0.625rem;
1703
+ flex-direction: column;
1704
+ border-top: 1px solid transparent;
1705
+ }
1706
+ .dl-scroll-area__thumb {
1707
+ position: relative;
1708
+ flex: 1;
1709
+ border-radius: 9999px;
1710
+ background-color: var(--border);
1711
+ }
1712
+
1713
+ /* ── searchable-select ── */
1714
+ .dl-searchable-select-trigger {
1715
+ width: 100%;
1716
+ justify-content: space-between;
1717
+ padding-inline: 0.75rem;
1718
+ text-align: left;
1719
+ font-weight: 400;
1720
+ }
1721
+
1722
+ .dl-searchable-select-trigger--placeholder {
1723
+ color: var(--muted-foreground);
1724
+ }
1725
+
1726
+ .dl-searchable-select-content {
1727
+ width: var(--radix-popover-trigger-width);
1728
+ min-width: 14rem;
1729
+ padding: 0;
1730
+ box-shadow: 0 4px 20px rgb(0 0 0 / 0.15);
1731
+ }
1732
+
1733
+ .dl-searchable-select-search {
1734
+ display: flex;
1735
+ align-items: center;
1736
+ gap: 0.5rem;
1737
+ border-bottom: 1px solid var(--border);
1738
+ padding: 0.5rem;
1739
+ }
1740
+
1741
+ .dl-searchable-select-search-icon {
1742
+ width: 1rem;
1743
+ height: 1rem;
1744
+ flex-shrink: 0;
1745
+ opacity: 0.5;
1746
+ color: var(--muted-foreground);
1747
+ }
1748
+
1749
+ .dl-searchable-select-search-input {
1750
+ height: 2rem;
1751
+ border: none;
1752
+ background: transparent;
1753
+ padding-inline: 0.25rem;
1754
+ font-size: 0.875rem;
1755
+ box-shadow: none;
1756
+ }
1757
+
1758
+ .dl-searchable-select-search-input:focus,
1759
+ .dl-searchable-select-search-input:focus-visible {
1760
+ outline: none;
1761
+ box-shadow: none;
1762
+ border-color: transparent;
1763
+ }
1764
+
1765
+ .dl-searchable-select-list {
1766
+ max-height: 15rem;
1767
+ overflow-y: auto;
1768
+ overscroll-behavior: contain;
1769
+ padding: 0.25rem;
1770
+ font-size: 0.875rem;
1771
+ }
1772
+
1773
+ .dl-searchable-select-empty {
1774
+ padding-block: 1.5rem;
1775
+ text-align: center;
1776
+ font-size: 0.75rem;
1777
+ color: var(--muted-foreground);
1778
+ }
1779
+
1780
+ .dl-searchable-select-group-header {
1781
+ padding-inline: 0.5rem;
1782
+ padding-block: 0.25rem;
1783
+ font-size: 0.625rem;
1784
+ font-weight: 700;
1785
+ letter-spacing: 0.05em;
1786
+ text-transform: uppercase;
1787
+ color: color-mix(in oklch, var(--muted-foreground) 70%, transparent);
1788
+ }
1789
+
1790
+ .dl-searchable-select-item {
1791
+ position: relative;
1792
+ display: flex;
1793
+ cursor: pointer;
1794
+ align-items: center;
1795
+ border-radius: var(--radius-sm, 0.25rem);
1796
+ padding: 0.375rem 0.625rem;
1797
+ font-size: 0.875rem;
1798
+ user-select: none;
1799
+ outline: none;
1800
+ transition:
1801
+ background-color 0.15s ease,
1802
+ color 0.15s ease;
1803
+ }
1804
+
1805
+ .dl-searchable-select-item--highlighted {
1806
+ background-color: var(--accent);
1807
+ color: var(--accent-foreground);
1808
+ font-weight: 500;
1809
+ }
1810
+
1811
+ .dl-searchable-select-item--selected {
1812
+ background-color: color-mix(in oklch, var(--accent) 40%, transparent);
1813
+ color: var(--accent-foreground);
1814
+ font-weight: 500;
1815
+ }
1816
+
1817
+ .dl-searchable-select-add {
1818
+ border-top: 1px solid var(--border);
1819
+ background-color: color-mix(in oklch, var(--muted) 30%, transparent);
1820
+ padding: 0.25rem;
1821
+ }
1822
+
1823
+ .dl-searchable-select-add-btn {
1824
+ display: flex;
1825
+ width: 100%;
1826
+ align-items: center;
1827
+ gap: 0.5rem;
1828
+ border-radius: var(--radius-sm, 0.25rem);
1829
+ padding: 0.5rem 0.625rem;
1830
+ font-size: 0.75rem;
1831
+ font-weight: 600;
1832
+ color: var(--primary);
1833
+ background: transparent;
1834
+ border: none;
1835
+ cursor: pointer;
1836
+ transition: background-color 0.15s ease;
1837
+ }
1838
+
1839
+ .dl-searchable-select-add-btn:hover {
1840
+ background-color: color-mix(in oklch, var(--primary) 10%, transparent);
1841
+ }
1842
+
1843
+ /* ── select ── */
1844
+ .dl-select-trigger {
1845
+ display: inline-flex;
1846
+ min-height: 1.75rem;
1847
+ align-items: center;
1848
+ justify-content: space-between;
1849
+ white-space: nowrap;
1850
+ border-radius: var(--radius-md, 0.375rem);
1851
+ border: 1px solid var(--input);
1852
+ background-color: transparent;
1853
+ padding: 0 0.5rem;
1854
+ font-size: 0.75rem;
1855
+ font-family: inherit;
1856
+ cursor: pointer;
1857
+ color: var(--foreground);
1858
+ box-shadow: 0 1px 2px rgb(0 0 0/0.05);
1859
+ }
1860
+ .dl-select-trigger[data-placeholder] {
1861
+ color: var(--muted-foreground);
1862
+ }
1863
+ .dl-select-trigger:focus-visible {
1864
+ outline: none;
1865
+ box-shadow: 0 0 0 2px var(--ring);
1866
+ }
1867
+ .dl-select-trigger:disabled {
1868
+ opacity: 0.5;
1869
+ cursor: not-allowed;
1870
+ }
1871
+ .dl-select-trigger > svg {
1872
+ opacity: 0.5;
1873
+ width: 0.75rem;
1874
+ height: 0.75rem;
1875
+ flex-shrink: 0;
1876
+ }
1877
+
1878
+ .dl-select-content {
1879
+ position: relative;
1880
+ z-index: 50;
1881
+ max-height: 24rem;
1882
+ min-width: 8rem;
1883
+ overflow: hidden;
1884
+ border-radius: var(--radius-md, 0.375rem);
1885
+ border: 1px solid var(--border);
1886
+ background-color: var(--popover);
1887
+ color: var(--popover-foreground);
1888
+ box-shadow: 0 4px 24px rgb(0 0 0/0.12);
1889
+ }
1890
+ .dl-select-content[data-state="open"] {
1891
+ animation: dl-fade-in 100ms ease;
1892
+ }
1893
+ .dl-select-content[data-state="closed"] {
1894
+ animation: dl-fade-out 100ms ease;
1895
+ }
1896
+ .dl-select-viewport {
1897
+ padding: 0.25rem;
1898
+ }
1899
+
1900
+ .dl-select-item {
1901
+ position: relative;
1902
+ display: flex;
1903
+ width: 100%;
1904
+ cursor: pointer;
1905
+ align-items: center;
1906
+ border-radius: var(--radius-sm, 0.25rem);
1907
+ padding: 0.25rem 0.5rem 0.25rem 1.75rem;
1908
+ font-size: 0.75rem;
1909
+ outline: none;
1910
+ user-select: none;
1911
+ }
1912
+ .dl-select-item:focus,
1913
+ .dl-select-item[data-highlighted] {
1914
+ background-color: var(--accent);
1915
+ color: var(--accent-foreground);
1916
+ }
1917
+ .dl-select-item[data-disabled] {
1918
+ opacity: 0.5;
1919
+ pointer-events: none;
1920
+ }
1921
+ .dl-select-item__indicator {
1922
+ position: absolute;
1923
+ left: 0.5rem;
1924
+ display: flex;
1925
+ align-items: center;
1926
+ justify-content: center;
1927
+ width: 0.75rem;
1928
+ height: 0.75rem;
1929
+ }
1930
+ .dl-select-label {
1931
+ padding: 0.25rem 0.5rem;
1932
+ font-size: 0.6875rem;
1933
+ font-weight: 600;
1934
+ color: var(--muted-foreground);
1935
+ }
1936
+ .dl-select-separator {
1937
+ margin: 0.25rem -0.25rem;
1938
+ height: 1px;
1939
+ background-color: var(--border);
1940
+ }
1941
+
1942
+ /* ── separator ── */
1943
+ .dl-separator {
1944
+ background-color: var(--border);
1945
+ flex-shrink: 0;
1946
+ }
1947
+ .dl-separator[data-orientation="horizontal"] {
1948
+ height: 1px;
1949
+ width: 100%;
1950
+ margin: 0.25rem 0;
1951
+ }
1952
+ .dl-separator[data-orientation="vertical"] {
1953
+ width: 1px;
1954
+ height: 100%;
1955
+ margin: 0 0.25rem;
1956
+ }
1957
+
1958
+ /* ── sheet ── */
1959
+ /* ═══════════════════════════════════════════════════════════════════════
1960
+ SHEET (side drawer)
1961
+ ═══════════════════════════════════════════════════════════════════════ */
1962
+ .dl-sheet-content {
1963
+ position: fixed;
1964
+ z-index: 50;
1965
+ gap: 1rem;
1966
+ background-color: var(--background);
1967
+ padding: 1.5rem;
1968
+ box-shadow: 0 8px 40px rgb(0 0 0/0.2);
1969
+ }
1970
+ .dl-sheet-content--right {
1971
+ inset: 0 0 0 auto;
1972
+ height: 100%;
1973
+ width: 75%;
1974
+ max-width: 30rem;
1975
+ border-left: 1px solid var(--border);
1976
+ }
1977
+ .dl-sheet-content--left {
1978
+ inset: 0 auto 0 0;
1979
+ height: 100%;
1980
+ width: 75%;
1981
+ max-width: 30rem;
1982
+ border-right: 1px solid var(--border);
1983
+ }
1984
+ .dl-sheet-content--top {
1985
+ inset: 0 0 auto 0;
1986
+ border-bottom: 1px solid var(--border);
1987
+ }
1988
+ .dl-sheet-content--bottom {
1989
+ inset: auto 0 0 0;
1990
+ border-top: 1px solid var(--border);
1991
+ }
1992
+ .dl-sheet-content[data-state="open"][data-side="right"] {
1993
+ animation: dl-slide-in-right 200ms ease;
1994
+ }
1995
+ .dl-sheet-content[data-state="closed"][data-side="right"] {
1996
+ animation: dl-slide-out-right 200ms ease;
1997
+ }
1998
+ .dl-sheet-content[data-state="open"][data-side="left"] {
1999
+ animation: dl-slide-in-left 200ms ease;
2000
+ }
2001
+ .dl-sheet-content[data-state="closed"][data-side="left"] {
2002
+ animation: dl-slide-out-left 200ms ease;
2003
+ }
2004
+ .dl-sheet-close {
2005
+ position: absolute;
2006
+ right: 1rem;
2007
+ top: 1rem;
2008
+ border-radius: var(--radius-sm, 0.25rem);
2009
+ opacity: 0.7;
2010
+ cursor: pointer;
2011
+ background: transparent;
2012
+ border: none;
2013
+ padding: 0.25rem;
2014
+ transition: opacity 0.15s ease;
2015
+ color: var(--foreground);
2016
+ }
2017
+ .dl-sheet-close:hover {
2018
+ opacity: 1;
2019
+ }
2020
+ .dl-sheet-close:focus-visible {
2021
+ outline: 2px solid var(--ring);
2022
+ outline-offset: 2px;
2023
+ }
2024
+ .dl-sheet__header {
2025
+ display: flex;
2026
+ flex-direction: column;
2027
+ gap: 0.5rem;
2028
+ }
2029
+ .dl-sheet__footer {
2030
+ display: flex;
2031
+ flex-direction: column-reverse;
2032
+ gap: 0.5rem;
2033
+ }
2034
+ .dl-sheet__title {
2035
+ font-size: 1.125rem;
2036
+ font-weight: 600;
2037
+ }
2038
+ .dl-sheet__desc {
2039
+ font-size: 0.875rem;
2040
+ color: var(--muted-foreground);
2041
+ }
2042
+
2043
+ /* ── sidebar ── */
2044
+ .dl-sidebar-wrapper {
2045
+ display: flex;
2046
+ min-height: 100vh;
2047
+ width: 100%;
2048
+ }
2049
+
2050
+ .dl-sidebar-input {
2051
+ height: 2rem;
2052
+ background-color: var(--background);
2053
+ box-shadow: none;
2054
+ }
2055
+
2056
+ .dl-sidebar-input:focus,
2057
+ .dl-sidebar-input:focus-visible {
2058
+ border-color: var(--sidebar-ring);
2059
+ box-shadow: 0 0 0 2px
2060
+ color-mix(in oklch, var(--sidebar-ring) 25%, transparent);
2061
+ }
2062
+
2063
+ /* ── skeleton ── */
2064
+ .dl-skeleton {
2065
+ border-radius: var(--radius-md, 0.375rem);
2066
+ background-color: color-mix(in oklch, var(--primary) 10%, var(--muted));
2067
+ animation: dl-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
2068
+ }
2069
+
2070
+ /* ── slider ── */
2071
+ .dl-slider {
2072
+ position: relative;
2073
+ display: flex;
2074
+ width: 100%;
2075
+ touch-action: none;
2076
+ user-select: none;
2077
+ align-items: center;
2078
+ }
2079
+ .dl-slider__track {
2080
+ position: relative;
2081
+ height: 0.375rem;
2082
+ width: 100%;
2083
+ flex-grow: 1;
2084
+ overflow: hidden;
2085
+ border-radius: 9999px;
2086
+ background-color: var(--secondary);
2087
+ }
2088
+ .dl-slider__range {
2089
+ position: absolute;
2090
+ height: 100%;
2091
+ background-color: var(--primary);
2092
+ }
2093
+ .dl-slider__thumb {
2094
+ display: block;
2095
+ height: 1.25rem;
2096
+ width: 1.25rem;
2097
+ border-radius: 9999px;
2098
+ border: 2px solid var(--primary);
2099
+ background-color: var(--background);
2100
+ box-shadow: 0 1px 4px rgb(0 0 0/0.12);
2101
+ transition: box-shadow 0.15s ease;
2102
+ cursor: grab;
2103
+ }
2104
+ .dl-slider__thumb:focus-visible {
2105
+ outline: none;
2106
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--ring) 30%, transparent);
2107
+ }
2108
+
2109
+ /* ── sonner ── */
2110
+ .dl-toaster {
2111
+ font-family: inherit;
2112
+ }
2113
+
2114
+ .dl-toast {
2115
+ border-radius: var(--radius-md, 0.375rem);
2116
+ border: 1px solid var(--border);
2117
+ background-color: var(--background);
2118
+ color: var(--foreground);
2119
+ box-shadow: 0 8px 32px rgb(0 0 0 / 0.15);
2120
+ }
2121
+
2122
+ .dl-toast__desc {
2123
+ color: var(--muted-foreground);
2124
+ }
2125
+
2126
+ .dl-toast__action {
2127
+ background-color: var(--primary);
2128
+ color: var(--primary-foreground);
2129
+ }
2130
+
2131
+ .dl-toast__cancel {
2132
+ background-color: var(--muted);
2133
+ color: var(--muted-foreground);
2134
+ }
2135
+
2136
+ /* ── status-badge ── */
2137
+ .dl-status-badge {
2138
+ display: inline-flex;
2139
+ align-items: center;
2140
+ gap: 0.375rem;
2141
+ border-radius: 9999px;
2142
+ border: 1px solid var(--border);
2143
+ padding: 0.125rem 0.625rem;
2144
+ font-size: 0.75rem;
2145
+ font-weight: 500;
2146
+ transition:
2147
+ color 0.15s ease,
2148
+ background-color 0.15s ease,
2149
+ border-color 0.15s ease;
2150
+ user-select: none;
2151
+ }
2152
+
2153
+ .dl-status-badge__dot {
2154
+ width: 0.375rem;
2155
+ height: 0.375rem;
2156
+ border-radius: 9999px;
2157
+ background-color: currentColor;
2158
+ opacity: 0.8;
2159
+ }
2160
+
2161
+ .dl-status-badge--success {
2162
+ background-color: color-mix(in oklch, var(--success) 12%, transparent);
2163
+ color: var(--success);
2164
+ border-color: color-mix(in oklch, var(--success) 30%, transparent);
2165
+ }
2166
+
2167
+ .dl-status-badge--info {
2168
+ background-color: color-mix(in oklch, var(--info) 12%, transparent);
2169
+ color: var(--info);
2170
+ border-color: color-mix(in oklch, var(--info) 30%, transparent);
2171
+ }
2172
+
2173
+ .dl-status-badge--warning {
2174
+ background-color: color-mix(in oklch, var(--warning) 15%, transparent);
2175
+ color: var(--warning);
2176
+ border-color: color-mix(in oklch, var(--warning) 30%, transparent);
2177
+ }
2178
+
2179
+ .dl-status-badge--destructive {
2180
+ background-color: color-mix(in oklch, var(--destructive) 12%, transparent);
2181
+ color: var(--destructive);
2182
+ border-color: color-mix(in oklch, var(--destructive) 30%, transparent);
2183
+ }
2184
+
2185
+ .dl-status-badge--muted {
2186
+ background-color: var(--muted);
2187
+ color: var(--muted-foreground);
2188
+ border-color: var(--border);
2189
+ }
2190
+
2191
+ /* ── status-chip ── */
2192
+ .dl-status-chip {
2193
+ display: inline-flex;
2194
+ align-items: center;
2195
+ gap: 0.375rem;
2196
+ border-radius: var(--radius-md, 0.375rem);
2197
+ border: 1px solid var(--border);
2198
+ padding: 0.125rem 0.5rem;
2199
+ font-family: monospace;
2200
+ font-size: 0.625rem;
2201
+ line-height: 1rem;
2202
+ background-color: var(--secondary);
2203
+ color: var(--muted-foreground);
2204
+ }
2205
+
2206
+ .dl-status-chip__dot {
2207
+ width: 0.375rem;
2208
+ height: 0.375rem;
2209
+ border-radius: 9999px;
2210
+ background-color: currentColor;
2211
+ }
2212
+
2213
+ .dl-status-chip--primary {
2214
+ border-color: color-mix(in oklch, var(--primary) 30%, transparent);
2215
+ background-color: color-mix(in oklch, var(--primary) 10%, transparent);
2216
+ color: var(--primary);
2217
+ }
2218
+
2219
+ .dl-status-chip--warning {
2220
+ border-color: color-mix(in oklch, var(--warning) 35%, transparent);
2221
+ background-color: color-mix(in oklch, var(--warning) 10%, transparent);
2222
+ color: var(--warning);
2223
+ }
2224
+
2225
+ .dl-status-chip--destructive {
2226
+ border-color: color-mix(in oklch, var(--destructive) 35%, transparent);
2227
+ background-color: color-mix(in oklch, var(--destructive) 10%, transparent);
2228
+ color: var(--destructive);
2229
+ }
2230
+
2231
+ .dl-status-chip--muted {
2232
+ border-color: var(--border);
2233
+ background-color: var(--secondary);
2234
+ color: var(--muted-foreground);
2235
+ }
2236
+
2237
+ /* ── switch ── */
2238
+ .dl-switch {
2239
+ display: inline-flex;
2240
+ height: 1.25rem;
2241
+ width: 2.25rem;
2242
+ flex-shrink: 0;
2243
+ cursor: pointer;
2244
+ align-items: center;
2245
+ border-radius: 9999px;
2246
+ border: 2px solid transparent;
2247
+ box-shadow: 0 1px 2px rgb(0 0 0/0.08);
2248
+ transition: background-color 0.2s ease;
2249
+ background: none;
2250
+ padding: 0;
2251
+ }
2252
+ .dl-switch:focus-visible {
2253
+ outline: 2px solid var(--ring);
2254
+ outline-offset: 2px;
2255
+ }
2256
+ .dl-switch:disabled {
2257
+ cursor: not-allowed;
2258
+ opacity: 0.5;
2259
+ }
2260
+ .dl-switch[data-state="checked"] {
2261
+ background-color: var(--primary);
2262
+ }
2263
+ .dl-switch[data-state="unchecked"] {
2264
+ background-color: var(--input);
2265
+ }
2266
+
2267
+ .dl-switch__thumb {
2268
+ pointer-events: none;
2269
+ display: block;
2270
+ border-radius: 9999px;
2271
+ background-color: var(--background);
2272
+ box-shadow: 0 1px 2px rgb(0 0 0/0.15);
2273
+ transition: transform 0.2s ease;
2274
+ width: 1rem;
2275
+ height: 1rem;
2276
+ }
2277
+ .dl-switch__thumb[data-state="checked"] {
2278
+ transform: translateX(1rem);
2279
+ }
2280
+ .dl-switch__thumb[data-state="unchecked"] {
2281
+ transform: translateX(0);
2282
+ }
2283
+
2284
+ /* ── table ── */
2285
+ .dl-table-wrapper {
2286
+ position: relative;
2287
+ width: 100%;
2288
+ overflow: auto;
2289
+ }
2290
+
2291
+ .dl-table {
2292
+ width: 100%;
2293
+ caption-side: bottom;
2294
+ font-size: 0.875rem;
2295
+ border-collapse: collapse;
2296
+ }
2297
+ .dl-table__head tr {
2298
+ border-bottom: 1px solid var(--border);
2299
+ }
2300
+ .dl-table__body tr:last-child {
2301
+ border-bottom: none;
2302
+ }
2303
+ .dl-table__body tr:hover {
2304
+ background-color: color-mix(in oklch, var(--muted) 50%, transparent);
2305
+ }
2306
+ .dl-table__foot {
2307
+ border-top: 1px solid var(--border);
2308
+ font-weight: 500;
2309
+ }
2310
+ .dl-table__row {
2311
+ border-bottom: 1px solid var(--border);
2312
+ transition: background-color 0.1s;
2313
+ }
2314
+ .dl-table__head-cell {
2315
+ height: 2.5rem;
2316
+ padding: 0 0.5rem;
2317
+ text-align: left;
2318
+ font-weight: 500;
2319
+ color: var(--muted-foreground);
2320
+ white-space: nowrap;
2321
+ }
2322
+ .dl-table__cell {
2323
+ padding: 0.75rem 0.5rem;
2324
+ vertical-align: middle;
2325
+ }
2326
+ .dl-table__caption {
2327
+ margin-top: 1rem;
2328
+ font-size: 0.875rem;
2329
+ color: var(--muted-foreground);
2330
+ }
2331
+
2332
+ /* ── tabs ── */
2333
+ .dl-tabs-list {
2334
+ display: inline-flex;
2335
+ height: 2.25rem;
2336
+ align-items: center;
2337
+ justify-content: center;
2338
+ border-radius: var(--radius-lg, 0.5rem);
2339
+ background-color: var(--muted);
2340
+ padding: 0.25rem;
2341
+ color: var(--muted-foreground);
2342
+ }
2343
+ .dl-tabs-trigger {
2344
+ display: inline-flex;
2345
+ align-items: center;
2346
+ justify-content: center;
2347
+ white-space: nowrap;
2348
+ border-radius: var(--radius-md, 0.375rem);
2349
+ padding: 0.25rem 0.75rem;
2350
+ font-size: 0.875rem;
2351
+ font-weight: 500;
2352
+ cursor: pointer;
2353
+ font-family: inherit;
2354
+ transition: all 0.15s ease;
2355
+ border: none;
2356
+ background: transparent;
2357
+ color: inherit;
2358
+ }
2359
+ .dl-tabs-trigger:focus-visible {
2360
+ outline: 2px solid var(--ring);
2361
+ outline-offset: 2px;
2362
+ }
2363
+ .dl-tabs-trigger:disabled {
2364
+ pointer-events: none;
2365
+ opacity: 0.5;
2366
+ }
2367
+ .dl-tabs-trigger[data-state="active"] {
2368
+ background-color: var(--background);
2369
+ color: var(--foreground);
2370
+ box-shadow: 0 1px 3px rgb(0 0 0/0.1);
2371
+ }
2372
+ .dl-tabs-content {
2373
+ margin-top: 0.5rem;
2374
+ }
2375
+ .dl-tabs-content:focus-visible {
2376
+ outline: 2px solid var(--ring);
2377
+ outline-offset: 2px;
2378
+ }
2379
+
2380
+ /* ── textarea ── */
2381
+ .dl-textarea {
2382
+ display: block;
2383
+ min-height: 4rem;
2384
+ width: 100%;
2385
+ border-radius: var(--radius-md, 0.375rem);
2386
+ border: 1px solid var(--input);
2387
+ background-color: transparent;
2388
+ padding-block: 0.5rem;
2389
+ padding-inline: 0.75rem;
2390
+ font-size: 0.875rem;
2391
+ font-family: inherit;
2392
+ color: var(--foreground);
2393
+ box-shadow: 0 1px 2px rgb(0 0 0/0.05);
2394
+ outline: none;
2395
+ transition: border-color 0.15s ease;
2396
+ resize: vertical;
2397
+ }
2398
+ .dl-textarea::placeholder {
2399
+ color: var(--muted-foreground);
2400
+ }
2401
+ .dl-textarea:focus,
2402
+ .dl-textarea:focus-visible {
2403
+ outline: none;
2404
+ border-color: var(--ring);
2405
+ box-shadow: 0 0 0 2px color-mix(in oklch, var(--ring) 25%, transparent);
2406
+ }
2407
+ .dl-textarea:disabled {
2408
+ cursor: not-allowed;
2409
+ opacity: 0.5;
2410
+ }
2411
+
2412
+ /* ── toggle ── */
2413
+ .dl-toggle {
2414
+ display: inline-flex;
2415
+ align-items: center;
2416
+ justify-content: center;
2417
+ gap: 0.5rem;
2418
+ border-radius: var(--radius-md, 0.375rem);
2419
+ font-size: 0.875rem;
2420
+ font-weight: 500;
2421
+ cursor: pointer;
2422
+ background-color: transparent;
2423
+ color: inherit;
2424
+ border: 1px solid transparent;
2425
+ outline: none;
2426
+ transition:
2427
+ background-color 0.15s ease,
2428
+ color 0.15s ease,
2429
+ border-color 0.15s ease;
2430
+ }
2431
+
2432
+ .dl-toggle:hover {
2433
+ background-color: var(--muted);
2434
+ color: var(--muted-foreground);
2435
+ }
2436
+
2437
+ .dl-toggle:focus,
2438
+ .dl-toggle:focus-visible {
2439
+ outline: 2px solid var(--ring);
2440
+ outline-offset: 2px;
2441
+ }
2442
+
2443
+ .dl-toggle:disabled,
2444
+ .dl-toggle[data-disabled] {
2445
+ pointer-events: none;
2446
+ opacity: 0.5;
2447
+ cursor: not-allowed;
2448
+ }
2449
+
2450
+ .dl-toggle[data-state="on"] {
2451
+ background-color: var(--accent);
2452
+ color: var(--accent-foreground);
2453
+ }
2454
+
2455
+ .dl-toggle svg {
2456
+ pointer-events: none;
2457
+ width: 1rem;
2458
+ height: 1rem;
2459
+ flex-shrink: 0;
2460
+ }
2461
+
2462
+ /* Variants */
2463
+ .dl-toggle--variant-default {
2464
+ background-color: transparent;
2465
+ }
2466
+
2467
+ .dl-toggle--variant-outline {
2468
+ border-color: var(--input);
2469
+ background-color: transparent;
2470
+ box-shadow: 0 1px 2px rgb(0 0 0 / 0.05);
2471
+ }
2472
+
2473
+ .dl-toggle--variant-outline:hover {
2474
+ background-color: var(--accent);
2475
+ color: var(--accent-foreground);
2476
+ }
2477
+
2478
+ /* Sizes */
2479
+ .dl-toggle--size-default {
2480
+ height: 2.25rem;
2481
+ padding-inline: 0.5rem;
2482
+ min-width: 2.25rem;
2483
+ }
2484
+
2485
+ .dl-toggle--size-sm {
2486
+ height: 2rem;
2487
+ padding-inline: 0.375rem;
2488
+ min-width: 2rem;
2489
+ }
2490
+
2491
+ .dl-toggle--size-lg {
2492
+ height: 2.5rem;
2493
+ padding-inline: 0.625rem;
2494
+ min-width: 2.5rem;
2495
+ }
2496
+
2497
+ /* Group */
2498
+ .dl-toggle-group {
2499
+ display: flex;
2500
+ align-items: center;
2501
+ justify-content: center;
2502
+ gap: 0.25rem;
2503
+ }
2504
+
2505
+ /* ── tooltip ── */
2506
+ .dl-tooltip {
2507
+ z-index: 50;
2508
+ overflow: hidden;
2509
+ border-radius: var(--radius-md, 0.375rem);
2510
+ border: 1px solid var(--border);
2511
+ background-color: var(--popover);
2512
+ color: var(--popover-foreground);
2513
+ padding: 0.375rem 0.75rem;
2514
+ font-size: 0.75rem;
2515
+ box-shadow: 0 2px 8px rgb(0 0 0/0.12);
2516
+ }
2517
+ .dl-tooltip[data-state="delayed-open"] {
2518
+ animation: dl-fade-in 100ms ease;
2519
+ }
2520
+ .dl-tooltip[data-state="closed"] {
2521
+ animation: dl-fade-out 100ms ease;
2522
+ }
2523
+ }