@@ -1136,6 +1136,102 @@ test(
1136
1136
} ,
1137
1137
)
1138
1138
1139
+ test (
1140
+ 'migrate supports theme keys to custom variants' ,
1141
+ {
1142
+ fs : {
1143
+ 'package.json' : json `
1144
+ {
1145
+ "dependencies": {
1146
+ "tailwindcss": "^3",
1147
+ "@tailwindcss/upgrade": "workspace:^"
1148
+ }
1149
+ }
1150
+ ` ,
1151
+ 'tailwind.config.ts' : ts `
1152
+ export default {
1153
+ content: {
1154
+ relative: true,
1155
+ files: ['./src/**/*.html'],
1156
+ },
1157
+ theme: {
1158
+ extend: {
1159
+ supports: {
1160
+ // Automatically handled by bare values (using CSS variable as the value)
1161
+ foo: 'foo: var(--foo)', // parentheses are optional
1162
+ bar: '(bar: var(--bar))',
1163
+
1164
+ // Not automatically handled by bare values because names differ
1165
+ foo: 'bar: var(--foo)', // parentheses are optional
1166
+ bar: '(qux: var(--bar))',
1167
+
1168
+ // Custom
1169
+ grid: 'display: grid',
1170
+ },
1171
+ },
1172
+ },
1173
+ }
1174
+ ` ,
1175
+ 'src/input.css' : css `
1176
+ @tailwind base;
1177
+ @tailwind components;
1178
+ @tailwind utilities;
1179
+ ` ,
1180
+ } ,
1181
+ } ,
1182
+ async ( { exec, fs, expect } ) => {
1183
+ await exec ( 'npx @tailwindcss/upgrade' )
1184
+
1185
+ expect ( await fs . dumpFiles ( 'src/*.css' ) ) . toMatchInlineSnapshot ( `
1186
+ "
1187
+ --- src/input.css ---
1188
+ @import 'tailwindcss';
1189
+
1190
+ /*
1191
+ These variants have been migrated from your Tailwind CSS configuration file.
1192
+ Since they are custom variants, they will be sorted after all built-in variants.
1193
+
1194
+ This may result in elements appearing different if you were relying on the order of
1195
+ the variants in the CSS.
1196
+ */
1197
+ @custom-variant supports-foo {
1198
+ @supports (bar: var(--foo)) {
1199
+ @slot;
1200
+ }
1201
+ }
1202
+ @custom-variant supports-bar {
1203
+ @supports ((qux: var(--bar))) {
1204
+ @slot;
1205
+ }
1206
+ }
1207
+ @custom-variant supports-grid {
1208
+ @supports (display: grid) {
1209
+ @slot;
1210
+ }
1211
+ }
1212
+
1213
+ /*
1214
+ The default border color has changed to \`currentcolor\` in Tailwind CSS v4,
1215
+ so we've added these compatibility styles to make sure everything still
1216
+ looks the same as it did with Tailwind CSS v3.
1217
+
1218
+ If we ever want to remove these styles, we need to add an explicit border
1219
+ color utility to any element that depends on these defaults.
1220
+ */
1221
+ @layer base {
1222
+ *,
1223
+ ::after,
1224
+ ::before,
1225
+ ::backdrop,
1226
+ ::file-selector-button {
1227
+ border-color: var(--color-gray-200, currentcolor);
1228
+ }
1229
+ }
1230
+ "
1231
+ ` )
1232
+ } ,
1233
+ )
1234
+
1139
1235
describe ( 'border compatibility' , ( ) => {
1140
1236
test (
1141
1237
'migrate border compatibility' ,
0 commit comments