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