tailwindcss/packages
Robin Malfait 67d1849f34
Add CSS codemods for migrating @tailwind directives (#14411)
This PR adds CSS codemods for migrating existing `@tailwind` directives
to the new alternatives.

This PR has the ability to migrate the following cases:

---

Typical default usage of `@tailwind` directives in v3.

Input:
```css
@tailwind base;
@tailwind components;
@tailwind utilities;
```

Output:
```css
@import 'tailwindcss';
```

---

Similar as above, but always using `@import` instead of `@import`
directly.

Input:
```css
@import 'tailwindcss/base';
@import 'tailwindcss/components';
@import 'tailwindcss/utilities';
```

Output:
```css
@import 'tailwindcss';
```

---

When you are _only_ using `@tailwind base`:

Input:
```css
@tailwind base;
```

Output:
```css
@import 'tailwindcss/theme' layer(theme);
@import 'tailwindcss/preflight' layer(base);
```

---

When you are _only_ using `@tailwind utilities`:

Input:
```css
@tailwind utilities;
```

Output:
```css
@import 'tailwindcss/utilities' layer(utilities);
```

---

If the default order changes (aka, `@tailwind utilities` was defined
_before_ `@tailwind base`), then an additional `@layer` will be added to
the top to re-define the default order.

Input:
```css
@tailwind utilities;
@tailwind base;
```

Output:
```css
@layer theme, components, utilities, base;
@import 'tailwindcss';
```

---

When you are _only_ using `@tailwind base; @tailwind utilities;`:

Input:
```css
@tailwind base;
@tailwind utilities;
```

Output:
```css
@import 'tailwindcss';
```

We currently don't have a concept of `@tailwind components` in v4, so if
you are not using `@tailwind components`, we can expand to the default
`@import 'tailwindcss';` instead of the individual imports.

---

`@tailwind screens` and `@tailwind variants` are not supported/necessary
in v4, so we can safely remove them.

Input:
```css
@tailwind screens;
@tailwind variants;
```

Output:
```css
```
2024-09-18 22:40:23 +02:00
..
@tailwindcss-cli Release v4.0.0-alpha.24 (#14395) 2024-09-12 16:10:56 +02:00
@tailwindcss-node Release v4.0.0-alpha.24 (#14395) 2024-09-12 16:10:56 +02:00
@tailwindcss-postcss Don't override explicit leading-*, tracking-*, or font-{weight} utilities with font-size utility defaults (#14403) 2024-09-18 09:20:04 -04:00
@tailwindcss-standalone Release v4.0.0-alpha.24 (#14395) 2024-09-12 16:10:56 +02:00
@tailwindcss-upgrade Add CSS codemods for migrating @tailwind directives (#14411) 2024-09-18 22:40:23 +02:00
@tailwindcss-vite Release v4.0.0-alpha.24 (#14395) 2024-09-12 16:10:56 +02:00
internal-example-plugin Prefix internal modules with internal-* (#14074) 2024-07-29 10:58:07 -04:00
internal-postcss-fix-relative-paths Support loading config files via @config (#14239) 2024-09-02 18:03:16 +02:00
tailwindcss Add support for setting screens in JS config (#14415) 2024-09-18 16:56:03 +02:00
tsconfig.base.json introduce v4 codebase 2024-03-05 14:29:15 +01:00