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