@@ -1044,6 +1044,80 @@ test(
1044
1044
} ,
1045
1045
)
1046
1046
1047
+ test (
1048
+ 'migrate data theme keys to custom variants' ,
1049
+ {
1050
+ fs : {
1051
+ 'package.json' : json `
1052
+ {
1053
+ "dependencies": {
1054
+ "tailwindcss": "^3",
1055
+ "@tailwindcss/upgrade": "workspace:^"
1056
+ }
1057
+ }
1058
+ ` ,
1059
+ 'tailwind.config.ts' : ts `
1060
+ export default {
1061
+ content: {
1062
+ relative: true,
1063
+ files: ['./src/**/*.html'],
1064
+ },
1065
+ theme: {
1066
+ extend: {
1067
+ data: {
1068
+ // Automatically handled by bare values
1069
+ foo: 'foo',
1070
+
1071
+ // Not automatically handled by bare values because names differ
1072
+ bar: 'baz',
1073
+
1074
+ // Custom
1075
+ checked: 'ui~="checked"',
1076
+ },
1077
+ },
1078
+ },
1079
+ }
1080
+ ` ,
1081
+ 'src/input.css' : css `
1082
+ @tailwind base;
1083
+ @tailwind components;
1084
+ @tailwind utilities;
1085
+ ` ,
1086
+ } ,
1087
+ } ,
1088
+ async ( { exec, fs, expect } ) => {
1089
+ await exec ( 'npx @tailwindcss/upgrade' )
1090
+
1091
+ expect ( await fs . dumpFiles ( 'src/*.css' ) ) . toMatchInlineSnapshot ( `
1092
+ "
1093
+ --- src/input.css ---
1094
+ @import 'tailwindcss';
1095
+
1096
+ @custom-variant data-bar (&[data-baz]);
1097
+ @custom-variant data-checked (&[data-ui~="checked"]);
1098
+
1099
+ /*
1100
+ The default border color has changed to \`currentcolor\` in Tailwind CSS v4,
1101
+ so we've added these compatibility styles to make sure everything still
1102
+ looks the same as it did with Tailwind CSS v3.
1103
+
1104
+ If we ever want to remove these styles, we need to add an explicit border
1105
+ color utility to any element that depends on these defaults.
1106
+ */
1107
+ @layer base {
1108
+ *,
1109
+ ::after,
1110
+ ::before,
1111
+ ::backdrop,
1112
+ ::file-selector-button {
1113
+ border-color: var(--color-gray-200, currentcolor);
1114
+ }
1115
+ }
1116
+ "
1117
+ ` )
1118
+ } ,
1119
+ )
1120
+
1047
1121
describe ( 'border compatibility' , ( ) => {
1048
1122
test (
1049
1123
'migrate border compatibility' ,
0 commit comments