@yuva-devlab/ui 1.4.3 → 2.0.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 (91) hide show
  1. package/README.md +172 -128
  2. package/dist/components/accordion/accordion.mdx +18 -0
  3. package/dist/components/alert/alert.css +2 -2
  4. package/dist/components/alert-dialog/alert-dialog.mdx +18 -0
  5. package/dist/components/aspect-ratio/aspect-ratio.mdx +22 -0
  6. package/dist/components/breadcrumb/breadcrumb.mdx +18 -0
  7. package/dist/components/calendar/calendar-nav.css +111 -0
  8. package/dist/components/calendar/calendar.css +183 -0
  9. package/dist/components/calendar/calendar.mdx +18 -0
  10. package/dist/components/card/card.css +4 -4
  11. package/dist/components/carousel/carousel.css +4 -4
  12. package/dist/components/carousel/carousel.mdx +18 -0
  13. package/dist/components/chart/chart.css +86 -0
  14. package/dist/components/chart/chart.mdx +18 -0
  15. package/dist/components/checkbox/checkbox.css +11 -0
  16. package/dist/components/collapsible/collapsible.mdx +18 -0
  17. package/dist/components/command/command.css +3 -3
  18. package/dist/components/command/command.mdx +18 -0
  19. package/dist/components/confirm-dialog/confirm-dialog.mdx +18 -0
  20. package/dist/components/context-menu/context-menu.mdx +18 -0
  21. package/dist/components/copy-button/copy-button.css +2 -0
  22. package/dist/components/copy-button/copy-button.mdx +18 -0
  23. package/dist/components/date-picker/date-picker.css +11 -5
  24. package/dist/components/date-picker/date-picker.mdx +18 -0
  25. package/dist/components/dialog/dialog.css +6 -6
  26. package/dist/components/drawer/drawer.mdx +18 -0
  27. package/dist/components/dropdown-menu/dropdown-menu.css +18 -0
  28. package/dist/components/dropdown-menu/dropdown-menu.mdx +18 -0
  29. package/dist/components/empty-state/empty-state.css +67 -0
  30. package/dist/components/empty-state/empty-state.mdx +18 -0
  31. package/dist/components/form/form.mdx +18 -0
  32. package/dist/components/hover-card/hover-card.mdx +18 -0
  33. package/dist/components/input-otp/input-otp.mdx +18 -0
  34. package/dist/components/label/label.mdx +18 -0
  35. package/dist/components/layout/layout.css +158 -0
  36. package/dist/components/layout/layout.mdx +30 -0
  37. package/dist/components/loading-state/loading-state.css +11 -0
  38. package/dist/components/loading-state/loading-state.mdx +18 -0
  39. package/dist/components/menubar/menubar.css +4 -4
  40. package/dist/components/menubar/menubar.mdx +18 -0
  41. package/dist/components/metric-card/metric-card.mdx +18 -0
  42. package/dist/components/navigation-menu/navigation-menu.css +2 -2
  43. package/dist/components/navigation-menu/navigation-menu.mdx +18 -0
  44. package/dist/components/pagination/pagination.css +8 -2
  45. package/dist/components/pagination/pagination.mdx +18 -0
  46. package/dist/components/panel/panel.mdx +18 -0
  47. package/dist/components/popover/popover.css +7 -2
  48. package/dist/components/popover/popover.mdx +18 -0
  49. package/dist/components/radio-group/radio-group.mdx +18 -0
  50. package/dist/components/resizable/resizable.mdx +18 -0
  51. package/dist/components/scroll-area/scroll-area.mdx +18 -0
  52. package/dist/components/searchable-select/searchable-select.css +26 -3
  53. package/dist/components/searchable-select/searchable-select.mdx +18 -0
  54. package/dist/components/secret-reveal-card/secret-reveal-card.css +9 -0
  55. package/dist/components/secret-reveal-card/secret-reveal-card.mdx +18 -0
  56. package/dist/components/select/select.css +16 -1
  57. package/dist/components/separator/separator.mdx +18 -0
  58. package/dist/components/sheet/sheet.css +5 -1
  59. package/dist/components/sheet/sheet.mdx +18 -0
  60. package/dist/components/sidebar/sidebar-menu.css +183 -0
  61. package/dist/components/sidebar/sidebar-submenu.css +69 -0
  62. package/dist/components/sidebar/sidebar.css +171 -4
  63. package/dist/components/sidebar/sidebar.mdx +18 -0
  64. package/dist/components/slider/slider.mdx +18 -0
  65. package/dist/components/status-chip/status-chip.mdx +18 -0
  66. package/dist/components/table/table.css +5 -3
  67. package/dist/components/tabs/tabs.css +3 -3
  68. package/dist/components/textarea/textarea.css +3 -3
  69. package/dist/components/textarea/textarea.mdx +18 -0
  70. package/dist/components/toggle/toggle.css +9 -9
  71. package/dist/components/toggle/toggle.mdx +18 -0
  72. package/dist/components/toggle-group/toggle-group.mdx +18 -0
  73. package/dist/components/tooltip/tooltip.mdx +18 -0
  74. package/dist/components/typography/heading.mdx +36 -0
  75. package/dist/components/typography/text.mdx +34 -0
  76. package/dist/components/typography/typography.css +98 -0
  77. package/dist/components.css +1366 -118
  78. package/dist/index.cjs +1239 -1008
  79. package/dist/index.cjs.map +1 -1
  80. package/dist/index.d.cts +662 -197
  81. package/dist/index.d.ts +662 -197
  82. package/dist/index.js +1220 -1011
  83. package/dist/index.js.map +1 -1
  84. package/dist/preset.css +2 -4
  85. package/dist/styles/components.css +1366 -118
  86. package/dist/styles/preset.css +2 -4
  87. package/dist/styles/styles.css +7 -4
  88. package/dist/styles/utilities.css +137 -0
  89. package/dist/styles.css +7 -4
  90. package/dist/utilities.css +137 -0
  91. package/package.json +22 -4
@@ -1,11 +1,12 @@
1
1
  /**
2
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.
3
+ * @description Bundled modular dl-* component and layout styles with native Cascade Layers (@layer).
5
4
  */
6
5
 
6
+ @layer dl-reset, dl-tokens, dl-components, dl-layout, dl-utilities, dl-app;
7
+
7
8
  @layer dl-components {
8
- /* ── accordion ── */
9
+ /* ── accordion/accordion.css ── */
9
10
  .dl-accordion-item {
10
11
  border-bottom: 1px solid var(--border);
11
12
  }
@@ -56,13 +57,13 @@
56
57
  padding-top: 0;
57
58
  }
58
59
 
59
- /* ── alert ── */
60
+ /* ── alert/alert.css ── */
60
61
  .dl-alert {
61
62
  position: relative;
62
63
  width: 100%;
63
- border-radius: var(--radius-lg, 0.5rem);
64
+ border-radius: var(--radius, 0.5rem);
64
65
  border: 1px solid var(--border);
65
- padding: 0.875rem 1rem;
66
+ padding: var(--space-4, 0.875rem) var(--space-5, 1rem);
66
67
  font-size: 0.875rem;
67
68
  display: grid;
68
69
  grid-template-columns: 1fr;
@@ -121,7 +122,7 @@
121
122
  color: color-mix(in oklch, var(--destructive) 80%, var(--foreground));
122
123
  }
123
124
 
124
- /* ── alert-dialog ── */
125
+ /* ── alert-dialog/alert-dialog.css ── */
125
126
  .dl-alert-dialog-overlay {
126
127
  position: fixed;
127
128
  inset: 0;
@@ -207,7 +208,7 @@
207
208
  line-height: 1.5;
208
209
  }
209
210
 
210
- /* ── avatar ── */
211
+ /* ── avatar/avatar.css ── */
211
212
  .dl-avatar {
212
213
  position: relative;
213
214
  display: flex;
@@ -235,7 +236,7 @@
235
236
  font-weight: 500;
236
237
  }
237
238
 
238
- /* ── badge ── */
239
+ /* ── badge/badge.css ── */
239
240
  .dl-badge {
240
241
  display: inline-flex;
241
242
  align-items: center;
@@ -313,7 +314,7 @@
313
314
  color: var(--muted-foreground);
314
315
  }
315
316
 
316
- /* ── breadcrumb ── */
317
+ /* ── breadcrumb/breadcrumb.css ── */
317
318
  .dl-breadcrumb-list {
318
319
  display: flex;
319
320
  flex-wrap: wrap;
@@ -378,7 +379,7 @@
378
379
  height: 1rem;
379
380
  }
380
381
 
381
- /* ── button ── */
382
+ /* ── button/button.css ── */
382
383
  .dl-btn {
383
384
  display: inline-flex;
384
385
  align-items: center;
@@ -486,9 +487,307 @@
486
487
  text-decoration: underline;
487
488
  }
488
489
 
489
- /* ── card ── */
490
+ /* ── calendar/calendar-nav.css ── */
491
+ .dl-calendar .rdp-month_caption,
492
+ .dl-calendar .dl-calendar__month-caption {
493
+ position: relative;
494
+ display: flex;
495
+ height: var(--cell-size, 2rem);
496
+ width: 100%;
497
+ align-items: center;
498
+ justify-content: center;
499
+ padding: 0 var(--cell-size, 2rem);
500
+ font-size: 0.875rem;
501
+ font-weight: 600;
502
+ color: var(--foreground);
503
+ box-sizing: border-box;
504
+ }
505
+
506
+ .dl-calendar .rdp-caption_label,
507
+ .dl-calendar .dl-calendar__caption-label {
508
+ font-size: 0.875rem;
509
+ font-weight: 600;
510
+ color: var(--foreground);
511
+ line-height: 1;
512
+ user-select: none;
513
+ }
514
+
515
+ .dl-calendar .dl-calendar__caption-label--interactive {
516
+ display: flex;
517
+ height: var(--control-height-sm, 2rem);
518
+ align-items: center;
519
+ gap: 0.25rem;
520
+ border-radius: var(--radius-md, 0.375rem);
521
+ padding-inline: 0.5rem 0.25rem;
522
+ }
523
+
524
+ .dl-calendar .dl-calendar__dropdowns {
525
+ display: flex;
526
+ width: 100%;
527
+ align-items: center;
528
+ justify-content: center;
529
+ gap: 0.375rem;
530
+ font-size: 0.875rem;
531
+ font-weight: 500;
532
+ }
533
+
534
+ .dl-calendar .dl-calendar__dropdown-root {
535
+ position: relative;
536
+ border-radius: var(--radius-md, 0.375rem);
537
+ border: 1px solid var(--border);
538
+ box-shadow: var(--shadow-xs, 0 1px 2px 0 rgb(0 0 0 / 0.05));
539
+ }
540
+
541
+ .dl-calendar .dl-calendar__dropdown {
542
+ position: absolute;
543
+ inset: 0;
544
+ opacity: 0;
545
+ background: var(--popover);
546
+ cursor: pointer;
547
+ }
548
+
549
+ .dl-calendar .rdp-nav,
550
+ .dl-calendar .dl-calendar__nav {
551
+ position: absolute;
552
+ top: 0;
553
+ inset-inline: 0;
554
+ display: flex;
555
+ align-items: center;
556
+ justify-content: space-between;
557
+ width: 100%;
558
+ height: var(--cell-size, 2rem);
559
+ pointer-events: none;
560
+ }
561
+
562
+ .dl-calendar .rdp-button_previous,
563
+ .dl-calendar .rdp-button_next,
564
+ .dl-calendar .dl-calendar__nav-button {
565
+ pointer-events: auto;
566
+ width: var(--cell-size, 2rem) !important;
567
+ height: var(--cell-size, 2rem) !important;
568
+ min-width: var(--cell-size, 2rem) !important;
569
+ padding: 0 !important;
570
+ display: inline-flex !important;
571
+ align-items: center;
572
+ justify-content: center;
573
+ border-radius: var(--radius-md, 0.375rem) !important;
574
+ border: 1px solid var(--border);
575
+ background: var(--background);
576
+ color: var(--muted-foreground);
577
+ cursor: pointer;
578
+ user-select: none;
579
+ transition: all 0.15s ease;
580
+ }
581
+
582
+ .dl-calendar .rdp-button_previous:hover,
583
+ .dl-calendar .rdp-button_next:hover,
584
+ .dl-calendar .dl-calendar__nav-button:hover {
585
+ background-color: var(--accent);
586
+ color: var(--accent-foreground);
587
+ }
588
+
589
+ .dl-calendar .rdp-button_previous[aria-disabled="true"],
590
+ .dl-calendar .rdp-button_next[aria-disabled="true"] {
591
+ opacity: 0.5;
592
+ pointer-events: none;
593
+ }
594
+
595
+ .dl-calendar .rdp-button_previous svg,
596
+ .dl-calendar .rdp-button_next svg,
597
+ .dl-calendar .dl-calendar__chevron {
598
+ width: 1rem;
599
+ height: 1rem;
600
+ flex-shrink: 0;
601
+ }
602
+
603
+ /* ── calendar/calendar.css ── */
604
+ .dl-calendar {
605
+ --cell-size: var(--control-height-sm, 2rem);
606
+ display: inline-block;
607
+ width: fit-content;
608
+ max-width: 100%;
609
+ padding: var(--space-3, 0.75rem);
610
+ box-sizing: border-box;
611
+ color: var(--foreground);
612
+ }
613
+
614
+ .dl-calendar .rdp-root {
615
+ width: fit-content;
616
+ margin: 0 auto;
617
+ }
618
+
619
+ .dl-calendar .rdp-months,
620
+ .dl-calendar .dl-calendar__months {
621
+ position: relative;
622
+ display: flex;
623
+ flex-direction: column;
624
+ gap: 1rem;
625
+ width: calc(var(--cell-size, 2rem) * 7);
626
+ box-sizing: border-box;
627
+ }
628
+
629
+ @media (min-width: 768px) {
630
+ .dl-calendar .rdp-months,
631
+ .dl-calendar .dl-calendar__months {
632
+ flex-direction: row;
633
+ }
634
+ }
635
+
636
+ .dl-calendar .rdp-month,
637
+ .dl-calendar .dl-calendar__month {
638
+ display: flex;
639
+ flex-direction: column;
640
+ gap: 0.75rem;
641
+ width: 100%;
642
+ }
643
+
644
+ .dl-calendar table.rdp-month_grid,
645
+ .dl-calendar table.dl-calendar__table,
646
+ .dl-calendar table {
647
+ width: 100%;
648
+ border-collapse: collapse;
649
+ table-layout: fixed;
650
+ margin: 0;
651
+ }
652
+
653
+ .dl-calendar th.rdp-weekday,
654
+ .dl-calendar th {
655
+ width: calc(100% / 7);
656
+ height: var(--cell-size, 2rem);
657
+ text-align: center;
658
+ vertical-align: middle;
659
+ font-size: 0.75rem;
660
+ font-weight: 500;
661
+ color: var(--muted-foreground);
662
+ padding: 0;
663
+ margin: 0;
664
+ box-sizing: border-box;
665
+ }
666
+
667
+ .dl-calendar td.rdp-day,
668
+ .dl-calendar td {
669
+ width: calc(100% / 7);
670
+ height: var(--cell-size, 2rem);
671
+ padding: 2px !important;
672
+ margin: 0;
673
+ text-align: center;
674
+ vertical-align: middle;
675
+ background: transparent !important;
676
+ border: none !important;
677
+ box-sizing: border-box;
678
+ }
679
+
680
+ .dl-calendar .dl-calendar__week-number {
681
+ display: flex;
682
+ width: var(--cell-size, 2rem);
683
+ height: var(--cell-size, 2rem);
684
+ align-items: center;
685
+ justify-content: center;
686
+ text-align: center;
687
+ }
688
+
689
+ .dl-calendar button.rdp-day_button,
690
+ .dl-calendar .dl-calendar__day-button {
691
+ width: 100% !important;
692
+ height: 100% !important;
693
+ min-width: 0 !important;
694
+ min-height: 0 !important;
695
+ margin: 0 auto !important;
696
+ padding: 0 !important;
697
+ display: inline-flex !important;
698
+ align-items: center;
699
+ justify-content: center;
700
+ aspect-ratio: 1 / 1;
701
+ border-radius: var(--radius-md, 0.375rem) !important;
702
+ border: none !important;
703
+ font-size: 0.875rem;
704
+ font-weight: 400;
705
+ line-height: 1;
706
+ color: var(--foreground);
707
+ background: transparent;
708
+ cursor: pointer;
709
+ box-sizing: border-box;
710
+ transition: all 0.15s ease;
711
+ }
712
+
713
+ .dl-calendar button.rdp-day_button:hover:not(:disabled) {
714
+ background-color: var(--accent) !important;
715
+ color: var(--accent-foreground) !important;
716
+ }
717
+
718
+ .dl-calendar td[aria-selected="true"] button.rdp-day_button,
719
+ .dl-calendar td.rdp-selected button.rdp-day_button,
720
+ .dl-calendar button.rdp-day_button[data-selected="true"],
721
+ .dl-calendar button.rdp-day_button[data-selected-single="true"] {
722
+ background-color: var(--primary) !important;
723
+ color: var(--primary-foreground) !important;
724
+ border-radius: var(--radius-md, 0.375rem) !important;
725
+ font-weight: 600;
726
+ box-shadow: 0 1px 2px rgb(0 0 0 / 0.12);
727
+ }
728
+
729
+ .dl-calendar td[aria-selected="true"] button.rdp-day_button:hover,
730
+ .dl-calendar td.rdp-selected button.rdp-day_button:hover,
731
+ .dl-calendar button.rdp-day_button[data-selected="true"]:hover,
732
+ .dl-calendar button.rdp-day_button[data-selected-single="true"]:hover {
733
+ background-color: color-mix(in oklch, var(--primary) 88%, black) !important;
734
+ color: var(--primary-foreground) !important;
735
+ }
736
+
737
+ .dl-calendar
738
+ td.rdp-today:not([aria-selected="true"]):not(.rdp-selected)
739
+ button.rdp-day_button {
740
+ background-color: color-mix(
741
+ in oklch,
742
+ var(--secondary) 60%,
743
+ transparent
744
+ ) !important;
745
+ color: var(--foreground) !important;
746
+ font-weight: 600;
747
+ border: 1px solid var(--border) !important;
748
+ }
749
+
750
+ .dl-calendar td.rdp-range_start {
751
+ background-color: var(--accent) !important;
752
+ border-radius: var(--radius-md, 0.375rem) 0 0 var(--radius-md, 0.375rem) !important;
753
+ }
754
+
755
+ .dl-calendar td.rdp-range_middle {
756
+ background-color: var(--accent) !important;
757
+ border-radius: 0 !important;
758
+ }
759
+
760
+ .dl-calendar td.rdp-range_middle button.rdp-day_button {
761
+ background: transparent !important;
762
+ color: var(--accent-foreground) !important;
763
+ border-radius: 0 !important;
764
+ }
765
+
766
+ .dl-calendar td.rdp-range_end {
767
+ background-color: var(--accent) !important;
768
+ border-radius: 0 var(--radius-md, 0.375rem) var(--radius-md, 0.375rem) !important;
769
+ }
770
+
771
+ .dl-calendar td.rdp-outside button.rdp-day_button {
772
+ color: var(--muted-foreground) !important;
773
+ opacity: 0.35;
774
+ }
775
+
776
+ .dl-calendar button.rdp-day_button:disabled {
777
+ color: var(--muted-foreground) !important;
778
+ opacity: 0.25;
779
+ cursor: not-allowed;
780
+ pointer-events: none;
781
+ }
782
+
783
+ .dl-calendar td.rdp-hidden {
784
+ visibility: hidden;
785
+ pointer-events: none;
786
+ }
787
+
788
+ /* ── card/card.css ── */
490
789
  .dl-card {
491
- border-radius: var(--radius-lg, 0.5rem);
790
+ border-radius: var(--radius, 0.75rem);
492
791
  border: 1px solid var(--border);
493
792
  background-color: var(--card);
494
793
  color: var(--card-foreground);
@@ -498,7 +797,7 @@
498
797
  display: flex;
499
798
  flex-direction: column;
500
799
  gap: 0.375rem;
501
- padding: 1.5rem;
800
+ padding: var(--card-padding, 1.5rem);
502
801
  }
503
802
  .dl-card__title {
504
803
  font-weight: 600;
@@ -510,15 +809,15 @@
510
809
  color: var(--muted-foreground);
511
810
  }
512
811
  .dl-card__content {
513
- padding: 1.5rem;
812
+ padding: var(--card-padding, 1.5rem);
514
813
  }
515
814
  .dl-card__footer {
516
815
  display: flex;
517
816
  align-items: center;
518
- padding: 1.5rem;
817
+ padding: var(--card-padding, 1.5rem);
519
818
  }
520
819
 
521
- /* ── carousel ── */
820
+ /* ── carousel/carousel.css ── */
522
821
  .dl-carousel {
523
822
  position: relative;
524
823
  }
@@ -548,18 +847,18 @@
548
847
  }
549
848
 
550
849
  .dl-carousel-item--horizontal {
551
- padding-left: 1rem;
850
+ padding-left: var(--space-4, 1rem);
552
851
  }
553
852
 
554
853
  .dl-carousel-item--vertical {
555
- padding-top: 1rem;
854
+ padding-top: var(--space-4, 1rem);
556
855
  }
557
856
 
558
857
  .dl-carousel-btn {
559
858
  position: absolute;
560
859
  border-radius: 9999px;
561
- width: 2rem;
562
- height: 2rem;
860
+ width: var(--control-height-sm, 2rem);
861
+ height: var(--control-height-sm, 2rem);
563
862
  padding: 0;
564
863
  }
565
864
 
@@ -587,7 +886,7 @@
587
886
  transform: translateX(-50%) rotate(90deg);
588
887
  }
589
888
 
590
- /* ── chart ── */
889
+ /* ── chart/chart.css ── */
591
890
  .dl-chart-container {
592
891
  display: flex;
593
892
  aspect-ratio: 16 / 9;
@@ -620,14 +919,100 @@
620
919
  box-shadow: 0 8px 32px rgb(0 0 0 / 0.18);
621
920
  }
622
921
 
922
+ .dl-chart-tooltip__label {
923
+ font-weight: 500;
924
+ }
925
+ .dl-chart-tooltip__grid {
926
+ display: grid;
927
+ gap: 0.375rem;
928
+ }
929
+ .dl-chart-tooltip__item {
930
+ display: flex;
931
+ flex-wrap: wrap;
932
+ align-items: stretch;
933
+ gap: 0.5rem;
934
+ }
935
+ .dl-chart-tooltip__item--center {
936
+ align-items: center;
937
+ }
938
+ .dl-chart-tooltip__item svg {
939
+ color: var(--muted-foreground);
940
+ width: 0.625rem;
941
+ height: 0.625rem;
942
+ }
943
+
944
+ .dl-chart-tooltip__indicator {
945
+ flex-shrink: 0;
946
+ border-radius: var(--radius-xs, 0.125rem);
947
+ background-color: var(--color-bg);
948
+ }
949
+ .dl-chart-tooltip__indicator--dot {
950
+ width: 0.625rem;
951
+ height: 0.625rem;
952
+ }
953
+ .dl-chart-tooltip__indicator--line {
954
+ width: 0.25rem;
955
+ }
956
+ .dl-chart-tooltip__indicator--dashed {
957
+ width: 0;
958
+ border: 1.5px dashed var(--color-border);
959
+ background: transparent;
960
+ }
961
+ .dl-chart-tooltip__indicator--nested {
962
+ margin-block: 0.125rem;
963
+ }
964
+
965
+ .dl-chart-tooltip__row {
966
+ display: flex;
967
+ flex: 1 1 0%;
968
+ justify-content: space-between;
969
+ align-items: center;
970
+ line-height: 1;
971
+ }
972
+ .dl-chart-tooltip__row--end {
973
+ align-items: flex-end;
974
+ }
975
+ .dl-chart-tooltip__item-label {
976
+ color: var(--muted-foreground);
977
+ }
978
+ .dl-chart-tooltip__item-value {
979
+ font-family: var(--font-mono, monospace);
980
+ font-weight: 500;
981
+ font-variant-numeric: tabular-nums;
982
+ color: var(--foreground);
983
+ }
984
+
623
985
  .dl-chart-legend {
624
986
  display: flex;
625
987
  align-items: center;
626
988
  justify-content: center;
627
989
  gap: 1rem;
628
990
  }
991
+ .dl-chart-legend--top {
992
+ padding-bottom: 0.75rem;
993
+ }
994
+ .dl-chart-legend--bottom {
995
+ padding-top: 0.75rem;
996
+ }
997
+
998
+ .dl-chart-legend__item {
999
+ display: flex;
1000
+ align-items: center;
1001
+ gap: 0.375rem;
1002
+ }
1003
+ .dl-chart-legend__item svg {
1004
+ color: var(--muted-foreground);
1005
+ width: 0.75rem;
1006
+ height: 0.75rem;
1007
+ }
1008
+ .dl-chart-legend__indicator {
1009
+ flex-shrink: 0;
1010
+ border-radius: var(--radius-xs, 0.125rem);
1011
+ width: 0.5rem;
1012
+ height: 0.5rem;
1013
+ }
629
1014
 
630
- /* ── checkbox ── */
1015
+ /* ── checkbox/checkbox.css ── */
631
1016
  .dl-checkbox {
632
1017
  display: flex;
633
1018
  height: 1rem;
@@ -656,7 +1041,18 @@
656
1041
  color: var(--primary-foreground);
657
1042
  }
658
1043
 
659
- /* ── command ── */
1044
+ .dl-checkbox-indicator {
1045
+ display: grid;
1046
+ place-content: center;
1047
+ color: currentColor;
1048
+ }
1049
+
1050
+ .dl-checkbox-icon {
1051
+ width: 0.75rem;
1052
+ height: 0.75rem;
1053
+ }
1054
+
1055
+ /* ── command/command.css ── */
660
1056
  .dl-command {
661
1057
  display: flex;
662
1058
  flex-direction: column;
@@ -677,11 +1073,11 @@
677
1073
  display: flex;
678
1074
  align-items: center;
679
1075
  border-bottom: 1px solid var(--border);
680
- padding-inline: 0.75rem;
1076
+ padding-inline: var(--space-3, 0.75rem);
681
1077
  }
682
1078
 
683
1079
  .dl-command-input-icon {
684
- margin-inline-end: 0.5rem;
1080
+ margin-inline-end: var(--space-2, 0.5rem);
685
1081
  width: 1rem;
686
1082
  height: 1rem;
687
1083
  flex-shrink: 0;
@@ -690,7 +1086,7 @@
690
1086
 
691
1087
  .dl-command-input {
692
1088
  display: flex;
693
- height: 2.5rem;
1089
+ height: var(--control-height-lg, 2.5rem);
694
1090
  width: 100%;
695
1091
  border-radius: var(--radius-md, 0.375rem);
696
1092
  background-color: transparent;
@@ -783,7 +1179,7 @@
783
1179
  color: var(--muted-foreground);
784
1180
  }
785
1181
 
786
- /* ── context-menu ── */
1182
+ /* ── context-menu/context-menu.css ── */
787
1183
  .dl-context-menu-content {
788
1184
  z-index: 50;
789
1185
  min-width: 8rem;
@@ -804,7 +1200,7 @@
804
1200
  animation: dl-fade-out 100ms ease;
805
1201
  }
806
1202
 
807
- /* ── copy-button ── */
1203
+ /* ── copy-button/copy-button.css ── */
808
1204
  .dl-copy-button {
809
1205
  display: inline-flex;
810
1206
  align-items: center;
@@ -820,6 +1216,8 @@
820
1216
  cursor: pointer;
821
1217
  transition: all 0.15s ease;
822
1218
  user-select: none;
1219
+ white-space: nowrap;
1220
+ flex-shrink: 0;
823
1221
  }
824
1222
 
825
1223
  .dl-copy-button:hover {
@@ -838,13 +1236,13 @@
838
1236
  flex-shrink: 0;
839
1237
  }
840
1238
 
841
- /* ── date-picker ── */
1239
+ /* ── date-picker/date-picker.css ── */
842
1240
  .dl-date-picker-trigger {
843
1241
  width: 100%;
844
1242
  justify-content: flex-start;
845
1243
  text-align: left;
846
1244
  font-weight: 400;
847
- height: 2.25rem;
1245
+ height: var(--control-height-md, 2.25rem);
848
1246
  border-color: var(--border);
849
1247
  background-color: color-mix(in oklch, var(--secondary) 40%, transparent);
850
1248
  }
@@ -859,18 +1257,24 @@
859
1257
  }
860
1258
 
861
1259
  .dl-date-picker-icon {
862
- margin-inline-end: 0.5rem;
1260
+ margin-inline-end: var(--space-2, 0.5rem);
863
1261
  width: 1rem;
864
1262
  height: 1rem;
865
1263
  flex-shrink: 0;
866
1264
  }
867
1265
 
868
- .dl-date-picker-content {
869
- width: auto;
870
- padding: 0;
1266
+ .dl-date-picker-content,
1267
+ .dl-popover.dl-date-picker-content {
1268
+ width: fit-content !important;
1269
+ max-width: fit-content !important;
1270
+ padding: 0 !important;
1271
+ box-shadow: 0 4px 20px rgb(0 0 0 / 0.15);
1272
+ border-radius: var(--radius-lg, 0.5rem);
1273
+ border: 1px solid var(--border);
1274
+ background-color: var(--popover);
871
1275
  }
872
1276
 
873
- /* ── dialog ── */
1277
+ /* ── dialog/dialog.css ── */
874
1278
  .dl-dialog-overlay {
875
1279
  position: fixed;
876
1280
  inset: 0;
@@ -901,7 +1305,7 @@
901
1305
  padding: 0;
902
1306
  gap: 0;
903
1307
  box-shadow: 0 16px 48px rgb(0 0 0 / 0.24);
904
- border-radius: var(--radius-lg, 0.75rem);
1308
+ border-radius: var(--radius, 0.75rem);
905
1309
  overflow: hidden;
906
1310
  overscroll-behavior: contain;
907
1311
  }
@@ -985,8 +1389,8 @@
985
1389
  .dl-dialog__header {
986
1390
  display: flex;
987
1391
  flex-direction: column;
988
- gap: 0.375rem;
989
- padding: 1.25rem 1.5rem;
1392
+ gap: var(--form-field-gap, 0.375rem);
1393
+ padding: var(--dialog-padding, 1.25rem 1.5rem);
990
1394
  padding-right: 3.5rem;
991
1395
  border-bottom: 1px solid var(--border);
992
1396
  flex-shrink: 0;
@@ -995,14 +1399,14 @@
995
1399
  flex: 1 1 auto;
996
1400
  min-height: 0;
997
1401
  overflow-y: auto;
998
- padding: 1.25rem 1.5rem;
1402
+ padding: var(--dialog-padding, 1.25rem 1.5rem);
999
1403
  }
1000
1404
  .dl-dialog__footer {
1001
1405
  display: flex;
1002
1406
  flex-direction: row;
1003
1407
  justify-content: flex-end;
1004
- gap: 0.5rem;
1005
- padding: 0.875rem 1.5rem;
1408
+ gap: var(--form-field-gap, 0.5rem);
1409
+ padding: var(--dialog-padding, 0.875rem 1.5rem);
1006
1410
  border-top: 1px solid var(--border);
1007
1411
  background-color: color-mix(in srgb, var(--muted) 35%, transparent);
1008
1412
  flex-shrink: 0;
@@ -1018,7 +1422,7 @@
1018
1422
  color: var(--muted-foreground);
1019
1423
  }
1020
1424
 
1021
- /* ── drawer ── */
1425
+ /* ── drawer/drawer.css ── */
1022
1426
  .dl-drawer-overlay {
1023
1427
  position: fixed;
1024
1428
  inset: 0;
@@ -1084,7 +1488,7 @@
1084
1488
  color: var(--muted-foreground);
1085
1489
  }
1086
1490
 
1087
- /* ── dropdown-menu ── */
1491
+ /* ── dropdown-menu/dropdown-menu.css ── */
1088
1492
  .dl-menu-content {
1089
1493
  z-index: 50;
1090
1494
  min-width: 8rem;
@@ -1138,10 +1542,28 @@
1138
1542
  font-weight: 600;
1139
1543
  color: var(--muted-foreground);
1140
1544
  }
1141
- .dl-menu-separator {
1142
- margin: 0.25rem -0.25rem;
1143
- height: 1px;
1144
- background-color: var(--border);
1545
+ .dl-menu-item--inset,
1546
+ .dl-menu-label--inset {
1547
+ padding-left: 2rem;
1548
+ }
1549
+ .dl-menu-item__chevron {
1550
+ margin-left: auto;
1551
+ width: 1rem;
1552
+ height: 1rem;
1553
+ }
1554
+ .dl-menu-item__icon {
1555
+ width: 1rem;
1556
+ height: 1rem;
1557
+ }
1558
+ .dl-menu-item__radio-dot {
1559
+ width: 0.5rem;
1560
+ height: 0.5rem;
1561
+ fill: currentColor;
1562
+ }
1563
+ .dl-menu-separator {
1564
+ margin: 0.25rem -0.25rem;
1565
+ height: 1px;
1566
+ background-color: var(--border);
1145
1567
  }
1146
1568
  .dl-menu-shortcut {
1147
1569
  margin-left: auto;
@@ -1168,7 +1590,76 @@
1168
1590
  height: 0.875rem;
1169
1591
  }
1170
1592
 
1171
- /* ── form ── */
1593
+ /* ── empty-state/empty-state.css ── */
1594
+ /**
1595
+ * @file empty-state.css
1596
+ * @description Scoped styles for the EmptyState component.
1597
+ * Governed by semantic design tokens.
1598
+ */
1599
+
1600
+ .dl-empty-state {
1601
+ position: relative;
1602
+ display: flex;
1603
+ min-height: 14rem;
1604
+ width: 100%;
1605
+ flex-direction: column;
1606
+ align-items: center;
1607
+ justify-content: center;
1608
+ box-sizing: border-box;
1609
+ border-radius: var(--radius, 0.5rem);
1610
+ border: 1px dashed var(--border);
1611
+ background-color: color-mix(in oklab, var(--card) 40%, transparent);
1612
+ padding: var(--card-padding, var(--space-6, 1.5rem));
1613
+ text-align: center;
1614
+ backdrop-filter: blur(8px);
1615
+ }
1616
+
1617
+ .dl-empty-state__icon-box {
1618
+ display: flex;
1619
+ align-items: center;
1620
+ justify-content: center;
1621
+ width: var(--control-height-lg, 2.5rem);
1622
+ height: var(--control-height-lg, 2.5rem);
1623
+ border-radius: var(--radius-md, 0.375rem);
1624
+ border: 1px solid color-mix(in oklab, var(--primary) 30%, transparent);
1625
+ background-color: color-mix(in oklab, var(--primary) 10%, transparent);
1626
+ color: var(--primary);
1627
+ margin-bottom: var(--space-3, 0.75rem);
1628
+ }
1629
+
1630
+ .dl-empty-state__icon-box svg {
1631
+ width: var(--icon-md, 1.25rem);
1632
+ height: var(--icon-md, 1.25rem);
1633
+ }
1634
+
1635
+ .dl-empty-state__title {
1636
+ font-family: var(--theme-font-display, var(--theme-font-sans, inherit));
1637
+ font-size: 0.875rem;
1638
+ font-weight: 600;
1639
+ line-height: 1.25;
1640
+ letter-spacing: -0.01em;
1641
+ color: var(--foreground);
1642
+ margin: 0;
1643
+ }
1644
+
1645
+ .dl-empty-state__description {
1646
+ margin: 0;
1647
+ margin-top: var(--space-1, 0.25rem);
1648
+ max-width: 24rem;
1649
+ font-size: 0.75rem;
1650
+ line-height: 1.5;
1651
+ color: var(--muted-foreground);
1652
+ }
1653
+
1654
+ .dl-empty-state__actions {
1655
+ display: flex;
1656
+ align-items: center;
1657
+ justify-content: center;
1658
+ gap: var(--space-2, 0.5rem);
1659
+ margin-top: var(--space-4, 1rem);
1660
+ }
1661
+
1662
+ /* ── form/form.css ── */
1172
1663
  .dl-form-item {
1173
1664
  display: flex;
1174
1665
  flex-direction: column;
@@ -1187,7 +1678,7 @@
1187
1678
  color: var(--destructive);
1188
1679
  }
1189
1680
 
1190
- /* ── hover-card ── */
1681
+ /* ── hover-card/hover-card.css ── */
1191
1682
  .dl-hover-card {
1192
1683
  z-index: 50;
1193
1684
  width: 16rem;
@@ -1212,7 +1703,7 @@
1212
1703
  dl-zoom-out 150ms ease;
1213
1704
  }
1214
1705
 
1215
- /* ── input ── */
1706
+ /* ── input/input.css ── */
1216
1707
  .dl-input-wrapper {
1217
1708
  position: relative;
1218
1709
  display: inline-flex;
@@ -1303,7 +1794,7 @@
1303
1794
  -webkit-appearance: none;
1304
1795
  }
1305
1796
 
1306
- /* ── input-otp ── */
1797
+ /* ── input-otp/input-otp.css ── */
1307
1798
  .dl-input-otp-container {
1308
1799
  display: flex;
1309
1800
  align-items: center;
@@ -1375,7 +1866,7 @@
1375
1866
  animation: dl-pulse 1s infinite;
1376
1867
  }
1377
1868
 
1378
- /* ── label ── */
1869
+ /* ── label/label.css ── */
1379
1870
  .dl-label {
1380
1871
  font-size: 0.75rem;
1381
1872
  font-weight: 500;
@@ -1390,7 +1881,7 @@
1390
1881
  margin-inline-start: 0.25rem;
1391
1882
  }
1392
1883
 
1393
- /* ── loading-state ── */
1884
+ /* ── loading-state/loading-state.css ── */
1394
1885
  .dl-loading {
1395
1886
  display: flex;
1396
1887
  flex-direction: column;
@@ -1418,16 +1909,27 @@
1418
1909
  gap: 0.5rem;
1419
1910
  }
1420
1911
 
1421
- /* ── menubar ── */
1912
+ .dl-loading-skeleton__header {
1913
+ height: 2rem;
1914
+ width: 33.333%;
1915
+ }
1916
+
1917
+ .dl-loading-skeleton__row {
1918
+ height: 4rem;
1919
+ width: 100%;
1920
+ border-radius: var(--radius-lg, 0.75rem);
1921
+ }
1922
+
1923
+ /* ── menubar/menubar.css ── */
1422
1924
  .dl-menubar {
1423
1925
  display: flex;
1424
- height: 2.25rem;
1926
+ height: var(--control-height-md, 2.25rem);
1425
1927
  align-items: center;
1426
- gap: 0.25rem;
1928
+ gap: var(--space-1, 0.25rem);
1427
1929
  border-radius: var(--radius-md, 0.375rem);
1428
1930
  border: 1px solid var(--border);
1429
1931
  background-color: var(--background);
1430
- padding: 0.25rem;
1932
+ padding: var(--space-1, 0.25rem);
1431
1933
  box-shadow: 0 1px 2px rgb(0 0 0 / 0.05);
1432
1934
  }
1433
1935
 
@@ -1437,7 +1939,7 @@
1437
1939
  user-select: none;
1438
1940
  align-items: center;
1439
1941
  border-radius: var(--radius-sm, 0.25rem);
1440
- padding: 0.25rem 0.75rem;
1942
+ padding: var(--space-1, 0.25rem) var(--space-3, 0.75rem);
1441
1943
  font-size: 0.875rem;
1442
1944
  font-weight: 500;
1443
1945
  outline: none;
@@ -1456,7 +1958,7 @@
1456
1958
  color: var(--accent-foreground);
1457
1959
  }
1458
1960
 
1459
- /* ── metric-card ── */
1961
+ /* ── metric-card/metric-card.css ── */
1460
1962
  .dl-metrics-grid {
1461
1963
  display: grid;
1462
1964
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
@@ -1526,7 +2028,7 @@
1526
2028
  color: var(--destructive);
1527
2029
  }
1528
2030
 
1529
- /* ── navigation-menu ── */
2031
+ /* ── navigation-menu/navigation-menu.css ── */
1530
2032
  .dl-navigation-menu {
1531
2033
  position: relative;
1532
2034
  z-index: 10;
@@ -1550,13 +2052,13 @@
1550
2052
 
1551
2053
  .dl-navigation-menu-trigger {
1552
2054
  display: inline-flex;
1553
- height: 2.25rem;
2055
+ height: var(--control-height-md, 2.25rem);
1554
2056
  width: max-content;
1555
2057
  align-items: center;
1556
2058
  justify-content: center;
1557
2059
  border-radius: var(--radius-md, 0.375rem);
1558
2060
  background-color: var(--background);
1559
- padding: 0.5rem 1rem;
2061
+ padding: var(--space-2, 0.5rem) var(--space-4, 1rem);
1560
2062
  font-size: 0.875rem;
1561
2063
  font-weight: 500;
1562
2064
  cursor: pointer;
@@ -1665,7 +2167,7 @@
1665
2167
  box-shadow: 0 2px 4px rgb(0 0 0 / 0.1);
1666
2168
  }
1667
2169
 
1668
- /* ── pagination ── */
2170
+ /* ── pagination/pagination.css ── */
1669
2171
  .dl-pagination {
1670
2172
  margin-inline: auto;
1671
2173
  display: flex;
@@ -1697,12 +2199,18 @@
1697
2199
  padding-inline-end: 0.625rem;
1698
2200
  }
1699
2201
 
2202
+ .dl-pagination-icon {
2203
+ width: 1rem;
2204
+ height: 1rem;
2205
+ flex-shrink: 0;
2206
+ }
2207
+
1700
2208
  .dl-pagination-ellipsis {
1701
2209
  display: flex;
1702
2210
  align-items: center;
1703
2211
  justify-content: center;
1704
- width: 2.25rem;
1705
- height: 2.25rem;
2212
+ width: var(--control-height-md, 2.25rem);
2213
+ height: var(--control-height-md, 2.25rem);
1706
2214
  }
1707
2215
 
1708
2216
  .dl-pagination-ellipsis svg {
@@ -1710,7 +2218,7 @@
1710
2218
  height: 1rem;
1711
2219
  }
1712
2220
 
1713
- /* ── panel ── */
2221
+ /* ── panel/panel.css ── */
1714
2222
  .dl-panel {
1715
2223
  border-radius: var(--radius-lg, 0.5rem);
1716
2224
  border: 1px solid var(--border);
@@ -1736,15 +2244,15 @@
1736
2244
  color: var(--muted-foreground);
1737
2245
  }
1738
2246
 
1739
- /* ── popover ── */
2247
+ /* ── popover/popover.css ── */
1740
2248
  .dl-popover {
1741
2249
  z-index: 50;
1742
2250
  width: 18rem;
1743
- border-radius: var(--radius-lg, 0.5rem);
2251
+ border-radius: var(--radius, 0.5rem);
1744
2252
  border: 1px solid var(--border);
1745
2253
  background-color: var(--popover);
1746
2254
  color: var(--popover-foreground);
1747
- padding: 1rem;
2255
+ padding: var(--space-4, 1rem);
1748
2256
  box-shadow: 0 4px 24px rgb(0 0 0/0.12);
1749
2257
  outline: none;
1750
2258
  }
@@ -1755,7 +2263,12 @@
1755
2263
  animation: dl-fade-out 150ms ease;
1756
2264
  }
1757
2265
 
1758
- /* ── progress ── */
2266
+ .dl-popover.dl-date-picker-content {
2267
+ width: auto;
2268
+ padding: 0;
2269
+ }
2270
+
2271
+ /* ── progress/progress.css ── */
1759
2272
  .dl-progress {
1760
2273
  position: relative;
1761
2274
  height: 0.5rem;
@@ -1772,7 +2285,7 @@
1772
2285
  transform-origin: left;
1773
2286
  }
1774
2287
 
1775
- /* ── radio-group ── */
2288
+ /* ── radio-group/radio-group.css ── */
1776
2289
  .dl-radio-group {
1777
2290
  display: grid;
1778
2291
  gap: 0.5rem;
@@ -1811,7 +2324,7 @@
1811
2324
  height: 0.5625rem;
1812
2325
  }
1813
2326
 
1814
- /* ── resizable ── */
2327
+ /* ── resizable/resizable.css ── */
1815
2328
  .dl-resizable-group {
1816
2329
  display: flex;
1817
2330
  width: 100%;
@@ -1880,7 +2393,7 @@
1880
2393
  height: 0.625rem;
1881
2394
  }
1882
2395
 
1883
- /* ── scroll-area ── */
2396
+ /* ── scroll-area/scroll-area.css ── */
1884
2397
  .dl-scroll-area {
1885
2398
  position: relative;
1886
2399
  overflow: hidden;
@@ -1914,7 +2427,7 @@
1914
2427
  background-color: var(--border);
1915
2428
  }
1916
2429
 
1917
- /* ── searchable-select ── */
2430
+ /* ── searchable-select/searchable-select.css ── */
1918
2431
  .dl-searchable-select-trigger {
1919
2432
  width: 100%;
1920
2433
  justify-content: space-between;
@@ -1939,7 +2452,7 @@
1939
2452
  align-items: center;
1940
2453
  gap: 0.5rem;
1941
2454
  border-bottom: 1px solid var(--border);
1942
- padding: 0.5rem;
2455
+ padding: var(--space-2, 0.5rem);
1943
2456
  }
1944
2457
 
1945
2458
  .dl-searchable-select-search-icon {
@@ -1951,10 +2464,10 @@
1951
2464
  }
1952
2465
 
1953
2466
  .dl-searchable-select-search-input {
1954
- height: 2rem;
2467
+ height: var(--control-height-sm, 2rem);
1955
2468
  border: none;
1956
2469
  background: transparent;
1957
- padding-inline: 0.25rem;
2470
+ padding-inline: var(--space-1, 0.25rem);
1958
2471
  font-size: 0.875rem;
1959
2472
  box-shadow: none;
1960
2473
  }
@@ -1981,6 +2494,10 @@
1981
2494
  color: var(--muted-foreground);
1982
2495
  }
1983
2496
 
2497
+ .dl-searchable-select-group {
2498
+ padding-block: 0.25rem;
2499
+ }
2500
+
1984
2501
  .dl-searchable-select-group-header {
1985
2502
  padding-inline: 0.5rem;
1986
2503
  padding-block: 0.25rem;
@@ -2018,6 +2535,19 @@
2018
2535
  font-weight: 500;
2019
2536
  }
2020
2537
 
2538
+ .dl-searchable-select-item-text {
2539
+ flex: 1 1 0%;
2540
+ overflow: hidden;
2541
+ text-overflow: ellipsis;
2542
+ white-space: nowrap;
2543
+ }
2544
+
2545
+ .dl-searchable-select-truncate {
2546
+ overflow: hidden;
2547
+ text-overflow: ellipsis;
2548
+ white-space: nowrap;
2549
+ }
2550
+
2021
2551
  .dl-searchable-select-add {
2022
2552
  border-top: 1px solid var(--border);
2023
2553
  background-color: color-mix(in oklch, var(--muted) 30%, transparent);
@@ -2044,7 +2574,13 @@
2044
2574
  background-color: color-mix(in oklch, var(--primary) 10%, transparent);
2045
2575
  }
2046
2576
 
2047
- /* ── secret-reveal-card ── */
2577
+ .dl-searchable-select-add-icon {
2578
+ width: 0.875rem;
2579
+ height: 0.875rem;
2580
+ flex-shrink: 0;
2581
+ }
2582
+
2583
+ /* ── secret-reveal-card/secret-reveal-card.css ── */
2048
2584
  .dl-secret-reveal {
2049
2585
  border-radius: var(--radius, 0.5rem);
2050
2586
  border: 1px solid var(--border);
@@ -2064,6 +2600,12 @@
2064
2600
  line-height: 1.4;
2065
2601
  }
2066
2602
 
2603
+ .dl-secret-reveal__warning svg {
2604
+ flex-shrink: 0;
2605
+ width: 1rem;
2606
+ height: 1rem;
2607
+ }
2608
+
2067
2609
  .dl-secret-reveal__code-wrap {
2068
2610
  display: flex;
2069
2611
  align-items: center;
@@ -2073,6 +2615,7 @@
2073
2615
  border: 1px solid var(--border);
2074
2616
  border-radius: calc(var(--radius, 0.5rem) - 2px);
2075
2617
  padding: 0.5rem 0.75rem;
2618
+ flex-wrap: nowrap;
2076
2619
  }
2077
2620
 
2078
2621
  .dl-secret-reveal__code {
@@ -2081,9 +2624,11 @@
2081
2624
  color: var(--primary);
2082
2625
  word-break: break-all;
2083
2626
  user-select: all;
2627
+ min-width: 0;
2628
+ flex: 1;
2084
2629
  }
2085
2630
 
2086
- /* ── select ── */
2631
+ /* ── select/select.css ── */
2087
2632
  .dl-select-trigger {
2088
2633
  display: inline-flex;
2089
2634
  width: 100%;
@@ -2118,12 +2663,23 @@
2118
2663
  opacity: 0.5;
2119
2664
  cursor: not-allowed;
2120
2665
  }
2121
- .dl-select-trigger > svg {
2666
+ .dl-select-trigger svg {
2122
2667
  opacity: 0.5;
2123
2668
  width: 1rem;
2124
2669
  height: 1rem;
2125
2670
  flex-shrink: 0;
2126
2671
  }
2672
+ .dl-select-scroll-btn {
2673
+ display: flex;
2674
+ cursor: default;
2675
+ align-items: center;
2676
+ justify-content: center;
2677
+ padding-block: 0.25rem;
2678
+ }
2679
+ .dl-select-scroll-btn svg {
2680
+ width: 1rem;
2681
+ height: 1rem;
2682
+ }
2127
2683
 
2128
2684
  /* Sizes */
2129
2685
  .dl-select-trigger--sm {
@@ -2198,6 +2754,10 @@
2198
2754
  width: 0.875rem;
2199
2755
  height: 0.875rem;
2200
2756
  }
2757
+ .dl-select-item__indicator svg {
2758
+ width: 0.75rem;
2759
+ height: 0.75rem;
2760
+ }
2201
2761
  .dl-select-label {
2202
2762
  padding: 0.25rem 0.5rem;
2203
2763
  font-size: 0.6875rem;
@@ -2210,7 +2770,7 @@
2210
2770
  background-color: var(--border);
2211
2771
  }
2212
2772
 
2213
- /* ── separator ── */
2773
+ /* ── separator/separator.css ── */
2214
2774
  .dl-separator {
2215
2775
  background-color: var(--border);
2216
2776
  flex-shrink: 0;
@@ -2226,7 +2786,7 @@
2226
2786
  margin: 0 0.25rem;
2227
2787
  }
2228
2788
 
2229
- /* ── sheet ── */
2789
+ /* ── sheet/sheet.css ── */
2230
2790
  /* ═══════════════════════════════════════════════════════════════════════
2231
2791
  SHEET (side drawer)
2232
2792
  ═══════════════════════════════════════════════════════════════════════ */
@@ -2235,7 +2795,7 @@
2235
2795
  z-index: 50;
2236
2796
  gap: 1rem;
2237
2797
  background-color: var(--background);
2238
- padding: 1.5rem;
2798
+ padding: var(--dialog-padding, 1.5rem);
2239
2799
  box-shadow: 0 8px 40px rgb(0 0 0/0.2);
2240
2800
  }
2241
2801
  .dl-sheet-content--right {
@@ -2292,6 +2852,10 @@
2292
2852
  outline: 2px solid var(--ring);
2293
2853
  outline-offset: 2px;
2294
2854
  }
2855
+ .dl-sheet-close svg {
2856
+ width: 1rem;
2857
+ height: 1rem;
2858
+ }
2295
2859
  .dl-sheet__header {
2296
2860
  display: flex;
2297
2861
  flex-direction: column;
@@ -2311,19 +2875,276 @@
2311
2875
  color: var(--muted-foreground);
2312
2876
  }
2313
2877
 
2314
- /* ── sidebar ── */
2315
- .dl-sidebar-wrapper {
2878
+ /* ── sidebar/sidebar-menu.css ── */
2879
+ .dl-sidebar-group {
2880
+ position: relative;
2881
+ display: flex;
2882
+ width: 100%;
2883
+ min-width: 0;
2884
+ flex-direction: column;
2885
+ padding: var(--space-2, 0.5rem);
2886
+ }
2887
+ .dl-sidebar-group-label {
2888
+ display: flex;
2889
+ height: var(--control-height-sm, 2rem);
2890
+ flex-shrink: 0;
2891
+ align-items: center;
2892
+ border-radius: var(--radius-md, 0.375rem);
2893
+ padding-inline: var(--space-2, 0.5rem);
2894
+ font-size: 0.75rem;
2895
+ font-weight: 500;
2896
+ color: color-mix(in oklch, var(--sidebar-foreground) 70%, transparent);
2897
+ outline: none;
2898
+ transition:
2899
+ margin 0.2s ease-linear,
2900
+ opacity 0.2s ease-linear;
2901
+ }
2902
+ .dl-sidebar-group-label svg {
2903
+ width: 1rem;
2904
+ height: 1rem;
2905
+ }
2906
+ [data-collapsible="icon"] .dl-sidebar-group-label {
2907
+ margin-top: -2rem;
2908
+ opacity: 0;
2909
+ }
2910
+
2911
+ .dl-sidebar-group-action {
2912
+ position: absolute;
2913
+ right: 0.75rem;
2914
+ top: 0.875rem;
2915
+ display: flex;
2916
+ aspect-ratio: 1 / 1;
2917
+ width: 1.25rem;
2918
+ align-items: center;
2919
+ justify-content: center;
2920
+ border-radius: var(--radius-md, 0.375rem);
2921
+ padding: 0;
2922
+ background: transparent;
2923
+ border: none;
2924
+ color: var(--sidebar-foreground);
2925
+ outline: none;
2926
+ cursor: pointer;
2927
+ }
2928
+ .dl-sidebar-group-action:hover {
2929
+ background-color: var(--sidebar-accent);
2930
+ color: var(--sidebar-accent-foreground);
2931
+ }
2932
+ [data-collapsible="icon"] .dl-sidebar-group-action {
2933
+ display: none;
2934
+ }
2935
+ .dl-sidebar-group-content {
2936
+ width: 100%;
2937
+ font-size: 0.875rem;
2938
+ }
2939
+
2940
+ .dl-sidebar-menu {
2941
+ display: flex;
2942
+ width: 100%;
2943
+ min-width: 0;
2944
+ flex-direction: column;
2945
+ gap: 0.25rem;
2946
+ list-style: none;
2947
+ padding: 0;
2948
+ margin: 0;
2949
+ }
2950
+ .dl-sidebar-menu-item {
2951
+ position: relative;
2952
+ list-style: none;
2953
+ }
2954
+
2955
+ .dl-sidebar-menu-button {
2316
2956
  display: flex;
2317
- min-height: 100vh;
2318
2957
  width: 100%;
2958
+ align-items: center;
2959
+ gap: 0.5rem;
2960
+ overflow: hidden;
2961
+ border-radius: var(--radius-md, 0.375rem);
2962
+ padding: 0.5rem;
2963
+ text-align: left;
2964
+ outline: none;
2965
+ border: none;
2966
+ background: transparent;
2967
+ color: inherit;
2968
+ cursor: pointer;
2969
+ text-decoration: none;
2970
+ box-sizing: border-box;
2971
+ transition:
2972
+ width 0.15s ease,
2973
+ height 0.15s ease,
2974
+ padding 0.15s ease,
2975
+ background-color 0.15s ease,
2976
+ color 0.15s ease;
2977
+ }
2978
+ .dl-sidebar-menu-button:hover,
2979
+ .dl-sidebar-menu-button[data-state="open"] {
2980
+ background-color: var(--sidebar-accent);
2981
+ color: var(--sidebar-accent-foreground);
2982
+ }
2983
+ .dl-sidebar-menu-button:active,
2984
+ .dl-sidebar-menu-button[data-active="true"] {
2985
+ background-color: var(--sidebar-accent);
2986
+ color: var(--sidebar-accent-foreground);
2987
+ font-weight: 500;
2988
+ }
2989
+ .dl-sidebar-menu-button:disabled,
2990
+ .dl-sidebar-menu-button[aria-disabled="true"] {
2991
+ pointer-events: none;
2992
+ opacity: 0.5;
2993
+ cursor: not-allowed;
2994
+ }
2995
+ .dl-sidebar-menu-button svg {
2996
+ width: 1rem;
2997
+ height: 1rem;
2998
+ flex-shrink: 0;
2999
+ }
3000
+ .dl-sidebar-menu-button > span:last-child {
3001
+ overflow: hidden;
3002
+ text-overflow: ellipsis;
3003
+ white-space: nowrap;
3004
+ }
3005
+ .dl-sidebar-menu-button[data-size="default"] {
3006
+ height: var(--control-height-sm, 2rem);
3007
+ font-size: 0.875rem;
3008
+ }
3009
+ .dl-sidebar-menu-button[data-size="sm"] {
3010
+ height: var(--control-height-xs, 1.75rem);
3011
+ font-size: 0.75rem;
3012
+ }
3013
+ .dl-sidebar-menu-button[data-size="lg"] {
3014
+ height: var(--control-height-xl, 3rem);
3015
+ font-size: 0.875rem;
3016
+ }
3017
+ .dl-sidebar-menu-button[data-variant="outline"] {
3018
+ background-color: var(--background);
3019
+ box-shadow: 0 0 0 1px var(--sidebar-border);
3020
+ }
3021
+ .dl-sidebar-menu-button[data-variant="outline"]:hover {
3022
+ box-shadow: 0 0 0 1px var(--sidebar-accent);
3023
+ }
3024
+ [data-collapsible="icon"] .dl-sidebar-menu-button {
3025
+ width: var(--control-height-sm, 2rem) !important;
3026
+ height: var(--control-height-sm, 2rem) !important;
3027
+ padding: var(--space-2, 0.5rem) !important;
3028
+ }
3029
+ [data-collapsible="icon"] .dl-sidebar-menu-button[data-size="lg"] {
3030
+ padding: 0 !important;
3031
+ }
3032
+
3033
+ .dl-sidebar-menu-action {
3034
+ position: absolute;
3035
+ right: 0.25rem;
3036
+ top: 0.375rem;
3037
+ display: flex;
3038
+ aspect-ratio: 1 / 1;
3039
+ width: 1.25rem;
3040
+ align-items: center;
3041
+ justify-content: center;
3042
+ border-radius: var(--radius-md, 0.375rem);
3043
+ padding: 0;
3044
+ border: none;
3045
+ background: transparent;
3046
+ color: var(--sidebar-foreground);
3047
+ cursor: pointer;
3048
+ outline: none;
3049
+ }
3050
+ .dl-sidebar-menu-action:hover {
3051
+ background-color: var(--sidebar-accent);
3052
+ color: var(--sidebar-accent-foreground);
3053
+ }
3054
+ .dl-sidebar-menu-action svg {
3055
+ width: 1rem;
3056
+ height: 1rem;
3057
+ flex-shrink: 0;
3058
+ }
3059
+ [data-collapsible="icon"] .dl-sidebar-menu-action {
3060
+ display: none;
3061
+ }
3062
+
3063
+ /* ── sidebar/sidebar-submenu.css ── */
3064
+ .dl-sidebar-menu-badge {
3065
+ pointer-events: none;
3066
+ position: absolute;
3067
+ right: 0.25rem;
3068
+ display: flex;
3069
+ height: 1.25rem;
3070
+ min-width: 1.25rem;
3071
+ align-items: center;
3072
+ justify-content: center;
3073
+ border-radius: var(--radius-md, 0.375rem);
3074
+ padding-inline: 0.25rem;
3075
+ font-size: 0.75rem;
3076
+ font-weight: 500;
3077
+ font-variant-numeric: tabular-nums;
3078
+ color: var(--sidebar-foreground);
3079
+ }
3080
+ [data-collapsible="icon"] .dl-sidebar-menu-badge {
3081
+ display: none;
2319
3082
  }
2320
3083
 
3084
+ .dl-sidebar-menu-skeleton {
3085
+ display: flex;
3086
+ height: var(--control-height-sm, 2rem);
3087
+ align-items: center;
3088
+ gap: var(--space-2, 0.5rem);
3089
+ border-radius: var(--radius-md, 0.375rem);
3090
+ padding-inline: var(--space-2, 0.5rem);
3091
+ }
3092
+
3093
+ .dl-sidebar-menu-sub {
3094
+ margin-inline: 0.875rem;
3095
+ display: flex;
3096
+ min-width: 0;
3097
+ flex-direction: column;
3098
+ gap: var(--space-1, 0.25rem);
3099
+ border-left: 1px solid var(--sidebar-border);
3100
+ padding-inline: 0.625rem;
3101
+ padding-block: 0.125rem;
3102
+ list-style: none;
3103
+ }
3104
+ [data-collapsible="icon"] .dl-sidebar-menu-sub {
3105
+ display: none;
3106
+ }
3107
+
3108
+ .dl-sidebar-menu-sub-button {
3109
+ display: flex;
3110
+ height: var(--control-height-xs, 1.75rem);
3111
+ min-width: 0;
3112
+ align-items: center;
3113
+ gap: var(--space-2, 0.5rem);
3114
+ overflow: hidden;
3115
+ border-radius: var(--radius-md, 0.375rem);
3116
+ padding-inline: var(--space-2, 0.5rem);
3117
+ color: var(--sidebar-foreground);
3118
+ cursor: pointer;
3119
+ text-decoration: none;
3120
+ font-size: 0.875rem;
3121
+ }
3122
+ .dl-sidebar-menu-sub-button[data-size="sm"] {
3123
+ font-size: 0.75rem;
3124
+ }
3125
+ .dl-sidebar-menu-sub-button:hover,
3126
+ .dl-sidebar-menu-sub-button[data-active="true"] {
3127
+ background-color: var(--sidebar-accent);
3128
+ color: var(--sidebar-accent-foreground);
3129
+ }
3130
+ [data-collapsible="icon"] .dl-sidebar-menu-sub-button {
3131
+ display: none;
3132
+ }
3133
+
3134
+ /* ── sidebar/sidebar.css ── */
3135
+ .dl-sidebar-wrapper {
3136
+ display: flex;
3137
+ min-height: 100svh;
3138
+ width: 100%;
3139
+ }
3140
+ .dl-sidebar-wrapper[data-has-inset="true"] {
3141
+ background-color: var(--sidebar);
3142
+ }
2321
3143
  .dl-sidebar-input {
2322
- height: 2rem;
3144
+ height: var(--control-height-sm, 2rem);
2323
3145
  background-color: var(--background);
2324
3146
  box-shadow: none;
2325
3147
  }
2326
-
2327
3148
  .dl-sidebar-input:focus,
2328
3149
  .dl-sidebar-input:focus-visible {
2329
3150
  border-color: var(--sidebar-ring);
@@ -2331,14 +3152,180 @@
2331
3152
  color-mix(in oklch, var(--sidebar-ring) 25%, transparent);
2332
3153
  }
2333
3154
 
2334
- /* ── skeleton ── */
3155
+ .dl-sidebar-desktop-spacer {
3156
+ position: relative;
3157
+ width: var(--sidebar-width, 16rem);
3158
+ background-color: transparent;
3159
+ transition: width 0.2s linear;
3160
+ }
3161
+ [data-collapsible="offcanvas"] .dl-sidebar-desktop-spacer {
3162
+ width: 0;
3163
+ }
3164
+ [data-side="right"] .dl-sidebar-desktop-spacer {
3165
+ transform: rotate(180deg);
3166
+ }
3167
+ [data-variant="floating"][data-collapsible="icon"] .dl-sidebar-desktop-spacer,
3168
+ [data-variant="inset"][data-collapsible="icon"] .dl-sidebar-desktop-spacer {
3169
+ width: calc(var(--sidebar-width-icon, 3rem) + 1rem);
3170
+ }
3171
+ [data-collapsible="icon"] .dl-sidebar-desktop-spacer {
3172
+ width: var(--sidebar-width-icon, 3rem);
3173
+ }
3174
+
3175
+ .dl-sidebar-fixed {
3176
+ position: fixed;
3177
+ inset-block: 0;
3178
+ z-index: 10;
3179
+ display: none;
3180
+ height: 100svh;
3181
+ width: var(--sidebar-width, 16rem);
3182
+ transition:
3183
+ left 0.2s linear,
3184
+ right 0.2s linear,
3185
+ width 0.2s linear;
3186
+ }
3187
+ @media (min-width: 768px) {
3188
+ .dl-sidebar-fixed {
3189
+ display: flex;
3190
+ }
3191
+ }
3192
+ [data-side="left"] .dl-sidebar-fixed {
3193
+ left: 0;
3194
+ border-right: 1px solid var(--sidebar-border);
3195
+ }
3196
+ [data-side="left"][data-state="collapsed"][data-collapsible="offcanvas"]
3197
+ .dl-sidebar-fixed {
3198
+ left: calc(-1 * var(--sidebar-width, 16rem));
3199
+ }
3200
+ [data-side="right"] .dl-sidebar-fixed {
3201
+ right: 0;
3202
+ border-left: 1px solid var(--sidebar-border);
3203
+ }
3204
+ [data-side="right"][data-state="collapsed"][data-collapsible="offcanvas"]
3205
+ .dl-sidebar-fixed {
3206
+ right: calc(-1 * var(--sidebar-width, 16rem));
3207
+ }
3208
+ [data-variant="floating"] .dl-sidebar-fixed,
3209
+ [data-variant="inset"] .dl-sidebar-fixed {
3210
+ padding: var(--space-2, 0.5rem);
3211
+ border: none;
3212
+ }
3213
+ [data-variant="floating"][data-collapsible="icon"] .dl-sidebar-fixed,
3214
+ [data-variant="inset"][data-collapsible="icon"] .dl-sidebar-fixed {
3215
+ width: calc(var(--sidebar-width-icon, 3rem) + 1rem + 2px);
3216
+ }
3217
+ [data-collapsible="icon"] .dl-sidebar-fixed {
3218
+ width: var(--sidebar-width-icon, 3rem);
3219
+ }
3220
+
3221
+ .dl-sidebar-inner {
3222
+ display: flex;
3223
+ flex-direction: column;
3224
+ width: 100%;
3225
+ height: 100%;
3226
+ background-color: var(--sidebar);
3227
+ color: var(--sidebar-foreground);
3228
+ }
3229
+ [data-variant="floating"] .dl-sidebar-inner {
3230
+ border-radius: var(--radius-lg, 0.5rem);
3231
+ border: 1px solid var(--sidebar-border);
3232
+ box-shadow: var(--shadow-sm, 0 1px 2px 0 rgb(0 0 0 / 0.05));
3233
+ }
3234
+
3235
+ .dl-sidebar-mobile-content {
3236
+ display: flex;
3237
+ flex-direction: column;
3238
+ width: 100%;
3239
+ height: 100%;
3240
+ }
3241
+ .dl-sidebar-trigger {
3242
+ width: var(--control-height-xs, 1.75rem);
3243
+ height: var(--control-height-xs, 1.75rem);
3244
+ padding: 0;
3245
+ }
3246
+
3247
+ .dl-sidebar-rail {
3248
+ position: absolute;
3249
+ inset-block: 0;
3250
+ z-index: 20;
3251
+ display: none;
3252
+ width: 1rem;
3253
+ transform: translateX(-50%);
3254
+ background: transparent;
3255
+ border: none;
3256
+ cursor: col-resize;
3257
+ padding: 0;
3258
+ transition: all 0.2s linear;
3259
+ }
3260
+ @media (min-width: 640px) {
3261
+ .dl-sidebar-rail {
3262
+ display: flex;
3263
+ }
3264
+ }
3265
+ .dl-sidebar-rail::after {
3266
+ content: "";
3267
+ position: absolute;
3268
+ inset-block: 0;
3269
+ left: 50%;
3270
+ width: 2px;
3271
+ }
3272
+ .dl-sidebar-rail:hover::after {
3273
+ background-color: var(--sidebar-border);
3274
+ }
3275
+ [data-side="left"] .dl-sidebar-rail {
3276
+ right: -1rem;
3277
+ }
3278
+ [data-side="right"] .dl-sidebar-rail {
3279
+ left: 0;
3280
+ }
3281
+
3282
+ .dl-sidebar-inset {
3283
+ position: relative;
3284
+ display: flex;
3285
+ width: 100%;
3286
+ flex: 1 1 0%;
3287
+ flex-direction: column;
3288
+ background-color: var(--background);
3289
+ }
3290
+ @media (min-width: 768px) {
3291
+ .dl-sidebar[data-variant="inset"] ~ .dl-sidebar-inset,
3292
+ [data-variant="inset"] .dl-sidebar-inset {
3293
+ margin: var(--space-2, 0.5rem);
3294
+ margin-left: 0;
3295
+ border-radius: var(--radius-xl, 0.75rem);
3296
+ box-shadow: var(--shadow-sm, 0 1px 2px 0 rgb(0 0 0 / 0.05));
3297
+ }
3298
+ }
3299
+
3300
+ .dl-sidebar-header,
3301
+ .dl-sidebar-footer {
3302
+ display: flex;
3303
+ flex-direction: column;
3304
+ gap: var(--space-2, 0.5rem);
3305
+ padding: var(--space-2, 0.5rem);
3306
+ }
3307
+ .dl-sidebar-separator {
3308
+ margin-inline: var(--space-2, 0.5rem);
3309
+ width: auto;
3310
+ background-color: var(--sidebar-border);
3311
+ }
3312
+ .dl-sidebar-content {
3313
+ display: flex;
3314
+ min-height: 0;
3315
+ flex: 1 1 0%;
3316
+ flex-direction: column;
3317
+ gap: var(--space-2, 0.5rem);
3318
+ overflow: auto;
3319
+ }
3320
+
3321
+ /* ── skeleton/skeleton.css ── */
2335
3322
  .dl-skeleton {
2336
3323
  border-radius: var(--radius-md, 0.375rem);
2337
3324
  background-color: color-mix(in oklch, var(--primary) 10%, var(--muted));
2338
3325
  animation: dl-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
2339
3326
  }
2340
3327
 
2341
- /* ── slider ── */
3328
+ /* ── slider/slider.css ── */
2342
3329
  .dl-slider {
2343
3330
  position: relative;
2344
3331
  display: flex;
@@ -2377,7 +3364,7 @@
2377
3364
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--ring) 30%, transparent);
2378
3365
  }
2379
3366
 
2380
- /* ── sonner ── */
3367
+ /* ── sonner/sonner.css ── */
2381
3368
  .dl-toaster {
2382
3369
  font-family: inherit;
2383
3370
  --normal-bg: var(--card, var(--background));
@@ -2433,7 +3420,7 @@
2433
3420
  color: var(--card-foreground, var(--foreground));
2434
3421
  }
2435
3422
 
2436
- /* ── status-badge ── */
3423
+ /* ── status-badge/status-badge.css ── */
2437
3424
  .dl-status-badge {
2438
3425
  display: inline-flex;
2439
3426
  align-items: center;
@@ -2488,7 +3475,7 @@
2488
3475
  border-color: var(--border);
2489
3476
  }
2490
3477
 
2491
- /* ── status-chip ── */
3478
+ /* ── status-chip/status-chip.css ── */
2492
3479
  .dl-status-chip {
2493
3480
  display: inline-flex;
2494
3481
  align-items: center;
@@ -2534,7 +3521,7 @@
2534
3521
  color: var(--muted-foreground);
2535
3522
  }
2536
3523
 
2537
- /* ── switch ── */
3524
+ /* ── switch/switch.css ── */
2538
3525
  .dl-switch {
2539
3526
  display: inline-flex;
2540
3527
  height: 1.25rem;
@@ -2581,7 +3568,7 @@
2581
3568
  transform: translateX(0);
2582
3569
  }
2583
3570
 
2584
- /* ── table ── */
3571
+ /* ── table/table.css ── */
2585
3572
  .dl-table-wrapper {
2586
3573
  position: relative;
2587
3574
  width: 100%;
@@ -2612,15 +3599,17 @@
2612
3599
  transition: background-color 0.1s;
2613
3600
  }
2614
3601
  .dl-table__head-cell {
2615
- height: 2.5rem;
2616
- padding: 0 0.5rem;
3602
+ height: var(--control-height-md, 2.5rem);
3603
+ padding: var(--table-row-padding-y, 0.5rem)
3604
+ var(--table-row-padding-x, 0.75rem);
2617
3605
  text-align: left;
2618
3606
  font-weight: 500;
2619
3607
  color: var(--muted-foreground);
2620
3608
  white-space: nowrap;
2621
3609
  }
2622
3610
  .dl-table__cell {
2623
- padding: 0.75rem 0.5rem;
3611
+ padding: var(--table-row-padding-y, 0.75rem)
3612
+ var(--table-row-padding-x, 0.75rem);
2624
3613
  vertical-align: middle;
2625
3614
  }
2626
3615
  .dl-table__caption {
@@ -2629,13 +3618,13 @@
2629
3618
  color: var(--muted-foreground);
2630
3619
  }
2631
3620
 
2632
- /* ── tabs ── */
3621
+ /* ── tabs/tabs.css ── */
2633
3622
  .dl-tabs-list {
2634
3623
  display: inline-flex;
2635
- height: 2.25rem;
3624
+ height: var(--control-height-md, 2.25rem);
2636
3625
  align-items: center;
2637
3626
  justify-content: center;
2638
- border-radius: var(--radius-lg, 0.5rem);
3627
+ border-radius: var(--radius, 0.5rem);
2639
3628
  background-color: var(--muted);
2640
3629
  padding: 0.25rem;
2641
3630
  color: var(--muted-foreground);
@@ -2645,7 +3634,7 @@
2645
3634
  align-items: center;
2646
3635
  justify-content: center;
2647
3636
  white-space: nowrap;
2648
- border-radius: var(--radius-md, 0.375rem);
3637
+ border-radius: calc(var(--radius, 0.5rem) - 2px);
2649
3638
  padding: 0.25rem 0.75rem;
2650
3639
  font-size: 0.875rem;
2651
3640
  font-weight: 500;
@@ -2677,16 +3666,16 @@
2677
3666
  outline-offset: 2px;
2678
3667
  }
2679
3668
 
2680
- /* ── textarea ── */
3669
+ /* ── textarea/textarea.css ── */
2681
3670
  .dl-textarea {
2682
3671
  display: block;
2683
3672
  min-height: 4rem;
2684
3673
  width: 100%;
2685
- border-radius: var(--radius-md, 0.375rem);
3674
+ border-radius: var(--radius, 0.375rem);
2686
3675
  border: 1px solid var(--input);
2687
3676
  background-color: transparent;
2688
- padding-block: 0.5rem;
2689
- padding-inline: 0.75rem;
3677
+ padding-block: var(--space-2, 0.5rem);
3678
+ padding-inline: var(--space-3, 0.75rem);
2690
3679
  font-size: 0.75rem;
2691
3680
  font-family: inherit;
2692
3681
  color: var(--foreground);
@@ -2709,7 +3698,7 @@
2709
3698
  opacity: 0.5;
2710
3699
  }
2711
3700
 
2712
- /* ── toggle ── */
3701
+ /* ── toggle/toggle.css ── */
2713
3702
  .dl-toggle {
2714
3703
  display: inline-flex;
2715
3704
  align-items: center;
@@ -2777,21 +3766,21 @@
2777
3766
 
2778
3767
  /* Sizes */
2779
3768
  .dl-toggle--size-default {
2780
- height: 2.25rem;
2781
- padding-inline: 0.5rem;
2782
- min-width: 2.25rem;
3769
+ height: var(--control-height-md, 2.25rem);
3770
+ padding-inline: var(--space-2, 0.5rem);
3771
+ min-width: var(--control-height-md, 2.25rem);
2783
3772
  }
2784
3773
 
2785
3774
  .dl-toggle--size-sm {
2786
- height: 2rem;
2787
- padding-inline: 0.375rem;
2788
- min-width: 2rem;
3775
+ height: var(--control-height-sm, 2rem);
3776
+ padding-inline: calc(var(--space-2, 0.5rem) - 2px);
3777
+ min-width: var(--control-height-sm, 2rem);
2789
3778
  }
2790
3779
 
2791
3780
  .dl-toggle--size-lg {
2792
- height: 2.5rem;
2793
- padding-inline: 0.625rem;
2794
- min-width: 2.5rem;
3781
+ height: var(--control-height-lg, 2.5rem);
3782
+ padding-inline: var(--space-3, 0.75rem);
3783
+ min-width: var(--control-height-lg, 2.5rem);
2795
3784
  }
2796
3785
 
2797
3786
  /* Group */
@@ -2802,7 +3791,7 @@
2802
3791
  gap: 0.25rem;
2803
3792
  }
2804
3793
 
2805
- /* ── tooltip ── */
3794
+ /* ── tooltip/tooltip.css ── */
2806
3795
  .dl-tooltip {
2807
3796
  z-index: 50;
2808
3797
  overflow: hidden;
@@ -2820,4 +3809,263 @@
2820
3809
  .dl-tooltip[data-state="closed"] {
2821
3810
  animation: dl-fade-out 100ms ease;
2822
3811
  }
3812
+
3813
+ /* ── typography/typography.css ── */
3814
+ /**
3815
+ * @file typography.css
3816
+ * @description Typography primitive styling and modifier attributes.
3817
+ * Governed by W3C Cascade Layers.
3818
+ */
3819
+
3820
+ @layer dl-components {
3821
+ /* ── Color Modifiers ───────────────────────────────────────────────────── */
3822
+ .dl-heading[data-typography-color="default"],
3823
+ .dl-text[data-typography-color="default"] {
3824
+ color: var(--foreground);
3825
+ }
3826
+
3827
+ .dl-heading[data-typography-color="muted"],
3828
+ .dl-text[data-typography-color="muted"] {
3829
+ color: var(--muted-foreground);
3830
+ }
3831
+
3832
+ .dl-heading[data-typography-color="subtle"],
3833
+ .dl-text[data-typography-color="subtle"] {
3834
+ color: color-mix(in oklch, var(--muted-foreground) 80%, transparent);
3835
+ }
3836
+
3837
+ .dl-heading[data-typography-color="primary"],
3838
+ .dl-text[data-typography-color="primary"] {
3839
+ color: var(--primary);
3840
+ }
3841
+
3842
+ .dl-heading[data-typography-color="destructive"],
3843
+ .dl-text[data-typography-color="destructive"] {
3844
+ color: var(--destructive);
3845
+ }
3846
+
3847
+ .dl-heading[data-typography-color="warning"],
3848
+ .dl-text[data-typography-color="warning"] {
3849
+ color: var(--warning);
3850
+ }
3851
+
3852
+ .dl-heading[data-typography-color="success"],
3853
+ .dl-text[data-typography-color="success"] {
3854
+ color: var(--success);
3855
+ }
3856
+
3857
+ .dl-heading[data-typography-color="info"],
3858
+ .dl-text[data-typography-color="info"] {
3859
+ color: var(--info);
3860
+ }
3861
+
3862
+ /* ── Alignment Modifiers ───────────────────────────────────────────────── */
3863
+ .dl-heading[data-typography-align="left"],
3864
+ .dl-text[data-typography-align="left"] {
3865
+ text-align: left;
3866
+ }
3867
+
3868
+ .dl-heading[data-typography-align="center"],
3869
+ .dl-text[data-typography-align="center"] {
3870
+ text-align: center;
3871
+ }
3872
+
3873
+ .dl-heading[data-typography-align="right"],
3874
+ .dl-text[data-typography-align="right"] {
3875
+ text-align: right;
3876
+ }
3877
+
3878
+ /* ── Truncation Modifier ───────────────────────────────────────────────── */
3879
+ .dl-heading[data-typography-truncate="true"],
3880
+ .dl-text[data-typography-truncate="true"] {
3881
+ overflow: hidden;
3882
+ text-overflow: ellipsis;
3883
+ white-space: nowrap;
3884
+ }
3885
+
3886
+ /* ── Weight Overrides ──────────────────────────────────────────────────── */
3887
+ .dl-heading[data-typography-weight="normal"],
3888
+ .dl-text[data-typography-weight="normal"] {
3889
+ font-weight: 400;
3890
+ }
3891
+
3892
+ .dl-heading[data-typography-weight="medium"],
3893
+ .dl-text[data-typography-weight="medium"] {
3894
+ font-weight: 500;
3895
+ }
3896
+
3897
+ .dl-heading[data-typography-weight="semibold"],
3898
+ .dl-text[data-typography-weight="semibold"] {
3899
+ font-weight: 600;
3900
+ }
3901
+
3902
+ .dl-heading[data-typography-weight="bold"],
3903
+ .dl-text[data-typography-weight="bold"] {
3904
+ font-weight: 700;
3905
+ }
3906
+
3907
+ .dl-heading[data-typography-weight="extrabold"],
3908
+ .dl-text[data-typography-weight="extrabold"] {
3909
+ font-weight: 800;
3910
+ }
3911
+ }
3912
+ }
3913
+
3914
+ /**
3915
+ * @file layout.css
3916
+ * @description Layout primitive styles wrapped in @layer dl-layout.
3917
+ * Governed by semantic design tokens.
3918
+ */
3919
+
3920
+ @layer dl-layout {
3921
+ /* ── Box ───────────────────────────────────────────────────────────── */
3922
+ .dl-box {
3923
+ box-sizing: border-box;
3924
+ }
3925
+
3926
+ /* ── Flex ──────────────────────────────────────────────────────────── */
3927
+ .dl-flex {
3928
+ display: flex;
3929
+ box-sizing: border-box;
3930
+ }
3931
+ .dl-flex--inline {
3932
+ display: inline-flex;
3933
+ }
3934
+
3935
+ .dl-flex--row {
3936
+ flex-direction: row;
3937
+ }
3938
+ .dl-flex--row-reverse {
3939
+ flex-direction: row-reverse;
3940
+ }
3941
+ .dl-flex--col {
3942
+ flex-direction: column;
3943
+ }
3944
+ .dl-flex--col-reverse {
3945
+ flex-direction: column-reverse;
3946
+ }
3947
+
3948
+ .dl-flex--justify-start {
3949
+ justify-content: flex-start;
3950
+ }
3951
+ .dl-flex--justify-center {
3952
+ justify-content: center;
3953
+ }
3954
+ .dl-flex--justify-end {
3955
+ justify-content: flex-end;
3956
+ }
3957
+ .dl-flex--justify-between {
3958
+ justify-content: space-between;
3959
+ }
3960
+ .dl-flex--justify-around {
3961
+ justify-content: space-around;
3962
+ }
3963
+ .dl-flex--justify-evenly {
3964
+ justify-content: space-evenly;
3965
+ }
3966
+
3967
+ .dl-flex--align-start {
3968
+ align-items: flex-start;
3969
+ }
3970
+ .dl-flex--align-center {
3971
+ align-items: center;
3972
+ }
3973
+ .dl-flex--align-end {
3974
+ align-items: flex-end;
3975
+ }
3976
+ .dl-flex--align-stretch {
3977
+ align-items: stretch;
3978
+ }
3979
+ .dl-flex--align-baseline {
3980
+ align-items: baseline;
3981
+ }
3982
+
3983
+ .dl-flex--wrap {
3984
+ flex-wrap: wrap;
3985
+ }
3986
+ .dl-flex--nowrap {
3987
+ flex-wrap: nowrap;
3988
+ }
3989
+ .dl-flex--wrap-reverse {
3990
+ flex-wrap: wrap-reverse;
3991
+ }
3992
+
3993
+ /* ── Stack ─────────────────────────────────────────────────────────── */
3994
+ .dl-stack {
3995
+ display: flex;
3996
+ box-sizing: border-box;
3997
+ }
3998
+ .dl-stack--col {
3999
+ flex-direction: column;
4000
+ }
4001
+ .dl-stack--row {
4002
+ flex-direction: row;
4003
+ }
4004
+
4005
+ /* ── Grid ──────────────────────────────────────────────────────────── */
4006
+ .dl-grid {
4007
+ display: grid;
4008
+ box-sizing: border-box;
4009
+ }
4010
+ .dl-grid--inline {
4011
+ display: inline-grid;
4012
+ }
4013
+
4014
+ /* ── Container ─────────────────────────────────────────────────────── */
4015
+ .dl-container {
4016
+ width: 100%;
4017
+ margin-left: auto;
4018
+ margin-right: auto;
4019
+ box-sizing: border-box;
4020
+ padding-left: var(--space-4, 1rem);
4021
+ padding-right: var(--space-4, 1rem);
4022
+ }
4023
+
4024
+ .dl-container--sm {
4025
+ max-width: 640px;
4026
+ }
4027
+ .dl-container--md {
4028
+ max-width: 768px;
4029
+ }
4030
+ .dl-container--lg {
4031
+ max-width: 1024px;
4032
+ }
4033
+ .dl-container--xl {
4034
+ max-width: 1280px;
4035
+ }
4036
+ .dl-container--2xl {
4037
+ max-width: 1536px;
4038
+ }
4039
+ .dl-container--fluid {
4040
+ max-width: 100%;
4041
+ }
4042
+
4043
+ /* ── Token Gaps ────────────────────────────────────────────────────── */
4044
+ .dl-gap-0 {
4045
+ gap: 0;
4046
+ }
4047
+ .dl-gap-1 {
4048
+ gap: var(--space-1, 0.25rem);
4049
+ }
4050
+ .dl-gap-2 {
4051
+ gap: var(--space-2, 0.5rem);
4052
+ }
4053
+ .dl-gap-3 {
4054
+ gap: var(--space-3, 0.75rem);
4055
+ }
4056
+ .dl-gap-4 {
4057
+ gap: var(--space-4, 1rem);
4058
+ }
4059
+ .dl-gap-5 {
4060
+ gap: var(--space-5, 1.25rem);
4061
+ }
4062
+ .dl-gap-6 {
4063
+ gap: var(--space-6, 1.5rem);
4064
+ }
4065
+ .dl-gap-8 {
4066
+ gap: var(--space-8, 2rem);
4067
+ }
4068
+ .dl-gap-10 {
4069
+ gap: var(--space-10, 2.5rem);
4070
+ }
2823
4071
  }