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