@typlog/ui 0.14.0 → 0.15.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.
package/components.css CHANGED
@@ -656,6 +656,404 @@
656
656
  background-color: var(--gray-a9);
657
657
  }
658
658
 
659
+ @layer components {
660
+ .ui-Skeleton {
661
+ display: block;
662
+ min-height: var(--space-2);
663
+ border-radius: max(var(--radius-2), var(--radius-full));
664
+ background-color: var(--gray-a3);
665
+ animation: ui-skeleton-pulse 1.5s ease-in-out infinite;
666
+ }
667
+ }
668
+ @keyframes ui-skeleton-pulse {
669
+ 0%,
670
+ 100% {
671
+ opacity: 1;
672
+ }
673
+ 50% {
674
+ opacity: 0.55;
675
+ }
676
+ }
677
+ @media (prefers-reduced-motion: reduce) {
678
+ .ui-Skeleton {
679
+ animation: none;
680
+ }
681
+ }
682
+
683
+ @layer components {
684
+ .ui-Spinner {
685
+ display: inline-flex;
686
+ flex: none;
687
+ align-items: center;
688
+ justify-content: center;
689
+ width: var(--spinner-size);
690
+ height: var(--spinner-size);
691
+ color: var(--accent-9);
692
+ vertical-align: middle;
693
+ }
694
+ .ui-SpinnerGraphic {
695
+ display: block;
696
+ width: 100%;
697
+ height: 100%;
698
+ animation: ui-spin 800ms linear infinite;
699
+ }
700
+ .ui-SpinnerTrack,
701
+ .ui-SpinnerIndicator {
702
+ fill: none;
703
+ stroke-linecap: round;
704
+ stroke-width: var(--spinner-stroke-width);
705
+ }
706
+ .ui-SpinnerTrack {
707
+ stroke: var(--accent-a4);
708
+ }
709
+ .ui-SpinnerIndicator {
710
+ stroke: currentColor;
711
+ stroke-dasharray: 42 56.5;
712
+ stroke-dashoffset: 0;
713
+ }
714
+ }
715
+ .ui-Spinner:where(.r-size-1) {
716
+ --spinner-size: var(--space-3);
717
+ --spinner-stroke-width: 2.5;
718
+ }
719
+ .ui-Spinner:where(.r-size-2) {
720
+ --spinner-size: var(--space-4);
721
+ --spinner-stroke-width: 2.25;
722
+ }
723
+ .ui-Spinner:where(.r-size-3) {
724
+ --spinner-size: var(--space-5);
725
+ --spinner-stroke-width: 2;
726
+ }
727
+ @media (prefers-reduced-motion: reduce) {
728
+ .ui-SpinnerGraphic {
729
+ animation: none;
730
+ }
731
+ }
732
+
733
+ @layer components {
734
+ .ui-Empty {
735
+ display: flex;
736
+ flex-direction: column;
737
+ align-items: center;
738
+ justify-content: center;
739
+ box-sizing: border-box;
740
+ width: 100%;
741
+ padding: var(--empty-padding);
742
+ gap: var(--empty-section-gap);
743
+ border-radius: var(--empty-radius);
744
+ text-align: center;
745
+ }
746
+ }
747
+ .ui-Empty:where(.r-size-1) {
748
+ --empty-padding: var(--space-4);
749
+ --empty-radius: max(var(--radius-2), var(--radius-full));
750
+ --empty-section-gap: var(--space-3);
751
+ --empty-gap: var(--space-1);
752
+ --empty-title-font-size: var(--font-size-3);
753
+ --empty-title-line-height: var(--line-height-3);
754
+ --empty-description-font-size: var(--font-size-2);
755
+ --empty-description-line-height: var(--line-height-2);
756
+ }
757
+ .ui-Empty:where(.r-size-2) {
758
+ --empty-padding: var(--space-6);
759
+ --empty-radius: max(var(--radius-3), var(--radius-full));
760
+ --empty-section-gap: var(--space-4);
761
+ --empty-gap: var(--space-2);
762
+ --empty-title-font-size: var(--font-size-4);
763
+ --empty-title-line-height: var(--line-height-4);
764
+ --empty-description-font-size: var(--font-size-3);
765
+ --empty-description-line-height: var(--line-height-3);
766
+ }
767
+ .ui-Empty:where(.r-size-3) {
768
+ --empty-padding: var(--space-8);
769
+ --empty-radius: max(var(--radius-4), var(--radius-full));
770
+ --empty-section-gap: var(--space-5);
771
+ --empty-gap: var(--space-3);
772
+ --empty-title-font-size: var(--font-size-5);
773
+ --empty-title-line-height: var(--line-height-5);
774
+ --empty-description-font-size: var(--font-size-4);
775
+ --empty-description-line-height: var(--line-height-4);
776
+ }
777
+
778
+ .ui-EmptyHeader {
779
+ display: flex;
780
+ flex-direction: column;
781
+ align-items: center;
782
+ gap: var(--empty-gap);
783
+ }
784
+
785
+ .ui-EmptyMedia {
786
+ display: flex;
787
+ align-items: center;
788
+ justify-content: center;
789
+ color: var(--gray-11);
790
+ }
791
+ .ui-EmptyMedia:where(.r-variant-icon) {
792
+ width: var(--empty-media-size);
793
+ height: var(--empty-media-size);
794
+ border-radius: var(--empty-media-radius);
795
+ background-color: var(--gray-a3);
796
+ color: var(--gray-12);
797
+ }
798
+ .ui-EmptyMedia:where(.r-size-1) {
799
+ --empty-media-size: var(--space-6);
800
+ --empty-media-radius: max(var(--radius-2), var(--radius-full));
801
+ font-size: var(--font-size-3);
802
+ }
803
+ .ui-EmptyMedia:where(.r-size-2) {
804
+ --empty-media-size: var(--space-7);
805
+ --empty-media-radius: max(var(--radius-3), var(--radius-full));
806
+ font-size: var(--font-size-4);
807
+ }
808
+ .ui-EmptyMedia:where(.r-size-3) {
809
+ --empty-media-size: var(--space-8);
810
+ --empty-media-radius: max(var(--radius-4), var(--radius-full));
811
+ font-size: var(--font-size-5);
812
+ }
813
+
814
+ .ui-EmptyTitle {
815
+ margin: 0;
816
+ color: var(--gray-12);
817
+ font-size: var(--empty-title-font-size);
818
+ font-weight: var(--font-weight-semibold);
819
+ line-height: var(--empty-title-line-height);
820
+ }
821
+
822
+ .ui-EmptyDescription {
823
+ max-width: 40rem;
824
+ margin: 0;
825
+ color: var(--gray-11);
826
+ font-size: var(--empty-description-font-size);
827
+ line-height: var(--empty-description-line-height);
828
+ }
829
+
830
+ .ui-EmptyContent {
831
+ display: flex;
832
+ flex-wrap: wrap;
833
+ align-items: center;
834
+ justify-content: center;
835
+ gap: var(--empty-gap);
836
+ }
837
+ @layer components {
838
+ .ui-TreeRoot {
839
+ box-sizing: border-box;
840
+ display: block;
841
+ min-width: 0;
842
+ width: 100%;
843
+ margin: 0;
844
+ padding: var(--space-2);
845
+ overflow-x: auto;
846
+ border: 1px solid var(--gray-a6);
847
+ border-radius: var(--radius-3);
848
+ background-color: var(--color-background);
849
+ color: var(--gray-12);
850
+ list-style: none;
851
+ outline: none;
852
+ }
853
+ .ui-TreeItem {
854
+ display: block;
855
+ min-width: 0;
856
+ margin: 0;
857
+ padding: 0;
858
+ list-style: none;
859
+ outline: none;
860
+ }
861
+ .ui-TreeItemRow {
862
+ box-sizing: border-box;
863
+ display: flex;
864
+ align-items: center;
865
+ position: relative;
866
+ width: -moz-fit-content;
867
+ width: fit-content;
868
+ max-width: 100%;
869
+ min-width: 0;
870
+ height: var(--tree-row-height);
871
+ padding-block: var(--tree-row-padding);
872
+ padding-inline-start: calc((var(--tree-item-level) - 1) * var(--tree-item-indent));
873
+ color: var(--gray-12);
874
+ cursor: default;
875
+ -webkit-user-select: none;
876
+ -moz-user-select: none;
877
+ user-select: none;
878
+ }
879
+ .ui-TreeItemRow::before {
880
+ position: absolute;
881
+ inset-block: 0;
882
+ inset-inline-start: calc(var(--tree-item-indent) / 2 - 0.5px);
883
+ width: calc((var(--tree-item-level) - 1) * var(--tree-item-indent));
884
+ background: repeating-linear-gradient(
885
+ to right,
886
+ var(--tree-guide-color) 0,
887
+ var(--tree-guide-color) 1px,
888
+ transparent 1px var(--tree-item-indent)
889
+ );
890
+ content: '';
891
+ pointer-events: none;
892
+ }
893
+ .ui-TreeItemTarget {
894
+ box-sizing: border-box;
895
+ display: inline-flex;
896
+ align-items: center;
897
+ min-width: 0;
898
+ max-width: 100%;
899
+ gap: var(--tree-item-gap);
900
+ min-height: calc(var(--tree-row-height) - var(--tree-row-padding) * 2);
901
+ padding-inline: var(--tree-target-padding-inline);
902
+ border-radius: var(--tree-item-radius);
903
+ color: inherit;
904
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;
905
+ line-height: 1.4;
906
+ position: relative;
907
+ z-index: 1;
908
+ }
909
+ .ui-TreeItemIndicator {
910
+ box-sizing: border-box;
911
+ display: inline-flex;
912
+ flex: 0 0 var(--tree-indicator-size);
913
+ align-items: center;
914
+ justify-content: center;
915
+ width: var(--tree-indicator-size);
916
+ height: var(--tree-indicator-size);
917
+ color: var(--gray-9);
918
+ cursor: pointer;
919
+ }
920
+ .ui-TreeItemIndicator:where([data-has-children]) {
921
+ color: var(--gray-11);
922
+ }
923
+ .ui-TreeItemIndicator:where(:not([data-has-children])) {
924
+ visibility: hidden;
925
+ pointer-events: none;
926
+ }
927
+ .ui-TreeItemIndicatorGraphic {
928
+ width: var(--tree-indicator-icon-size);
929
+ height: var(--tree-indicator-icon-size);
930
+ transition: transform 120ms ease;
931
+ }
932
+ .ui-TreeItemIndicator:where([data-expanded]) .ui-TreeItemIndicatorGraphic {
933
+ transform: rotate(90deg);
934
+ }
935
+ .ui-TreeItemIcon {
936
+ display: inline-flex;
937
+ flex: 0 0 var(--tree-icon-size);
938
+ align-items: center;
939
+ justify-content: center;
940
+ width: var(--tree-icon-size);
941
+ height: var(--tree-icon-size);
942
+ color: var(--gray-10);
943
+ }
944
+ .ui-TreeItemIconGraphic,
945
+ .ui-TreeItemTrailingIcon {
946
+ width: var(--tree-icon-graphic-size);
947
+ height: var(--tree-icon-graphic-size);
948
+ }
949
+ .ui-TreeItemText {
950
+ min-width: 0;
951
+ overflow: hidden;
952
+ flex: 1 1 auto;
953
+ font-size: var(--tree-item-font-size);
954
+ line-height: 1.4;
955
+ letter-spacing: var(--tree-item-letter-spacing);
956
+ text-overflow: ellipsis;
957
+ white-space: nowrap;
958
+ }
959
+ .ui-TreeItemTrailing {
960
+ display: inline-flex;
961
+ flex: none;
962
+ align-items: center;
963
+ justify-content: center;
964
+ color: var(--gray-9);
965
+ font-family: var(--default-font-family);
966
+ font-size: var(--font-size-1);
967
+ line-height: var(--line-height-1);
968
+ }
969
+ .ui-TreeItem:where(:not([data-disabled])):where(:hover) .ui-TreeItemRow {
970
+ color: var(--gray-12);
971
+ }
972
+ .ui-TreeItem:where(:not([data-disabled])):where(:hover) .ui-TreeItemTarget {
973
+ background-color: var(--gray-a3);
974
+ }
975
+ .ui-TreeItem:where([data-selected]) .ui-TreeItemTarget {
976
+ background-color: var(--accent-a3);
977
+ color: var(--accent-a11);
978
+ }
979
+ .ui-TreeItem:where([data-selected]) .ui-TreeItemIcon {
980
+ color: var(--accent-a11);
981
+ }
982
+ .ui-TreeItem:where(.r-high-contrast[data-selected]) .ui-TreeItemTarget {
983
+ background-color: var(--accent-a5);
984
+ color: var(--accent-12);
985
+ }
986
+ .ui-TreeItem:where(:focus-visible) .ui-TreeItemTarget {
987
+ outline: 2px solid var(--focus-8);
988
+ outline-offset: -2px;
989
+ }
990
+ .ui-TreeItem:where([data-disabled]) .ui-TreeItemRow {
991
+ color: var(--gray-a8);
992
+ cursor: not-allowed;
993
+ }
994
+ .ui-TreeItem:where([data-disabled]) .ui-TreeItemIndicator {
995
+ cursor: not-allowed;
996
+ }
997
+ .ui-TreeRoot:where(.r-size-1) {
998
+ --tree-row-height: var(--space-5);
999
+ --tree-row-padding: var(--space-1);
1000
+ --tree-item-indent: var(--space-4);
1001
+ --tree-item-gap: var(--space-1);
1002
+ --tree-target-padding-inline: var(--space-1);
1003
+ --tree-indicator-size: var(--space-4);
1004
+ --tree-indicator-icon-size: var(--space-2);
1005
+ --tree-icon-size: var(--space-4);
1006
+ --tree-icon-graphic-size: var(--space-3);
1007
+ --tree-item-font-size: var(--font-size-1);
1008
+ --tree-item-letter-spacing: var(--letter-spacing-1);
1009
+ --tree-item-radius: max(var(--radius-1), var(--radius-full));
1010
+ --tree-guide-color: var(--gray-a5);
1011
+ }
1012
+ .ui-TreeRoot:where(.r-size-2) {
1013
+ --tree-row-height: var(--space-6);
1014
+ --tree-row-padding: var(--space-1);
1015
+ --tree-item-indent: var(--space-5);
1016
+ --tree-item-gap: var(--space-2);
1017
+ --tree-target-padding-inline: var(--space-1);
1018
+ --tree-indicator-size: var(--space-5);
1019
+ --tree-indicator-icon-size: var(--space-3);
1020
+ --tree-icon-size: var(--space-5);
1021
+ --tree-icon-graphic-size: var(--space-4);
1022
+ --tree-item-font-size: var(--font-size-2);
1023
+ --tree-item-letter-spacing: var(--letter-spacing-2);
1024
+ --tree-item-radius: max(var(--radius-2), var(--radius-full));
1025
+ --tree-guide-color: var(--gray-a5);
1026
+ }
1027
+ .ui-TreeRoot:where(.r-size-3) {
1028
+ --tree-row-height: var(--space-7);
1029
+ --tree-row-padding: var(--space-1);
1030
+ --tree-item-indent: var(--space-6);
1031
+ --tree-item-gap: var(--space-2);
1032
+ --tree-target-padding-inline: var(--space-2);
1033
+ --tree-indicator-size: var(--space-6);
1034
+ --tree-indicator-icon-size: var(--space-4);
1035
+ --tree-icon-size: var(--space-6);
1036
+ --tree-icon-graphic-size: var(--space-5);
1037
+ --tree-item-font-size: var(--font-size-3);
1038
+ --tree-item-letter-spacing: var(--letter-spacing-3);
1039
+ --tree-item-radius: max(var(--radius-3), var(--radius-full));
1040
+ --tree-guide-color: var(--gray-a5);
1041
+ }
1042
+ .ui-TreeRoot:where(:dir(rtl)) .ui-TreeItemRow::before {
1043
+ background: repeating-linear-gradient(
1044
+ to left,
1045
+ var(--tree-guide-color) 0,
1046
+ var(--tree-guide-color) 1px,
1047
+ transparent 1px var(--tree-item-indent)
1048
+ );
1049
+ }
1050
+ }
1051
+ @media (prefers-reduced-motion: reduce) {
1052
+ .ui-TreeItemIndicatorGraphic {
1053
+ transition: none;
1054
+ }
1055
+ }
1056
+
659
1057
  .ui-Tooltip {
660
1058
  box-sizing: border-box;
661
1059
  padding: var(--space-1) var(--space-2);