@yuva-devlab/ui 1.4.4 → 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 (90) hide show
  1. package/README.md +117 -33
  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 +27 -82
  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.mdx +18 -0
  22. package/dist/components/date-picker/date-picker.css +2 -2
  23. package/dist/components/date-picker/date-picker.mdx +18 -0
  24. package/dist/components/dialog/dialog.css +6 -6
  25. package/dist/components/drawer/drawer.mdx +18 -0
  26. package/dist/components/dropdown-menu/dropdown-menu.css +18 -0
  27. package/dist/components/dropdown-menu/dropdown-menu.mdx +18 -0
  28. package/dist/components/empty-state/empty-state.css +67 -0
  29. package/dist/components/empty-state/empty-state.mdx +18 -0
  30. package/dist/components/form/form.mdx +18 -0
  31. package/dist/components/hover-card/hover-card.mdx +18 -0
  32. package/dist/components/input-otp/input-otp.mdx +18 -0
  33. package/dist/components/label/label.mdx +18 -0
  34. package/dist/components/layout/layout.css +158 -0
  35. package/dist/components/layout/layout.mdx +30 -0
  36. package/dist/components/loading-state/loading-state.css +11 -0
  37. package/dist/components/loading-state/loading-state.mdx +18 -0
  38. package/dist/components/menubar/menubar.css +4 -4
  39. package/dist/components/menubar/menubar.mdx +18 -0
  40. package/dist/components/metric-card/metric-card.mdx +18 -0
  41. package/dist/components/navigation-menu/navigation-menu.css +2 -2
  42. package/dist/components/navigation-menu/navigation-menu.mdx +18 -0
  43. package/dist/components/pagination/pagination.css +8 -2
  44. package/dist/components/pagination/pagination.mdx +18 -0
  45. package/dist/components/panel/panel.mdx +18 -0
  46. package/dist/components/popover/popover.css +2 -2
  47. package/dist/components/popover/popover.mdx +18 -0
  48. package/dist/components/radio-group/radio-group.mdx +18 -0
  49. package/dist/components/resizable/resizable.mdx +18 -0
  50. package/dist/components/scroll-area/scroll-area.mdx +18 -0
  51. package/dist/components/searchable-select/searchable-select.css +26 -3
  52. package/dist/components/searchable-select/searchable-select.mdx +18 -0
  53. package/dist/components/secret-reveal-card/secret-reveal-card.css +6 -0
  54. package/dist/components/secret-reveal-card/secret-reveal-card.mdx +18 -0
  55. package/dist/components/select/select.css +16 -1
  56. package/dist/components/separator/separator.mdx +18 -0
  57. package/dist/components/sheet/sheet.css +5 -1
  58. package/dist/components/sheet/sheet.mdx +18 -0
  59. package/dist/components/sidebar/sidebar-menu.css +183 -0
  60. package/dist/components/sidebar/sidebar-submenu.css +69 -0
  61. package/dist/components/sidebar/sidebar.css +171 -4
  62. package/dist/components/sidebar/sidebar.mdx +18 -0
  63. package/dist/components/slider/slider.mdx +18 -0
  64. package/dist/components/status-chip/status-chip.mdx +18 -0
  65. package/dist/components/table/table.css +5 -3
  66. package/dist/components/tabs/tabs.css +3 -3
  67. package/dist/components/textarea/textarea.css +3 -3
  68. package/dist/components/textarea/textarea.mdx +18 -0
  69. package/dist/components/toggle/toggle.css +9 -9
  70. package/dist/components/toggle/toggle.mdx +18 -0
  71. package/dist/components/toggle-group/toggle-group.mdx +18 -0
  72. package/dist/components/tooltip/tooltip.mdx +18 -0
  73. package/dist/components/typography/heading.mdx +36 -0
  74. package/dist/components/typography/text.mdx +34 -0
  75. package/dist/components/typography/typography.css +98 -0
  76. package/dist/components.css +1156 -164
  77. package/dist/index.cjs +1206 -958
  78. package/dist/index.cjs.map +1 -1
  79. package/dist/index.d.cts +657 -196
  80. package/dist/index.d.ts +657 -196
  81. package/dist/index.js +1174 -948
  82. package/dist/index.js.map +1 -1
  83. package/dist/preset.css +2 -4
  84. package/dist/styles/components.css +1156 -164
  85. package/dist/styles/preset.css +2 -4
  86. package/dist/styles/styles.css +7 -4
  87. package/dist/styles/utilities.css +137 -0
  88. package/dist/styles.css +7 -4
  89. package/dist/utilities.css +137 -0
  90. package/package.json +5 -6
@@ -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,39 +487,9 @@
486
487
  text-decoration: underline;
487
488
  }
488
489
 
489
- /* ── calendar ── */
490
- .dl-calendar {
491
- --cell-size: 2rem;
492
- display: inline-block;
493
- width: fit-content;
494
- max-width: 100%;
495
- padding: 0.75rem;
496
- box-sizing: border-box;
497
- color: var(--foreground);
498
- }
499
-
500
- .dl-calendar .rdp-root {
501
- width: fit-content;
502
- margin: 0 auto;
503
- }
504
-
505
- .dl-calendar .rdp-months {
506
- position: relative;
507
- display: flex;
508
- flex-direction: column;
509
- gap: 1rem;
510
- width: calc(var(--cell-size, 2rem) * 7);
511
- box-sizing: border-box;
512
- }
513
-
514
- .dl-calendar .rdp-month {
515
- display: flex;
516
- flex-direction: column;
517
- gap: 0.75rem;
518
- width: 100%;
519
- }
520
-
521
- .dl-calendar .rdp-month_caption {
490
+ /* ── calendar/calendar-nav.css ── */
491
+ .dl-calendar .rdp-month_caption,
492
+ .dl-calendar .dl-calendar__month-caption {
522
493
  position: relative;
523
494
  display: flex;
524
495
  height: var(--cell-size, 2rem);
@@ -532,19 +503,54 @@
532
503
  box-sizing: border-box;
533
504
  }
534
505
 
535
- .dl-calendar .rdp-caption_label {
506
+ .dl-calendar .rdp-caption_label,
507
+ .dl-calendar .dl-calendar__caption-label {
536
508
  font-size: 0.875rem;
537
509
  font-weight: 600;
538
510
  color: var(--foreground);
539
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;
540
547
  }
541
548
 
542
- /* Navigation prev / next arrows */
543
- .dl-calendar .rdp-nav {
549
+ .dl-calendar .rdp-nav,
550
+ .dl-calendar .dl-calendar__nav {
544
551
  position: absolute;
545
552
  top: 0;
546
- left: 0;
547
- right: 0;
553
+ inset-inline: 0;
548
554
  display: flex;
549
555
  align-items: center;
550
556
  justify-content: space-between;
@@ -554,7 +560,8 @@
554
560
  }
555
561
 
556
562
  .dl-calendar .rdp-button_previous,
557
- .dl-calendar .rdp-button_next {
563
+ .dl-calendar .rdp-button_next,
564
+ .dl-calendar .dl-calendar__nav-button {
558
565
  pointer-events: auto;
559
566
  width: var(--cell-size, 2rem) !important;
560
567
  height: var(--cell-size, 2rem) !important;
@@ -568,24 +575,74 @@
568
575
  background: var(--background);
569
576
  color: var(--muted-foreground);
570
577
  cursor: pointer;
578
+ user-select: none;
571
579
  transition: all 0.15s ease;
572
580
  }
573
581
 
574
582
  .dl-calendar .rdp-button_previous:hover,
575
- .dl-calendar .rdp-button_next:hover {
583
+ .dl-calendar .rdp-button_next:hover,
584
+ .dl-calendar .dl-calendar__nav-button:hover {
576
585
  background-color: var(--accent);
577
586
  color: var(--accent-foreground);
578
587
  }
579
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
+
580
595
  .dl-calendar .rdp-button_previous svg,
581
- .dl-calendar .rdp-button_next svg {
596
+ .dl-calendar .rdp-button_next svg,
597
+ .dl-calendar .dl-calendar__chevron {
582
598
  width: 1rem;
583
599
  height: 1rem;
584
600
  flex-shrink: 0;
585
601
  }
586
602
 
587
- /* Grid Table */
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
+
588
644
  .dl-calendar table.rdp-month_grid,
645
+ .dl-calendar table.dl-calendar__table,
589
646
  .dl-calendar table {
590
647
  width: 100%;
591
648
  border-collapse: collapse;
@@ -593,7 +650,6 @@
593
650
  margin: 0;
594
651
  }
595
652
 
596
- /* Weekday header cells */
597
653
  .dl-calendar th.rdp-weekday,
598
654
  .dl-calendar th {
599
655
  width: calc(100% / 7);
@@ -608,7 +664,6 @@
608
664
  box-sizing: border-box;
609
665
  }
610
666
 
611
- /* Day table cells */
612
667
  .dl-calendar td.rdp-day,
613
668
  .dl-calendar td {
614
669
  width: calc(100% / 7);
@@ -618,12 +673,19 @@
618
673
  text-align: center;
619
674
  vertical-align: middle;
620
675
  background: transparent !important;
621
- background-color: transparent !important;
622
676
  border: none !important;
623
677
  box-sizing: border-box;
624
678
  }
625
679
 
626
- /* Day Button inside td */
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
+
627
689
  .dl-calendar button.rdp-day_button,
628
690
  .dl-calendar .dl-calendar__day-button {
629
691
  width: 100% !important;
@@ -635,10 +697,12 @@
635
697
  display: inline-flex !important;
636
698
  align-items: center;
637
699
  justify-content: center;
700
+ aspect-ratio: 1 / 1;
638
701
  border-radius: var(--radius-md, 0.375rem) !important;
639
702
  border: none !important;
640
703
  font-size: 0.875rem;
641
704
  font-weight: 400;
705
+ line-height: 1;
642
706
  color: var(--foreground);
643
707
  background: transparent;
644
708
  cursor: pointer;
@@ -651,7 +715,6 @@
651
715
  color: var(--accent-foreground) !important;
652
716
  }
653
717
 
654
- /* Selected Date Highlight */
655
718
  .dl-calendar td[aria-selected="true"] button.rdp-day_button,
656
719
  .dl-calendar td.rdp-selected button.rdp-day_button,
657
720
  .dl-calendar button.rdp-day_button[data-selected="true"],
@@ -671,7 +734,6 @@
671
734
  color: var(--primary-foreground) !important;
672
735
  }
673
736
 
674
- /* Today indicator (when not selected) */
675
737
  .dl-calendar
676
738
  td.rdp-today:not([aria-selected="true"]):not(.rdp-selected)
677
739
  button.rdp-day_button {
@@ -685,11 +747,9 @@
685
747
  border: 1px solid var(--border) !important;
686
748
  }
687
749
 
688
- /* Range selection styles */
689
750
  .dl-calendar td.rdp-range_start {
690
751
  background-color: var(--accent) !important;
691
- border-top-left-radius: var(--radius-md, 0.375rem) !important;
692
- border-bottom-left-radius: var(--radius-md, 0.375rem) !important;
752
+ border-radius: var(--radius-md, 0.375rem) 0 0 var(--radius-md, 0.375rem) !important;
693
753
  }
694
754
 
695
755
  .dl-calendar td.rdp-range_middle {
@@ -705,8 +765,7 @@
705
765
 
706
766
  .dl-calendar td.rdp-range_end {
707
767
  background-color: var(--accent) !important;
708
- border-top-right-radius: var(--radius-md, 0.375rem) !important;
709
- border-bottom-right-radius: var(--radius-md, 0.375rem) !important;
768
+ border-radius: 0 var(--radius-md, 0.375rem) var(--radius-md, 0.375rem) !important;
710
769
  }
711
770
 
712
771
  .dl-calendar td.rdp-outside button.rdp-day_button {
@@ -726,9 +785,9 @@
726
785
  pointer-events: none;
727
786
  }
728
787
 
729
- /* ── card ── */
788
+ /* ── card/card.css ── */
730
789
  .dl-card {
731
- border-radius: var(--radius-lg, 0.5rem);
790
+ border-radius: var(--radius, 0.75rem);
732
791
  border: 1px solid var(--border);
733
792
  background-color: var(--card);
734
793
  color: var(--card-foreground);
@@ -738,7 +797,7 @@
738
797
  display: flex;
739
798
  flex-direction: column;
740
799
  gap: 0.375rem;
741
- padding: 1.5rem;
800
+ padding: var(--card-padding, 1.5rem);
742
801
  }
743
802
  .dl-card__title {
744
803
  font-weight: 600;
@@ -750,15 +809,15 @@
750
809
  color: var(--muted-foreground);
751
810
  }
752
811
  .dl-card__content {
753
- padding: 1.5rem;
812
+ padding: var(--card-padding, 1.5rem);
754
813
  }
755
814
  .dl-card__footer {
756
815
  display: flex;
757
816
  align-items: center;
758
- padding: 1.5rem;
817
+ padding: var(--card-padding, 1.5rem);
759
818
  }
760
819
 
761
- /* ── carousel ── */
820
+ /* ── carousel/carousel.css ── */
762
821
  .dl-carousel {
763
822
  position: relative;
764
823
  }
@@ -788,18 +847,18 @@
788
847
  }
789
848
 
790
849
  .dl-carousel-item--horizontal {
791
- padding-left: 1rem;
850
+ padding-left: var(--space-4, 1rem);
792
851
  }
793
852
 
794
853
  .dl-carousel-item--vertical {
795
- padding-top: 1rem;
854
+ padding-top: var(--space-4, 1rem);
796
855
  }
797
856
 
798
857
  .dl-carousel-btn {
799
858
  position: absolute;
800
859
  border-radius: 9999px;
801
- width: 2rem;
802
- height: 2rem;
860
+ width: var(--control-height-sm, 2rem);
861
+ height: var(--control-height-sm, 2rem);
803
862
  padding: 0;
804
863
  }
805
864
 
@@ -827,7 +886,7 @@
827
886
  transform: translateX(-50%) rotate(90deg);
828
887
  }
829
888
 
830
- /* ── chart ── */
889
+ /* ── chart/chart.css ── */
831
890
  .dl-chart-container {
832
891
  display: flex;
833
892
  aspect-ratio: 16 / 9;
@@ -860,14 +919,100 @@
860
919
  box-shadow: 0 8px 32px rgb(0 0 0 / 0.18);
861
920
  }
862
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
+
863
985
  .dl-chart-legend {
864
986
  display: flex;
865
987
  align-items: center;
866
988
  justify-content: center;
867
989
  gap: 1rem;
868
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
+ }
869
1014
 
870
- /* ── checkbox ── */
1015
+ /* ── checkbox/checkbox.css ── */
871
1016
  .dl-checkbox {
872
1017
  display: flex;
873
1018
  height: 1rem;
@@ -896,7 +1041,18 @@
896
1041
  color: var(--primary-foreground);
897
1042
  }
898
1043
 
899
- /* ── 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 ── */
900
1056
  .dl-command {
901
1057
  display: flex;
902
1058
  flex-direction: column;
@@ -917,11 +1073,11 @@
917
1073
  display: flex;
918
1074
  align-items: center;
919
1075
  border-bottom: 1px solid var(--border);
920
- padding-inline: 0.75rem;
1076
+ padding-inline: var(--space-3, 0.75rem);
921
1077
  }
922
1078
 
923
1079
  .dl-command-input-icon {
924
- margin-inline-end: 0.5rem;
1080
+ margin-inline-end: var(--space-2, 0.5rem);
925
1081
  width: 1rem;
926
1082
  height: 1rem;
927
1083
  flex-shrink: 0;
@@ -930,7 +1086,7 @@
930
1086
 
931
1087
  .dl-command-input {
932
1088
  display: flex;
933
- height: 2.5rem;
1089
+ height: var(--control-height-lg, 2.5rem);
934
1090
  width: 100%;
935
1091
  border-radius: var(--radius-md, 0.375rem);
936
1092
  background-color: transparent;
@@ -1023,7 +1179,7 @@
1023
1179
  color: var(--muted-foreground);
1024
1180
  }
1025
1181
 
1026
- /* ── context-menu ── */
1182
+ /* ── context-menu/context-menu.css ── */
1027
1183
  .dl-context-menu-content {
1028
1184
  z-index: 50;
1029
1185
  min-width: 8rem;
@@ -1044,7 +1200,7 @@
1044
1200
  animation: dl-fade-out 100ms ease;
1045
1201
  }
1046
1202
 
1047
- /* ── copy-button ── */
1203
+ /* ── copy-button/copy-button.css ── */
1048
1204
  .dl-copy-button {
1049
1205
  display: inline-flex;
1050
1206
  align-items: center;
@@ -1080,13 +1236,13 @@
1080
1236
  flex-shrink: 0;
1081
1237
  }
1082
1238
 
1083
- /* ── date-picker ── */
1239
+ /* ── date-picker/date-picker.css ── */
1084
1240
  .dl-date-picker-trigger {
1085
1241
  width: 100%;
1086
1242
  justify-content: flex-start;
1087
1243
  text-align: left;
1088
1244
  font-weight: 400;
1089
- height: 2.25rem;
1245
+ height: var(--control-height-md, 2.25rem);
1090
1246
  border-color: var(--border);
1091
1247
  background-color: color-mix(in oklch, var(--secondary) 40%, transparent);
1092
1248
  }
@@ -1101,7 +1257,7 @@
1101
1257
  }
1102
1258
 
1103
1259
  .dl-date-picker-icon {
1104
- margin-inline-end: 0.5rem;
1260
+ margin-inline-end: var(--space-2, 0.5rem);
1105
1261
  width: 1rem;
1106
1262
  height: 1rem;
1107
1263
  flex-shrink: 0;
@@ -1118,7 +1274,7 @@
1118
1274
  background-color: var(--popover);
1119
1275
  }
1120
1276
 
1121
- /* ── dialog ── */
1277
+ /* ── dialog/dialog.css ── */
1122
1278
  .dl-dialog-overlay {
1123
1279
  position: fixed;
1124
1280
  inset: 0;
@@ -1149,7 +1305,7 @@
1149
1305
  padding: 0;
1150
1306
  gap: 0;
1151
1307
  box-shadow: 0 16px 48px rgb(0 0 0 / 0.24);
1152
- border-radius: var(--radius-lg, 0.75rem);
1308
+ border-radius: var(--radius, 0.75rem);
1153
1309
  overflow: hidden;
1154
1310
  overscroll-behavior: contain;
1155
1311
  }
@@ -1233,8 +1389,8 @@
1233
1389
  .dl-dialog__header {
1234
1390
  display: flex;
1235
1391
  flex-direction: column;
1236
- gap: 0.375rem;
1237
- padding: 1.25rem 1.5rem;
1392
+ gap: var(--form-field-gap, 0.375rem);
1393
+ padding: var(--dialog-padding, 1.25rem 1.5rem);
1238
1394
  padding-right: 3.5rem;
1239
1395
  border-bottom: 1px solid var(--border);
1240
1396
  flex-shrink: 0;
@@ -1243,14 +1399,14 @@
1243
1399
  flex: 1 1 auto;
1244
1400
  min-height: 0;
1245
1401
  overflow-y: auto;
1246
- padding: 1.25rem 1.5rem;
1402
+ padding: var(--dialog-padding, 1.25rem 1.5rem);
1247
1403
  }
1248
1404
  .dl-dialog__footer {
1249
1405
  display: flex;
1250
1406
  flex-direction: row;
1251
1407
  justify-content: flex-end;
1252
- gap: 0.5rem;
1253
- padding: 0.875rem 1.5rem;
1408
+ gap: var(--form-field-gap, 0.5rem);
1409
+ padding: var(--dialog-padding, 0.875rem 1.5rem);
1254
1410
  border-top: 1px solid var(--border);
1255
1411
  background-color: color-mix(in srgb, var(--muted) 35%, transparent);
1256
1412
  flex-shrink: 0;
@@ -1266,7 +1422,7 @@
1266
1422
  color: var(--muted-foreground);
1267
1423
  }
1268
1424
 
1269
- /* ── drawer ── */
1425
+ /* ── drawer/drawer.css ── */
1270
1426
  .dl-drawer-overlay {
1271
1427
  position: fixed;
1272
1428
  inset: 0;
@@ -1332,7 +1488,7 @@
1332
1488
  color: var(--muted-foreground);
1333
1489
  }
1334
1490
 
1335
- /* ── dropdown-menu ── */
1491
+ /* ── dropdown-menu/dropdown-menu.css ── */
1336
1492
  .dl-menu-content {
1337
1493
  z-index: 50;
1338
1494
  min-width: 8rem;
@@ -1386,6 +1542,24 @@
1386
1542
  font-weight: 600;
1387
1543
  color: var(--muted-foreground);
1388
1544
  }
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
+ }
1389
1563
  .dl-menu-separator {
1390
1564
  margin: 0.25rem -0.25rem;
1391
1565
  height: 1px;
@@ -1416,7 +1590,76 @@
1416
1590
  height: 0.875rem;
1417
1591
  }
1418
1592
 
1419
- /* ── 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 ── */
1420
1663
  .dl-form-item {
1421
1664
  display: flex;
1422
1665
  flex-direction: column;
@@ -1435,7 +1678,7 @@
1435
1678
  color: var(--destructive);
1436
1679
  }
1437
1680
 
1438
- /* ── hover-card ── */
1681
+ /* ── hover-card/hover-card.css ── */
1439
1682
  .dl-hover-card {
1440
1683
  z-index: 50;
1441
1684
  width: 16rem;
@@ -1460,7 +1703,7 @@
1460
1703
  dl-zoom-out 150ms ease;
1461
1704
  }
1462
1705
 
1463
- /* ── input ── */
1706
+ /* ── input/input.css ── */
1464
1707
  .dl-input-wrapper {
1465
1708
  position: relative;
1466
1709
  display: inline-flex;
@@ -1551,7 +1794,7 @@
1551
1794
  -webkit-appearance: none;
1552
1795
  }
1553
1796
 
1554
- /* ── input-otp ── */
1797
+ /* ── input-otp/input-otp.css ── */
1555
1798
  .dl-input-otp-container {
1556
1799
  display: flex;
1557
1800
  align-items: center;
@@ -1623,7 +1866,7 @@
1623
1866
  animation: dl-pulse 1s infinite;
1624
1867
  }
1625
1868
 
1626
- /* ── label ── */
1869
+ /* ── label/label.css ── */
1627
1870
  .dl-label {
1628
1871
  font-size: 0.75rem;
1629
1872
  font-weight: 500;
@@ -1638,7 +1881,7 @@
1638
1881
  margin-inline-start: 0.25rem;
1639
1882
  }
1640
1883
 
1641
- /* ── loading-state ── */
1884
+ /* ── loading-state/loading-state.css ── */
1642
1885
  .dl-loading {
1643
1886
  display: flex;
1644
1887
  flex-direction: column;
@@ -1666,16 +1909,27 @@
1666
1909
  gap: 0.5rem;
1667
1910
  }
1668
1911
 
1669
- /* ── 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 ── */
1670
1924
  .dl-menubar {
1671
1925
  display: flex;
1672
- height: 2.25rem;
1926
+ height: var(--control-height-md, 2.25rem);
1673
1927
  align-items: center;
1674
- gap: 0.25rem;
1928
+ gap: var(--space-1, 0.25rem);
1675
1929
  border-radius: var(--radius-md, 0.375rem);
1676
1930
  border: 1px solid var(--border);
1677
1931
  background-color: var(--background);
1678
- padding: 0.25rem;
1932
+ padding: var(--space-1, 0.25rem);
1679
1933
  box-shadow: 0 1px 2px rgb(0 0 0 / 0.05);
1680
1934
  }
1681
1935
 
@@ -1685,7 +1939,7 @@
1685
1939
  user-select: none;
1686
1940
  align-items: center;
1687
1941
  border-radius: var(--radius-sm, 0.25rem);
1688
- padding: 0.25rem 0.75rem;
1942
+ padding: var(--space-1, 0.25rem) var(--space-3, 0.75rem);
1689
1943
  font-size: 0.875rem;
1690
1944
  font-weight: 500;
1691
1945
  outline: none;
@@ -1704,7 +1958,7 @@
1704
1958
  color: var(--accent-foreground);
1705
1959
  }
1706
1960
 
1707
- /* ── metric-card ── */
1961
+ /* ── metric-card/metric-card.css ── */
1708
1962
  .dl-metrics-grid {
1709
1963
  display: grid;
1710
1964
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
@@ -1774,7 +2028,7 @@
1774
2028
  color: var(--destructive);
1775
2029
  }
1776
2030
 
1777
- /* ── navigation-menu ── */
2031
+ /* ── navigation-menu/navigation-menu.css ── */
1778
2032
  .dl-navigation-menu {
1779
2033
  position: relative;
1780
2034
  z-index: 10;
@@ -1798,13 +2052,13 @@
1798
2052
 
1799
2053
  .dl-navigation-menu-trigger {
1800
2054
  display: inline-flex;
1801
- height: 2.25rem;
2055
+ height: var(--control-height-md, 2.25rem);
1802
2056
  width: max-content;
1803
2057
  align-items: center;
1804
2058
  justify-content: center;
1805
2059
  border-radius: var(--radius-md, 0.375rem);
1806
2060
  background-color: var(--background);
1807
- padding: 0.5rem 1rem;
2061
+ padding: var(--space-2, 0.5rem) var(--space-4, 1rem);
1808
2062
  font-size: 0.875rem;
1809
2063
  font-weight: 500;
1810
2064
  cursor: pointer;
@@ -1913,7 +2167,7 @@
1913
2167
  box-shadow: 0 2px 4px rgb(0 0 0 / 0.1);
1914
2168
  }
1915
2169
 
1916
- /* ── pagination ── */
2170
+ /* ── pagination/pagination.css ── */
1917
2171
  .dl-pagination {
1918
2172
  margin-inline: auto;
1919
2173
  display: flex;
@@ -1945,12 +2199,18 @@
1945
2199
  padding-inline-end: 0.625rem;
1946
2200
  }
1947
2201
 
2202
+ .dl-pagination-icon {
2203
+ width: 1rem;
2204
+ height: 1rem;
2205
+ flex-shrink: 0;
2206
+ }
2207
+
1948
2208
  .dl-pagination-ellipsis {
1949
2209
  display: flex;
1950
2210
  align-items: center;
1951
2211
  justify-content: center;
1952
- width: 2.25rem;
1953
- height: 2.25rem;
2212
+ width: var(--control-height-md, 2.25rem);
2213
+ height: var(--control-height-md, 2.25rem);
1954
2214
  }
1955
2215
 
1956
2216
  .dl-pagination-ellipsis svg {
@@ -1958,7 +2218,7 @@
1958
2218
  height: 1rem;
1959
2219
  }
1960
2220
 
1961
- /* ── panel ── */
2221
+ /* ── panel/panel.css ── */
1962
2222
  .dl-panel {
1963
2223
  border-radius: var(--radius-lg, 0.5rem);
1964
2224
  border: 1px solid var(--border);
@@ -1984,15 +2244,15 @@
1984
2244
  color: var(--muted-foreground);
1985
2245
  }
1986
2246
 
1987
- /* ── popover ── */
2247
+ /* ── popover/popover.css ── */
1988
2248
  .dl-popover {
1989
2249
  z-index: 50;
1990
2250
  width: 18rem;
1991
- border-radius: var(--radius-lg, 0.5rem);
2251
+ border-radius: var(--radius, 0.5rem);
1992
2252
  border: 1px solid var(--border);
1993
2253
  background-color: var(--popover);
1994
2254
  color: var(--popover-foreground);
1995
- padding: 1rem;
2255
+ padding: var(--space-4, 1rem);
1996
2256
  box-shadow: 0 4px 24px rgb(0 0 0/0.12);
1997
2257
  outline: none;
1998
2258
  }
@@ -2008,7 +2268,7 @@
2008
2268
  padding: 0;
2009
2269
  }
2010
2270
 
2011
- /* ── progress ── */
2271
+ /* ── progress/progress.css ── */
2012
2272
  .dl-progress {
2013
2273
  position: relative;
2014
2274
  height: 0.5rem;
@@ -2025,7 +2285,7 @@
2025
2285
  transform-origin: left;
2026
2286
  }
2027
2287
 
2028
- /* ── radio-group ── */
2288
+ /* ── radio-group/radio-group.css ── */
2029
2289
  .dl-radio-group {
2030
2290
  display: grid;
2031
2291
  gap: 0.5rem;
@@ -2064,7 +2324,7 @@
2064
2324
  height: 0.5625rem;
2065
2325
  }
2066
2326
 
2067
- /* ── resizable ── */
2327
+ /* ── resizable/resizable.css ── */
2068
2328
  .dl-resizable-group {
2069
2329
  display: flex;
2070
2330
  width: 100%;
@@ -2133,7 +2393,7 @@
2133
2393
  height: 0.625rem;
2134
2394
  }
2135
2395
 
2136
- /* ── scroll-area ── */
2396
+ /* ── scroll-area/scroll-area.css ── */
2137
2397
  .dl-scroll-area {
2138
2398
  position: relative;
2139
2399
  overflow: hidden;
@@ -2167,7 +2427,7 @@
2167
2427
  background-color: var(--border);
2168
2428
  }
2169
2429
 
2170
- /* ── searchable-select ── */
2430
+ /* ── searchable-select/searchable-select.css ── */
2171
2431
  .dl-searchable-select-trigger {
2172
2432
  width: 100%;
2173
2433
  justify-content: space-between;
@@ -2192,7 +2452,7 @@
2192
2452
  align-items: center;
2193
2453
  gap: 0.5rem;
2194
2454
  border-bottom: 1px solid var(--border);
2195
- padding: 0.5rem;
2455
+ padding: var(--space-2, 0.5rem);
2196
2456
  }
2197
2457
 
2198
2458
  .dl-searchable-select-search-icon {
@@ -2204,10 +2464,10 @@
2204
2464
  }
2205
2465
 
2206
2466
  .dl-searchable-select-search-input {
2207
- height: 2rem;
2467
+ height: var(--control-height-sm, 2rem);
2208
2468
  border: none;
2209
2469
  background: transparent;
2210
- padding-inline: 0.25rem;
2470
+ padding-inline: var(--space-1, 0.25rem);
2211
2471
  font-size: 0.875rem;
2212
2472
  box-shadow: none;
2213
2473
  }
@@ -2234,6 +2494,10 @@
2234
2494
  color: var(--muted-foreground);
2235
2495
  }
2236
2496
 
2497
+ .dl-searchable-select-group {
2498
+ padding-block: 0.25rem;
2499
+ }
2500
+
2237
2501
  .dl-searchable-select-group-header {
2238
2502
  padding-inline: 0.5rem;
2239
2503
  padding-block: 0.25rem;
@@ -2271,6 +2535,19 @@
2271
2535
  font-weight: 500;
2272
2536
  }
2273
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
+
2274
2551
  .dl-searchable-select-add {
2275
2552
  border-top: 1px solid var(--border);
2276
2553
  background-color: color-mix(in oklch, var(--muted) 30%, transparent);
@@ -2297,7 +2574,13 @@
2297
2574
  background-color: color-mix(in oklch, var(--primary) 10%, transparent);
2298
2575
  }
2299
2576
 
2300
- /* ── 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 ── */
2301
2584
  .dl-secret-reveal {
2302
2585
  border-radius: var(--radius, 0.5rem);
2303
2586
  border: 1px solid var(--border);
@@ -2317,6 +2600,12 @@
2317
2600
  line-height: 1.4;
2318
2601
  }
2319
2602
 
2603
+ .dl-secret-reveal__warning svg {
2604
+ flex-shrink: 0;
2605
+ width: 1rem;
2606
+ height: 1rem;
2607
+ }
2608
+
2320
2609
  .dl-secret-reveal__code-wrap {
2321
2610
  display: flex;
2322
2611
  align-items: center;
@@ -2339,7 +2628,7 @@
2339
2628
  flex: 1;
2340
2629
  }
2341
2630
 
2342
- /* ── select ── */
2631
+ /* ── select/select.css ── */
2343
2632
  .dl-select-trigger {
2344
2633
  display: inline-flex;
2345
2634
  width: 100%;
@@ -2374,12 +2663,23 @@
2374
2663
  opacity: 0.5;
2375
2664
  cursor: not-allowed;
2376
2665
  }
2377
- .dl-select-trigger > svg {
2666
+ .dl-select-trigger svg {
2378
2667
  opacity: 0.5;
2379
2668
  width: 1rem;
2380
2669
  height: 1rem;
2381
2670
  flex-shrink: 0;
2382
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
+ }
2383
2683
 
2384
2684
  /* Sizes */
2385
2685
  .dl-select-trigger--sm {
@@ -2454,6 +2754,10 @@
2454
2754
  width: 0.875rem;
2455
2755
  height: 0.875rem;
2456
2756
  }
2757
+ .dl-select-item__indicator svg {
2758
+ width: 0.75rem;
2759
+ height: 0.75rem;
2760
+ }
2457
2761
  .dl-select-label {
2458
2762
  padding: 0.25rem 0.5rem;
2459
2763
  font-size: 0.6875rem;
@@ -2466,7 +2770,7 @@
2466
2770
  background-color: var(--border);
2467
2771
  }
2468
2772
 
2469
- /* ── separator ── */
2773
+ /* ── separator/separator.css ── */
2470
2774
  .dl-separator {
2471
2775
  background-color: var(--border);
2472
2776
  flex-shrink: 0;
@@ -2482,7 +2786,7 @@
2482
2786
  margin: 0 0.25rem;
2483
2787
  }
2484
2788
 
2485
- /* ── sheet ── */
2789
+ /* ── sheet/sheet.css ── */
2486
2790
  /* ═══════════════════════════════════════════════════════════════════════
2487
2791
  SHEET (side drawer)
2488
2792
  ═══════════════════════════════════════════════════════════════════════ */
@@ -2491,7 +2795,7 @@
2491
2795
  z-index: 50;
2492
2796
  gap: 1rem;
2493
2797
  background-color: var(--background);
2494
- padding: 1.5rem;
2798
+ padding: var(--dialog-padding, 1.5rem);
2495
2799
  box-shadow: 0 8px 40px rgb(0 0 0/0.2);
2496
2800
  }
2497
2801
  .dl-sheet-content--right {
@@ -2548,6 +2852,10 @@
2548
2852
  outline: 2px solid var(--ring);
2549
2853
  outline-offset: 2px;
2550
2854
  }
2855
+ .dl-sheet-close svg {
2856
+ width: 1rem;
2857
+ height: 1rem;
2858
+ }
2551
2859
  .dl-sheet__header {
2552
2860
  display: flex;
2553
2861
  flex-direction: column;
@@ -2567,19 +2875,276 @@
2567
2875
  color: var(--muted-foreground);
2568
2876
  }
2569
2877
 
2570
- /* ── sidebar ── */
2571
- .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;
2572
2915
  display: flex;
2573
- min-height: 100vh;
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 {
2574
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 {
2956
+ display: flex;
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;
3082
+ }
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;
2575
3106
  }
2576
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
+ }
2577
3143
  .dl-sidebar-input {
2578
- height: 2rem;
3144
+ height: var(--control-height-sm, 2rem);
2579
3145
  background-color: var(--background);
2580
3146
  box-shadow: none;
2581
3147
  }
2582
-
2583
3148
  .dl-sidebar-input:focus,
2584
3149
  .dl-sidebar-input:focus-visible {
2585
3150
  border-color: var(--sidebar-ring);
@@ -2587,14 +3152,180 @@
2587
3152
  color-mix(in oklch, var(--sidebar-ring) 25%, transparent);
2588
3153
  }
2589
3154
 
2590
- /* ── 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 ── */
2591
3322
  .dl-skeleton {
2592
3323
  border-radius: var(--radius-md, 0.375rem);
2593
3324
  background-color: color-mix(in oklch, var(--primary) 10%, var(--muted));
2594
3325
  animation: dl-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
2595
3326
  }
2596
3327
 
2597
- /* ── slider ── */
3328
+ /* ── slider/slider.css ── */
2598
3329
  .dl-slider {
2599
3330
  position: relative;
2600
3331
  display: flex;
@@ -2633,7 +3364,7 @@
2633
3364
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--ring) 30%, transparent);
2634
3365
  }
2635
3366
 
2636
- /* ── sonner ── */
3367
+ /* ── sonner/sonner.css ── */
2637
3368
  .dl-toaster {
2638
3369
  font-family: inherit;
2639
3370
  --normal-bg: var(--card, var(--background));
@@ -2689,7 +3420,7 @@
2689
3420
  color: var(--card-foreground, var(--foreground));
2690
3421
  }
2691
3422
 
2692
- /* ── status-badge ── */
3423
+ /* ── status-badge/status-badge.css ── */
2693
3424
  .dl-status-badge {
2694
3425
  display: inline-flex;
2695
3426
  align-items: center;
@@ -2744,7 +3475,7 @@
2744
3475
  border-color: var(--border);
2745
3476
  }
2746
3477
 
2747
- /* ── status-chip ── */
3478
+ /* ── status-chip/status-chip.css ── */
2748
3479
  .dl-status-chip {
2749
3480
  display: inline-flex;
2750
3481
  align-items: center;
@@ -2790,7 +3521,7 @@
2790
3521
  color: var(--muted-foreground);
2791
3522
  }
2792
3523
 
2793
- /* ── switch ── */
3524
+ /* ── switch/switch.css ── */
2794
3525
  .dl-switch {
2795
3526
  display: inline-flex;
2796
3527
  height: 1.25rem;
@@ -2837,7 +3568,7 @@
2837
3568
  transform: translateX(0);
2838
3569
  }
2839
3570
 
2840
- /* ── table ── */
3571
+ /* ── table/table.css ── */
2841
3572
  .dl-table-wrapper {
2842
3573
  position: relative;
2843
3574
  width: 100%;
@@ -2868,15 +3599,17 @@
2868
3599
  transition: background-color 0.1s;
2869
3600
  }
2870
3601
  .dl-table__head-cell {
2871
- height: 2.5rem;
2872
- 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);
2873
3605
  text-align: left;
2874
3606
  font-weight: 500;
2875
3607
  color: var(--muted-foreground);
2876
3608
  white-space: nowrap;
2877
3609
  }
2878
3610
  .dl-table__cell {
2879
- padding: 0.75rem 0.5rem;
3611
+ padding: var(--table-row-padding-y, 0.75rem)
3612
+ var(--table-row-padding-x, 0.75rem);
2880
3613
  vertical-align: middle;
2881
3614
  }
2882
3615
  .dl-table__caption {
@@ -2885,13 +3618,13 @@
2885
3618
  color: var(--muted-foreground);
2886
3619
  }
2887
3620
 
2888
- /* ── tabs ── */
3621
+ /* ── tabs/tabs.css ── */
2889
3622
  .dl-tabs-list {
2890
3623
  display: inline-flex;
2891
- height: 2.25rem;
3624
+ height: var(--control-height-md, 2.25rem);
2892
3625
  align-items: center;
2893
3626
  justify-content: center;
2894
- border-radius: var(--radius-lg, 0.5rem);
3627
+ border-radius: var(--radius, 0.5rem);
2895
3628
  background-color: var(--muted);
2896
3629
  padding: 0.25rem;
2897
3630
  color: var(--muted-foreground);
@@ -2901,7 +3634,7 @@
2901
3634
  align-items: center;
2902
3635
  justify-content: center;
2903
3636
  white-space: nowrap;
2904
- border-radius: var(--radius-md, 0.375rem);
3637
+ border-radius: calc(var(--radius, 0.5rem) - 2px);
2905
3638
  padding: 0.25rem 0.75rem;
2906
3639
  font-size: 0.875rem;
2907
3640
  font-weight: 500;
@@ -2933,16 +3666,16 @@
2933
3666
  outline-offset: 2px;
2934
3667
  }
2935
3668
 
2936
- /* ── textarea ── */
3669
+ /* ── textarea/textarea.css ── */
2937
3670
  .dl-textarea {
2938
3671
  display: block;
2939
3672
  min-height: 4rem;
2940
3673
  width: 100%;
2941
- border-radius: var(--radius-md, 0.375rem);
3674
+ border-radius: var(--radius, 0.375rem);
2942
3675
  border: 1px solid var(--input);
2943
3676
  background-color: transparent;
2944
- padding-block: 0.5rem;
2945
- padding-inline: 0.75rem;
3677
+ padding-block: var(--space-2, 0.5rem);
3678
+ padding-inline: var(--space-3, 0.75rem);
2946
3679
  font-size: 0.75rem;
2947
3680
  font-family: inherit;
2948
3681
  color: var(--foreground);
@@ -2965,7 +3698,7 @@
2965
3698
  opacity: 0.5;
2966
3699
  }
2967
3700
 
2968
- /* ── toggle ── */
3701
+ /* ── toggle/toggle.css ── */
2969
3702
  .dl-toggle {
2970
3703
  display: inline-flex;
2971
3704
  align-items: center;
@@ -3033,21 +3766,21 @@
3033
3766
 
3034
3767
  /* Sizes */
3035
3768
  .dl-toggle--size-default {
3036
- height: 2.25rem;
3037
- padding-inline: 0.5rem;
3038
- 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);
3039
3772
  }
3040
3773
 
3041
3774
  .dl-toggle--size-sm {
3042
- height: 2rem;
3043
- padding-inline: 0.375rem;
3044
- 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);
3045
3778
  }
3046
3779
 
3047
3780
  .dl-toggle--size-lg {
3048
- height: 2.5rem;
3049
- padding-inline: 0.625rem;
3050
- 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);
3051
3784
  }
3052
3785
 
3053
3786
  /* Group */
@@ -3058,7 +3791,7 @@
3058
3791
  gap: 0.25rem;
3059
3792
  }
3060
3793
 
3061
- /* ── tooltip ── */
3794
+ /* ── tooltip/tooltip.css ── */
3062
3795
  .dl-tooltip {
3063
3796
  z-index: 50;
3064
3797
  overflow: hidden;
@@ -3076,4 +3809,263 @@
3076
3809
  .dl-tooltip[data-state="closed"] {
3077
3810
  animation: dl-fade-out 100ms ease;
3078
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
+ }
3079
4071
  }