@kbach/react 0.4.2 → 0.5.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/README.md +106 -28
- package/dist/{chunk-JFQ7QYQM.mjs → chunk-2BRVUJPY.mjs} +74 -19
- package/dist/{chunk-HY6PU2XS.mjs → chunk-LTYLJ4B3.mjs} +981 -38
- package/dist/index.d.mts +2 -9
- package/dist/index.d.ts +2 -9
- package/dist/index.js +1072 -113
- package/dist/index.mjs +21 -3
- package/dist/jsx-dev-runtime.js +1049 -56
- package/dist/jsx-dev-runtime.mjs +2 -2
- package/dist/jsx-runtime.js +1049 -56
- package/dist/jsx-runtime.mjs +2 -2
- package/package.json +1 -1
package/dist/jsx-dev-runtime.js
CHANGED
|
@@ -650,10 +650,19 @@ var MODIFIERS = /* @__PURE__ */ new Set([
|
|
|
650
650
|
"md",
|
|
651
651
|
"lg",
|
|
652
652
|
"xl",
|
|
653
|
-
"2xl"
|
|
653
|
+
"2xl",
|
|
654
|
+
// Pseudo-elements (CSS-injection only; matchesMods returns false for these)
|
|
655
|
+
"before",
|
|
656
|
+
"after",
|
|
657
|
+
"selection",
|
|
658
|
+
"first-letter",
|
|
659
|
+
"first-line",
|
|
660
|
+
"marker",
|
|
661
|
+
// Print media modifier
|
|
662
|
+
"print"
|
|
654
663
|
]);
|
|
655
664
|
var UTILITY_PREFIXES = [
|
|
656
|
-
// Multi-word
|
|
665
|
+
// Multi-word flex
|
|
657
666
|
"flex-row-reverse",
|
|
658
667
|
"flex-col-reverse",
|
|
659
668
|
"flex-row",
|
|
@@ -731,7 +740,6 @@ var UTILITY_PREFIXES = [
|
|
|
731
740
|
"rounded-r",
|
|
732
741
|
"rounded-b",
|
|
733
742
|
"rounded-l",
|
|
734
|
-
"text-decoration-none",
|
|
735
743
|
"list-none",
|
|
736
744
|
"list-disc",
|
|
737
745
|
"list-decimal",
|
|
@@ -761,6 +769,7 @@ var UTILITY_PREFIXES = [
|
|
|
761
769
|
"bg-clip-padding",
|
|
762
770
|
"bg-clip-content",
|
|
763
771
|
"bg-clip-text",
|
|
772
|
+
"bg-gradient-to",
|
|
764
773
|
"resize-none",
|
|
765
774
|
"resize-y",
|
|
766
775
|
"resize-x",
|
|
@@ -780,15 +789,8 @@ var UTILITY_PREFIXES = [
|
|
|
780
789
|
"scale-y",
|
|
781
790
|
"skew-x",
|
|
782
791
|
"skew-y",
|
|
783
|
-
|
|
784
|
-
"origin
|
|
785
|
-
"origin-top-right",
|
|
786
|
-
"origin-right",
|
|
787
|
-
"origin-bottom-right",
|
|
788
|
-
"origin-bottom",
|
|
789
|
-
"origin-bottom-left",
|
|
790
|
-
"origin-left",
|
|
791
|
-
"origin-top-left",
|
|
792
|
+
// Transform origin (single prefix, value carries direction)
|
|
793
|
+
"origin",
|
|
792
794
|
"min-w",
|
|
793
795
|
"min-h",
|
|
794
796
|
"max-w",
|
|
@@ -797,7 +799,7 @@ var UTILITY_PREFIXES = [
|
|
|
797
799
|
"bg-opacity",
|
|
798
800
|
"text-opacity",
|
|
799
801
|
"border-opacity",
|
|
800
|
-
// Grid placement
|
|
802
|
+
// Grid placement
|
|
801
803
|
"col-span",
|
|
802
804
|
"col-start",
|
|
803
805
|
"col-end",
|
|
@@ -809,6 +811,35 @@ var UTILITY_PREFIXES = [
|
|
|
809
811
|
"grid-flow",
|
|
810
812
|
"auto-cols",
|
|
811
813
|
"auto-rows",
|
|
814
|
+
// Grid alignment
|
|
815
|
+
"place-items",
|
|
816
|
+
"place-content",
|
|
817
|
+
"place-self",
|
|
818
|
+
"justify-items",
|
|
819
|
+
"justify-self",
|
|
820
|
+
// Backdrop filters (longer than 'backdrop' alone)
|
|
821
|
+
"backdrop-blur",
|
|
822
|
+
"backdrop-brightness",
|
|
823
|
+
"backdrop-contrast",
|
|
824
|
+
"backdrop-grayscale",
|
|
825
|
+
"backdrop-hue-rotate",
|
|
826
|
+
"backdrop-invert",
|
|
827
|
+
"backdrop-opacity",
|
|
828
|
+
"backdrop-saturate",
|
|
829
|
+
"backdrop-sepia",
|
|
830
|
+
"backdrop-filter",
|
|
831
|
+
// Filters
|
|
832
|
+
"drop-shadow",
|
|
833
|
+
"hue-rotate",
|
|
834
|
+
"text-shadow",
|
|
835
|
+
"underline-offset",
|
|
836
|
+
"outline-offset",
|
|
837
|
+
"will-change",
|
|
838
|
+
"mix-blend",
|
|
839
|
+
"decoration",
|
|
840
|
+
"perspective",
|
|
841
|
+
"tint",
|
|
842
|
+
"animate",
|
|
812
843
|
// Single-word prefixes last
|
|
813
844
|
"appearance-none",
|
|
814
845
|
"outline-none",
|
|
@@ -849,9 +880,11 @@ var UTILITY_PREFIXES = [
|
|
|
849
880
|
"border",
|
|
850
881
|
"rounded",
|
|
851
882
|
"shadow",
|
|
883
|
+
"size",
|
|
852
884
|
"opacity",
|
|
853
885
|
"leading",
|
|
854
886
|
"tracking",
|
|
887
|
+
"line-clamp",
|
|
855
888
|
"basis",
|
|
856
889
|
"grow",
|
|
857
890
|
"shrink",
|
|
@@ -862,13 +895,23 @@ var UTILITY_PREFIXES = [
|
|
|
862
895
|
"rotate",
|
|
863
896
|
"aspect",
|
|
864
897
|
"columns",
|
|
865
|
-
"placeholder",
|
|
866
898
|
"ring",
|
|
867
899
|
"gap",
|
|
868
900
|
"inset",
|
|
901
|
+
"filter",
|
|
902
|
+
"transform",
|
|
903
|
+
"blur",
|
|
904
|
+
"brightness",
|
|
905
|
+
"contrast",
|
|
906
|
+
"grayscale",
|
|
907
|
+
"invert",
|
|
908
|
+
"saturate",
|
|
909
|
+
"sepia",
|
|
869
910
|
"bg",
|
|
870
911
|
"text",
|
|
871
912
|
"font",
|
|
913
|
+
"caret",
|
|
914
|
+
"accent",
|
|
872
915
|
"from",
|
|
873
916
|
"via",
|
|
874
917
|
"to",
|
|
@@ -897,12 +940,11 @@ var UTILITY_PREFIXES = [
|
|
|
897
940
|
"left",
|
|
898
941
|
"z",
|
|
899
942
|
"col",
|
|
900
|
-
"row"
|
|
901
|
-
"flex"
|
|
902
|
-
// also a standalone
|
|
943
|
+
"row"
|
|
903
944
|
];
|
|
904
945
|
var SORTED_PREFIXES = [...new Set(UTILITY_PREFIXES)].sort((a, b) => b.length - a.length);
|
|
905
946
|
var STANDALONE_UTILITIES = /* @__PURE__ */ new Set([
|
|
947
|
+
// Display
|
|
906
948
|
"flex",
|
|
907
949
|
"block",
|
|
908
950
|
"inline-block",
|
|
@@ -914,13 +956,16 @@ var STANDALONE_UTILITIES = /* @__PURE__ */ new Set([
|
|
|
914
956
|
"hidden",
|
|
915
957
|
"contents",
|
|
916
958
|
"flow-root",
|
|
959
|
+
// Position
|
|
917
960
|
"relative",
|
|
918
961
|
"absolute",
|
|
919
962
|
"fixed",
|
|
920
963
|
"sticky",
|
|
921
964
|
"static",
|
|
965
|
+
// Visibility
|
|
922
966
|
"visible",
|
|
923
967
|
"invisible",
|
|
968
|
+
// Typography
|
|
924
969
|
"uppercase",
|
|
925
970
|
"lowercase",
|
|
926
971
|
"capitalize",
|
|
@@ -935,6 +980,17 @@ var STANDALONE_UTILITIES = /* @__PURE__ */ new Set([
|
|
|
935
980
|
"antialiased",
|
|
936
981
|
"sr-only",
|
|
937
982
|
"not-sr-only",
|
|
983
|
+
// Font variant numeric
|
|
984
|
+
"normal-nums",
|
|
985
|
+
"ordinal",
|
|
986
|
+
"slashed-zero",
|
|
987
|
+
"lining-nums",
|
|
988
|
+
"oldstyle-nums",
|
|
989
|
+
"proportional-nums",
|
|
990
|
+
"tabular-nums",
|
|
991
|
+
"diagonal-fractions",
|
|
992
|
+
"stacked-fractions",
|
|
993
|
+
// Flexbox
|
|
938
994
|
"flex-row",
|
|
939
995
|
"flex-col",
|
|
940
996
|
"flex-row-reverse",
|
|
@@ -963,15 +1019,19 @@ var STANDALONE_UTILITIES = /* @__PURE__ */ new Set([
|
|
|
963
1019
|
"content-between",
|
|
964
1020
|
"content-around",
|
|
965
1021
|
"content-evenly",
|
|
1022
|
+
"content-stretch",
|
|
966
1023
|
"self-start",
|
|
967
1024
|
"self-end",
|
|
968
1025
|
"self-center",
|
|
969
1026
|
"self-auto",
|
|
970
1027
|
"self-stretch",
|
|
1028
|
+
"self-baseline",
|
|
1029
|
+
// Text align
|
|
971
1030
|
"text-left",
|
|
972
1031
|
"text-right",
|
|
973
1032
|
"text-center",
|
|
974
1033
|
"text-justify",
|
|
1034
|
+
// Font weight shortcuts
|
|
975
1035
|
"font-thin",
|
|
976
1036
|
"font-extralight",
|
|
977
1037
|
"font-light",
|
|
@@ -981,6 +1041,7 @@ var STANDALONE_UTILITIES = /* @__PURE__ */ new Set([
|
|
|
981
1041
|
"font-bold",
|
|
982
1042
|
"font-extrabold",
|
|
983
1043
|
"font-black",
|
|
1044
|
+
// Overflow
|
|
984
1045
|
"overflow-hidden",
|
|
985
1046
|
"overflow-visible",
|
|
986
1047
|
"overflow-scroll",
|
|
@@ -991,11 +1052,23 @@ var STANDALONE_UTILITIES = /* @__PURE__ */ new Set([
|
|
|
991
1052
|
"overflow-y-hidden",
|
|
992
1053
|
"overflow-y-scroll",
|
|
993
1054
|
"overflow-y-auto",
|
|
1055
|
+
// Object fit
|
|
994
1056
|
"object-contain",
|
|
995
1057
|
"object-cover",
|
|
996
1058
|
"object-fill",
|
|
997
1059
|
"object-none",
|
|
998
1060
|
"object-scale-down",
|
|
1061
|
+
// Object position
|
|
1062
|
+
"object-center",
|
|
1063
|
+
"object-top",
|
|
1064
|
+
"object-bottom",
|
|
1065
|
+
"object-left",
|
|
1066
|
+
"object-right",
|
|
1067
|
+
"object-left-top",
|
|
1068
|
+
"object-left-bottom",
|
|
1069
|
+
"object-right-top",
|
|
1070
|
+
"object-right-bottom",
|
|
1071
|
+
// Border
|
|
999
1072
|
"border-solid",
|
|
1000
1073
|
"border-dashed",
|
|
1001
1074
|
"border-dotted",
|
|
@@ -1004,9 +1077,15 @@ var STANDALONE_UTILITIES = /* @__PURE__ */ new Set([
|
|
|
1004
1077
|
"border-r",
|
|
1005
1078
|
"border-b",
|
|
1006
1079
|
"border-l",
|
|
1080
|
+
"border-collapse",
|
|
1081
|
+
"border-separate",
|
|
1082
|
+
// Lists
|
|
1007
1083
|
"list-none",
|
|
1008
1084
|
"list-disc",
|
|
1009
1085
|
"list-decimal",
|
|
1086
|
+
"list-inside",
|
|
1087
|
+
"list-outside",
|
|
1088
|
+
// Cursor / select
|
|
1010
1089
|
"cursor-auto",
|
|
1011
1090
|
"cursor-default",
|
|
1012
1091
|
"cursor-pointer",
|
|
@@ -1020,6 +1099,7 @@ var STANDALONE_UTILITIES = /* @__PURE__ */ new Set([
|
|
|
1020
1099
|
"select-auto",
|
|
1021
1100
|
"pointer-events-none",
|
|
1022
1101
|
"pointer-events-auto",
|
|
1102
|
+
// Whitespace / word break
|
|
1023
1103
|
"whitespace-normal",
|
|
1024
1104
|
"whitespace-nowrap",
|
|
1025
1105
|
"whitespace-pre",
|
|
@@ -1028,19 +1108,129 @@ var STANDALONE_UTILITIES = /* @__PURE__ */ new Set([
|
|
|
1028
1108
|
"break-normal",
|
|
1029
1109
|
"break-words",
|
|
1030
1110
|
"break-all",
|
|
1111
|
+
// Background clip
|
|
1031
1112
|
"bg-clip-border",
|
|
1032
1113
|
"bg-clip-padding",
|
|
1033
1114
|
"bg-clip-content",
|
|
1034
1115
|
"bg-clip-text",
|
|
1116
|
+
// Background size
|
|
1117
|
+
"bg-auto",
|
|
1118
|
+
"bg-cover",
|
|
1119
|
+
"bg-contain",
|
|
1120
|
+
// Background position
|
|
1121
|
+
"bg-center",
|
|
1122
|
+
"bg-top",
|
|
1123
|
+
"bg-bottom",
|
|
1124
|
+
"bg-left",
|
|
1125
|
+
"bg-right",
|
|
1126
|
+
"bg-left-top",
|
|
1127
|
+
"bg-left-bottom",
|
|
1128
|
+
"bg-right-top",
|
|
1129
|
+
"bg-right-bottom",
|
|
1130
|
+
// Background repeat
|
|
1131
|
+
"bg-repeat",
|
|
1132
|
+
"bg-no-repeat",
|
|
1133
|
+
"bg-repeat-x",
|
|
1134
|
+
"bg-repeat-y",
|
|
1135
|
+
"bg-repeat-round",
|
|
1136
|
+
"bg-repeat-space",
|
|
1137
|
+
// Background attachment
|
|
1138
|
+
"bg-fixed",
|
|
1139
|
+
"bg-local",
|
|
1140
|
+
"bg-scroll",
|
|
1141
|
+
// Background image
|
|
1142
|
+
"bg-none",
|
|
1143
|
+
// Box sizing
|
|
1035
1144
|
"box-border",
|
|
1036
1145
|
"box-content",
|
|
1146
|
+
// Resize
|
|
1037
1147
|
"resize",
|
|
1038
1148
|
"resize-none",
|
|
1039
1149
|
"resize-y",
|
|
1040
1150
|
"resize-x",
|
|
1151
|
+
// Outline
|
|
1041
1152
|
"appearance-none",
|
|
1042
1153
|
"outline-none",
|
|
1043
|
-
"outline"
|
|
1154
|
+
"outline",
|
|
1155
|
+
// Table
|
|
1156
|
+
"table",
|
|
1157
|
+
"table-auto",
|
|
1158
|
+
"table-fixed",
|
|
1159
|
+
"caption-top",
|
|
1160
|
+
"caption-bottom",
|
|
1161
|
+
// CSS filters (standalone = default/full effect)
|
|
1162
|
+
"grayscale",
|
|
1163
|
+
"invert",
|
|
1164
|
+
"sepia",
|
|
1165
|
+
// Isolation
|
|
1166
|
+
"isolate",
|
|
1167
|
+
"isolation-auto",
|
|
1168
|
+
// Backface visibility (both platforms)
|
|
1169
|
+
"backface-visible",
|
|
1170
|
+
"backface-hidden",
|
|
1171
|
+
// Divide none
|
|
1172
|
+
"divide-none",
|
|
1173
|
+
// Group / peer markers (no-op style; needed so isKnownUtility recognises them)
|
|
1174
|
+
"group",
|
|
1175
|
+
"peer",
|
|
1176
|
+
// Text-wrap (web-only)
|
|
1177
|
+
"text-wrap",
|
|
1178
|
+
"text-nowrap",
|
|
1179
|
+
"text-balance",
|
|
1180
|
+
"text-pretty",
|
|
1181
|
+
// Screen sizing
|
|
1182
|
+
"w-screen",
|
|
1183
|
+
"min-h-screen",
|
|
1184
|
+
"max-h-screen",
|
|
1185
|
+
"min-w-screen",
|
|
1186
|
+
"max-w-screen",
|
|
1187
|
+
// Extended cursors (web-only)
|
|
1188
|
+
"cursor-grab",
|
|
1189
|
+
"cursor-grabbing",
|
|
1190
|
+
"cursor-zoom-in",
|
|
1191
|
+
"cursor-zoom-out",
|
|
1192
|
+
"cursor-crosshair",
|
|
1193
|
+
"cursor-help",
|
|
1194
|
+
"cursor-none",
|
|
1195
|
+
// Overflow clip (web-only)
|
|
1196
|
+
"overflow-clip",
|
|
1197
|
+
"overflow-x-clip",
|
|
1198
|
+
"overflow-y-clip",
|
|
1199
|
+
// Scroll behavior (web-only)
|
|
1200
|
+
"scroll-smooth",
|
|
1201
|
+
"scroll-auto",
|
|
1202
|
+
// Float & clear (web-only)
|
|
1203
|
+
"float-left",
|
|
1204
|
+
"float-right",
|
|
1205
|
+
"float-start",
|
|
1206
|
+
"float-end",
|
|
1207
|
+
"float-none",
|
|
1208
|
+
"clear-left",
|
|
1209
|
+
"clear-right",
|
|
1210
|
+
"clear-both",
|
|
1211
|
+
"clear-start",
|
|
1212
|
+
"clear-end",
|
|
1213
|
+
"clear-none",
|
|
1214
|
+
// Vertical align (web-only)
|
|
1215
|
+
"align-baseline",
|
|
1216
|
+
"align-top",
|
|
1217
|
+
"align-middle",
|
|
1218
|
+
"align-bottom",
|
|
1219
|
+
"align-text-top",
|
|
1220
|
+
"align-text-bottom",
|
|
1221
|
+
"align-sub",
|
|
1222
|
+
"align-super",
|
|
1223
|
+
// Touch action (web-only)
|
|
1224
|
+
"touch-auto",
|
|
1225
|
+
"touch-none",
|
|
1226
|
+
"touch-pan-x",
|
|
1227
|
+
"touch-pan-y",
|
|
1228
|
+
"touch-pan-left",
|
|
1229
|
+
"touch-pan-right",
|
|
1230
|
+
"touch-pan-up",
|
|
1231
|
+
"touch-pan-down",
|
|
1232
|
+
"touch-pinch-zoom",
|
|
1233
|
+
"touch-manipulation"
|
|
1044
1234
|
]);
|
|
1045
1235
|
function parseClass(className) {
|
|
1046
1236
|
const trimmed = className.trim();
|
|
@@ -1058,6 +1248,11 @@ function parseClass(className) {
|
|
|
1058
1248
|
break;
|
|
1059
1249
|
}
|
|
1060
1250
|
}
|
|
1251
|
+
let important = false;
|
|
1252
|
+
if (remaining.startsWith("!") && remaining.length > 1) {
|
|
1253
|
+
important = true;
|
|
1254
|
+
remaining = remaining.slice(1);
|
|
1255
|
+
}
|
|
1061
1256
|
let negative = false;
|
|
1062
1257
|
if (remaining.startsWith("-") && remaining.length > 1 && remaining[1] !== "-") {
|
|
1063
1258
|
negative = true;
|
|
@@ -1067,18 +1262,18 @@ function parseClass(className) {
|
|
|
1067
1262
|
if (bracketStart > 0 && remaining.endsWith("]")) {
|
|
1068
1263
|
const utility = remaining.slice(0, bracketStart);
|
|
1069
1264
|
const value = remaining.slice(bracketStart + 2, -1);
|
|
1070
|
-
return { original: trimmed, modifiers, negative, utility, value, isArbitrary: true };
|
|
1265
|
+
return { original: trimmed, modifiers, negative, important, utility, value, isArbitrary: true };
|
|
1071
1266
|
}
|
|
1072
1267
|
if (STANDALONE_UTILITIES.has(remaining)) {
|
|
1073
|
-
return { original: trimmed, modifiers, negative, utility: remaining, value: "", isArbitrary: false };
|
|
1268
|
+
return { original: trimmed, modifiers, negative, important, utility: remaining, value: "", isArbitrary: false };
|
|
1074
1269
|
}
|
|
1075
1270
|
for (const prefix of SORTED_PREFIXES) {
|
|
1076
1271
|
if (remaining === prefix) {
|
|
1077
|
-
return { original: trimmed, modifiers, negative, utility: prefix, value: "", isArbitrary: false };
|
|
1272
|
+
return { original: trimmed, modifiers, negative, important, utility: prefix, value: "", isArbitrary: false };
|
|
1078
1273
|
}
|
|
1079
1274
|
if (remaining.startsWith(prefix + "-")) {
|
|
1080
1275
|
const value = remaining.slice(prefix.length + 1);
|
|
1081
|
-
return { original: trimmed, modifiers, negative, utility: prefix, value, isArbitrary: false };
|
|
1276
|
+
return { original: trimmed, modifiers, negative, important, utility: prefix, value, isArbitrary: false };
|
|
1082
1277
|
}
|
|
1083
1278
|
}
|
|
1084
1279
|
const firstDash = remaining.indexOf("-");
|
|
@@ -1087,12 +1282,13 @@ function parseClass(className) {
|
|
|
1087
1282
|
original: trimmed,
|
|
1088
1283
|
modifiers,
|
|
1089
1284
|
negative,
|
|
1285
|
+
important,
|
|
1090
1286
|
utility: remaining.slice(0, firstDash),
|
|
1091
1287
|
value: remaining.slice(firstDash + 1),
|
|
1092
1288
|
isArbitrary: false
|
|
1093
1289
|
};
|
|
1094
1290
|
}
|
|
1095
|
-
return { original: trimmed, modifiers, negative, utility: remaining, value: "", isArbitrary: false };
|
|
1291
|
+
return { original: trimmed, modifiers, negative, important, utility: remaining, value: "", isArbitrary: false };
|
|
1096
1292
|
}
|
|
1097
1293
|
function parseClasses(classString) {
|
|
1098
1294
|
const results = [];
|
|
@@ -1214,6 +1410,8 @@ function resolveFontSize(value, fontSizes, isArbitrary) {
|
|
|
1214
1410
|
if (isArbitrary) return isWeb ? value : toNativeValue(value);
|
|
1215
1411
|
return fontSizes[value] ?? null;
|
|
1216
1412
|
}
|
|
1413
|
+
var FILTER_COMPOSE = "var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)";
|
|
1414
|
+
var BACKDROP_FILTER_COMPOSE = "var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)";
|
|
1217
1415
|
var STANDALONE = {
|
|
1218
1416
|
// Display
|
|
1219
1417
|
// React Native only supports display:'flex'|'none'. Setting 'flex' explicitly is
|
|
@@ -1264,12 +1462,14 @@ var STANDALONE = {
|
|
|
1264
1462
|
"content-between": { alignContent: "space-between" },
|
|
1265
1463
|
"content-around": { alignContent: "space-around" },
|
|
1266
1464
|
"content-evenly": { alignContent: "space-evenly" },
|
|
1465
|
+
"content-stretch": { alignContent: "stretch" },
|
|
1267
1466
|
// Align self (both)
|
|
1268
1467
|
"self-auto": { alignSelf: "auto" },
|
|
1269
1468
|
"self-start": { alignSelf: "flex-start" },
|
|
1270
1469
|
"self-end": { alignSelf: "flex-end" },
|
|
1271
1470
|
"self-center": { alignSelf: "center" },
|
|
1272
1471
|
"self-stretch": { alignSelf: "stretch" },
|
|
1472
|
+
"self-baseline": { alignSelf: "baseline" },
|
|
1273
1473
|
// Text align (both)
|
|
1274
1474
|
"text-left": { textAlign: "left" },
|
|
1275
1475
|
"text-right": { textAlign: "right" },
|
|
@@ -1402,7 +1602,139 @@ var STANDALONE = {
|
|
|
1402
1602
|
"bg-clip-border": isWeb ? { backgroundClip: "border-box" } : null,
|
|
1403
1603
|
"bg-clip-padding": isWeb ? { backgroundClip: "padding-box" } : null,
|
|
1404
1604
|
"bg-clip-content": isWeb ? { backgroundClip: "content-box" } : null,
|
|
1405
|
-
"bg-clip-text": isWeb ? { backgroundClip: "text", WebkitBackgroundClip: "text" } : null
|
|
1605
|
+
"bg-clip-text": isWeb ? { backgroundClip: "text", WebkitBackgroundClip: "text" } : null,
|
|
1606
|
+
// Background image
|
|
1607
|
+
"bg-none": isWeb ? { backgroundImage: "none" } : null,
|
|
1608
|
+
// Background size (web-only)
|
|
1609
|
+
"bg-auto": isWeb ? { backgroundSize: "auto" } : null,
|
|
1610
|
+
"bg-cover": isWeb ? { backgroundSize: "cover" } : null,
|
|
1611
|
+
"bg-contain": isWeb ? { backgroundSize: "contain" } : null,
|
|
1612
|
+
// Background position (web-only)
|
|
1613
|
+
"bg-center": isWeb ? { backgroundPosition: "center" } : null,
|
|
1614
|
+
"bg-top": isWeb ? { backgroundPosition: "top" } : null,
|
|
1615
|
+
"bg-bottom": isWeb ? { backgroundPosition: "bottom" } : null,
|
|
1616
|
+
"bg-left": isWeb ? { backgroundPosition: "left" } : null,
|
|
1617
|
+
"bg-right": isWeb ? { backgroundPosition: "right" } : null,
|
|
1618
|
+
"bg-left-top": isWeb ? { backgroundPosition: "left top" } : null,
|
|
1619
|
+
"bg-left-bottom": isWeb ? { backgroundPosition: "left bottom" } : null,
|
|
1620
|
+
"bg-right-top": isWeb ? { backgroundPosition: "right top" } : null,
|
|
1621
|
+
"bg-right-bottom": isWeb ? { backgroundPosition: "right bottom" } : null,
|
|
1622
|
+
// Background repeat (web-only)
|
|
1623
|
+
"bg-repeat": isWeb ? { backgroundRepeat: "repeat" } : null,
|
|
1624
|
+
"bg-no-repeat": isWeb ? { backgroundRepeat: "no-repeat" } : null,
|
|
1625
|
+
"bg-repeat-x": isWeb ? { backgroundRepeat: "repeat-x" } : null,
|
|
1626
|
+
"bg-repeat-y": isWeb ? { backgroundRepeat: "repeat-y" } : null,
|
|
1627
|
+
"bg-repeat-round": isWeb ? { backgroundRepeat: "round" } : null,
|
|
1628
|
+
"bg-repeat-space": isWeb ? { backgroundRepeat: "space" } : null,
|
|
1629
|
+
// Background attachment (web-only)
|
|
1630
|
+
"bg-fixed": isWeb ? { backgroundAttachment: "fixed" } : null,
|
|
1631
|
+
"bg-local": isWeb ? { backgroundAttachment: "local" } : null,
|
|
1632
|
+
"bg-scroll": isWeb ? { backgroundAttachment: "scroll" } : null,
|
|
1633
|
+
// Object position (web-only)
|
|
1634
|
+
"object-center": isWeb ? { objectPosition: "center" } : null,
|
|
1635
|
+
"object-top": isWeb ? { objectPosition: "top" } : null,
|
|
1636
|
+
"object-bottom": isWeb ? { objectPosition: "bottom" } : null,
|
|
1637
|
+
"object-left": isWeb ? { objectPosition: "left" } : null,
|
|
1638
|
+
"object-right": isWeb ? { objectPosition: "right" } : null,
|
|
1639
|
+
"object-left-top": isWeb ? { objectPosition: "left top" } : null,
|
|
1640
|
+
"object-left-bottom": isWeb ? { objectPosition: "left bottom" } : null,
|
|
1641
|
+
"object-right-top": isWeb ? { objectPosition: "right top" } : null,
|
|
1642
|
+
"object-right-bottom": isWeb ? { objectPosition: "right bottom" } : null,
|
|
1643
|
+
// Table (web-only)
|
|
1644
|
+
table: isWeb ? { display: "table" } : null,
|
|
1645
|
+
"table-auto": isWeb ? { tableLayout: "auto" } : null,
|
|
1646
|
+
"table-fixed": isWeb ? { tableLayout: "fixed" } : null,
|
|
1647
|
+
"caption-top": isWeb ? { captionSide: "top" } : null,
|
|
1648
|
+
"caption-bottom": isWeb ? { captionSide: "bottom" } : null,
|
|
1649
|
+
"border-collapse": isWeb ? { borderCollapse: "collapse" } : null,
|
|
1650
|
+
"border-separate": isWeb ? { borderCollapse: "separate" } : null,
|
|
1651
|
+
// List style position (web-only)
|
|
1652
|
+
"list-inside": isWeb ? { listStylePosition: "inside" } : null,
|
|
1653
|
+
"list-outside": isWeb ? { listStylePosition: "outside" } : null,
|
|
1654
|
+
// Font variant numeric (web-only)
|
|
1655
|
+
"normal-nums": isWeb ? { fontVariantNumeric: "normal" } : null,
|
|
1656
|
+
ordinal: isWeb ? { fontVariantNumeric: "ordinal" } : null,
|
|
1657
|
+
"slashed-zero": isWeb ? { fontVariantNumeric: "slashed-zero" } : null,
|
|
1658
|
+
"lining-nums": isWeb ? { fontVariantNumeric: "lining-nums" } : null,
|
|
1659
|
+
"oldstyle-nums": isWeb ? { fontVariantNumeric: "oldstyle-nums" } : null,
|
|
1660
|
+
"proportional-nums": isWeb ? { fontVariantNumeric: "proportional-nums" } : null,
|
|
1661
|
+
"tabular-nums": isWeb ? { fontVariantNumeric: "tabular-nums" } : null,
|
|
1662
|
+
"diagonal-fractions": isWeb ? { fontVariantNumeric: "diagonal-fractions" } : null,
|
|
1663
|
+
"stacked-fractions": isWeb ? { fontVariantNumeric: "stacked-fractions" } : null,
|
|
1664
|
+
// Isolation (web-only)
|
|
1665
|
+
isolate: isWeb ? { isolation: "isolate" } : null,
|
|
1666
|
+
"isolation-auto": isWeb ? { isolation: "auto" } : null,
|
|
1667
|
+
// Backface visibility (both iOS and Android)
|
|
1668
|
+
"backface-visible": { backfaceVisibility: "visible" },
|
|
1669
|
+
"backface-hidden": { backfaceVisibility: "hidden" },
|
|
1670
|
+
// CSS filters — standalone = default/full effect (web-only)
|
|
1671
|
+
grayscale: isWeb ? { "--tw-grayscale": "grayscale(100%)", filter: FILTER_COMPOSE } : null,
|
|
1672
|
+
invert: isWeb ? { "--tw-invert": "invert(100%)", filter: FILTER_COMPOSE } : null,
|
|
1673
|
+
sepia: isWeb ? { "--tw-sepia": "sepia(100%)", filter: FILTER_COMPOSE } : null,
|
|
1674
|
+
// Divide none
|
|
1675
|
+
"divide-none": isWeb ? { __divideX: 0, __divideY: 0 } : null,
|
|
1676
|
+
// Group / peer markers (no-op: no style emitted; just ensures isKnownUtility returns true)
|
|
1677
|
+
group: isWeb ? {} : null,
|
|
1678
|
+
peer: isWeb ? {} : null,
|
|
1679
|
+
// Text-wrap (web-only)
|
|
1680
|
+
"text-wrap": isWeb ? { textWrap: "wrap" } : null,
|
|
1681
|
+
"text-nowrap": isWeb ? { textWrap: "nowrap" } : null,
|
|
1682
|
+
"text-balance": isWeb ? { textWrap: "balance" } : null,
|
|
1683
|
+
"text-pretty": isWeb ? { textWrap: "pretty" } : null,
|
|
1684
|
+
// Screen sizing (vw values are web-only; vh values work cross-platform via spacing scale for h-*)
|
|
1685
|
+
"w-screen": isWeb ? { width: "100vw" } : null,
|
|
1686
|
+
"min-h-screen": { minHeight: "100vh" },
|
|
1687
|
+
"max-h-screen": { maxHeight: "100vh" },
|
|
1688
|
+
"min-w-screen": isWeb ? { minWidth: "100vw" } : null,
|
|
1689
|
+
"max-w-screen": isWeb ? { maxWidth: "100vw" } : null,
|
|
1690
|
+
// Extended cursors (web-only)
|
|
1691
|
+
"cursor-grab": isWeb ? { cursor: "grab" } : null,
|
|
1692
|
+
"cursor-grabbing": isWeb ? { cursor: "grabbing" } : null,
|
|
1693
|
+
"cursor-zoom-in": isWeb ? { cursor: "zoom-in" } : null,
|
|
1694
|
+
"cursor-zoom-out": isWeb ? { cursor: "zoom-out" } : null,
|
|
1695
|
+
"cursor-crosshair": isWeb ? { cursor: "crosshair" } : null,
|
|
1696
|
+
"cursor-help": isWeb ? { cursor: "help" } : null,
|
|
1697
|
+
"cursor-none": isWeb ? { cursor: "none" } : null,
|
|
1698
|
+
// Overflow clip (web-only)
|
|
1699
|
+
"overflow-clip": isWeb ? { overflow: "clip" } : null,
|
|
1700
|
+
"overflow-x-clip": isWeb ? { overflowX: "clip" } : null,
|
|
1701
|
+
"overflow-y-clip": isWeb ? { overflowY: "clip" } : null,
|
|
1702
|
+
// Scroll behavior (web-only)
|
|
1703
|
+
"scroll-smooth": isWeb ? { scrollBehavior: "smooth" } : null,
|
|
1704
|
+
"scroll-auto": isWeb ? { scrollBehavior: "auto" } : null,
|
|
1705
|
+
// Float (web-only)
|
|
1706
|
+
"float-left": isWeb ? { float: "left" } : null,
|
|
1707
|
+
"float-right": isWeb ? { float: "right" } : null,
|
|
1708
|
+
"float-start": isWeb ? { float: "inline-start" } : null,
|
|
1709
|
+
"float-end": isWeb ? { float: "inline-end" } : null,
|
|
1710
|
+
"float-none": isWeb ? { float: "none" } : null,
|
|
1711
|
+
// Clear (web-only)
|
|
1712
|
+
"clear-left": isWeb ? { clear: "left" } : null,
|
|
1713
|
+
"clear-right": isWeb ? { clear: "right" } : null,
|
|
1714
|
+
"clear-both": isWeb ? { clear: "both" } : null,
|
|
1715
|
+
"clear-start": isWeb ? { clear: "inline-start" } : null,
|
|
1716
|
+
"clear-end": isWeb ? { clear: "inline-end" } : null,
|
|
1717
|
+
"clear-none": isWeb ? { clear: "none" } : null,
|
|
1718
|
+
// Vertical align (web-only)
|
|
1719
|
+
"align-baseline": isWeb ? { verticalAlign: "baseline" } : null,
|
|
1720
|
+
"align-top": isWeb ? { verticalAlign: "top" } : null,
|
|
1721
|
+
"align-middle": isWeb ? { verticalAlign: "middle" } : null,
|
|
1722
|
+
"align-bottom": isWeb ? { verticalAlign: "bottom" } : null,
|
|
1723
|
+
"align-text-top": isWeb ? { verticalAlign: "text-top" } : null,
|
|
1724
|
+
"align-text-bottom": isWeb ? { verticalAlign: "text-bottom" } : null,
|
|
1725
|
+
"align-sub": isWeb ? { verticalAlign: "sub" } : null,
|
|
1726
|
+
"align-super": isWeb ? { verticalAlign: "super" } : null,
|
|
1727
|
+
// Touch action (web-only)
|
|
1728
|
+
"touch-auto": isWeb ? { touchAction: "auto" } : null,
|
|
1729
|
+
"touch-none": isWeb ? { touchAction: "none" } : null,
|
|
1730
|
+
"touch-pan-x": isWeb ? { touchAction: "pan-x" } : null,
|
|
1731
|
+
"touch-pan-y": isWeb ? { touchAction: "pan-y" } : null,
|
|
1732
|
+
"touch-pan-left": isWeb ? { touchAction: "pan-left" } : null,
|
|
1733
|
+
"touch-pan-right": isWeb ? { touchAction: "pan-right" } : null,
|
|
1734
|
+
"touch-pan-up": isWeb ? { touchAction: "pan-up" } : null,
|
|
1735
|
+
"touch-pan-down": isWeb ? { touchAction: "pan-down" } : null,
|
|
1736
|
+
"touch-pinch-zoom": isWeb ? { touchAction: "pinch-zoom" } : null,
|
|
1737
|
+
"touch-manipulation": isWeb ? { touchAction: "manipulation" } : null
|
|
1406
1738
|
};
|
|
1407
1739
|
var RESOLVERS = {
|
|
1408
1740
|
// ── Background ─────────────────────────────────────────────────────────────
|
|
@@ -1734,6 +2066,545 @@ var RESOLVERS = {
|
|
|
1734
2066
|
if (isArbitrary) return { gridRow: value };
|
|
1735
2067
|
return null;
|
|
1736
2068
|
},
|
|
2069
|
+
// ── Grid alignment (web-only) ──────────────────────────────────────────────
|
|
2070
|
+
// place-items is shorthand for align-items + justify-items on a grid container
|
|
2071
|
+
"place-items": ({ value }) => {
|
|
2072
|
+
if (!isWeb) return null;
|
|
2073
|
+
const map = {
|
|
2074
|
+
start: "start",
|
|
2075
|
+
end: "end",
|
|
2076
|
+
center: "center",
|
|
2077
|
+
stretch: "stretch",
|
|
2078
|
+
baseline: "baseline"
|
|
2079
|
+
};
|
|
2080
|
+
return map[value] ? { placeItems: map[value] } : null;
|
|
2081
|
+
},
|
|
2082
|
+
// place-content is shorthand for align-content + justify-content on a grid container
|
|
2083
|
+
"place-content": ({ value }) => {
|
|
2084
|
+
if (!isWeb) return null;
|
|
2085
|
+
const map = {
|
|
2086
|
+
start: "start",
|
|
2087
|
+
end: "end",
|
|
2088
|
+
center: "center",
|
|
2089
|
+
stretch: "stretch",
|
|
2090
|
+
between: "space-between",
|
|
2091
|
+
around: "space-around",
|
|
2092
|
+
evenly: "space-evenly",
|
|
2093
|
+
baseline: "baseline"
|
|
2094
|
+
};
|
|
2095
|
+
return map[value] ? { placeContent: map[value] } : null;
|
|
2096
|
+
},
|
|
2097
|
+
// justify-items controls inline-axis alignment of grid items within their cells
|
|
2098
|
+
"justify-items": ({ value }) => {
|
|
2099
|
+
if (!isWeb) return null;
|
|
2100
|
+
const map = {
|
|
2101
|
+
start: "start",
|
|
2102
|
+
end: "end",
|
|
2103
|
+
center: "center",
|
|
2104
|
+
stretch: "stretch"
|
|
2105
|
+
};
|
|
2106
|
+
return map[value] ? { justifyItems: map[value] } : null;
|
|
2107
|
+
},
|
|
2108
|
+
// place-self is shorthand for align-self + justify-self on a grid item
|
|
2109
|
+
"place-self": ({ value }) => {
|
|
2110
|
+
if (!isWeb) return null;
|
|
2111
|
+
const map = {
|
|
2112
|
+
auto: "auto",
|
|
2113
|
+
start: "start",
|
|
2114
|
+
end: "end",
|
|
2115
|
+
center: "center",
|
|
2116
|
+
stretch: "stretch"
|
|
2117
|
+
};
|
|
2118
|
+
return map[value] ? { placeSelf: map[value] } : null;
|
|
2119
|
+
},
|
|
2120
|
+
// justify-self controls inline-axis self-alignment of a grid item
|
|
2121
|
+
"justify-self": ({ value }) => {
|
|
2122
|
+
if (!isWeb) return null;
|
|
2123
|
+
const map = {
|
|
2124
|
+
auto: "auto",
|
|
2125
|
+
start: "start",
|
|
2126
|
+
end: "end",
|
|
2127
|
+
center: "center",
|
|
2128
|
+
stretch: "stretch"
|
|
2129
|
+
};
|
|
2130
|
+
return map[value] ? { justifySelf: map[value] } : null;
|
|
2131
|
+
},
|
|
2132
|
+
// ── CSS Filters (composable via CSS variables, web-only) ─────────────────
|
|
2133
|
+
blur: ({ value, isArbitrary }) => {
|
|
2134
|
+
if (!isWeb) return null;
|
|
2135
|
+
const sizes = {
|
|
2136
|
+
"": "blur(8px)",
|
|
2137
|
+
sm: "blur(4px)",
|
|
2138
|
+
md: "blur(12px)",
|
|
2139
|
+
lg: "blur(16px)",
|
|
2140
|
+
xl: "blur(24px)",
|
|
2141
|
+
"2xl": "blur(40px)",
|
|
2142
|
+
"3xl": "blur(64px)"
|
|
2143
|
+
};
|
|
2144
|
+
if (value === "none") return { "--tw-blur": "", filter: FILTER_COMPOSE };
|
|
2145
|
+
const v = isArbitrary ? `blur(${value})` : sizes[value];
|
|
2146
|
+
return v !== void 0 ? { "--tw-blur": v, filter: FILTER_COMPOSE } : null;
|
|
2147
|
+
},
|
|
2148
|
+
brightness: ({ value, isArbitrary }) => {
|
|
2149
|
+
if (!isWeb) return null;
|
|
2150
|
+
const v = isArbitrary ? `brightness(${value})` : `brightness(${parseFloat(value) / 100})`;
|
|
2151
|
+
return isNaN(parseFloat(value)) && !isArbitrary ? null : { "--tw-brightness": v, filter: FILTER_COMPOSE };
|
|
2152
|
+
},
|
|
2153
|
+
contrast: ({ value, isArbitrary }) => {
|
|
2154
|
+
if (!isWeb) return null;
|
|
2155
|
+
const v = isArbitrary ? `contrast(${value})` : `contrast(${parseFloat(value) / 100})`;
|
|
2156
|
+
return isNaN(parseFloat(value)) && !isArbitrary ? null : { "--tw-contrast": v, filter: FILTER_COMPOSE };
|
|
2157
|
+
},
|
|
2158
|
+
grayscale: ({ value }) => {
|
|
2159
|
+
if (!isWeb) return null;
|
|
2160
|
+
const v = value === "0" ? "grayscale(0)" : "grayscale(100%)";
|
|
2161
|
+
return { "--tw-grayscale": v, filter: FILTER_COMPOSE };
|
|
2162
|
+
},
|
|
2163
|
+
"hue-rotate": ({ value, negative, isArbitrary }) => {
|
|
2164
|
+
if (!isWeb) return null;
|
|
2165
|
+
const deg = isArbitrary ? value : `${(negative ? -1 : 1) * parseFloat(value)}deg`;
|
|
2166
|
+
if (isNaN(parseFloat(deg)) && !isArbitrary) return null;
|
|
2167
|
+
return { "--tw-hue-rotate": `hue-rotate(${deg})`, filter: FILTER_COMPOSE };
|
|
2168
|
+
},
|
|
2169
|
+
invert: ({ value }) => {
|
|
2170
|
+
if (!isWeb) return null;
|
|
2171
|
+
const v = value === "0" ? "invert(0)" : "invert(100%)";
|
|
2172
|
+
return { "--tw-invert": v, filter: FILTER_COMPOSE };
|
|
2173
|
+
},
|
|
2174
|
+
saturate: ({ value, isArbitrary }) => {
|
|
2175
|
+
if (!isWeb) return null;
|
|
2176
|
+
const v = isArbitrary ? `saturate(${value})` : `saturate(${parseFloat(value) / 100})`;
|
|
2177
|
+
return isNaN(parseFloat(value)) && !isArbitrary ? null : { "--tw-saturate": v, filter: FILTER_COMPOSE };
|
|
2178
|
+
},
|
|
2179
|
+
sepia: ({ value }) => {
|
|
2180
|
+
if (!isWeb) return null;
|
|
2181
|
+
const v = value === "0" ? "sepia(0)" : "sepia(100%)";
|
|
2182
|
+
return { "--tw-sepia": v, filter: FILTER_COMPOSE };
|
|
2183
|
+
},
|
|
2184
|
+
"drop-shadow": ({ value, isArbitrary }) => {
|
|
2185
|
+
if (!isWeb) return null;
|
|
2186
|
+
if (isArbitrary) return { "--tw-drop-shadow": `drop-shadow(${value.replace(/_/g, " ")})`, filter: FILTER_COMPOSE };
|
|
2187
|
+
const presets = {
|
|
2188
|
+
"": "drop-shadow(0 1px 2px rgb(0 0 0/0.1)) drop-shadow(0 1px 1px rgb(0 0 0/0.06))",
|
|
2189
|
+
sm: "drop-shadow(0 1px 1px rgb(0 0 0/0.05))",
|
|
2190
|
+
md: "drop-shadow(0 4px 3px rgb(0 0 0/0.07)) drop-shadow(0 2px 2px rgb(0 0 0/0.06))",
|
|
2191
|
+
lg: "drop-shadow(0 10px 8px rgb(0 0 0/0.04)) drop-shadow(0 4px 3px rgb(0 0 0/0.1))",
|
|
2192
|
+
xl: "drop-shadow(0 20px 13px rgb(0 0 0/0.03)) drop-shadow(0 8px 5px rgb(0 0 0/0.08))",
|
|
2193
|
+
"2xl": "drop-shadow(0 25px 25px rgb(0 0 0/0.15))",
|
|
2194
|
+
none: "drop-shadow(0 0 #0000)"
|
|
2195
|
+
};
|
|
2196
|
+
const v = presets[value];
|
|
2197
|
+
return v !== void 0 ? { "--tw-drop-shadow": v, filter: FILTER_COMPOSE } : null;
|
|
2198
|
+
},
|
|
2199
|
+
// Arbitrary full filter string: filter-[blur(4px)_grayscale(1)]
|
|
2200
|
+
filter: ({ value, isArbitrary }) => {
|
|
2201
|
+
if (!isWeb) return null;
|
|
2202
|
+
if (isArbitrary) return { filter: value.replace(/_/g, " ") };
|
|
2203
|
+
if (value === "none") return { filter: "none" };
|
|
2204
|
+
return null;
|
|
2205
|
+
},
|
|
2206
|
+
// ── Backdrop Filters (composable via CSS variables, web-only) ────────────
|
|
2207
|
+
"backdrop-blur": ({ value, isArbitrary }) => {
|
|
2208
|
+
if (!isWeb) return null;
|
|
2209
|
+
const sizes = {
|
|
2210
|
+
"": "blur(8px)",
|
|
2211
|
+
sm: "blur(4px)",
|
|
2212
|
+
md: "blur(12px)",
|
|
2213
|
+
lg: "blur(16px)",
|
|
2214
|
+
xl: "blur(24px)",
|
|
2215
|
+
"2xl": "blur(40px)",
|
|
2216
|
+
"3xl": "blur(64px)"
|
|
2217
|
+
};
|
|
2218
|
+
if (value === "none") return { "--tw-backdrop-blur": "", backdropFilter: BACKDROP_FILTER_COMPOSE };
|
|
2219
|
+
const v = isArbitrary ? `blur(${value})` : sizes[value];
|
|
2220
|
+
return v !== void 0 ? { "--tw-backdrop-blur": v, backdropFilter: BACKDROP_FILTER_COMPOSE } : null;
|
|
2221
|
+
},
|
|
2222
|
+
"backdrop-brightness": ({ value, isArbitrary }) => {
|
|
2223
|
+
if (!isWeb) return null;
|
|
2224
|
+
const v = isArbitrary ? `brightness(${value})` : `brightness(${parseFloat(value) / 100})`;
|
|
2225
|
+
return isNaN(parseFloat(value)) && !isArbitrary ? null : { "--tw-backdrop-brightness": v, backdropFilter: BACKDROP_FILTER_COMPOSE };
|
|
2226
|
+
},
|
|
2227
|
+
"backdrop-contrast": ({ value, isArbitrary }) => {
|
|
2228
|
+
if (!isWeb) return null;
|
|
2229
|
+
const v = isArbitrary ? `contrast(${value})` : `contrast(${parseFloat(value) / 100})`;
|
|
2230
|
+
return isNaN(parseFloat(value)) && !isArbitrary ? null : { "--tw-backdrop-contrast": v, backdropFilter: BACKDROP_FILTER_COMPOSE };
|
|
2231
|
+
},
|
|
2232
|
+
"backdrop-grayscale": ({ value }) => {
|
|
2233
|
+
if (!isWeb) return null;
|
|
2234
|
+
return { "--tw-backdrop-grayscale": value === "0" ? "grayscale(0)" : "grayscale(100%)", backdropFilter: BACKDROP_FILTER_COMPOSE };
|
|
2235
|
+
},
|
|
2236
|
+
"backdrop-hue-rotate": ({ value, negative, isArbitrary }) => {
|
|
2237
|
+
if (!isWeb) return null;
|
|
2238
|
+
const deg = isArbitrary ? value : `${(negative ? -1 : 1) * parseFloat(value)}deg`;
|
|
2239
|
+
if (isNaN(parseFloat(deg)) && !isArbitrary) return null;
|
|
2240
|
+
return { "--tw-backdrop-hue-rotate": `hue-rotate(${deg})`, backdropFilter: BACKDROP_FILTER_COMPOSE };
|
|
2241
|
+
},
|
|
2242
|
+
"backdrop-invert": ({ value }) => {
|
|
2243
|
+
if (!isWeb) return null;
|
|
2244
|
+
return { "--tw-backdrop-invert": value === "0" ? "invert(0)" : "invert(100%)", backdropFilter: BACKDROP_FILTER_COMPOSE };
|
|
2245
|
+
},
|
|
2246
|
+
"backdrop-opacity": ({ value, isArbitrary }) => {
|
|
2247
|
+
if (!isWeb) return null;
|
|
2248
|
+
const v = isArbitrary ? `opacity(${value})` : `opacity(${parseFloat(value) / 100})`;
|
|
2249
|
+
return isNaN(parseFloat(value)) && !isArbitrary ? null : { "--tw-backdrop-opacity": v, backdropFilter: BACKDROP_FILTER_COMPOSE };
|
|
2250
|
+
},
|
|
2251
|
+
"backdrop-saturate": ({ value, isArbitrary }) => {
|
|
2252
|
+
if (!isWeb) return null;
|
|
2253
|
+
const v = isArbitrary ? `saturate(${value})` : `saturate(${parseFloat(value) / 100})`;
|
|
2254
|
+
return isNaN(parseFloat(value)) && !isArbitrary ? null : { "--tw-backdrop-saturate": v, backdropFilter: BACKDROP_FILTER_COMPOSE };
|
|
2255
|
+
},
|
|
2256
|
+
"backdrop-sepia": ({ value }) => {
|
|
2257
|
+
if (!isWeb) return null;
|
|
2258
|
+
return { "--tw-backdrop-sepia": value === "0" ? "sepia(0)" : "sepia(100%)", backdropFilter: BACKDROP_FILTER_COMPOSE };
|
|
2259
|
+
},
|
|
2260
|
+
"backdrop-filter": ({ value, isArbitrary }) => {
|
|
2261
|
+
if (!isWeb) return null;
|
|
2262
|
+
if (isArbitrary) return { backdropFilter: value.replace(/_/g, " ") };
|
|
2263
|
+
if (value === "none") return { backdropFilter: "none" };
|
|
2264
|
+
return null;
|
|
2265
|
+
},
|
|
2266
|
+
// ── Background gradient (CSS variable gradient stops, web-only) ──────────
|
|
2267
|
+
"bg-gradient-to": ({ value }) => {
|
|
2268
|
+
if (!isWeb) return null;
|
|
2269
|
+
const directions = {
|
|
2270
|
+
t: "to top",
|
|
2271
|
+
tr: "to top right",
|
|
2272
|
+
r: "to right",
|
|
2273
|
+
br: "to bottom right",
|
|
2274
|
+
b: "to bottom",
|
|
2275
|
+
bl: "to bottom left",
|
|
2276
|
+
l: "to left",
|
|
2277
|
+
tl: "to top left"
|
|
2278
|
+
};
|
|
2279
|
+
const dir = directions[value];
|
|
2280
|
+
if (!dir) return null;
|
|
2281
|
+
return {
|
|
2282
|
+
backgroundImage: `linear-gradient(${dir}, var(--tw-gradient-from, transparent), var(--tw-gradient-stops, transparent))`
|
|
2283
|
+
};
|
|
2284
|
+
},
|
|
2285
|
+
from: ({ value, isArbitrary }, { colors }) => {
|
|
2286
|
+
if (!isWeb) return null;
|
|
2287
|
+
const color = resolveColor(value, colors, isArbitrary);
|
|
2288
|
+
if (!color) return null;
|
|
2289
|
+
return {
|
|
2290
|
+
"--tw-gradient-from": color,
|
|
2291
|
+
"--tw-gradient-stops": `var(--tw-gradient-from), var(--tw-gradient-to, transparent)`
|
|
2292
|
+
};
|
|
2293
|
+
},
|
|
2294
|
+
via: ({ value, isArbitrary }, { colors }) => {
|
|
2295
|
+
if (!isWeb) return null;
|
|
2296
|
+
const color = resolveColor(value, colors, isArbitrary);
|
|
2297
|
+
if (!color) return null;
|
|
2298
|
+
return {
|
|
2299
|
+
"--tw-gradient-via": color,
|
|
2300
|
+
"--tw-gradient-stops": `var(--tw-gradient-from), var(--tw-gradient-via), var(--tw-gradient-to, transparent)`
|
|
2301
|
+
};
|
|
2302
|
+
},
|
|
2303
|
+
to: ({ value, isArbitrary }, { colors }) => {
|
|
2304
|
+
if (!isWeb) return null;
|
|
2305
|
+
const color = resolveColor(value, colors, isArbitrary);
|
|
2306
|
+
if (!color) return null;
|
|
2307
|
+
return { "--tw-gradient-to": color };
|
|
2308
|
+
},
|
|
2309
|
+
// ── Transform extras (web-only) ───────────────────────────────────────────
|
|
2310
|
+
"skew-x": ({ value, negative, isArbitrary }) => {
|
|
2311
|
+
const deg = isArbitrary ? value : `${(negative ? -1 : 1) * parseFloat(value)}deg`;
|
|
2312
|
+
if (!isArbitrary && isNaN(parseFloat(value))) return null;
|
|
2313
|
+
return isWeb ? { transform: `skewX(${deg})` } : { transform: [{ skewX: deg }] };
|
|
2314
|
+
},
|
|
2315
|
+
"skew-y": ({ value, negative, isArbitrary }) => {
|
|
2316
|
+
const deg = isArbitrary ? value : `${(negative ? -1 : 1) * parseFloat(value)}deg`;
|
|
2317
|
+
if (!isArbitrary && isNaN(parseFloat(value))) return null;
|
|
2318
|
+
return isWeb ? { transform: `skewY(${deg})` } : { transform: [{ skewY: deg }] };
|
|
2319
|
+
},
|
|
2320
|
+
// Arbitrary full transform string: transform-[rotate(45deg)_scale(1.5)]
|
|
2321
|
+
transform: ({ value, isArbitrary }) => {
|
|
2322
|
+
if (!isWeb) return null;
|
|
2323
|
+
if (isArbitrary) return { transform: value.replace(/_/g, " ") };
|
|
2324
|
+
if (value === "none") return { transform: "none" };
|
|
2325
|
+
return null;
|
|
2326
|
+
},
|
|
2327
|
+
// Transform origin
|
|
2328
|
+
origin: ({ value, isArbitrary }) => {
|
|
2329
|
+
if (!isWeb) return null;
|
|
2330
|
+
if (isArbitrary) return { transformOrigin: value.replace(/_/g, " ") };
|
|
2331
|
+
const origins = {
|
|
2332
|
+
center: "center",
|
|
2333
|
+
top: "top",
|
|
2334
|
+
"top-right": "top right",
|
|
2335
|
+
right: "right",
|
|
2336
|
+
"bottom-right": "bottom right",
|
|
2337
|
+
bottom: "bottom",
|
|
2338
|
+
"bottom-left": "bottom left",
|
|
2339
|
+
left: "left",
|
|
2340
|
+
"top-left": "top left"
|
|
2341
|
+
};
|
|
2342
|
+
return origins[value] ? { transformOrigin: origins[value] } : null;
|
|
2343
|
+
},
|
|
2344
|
+
// ── Text decoration advanced (web-only) ───────────────────────────────────
|
|
2345
|
+
decoration: ({ value, isArbitrary }, { colors }) => {
|
|
2346
|
+
if (!isWeb) return null;
|
|
2347
|
+
if (isArbitrary) {
|
|
2348
|
+
if (/^\d/.test(value) || value.startsWith("calc(")) return { textDecorationThickness: value };
|
|
2349
|
+
return { textDecorationColor: value };
|
|
2350
|
+
}
|
|
2351
|
+
const thickTokens = {
|
|
2352
|
+
auto: "auto",
|
|
2353
|
+
"from-font": "from-font",
|
|
2354
|
+
"0": "0px",
|
|
2355
|
+
"1": "1px",
|
|
2356
|
+
"2": "2px",
|
|
2357
|
+
"4": "4px",
|
|
2358
|
+
"8": "8px"
|
|
2359
|
+
};
|
|
2360
|
+
if (value in thickTokens) return { textDecorationThickness: thickTokens[value] };
|
|
2361
|
+
const styleTokens = {
|
|
2362
|
+
solid: "solid",
|
|
2363
|
+
dashed: "dashed",
|
|
2364
|
+
dotted: "dotted",
|
|
2365
|
+
double: "double",
|
|
2366
|
+
wavy: "wavy"
|
|
2367
|
+
};
|
|
2368
|
+
if (value in styleTokens) return { textDecorationStyle: styleTokens[value] };
|
|
2369
|
+
const color = resolveColor(value, colors, false);
|
|
2370
|
+
return color ? { textDecorationColor: color } : null;
|
|
2371
|
+
},
|
|
2372
|
+
"underline-offset": ({ value, isArbitrary }) => {
|
|
2373
|
+
if (!isWeb) return null;
|
|
2374
|
+
if (isArbitrary) return { textUnderlineOffset: value };
|
|
2375
|
+
const offsets = {
|
|
2376
|
+
auto: "auto",
|
|
2377
|
+
"0": "0px",
|
|
2378
|
+
"1": "1px",
|
|
2379
|
+
"2": "2px",
|
|
2380
|
+
"4": "4px",
|
|
2381
|
+
"8": "8px"
|
|
2382
|
+
};
|
|
2383
|
+
return offsets[value] ? { textUnderlineOffset: offsets[value] } : null;
|
|
2384
|
+
},
|
|
2385
|
+
// ── Outline extended (web-only) ───────────────────────────────────────────
|
|
2386
|
+
outline: ({ value, isArbitrary }, { colors }) => {
|
|
2387
|
+
if (!isWeb) return null;
|
|
2388
|
+
if (!value) return { outline: "2px solid transparent", outlineOffset: "2px" };
|
|
2389
|
+
if (value === "none") return { outline: "none", outlineOffset: "0" };
|
|
2390
|
+
if (isArbitrary) {
|
|
2391
|
+
if (/^\d/.test(value) || value.startsWith("calc(")) return { outlineWidth: value };
|
|
2392
|
+
return { outlineColor: value };
|
|
2393
|
+
}
|
|
2394
|
+
const widths = { "0": "0px", "1": "1px", "2": "2px", "4": "4px", "8": "8px" };
|
|
2395
|
+
if (value in widths) return { outlineWidth: widths[value] };
|
|
2396
|
+
const color = resolveColor(value, colors, false);
|
|
2397
|
+
return color ? { outlineColor: color } : null;
|
|
2398
|
+
},
|
|
2399
|
+
"outline-offset": ({ value, isArbitrary }) => {
|
|
2400
|
+
if (!isWeb) return null;
|
|
2401
|
+
if (isArbitrary) return { outlineOffset: value };
|
|
2402
|
+
const offsets = { "0": "0px", "1": "1px", "2": "2px", "4": "4px", "8": "8px" };
|
|
2403
|
+
return offsets[value] ? { outlineOffset: offsets[value] } : null;
|
|
2404
|
+
},
|
|
2405
|
+
// ── Columns (web-only) ─────────────────────────────────────────────────────
|
|
2406
|
+
columns: ({ value, isArbitrary }) => {
|
|
2407
|
+
if (!isWeb) return null;
|
|
2408
|
+
if (isArbitrary) return { columnCount: value };
|
|
2409
|
+
if (value === "auto") return { columnCount: "auto" };
|
|
2410
|
+
const n = parseInt(value, 10);
|
|
2411
|
+
if (!isNaN(n)) return { columnCount: n };
|
|
2412
|
+
const widths = {
|
|
2413
|
+
"3xs": "16rem",
|
|
2414
|
+
"2xs": "18rem",
|
|
2415
|
+
xs: "20rem",
|
|
2416
|
+
sm: "24rem",
|
|
2417
|
+
md: "28rem",
|
|
2418
|
+
lg: "32rem",
|
|
2419
|
+
xl: "36rem",
|
|
2420
|
+
"2xl": "42rem",
|
|
2421
|
+
"3xl": "48rem",
|
|
2422
|
+
"4xl": "56rem",
|
|
2423
|
+
"5xl": "64rem",
|
|
2424
|
+
"6xl": "72rem",
|
|
2425
|
+
"7xl": "80rem"
|
|
2426
|
+
};
|
|
2427
|
+
return widths[value] ? { columnWidth: widths[value] } : null;
|
|
2428
|
+
},
|
|
2429
|
+
// ── Mix blend mode (web-only) ─────────────────────────────────────────────
|
|
2430
|
+
"mix-blend": ({ value }) => {
|
|
2431
|
+
if (!isWeb) return null;
|
|
2432
|
+
const modes = [
|
|
2433
|
+
"normal",
|
|
2434
|
+
"multiply",
|
|
2435
|
+
"screen",
|
|
2436
|
+
"overlay",
|
|
2437
|
+
"darken",
|
|
2438
|
+
"lighten",
|
|
2439
|
+
"color-dodge",
|
|
2440
|
+
"color-burn",
|
|
2441
|
+
"hard-light",
|
|
2442
|
+
"soft-light",
|
|
2443
|
+
"difference",
|
|
2444
|
+
"exclusion",
|
|
2445
|
+
"hue",
|
|
2446
|
+
"saturation",
|
|
2447
|
+
"color",
|
|
2448
|
+
"luminosity",
|
|
2449
|
+
"plus-lighter"
|
|
2450
|
+
];
|
|
2451
|
+
return modes.includes(value) ? { mixBlendMode: value } : null;
|
|
2452
|
+
},
|
|
2453
|
+
// ── Will-change (web-only) ─────────────────────────────────────────────────
|
|
2454
|
+
"will-change": ({ value, isArbitrary }) => {
|
|
2455
|
+
if (!isWeb) return null;
|
|
2456
|
+
if (isArbitrary) return { willChange: value.replace(/_/g, ", ") };
|
|
2457
|
+
const presets = {
|
|
2458
|
+
auto: "auto",
|
|
2459
|
+
scroll: "scroll-position",
|
|
2460
|
+
contents: "contents",
|
|
2461
|
+
transform: "transform"
|
|
2462
|
+
};
|
|
2463
|
+
return presets[value] ? { willChange: presets[value] } : null;
|
|
2464
|
+
},
|
|
2465
|
+
// ── Divide (child combinator CSS, web-only) ───────────────────────────────
|
|
2466
|
+
// These return special __divide* markers that resolver.ts converts to
|
|
2467
|
+
// .cls > * + * { border-... } CSS rules. No inline style is applied.
|
|
2468
|
+
"divide-x": ({ value, isArbitrary }) => {
|
|
2469
|
+
if (!isWeb) return null;
|
|
2470
|
+
if (value === "reverse") return null;
|
|
2471
|
+
if (!value) return { __divideX: 1 };
|
|
2472
|
+
const n = parseFloat(value);
|
|
2473
|
+
return isNaN(n) ? null : { __divideX: n };
|
|
2474
|
+
},
|
|
2475
|
+
"divide-y": ({ value, isArbitrary }) => {
|
|
2476
|
+
if (!isWeb) return null;
|
|
2477
|
+
if (value === "reverse") return null;
|
|
2478
|
+
if (!value) return { __divideY: 1 };
|
|
2479
|
+
const n = parseFloat(value);
|
|
2480
|
+
return isNaN(n) ? null : { __divideY: n };
|
|
2481
|
+
},
|
|
2482
|
+
divide: ({ value, isArbitrary }, { colors }) => {
|
|
2483
|
+
if (!isWeb) return null;
|
|
2484
|
+
if (isArbitrary) return { __divideColor: value };
|
|
2485
|
+
const styleTokens = {
|
|
2486
|
+
solid: "solid",
|
|
2487
|
+
dashed: "dashed",
|
|
2488
|
+
dotted: "dotted",
|
|
2489
|
+
double: "double",
|
|
2490
|
+
none: "none"
|
|
2491
|
+
};
|
|
2492
|
+
if (value in styleTokens) return { __divideStyle: styleTokens[value] };
|
|
2493
|
+
const color = resolveColor(value, colors, false);
|
|
2494
|
+
return color ? { __divideColor: color } : null;
|
|
2495
|
+
},
|
|
2496
|
+
// ── Text shadow (cross-platform: iOS, Android, web) ─────────────────────
|
|
2497
|
+
// Named presets give cross-platform shadow; arbitrary is web-only.
|
|
2498
|
+
"text-shadow": ({ value, isArbitrary }, { colors }) => {
|
|
2499
|
+
if (value === "none") {
|
|
2500
|
+
return isWeb ? { textShadow: "none" } : { textShadowColor: "transparent", textShadowOffset: { width: 0, height: 0 }, textShadowRadius: 0 };
|
|
2501
|
+
}
|
|
2502
|
+
const webPresets = {
|
|
2503
|
+
"": "0 2px 4px rgba(0,0,0,0.3)",
|
|
2504
|
+
sm: "0 1px 2px rgba(0,0,0,0.3)",
|
|
2505
|
+
md: "0 4px 6px rgba(0,0,0,0.3)",
|
|
2506
|
+
lg: "0 8px 16px rgba(0,0,0,0.5)",
|
|
2507
|
+
xl: "0 16px 32px rgba(0,0,0,0.5)"
|
|
2508
|
+
};
|
|
2509
|
+
const nativePresets = {
|
|
2510
|
+
"": { textShadowColor: "rgba(0,0,0,0.3)", textShadowOffset: { width: 0, height: 2 }, textShadowRadius: 4 },
|
|
2511
|
+
sm: { textShadowColor: "rgba(0,0,0,0.3)", textShadowOffset: { width: 0, height: 1 }, textShadowRadius: 2 },
|
|
2512
|
+
md: { textShadowColor: "rgba(0,0,0,0.3)", textShadowOffset: { width: 0, height: 4 }, textShadowRadius: 6 },
|
|
2513
|
+
lg: { textShadowColor: "rgba(0,0,0,0.5)", textShadowOffset: { width: 0, height: 8 }, textShadowRadius: 16 },
|
|
2514
|
+
xl: { textShadowColor: "rgba(0,0,0,0.5)", textShadowOffset: { width: 0, height: 16 }, textShadowRadius: 32 }
|
|
2515
|
+
};
|
|
2516
|
+
if (value in webPresets) {
|
|
2517
|
+
if (isWeb) return { textShadow: webPresets[value] };
|
|
2518
|
+
return nativePresets[value] ?? null;
|
|
2519
|
+
}
|
|
2520
|
+
if (isArbitrary) {
|
|
2521
|
+
return isWeb ? { textShadow: value.replace(/_/g, " ") } : null;
|
|
2522
|
+
}
|
|
2523
|
+
const color = resolveColor(value, colors, false);
|
|
2524
|
+
if (color) {
|
|
2525
|
+
return isWeb ? { textShadow: `0 2px 4px ${color}` } : { textShadowColor: color };
|
|
2526
|
+
}
|
|
2527
|
+
return null;
|
|
2528
|
+
},
|
|
2529
|
+
// ── Perspective transform (cross-platform: iOS, Android, web) ────────────
|
|
2530
|
+
perspective: ({ value, isArbitrary }) => {
|
|
2531
|
+
if (isArbitrary) {
|
|
2532
|
+
const numPx = parseFloat(value);
|
|
2533
|
+
if (isWeb) return { transform: `perspective(${value})` };
|
|
2534
|
+
return isNaN(numPx) ? null : { transform: [{ perspective: numPx }] };
|
|
2535
|
+
}
|
|
2536
|
+
if (value === "none") return isWeb ? { transform: "none" } : null;
|
|
2537
|
+
const n = parseFloat(value);
|
|
2538
|
+
if (isNaN(n)) return null;
|
|
2539
|
+
return isWeb ? { transform: `perspective(${n}px)` } : { transform: [{ perspective: n }] };
|
|
2540
|
+
},
|
|
2541
|
+
// ── Tint color (native-only, for Image and icon components) ──────────────
|
|
2542
|
+
tint: ({ value, isArbitrary }, { colors }) => {
|
|
2543
|
+
if (isWeb) return null;
|
|
2544
|
+
const color = resolveColor(value, colors, isArbitrary);
|
|
2545
|
+
return color ? { tintColor: color } : null;
|
|
2546
|
+
},
|
|
2547
|
+
// ── Size shorthand (sets width AND height in one utility) ────────────────
|
|
2548
|
+
size: ({ value, isArbitrary }, { spacing }) => {
|
|
2549
|
+
const v = resolveSizing(value, spacing, isArbitrary);
|
|
2550
|
+
return v !== null ? { width: v, height: v } : null;
|
|
2551
|
+
},
|
|
2552
|
+
// ── Animations (CSS keyframe animations, web-only) ────────────────────────
|
|
2553
|
+
// Each variant injects a @keyframes rule once via the __keyframe marker.
|
|
2554
|
+
// resolver.ts detects __keyframe, injects the rule, then strips the marker
|
|
2555
|
+
// so it never reaches element inline styles.
|
|
2556
|
+
animate: ({ value, isArbitrary }) => {
|
|
2557
|
+
if (!isWeb) return null;
|
|
2558
|
+
if (isArbitrary) return { animation: value.replace(/_/g, " ") };
|
|
2559
|
+
const defs = {
|
|
2560
|
+
none: { animation: "none" },
|
|
2561
|
+
spin: {
|
|
2562
|
+
animation: "kb-spin 1s linear infinite",
|
|
2563
|
+
__keyframe: "@keyframes kb-spin { from { transform: rotate(0deg) } to { transform: rotate(360deg) } }"
|
|
2564
|
+
},
|
|
2565
|
+
ping: {
|
|
2566
|
+
animation: "kb-ping 1s cubic-bezier(0,0,0.2,1) infinite",
|
|
2567
|
+
__keyframe: "@keyframes kb-ping { 75%, 100% { transform: scale(2); opacity: 0 } }"
|
|
2568
|
+
},
|
|
2569
|
+
pulse: {
|
|
2570
|
+
animation: "kb-pulse 2s cubic-bezier(0.4,0,0.6,1) infinite",
|
|
2571
|
+
__keyframe: "@keyframes kb-pulse { 0%, 100% { opacity: 1 } 50% { opacity: .5 } }"
|
|
2572
|
+
},
|
|
2573
|
+
bounce: {
|
|
2574
|
+
animation: "kb-bounce 1s infinite",
|
|
2575
|
+
__keyframe: "@keyframes kb-bounce { 0%, 100% { transform: translateY(-25%); animation-timing-function: cubic-bezier(0.8,0,1,1) } 50% { transform: none; animation-timing-function: cubic-bezier(0,0,0.2,1) } }"
|
|
2576
|
+
}
|
|
2577
|
+
};
|
|
2578
|
+
const def = defs[value];
|
|
2579
|
+
return def ? def : null;
|
|
2580
|
+
},
|
|
2581
|
+
// ── Line-clamp (web-only) ─────────────────────────────────────────────────
|
|
2582
|
+
"line-clamp": ({ value }) => {
|
|
2583
|
+
if (!isWeb) return null;
|
|
2584
|
+
if (value === "none") return { overflow: "visible", display: "block", WebkitLineClamp: "unset" };
|
|
2585
|
+
const n = parseInt(value, 10);
|
|
2586
|
+
if (isNaN(n) || n < 1) return null;
|
|
2587
|
+
return {
|
|
2588
|
+
overflow: "hidden",
|
|
2589
|
+
display: "-webkit-box",
|
|
2590
|
+
WebkitBoxOrient: "vertical",
|
|
2591
|
+
WebkitLineClamp: n
|
|
2592
|
+
};
|
|
2593
|
+
},
|
|
2594
|
+
// ── Caret color (web-only) ────────────────────────────────────────────────
|
|
2595
|
+
caret: ({ value, isArbitrary }, { colors }) => {
|
|
2596
|
+
if (!isWeb) return null;
|
|
2597
|
+
if (value === "auto" || value === "transparent") return { caretColor: value };
|
|
2598
|
+
const color = resolveColor(value, colors, isArbitrary);
|
|
2599
|
+
return color ? { caretColor: color } : null;
|
|
2600
|
+
},
|
|
2601
|
+
// ── Accent color (web-only) ───────────────────────────────────────────────
|
|
2602
|
+
accent: ({ value, isArbitrary }, { colors }) => {
|
|
2603
|
+
if (!isWeb) return null;
|
|
2604
|
+
if (value === "auto") return { accentColor: "auto" };
|
|
2605
|
+
const color = resolveColor(value, colors, isArbitrary);
|
|
2606
|
+
return color ? { accentColor: color } : null;
|
|
2607
|
+
},
|
|
1737
2608
|
// ── Flex ───────────────────────────────────────────────────────────────────
|
|
1738
2609
|
flex: ({ value, isArbitrary }, { flex }) => {
|
|
1739
2610
|
if (!value) return { display: "flex" };
|
|
@@ -2014,6 +2885,9 @@ function clearPluginUtilities() {
|
|
|
2014
2885
|
function getPluginStandaloneMap() {
|
|
2015
2886
|
return PLUGIN_STANDALONE;
|
|
2016
2887
|
}
|
|
2888
|
+
function isKnownUtility(utility) {
|
|
2889
|
+
return utility in STANDALONE || utility in RESOLVERS || utility in PLUGIN_STANDALONE || utility in PLUGIN_RESOLVERS;
|
|
2890
|
+
}
|
|
2017
2891
|
|
|
2018
2892
|
// src/core/responsiveStore.ts
|
|
2019
2893
|
var RESPONSIVE_KEY = "__kbach_responsive__";
|
|
@@ -2086,7 +2960,14 @@ var MODIFIER_TO_PSEUDO = {
|
|
|
2086
2960
|
"not-pressed": ":not(:active)",
|
|
2087
2961
|
"not-disabled": ":not(:disabled)",
|
|
2088
2962
|
"not-checked": ":not(:checked)",
|
|
2089
|
-
"not-visited": ":not(:visited)"
|
|
2963
|
+
"not-visited": ":not(:visited)",
|
|
2964
|
+
// Pseudo-elements (CSS-injection only; never applied as inline styles)
|
|
2965
|
+
before: "::before",
|
|
2966
|
+
after: "::after",
|
|
2967
|
+
selection: "::selection",
|
|
2968
|
+
"first-letter": "::first-letter",
|
|
2969
|
+
"first-line": "::first-line",
|
|
2970
|
+
marker: "::marker"
|
|
2090
2971
|
};
|
|
2091
2972
|
var GROUP_PEER_PREFIX = {
|
|
2092
2973
|
"group-hover": ".group:hover",
|
|
@@ -2096,12 +2977,34 @@ var GROUP_PEER_PREFIX = {
|
|
|
2096
2977
|
};
|
|
2097
2978
|
var MODE_MODS = /* @__PURE__ */ new Set(["dark", "light", "not-dark", "not-light"]);
|
|
2098
2979
|
var RESPONSIVE_MODS = /* @__PURE__ */ new Set(["sm", "md", "lg", "xl", "2xl"]);
|
|
2099
|
-
|
|
2100
|
-
|
|
2980
|
+
var PRINT_MODS = /* @__PURE__ */ new Set(["print"]);
|
|
2981
|
+
function buildDivideDecls(styles) {
|
|
2982
|
+
const parts = [];
|
|
2983
|
+
if ("__divideX" in styles) {
|
|
2984
|
+
const w = Number(styles.__divideX);
|
|
2985
|
+
parts.push(`border-left-width: ${w}px`);
|
|
2986
|
+
parts.push("border-right-width: 0px");
|
|
2987
|
+
}
|
|
2988
|
+
if ("__divideY" in styles) {
|
|
2989
|
+
const w = Number(styles.__divideY);
|
|
2990
|
+
parts.push(`border-top-width: ${w}px`);
|
|
2991
|
+
parts.push("border-bottom-width: 0px");
|
|
2992
|
+
}
|
|
2993
|
+
if ("__divideColor" in styles) parts.push(`border-color: ${String(styles.__divideColor)}`);
|
|
2994
|
+
if ("__divideStyle" in styles) parts.push(`border-style: ${String(styles.__divideStyle)}`);
|
|
2995
|
+
return parts.join("; ");
|
|
2996
|
+
}
|
|
2997
|
+
function injectClassRule(cls, bucketKey, styles, darkMode, important = false) {
|
|
2998
|
+
if ("__keyframe" in styles && typeof styles.__keyframe === "string") {
|
|
2999
|
+
injectRule(styles.__keyframe);
|
|
3000
|
+
}
|
|
3001
|
+
const isDivide = "__divideX" in styles || "__divideY" in styles || "__divideColor" in styles || "__divideStyle" in styles;
|
|
3002
|
+
const cssDecls = isDivide ? buildDivideDecls(styles) : styleValueToCSS(styles, important);
|
|
2101
3003
|
if (!cssDecls) return;
|
|
2102
3004
|
const escaped = escapeCSSSelector(cls);
|
|
3005
|
+
const childSuffix = isDivide ? " > * + *" : "";
|
|
2103
3006
|
if (bucketKey === "base") {
|
|
2104
|
-
injectRule(`.${escaped} { ${cssDecls} }`);
|
|
3007
|
+
injectRule(`.${escaped}${childSuffix} { ${cssDecls} }`);
|
|
2105
3008
|
return;
|
|
2106
3009
|
}
|
|
2107
3010
|
const mods = bucketKey.split(":");
|
|
@@ -2109,10 +3012,11 @@ function injectClassRule(cls, bucketKey, styles, darkMode) {
|
|
|
2109
3012
|
const nonResponsiveMods = mods.filter((m) => !RESPONSIVE_MODS.has(m));
|
|
2110
3013
|
const hasDark = nonResponsiveMods.includes("dark") || nonResponsiveMods.includes("not-light");
|
|
2111
3014
|
const hasLight = nonResponsiveMods.includes("light") || nonResponsiveMods.includes("not-dark");
|
|
3015
|
+
const hasPrint = nonResponsiveMods.includes("print");
|
|
2112
3016
|
const ancestorMods = nonResponsiveMods.filter((m) => m in GROUP_PEER_PREFIX);
|
|
2113
|
-
const pseudoMods = nonResponsiveMods.filter((m) => !MODE_MODS.has(m) && !(m in GROUP_PEER_PREFIX));
|
|
3017
|
+
const pseudoMods = nonResponsiveMods.filter((m) => !MODE_MODS.has(m) && !(m in GROUP_PEER_PREFIX) && !PRINT_MODS.has(m));
|
|
2114
3018
|
const pseudoSuffix = pseudoMods.map((p) => MODIFIER_TO_PSEUDO[p] ?? `:${p}`).join("");
|
|
2115
|
-
const elementSelector = `.${escaped}${pseudoSuffix}`;
|
|
3019
|
+
const elementSelector = `.${escaped}${pseudoSuffix}${childSuffix}`;
|
|
2116
3020
|
const ancestorPrefix = ancestorMods.length ? ancestorMods.map((m) => GROUP_PEER_PREFIX[m]).join(" ") + " " : "";
|
|
2117
3021
|
const selector = `${ancestorPrefix}${elementSelector}`;
|
|
2118
3022
|
let rule;
|
|
@@ -2135,6 +3039,9 @@ function injectClassRule(cls, bucketKey, styles, darkMode) {
|
|
|
2135
3039
|
} else {
|
|
2136
3040
|
rule = `${selector} { ${cssDecls} }`;
|
|
2137
3041
|
}
|
|
3042
|
+
if (hasPrint) {
|
|
3043
|
+
rule = `@media print { ${rule} }`;
|
|
3044
|
+
}
|
|
2138
3045
|
if (responsiveMods.length > 0) {
|
|
2139
3046
|
const screens = getGlobalScreens();
|
|
2140
3047
|
const minWidth = Math.max(...responsiveMods.map((m) => screens[m] ?? 0));
|
|
@@ -2152,7 +3059,19 @@ var RN_ONLY_PROPS = /* @__PURE__ */ new Set([
|
|
|
2152
3059
|
"elevation",
|
|
2153
3060
|
"includeFontPadding",
|
|
2154
3061
|
"textAlignVertical",
|
|
2155
|
-
"writingDirection"
|
|
3062
|
+
"writingDirection",
|
|
3063
|
+
// Text shadow native props — web uses the textShadow CSS shorthand instead
|
|
3064
|
+
"textShadowColor",
|
|
3065
|
+
"textShadowOffset",
|
|
3066
|
+
"textShadowRadius",
|
|
3067
|
+
// tintColor is native-only (Image/icon tinting)
|
|
3068
|
+
"tintColor",
|
|
3069
|
+
// Internal markers — handled specially, never serialized as CSS props
|
|
3070
|
+
"__divideX",
|
|
3071
|
+
"__divideY",
|
|
3072
|
+
"__divideColor",
|
|
3073
|
+
"__divideStyle",
|
|
3074
|
+
"__keyframe"
|
|
2156
3075
|
]);
|
|
2157
3076
|
var CSS_UNITLESS = /* @__PURE__ */ new Set([
|
|
2158
3077
|
"opacity",
|
|
@@ -2170,7 +3089,7 @@ var CSS_UNITLESS = /* @__PURE__ */ new Set([
|
|
|
2170
3089
|
"gridRowStart",
|
|
2171
3090
|
"gridRowEnd"
|
|
2172
3091
|
]);
|
|
2173
|
-
function styleValueToCSS(styles) {
|
|
3092
|
+
function styleValueToCSS(styles, forceImportant = false) {
|
|
2174
3093
|
return Object.entries(styles).filter(
|
|
2175
3094
|
([prop, v]) => v !== void 0 && v !== null && typeof v !== "object" && !RN_ONLY_PROPS.has(prop)
|
|
2176
3095
|
).map(([prop, val]) => {
|
|
@@ -2181,8 +3100,8 @@ function styleValueToCSS(styles) {
|
|
|
2181
3100
|
} else {
|
|
2182
3101
|
cssVal = String(val);
|
|
2183
3102
|
}
|
|
2184
|
-
const
|
|
2185
|
-
return `${cssProp}: ${cssVal}${
|
|
3103
|
+
const imp = forceImportant || prop === "display" && (cssVal === "grid" || cssVal === "inline-grid") || prop === "position" && (cssVal === "sticky" || cssVal === "fixed" || cssVal === "static") ? " !important" : "";
|
|
3104
|
+
return `${cssProp}: ${cssVal}${imp}`;
|
|
2186
3105
|
}).join("; ");
|
|
2187
3106
|
}
|
|
2188
3107
|
function camelToKebab(str) {
|
|
@@ -2197,18 +3116,23 @@ function resolve(classString, theme, darkMode = "attribute") {
|
|
|
2197
3116
|
const injectQueue = [];
|
|
2198
3117
|
for (const parsed of parsedClasses) {
|
|
2199
3118
|
const styles = resolveUtility(parsed, theme);
|
|
2200
|
-
if (!styles)
|
|
3119
|
+
if (!styles) {
|
|
3120
|
+
if (process.env.NODE_ENV !== "production" && !parsed.isArbitrary && !isKnownUtility(parsed.utility)) {
|
|
3121
|
+
console.warn(`[kbach] Unknown utility "${parsed.utility}" in class "${parsed.original}"`);
|
|
3122
|
+
}
|
|
3123
|
+
continue;
|
|
3124
|
+
}
|
|
2201
3125
|
const bucketKey = parsed.modifiers.length === 0 ? "base" : parsed.modifiers.join(":");
|
|
2202
3126
|
if (!result[bucketKey]) result[bucketKey] = {};
|
|
2203
3127
|
Object.assign(result[bucketKey], styles);
|
|
2204
3128
|
if (typeof document !== "undefined") {
|
|
2205
|
-
injectQueue.push({ cls: parsed.original, bucketKey, styles });
|
|
3129
|
+
injectQueue.push({ cls: parsed.original, bucketKey, styles, important: parsed.important });
|
|
2206
3130
|
}
|
|
2207
3131
|
}
|
|
2208
3132
|
styleCache.set(cacheKey, result);
|
|
2209
3133
|
if (typeof document !== "undefined") {
|
|
2210
|
-
for (const { cls, bucketKey, styles } of injectQueue) {
|
|
2211
|
-
injectClassRule(cls, bucketKey, styles, darkMode);
|
|
3134
|
+
for (const { cls, bucketKey, styles, important } of injectQueue) {
|
|
3135
|
+
injectClassRule(cls, bucketKey, styles, darkMode, important);
|
|
2212
3136
|
}
|
|
2213
3137
|
}
|
|
2214
3138
|
return result;
|
|
@@ -2535,6 +3459,11 @@ var InteractiveWrapper = (0, import_react3.forwardRef)(
|
|
|
2535
3459
|
const computedStyle = (0, import_react3.useMemo)(
|
|
2536
3460
|
() => {
|
|
2537
3461
|
const s = flatten(resolvedStyle, isDark, { pressed, hover: hovered, focus: focused }, breakpoints);
|
|
3462
|
+
delete s.__divideX;
|
|
3463
|
+
delete s.__divideY;
|
|
3464
|
+
delete s.__divideColor;
|
|
3465
|
+
delete s.__divideStyle;
|
|
3466
|
+
delete s.__keyframe;
|
|
2538
3467
|
if (typeof Component !== "string") {
|
|
2539
3468
|
if (s.display === "grid" || s.display === "inline-grid") delete s.display;
|
|
2540
3469
|
delete s.gridTemplateColumns;
|
|
@@ -2542,9 +3471,18 @@ var InteractiveWrapper = (0, import_react3.forwardRef)(
|
|
|
2542
3471
|
delete s.gridColumn;
|
|
2543
3472
|
delete s.gridRow;
|
|
2544
3473
|
delete s.gridArea;
|
|
3474
|
+
delete s.gridColumnStart;
|
|
3475
|
+
delete s.gridColumnEnd;
|
|
3476
|
+
delete s.gridRowStart;
|
|
3477
|
+
delete s.gridRowEnd;
|
|
2545
3478
|
delete s.gridAutoFlow;
|
|
2546
3479
|
delete s.gridAutoColumns;
|
|
2547
3480
|
delete s.gridAutoRows;
|
|
3481
|
+
delete s.placeItems;
|
|
3482
|
+
delete s.placeContent;
|
|
3483
|
+
delete s.justifyItems;
|
|
3484
|
+
delete s.placeSelf;
|
|
3485
|
+
delete s.justifySelf;
|
|
2548
3486
|
if (s.position === "sticky" || s.position === "fixed" || s.position === "static") {
|
|
2549
3487
|
delete s.position;
|
|
2550
3488
|
}
|
|
@@ -2592,6 +3530,7 @@ var DarkWrapper = import_react4.default.forwardRef(
|
|
|
2592
3530
|
const width = useConditionalWidth(needsWidth);
|
|
2593
3531
|
const breakpoints = needsWidth ? getActiveBreakpoints(width) : EMPTY_BREAKPOINTS;
|
|
2594
3532
|
const computedStyle = flatten(resolvedStyle, isDark, {}, breakpoints);
|
|
3533
|
+
stripInternalMarkers(computedStyle);
|
|
2595
3534
|
if (typeof Component !== "string") stripWebOnlyProps(computedStyle);
|
|
2596
3535
|
const finalStyle = styleProp ? Array.isArray(styleProp) ? Object.assign({}, computedStyle, ...styleProp) : { ...computedStyle, ...styleProp } : computedStyle;
|
|
2597
3536
|
const props = { ref, ...rest, style: finalStyle };
|
|
@@ -2599,6 +3538,13 @@ var DarkWrapper = import_react4.default.forwardRef(
|
|
|
2599
3538
|
}
|
|
2600
3539
|
);
|
|
2601
3540
|
DarkWrapper.displayName = "Kbach.DarkWrapper";
|
|
3541
|
+
function stripInternalMarkers(s) {
|
|
3542
|
+
delete s.__divideX;
|
|
3543
|
+
delete s.__divideY;
|
|
3544
|
+
delete s.__divideColor;
|
|
3545
|
+
delete s.__divideStyle;
|
|
3546
|
+
delete s.__keyframe;
|
|
3547
|
+
}
|
|
2602
3548
|
function stripWebOnlyProps(s) {
|
|
2603
3549
|
if (s.display === "grid" || s.display === "inline-grid") delete s.display;
|
|
2604
3550
|
delete s.gridTemplateColumns;
|
|
@@ -2606,9 +3552,18 @@ function stripWebOnlyProps(s) {
|
|
|
2606
3552
|
delete s.gridColumn;
|
|
2607
3553
|
delete s.gridRow;
|
|
2608
3554
|
delete s.gridArea;
|
|
3555
|
+
delete s.gridColumnStart;
|
|
3556
|
+
delete s.gridColumnEnd;
|
|
3557
|
+
delete s.gridRowStart;
|
|
3558
|
+
delete s.gridRowEnd;
|
|
2609
3559
|
delete s.gridAutoFlow;
|
|
2610
3560
|
delete s.gridAutoColumns;
|
|
2611
3561
|
delete s.gridAutoRows;
|
|
3562
|
+
delete s.placeItems;
|
|
3563
|
+
delete s.placeContent;
|
|
3564
|
+
delete s.justifyItems;
|
|
3565
|
+
delete s.placeSelf;
|
|
3566
|
+
delete s.justifySelf;
|
|
2612
3567
|
if (s.position === "sticky" || s.position === "fixed" || s.position === "static") {
|
|
2613
3568
|
delete s.position;
|
|
2614
3569
|
}
|
|
@@ -2682,6 +3637,57 @@ function mergeStyle(computed, userStyle) {
|
|
|
2682
3637
|
function makeElement(isStaticChildren, type, props, key) {
|
|
2683
3638
|
return (isStaticChildren ? import_jsx_runtime.jsxs : import_jsx_runtime.jsx)(type, props, key);
|
|
2684
3639
|
}
|
|
3640
|
+
function hasGridStyles(resolved) {
|
|
3641
|
+
for (const styles of Object.values(resolved)) {
|
|
3642
|
+
if (!styles) continue;
|
|
3643
|
+
if (styles.display === "grid" || styles.display === "inline-grid") return true;
|
|
3644
|
+
if ("gridTemplateColumns" in styles || "gridTemplateRows" in styles) return true;
|
|
3645
|
+
if ("gridColumn" in styles || "gridRow" in styles) return true;
|
|
3646
|
+
if ("gridColumnStart" in styles || "gridColumnEnd" in styles) return true;
|
|
3647
|
+
if ("gridRowStart" in styles || "gridRowEnd" in styles) return true;
|
|
3648
|
+
if ("gridAutoFlow" in styles || "gridAutoColumns" in styles || "gridAutoRows" in styles) return true;
|
|
3649
|
+
if ("placeItems" in styles || "placeContent" in styles || "justifyItems" in styles) return true;
|
|
3650
|
+
if ("placeSelf" in styles || "justifySelf" in styles) return true;
|
|
3651
|
+
}
|
|
3652
|
+
return false;
|
|
3653
|
+
}
|
|
3654
|
+
function hasWebPositionStyles(resolved) {
|
|
3655
|
+
for (const styles of Object.values(resolved)) {
|
|
3656
|
+
if (!styles) continue;
|
|
3657
|
+
if (styles.position === "sticky" || styles.position === "fixed" || styles.position === "static") return true;
|
|
3658
|
+
}
|
|
3659
|
+
return false;
|
|
3660
|
+
}
|
|
3661
|
+
function stripInternalMarkers2(s) {
|
|
3662
|
+
delete s.__divideX;
|
|
3663
|
+
delete s.__divideY;
|
|
3664
|
+
delete s.__divideColor;
|
|
3665
|
+
delete s.__divideStyle;
|
|
3666
|
+
delete s.__keyframe;
|
|
3667
|
+
}
|
|
3668
|
+
function stripWebOnlyInlineProps(s) {
|
|
3669
|
+
if (s.display === "grid" || s.display === "inline-grid") delete s.display;
|
|
3670
|
+
delete s.gridTemplateColumns;
|
|
3671
|
+
delete s.gridTemplateRows;
|
|
3672
|
+
delete s.gridColumn;
|
|
3673
|
+
delete s.gridRow;
|
|
3674
|
+
delete s.gridArea;
|
|
3675
|
+
delete s.gridColumnStart;
|
|
3676
|
+
delete s.gridColumnEnd;
|
|
3677
|
+
delete s.gridRowStart;
|
|
3678
|
+
delete s.gridRowEnd;
|
|
3679
|
+
delete s.gridAutoFlow;
|
|
3680
|
+
delete s.gridAutoColumns;
|
|
3681
|
+
delete s.gridAutoRows;
|
|
3682
|
+
delete s.placeItems;
|
|
3683
|
+
delete s.placeContent;
|
|
3684
|
+
delete s.justifyItems;
|
|
3685
|
+
delete s.placeSelf;
|
|
3686
|
+
delete s.justifySelf;
|
|
3687
|
+
if (s.position === "sticky" || s.position === "fixed" || s.position === "static") {
|
|
3688
|
+
delete s.position;
|
|
3689
|
+
}
|
|
3690
|
+
}
|
|
2685
3691
|
function processElement(type, rawProps, key, isStaticChildren) {
|
|
2686
3692
|
if (!rawProps) return (0, import_jsx_runtime.jsx)(type, null, key);
|
|
2687
3693
|
const { className, kb: kbProp, __kbachStyles, __kbachClasses } = rawProps;
|
|
@@ -2690,13 +3696,12 @@ function processElement(type, rawProps, key, isStaticChildren) {
|
|
|
2690
3696
|
return makeElement(isStaticChildren, type, rawProps, key);
|
|
2691
3697
|
}
|
|
2692
3698
|
const config = getConfig();
|
|
2693
|
-
const isOnWeb = typeof document !== "undefined" && classStr != null;
|
|
2694
|
-
const isGrdOnWeb = isOnWeb && /(?:^|\s)grd(?:\s|$)/.test(classStr);
|
|
2695
|
-
const hasWebPosition = isOnWeb && /(?:^|\s)(?:[\w-]+:)*(?:fixed|sticky)(?:\s|$)/.test(classStr);
|
|
2696
|
-
const actualType = isGrdOnWeb || hasWebPosition ? "div" : type;
|
|
2697
3699
|
const resolved = __kbachStyles ?? (classStr ? resolve(classStr, config.theme, config.darkMode) : {});
|
|
2698
3700
|
const { style: userStyle, ...passProps } = omitConsumed(rawProps);
|
|
2699
3701
|
const { interactive, modeOrResponsive } = bucketMods(resolved);
|
|
3702
|
+
const onWeb = typeof document !== "undefined";
|
|
3703
|
+
const needsDiv = onWeb && (hasGridStyles(resolved) || hasWebPositionStyles(resolved));
|
|
3704
|
+
const actualType = needsDiv ? "div" : type;
|
|
2700
3705
|
if (interactive) {
|
|
2701
3706
|
return (0, import_jsx_runtime.jsx)(InteractiveWrapper, {
|
|
2702
3707
|
Component: actualType,
|
|
@@ -2716,20 +3721,8 @@ function processElement(type, rawProps, key, isStaticChildren) {
|
|
|
2716
3721
|
}, key);
|
|
2717
3722
|
}
|
|
2718
3723
|
const computedStyle = flatten(resolved, false);
|
|
2719
|
-
|
|
2720
|
-
|
|
2721
|
-
delete computedStyle.gridTemplateColumns;
|
|
2722
|
-
delete computedStyle.gridTemplateRows;
|
|
2723
|
-
delete computedStyle.gridColumn;
|
|
2724
|
-
delete computedStyle.gridRow;
|
|
2725
|
-
delete computedStyle.gridArea;
|
|
2726
|
-
delete computedStyle.gridAutoFlow;
|
|
2727
|
-
delete computedStyle.gridAutoColumns;
|
|
2728
|
-
delete computedStyle.gridAutoRows;
|
|
2729
|
-
if (computedStyle.position === "sticky" || computedStyle.position === "fixed" || computedStyle.position === "static") {
|
|
2730
|
-
delete computedStyle.position;
|
|
2731
|
-
}
|
|
2732
|
-
}
|
|
3724
|
+
stripInternalMarkers2(computedStyle);
|
|
3725
|
+
if (typeof actualType !== "string") stripWebOnlyInlineProps(computedStyle);
|
|
2733
3726
|
const finalStyle = mergeStyle(computedStyle, userStyle);
|
|
2734
3727
|
return makeElement(isStaticChildren, actualType, {
|
|
2735
3728
|
...passProps,
|