basecoat-css 0.3.1 → 0.3.3

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.
@@ -20,9 +20,12 @@
20
20
  --text-base--line-height: calc(1.5 / 1);
21
21
  --text-lg: 1.125rem;
22
22
  --text-lg--line-height: calc(1.75 / 1.125);
23
+ --font-weight-normal: 400;
23
24
  --font-weight-medium: 500;
24
25
  --font-weight-semibold: 600;
25
26
  --tracking-tight: -0.025em;
27
+ --leading-snug: 1.375;
28
+ --leading-normal: 1.5;
26
29
  --leading-relaxed: 1.625;
27
30
  --radius-xs: 0.125rem;
28
31
  --radius-sm: calc(var(--radius) - 4px);
@@ -319,9 +322,6 @@
319
322
  border-radius: var(--scrollbar-radius);
320
323
  }
321
324
  }
322
- [x-cloak] {
323
- display: none !important;
324
- }
325
325
  }
326
326
  @layer components {
327
327
  .alert, .alert-destructive {
@@ -355,7 +355,7 @@
355
355
  &>svg {
356
356
  color: currentcolor;
357
357
  }
358
- h2 {
358
+ h2, h3 {
359
359
  grid-column-start: 2;
360
360
  overflow: hidden;
361
361
  display: -webkit-box;
@@ -402,6 +402,149 @@
402
402
  }
403
403
  }
404
404
  }
405
+ @layer components {
406
+ .badge, .badge-primary, .badge-secondary, .badge-destructive, .badge-outline {
407
+ display: inline-flex;
408
+ width: fit-content;
409
+ flex-shrink: 0;
410
+ align-items: center;
411
+ justify-content: center;
412
+ gap: calc(var(--spacing) * 1);
413
+ overflow: hidden;
414
+ border-radius: calc(infinity * 1px);
415
+ border-style: var(--tw-border-style);
416
+ border-width: 1px;
417
+ padding-inline: calc(var(--spacing) * 2);
418
+ padding-block: calc(var(--spacing) * 0.5);
419
+ font-size: var(--text-xs);
420
+ line-height: var(--tw-leading, var(--text-xs--line-height));
421
+ --tw-font-weight: var(--font-weight-medium);
422
+ font-weight: var(--font-weight-medium);
423
+ white-space: nowrap;
424
+ transition-property: color,box-shadow;
425
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
426
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
427
+ &:focus-visible {
428
+ border-color: var(--color-ring);
429
+ }
430
+ &:focus-visible {
431
+ --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
432
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
433
+ }
434
+ &:focus-visible {
435
+ --tw-ring-color: var(--color-ring);
436
+ @supports (color: color-mix(in lab, red, red)) {
437
+ --tw-ring-color: color-mix(in oklab, var(--color-ring) 50%, transparent);
438
+ }
439
+ }
440
+ &[aria-invalid="true"] {
441
+ border-color: var(--color-destructive);
442
+ }
443
+ &[aria-invalid="true"] {
444
+ --tw-ring-color: var(--color-destructive);
445
+ @supports (color: color-mix(in lab, red, red)) {
446
+ --tw-ring-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);
447
+ }
448
+ }
449
+ &:is(.dark *) {
450
+ &[aria-invalid="true"] {
451
+ --tw-ring-color: var(--color-destructive);
452
+ @supports (color: color-mix(in lab, red, red)) {
453
+ --tw-ring-color: color-mix(in oklab, var(--color-destructive) 40%, transparent);
454
+ }
455
+ }
456
+ }
457
+ &>svg {
458
+ pointer-events: none;
459
+ }
460
+ &>svg {
461
+ width: calc(var(--spacing) * 3);
462
+ height: calc(var(--spacing) * 3);
463
+ }
464
+ }
465
+ .badge, .badge-primary {
466
+ border-color: transparent;
467
+ background-color: var(--color-primary);
468
+ color: var(--color-primary-foreground);
469
+ a& {
470
+ &:hover {
471
+ @media (hover: hover) {
472
+ background-color: var(--color-primary);
473
+ @supports (color: color-mix(in lab, red, red)) {
474
+ background-color: color-mix(in oklab, var(--color-primary) 90%, transparent);
475
+ }
476
+ }
477
+ }
478
+ }
479
+ }
480
+ .badge-secondary {
481
+ border-color: transparent;
482
+ background-color: var(--color-secondary);
483
+ color: var(--color-secondary-foreground);
484
+ a& {
485
+ &:hover {
486
+ @media (hover: hover) {
487
+ background-color: var(--color-secondary);
488
+ @supports (color: color-mix(in lab, red, red)) {
489
+ background-color: color-mix(in oklab, var(--color-secondary) 90%, transparent);
490
+ }
491
+ }
492
+ }
493
+ }
494
+ }
495
+ .badge-destructive {
496
+ border-color: transparent;
497
+ background-color: var(--color-destructive);
498
+ color: var(--color-white);
499
+ &:focus-visible {
500
+ --tw-ring-color: var(--color-destructive);
501
+ @supports (color: color-mix(in lab, red, red)) {
502
+ --tw-ring-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);
503
+ }
504
+ }
505
+ &:is(.dark *) {
506
+ background-color: var(--color-destructive);
507
+ @supports (color: color-mix(in lab, red, red)) {
508
+ background-color: color-mix(in oklab, var(--color-destructive) 60%, transparent);
509
+ }
510
+ }
511
+ &:is(.dark *) {
512
+ &:focus-visible {
513
+ --tw-ring-color: var(--color-destructive);
514
+ @supports (color: color-mix(in lab, red, red)) {
515
+ --tw-ring-color: color-mix(in oklab, var(--color-destructive) 40%, transparent);
516
+ }
517
+ }
518
+ }
519
+ a& {
520
+ &:hover {
521
+ @media (hover: hover) {
522
+ background-color: var(--color-destructive);
523
+ @supports (color: color-mix(in lab, red, red)) {
524
+ background-color: color-mix(in oklab, var(--color-destructive) 90%, transparent);
525
+ }
526
+ }
527
+ }
528
+ }
529
+ }
530
+ .badge-outline {
531
+ color: var(--color-foreground);
532
+ a& {
533
+ &:hover {
534
+ @media (hover: hover) {
535
+ background-color: var(--color-accent);
536
+ }
537
+ }
538
+ }
539
+ a& {
540
+ &:hover {
541
+ @media (hover: hover) {
542
+ color: var(--color-accent-foreground);
543
+ }
544
+ }
545
+ }
546
+ }
547
+ }
405
548
  @layer components {
406
549
  .btn, .btn-primary, .btn-secondary, .btn-outline, .btn-ghost, .btn-link, .btn-destructive, .btn-sm, .btn-sm-primary, .btn-sm-secondary, .btn-sm-outline, .btn-sm-ghost, .btn-sm-link, .btn-sm-destructive, .btn-lg, .btn-lg-primary, .btn-lg-secondary, .btn-lg-outline, .btn-lg-ghost, .btn-lg-link, .btn-lg-destructive, .btn-icon, .btn-icon-primary, .btn-icon-secondary, .btn-icon-outline, .btn-icon-ghost, .btn-icon-link, .btn-icon-destructive, .btn-sm-icon, .btn-sm-icon-primary, .btn-sm-icon-secondary, .btn-sm-icon-outline, .btn-sm-icon-ghost, .btn-sm-icon-link, .btn-sm-icon-destructive, .btn-lg-icon, .btn-lg-icon-primary, .btn-lg-icon-secondary, .btn-lg-icon-outline, .btn-lg-icon-ghost, .btn-lg-icon-link, .btn-lg-icon-destructive {
407
550
  display: inline-flex;
@@ -624,28 +767,131 @@
624
767
  }
625
768
  }
626
769
  }
770
+ .button-group {
771
+ isolation: isolate;
772
+ display: inline-flex;
773
+ width: fit-content;
774
+ align-items: stretch;
775
+ > *:focus-visible, > :is(.dropdown-menu, .popover, .select) > button:focus-visible {
776
+ position: relative;
777
+ z-index: 10;
778
+ }
779
+ > hr[role='separator'] {
780
+ margin: calc(var(--spacing) * 0);
781
+ height: auto;
782
+ width: calc(var(--spacing) * 0);
783
+ flex-shrink: 0;
784
+ align-self: stretch;
785
+ border-style: var(--tw-border-style);
786
+ border-width: 1px;
787
+ border-color: var(--color-input);
788
+ }
789
+ &:not([data-orientation='vertical']) {
790
+ > *:not(:first-child), > :is(.dropdown-menu, .popover, .select):not(:first-child) > button {
791
+ border-top-left-radius: 0;
792
+ border-bottom-left-radius: 0;
793
+ border-left-style: var(--tw-border-style);
794
+ border-left-width: 0px;
795
+ }
796
+ > *:not(:last-child), > :is(.dropdown-menu, .popover, .select):not(:last-child) > button {
797
+ border-top-right-radius: 0;
798
+ border-bottom-right-radius: 0;
799
+ }
800
+ }
801
+ &[data-orientation='vertical'] {
802
+ flex-direction: column;
803
+ > hr[role='separator'] {
804
+ height: 1px;
805
+ width: auto;
806
+ }
807
+ > *:not(:first-child), > :is(.dropdown-menu, .popover, .select):not(:first-child) > button {
808
+ border-top-left-radius: 0;
809
+ border-top-right-radius: 0;
810
+ border-top-style: var(--tw-border-style);
811
+ border-top-width: 0px;
812
+ }
813
+ > *:not(:last-child), > :is(.dropdown-menu, .popover, .select):not(:last-child) > button {
814
+ border-bottom-right-radius: 0;
815
+ border-bottom-left-radius: 0;
816
+ }
817
+ }
818
+ }
627
819
  @layer components {
628
- .badge, .badge-primary, .badge-secondary, .badge-destructive, .badge-outline {
629
- display: inline-flex;
630
- width: fit-content;
820
+ .card {
821
+ display: flex;
822
+ flex-direction: column;
823
+ gap: calc(var(--spacing) * 6);
824
+ border-radius: var(--radius-xl);
825
+ border-style: var(--tw-border-style);
826
+ border-width: 1px;
827
+ background-color: var(--color-card);
828
+ padding-block: calc(var(--spacing) * 6);
829
+ color: var(--color-card-foreground);
830
+ --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
831
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
832
+ > header {
833
+ container-type: inline-size;
834
+ container-name: card-header;
835
+ display: grid;
836
+ grid-auto-rows: min-content;
837
+ grid-template-rows: auto auto;
838
+ align-items: flex-start;
839
+ gap: calc(var(--spacing) * 1.5);
840
+ padding-inline: calc(var(--spacing) * 6);
841
+ &:has(*[data-slot="card-action"]) {
842
+ grid-template-columns: 1fr auto;
843
+ }
844
+ &:is(.border-b) {
845
+ padding-bottom: calc(var(--spacing) * 6);
846
+ }
847
+ h2 {
848
+ --tw-leading: 1;
849
+ line-height: 1;
850
+ --tw-font-weight: var(--font-weight-semibold);
851
+ font-weight: var(--font-weight-semibold);
852
+ }
853
+ p {
854
+ font-size: var(--text-sm);
855
+ line-height: var(--tw-leading, var(--text-sm--line-height));
856
+ color: var(--color-muted-foreground);
857
+ }
858
+ }
859
+ > section {
860
+ padding-inline: calc(var(--spacing) * 6);
861
+ }
862
+ > footer {
863
+ display: flex;
864
+ align-items: center;
865
+ padding-inline: calc(var(--spacing) * 6);
866
+ &:is(.border-t) {
867
+ padding-top: calc(var(--spacing) * 6);
868
+ }
869
+ }
870
+ }
871
+ }
872
+ @layer components {
873
+ :is(.form, .field) input[type='checkbox']:not([role='switch']), .input[type='checkbox']:not([role='switch']) {
874
+ width: calc(var(--spacing) * 4);
875
+ height: calc(var(--spacing) * 4);
631
876
  flex-shrink: 0;
632
- align-items: center;
633
- justify-content: center;
634
- gap: calc(var(--spacing) * 1);
635
- overflow: hidden;
636
- border-radius: var(--radius-md);
877
+ appearance: none;
878
+ border-radius: 4px;
637
879
  border-style: var(--tw-border-style);
638
880
  border-width: 1px;
639
- padding-inline: calc(var(--spacing) * 2);
640
- padding-block: calc(var(--spacing) * 0.5);
641
- font-size: var(--text-xs);
642
- line-height: var(--tw-leading, var(--text-xs--line-height));
643
- --tw-font-weight: var(--font-weight-medium);
644
- font-weight: var(--font-weight-medium);
645
- white-space: nowrap;
646
- transition-property: color,box-shadow;
881
+ border-color: var(--color-input);
882
+ --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));
883
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
884
+ transition-property: box-shadow;
647
885
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
648
886
  transition-duration: var(--tw-duration, var(--default-transition-duration));
887
+ --tw-outline-style: none;
888
+ outline-style: none;
889
+ &:checked {
890
+ border-color: var(--color-primary);
891
+ }
892
+ &:checked {
893
+ background-color: var(--color-primary);
894
+ }
649
895
  &:focus-visible {
650
896
  border-color: var(--color-ring);
651
897
  }
@@ -659,6 +905,12 @@
659
905
  --tw-ring-color: color-mix(in oklab, var(--color-ring) 50%, transparent);
660
906
  }
661
907
  }
908
+ &:disabled {
909
+ cursor: not-allowed;
910
+ }
911
+ &:disabled {
912
+ opacity: 50%;
913
+ }
662
914
  &[aria-invalid="true"] {
663
915
  border-color: var(--color-destructive);
664
916
  }
@@ -668,6 +920,17 @@
668
920
  --tw-ring-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);
669
921
  }
670
922
  }
923
+ &:is(.dark *) {
924
+ background-color: var(--color-input);
925
+ @supports (color: color-mix(in lab, red, red)) {
926
+ background-color: color-mix(in oklab, var(--color-input) 30%, transparent);
927
+ }
928
+ }
929
+ &:is(.dark *) {
930
+ &:checked {
931
+ background-color: var(--color-primary);
932
+ }
933
+ }
671
934
  &:is(.dark *) {
672
935
  &[aria-invalid="true"] {
673
936
  --tw-ring-color: var(--color-destructive);
@@ -676,259 +939,358 @@
676
939
  }
677
940
  }
678
941
  }
679
- &>svg {
680
- pointer-events: none;
681
- }
682
- &>svg {
683
- width: calc(var(--spacing) * 3);
684
- height: calc(var(--spacing) * 3);
942
+ &:checked:after {
943
+ display: block;
944
+ width: calc(var(--spacing) * 3.5);
945
+ height: calc(var(--spacing) * 3.5);
946
+ background-color: var(--color-primary-foreground);
947
+ --tw-content: '';
948
+ content: var(--tw-content);
949
+ mask-image: var(--check-icon);
950
+ mask-size: 0.875rem;
951
+ mask-position: center;
952
+ mask-repeat: no-repeat;
685
953
  }
686
954
  }
687
- .badge, .badge-primary {
688
- border-color: transparent;
689
- background-color: var(--color-primary);
690
- color: var(--color-primary-foreground);
691
- a& {
692
- &:hover {
693
- @media (hover: hover) {
694
- background-color: var(--color-primary);
695
- @supports (color: color-mix(in lab, red, red)) {
696
- background-color: color-mix(in oklab, var(--color-primary) 90%, transparent);
697
- }
698
- }
699
- }
955
+ }
956
+ @layer components {
957
+ details {
958
+ &::details-content {
959
+ block-size: 0;
960
+ display: block;
961
+ opacity: 0%;
962
+ transition-property: all;
963
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
964
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
965
+ transition-behavior: allow-discrete;
966
+ }
967
+ &[open]::details-content {
968
+ block-size: auto;
969
+ block-size: calc-size(auto, size);
970
+ opacity: 100%;
971
+ }
972
+ summary {
973
+ display: inline-flex;
974
+ cursor: pointer;
975
+ align-items: center;
700
976
  }
701
977
  }
702
- .badge-secondary {
703
- border-color: transparent;
704
- background-color: var(--color-secondary);
705
- color: var(--color-secondary-foreground);
706
- a& {
707
- &:hover {
708
- @media (hover: hover) {
709
- background-color: var(--color-secondary);
710
- @supports (color: color-mix(in lab, red, red)) {
711
- background-color: color-mix(in oklab, var(--color-secondary) 90%, transparent);
712
- }
978
+ details > summary::-webkit-details-marker {
979
+ display: none;
980
+ }
981
+ }
982
+ @layer components {
983
+ .command-dialog {
984
+ inset-block: calc(var(--spacing) * 0);
985
+ opacity: 0%;
986
+ transition-property: all;
987
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
988
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
989
+ transition-behavior: allow-discrete;
990
+ &:is([open],:popover-open) {
991
+ opacity: 100%;
992
+ &::backdrop {
993
+ opacity: 100%;
994
+ }
995
+ > * {
996
+ --tw-scale-x: 100%;
997
+ --tw-scale-y: 100%;
998
+ --tw-scale-z: 100%;
999
+ scale: var(--tw-scale-x) var(--tw-scale-y);
1000
+ }
1001
+ @starting-style {
1002
+ opacity: 0%;
1003
+ &::backdrop {
1004
+ opacity: 0%;
1005
+ }
1006
+ > * {
1007
+ --tw-scale-x: 95%;
1008
+ --tw-scale-y: 95%;
1009
+ --tw-scale-z: 95%;
1010
+ scale: var(--tw-scale-x) var(--tw-scale-y);
713
1011
  }
714
1012
  }
715
1013
  }
716
- }
717
- .badge-destructive {
718
- border-color: transparent;
719
- background-color: var(--color-destructive);
720
- color: var(--color-white);
721
- &:focus-visible {
722
- --tw-ring-color: var(--color-destructive);
1014
+ &::backdrop {
1015
+ background-color: color-mix(in srgb, #000 50%, transparent);
723
1016
  @supports (color: color-mix(in lab, red, red)) {
724
- --tw-ring-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);
1017
+ background-color: color-mix(in oklab, var(--color-black) 50%, transparent);
725
1018
  }
1019
+ opacity: 0%;
1020
+ transition-property: all;
1021
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
1022
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
1023
+ transition-behavior: allow-discrete;
726
1024
  }
727
- &:is(.dark *) {
728
- background-color: var(--color-destructive);
729
- @supports (color: color-mix(in lab, red, red)) {
730
- background-color: color-mix(in oklab, var(--color-destructive) 60%, transparent);
1025
+ > * {
1026
+ position: fixed;
1027
+ top: 50%;
1028
+ left: 50%;
1029
+ z-index: 50;
1030
+ display: flex;
1031
+ max-height: min(640px, calc(100% - 2rem));
1032
+ width: 100%;
1033
+ max-width: calc(100% - 2rem);
1034
+ --tw-translate-x: calc(calc(1/2 * 100%) * -1);
1035
+ translate: var(--tw-translate-x) var(--tw-translate-y);
1036
+ --tw-translate-y: calc(calc(1/2 * 100%) * -1);
1037
+ translate: var(--tw-translate-x) var(--tw-translate-y);
1038
+ flex-direction: column;
1039
+ overflow: hidden;
1040
+ border-radius: var(--radius-lg);
1041
+ border-style: var(--tw-border-style);
1042
+ border-width: 1px;
1043
+ background-color: var(--color-background);
1044
+ --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
1045
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
1046
+ @media (width >= 40rem) {
1047
+ max-width: var(--container-lg);
731
1048
  }
732
- }
733
- &:is(.dark *) {
734
- &:focus-visible {
735
- --tw-ring-color: var(--color-destructive);
736
- @supports (color: color-mix(in lab, red, red)) {
737
- --tw-ring-color: color-mix(in oklab, var(--color-destructive) 40%, transparent);
738
- }
1049
+ --tw-scale-x: 95%;
1050
+ --tw-scale-y: 95%;
1051
+ --tw-scale-z: 95%;
1052
+ scale: var(--tw-scale-x) var(--tw-scale-y);
1053
+ transition-property: all;
1054
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
1055
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
1056
+ > button, > form[method='dialog'] {
1057
+ position: absolute;
1058
+ top: calc(var(--spacing) * 4);
1059
+ right: calc(var(--spacing) * 4);
739
1060
  }
740
- }
741
- a& {
742
- &:hover {
743
- @media (hover: hover) {
744
- background-color: var(--color-destructive);
745
- @supports (color: color-mix(in lab, red, red)) {
746
- background-color: color-mix(in oklab, var(--color-destructive) 90%, transparent);
1061
+ > button, > form[method='dialog'] > button {
1062
+ border-radius: var(--radius-xs);
1063
+ opacity: 70%;
1064
+ --tw-ring-offset-color: var(--color-background);
1065
+ transition-property: opacity;
1066
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
1067
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
1068
+ &:hover {
1069
+ @media (hover: hover) {
1070
+ opacity: 100%;
747
1071
  }
748
1072
  }
749
- }
750
- }
751
- }
752
- .badge-outline {
753
- color: var(--color-foreground);
754
- a& {
755
- &:hover {
756
- @media (hover: hover) {
1073
+ &:focus {
1074
+ --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
1075
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
1076
+ }
1077
+ &:focus {
1078
+ --tw-ring-color: var(--color-ring);
1079
+ }
1080
+ &:focus {
1081
+ --tw-ring-offset-width: 2px;
1082
+ --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
1083
+ }
1084
+ &:focus {
1085
+ --tw-outline-style: none;
1086
+ outline-style: none;
1087
+ @media (forced-colors: active) {
1088
+ outline: 2px solid transparent;
1089
+ outline-offset: 2px;
1090
+ }
1091
+ }
1092
+ &:disabled {
1093
+ pointer-events: none;
1094
+ }
1095
+ &[data-state="open"] {
757
1096
  background-color: var(--color-accent);
758
1097
  }
1098
+ &[data-state="open"] {
1099
+ color: var(--color-muted-foreground);
1100
+ }
1101
+ & svg {
1102
+ pointer-events: none;
1103
+ }
1104
+ & svg {
1105
+ flex-shrink: 0;
1106
+ }
1107
+ & svg:not([class*='size-']) {
1108
+ width: calc(var(--spacing) * 4);
1109
+ height: calc(var(--spacing) * 4);
1110
+ }
759
1111
  }
760
1112
  }
761
- a& {
762
- &:hover {
763
- @media (hover: hover) {
764
- color: var(--color-accent-foreground);
1113
+ .command {
1114
+ > header input {
1115
+ height: calc(var(--spacing) * 12);
1116
+ }
1117
+ [role='menu'] {
1118
+ padding-inline: calc(var(--spacing) * 2);
1119
+ [role='menuitem'] {
1120
+ padding-inline: calc(var(--spacing) * 2);
1121
+ padding-block: calc(var(--spacing) * 3);
1122
+ & svg {
1123
+ width: calc(var(--spacing) * 5);
1124
+ height: calc(var(--spacing) * 5);
1125
+ }
1126
+ }
1127
+ [role='heading'] {
1128
+ padding-inline: calc(var(--spacing) * 2);
1129
+ padding-block: calc(var(--spacing) * 1.5);
1130
+ --tw-font-weight: var(--font-weight-medium);
1131
+ font-weight: var(--font-weight-medium);
1132
+ color: var(--color-muted-foreground);
765
1133
  }
766
1134
  }
767
1135
  }
768
1136
  }
769
- }
770
- @layer components {
771
- .card {
772
- display: flex;
773
- flex-direction: column;
774
- gap: calc(var(--spacing) * 6);
775
- border-radius: var(--radius-xl);
776
- border-style: var(--tw-border-style);
777
- border-width: 1px;
778
- background-color: var(--color-card);
779
- padding-block: calc(var(--spacing) * 6);
780
- color: var(--color-card-foreground);
781
- --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
782
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
1137
+ .command {
783
1138
  > header {
784
- container-type: inline-size;
785
- container-name: card-header;
786
- display: grid;
787
- grid-auto-rows: min-content;
788
- grid-template-rows: auto auto;
789
- align-items: flex-start;
790
- gap: calc(var(--spacing) * 1.5);
791
- padding-inline: calc(var(--spacing) * 6);
792
- &:has(*[data-slot="card-action"]) {
793
- grid-template-columns: 1fr auto;
1139
+ display: flex;
1140
+ align-items: center;
1141
+ gap: calc(var(--spacing) * 2);
1142
+ border-bottom-style: var(--tw-border-style);
1143
+ border-bottom-width: 1px;
1144
+ padding-inline: calc(var(--spacing) * 3);
1145
+ svg {
1146
+ width: calc(var(--spacing) * 4);
1147
+ height: calc(var(--spacing) * 4);
1148
+ flex-shrink: 0;
1149
+ opacity: 50%;
1150
+ }
1151
+ input {
1152
+ display: flex;
1153
+ height: calc(var(--spacing) * 10);
1154
+ width: 100%;
1155
+ border-radius: var(--radius-md);
1156
+ background-color: transparent;
1157
+ padding-block: calc(var(--spacing) * 3);
1158
+ font-size: var(--text-sm);
1159
+ line-height: var(--tw-leading, var(--text-sm--line-height));
1160
+ --tw-outline-style: none;
1161
+ outline-style: none;
1162
+ @media (forced-colors: active) {
1163
+ outline: 2px solid transparent;
1164
+ outline-offset: 2px;
1165
+ }
1166
+ &::placeholder {
1167
+ color: var(--color-muted-foreground);
1168
+ }
1169
+ &:disabled {
1170
+ cursor: not-allowed;
1171
+ }
1172
+ &:disabled {
1173
+ opacity: 50%;
1174
+ }
1175
+ }
1176
+ }
1177
+ [role='menu'] {
1178
+ max-height: 300px;
1179
+ overflow-x: hidden;
1180
+ overflow-y: auto;
1181
+ padding: calc(var(--spacing) * 1);
1182
+ [role='menuitem'] {
1183
+ position: relative;
1184
+ display: flex;
1185
+ width: 100%;
1186
+ cursor: default;
1187
+ align-items: center;
1188
+ gap: calc(var(--spacing) * 2);
1189
+ overflow: hidden;
1190
+ text-overflow: ellipsis;
1191
+ white-space: nowrap;
1192
+ border-radius: var(--radius-sm);
1193
+ padding-inline: calc(var(--spacing) * 2);
1194
+ padding-block: calc(var(--spacing) * 1.5);
1195
+ font-size: var(--text-sm);
1196
+ line-height: var(--tw-leading, var(--text-sm--line-height));
1197
+ --tw-outline-style: none;
1198
+ outline-style: none;
1199
+ @media (forced-colors: active) {
1200
+ outline: 2px solid transparent;
1201
+ outline-offset: 2px;
1202
+ }
1203
+ -webkit-user-select: none;
1204
+ user-select: none;
1205
+ &:disabled {
1206
+ pointer-events: none;
1207
+ }
1208
+ &:disabled {
1209
+ opacity: 50%;
1210
+ }
1211
+ &[aria-disabled="true"] {
1212
+ pointer-events: none;
1213
+ }
1214
+ &[aria-disabled="true"] {
1215
+ opacity: 50%;
1216
+ }
1217
+ &[aria-hidden="true"] {
1218
+ display: none;
1219
+ }
1220
+ & svg {
1221
+ pointer-events: none;
1222
+ }
1223
+ & svg {
1224
+ flex-shrink: 0;
1225
+ }
1226
+ & svg:not([class*='size-']) {
1227
+ width: calc(var(--spacing) * 4);
1228
+ height: calc(var(--spacing) * 4);
1229
+ }
1230
+ & svg:not([class*='text-']) {
1231
+ color: var(--color-muted-foreground);
1232
+ }
1233
+ &.active {
1234
+ background-color: var(--color-accent);
1235
+ color: var(--color-accent-foreground);
1236
+ }
794
1237
  }
795
- &:is(.border-b) {
796
- padding-bottom: calc(var(--spacing) * 6);
1238
+ [role='heading'] {
1239
+ display: flex;
1240
+ padding-inline: calc(var(--spacing) * 2);
1241
+ padding-block: calc(var(--spacing) * 1.5);
1242
+ font-size: var(--text-xs);
1243
+ line-height: var(--tw-leading, var(--text-xs--line-height));
1244
+ --tw-font-weight: var(--font-weight-medium);
1245
+ font-weight: var(--font-weight-medium);
1246
+ color: var(--color-muted-foreground);
797
1247
  }
798
- h2 {
799
- --tw-leading: 1;
800
- line-height: 1;
801
- --tw-font-weight: var(--font-weight-semibold);
802
- font-weight: var(--font-weight-semibold);
1248
+ [role='group']:not(:has([role='menuitem']:not([aria-hidden='true']))) {
1249
+ display: none;
803
1250
  }
804
- p {
1251
+ [role='separator'] {
1252
+ margin-inline: calc(var(--spacing) * -1);
1253
+ margin-block: calc(var(--spacing) * 1);
1254
+ border-color: var(--color-border);
1255
+ }
1256
+ &:not(:has([data-value]:not([aria-hidden='true'])))::before {
1257
+ margin: calc(var(--spacing) * -1);
1258
+ display: flex;
1259
+ align-items: center;
1260
+ justify-content: center;
1261
+ overflow: hidden;
1262
+ text-overflow: ellipsis;
1263
+ white-space: nowrap;
1264
+ padding-inline: calc(var(--spacing) * 3);
1265
+ padding-block: calc(var(--spacing) * 6);
805
1266
  font-size: var(--text-sm);
806
1267
  line-height: var(--tw-leading, var(--text-sm--line-height));
807
- color: var(--color-muted-foreground);
808
- }
809
- }
810
- > section {
811
- padding-inline: calc(var(--spacing) * 6);
812
- }
813
- > footer {
814
- display: flex;
815
- align-items: center;
816
- padding-inline: calc(var(--spacing) * 6);
817
- &:is(.border-t) {
818
- padding-top: calc(var(--spacing) * 6);
819
- }
820
- }
821
- }
822
- }
823
- @layer components {
824
- .form input[type='checkbox']:not([role='switch']), .input[type='checkbox']:not([role='switch']) {
825
- width: calc(var(--spacing) * 4);
826
- height: calc(var(--spacing) * 4);
827
- flex-shrink: 0;
828
- appearance: none;
829
- border-radius: 4px;
830
- border-style: var(--tw-border-style);
831
- border-width: 1px;
832
- border-color: var(--color-input);
833
- --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));
834
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
835
- transition-property: box-shadow;
836
- transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
837
- transition-duration: var(--tw-duration, var(--default-transition-duration));
838
- --tw-outline-style: none;
839
- outline-style: none;
840
- &:checked {
841
- border-color: var(--color-primary);
842
- }
843
- &:checked {
844
- background-color: var(--color-primary);
845
- }
846
- &:focus-visible {
847
- border-color: var(--color-ring);
848
- }
849
- &:focus-visible {
850
- --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
851
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
852
- }
853
- &:focus-visible {
854
- --tw-ring-color: var(--color-ring);
855
- @supports (color: color-mix(in lab, red, red)) {
856
- --tw-ring-color: color-mix(in oklab, var(--color-ring) 50%, transparent);
857
1268
  }
858
- }
859
- &:disabled {
860
- cursor: not-allowed;
861
- }
862
- &:disabled {
863
- opacity: 50%;
864
- }
865
- &[aria-invalid="true"] {
866
- border-color: var(--color-destructive);
867
- }
868
- &[aria-invalid="true"] {
869
- --tw-ring-color: var(--color-destructive);
870
- @supports (color: color-mix(in lab, red, red)) {
871
- --tw-ring-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);
1269
+ &[data-empty]:not(:has([data-value]:not([aria-hidden='true'])))::before {
1270
+ --tw-content: attr(data-empty);
1271
+ content: var(--tw-content);
872
1272
  }
873
- }
874
- &:is(.dark *) {
875
- background-color: var(--color-input);
876
- @supports (color: color-mix(in lab, red, red)) {
877
- background-color: color-mix(in oklab, var(--color-input) 30%, transparent);
1273
+ &:not([data-empty]):not(:has([data-value]:not([aria-hidden='true'])))::before {
1274
+ --tw-content: 'No results found';
1275
+ content: var(--tw-content);
878
1276
  }
879
1277
  }
880
- &:is(.dark *) {
881
- &:checked {
882
- background-color: var(--color-primary);
1278
+ &:not([data-command-initialized]) [role='menuitem'] {
1279
+ &:hover {
1280
+ @media (hover: hover) {
1281
+ background-color: var(--color-accent);
1282
+ }
883
1283
  }
884
- }
885
- &:is(.dark *) {
886
- &[aria-invalid="true"] {
887
- --tw-ring-color: var(--color-destructive);
888
- @supports (color: color-mix(in lab, red, red)) {
889
- --tw-ring-color: color-mix(in oklab, var(--color-destructive) 40%, transparent);
1284
+ &:hover {
1285
+ @media (hover: hover) {
1286
+ color: var(--color-accent-foreground);
890
1287
  }
891
1288
  }
892
1289
  }
893
- &:checked:after {
894
- display: block;
895
- width: calc(var(--spacing) * 3.5);
896
- height: calc(var(--spacing) * 3.5);
897
- background-color: var(--color-primary-foreground);
898
- --tw-content: '';
899
- content: var(--tw-content);
900
- mask-image: var(--check-icon);
901
- mask-size: 0.875rem;
902
- mask-position: center;
903
- mask-repeat: no-repeat;
904
- }
905
- }
906
- }
907
- @layer components {
908
- details {
909
- &::details-content {
910
- block-size: 0;
911
- display: block;
912
- opacity: 0%;
913
- transition-property: all;
914
- transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
915
- transition-duration: var(--tw-duration, var(--default-transition-duration));
916
- transition-behavior: allow-discrete;
917
- }
918
- &[open]::details-content {
919
- block-size: auto;
920
- block-size: calc-size(auto, size);
921
- opacity: 100%;
922
- }
923
- summary {
924
- display: inline-flex;
925
- cursor: pointer;
926
- align-items: center;
1290
+ &:has(> header input:not(:placeholder-shown)) [role='separator'] {
1291
+ display: none;
927
1292
  }
928
1293
  }
929
- details > summary::-webkit-details-marker {
930
- display: none;
931
- }
932
1294
  }
933
1295
  @layer components {
934
1296
  .dialog {
@@ -943,7 +1305,7 @@
943
1305
  &::backdrop {
944
1306
  opacity: 100%;
945
1307
  }
946
- > article {
1308
+ > * {
947
1309
  --tw-scale-x: 100%;
948
1310
  --tw-scale-y: 100%;
949
1311
  --tw-scale-z: 100%;
@@ -954,7 +1316,7 @@
954
1316
  &::backdrop {
955
1317
  opacity: 0%;
956
1318
  }
957
- > article {
1319
+ > * {
958
1320
  --tw-scale-x: 95%;
959
1321
  --tw-scale-y: 95%;
960
1322
  --tw-scale-z: 95%;
@@ -973,7 +1335,7 @@
973
1335
  transition-duration: var(--tw-duration, var(--default-transition-duration));
974
1336
  transition-behavior: allow-discrete;
975
1337
  }
976
- > article {
1338
+ > * {
977
1339
  position: fixed;
978
1340
  top: 50%;
979
1341
  left: 50%;
@@ -1202,7 +1564,117 @@
1202
1564
  }
1203
1565
  }
1204
1566
  @layer components {
1205
- .form input[type='text'], .form input[type='email'], .form input[type='password'], .form input[type='number'], .form input[type='file'], .form input[type='tel'], .form input[type='url'], .form input[type='search'], .form input[type='date'], .form input[type='datetime-local'], .form input[type='month'], .form input[type='week'], .form input[type='time'], .input[type='text'], .input[type='email'], .input[type='password'], .input[type='number'], .input[type='file'], .input[type='tel'], .input[type='url'], .input[type='search'], .input[type='date'], .input[type='datetime-local'], .input[type='month'], .input[type='week'], .input[type='time'] {
1567
+ .fieldset {
1568
+ display: flex;
1569
+ flex-direction: column;
1570
+ gap: calc(var(--spacing) * 6);
1571
+ > legend {
1572
+ margin-bottom: calc(var(--spacing) * 3);
1573
+ font-size: var(--text-base);
1574
+ line-height: var(--tw-leading, var(--text-base--line-height));
1575
+ --tw-font-weight: var(--font-weight-medium);
1576
+ font-weight: var(--font-weight-medium);
1577
+ }
1578
+ }
1579
+ .field {
1580
+ display: flex;
1581
+ width: 100%;
1582
+ flex-direction: column;
1583
+ gap: calc(var(--spacing) * 3);
1584
+ &[data-invalid="true"] {
1585
+ color: var(--color-destructive);
1586
+ }
1587
+ &>* {
1588
+ width: 100%;
1589
+ }
1590
+ &>.sr-only {
1591
+ width: auto;
1592
+ }
1593
+ h2, h3 {
1594
+ display: flex;
1595
+ width: fit-content;
1596
+ align-items: center;
1597
+ gap: calc(var(--spacing) * 2);
1598
+ font-size: var(--text-sm);
1599
+ line-height: var(--tw-leading, var(--text-sm--line-height));
1600
+ --tw-leading: var(--leading-snug);
1601
+ line-height: var(--leading-snug);
1602
+ --tw-font-weight: var(--font-weight-medium);
1603
+ font-weight: var(--font-weight-medium);
1604
+ }
1605
+ [role="alert"] {
1606
+ font-size: var(--text-sm);
1607
+ line-height: var(--tw-leading, var(--text-sm--line-height));
1608
+ --tw-font-weight: var(--font-weight-normal);
1609
+ font-weight: var(--font-weight-normal);
1610
+ color: var(--color-destructive);
1611
+ ul {
1612
+ margin-left: calc(var(--spacing) * 4);
1613
+ display: flex;
1614
+ list-style-type: disc;
1615
+ flex-direction: column;
1616
+ gap: calc(var(--spacing) * 1);
1617
+ }
1618
+ }
1619
+ section {
1620
+ display: flex;
1621
+ flex: 1;
1622
+ flex-direction: column;
1623
+ gap: calc(var(--spacing) * 1.5);
1624
+ --tw-leading: var(--leading-snug);
1625
+ line-height: var(--leading-snug);
1626
+ }
1627
+ &[data-orientation='horizontal'] {
1628
+ flex-direction: row;
1629
+ align-items: center;
1630
+ &:has(>section) {
1631
+ align-items: flex-start;
1632
+ }
1633
+ & p {
1634
+ text-wrap: balance;
1635
+ }
1636
+ &:has(>section) {
1637
+ &>[type=checkbox],[type=radio] {
1638
+ margin-top: 1px;
1639
+ }
1640
+ }
1641
+ &>label {
1642
+ flex: auto;
1643
+ }
1644
+ }
1645
+ }
1646
+ .fieldset legend + p, .field > p, .field section > p {
1647
+ font-size: var(--text-sm);
1648
+ line-height: var(--tw-leading, var(--text-sm--line-height));
1649
+ --tw-leading: var(--leading-normal);
1650
+ line-height: var(--leading-normal);
1651
+ --tw-font-weight: var(--font-weight-normal);
1652
+ font-weight: var(--font-weight-normal);
1653
+ color: var(--color-muted-foreground);
1654
+ &>a {
1655
+ text-decoration-line: underline;
1656
+ }
1657
+ &>a {
1658
+ text-underline-offset: 4px;
1659
+ }
1660
+ &>a:hover {
1661
+ color: var(--color-primary);
1662
+ }
1663
+ }
1664
+ .fieldset legend + p {
1665
+ margin-top: calc(var(--spacing) * -1.5);
1666
+ }
1667
+ .field > p {
1668
+ &:last-child {
1669
+ margin-top: calc(var(--spacing) * 0);
1670
+ }
1671
+ &:nth-last-child(2) {
1672
+ margin-top: calc(var(--spacing) * -1);
1673
+ }
1674
+ }
1675
+ }
1676
+ @layer components {
1677
+ :is(.form, .field) input[type='text'], :is(.form, .field) input[type='email'], :is(.form, .field) input[type='password'], :is(.form, .field) input[type='number'], :is(.form, .field) input[type='file'], :is(.form, .field) input[type='tel'], :is(.form, .field) input[type='url'], :is(.form, .field) input[type='search'], :is(.form, .field) input[type='date'], :is(.form, .field) input[type='datetime-local'], :is(.form, .field) input[type='month'], :is(.form, .field) input[type='week'], :is(.form, .field) input[type='time'], .input[type='text'], .input[type='email'], .input[type='password'], .input[type='number'], .input[type='file'], .input[type='tel'], .input[type='url'], .input[type='search'], .input[type='date'], .input[type='datetime-local'], .input[type='month'], .input[type='week'], .input[type='time'] {
1206
1678
  display: flex;
1207
1679
  height: calc(var(--spacing) * 9);
1208
1680
  width: 100%;
@@ -1315,7 +1787,34 @@
1315
1787
  }
1316
1788
  }
1317
1789
  @layer components {
1318
- .form label, .label {
1790
+ .kbd {
1791
+ pointer-events: none;
1792
+ display: inline-flex;
1793
+ height: calc(var(--spacing) * 5);
1794
+ width: fit-content;
1795
+ min-width: calc(var(--spacing) * 5);
1796
+ align-items: center;
1797
+ justify-content: center;
1798
+ gap: calc(var(--spacing) * 1);
1799
+ border-radius: var(--radius-sm);
1800
+ background-color: var(--color-muted);
1801
+ padding-inline: calc(var(--spacing) * 1);
1802
+ font-family: var(--font-sans);
1803
+ font-size: var(--text-xs);
1804
+ line-height: var(--tw-leading, var(--text-xs--line-height));
1805
+ --tw-font-weight: var(--font-weight-medium);
1806
+ font-weight: var(--font-weight-medium);
1807
+ color: var(--color-muted-foreground);
1808
+ -webkit-user-select: none;
1809
+ user-select: none;
1810
+ & svg:not([class*='size-']) {
1811
+ width: calc(var(--spacing) * 3);
1812
+ height: calc(var(--spacing) * 3);
1813
+ }
1814
+ }
1815
+ }
1816
+ @layer components {
1817
+ :is(.form, .field) label, .label {
1319
1818
  display: flex;
1320
1819
  align-items: center;
1321
1820
  gap: calc(var(--spacing) * 2);
@@ -1439,7 +1938,7 @@
1439
1938
  }
1440
1939
  }
1441
1940
  @layer components {
1442
- .form input[type='radio'], .input[type='radio'] {
1941
+ :is(.form, .field) input[type='radio'], .input[type='radio'] {
1443
1942
  position: relative;
1444
1943
  aspect-ratio: 1 / 1;
1445
1944
  width: calc(var(--spacing) * 4);
@@ -1518,7 +2017,7 @@
1518
2017
  }
1519
2018
  }
1520
2019
  @layer components {
1521
- .form input[type='range'], .input[type='range'] {
2020
+ :is(.form, .field) input[type='range'], .input[type='range'] {
1522
2021
  display: flex;
1523
2022
  appearance: none;
1524
2023
  align-items: center;
@@ -1628,7 +2127,7 @@
1628
2127
  }
1629
2128
  }
1630
2129
  @layer components {
1631
- .form select, select.select {
2130
+ :is(.form, .field) select, select.select {
1632
2131
  display: flex;
1633
2132
  height: calc(var(--spacing) * 9);
1634
2133
  width: fit-content;
@@ -1861,6 +2360,9 @@
1861
2360
  content: var(--tw-content);
1862
2361
  }
1863
2362
  }
2363
+ [data-popover]:has(> header input:not(:placeholder-shown)) [role='separator'] {
2364
+ display: none;
2365
+ }
1864
2366
  &:not([data-select-initialized]) [data-popover] [role='option'] {
1865
2367
  &:hover {
1866
2368
  @media (hover: hover) {
@@ -2230,7 +2732,7 @@
2230
2732
  }
2231
2733
  }
2232
2734
  @layer components {
2233
- .form input[type='checkbox'][role='switch'], .input[type='checkbox'][role='switch'] {
2735
+ :is(.form, .field) input[type='checkbox'][role='switch'], .input[type='checkbox'][role='switch'] {
2234
2736
  display: inline-flex;
2235
2737
  height: 1.15rem;
2236
2738
  width: calc(var(--spacing) * 8);
@@ -2530,7 +3032,7 @@
2530
3032
  }
2531
3033
  }
2532
3034
  @layer components {
2533
- .form textarea, .textarea {
3035
+ :is(.form, .field) textarea, .textarea {
2534
3036
  display: flex;
2535
3037
  field-sizing: content;
2536
3038
  min-height: calc(var(--spacing) * 16);
@@ -2667,6 +3169,7 @@
2667
3169
  letter-spacing: var(--tracking-tight);
2668
3170
  }
2669
3171
  p {
3172
+ word-break: break-all;
2670
3173
  color: var(--color-muted-foreground);
2671
3174
  }
2672
3175
  }