@dodlhuat/basix 1.2.4 → 1.2.6

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/css/style.css CHANGED
@@ -845,27 +845,69 @@ tbody tr:hover {
845
845
  background: color-mix(in srgb, var(--error) 12%, transparent);
846
846
  }
847
847
 
848
+ @keyframes field-error-shake {
849
+ 0%, 100% {
850
+ transform: translateX(0);
851
+ }
852
+ 18% {
853
+ transform: translateX(-5px);
854
+ }
855
+ 36% {
856
+ transform: translateX(4px);
857
+ }
858
+ 54% {
859
+ transform: translateX(-3px);
860
+ }
861
+ 72% {
862
+ transform: translateX(2px);
863
+ }
864
+ }
865
+ @keyframes dropdown-in {
866
+ from {
867
+ opacity: 0;
868
+ transform: translateY(-6px) scale(0.975);
869
+ }
870
+ to {
871
+ opacity: 1;
872
+ transform: translateY(0) scale(1);
873
+ }
874
+ }
875
+ @keyframes hint-appear {
876
+ from {
877
+ opacity: 0;
878
+ transform: translateY(-3px);
879
+ }
880
+ to {
881
+ opacity: 1;
882
+ transform: translateY(0);
883
+ }
884
+ }
848
885
  textarea, select, .select .dropdown, input {
849
886
  width: 100%;
850
- border: 1px solid var(--divider);
851
- border-radius: 0.2rem;
852
- padding: 0.5rem;
887
+ border: 1.5px solid var(--divider);
888
+ border-radius: 0.6rem;
889
+ padding: 0 0.65rem;
853
890
  box-sizing: border-box;
854
891
  background-color: var(--background);
855
- min-height: 2rem;
892
+ min-height: 2.6rem;
856
893
  font-size: 1rem;
857
894
  color: var(--primary-text);
858
- box-shadow: 0 1px 2px rgba(56, 65, 74, 0.15);
859
- transition: border-color 0.15s ease, box-shadow 0.15s ease;
895
+ box-shadow: inset 0 1.5px 4px rgba(0, 0, 0, 0.05), 0 1px 2px rgba(0, 0, 0, 0.04);
896
+ transition: border-color 0.16s ease, box-shadow 0.22s cubic-bezier(0.16, 1, 0.3, 1), background-color 0.16s ease;
860
897
  outline: none;
861
898
  }
862
899
  textarea::placeholder, select::placeholder, .select .dropdown::placeholder, input::placeholder {
863
900
  color: var(--secondary-text);
864
- opacity: 1;
901
+ opacity: 0.65;
902
+ font-weight: 400;
903
+ }
904
+ textarea:hover:not(:focus):not(:disabled):not([readonly]), select:hover:not(:focus):not(:disabled):not([readonly]), .select .dropdown:hover:not(:focus):not(:disabled):not([readonly]), input:hover:not(:focus):not(:disabled):not([readonly]) {
905
+ border-color: color-mix(in srgb, var(--accent-color) 45%, var(--divider));
906
+ box-shadow: inset 0 1.5px 4px rgba(0, 0, 0, 0.045), 0 2px 8px rgba(0, 0, 0, 0.07);
865
907
  }
866
908
  textarea:focus, select:focus, .select .dropdown:focus, input:focus {
867
909
  border-color: var(--accent-color);
868
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent-color) 15%, transparent);
910
+ box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.03), 0 0 0 3.5px color-mix(in srgb, var(--accent-color) 13%, transparent), 0 2px 12px rgba(0, 0, 0, 0.06);
869
911
  }
870
912
  textarea:disabled, select:disabled, .select .dropdown:disabled, input:disabled {
871
913
  background-color: var(--secondary-background);
@@ -873,10 +915,16 @@ textarea:disabled, select:disabled, .select .dropdown:disabled, input:disabled {
873
915
  color: var(--secondary-text);
874
916
  cursor: not-allowed;
875
917
  box-shadow: none;
918
+ opacity: 0.58;
919
+ }
920
+
921
+ textarea {
922
+ padding-top: 0.55rem;
923
+ padding-bottom: 0.55rem;
876
924
  }
877
925
 
878
926
  select {
879
- padding: 0.5rem;
927
+ padding: 0 0.65rem;
880
928
  cursor: pointer;
881
929
  }
882
930
 
@@ -885,61 +933,87 @@ select {
885
933
  background-color: var(--background);
886
934
  }
887
935
  .select-group .dropdown-selected {
888
- border: 1px solid var(--divider);
889
- padding: 0 0.5rem;
890
- border-radius: 0.2rem;
936
+ border: 1.5px solid var(--divider);
937
+ padding: 0 0.65rem;
938
+ border-radius: 0.6rem;
891
939
  cursor: pointer;
892
940
  background: var(--background);
893
- height: 2rem;
894
- line-height: 2rem;
895
- box-shadow: 0 1px 2px rgba(56, 65, 74, 0.15);
896
- transition: border-color 0.15s ease, box-shadow 0.15s ease;
941
+ height: 2.6rem;
942
+ line-height: 2.6rem;
943
+ box-shadow: inset 0 1.5px 4px rgba(0, 0, 0, 0.05), 0 1px 2px rgba(0, 0, 0, 0.04);
944
+ transition: border-color 0.16s ease, box-shadow 0.22s cubic-bezier(0.16, 1, 0.3, 1);
945
+ user-select: none;
946
+ }
947
+ .select-group .dropdown-selected:hover {
948
+ border-color: color-mix(in srgb, var(--accent-color) 45%, var(--divider));
949
+ box-shadow: inset 0 1.5px 4px rgba(0, 0, 0, 0.045), 0 2px 8px rgba(0, 0, 0, 0.07);
897
950
  }
898
951
  .select-group .dropdown-selected:focus, .select-group .dropdown-selected:focus-visible {
899
952
  outline: none;
900
953
  border-color: var(--accent-color);
901
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent-color) 15%, transparent);
954
+ box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.03), 0 0 0 3.5px color-mix(in srgb, var(--accent-color) 13%, transparent), 0 2px 12px rgba(0, 0, 0, 0.06);
902
955
  }
903
956
  .select-group .dropdown-selected::after {
904
957
  font-family: "Material Symbols Outlined 24pt", serif;
905
958
  content: "\e5cf";
906
959
  float: right;
907
960
  color: var(--secondary-text);
908
- transition: transform 0.2s ease;
961
+ transition: transform 0.26s cubic-bezier(0.34, 1.56, 0.64, 1);
962
+ line-height: inherit;
963
+ }
964
+ .select-group .dropdown.open .dropdown-selected {
965
+ border-color: var(--accent-color);
966
+ box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.03), 0 0 0 3.5px color-mix(in srgb, var(--accent-color) 13%, transparent);
909
967
  }
910
968
  .select-group .dropdown.open .dropdown-selected::after {
911
969
  transform: rotate(180deg);
912
970
  }
913
971
  .select-group .dropdown-options {
914
972
  position: absolute;
915
- top: calc(100% + 5px);
973
+ top: calc(100% + 6px);
916
974
  left: 0;
917
975
  right: 0;
918
- border: 1px solid var(--divider);
919
- border-radius: 0.2rem;
976
+ border: 1.5px solid var(--divider);
977
+ border-radius: 0.6rem;
920
978
  display: none;
921
979
  flex-direction: column;
922
980
  z-index: 10;
923
- max-height: 250px;
981
+ max-height: 260px;
924
982
  overflow-y: auto;
925
983
  background-color: var(--background);
926
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
984
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.11), 0 2px 8px rgba(0, 0, 0, 0.06);
985
+ padding: 0.25rem;
986
+ gap: 1px;
987
+ transform-origin: top center;
927
988
  }
928
989
  .select-group .dropdown-option {
929
- padding: 10px 0.5rem;
990
+ padding: 0.6rem 0.65rem;
930
991
  cursor: pointer;
992
+ border-radius: 0.44rem;
931
993
  transition: background 0.1s ease;
994
+ font-size: 0.9375rem;
995
+ position: relative;
932
996
  }
933
997
  .select-group .dropdown-option:hover {
934
- background: var(--secondary-background);
998
+ background: var(--hover);
935
999
  }
936
1000
  .select-group .dropdown-option.selected {
937
1001
  background: color-mix(in srgb, var(--accent-color) 10%, transparent);
938
1002
  color: var(--accent-color);
939
1003
  font-weight: 500;
940
1004
  }
1005
+ .select-group .dropdown-option.selected::after {
1006
+ content: "✓";
1007
+ position: absolute;
1008
+ right: 0.65rem;
1009
+ top: 50%;
1010
+ transform: translateY(-50%);
1011
+ font-size: 0.8125rem;
1012
+ line-height: 1;
1013
+ }
941
1014
  .select-group .dropdown.open .dropdown-options {
942
1015
  display: flex;
1016
+ animation: dropdown-in 0.2s cubic-bezier(0.16, 1, 0.3, 1) both;
943
1017
  }
944
1018
  .select-group .hidden {
945
1019
  display: none;
@@ -950,25 +1024,29 @@ select {
950
1024
  top: 0;
951
1025
  left: 0;
952
1026
  width: 100%;
953
- background: var(--secondary-background);
1027
+ background: var(--background);
954
1028
  color: var(--primary-text);
955
1029
  text-align: center;
956
- padding: 15px;
957
- padding-top: calc(15px + env(safe-area-inset-top));
1030
+ padding: 18px 15px;
1031
+ padding-top: calc(18px + env(safe-area-inset-top));
958
1032
  font-weight: 600;
959
1033
  font-size: 1rem;
960
1034
  border-bottom: 1px solid var(--divider);
961
- backdrop-filter: blur(12px);
962
- -webkit-backdrop-filter: blur(12px);
1035
+ backdrop-filter: blur(16px);
1036
+ -webkit-backdrop-filter: blur(16px);
963
1037
  z-index: 11;
1038
+ letter-spacing: 0.01em;
964
1039
  }
965
1040
  .select-group .dropdown-options-menu .dropdown-options-icon {
966
1041
  position: absolute;
967
- right: 45px;
1042
+ right: 20px;
968
1043
  top: 50%;
969
1044
  transform: translateY(-50%);
970
1045
  cursor: pointer;
971
1046
  color: var(--accent-color);
1047
+ font-size: 0.9375rem;
1048
+ font-weight: 500;
1049
+ letter-spacing: 0;
972
1050
  }
973
1051
  .select-group .dropdown-options {
974
1052
  position: fixed;
@@ -978,16 +1056,24 @@ select {
978
1056
  bottom: 0;
979
1057
  border: none;
980
1058
  border-radius: 0;
981
- padding-top: calc(56px + env(safe-area-inset-top));
1059
+ padding: 0;
1060
+ padding-top: calc(62px + env(safe-area-inset-top));
982
1061
  padding-bottom: env(safe-area-inset-bottom);
983
- font-size: 1.1rem;
1062
+ font-size: 1.0625rem;
984
1063
  max-height: none;
985
1064
  box-shadow: none;
986
1065
  background-color: var(--background);
1066
+ gap: 0;
987
1067
  }
988
1068
  .select-group .dropdown-option {
989
- padding: 14px 0.5rem;
1069
+ padding: 15px 20px;
990
1070
  border-bottom: 1px solid var(--divider);
1071
+ border-radius: 0;
1072
+ font-size: 1.0625rem;
1073
+ }
1074
+ .select-group .dropdown-option.selected::after {
1075
+ right: 20px;
1076
+ font-size: 0.9375rem;
991
1077
  }
992
1078
  }
993
1079
 
@@ -998,28 +1084,51 @@ select {
998
1084
  }
999
1085
  .form-group label {
1000
1086
  font-size: 0.8125rem;
1001
- font-weight: 500;
1087
+ font-weight: 600;
1002
1088
  color: var(--primary-text);
1003
- letter-spacing: 0.01em;
1089
+ letter-spacing: 0.025em;
1004
1090
  }
1005
1091
  .form-group .form-hint {
1092
+ display: flex;
1093
+ align-items: flex-start;
1094
+ gap: 0.3rem;
1006
1095
  font-size: 0.75rem;
1007
- line-height: 1.45;
1096
+ line-height: 1.5;
1008
1097
  color: var(--secondary-text);
1009
- margin-top: 0.125rem;
1098
+ margin-top: 0.1rem;
1099
+ }
1100
+ .form-group .form-hint::before {
1101
+ content: "";
1102
+ display: none;
1103
+ flex-shrink: 0;
1104
+ width: 13px;
1105
+ height: 13px;
1106
+ border-radius: 50%;
1107
+ margin-top: 0.1em;
1108
+ font-size: 8.5px;
1109
+ font-weight: 700;
1110
+ line-height: 13px;
1111
+ text-align: center;
1112
+ color: #fff;
1010
1113
  }
1011
1114
  .form-group.error input, .form-group.error textarea, .form-group.error select {
1012
1115
  border-color: var(--error);
1013
- background-color: color-mix(in srgb, var(--error) 4%, var(--background));
1116
+ background-color: color-mix(in srgb, var(--error) 3%, var(--background));
1117
+ box-shadow: inset 0 1.5px 4px rgba(0, 0, 0, 0.05), 0 1px 2px rgba(0, 0, 0, 0.04);
1118
+ animation: field-error-shake 0.42s cubic-bezier(0.36, 0.07, 0.19, 0.97) both;
1014
1119
  }
1015
1120
  .form-group.error input:focus, .form-group.error textarea:focus, .form-group.error select:focus {
1016
1121
  border-color: var(--error);
1017
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--error) 15%, transparent);
1122
+ box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.03), 0 0 0 3.5px color-mix(in srgb, var(--error) 13%, transparent);
1018
1123
  }
1019
1124
  .form-group.error .form-hint {
1020
1125
  color: var(--error);
1126
+ animation: hint-appear 0.2s ease both;
1021
1127
  }
1022
1128
  .form-group.error .form-hint::before {
1129
+ content: "!";
1130
+ display: block;
1131
+ background: var(--error);
1023
1132
  opacity: 1;
1024
1133
  }
1025
1134
  .form-group.success input, .form-group.success textarea, .form-group.success select {
@@ -1027,12 +1136,16 @@ select {
1027
1136
  }
1028
1137
  .form-group.success input:focus, .form-group.success textarea:focus, .form-group.success select:focus {
1029
1138
  border-color: var(--success);
1030
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--success) 15%, transparent);
1139
+ box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.03), 0 0 0 3.5px color-mix(in srgb, var(--success) 13%, transparent);
1031
1140
  }
1032
1141
  .form-group.success .form-hint {
1033
1142
  color: var(--success);
1143
+ animation: hint-appear 0.2s ease both;
1034
1144
  }
1035
1145
  .form-group.success .form-hint::before {
1146
+ content: "✓";
1147
+ display: block;
1148
+ background: var(--success);
1036
1149
  opacity: 1;
1037
1150
  }
1038
1151
 
@@ -1046,17 +1159,19 @@ select {
1046
1159
  .input-group .input-addon {
1047
1160
  display: flex;
1048
1161
  align-items: center;
1049
- padding: 0 0.5rem;
1162
+ padding: 0 0.65rem;
1050
1163
  background-color: var(--secondary-background);
1051
- border: 1px solid var(--divider);
1164
+ border: 1.5px solid var(--divider);
1052
1165
  color: var(--secondary-text);
1053
1166
  font-size: 1rem;
1054
1167
  white-space: nowrap;
1055
- box-shadow: 0 1px 2px rgba(56, 65, 74, 0.15);
1168
+ box-shadow: inset 0 1.5px 4px rgba(0, 0, 0, 0.04);
1169
+ font-weight: 500;
1170
+ letter-spacing: 0.01em;
1056
1171
  }
1057
1172
  .input-group .input-addon:first-child {
1058
1173
  border-right: none;
1059
- border-radius: 0.2rem 0 0 0.2rem;
1174
+ border-radius: 0.6rem 0 0 0.6rem;
1060
1175
  }
1061
1176
  .input-group .input-addon:first-child + input {
1062
1177
  border-top-left-radius: 0;
@@ -1064,7 +1179,7 @@ select {
1064
1179
  }
1065
1180
  .input-group .input-addon:last-child {
1066
1181
  border-left: none;
1067
- border-radius: 0 0.2rem 0.2rem 0;
1182
+ border-radius: 0 0.6rem 0.6rem 0;
1068
1183
  }
1069
1184
  .input-group input:not(:last-child) {
1070
1185
  border-right: none;
@@ -1077,18 +1192,21 @@ input[readonly], textarea[readonly] {
1077
1192
  color: var(--secondary-text);
1078
1193
  cursor: default;
1079
1194
  box-shadow: none;
1195
+ border-style: dashed;
1080
1196
  }
1081
1197
 
1082
1198
  input.input-sm, textarea.input-sm {
1083
- min-height: 1.6rem;
1199
+ min-height: 1.7rem;
1084
1200
  font-size: 0.875rem;
1085
- padding: 0.25rem 0.5rem;
1201
+ padding: 0 0.5rem;
1202
+ border-radius: 0.44rem;
1086
1203
  }
1087
1204
 
1088
1205
  input.input-lg, textarea.input-lg {
1089
- min-height: 2.8rem;
1206
+ min-height: 3.3rem;
1090
1207
  font-size: 1.125rem;
1091
- padding: 0.6rem 0.5rem;
1208
+ padding: 0 0.75rem;
1209
+ border-radius: 0.7rem;
1092
1210
  }
1093
1211
 
1094
1212
  @font-face {
@@ -5472,6 +5590,12 @@ body {
5472
5590
  }
5473
5591
  }
5474
5592
 
5593
+ @position-try --vd-above {
5594
+ top: auto;
5595
+ bottom: anchor(top);
5596
+ margin-top: 0;
5597
+ margin-bottom: 6px;
5598
+ }
5475
5599
  .custom-dropdown {
5476
5600
  position: relative;
5477
5601
  width: 100%;
@@ -5480,26 +5604,29 @@ body {
5480
5604
  }
5481
5605
  .custom-dropdown .dropdown-trigger {
5482
5606
  background: var(--background);
5483
- border: 1px solid var(--divider);
5484
- border-radius: 0.4rem;
5485
- padding: 0 0.75rem;
5486
- min-height: 2rem;
5607
+ border: 1.5px solid var(--divider);
5608
+ border-radius: 0.6rem;
5609
+ padding: 0 0.65rem;
5610
+ min-height: 2.6rem;
5487
5611
  cursor: pointer;
5488
5612
  display: flex;
5489
5613
  justify-content: space-between;
5490
5614
  align-items: center;
5491
- transition: border-color 0.2s, box-shadow 0.2s, border-radius 0.15s, border-bottom-color 0.15s;
5615
+ box-shadow: inset 0 1.5px 4px rgba(0, 0, 0, 0.05), 0 1px 2px rgba(0, 0, 0, 0.04);
5616
+ transition: border-color 0.16s ease, box-shadow 0.22s cubic-bezier(0.16, 1, 0.3, 1), background-color 0.16s ease;
5617
+ }
5618
+ .custom-dropdown .dropdown-trigger:hover {
5619
+ border-color: color-mix(in srgb, var(--accent-color) 45%, var(--divider));
5620
+ box-shadow: inset 0 1.5px 4px rgba(0, 0, 0, 0.045), 0 2px 8px rgba(0, 0, 0, 0.07);
5492
5621
  }
5493
5622
  .custom-dropdown .dropdown-trigger:focus {
5494
5623
  border-color: var(--accent-color);
5495
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent-color) 15%, transparent);
5624
+ box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.03), 0 0 0 3.5px color-mix(in srgb, var(--accent-color) 13%, transparent), 0 2px 12px rgba(0, 0, 0, 0.06);
5496
5625
  outline: none;
5497
5626
  }
5498
5627
  .custom-dropdown.open .dropdown-trigger {
5499
5628
  border-color: var(--accent-color);
5500
- border-radius: 0.4rem 0.4rem 0 0;
5501
- border-bottom-color: var(--background);
5502
- box-shadow: none;
5629
+ box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.03), 0 0 0 3.5px color-mix(in srgb, var(--accent-color) 13%, transparent);
5503
5630
  outline: none;
5504
5631
  }
5505
5632
  .custom-dropdown .trigger-text {
@@ -5510,6 +5637,7 @@ body {
5510
5637
  }
5511
5638
  .custom-dropdown .trigger-text:not(.has-value) {
5512
5639
  color: var(--secondary-text);
5640
+ opacity: 0.65;
5513
5641
  }
5514
5642
  .custom-dropdown .trigger-arrow {
5515
5643
  font-size: 0.75em;
@@ -5517,59 +5645,73 @@ body {
5517
5645
  margin-left: 0.5rem;
5518
5646
  flex-shrink: 0;
5519
5647
  display: inline-block;
5520
- transition: transform 0.2s ease;
5648
+ transition: transform 0.26s cubic-bezier(0.34, 1.56, 0.64, 1);
5521
5649
  }
5522
5650
  .custom-dropdown.open .trigger-arrow {
5523
5651
  transform: rotate(180deg);
5524
5652
  }
5525
5653
  .custom-dropdown .dropdown-menu {
5526
- position: absolute;
5527
- top: 100%;
5528
- left: 0;
5529
- width: 100%;
5654
+ inset: unset;
5655
+ margin: 0;
5656
+ padding: 0;
5657
+ border: none;
5658
+ position: fixed;
5659
+ top: anchor(bottom);
5660
+ left: anchor(left);
5661
+ width: anchor-size(width);
5662
+ margin-top: 6px;
5663
+ position-try-fallbacks: --vd-above;
5530
5664
  background: var(--background);
5531
- border: 1px solid var(--accent-color);
5532
- border-top: none;
5533
- border-radius: 0 0 0.4rem 0.4rem;
5534
- box-shadow: 0 1px 2px rgba(56, 65, 74, 0.15);
5535
- z-index: 1000;
5536
- visibility: hidden;
5665
+ border: 1.5px solid var(--divider);
5666
+ border-radius: 0.6rem;
5667
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.11), 0 2px 8px rgba(0, 0, 0, 0.06);
5668
+ transform-origin: top center;
5537
5669
  opacity: 0;
5538
- transform: translateY(-4px);
5539
- pointer-events: none;
5540
- transition: opacity 0.18s ease, transform 0.18s ease, visibility 0s 0.18s;
5670
+ transform: translateY(-6px) scale(0.975);
5671
+ transition: opacity 0.2s cubic-bezier(0.16, 1, 0.3, 1), transform 0.2s cubic-bezier(0.16, 1, 0.3, 1), display 0.2s allow-discrete, overlay 0.2s allow-discrete;
5541
5672
  }
5542
- .custom-dropdown .dropdown-menu.open {
5543
- visibility: visible;
5673
+ .custom-dropdown .dropdown-menu:popover-open {
5544
5674
  opacity: 1;
5545
- transform: translateY(0);
5546
- pointer-events: auto;
5547
- transition: opacity 0.18s ease, transform 0.18s ease, visibility 0s 0s;
5675
+ transform: translateY(0) scale(1);
5676
+ }
5677
+ @starting-style {
5678
+ .custom-dropdown .dropdown-menu:popover-open {
5679
+ opacity: 0;
5680
+ transform: translateY(-6px) scale(0.975);
5681
+ }
5548
5682
  }
5549
5683
  .custom-dropdown .dropdown-search {
5550
- padding: 0.5rem;
5551
- border-bottom: 1px solid var(--divider);
5684
+ padding: 0.4rem;
5685
+ border-bottom: 1.5px solid var(--divider);
5552
5686
  }
5553
5687
  .custom-dropdown .dropdown-search input {
5554
5688
  width: 100%;
5555
- padding: 0 0.5rem;
5556
- height: 2rem;
5557
- border: 1px solid var(--divider);
5558
- border-radius: 0.2rem;
5689
+ padding: 0 0.65rem;
5690
+ min-height: 2.6rem;
5691
+ border: 1.5px solid var(--divider);
5692
+ border-radius: 0.44rem;
5559
5693
  background: var(--background);
5560
5694
  color: var(--primary-text);
5561
5695
  box-sizing: border-box;
5562
5696
  outline: none;
5563
- transition: border-color 0.2s;
5697
+ font-size: 1rem;
5698
+ box-shadow: inset 0 1.5px 4px rgba(0, 0, 0, 0.05);
5699
+ transition: border-color 0.16s ease, box-shadow 0.22s cubic-bezier(0.16, 1, 0.3, 1);
5700
+ }
5701
+ .custom-dropdown .dropdown-search input::placeholder {
5702
+ color: var(--secondary-text);
5703
+ opacity: 0.65;
5564
5704
  }
5565
5705
  .custom-dropdown .dropdown-search input:focus {
5566
5706
  border-color: var(--accent-color);
5707
+ box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.03), 0 0 0 3.5px color-mix(in srgb, var(--accent-color) 13%, transparent);
5567
5708
  }
5568
5709
  .custom-dropdown .dropdown-list-wrapper {
5569
5710
  max-height: 250px;
5570
5711
  overflow-y: auto;
5571
5712
  position: relative;
5572
5713
  -webkit-overflow-scrolling: touch;
5714
+ padding: 0.25rem;
5573
5715
  }
5574
5716
  .custom-dropdown .dropdown-list-scroller {
5575
5717
  position: relative;
@@ -5581,7 +5723,7 @@ body {
5581
5723
  width: 100%;
5582
5724
  }
5583
5725
  .custom-dropdown .dropdown-item {
5584
- padding: 0 0.75rem;
5726
+ padding: 0 0.65rem;
5585
5727
  cursor: pointer;
5586
5728
  box-sizing: border-box;
5587
5729
  display: flex;
@@ -5589,11 +5731,12 @@ body {
5589
5731
  overflow: hidden;
5590
5732
  background: var(--background);
5591
5733
  color: var(--primary-text);
5592
- transition: background-color 0.15s, color 0.15s;
5734
+ border-radius: 0.44rem;
5735
+ font-size: 0.9375rem;
5736
+ transition: background-color 0.1s ease;
5593
5737
  }
5594
5738
  .custom-dropdown .dropdown-item:hover {
5595
5739
  background-color: var(--hover);
5596
- color: var(--accent-color);
5597
5740
  }
5598
5741
  .custom-dropdown .dropdown-item.selected {
5599
5742
  background-color: color-mix(in srgb, var(--accent-color) 10%, transparent);
@@ -5609,6 +5752,8 @@ body {
5609
5752
  height: 0.8rem;
5610
5753
  min-height: unset;
5611
5754
  max-height: 0.8rem;
5755
+ padding: 0;
5756
+ box-shadow: none;
5612
5757
  border: 1.5px solid var(--divider);
5613
5758
  border-radius: 0.2rem;
5614
5759
  background: var(--background);
@@ -6996,11 +7141,14 @@ body {
6996
7141
  }
6997
7142
 
6998
7143
  .cal__month-grid {
6999
- display: grid;
7000
- grid-template-columns: repeat(7, minmax(0, 1fr));
7001
7144
  border: 1px solid var(--cal-border);
7002
7145
  border-radius: var(--cal-radius);
7003
7146
  overflow: hidden;
7147
+ }
7148
+
7149
+ .cal__month-head {
7150
+ display: grid;
7151
+ grid-template-columns: repeat(7, minmax(0, 1fr));
7004
7152
  gap: 1px;
7005
7153
  background: var(--cal-border);
7006
7154
  }
@@ -7016,25 +7164,27 @@ body {
7016
7164
  text-transform: uppercase;
7017
7165
  }
7018
7166
 
7167
+ .cal__week-row {
7168
+ display: grid;
7169
+ grid-template-columns: repeat(7, minmax(0, 1fr));
7170
+ gap: 1px;
7171
+ background: var(--cal-border);
7172
+ position: relative;
7173
+ border-top: 1px solid var(--cal-border);
7174
+ }
7175
+ .cal__week-row .cal__day-events {
7176
+ margin-top: calc(var(--span-lanes, 0) * var(--cal-span-lane-height, 20px));
7177
+ }
7178
+
7019
7179
  .cal__day {
7020
7180
  background: var(--cal-bg);
7021
7181
  padding: var(--cal-spacing-xs) var(--cal-spacing-sm);
7022
7182
  min-height: 88px;
7023
- cursor: pointer;
7024
- transition: background 0.15s ease;
7183
+ cursor: default;
7025
7184
  position: relative;
7026
7185
  }
7027
- .cal__day:hover {
7028
- background: var(--cal-bg-hover);
7029
- }
7030
- .cal__day:focus-visible {
7031
- outline: 2px solid var(--cal-accent);
7032
- outline-offset: -2px;
7033
- z-index: 1;
7034
- }
7035
7186
  .cal__day--empty {
7036
7187
  background: var(--cal-bg-alt);
7037
- cursor: default;
7038
7188
  pointer-events: none;
7039
7189
  }
7040
7190
  .cal__day--outside .cal__day-num {
@@ -7050,16 +7200,6 @@ body {
7050
7200
  font-weight: 700;
7051
7201
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--cal-accent) 20%, transparent);
7052
7202
  }
7053
- .cal__day.is-selected {
7054
- background: color-mix(in srgb, var(--cal-accent) 6%, var(--cal-bg));
7055
- }
7056
- .cal__day.is-selected .cal__day-num {
7057
- background: var(--cal-accent);
7058
- color: var(--cal-accent-text);
7059
- border-radius: 50%;
7060
- font-weight: 700;
7061
- box-shadow: 0 2px 8px color-mix(in srgb, var(--cal-accent) 35%, transparent);
7062
- }
7063
7203
  .cal__day.has-events::after {
7064
7204
  content: "";
7065
7205
  display: none;
@@ -7144,6 +7284,68 @@ body {
7144
7284
  cursor: pointer;
7145
7285
  }
7146
7286
 
7287
+ .cal__span-bar {
7288
+ position: absolute;
7289
+ height: 18px;
7290
+ line-height: 18px;
7291
+ font-size: 0.6875rem;
7292
+ font-weight: 500;
7293
+ padding: 0 6px;
7294
+ border-radius: var(--cal-radius-sm);
7295
+ background: var(--cal-bg-alt);
7296
+ border-left: 2px solid var(--cal-accent-light);
7297
+ color: var(--cal-text);
7298
+ white-space: nowrap;
7299
+ overflow: hidden;
7300
+ text-overflow: ellipsis;
7301
+ cursor: pointer;
7302
+ z-index: 2;
7303
+ transition: filter 0.12s ease, transform 0.1s ease;
7304
+ left: calc(var(--span-col) * 100% / 7);
7305
+ width: calc(var(--span-len) * 100% / 7 - 4px);
7306
+ }
7307
+ .cal__span-bar:hover {
7308
+ filter: brightness(0.94);
7309
+ }
7310
+ .cal__span-bar:active {
7311
+ transform: scale(0.97);
7312
+ }
7313
+ .cal__span-bar:focus-visible {
7314
+ outline: 2px solid var(--cal-accent);
7315
+ outline-offset: 1px;
7316
+ }
7317
+ .cal__span-bar--cont-before {
7318
+ border-left: none;
7319
+ border-radius: 0 var(--cal-radius-sm) var(--cal-radius-sm) 0;
7320
+ padding-left: 4px;
7321
+ }
7322
+ .cal__span-bar--cont-after {
7323
+ border-radius: var(--cal-radius-sm) 0 0 var(--cal-radius-sm);
7324
+ }
7325
+ .cal__span-bar--cont-before.cal__span-bar--cont-after {
7326
+ border-radius: 0;
7327
+ }
7328
+ .cal__span-bar.badge-success {
7329
+ border-left-color: var(--success);
7330
+ background: color-mix(in srgb, var(--success) 14%, var(--cal-bg));
7331
+ }
7332
+ .cal__span-bar.badge-warning {
7333
+ border-left-color: var(--warning);
7334
+ background: color-mix(in srgb, var(--warning) 14%, var(--cal-bg));
7335
+ }
7336
+ .cal__span-bar.badge-error {
7337
+ border-left-color: var(--error);
7338
+ background: color-mix(in srgb, var(--error) 14%, var(--cal-bg));
7339
+ }
7340
+ .cal__span-bar.badge-info {
7341
+ border-left-color: var(--accent-color);
7342
+ background: color-mix(in srgb, var(--accent-color) 14%, var(--cal-bg));
7343
+ }
7344
+
7345
+ .cal__week-row > .cal__span-bar {
7346
+ top: calc(36px + var(--span-lane) * var(--cal-span-lane-height, 20px));
7347
+ }
7348
+
7147
7349
  .cal__event-time {
7148
7350
  font-weight: 600;
7149
7351
  margin-right: 3px;
@@ -7186,7 +7388,7 @@ body {
7186
7388
  font-weight: 600;
7187
7389
  color: var(--cal-text-muted);
7188
7390
  border-left: 1px solid var(--cal-border);
7189
- cursor: pointer;
7391
+ cursor: default;
7190
7392
  text-transform: uppercase;
7191
7393
  letter-spacing: 0.04em;
7192
7394
  }
@@ -7211,16 +7413,11 @@ body {
7211
7413
  color: var(--cal-accent-text);
7212
7414
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--cal-accent) 20%, transparent);
7213
7415
  }
7214
- .cal__week-head-day.is-selected span {
7215
- background: var(--cal-accent);
7216
- color: var(--cal-accent-text);
7217
- }
7218
7416
 
7219
7417
  .cal__allday {
7220
7418
  display: grid;
7221
- grid-template-columns: var(--cal-time-col-width) repeat(7, minmax(0, 1fr));
7419
+ grid-template-columns: var(--cal-time-col-width) 1fr;
7222
7420
  border-bottom: 1px solid var(--cal-border);
7223
- min-height: 32px;
7224
7421
  background: var(--cal-bg);
7225
7422
  overflow-y: auto;
7226
7423
  scrollbar-gutter: stable;
@@ -7244,12 +7441,22 @@ body {
7244
7441
  font-weight: 500;
7245
7442
  }
7246
7443
 
7444
+ .cal__allday-spans {
7445
+ position: relative;
7446
+ display: grid;
7447
+ grid-template-columns: repeat(7, minmax(0, 1fr));
7448
+ min-height: calc(max(var(--allday-lanes, 1), 1) * var(--cal-span-lane-height, 20px) + 6px);
7449
+ }
7450
+ .cal__allday-spans > .cal__span-bar {
7451
+ top: calc(var(--span-lane) * var(--cal-span-lane-height, 20px) + 3px);
7452
+ }
7453
+
7247
7454
  .cal__allday-col {
7248
7455
  border-left: 1px solid var(--cal-border);
7249
- padding: 3px;
7250
- display: flex;
7251
- flex-direction: column;
7252
- gap: 2px;
7456
+ min-height: 100%;
7457
+ }
7458
+ .cal__allday-col:first-child {
7459
+ border-left: none;
7253
7460
  }
7254
7461
 
7255
7462
  .cal__week-body {
@@ -7376,7 +7583,7 @@ body {
7376
7583
 
7377
7584
  .cal__now-line {
7378
7585
  position: absolute;
7379
- left: 0;
7586
+ left: var(--cal-time-col-width);
7380
7587
  right: 0;
7381
7588
  height: 2px;
7382
7589
  background: var(--error);
@@ -7542,8 +7749,15 @@ body {
7542
7749
  .cal__month-grid {
7543
7750
  border: none;
7544
7751
  border-radius: 0;
7752
+ }
7753
+ .cal__month-head {
7754
+ gap: 0;
7755
+ background: transparent;
7756
+ }
7757
+ .cal__week-row {
7545
7758
  gap: 0;
7546
7759
  background: transparent;
7760
+ border-top: none;
7547
7761
  }
7548
7762
  .cal__weekday {
7549
7763
  background: transparent;
@@ -7559,21 +7773,12 @@ body {
7559
7773
  justify-content: flex-start;
7560
7774
  background: transparent;
7561
7775
  }
7562
- .cal__day:hover {
7563
- background: transparent;
7564
- }
7565
- .cal__day:hover .cal__day-num {
7566
- background: var(--cal-bg-hover);
7567
- }
7568
7776
  .cal__day--empty {
7569
7777
  background: transparent;
7570
7778
  }
7571
7779
  .cal__day--outside .cal__day-num {
7572
7780
  opacity: 0.25;
7573
7781
  }
7574
- .cal__day.is-selected {
7575
- background: transparent;
7576
- }
7577
7782
  .cal__day.has-events::after {
7578
7783
  display: block;
7579
7784
  position: static;
@@ -7588,9 +7793,13 @@ body {
7588
7793
  }
7589
7794
  .cal__day-events,
7590
7795
  .cal__event-pill,
7591
- .cal__event-more {
7796
+ .cal__event-more,
7797
+ .cal__span-bar {
7592
7798
  display: none;
7593
7799
  }
7800
+ .cal__week-row .cal__day-events {
7801
+ margin-top: 0;
7802
+ }
7594
7803
  .cal {
7595
7804
  --cal-time-col-width: 40px;
7596
7805
  }
@@ -7650,153 +7859,27 @@ body {
7650
7859
  .cal__agenda-day {
7651
7860
  animation: cal-cell-in 0.3s cubic-bezier(0.2, 0, 0, 1) both;
7652
7861
  }
7653
- .cal__month-grid .cal__day:nth-child(1) {
7862
+ .cal__week-row:nth-child(1) .cal__day {
7654
7863
  animation-delay: 0.01s;
7655
7864
  }
7656
- .cal__month-grid .cal__day:nth-child(2) {
7657
- animation-delay: 0.02s;
7658
- }
7659
- .cal__month-grid .cal__day:nth-child(3) {
7660
- animation-delay: 0.03s;
7661
- }
7662
- .cal__month-grid .cal__day:nth-child(4) {
7865
+ .cal__week-row:nth-child(2) .cal__day {
7663
7866
  animation-delay: 0.04s;
7664
7867
  }
7665
- .cal__month-grid .cal__day:nth-child(5) {
7666
- animation-delay: 0.05s;
7667
- }
7668
- .cal__month-grid .cal__day:nth-child(6) {
7669
- animation-delay: 0.06s;
7670
- }
7671
- .cal__month-grid .cal__day:nth-child(7) {
7868
+ .cal__week-row:nth-child(3) .cal__day {
7672
7869
  animation-delay: 0.07s;
7673
7870
  }
7674
- .cal__month-grid .cal__day:nth-child(8) {
7675
- animation-delay: 0.08s;
7676
- }
7677
- .cal__month-grid .cal__day:nth-child(9) {
7678
- animation-delay: 0.09s;
7679
- }
7680
- .cal__month-grid .cal__day:nth-child(10) {
7871
+ .cal__week-row:nth-child(4) .cal__day {
7681
7872
  animation-delay: 0.1s;
7682
7873
  }
7683
- .cal__month-grid .cal__day:nth-child(11) {
7684
- animation-delay: 0.11s;
7685
- }
7686
- .cal__month-grid .cal__day:nth-child(12) {
7687
- animation-delay: 0.12s;
7688
- }
7689
- .cal__month-grid .cal__day:nth-child(13) {
7874
+ .cal__week-row:nth-child(5) .cal__day {
7690
7875
  animation-delay: 0.13s;
7691
7876
  }
7692
- .cal__month-grid .cal__day:nth-child(14) {
7693
- animation-delay: 0.14s;
7694
- }
7695
- .cal__month-grid .cal__day:nth-child(15) {
7696
- animation-delay: 0.15s;
7697
- }
7698
- .cal__month-grid .cal__day:nth-child(16) {
7877
+ .cal__week-row:nth-child(6) .cal__day {
7699
7878
  animation-delay: 0.16s;
7700
7879
  }
7701
- .cal__month-grid .cal__day:nth-child(17) {
7702
- animation-delay: 0.17s;
7703
- }
7704
- .cal__month-grid .cal__day:nth-child(18) {
7705
- animation-delay: 0.18s;
7706
- }
7707
- .cal__month-grid .cal__day:nth-child(19) {
7880
+ .cal__week-row:nth-child(7) .cal__day {
7708
7881
  animation-delay: 0.19s;
7709
7882
  }
7710
- .cal__month-grid .cal__day:nth-child(20) {
7711
- animation-delay: 0.2s;
7712
- }
7713
- .cal__month-grid .cal__day:nth-child(21) {
7714
- animation-delay: 0.21s;
7715
- }
7716
- .cal__month-grid .cal__day:nth-child(22) {
7717
- animation-delay: 0.22s;
7718
- }
7719
- .cal__month-grid .cal__day:nth-child(23) {
7720
- animation-delay: 0.23s;
7721
- }
7722
- .cal__month-grid .cal__day:nth-child(24) {
7723
- animation-delay: 0.24s;
7724
- }
7725
- .cal__month-grid .cal__day:nth-child(25) {
7726
- animation-delay: 0.25s;
7727
- }
7728
- .cal__month-grid .cal__day:nth-child(26) {
7729
- animation-delay: 0.26s;
7730
- }
7731
- .cal__month-grid .cal__day:nth-child(27) {
7732
- animation-delay: 0.27s;
7733
- }
7734
- .cal__month-grid .cal__day:nth-child(28) {
7735
- animation-delay: 0.28s;
7736
- }
7737
- .cal__month-grid .cal__day:nth-child(29) {
7738
- animation-delay: 0.29s;
7739
- }
7740
- .cal__month-grid .cal__day:nth-child(30) {
7741
- animation-delay: 0.3s;
7742
- }
7743
- .cal__month-grid .cal__day:nth-child(31) {
7744
- animation-delay: 0.31s;
7745
- }
7746
- .cal__month-grid .cal__day:nth-child(32) {
7747
- animation-delay: 0.32s;
7748
- }
7749
- .cal__month-grid .cal__day:nth-child(33) {
7750
- animation-delay: 0.33s;
7751
- }
7752
- .cal__month-grid .cal__day:nth-child(34) {
7753
- animation-delay: 0.34s;
7754
- }
7755
- .cal__month-grid .cal__day:nth-child(35) {
7756
- animation-delay: 0.35s;
7757
- }
7758
- .cal__month-grid .cal__day:nth-child(36) {
7759
- animation-delay: 0.36s;
7760
- }
7761
- .cal__month-grid .cal__day:nth-child(37) {
7762
- animation-delay: 0.37s;
7763
- }
7764
- .cal__month-grid .cal__day:nth-child(38) {
7765
- animation-delay: 0.38s;
7766
- }
7767
- .cal__month-grid .cal__day:nth-child(39) {
7768
- animation-delay: 0.39s;
7769
- }
7770
- .cal__month-grid .cal__day:nth-child(40) {
7771
- animation-delay: 0.4s;
7772
- }
7773
- .cal__month-grid .cal__day:nth-child(41) {
7774
- animation-delay: 0.41s;
7775
- }
7776
- .cal__month-grid .cal__day:nth-child(42) {
7777
- animation-delay: 0.42s;
7778
- }
7779
- .cal__month-grid .cal__day:nth-child(43) {
7780
- animation-delay: 0.43s;
7781
- }
7782
- .cal__month-grid .cal__day:nth-child(44) {
7783
- animation-delay: 0.44s;
7784
- }
7785
- .cal__month-grid .cal__day:nth-child(45) {
7786
- animation-delay: 0.45s;
7787
- }
7788
- .cal__month-grid .cal__day:nth-child(46) {
7789
- animation-delay: 0.46s;
7790
- }
7791
- .cal__month-grid .cal__day:nth-child(47) {
7792
- animation-delay: 0.47s;
7793
- }
7794
- .cal__month-grid .cal__day:nth-child(48) {
7795
- animation-delay: 0.48s;
7796
- }
7797
- .cal__month-grid .cal__day:nth-child(49) {
7798
- animation-delay: 0.49s;
7799
- }
7800
7883
  .cal__agenda-day:nth-child(1) {
7801
7884
  animation-delay: 0.03s;
7802
7885
  }