Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add * variant for targeting direct children #12551

Merged
merged 5 commits into from
Dec 9, 2023
Merged

Conversation

adamwathan
Copy link
Member

This PR adds a new * variant for targeting direct children of an element:

<nav class="*:underline">
  <a href="#">One</a>
  <a href="#">Two</a>
  <a href="#">Three</a>
</nav>

This can also be combined with other variants, such as hover:

<nav class="hover:*:underline">
  <a href="#">One</a>
  <a href="#">Two</a>
  <a href="#">Three</a>
</nav>

The above example would only add an underline to each link when each link is hovered, as per our documentation on stacked variants/modifiers.

Known limitations

One thing you'd probably expect to work that won't currently work is overriding a child selector style with a utility directly on the child itself:

<nav class="*:underline">
  <a href="#">One</a>
  <a href="#" class="no-underline">Two</a> <!-- Will still be underlined -->
  <a href="#">Three</a>
</nav>

This is because the generated selector for a child variant has the same specificity as a regular utility class, but appears later in the CSS file so it takes precedence.

We can reduce the specificity of this selector using :where:

:where(.\*\:underline) > * {
  text-decoration: underline
}

However this reduces the specificity 0,0,0 which is lower than the styles in Preflight, which means Preflight styles would now defeat child variant styles, which is no good.

This can be solved by taking advantage of the new proper CSS @layer rule, which ensures that rules in later layers always take precedence over rules in earlier layers, regardless of their specificity.

We don't want to do that in the v3.* series of Tailwind because it could be considered a breaking change due to the fact that Tailwind would stop working in browsers it currently works in, but we do intend to make this change for v4. So in v4, we can introduce the use of both :where() in the child variant, and native @layer rules which will make it possible to override child variants with utilities the way you'd expect.

We originally resisted adding this feature because of this limitation and because we didn't know what the best solution for it would be, but now that the correct solution is clear we feel comfortable introducing this feature despite the limitation because the path forward will not require drastically re-imagining the API or how the feature should work.

@louiss0
Copy link

louiss0 commented Dec 8, 2023

I prefer the word direct-children. The star is weird or dir-children.

@AhmedBaset
Copy link

>:underline is more indicative of direct children thant *:... which is used for "All". or as @louiss0 said children:.....

@dano2906
Copy link

dano2906 commented Dec 8, 2023

  • is confuse

@unlocomqx
Copy link

>:underline is more indicative of direct children thant *:... which is used for "All". or as @louiss0 said children:.....

I fear that one day, they will want to add a variant to target all children but * is already taken

@adamwathan
Copy link
Member Author

>:underline is more indicative of direct children thant *:... which is used for "All". or as @louiss0 said children:.....

I fear that one day, they will want to add a variant to target all children but * is already taken

Thought about this pretty hard before deciding on this API and I just don't see myself ever wanting to target all children ever. If that's ever needed though you can use an arbitrary variant [&_*] 👍

@IanMitchell
Copy link

Excited to see this, wanted something like this for a while :D.

Thought about this pretty hard before deciding on this API and I just don't see myself ever wanting to target all children ever. If that's ever needed though you can use an arbitrary variant [&_*] 👍

My two cents on the syntax - I think intuitively, if I was introduced to this selector while reading a codebase, I would see * and assume it was all children as opposed to direct children because of its meaning in CSS (and knowing Tailwind usually tries to match that pretty closely). Without knowing this syntax was an intentional choice, I'd likely initially think I had discovered a bug rather than question my understanding of it (until I read the docs a little more thouroughly).

Either way, stoked to see this ship!

@louiss0
Copy link

louiss0 commented Dec 8, 2023

>:underline is more indicative of direct children thant *:... which is used for "All". or as @louiss0 said children:.....

I fear that one day, they will want to add a variant to target all children but * is already taken

Thought about this pretty hard before deciding on this API and I just don't see myself ever wanting to target all children ever. If that's ever needed though you can use an arbitrary variant [&_*] 👍

I think you should do a poll. Please do the more I look at the star the more I cringe.
Seeing it in between hover like this is weird. hover:*:underline 👎

<nav class="hover:*:underline"></nav>

@brandonmcconnell
Copy link
Contributor

>:underline is more indicative of direct children thant *:... which is used for "All". or as @louiss0 said children:.....

I fear that one day, they will want to add a variant to target all children but * is already taken

Thought about this pretty hard before deciding on this API and I just don't see myself ever wanting to target all children ever. If that's ever needed though you can use an arbitrary variant [&_*]

@adamwathan I promise I’m not just trying to pick a fight here lol — imo using * to target direct children doesn’t feel super CSS-intuitive to me either. Even if you don’t think you’d ever need to target all children, I still feel that using > would be the more intuitive choice.

Just my 2¢ — a great value-add regardless 🙂

@adamwathan
Copy link
Member Author

For those questioning * and suggesting that implies all descendants, here's the selector for direct children:

.my-class > * {
  /* ... */
}

...and here's the one for all children:

.my-class * {
  /* ... */
}

The * isn't the part that determines if you are targeting all descendants or direct children — the combinator decides that, which is > for direct children and for all children:

https://developer.mozilla.org/en-US/docs/Web/CSS/Child_combinator
https://developer.mozilla.org/en-US/docs/Web/CSS/Descendant_combinator

So while it's definitely ambiguous, * is no more correct for all descendants than it is for direct children.

I'm not super keen on adding this to core unless we can keep the name really short, because even children is much longer than [&>*] which already works today. Personally don't love > because it almost looks like a mistake in your HTML because of how many other angle brackets there are and how angle brackets are generally balanced in HTML:

<div class=">:underline">

Just looks like a bug to my eyes, even though of course it's fine in reality.

@AlexVipond
Copy link
Contributor

AlexVipond commented Dec 9, 2023

TL;DR

  • Cool feature
  • I won't be using it because there are existing solutions that don't break code colocation the way this does
  • There's an opportunity to make the implementation even simpler using @scope (and waiting even longer for browser support 😅)

* is 100% the right choice for syntax here.

That said, there are downsides. This feature gives us our very first first-class way to break code colocation in Tailwind. (I don't consider arbitrary variants to be first-class, they're more clearly an escape hatch.) A two-character sequence *: will detach a complex CSS rule from the element it's added to, and attach its styling logic to direct children.

This also gives us our first variant (again, excluding arbitrary variants) that has nothing to do with element state. All other variants apply styles to an element based its state, or the state of an ancestor or sibling. This variant's behavior is arguably similar to after: and before: but since the only way to style ::after and ::before is via their "parent" element, the comparison isn't that close.

This is nitpicky and negligible for smaller use cases like the one in the original PR comment, but for larger cases, I'm hoping the community continues to reach for solutions that don't break code colocation:

  • Loops, OR
  • Extract a React/Vue/whatever component to keep the class string in one place, OR
  • Create a Tailwind component class to apply the set of styles, OR
  • Store repetitive class strings in variables that can be easily concatenated into multiple elements' class strings. Use editor features to easily view variable contents.

Here's an idea of how to implement this feature with @scope:

/*
Per the spec, this is 1 specificity point, although the current
Chrome Canary implementation seems to give it 2 specificity points.
*/
@scope (.\*\:text-blue-600) {
  :is(:scope > *) {
    @apply text-blue-600;
  }
}

@brandonmcconnell
Copy link
Contributor

@adamwathan & @AlexVipond Great thoughts all around. I appreciate the thoughts behind * and to me, it actually makes sense not as the * CCS uses but as a wildcard found in many languages and frameworks, including RegEx and soon Svelte.

I'm with it. 🚀

I'm not worried about the collocation concerns here, as we use [&>*] a ton in our codebase, and one could also argue that unnamed groups via the group variant also introduces a similar risk, but I think someone who knows what they're doing can greatly benefit from both.

@adamwathan adamwathan merged commit cb9c64a into master Dec 9, 2023
10 checks passed
@adamwathan adamwathan deleted the child-variant branch December 9, 2023 14:11
@MichaelAllenWarner
Copy link
Contributor

Thought about this pretty hard before deciding on this API and I just don't see myself ever wanting to target all children ever. If that's ever needed though you can use an arbitrary variant [&_*] 👍

I target all descendants in just about every project! Can give some use-cases if you're interested.

I also target all direct-children in just about every project, so I'm very used to both [&_*]: and [&>*]: at this point. As such, I have to agree with some of the other responses that >: would be the better choice for direct-children, and *: for all descendants.

@brandonmcconnell
Copy link
Contributor

@MichaelAllenWarner I was in the same party, but I couldn't come up with any practical examples for targeting all descendants. I would love to see some. 🙂

@MichaelAllenWarner
Copy link
Contributor

MichaelAllenWarner commented Dec 11, 2023

@brandonmcconnell

Most common use-case is when I'm setting up a background image that will involve a real img element. In this scenario, I need to account for the possibility that the CMS's image-mechanism may include wrapping elements, like a picture or even several div layers (ever work with Drupal?). So in my template, I'll usually do something like this to ensure that the img gets sized correctly:

<div class="absolute inset-0 [&_*]:w-full [&_*]:h-full [&_img]:object-cover">
  {{ imageMaybeWithSomeWrappers }}
</div>

(though I suppose I could just do [&_img]:absolute [&_img]:inset-0 [&_img]:object-cover). Sometimes there are other rules that I need to ensure get applied to each wrapper, too, but usually it's just the full-size.

Another one I often use is break-inside-avoid [&_*]:break-inside-avoid (for column layouts), because I've found that break-inside-avoid alone doesn't always suffice in Safari.

If I've got a component with multiple elements that have to transition simultaneously on hover, then I might do [&_*]:duration-150, say (if the needed value differs from what I've configured as the default).

Those are the main examples I can think of right now. There are some other non-inherited properties that I do target all descendants for (like text-underline-offset, or scroll-margin-top if I've got a sticky header), but usually these are global rules that go in my Tailwind config instead of in-template utility classes.

thecrypticace pushed a commit that referenced this pull request Dec 11, 2023
* add `*` as child variant

* add `*` as allowed variant character

* update test to reflect Lightning CSS output

* add `childVariant` test

* Update changelog

---------

Co-authored-by: Adam Wathan <[email protected]>
Co-authored-by: Robin Malfait <[email protected]>
Co-authored-by: Gregor Kaczmarczyk <[email protected]>
@gukj
Copy link

gukj commented Dec 14, 2023

Not sure I'm missing something, but what's wrong with just using children:, direct-children:, all-children: or even direct:? *: looks very non-tailwind to my eyes.

@brandonmcconnell
Copy link
Contributor

brandonmcconnell commented Dec 14, 2023

@gukj I think all of those, even direct longer than even (longer than [&>*]), where sometimes you need to attach several styles to all children, so the short-form * makes this easier, e.g.: *:inline-flex *:items-center *:justify-start

This is just my guess

@gukj
Copy link

gukj commented Dec 14, 2023

@brandonmcconnell I think it's more about trying to look like the css it's representing. Otherwise (I would argue) it makes zero sense for something as uncommon as this to get *: and for something as common as a11y handling transitions to use prefers-reduced-motion:.

If the aim was for tailwind to be short rather than readable, I would maybe agree.

@brandonmcconnell
Copy link
Contributor

@gukj Fair enough, though like some here, myself included, have pointed out – if the goal was for this to look like the logic in CSS it represented, it would have used >: 🤷🏻‍♂️

Seems like it's more than that

@gukj
Copy link

gukj commented Dec 15, 2023

@brandonmcconnell True, true. If the reasoning really is saving a couple characters in case someone needs to apply multiple classes to children, I would much rather see some kind of multi-target syntax. Something like modifier:(class1 class2 class3) instead of modifier:class1 modifier:class2 modifier:class3 would save so much typing.

> I'm against mainly because it'll mess with vim / to have a bunch of trailing brackets. Sorry if I'm coming across grumpy here – I promise I'm not 😅

@brandonmcconnell
Copy link
Contributor

@gukj Hence https://github.com/brandonmcconnell/multitool-for-tailwindcss 😉
(only meant to be used in rare scenarios with unique utilities so as to not inflate CSS file sizes)

@gukj
Copy link

gukj commented Dec 15, 2023

@brandonmcconnell Where have you been all my life 😍

@brandonmcconnell
Copy link
Contributor

brandonmcconnell commented Dec 15, 2023

@gukj spamming tailwind labs with pull requests and crafting custom TailwindCSS plugins 😆

thecrypticace pushed a commit that referenced this pull request Dec 18, 2023
* add `*` as child variant

* add `*` as allowed variant character

* update test to reflect Lightning CSS output

* add `childVariant` test

* Update changelog

---------

Co-authored-by: Adam Wathan <[email protected]>
Co-authored-by: Robin Malfait <[email protected]>
Co-authored-by: Gregor Kaczmarczyk <[email protected]>
CrispyBaguette pushed a commit to CrispyBaguette/wasm-palette-converter that referenced this pull request Nov 8, 2024
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [tailwindcss](https://tailwindcss.com) ([source](https://github.com/tailwindlabs/tailwindcss)) | devDependencies | minor | [`3.0.24` -> `3.4.14`](https://renovatebot.com/diffs/npm/tailwindcss/3.0.24/3.4.14) |

---

### Release Notes

<details>
<summary>tailwindlabs/tailwindcss (tailwindcss)</summary>

### [`v3.4.14`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.4.14)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.4.13...v3.4.14)

##### Fixed

-   Don't set `display: none` on elements that use `hidden="until-found"` ([#&#8203;14625](https://github.com/tailwindlabs/tailwindcss/pull/14625))

### [`v3.4.13`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.4.13)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.4.12...v3.4.13)

##### Fixed

-   Improve source glob verification performance ([#&#8203;14481](https://github.com/tailwindlabs/tailwindcss/pull/14481))

### [`v3.4.12`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.4.12)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.4.11...v3.4.12)

##### Fixed

-   Ensure using `@apply` with utilities that use `@defaults` works with rules defined in the base layer when using `optimizeUniversalDefaults` ([#&#8203;14427](https://github.com/tailwindlabs/tailwindcss/pull/14427))

### [`v3.4.11`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.4.11)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.4.10...v3.4.11)

##### Fixed

-   Allow `anchor-size(…)` in arbitrary values ([#&#8203;14393](https://github.com/tailwindlabs/tailwindcss/pull/14393))

### [`v3.4.10`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.4.10)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.4.9...v3.4.10)

##### Fixed

-   Bump versions of plugins in the Standalone CLI ([#&#8203;14185](https://github.com/tailwindlabs/tailwindcss/pull/14185))

### [`v3.4.9`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.4.9)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.4.8...v3.4.9)

##### Fixed

-   No longer warns when broad glob patterns are detecting `vendor` folders

### [`v3.4.8`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.4.8)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.4.7...v3.4.8)

##### Fixed

-   Fix minification when using nested CSS ([#&#8203;14105](https://github.com/tailwindlabs/tailwindcss/pull/14105))
-   Warn when broad glob patterns are used in the content configuration ([#&#8203;14140](https://github.com/tailwindlabs/tailwindcss/pull/14140))

### [`v3.4.7`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.4.7)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.4.6...v3.4.7)

##### Fixed

-   Fix class detection in Slim templates with attached attributes and ID ([#&#8203;14019](https://github.com/tailwindlabs/tailwindcss/pull/14019))
-   Ensure attribute values in `data-*` and `aria-*` modifiers are always quoted in the generated CSS ([#&#8203;14037](https://github.com/tailwindlabs/tailwindcss/pull/14037))

### [`v3.4.6`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.4.6)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.4.5...v3.4.6)

##### Fixed

-   Fix detection of some utilities in Slim/Pug templates ([#&#8203;14006](https://github.com/tailwindlabs/tailwindcss/pull/14006))

##### Changed

-   Loosen `:is()` wrapping rules when using an important selector ([#&#8203;13900](https://github.com/tailwindlabs/tailwindcss/pull/13900))

### [`v3.4.5`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.4.5)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.4.4...v3.4.5)

##### Fixed

-   Disable automatic `var()` injection for anchor properties ([#&#8203;13826](https://github.com/tailwindlabs/tailwindcss/pull/13826))
-   Use no value instead of `blur(0px)` for `backdrop-blur-none` and `blur-none` utilities ([#&#8203;13830](https://github.com/tailwindlabs/tailwindcss/pull/13830))
-   Add `.mts` and `.cts` config file detection ([#&#8203;13940](https://github.com/tailwindlabs/tailwindcss/pull/13940))
-   Don't generate utilities like `px-1` unnecessarily when using utilities like `px-1.5` ([#&#8203;13959](https://github.com/tailwindlabs/tailwindcss/pull/13959))
-   Always generate `-webkit-backdrop-filter` for `backdrop-*` utilities ([#&#8203;13997](https://github.com/tailwindlabs/tailwindcss/pull/13997))

### [`v3.4.4`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.4.4)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.4.3...v3.4.4)

##### Fixed

-   Make it possible to use multiple `<alpha-value>` placeholders in a single color definition ([#&#8203;13740](https://github.com/tailwindlabs/tailwindcss/pull/13740))
-   Don't prefix classes in arbitrary values of `has-*`, `group-has-*`, and `peer-has-*` variants ([#&#8203;13770](https://github.com/tailwindlabs/tailwindcss/pull/13770))
-   Support negative values for `{col,row}-{start,end}` utilities ([#&#8203;13781](https://github.com/tailwindlabs/tailwindcss/pull/13781))
-   Update embedded browserslist database ([#&#8203;13792](https://github.com/tailwindlabs/tailwindcss/pull/13792))

### [`v3.4.3`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.4.3)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.4.2...v3.4.3)

##### Fixed

-   Revert changes to glob handling ([#&#8203;13384](https://github.com/tailwindlabs/tailwindcss/pull/13384))

### [`v3.4.2`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.4.2)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.4.1...v3.4.2)

##### Fixed

-   Ensure max specificity of `0,0,1` for button and input Preflight rules ([#&#8203;12735](https://github.com/tailwindlabs/tailwindcss/pull/12735))
-   Improve glob handling for folders with `(`, `)`, `[` or `]` in the file path ([#&#8203;12715](https://github.com/tailwindlabs/tailwindcss/pull/12715))
-   Split `:has` rules when using `experimental.optimizeUniversalDefaults` ([#&#8203;12736](https://github.com/tailwindlabs/tailwindcss/pull/12736))
-   Sort arbitrary properties alphabetically across multiple class lists ([#&#8203;12911](https://github.com/tailwindlabs/tailwindcss/pull/12911))
-   Add `mix-blend-plus-darker` utility ([#&#8203;12923](https://github.com/tailwindlabs/tailwindcss/pull/12923))
-   Ensure dashes are allowed in variant modifiers ([#&#8203;13303](https://github.com/tailwindlabs/tailwindcss/pull/13303))
-   Fix crash showing completions in Intellisense when using a custom separator ([#&#8203;13306](https://github.com/tailwindlabs/tailwindcss/pull/13306))
-   Transpile `import.meta.url` in config files ([#&#8203;13322](https://github.com/tailwindlabs/tailwindcss/pull/13322))
-   Reset letter spacing for form elements ([#&#8203;13150](https://github.com/tailwindlabs/tailwindcss/pull/13150))
-   Fix missing `xx-large` and remove double `x-large` absolute size ([#&#8203;13324](https://github.com/tailwindlabs/tailwindcss/pull/13324))
-   Don't error when encountering nested CSS unless trying to `@apply` a class that uses nesting ([#&#8203;13325](https://github.com/tailwindlabs/tailwindcss/pull/13325))
-   Ensure that arbitrary properties respect `important` configuration ([#&#8203;13353](https://github.com/tailwindlabs/tailwindcss/pull/13353))
-   Change dark mode selector so `@apply` works correctly with pseudo elements ([#&#8203;13379](https://github.com/tailwindlabs/tailwindcss/pull/13379))

### [`v3.4.1`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.4.1)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.4.0...v3.4.1)

##### Fixed

-   Don't remove keyframe stops when using important utilities ([#&#8203;12639](https://github.com/tailwindlabs/tailwindcss/pull/12639))
-   Don't add spaces to gradients and grid track names when followed by `calc()` ([#&#8203;12704](https://github.com/tailwindlabs/tailwindcss/pull/12704))
-   Restore old behavior for `class` dark mode strategy ([#&#8203;12717](https://github.com/tailwindlabs/tailwindcss/pull/12717))

##### Added

-   Add new `selector` and `variant` strategies for dark mode ([#&#8203;12717](https://github.com/tailwindlabs/tailwindcss/pull/12717))

##### Changed

-   Support `rtl` and `ltr` variants on same element as `dir` attribute ([#&#8203;12717](https://github.com/tailwindlabs/tailwindcss/pull/12717))

### [`v3.4.0`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.4.0)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.3.7...v3.4.0)

<a href="https://tailwindcss.com/blog/tailwindcss-v3-4"><img alt="Tailwind CSS" src="https://github.com/tailwindlabs/tailwindcss/assets/882133/cf6ee749-cce4-45e9-b15f-e081a6353833" width="768"></a>

Tailwind CSS v3.4 has arrived! Check out the [announcement post](https://tailwindcss.com/blog/tailwindcss-v3-4) for a guided tour through all of the highlights.

##### Added

-   Add `svh`, `lvh`, and `dvh` values to default `height`/`min-height`/`max-height` theme ([#&#8203;11317](https://github.com/tailwindlabs/tailwindcss/pull/11317))
-   Add `has-*` variants for `:has(...)` pseudo-class ([#&#8203;11318](https://github.com/tailwindlabs/tailwindcss/pull/11318))
-   Add `text-wrap` utilities including `text-balance` and `text-pretty` ([#&#8203;11320](https://github.com/tailwindlabs/tailwindcss/pull/11320), [#&#8203;12031](https://github.com/tailwindlabs/tailwindcss/pull/12031))
-   Extend default `opacity` scale to include all steps of 5 ([#&#8203;11832](https://github.com/tailwindlabs/tailwindcss/pull/11832))
-   Update Preflight `html` styles to include shadow DOM `:host` pseudo-class ([#&#8203;11200](https://github.com/tailwindlabs/tailwindcss/pull/11200))
-   Increase default values for `grid-rows-*` utilities from 1–6 to 1–12 ([#&#8203;12180](https://github.com/tailwindlabs/tailwindcss/pull/12180))
-   Add `size-*` utilities ([#&#8203;12287](https://github.com/tailwindlabs/tailwindcss/pull/12287))
-   Add utilities for CSS subgrid ([#&#8203;12298](https://github.com/tailwindlabs/tailwindcss/pull/12298))
-   Add spacing scale to `min-w-*`, `min-h-*`, and `max-w-*` utilities ([#&#8203;12300](https://github.com/tailwindlabs/tailwindcss/pull/12300))
-   Add `forced-color-adjust` utilities ([#&#8203;11931](https://github.com/tailwindlabs/tailwindcss/pull/11931))
-   Add `forced-colors` variant ([#&#8203;11694](https://github.com/tailwindlabs/tailwindcss/pull/11694), [#&#8203;12582](https://github.com/tailwindlabs/tailwindcss/pull/12582))
-   Add `appearance-auto` utility ([#&#8203;12404](https://github.com/tailwindlabs/tailwindcss/pull/12404))
-   Add logical property values for `float` and `clear` utilities ([#&#8203;12480](https://github.com/tailwindlabs/tailwindcss/pull/12480))
-   Add `*` variant for targeting direct children ([#&#8203;12551](https://github.com/tailwindlabs/tailwindcss/pull/12551))

##### Changed

-   Simplify the `sans` font-family stack ([#&#8203;11748](https://github.com/tailwindlabs/tailwindcss/pull/11748))
-   Disable the tap highlight overlay on iOS ([#&#8203;12299](https://github.com/tailwindlabs/tailwindcss/pull/12299))
-   Improve relative precedence of `rtl`, `ltr`, `forced-colors`, and `dark` variants ([#&#8203;12584](https://github.com/tailwindlabs/tailwindcss/pull/12584))

### [`v3.3.7`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.3.7)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.3.6...v3.3.7)

##### Fixed

-   Fix support for container query utilities with arbitrary values ([#&#8203;12534](https://github.com/tailwindlabs/tailwindcss/pull/12534))
-   Fix custom config loading in Standalone CLI ([#&#8203;12616](https://github.com/tailwindlabs/tailwindcss/pull/12616))

### [`v3.3.6`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.3.6)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.3.5...v3.3.6)

##### Fixed

-   Don’t add spaces to negative numbers following a comma ([#&#8203;12324](https://github.com/tailwindlabs/tailwindcss/pull/12324))
-   Don't emit `@config` in CSS when watching via the CLI ([#&#8203;12327](https://github.com/tailwindlabs/tailwindcss/pull/12327))
-   Improve types for `resolveConfig` ([#&#8203;12272](https://github.com/tailwindlabs/tailwindcss/pull/12272))
-   Ensure configured `font-feature-settings` for `mono` are included in Preflight ([#&#8203;12342](https://github.com/tailwindlabs/tailwindcss/pull/12342))
-   Improve candidate detection in minified JS arrays (without spaces) ([#&#8203;12396](https://github.com/tailwindlabs/tailwindcss/pull/12396))
-   Don't crash when given applying a variant to a negated version of a simple utility ([#&#8203;12514](https://github.com/tailwindlabs/tailwindcss/pull/12514))
-   Fix support for slashes in arbitrary modifiers ([#&#8203;12515](https://github.com/tailwindlabs/tailwindcss/pull/12515))
-   Fix source maps of variant utilities that come from an `@layer` rule ([#&#8203;12508](https://github.com/tailwindlabs/tailwindcss/pull/12508))
-   Fix loading of built-in plugins when using an ESM or TypeScript config with the Standalone CLI ([#&#8203;12506](https://github.com/tailwindlabs/tailwindcss/pull/12506))

### [`v3.3.5`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.3.5)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.3.4...v3.3.5)

##### Fixed

-   Fix incorrect spaces around `-` in `calc()` expression ([#&#8203;12283](https://github.com/tailwindlabs/tailwindcss/pull/12283))

### [`v3.3.4`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.3.4)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.3.3...v3.3.4)

##### Fixed

-   Improve normalisation of `calc()`-like functions ([#&#8203;11686](https://github.com/tailwindlabs/tailwindcss/pull/11686))
-   Skip `calc()` normalisation in nested `theme()` calls ([#&#8203;11705](https://github.com/tailwindlabs/tailwindcss/pull/11705))
-   Fix incorrectly generated CSS when using square brackets inside arbitrary properties ([#&#8203;11709](https://github.com/tailwindlabs/tailwindcss/pull/11709))
-   Make `content` optional for presets in TypeScript types ([#&#8203;11730](https://github.com/tailwindlabs/tailwindcss/pull/11730))
-   Handle variable colors that have variable fallback values ([#&#8203;12049](https://github.com/tailwindlabs/tailwindcss/pull/12049))
-   Batch reading content files to prevent `too many open files` error ([#&#8203;12079](https://github.com/tailwindlabs/tailwindcss/pull/12079))
-   Skip over classes inside `:not(…)` when nested in an at-rule ([#&#8203;12105](https://github.com/tailwindlabs/tailwindcss/pull/12105))
-   Update types to work with `Node16` module resolution ([#&#8203;12097](https://github.com/tailwindlabs/tailwindcss/pull/12097))
-   Don’t crash when important and parent selectors are equal in `@apply` ([#&#8203;12112](https://github.com/tailwindlabs/tailwindcss/pull/12112))
-   Eliminate irrelevant rules when applying variants ([#&#8203;12113](https://github.com/tailwindlabs/tailwindcss/pull/12113))
-   Improve RegEx parser, reduce possibilities as the key for arbitrary properties ([#&#8203;12121](https://github.com/tailwindlabs/tailwindcss/pull/12121))
-   Fix sorting of utilities that share multiple candidates ([#&#8203;12173](https://github.com/tailwindlabs/tailwindcss/pull/12173))
-   Ensure variants with arbitrary values and a modifier are correctly matched in the RegEx based parser ([#&#8203;12179](https://github.com/tailwindlabs/tailwindcss/pull/12179))
-   Fix crash when watching renamed files on FreeBSD ([#&#8203;12193](https://github.com/tailwindlabs/tailwindcss/pull/12193))
-   Allow plugins from a parent document to be used in an iframe ([#&#8203;12208](https://github.com/tailwindlabs/tailwindcss/pull/12208))
-   Add types for `tailwindcss/nesting` ([#&#8203;12269](https://github.com/tailwindlabs/tailwindcss/pull/12269))
-   Bump `jiti`, `fast-glob`, and `browserlist` dependencies ([#&#8203;11550](https://github.com/tailwindlabs/tailwindcss/pull/11550))
-   Improve automatic `var` injection for properties that accept a `<dashed-ident>` ([#&#8203;12236](https://github.com/tailwindlabs/tailwindcss/pull/12236))

### [`v3.3.3`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.3.3)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.3.2...v3.3.3)

##### Fixed

-   Fix issue where some pseudo-element variants generated the wrong selector ([#&#8203;10943](https://github.com/tailwindlabs/tailwindcss/pull/10943), [#&#8203;10962](https://github.com/tailwindlabs/tailwindcss/pull/10962), [#&#8203;11111](https://github.com/tailwindlabs/tailwindcss/pull/11111))
-   Make font settings propagate into buttons, inputs, etc. ([#&#8203;10940](https://github.com/tailwindlabs/tailwindcss/pull/10940))
-   Fix parsing of `theme()` inside `calc()` when there are no spaces around operators ([#&#8203;11157](https://github.com/tailwindlabs/tailwindcss/pull/11157))
-   Ensure `repeating-conic-gradient` is detected as an image ([#&#8203;11180](https://github.com/tailwindlabs/tailwindcss/pull/11180))
-   Move unknown pseudo-elements outside of `:is` by default ([#&#8203;11345](https://github.com/tailwindlabs/tailwindcss/pull/11345))
-   Escape animation names when prefixes contain special characters ([#&#8203;11470](https://github.com/tailwindlabs/tailwindcss/pull/11470))
-   Don't prefix arbitrary classes in `group` and `peer` variants ([#&#8203;11454](https://github.com/tailwindlabs/tailwindcss/pull/11454))
-   Sort classes using position of first matching rule ([#&#8203;11504](https://github.com/tailwindlabs/tailwindcss/pull/11504))
-   Allow variant to be an at-rule without a prelude ([#&#8203;11589](https://github.com/tailwindlabs/tailwindcss/pull/11589))
-   Make PostCSS plugin async to improve performance ([#&#8203;11548](https://github.com/tailwindlabs/tailwindcss/pull/11548))
-   Don’t error when a config file is missing ([f97759f](https://github.com/tailwindlabs/tailwindcss/commit/f97759f808d15ace66647b1405744fcf95a392e5))

##### Added

-   Add `aria-busy` utility ([#&#8203;10966](https://github.com/tailwindlabs/tailwindcss/pull/10966))

##### Changed

-   Reset padding for `<dialog>` elements in preflight ([#&#8203;11069](https://github.com/tailwindlabs/tailwindcss/pull/11069))

### [`v3.3.2`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.3.2)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.3.1...v3.3.2)

##### Fixed

-   Don’t move unknown pseudo-elements to the end of selectors ([#&#8203;10943](https://github.com/tailwindlabs/tailwindcss/pull/10943), [#&#8203;10962](https://github.com/tailwindlabs/tailwindcss/pull/10962))
-   Inherit gradient stop positions when using variants ([#&#8203;11002](https://github.com/tailwindlabs/tailwindcss/pull/11002))
-   Honor default `to` position of gradient when using implicit transparent colors ([#&#8203;11002](https://github.com/tailwindlabs/tailwindcss/pull/11002))
-   Ensure `@tailwindcss/oxide` doesn't leak in the stable engine ([#&#8203;10988](https://github.com/tailwindlabs/tailwindcss/pull/10988))
-   Ensure multiple `theme(spacing[5])` calls with bracket notation in arbitrary properties work ([#&#8203;11039](https://github.com/tailwindlabs/tailwindcss/pull/11039))
-   Normalize arbitrary modifiers ([#&#8203;11057](https://github.com/tailwindlabs/tailwindcss/pull/11057))

##### Changed

-   Drop support for Node.js v12 ([#&#8203;11089](https://github.com/tailwindlabs/tailwindcss/pull/11089))

### [`v3.3.1`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.3.1)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.3.0...v3.3.1)

##### Fixed

-   Fix edge case bug when loading a TypeScript config file with webpack ([#&#8203;10898](https://github.com/tailwindlabs/tailwindcss/pull/10898))
-   Fix variant, `@apply`, and `important` selectors when using `:is()` or `:has()` with pseudo-elements ([#&#8203;10903](https://github.com/tailwindlabs/tailwindcss/pull/10903))
-   Fix `safelist` config types ([#&#8203;10901](https://github.com/tailwindlabs/tailwindcss/pull/10901))
-   Fix build errors caused by `@tailwindcss/line-clamp` warning ([#&#8203;10915](https://github.com/tailwindlabs/tailwindcss/pull/10915), [#&#8203;10919](https://github.com/tailwindlabs/tailwindcss/pull/10919))
-   Fix "process is not defined" error ([#&#8203;10919](https://github.com/tailwindlabs/tailwindcss/pull/10919))

### [`v3.3.0`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.3.0)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.2.7...v3.3.0)

<img alt="Tailwind CSS" src="https://user-images.githubusercontent.com/4323180/228304008-d10fbe12-08eb-4270-bda2-7e8c1254f44c.png" width="768">

Tailwind CSS v3.3 is here! Check out the [announcement post](https://tailwindcss.com/blog/tailwindcss-v3-3) for a deep dive into all of the cool new stuff.

##### Added

-   Support ESM and TypeScript config files ([#&#8203;10785](https://github.com/tailwindlabs/tailwindcss/pull/10785))
-   Extend default color palette with new 950 shades ([#&#8203;10879](https://github.com/tailwindlabs/tailwindcss/pull/10879))
-   Add `line-height` modifier support to `font-size` utilities ([#&#8203;9875](https://github.com/tailwindlabs/tailwindcss/pull/9875))
-   Add support for using variables as arbitrary values without `var(...)` ([#&#8203;9880](https://github.com/tailwindlabs/tailwindcss/pull/9880), [#&#8203;9962](https://github.com/tailwindlabs/tailwindcss/pull/9962))
-   Add logical properties support for inline direction ([#&#8203;10166](https://github.com/tailwindlabs/tailwindcss/pull/10166))
-   Add `hyphens` utilities ([#&#8203;10071](https://github.com/tailwindlabs/tailwindcss/pull/10071))
-   Add `from-{position}`, `via-{position}` and `to-{position}` utilities ([#&#8203;10886](https://github.com/tailwindlabs/tailwindcss/pull/10886))
-   Add `list-style-image` utilities ([#&#8203;10817](https://github.com/tailwindlabs/tailwindcss/pull/10817))
-   Add `caption-side` utilities ([#&#8203;10470](https://github.com/tailwindlabs/tailwindcss/pull/10470))
-   Add `line-clamp` utilities from `@tailwindcss/line-clamp` to core ([#&#8203;10768](https://github.com/tailwindlabs/tailwindcss/pull/10768), [#&#8203;10876](https://github.com/tailwindlabs/tailwindcss/pull/10876), [#&#8203;10862](https://github.com/tailwindlabs/tailwindcss/pull/10862))
-   Add `delay-0` and `duration-0` utilities ([#&#8203;10294](https://github.com/tailwindlabs/tailwindcss/pull/10294))
-   Add `justify-normal` and `justify-stretch` utilities ([#&#8203;10560](https://github.com/tailwindlabs/tailwindcss/pull/10560))
-   Add `content-normal` and `content-stretch` utilities ([#&#8203;10645](https://github.com/tailwindlabs/tailwindcss/pull/10645))
-   Add `whitespace-break-spaces` utility ([#&#8203;10729](https://github.com/tailwindlabs/tailwindcss/pull/10729))
-   Add support for configuring default `font-variation-settings` for a `font-family` ([#&#8203;10034](https://github.com/tailwindlabs/tailwindcss/pull/10034), [#&#8203;10515](https://github.com/tailwindlabs/tailwindcss/pull/10515))

##### Fixed

-   Disallow using multiple selectors in arbitrary variants ([#&#8203;10655](https://github.com/tailwindlabs/tailwindcss/pull/10655))
-   Sort class lists deterministically for Prettier plugin ([#&#8203;10672](https://github.com/tailwindlabs/tailwindcss/pull/10672))
-   Ensure CLI builds have a non-zero exit code on failure ([#&#8203;10703](https://github.com/tailwindlabs/tailwindcss/pull/10703))
-   Ensure module dependencies for value `null`, is an empty `Set` ([#&#8203;10877](https://github.com/tailwindlabs/tailwindcss/pull/10877))
-   Fix format assumption when resolving module dependencies ([#&#8203;10878](https://github.com/tailwindlabs/tailwindcss/pull/10878))

##### Changed

-   Mark `rtl` and `ltr` variants as stable and remove warnings ([#&#8203;10764](https://github.com/tailwindlabs/tailwindcss/pull/10764))
-   Use `inset` instead of `top`, `right`, `bottom`, and `left` properties ([#&#8203;10765](https://github.com/tailwindlabs/tailwindcss/pull/10765))
-   Make `dark` and `rtl`/`ltr` variants insensitive to DOM order ([#&#8203;10766](https://github.com/tailwindlabs/tailwindcss/pull/10766))
-   Use `:is` to make important selector option insensitive to DOM order ([#&#8203;10835](https://github.com/tailwindlabs/tailwindcss/pull/10835))

### [`v3.2.7`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.2.7)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.2.6...v3.2.7)

##### Fixed

-   Fix use of `:where(.btn)` when matching `!btn` ([#&#8203;10601](https://github.com/tailwindlabs/tailwindcss/pull/10601))
-   Revert including `outline-color` in `transition` and `transition-colors` by default ([#&#8203;10604](https://github.com/tailwindlabs/tailwindcss/pull/10604))

### [`v3.2.6`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.2.6)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.2.5...v3.2.6)

##### Fixed

-   Fix installation failing with yarn and pnpm by dropping `oxide-api-shim` ([add1636](https://github.com/tailwindlabs/tailwindcss/commit/add16364b4b1100e1af23ad1ca6900a0b53cbba0))

### [`v3.2.5`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.2.5)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.2.4...v3.2.5)

##### Added

-   Add standalone CLI build for 64-bit Windows on ARM (`node16-win-arm64`) ([#&#8203;10001](https://github.com/tailwindlabs/tailwindcss/pull/10001))

##### Fixed

-   Cleanup unused `variantOrder` ([#&#8203;9829](https://github.com/tailwindlabs/tailwindcss/pull/9829))
-   Fix `foo-[abc]/[def]` not being handled correctly ([#&#8203;9866](https://github.com/tailwindlabs/tailwindcss/pull/9866))
-   Add container queries plugin to standalone CLI ([#&#8203;9865](https://github.com/tailwindlabs/tailwindcss/pull/9865))
-   Support renaming of output files by PostCSS plugins in CLI ([#&#8203;9944](https://github.com/tailwindlabs/tailwindcss/pull/9944))
-   Improve return value of `resolveConfig`, unwrap `ResolvableTo` ([#&#8203;9972](https://github.com/tailwindlabs/tailwindcss/pull/9972))
-   Clip unbalanced brackets in arbitrary values ([#&#8203;9973](https://github.com/tailwindlabs/tailwindcss/pull/9973))
-   Don’t reorder webkit scrollbar pseudo elements ([#&#8203;9991](https://github.com/tailwindlabs/tailwindcss/pull/9991))
-   Deterministic sorting of arbitrary variants ([#&#8203;10016](https://github.com/tailwindlabs/tailwindcss/pull/10016))
-   Add `data` key to theme types ([#&#8203;10023](https://github.com/tailwindlabs/tailwindcss/pull/10023))
-   Prevent invalid arbitrary variant selectors from failing the build ([#&#8203;10059](https://github.com/tailwindlabs/tailwindcss/pull/10059))
-   Properly handle subtraction followed by a variable ([#&#8203;10074](https://github.com/tailwindlabs/tailwindcss/pull/10074))
-   Fix missing `string[]` in the `theme.dropShadow` types ([#&#8203;10072](https://github.com/tailwindlabs/tailwindcss/pull/10072))
-   Update list of length units ([#&#8203;10100](https://github.com/tailwindlabs/tailwindcss/pull/10100))
-   Fix not matching arbitrary properties when closely followed by square brackets ([#&#8203;10212](https://github.com/tailwindlabs/tailwindcss/pull/10212))
-   Allow direct nesting in `root` or `@layer` nodes ([#&#8203;10229](https://github.com/tailwindlabs/tailwindcss/pull/10229))
-   Don't prefix classes in arbitrary variants ([#&#8203;10214](https://github.com/tailwindlabs/tailwindcss/pull/10214))
-   Fix perf regression when checking for changed content ([#&#8203;10234](https://github.com/tailwindlabs/tailwindcss/pull/10234))
-   Fix missing `blocklist` member in the `Config` type ([#&#8203;10239](https://github.com/tailwindlabs/tailwindcss/pull/10239))
-   Escape group names in selectors ([#&#8203;10276](https://github.com/tailwindlabs/tailwindcss/pull/10276))
-   Consider earlier variants before sorting functions ([#&#8203;10288](https://github.com/tailwindlabs/tailwindcss/pull/10288))
-   Allow variants with slashes ([#&#8203;10336](https://github.com/tailwindlabs/tailwindcss/pull/10336))
-   Ensure generated CSS is always sorted in the same order for a given set of templates ([#&#8203;10382](https://github.com/tailwindlabs/tailwindcss/pull/10382))
-   Handle variants when the same class appears multiple times in a selector ([#&#8203;10397](https://github.com/tailwindlabs/tailwindcss/pull/10397))
-   Handle group/peer variants with quoted strings ([#&#8203;10400](https://github.com/tailwindlabs/tailwindcss/pull/10400))
-   Parse alpha value from rgba/hsla colors when using variables ([#&#8203;10429](https://github.com/tailwindlabs/tailwindcss/pull/10429))
-   Sort by `layer` inside `variants` layer ([#&#8203;10505](https://github.com/tailwindlabs/tailwindcss/pull/10505))
-   Add `--watch=always` option to prevent exit when stdin closes ([#&#8203;9966](https://github.com/tailwindlabs/tailwindcss/pull/9966))

##### Changed

-   Alphabetize `theme` keys in default config ([#&#8203;9953](https://github.com/tailwindlabs/tailwindcss/pull/9953))
-   Update esbuild to v17 ([#&#8203;10368](https://github.com/tailwindlabs/tailwindcss/pull/10368))
-   Include `outline-color` in `transition` and `transition-colors` utilities ([#&#8203;10385](https://github.com/tailwindlabs/tailwindcss/pull/10385))

### [`v3.2.4`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.2.4)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.2.3...v3.2.4)

##### Added

-   Add `blocklist` option to prevent generating unwanted CSS ([#&#8203;9812](https://github.com/tailwindlabs/tailwindcss/pull/9812))

##### Fixed

-   Fix watching of files on Linux when renames are involved ([#&#8203;9796](https://github.com/tailwindlabs/tailwindcss/pull/9796))
-   Make sure errors are always displayed when watching for changes ([#&#8203;9810](https://github.com/tailwindlabs/tailwindcss/pull/9810))

### [`v3.2.3`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.2.3)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.2.2...v3.2.3)

##### Fixed

-   Fixed use of `raw` content in the CLI ([#&#8203;9773](https://github.com/tailwindlabs/tailwindcss/pull/9773))
-   Pick up changes from files that are both context and content deps ([#&#8203;9787](https://github.com/tailwindlabs/tailwindcss/pull/9787))
-   Sort pseudo-elements ONLY after classes when using variants and `@apply` ([#&#8203;9765](https://github.com/tailwindlabs/tailwindcss/pull/9765))
-   Support important utilities in the safelist (pattern must include a `!`) ([#&#8203;9791](https://github.com/tailwindlabs/tailwindcss/pull/9791))

### [`v3.2.2`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.2.2)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.2.1...v3.2.2)

##### Fixed

-   Escape special characters in resolved content base paths ([#&#8203;9650](https://github.com/tailwindlabs/tailwindcss/pull/9650))
-   Don't reuse container for array returning variant functions ([#&#8203;9644](https://github.com/tailwindlabs/tailwindcss/pull/9644))
-   Exclude non-relevant selectors when generating rules with the important modifier ([#&#8203;9677](https://github.com/tailwindlabs/tailwindcss/issues/9677))
-   Fix merging of arrays during config resolution ([#&#8203;9706](https://github.com/tailwindlabs/tailwindcss/issues/9706))
-   Ensure configured `font-feature-settings` are included in Preflight ([#&#8203;9707](https://github.com/tailwindlabs/tailwindcss/pull/9707))
-   Fix fractional values not being parsed properly inside arbitrary properties ([#&#8203;9705](https://github.com/tailwindlabs/tailwindcss/pull/9705))
-   Fix incorrect selectors when using `@apply` in selectors with combinators and pseudos ([#&#8203;9722](https://github.com/tailwindlabs/tailwindcss/pull/9722))
-   Fix cannot read properties of undefined (reading 'modifier') ([#&#8203;9656](https://github.com/tailwindlabs/tailwindcss/pull/9656), [aa979d6](https://github.com/tailwindlabs/tailwindcss/commit/aa979d645f8bf4108c5fc938d7c0ba085b654c31))

### [`v3.2.1`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.2.1)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.2.0...v3.2.1)

##### Fixed

-   Fix missing `supports` in types ([#&#8203;9616](https://github.com/tailwindlabs/tailwindcss/pull/9616))
-   Fix missing PostCSS dependencies in the CLI ([#&#8203;9617](https://github.com/tailwindlabs/tailwindcss/pull/9617))
-   Ensure `micromatch` is a proper CLI dependency ([#&#8203;9620](https://github.com/tailwindlabs/tailwindcss/pull/9620))
-   Ensure modifier values exist when using a `modifiers` object for `matchVariant` ([ba6551d](https://github.com/tailwindlabs/tailwindcss/commit/ba6551db0f2726461371b4f3c6cd4c7090888504))

### [`v3.2.0`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.2.0)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.1.8...v3.2.0)

We just released Tailwind CSS v3.2! Read the [announcement post](https://tailwindcss.com/blog/tailwindcss-v3-2) for more details about the most exciting new features.

***

##### Added

-   Add new `@config` directive ([#&#8203;9405](https://github.com/tailwindlabs/tailwindcss/pull/9405))
-   Add new `relative: true` option to resolve content paths relative to the config file ([#&#8203;9396](https://github.com/tailwindlabs/tailwindcss/pull/9396))
-   Add new `supports-*` variant ([#&#8203;9453](https://github.com/tailwindlabs/tailwindcss/pull/9453))
-   Add new `min-*` and `max-*` variants ([#&#8203;9558](https://github.com/tailwindlabs/tailwindcss/pull/9558))
-   Add new `aria-*` variants ([#&#8203;9557](https://github.com/tailwindlabs/tailwindcss/pull/9557), [#&#8203;9588](https://github.com/tailwindlabs/tailwindcss/pull/9588))
-   Add new `data-*` variants ([#&#8203;9559](https://github.com/tailwindlabs/tailwindcss/pull/9559), [#&#8203;9588](https://github.com/tailwindlabs/tailwindcss/pull/9588))
-   Add new `break-keep` utility for `word-break: keep-all` ([#&#8203;9393](https://github.com/tailwindlabs/tailwindcss/pull/9393))
-   Add new `collapse` utility for `visibility: collapse` ([#&#8203;9181](https://github.com/tailwindlabs/tailwindcss/pull/9181))
-   Add new `fill-none` utility for `fill: none` ([#&#8203;9403](https://github.com/tailwindlabs/tailwindcss/pull/9403))
-   Add new `stroke-none` utility for `stroke: none` ([#&#8203;9403](https://github.com/tailwindlabs/tailwindcss/pull/9403))
-   Add new `place-content-baseline` utility for `place-content: baseline` ([#&#8203;9498](https://github.com/tailwindlabs/tailwindcss/pull/9498))
-   Add new `place-items-baseline` utility for `place-items: baseline` ([#&#8203;9507](https://github.com/tailwindlabs/tailwindcss/pull/9507))
-   Add new `content-baseline` utility for `align-content: baseline` ([#&#8203;9507](https://github.com/tailwindlabs/tailwindcss/pull/9507))
-   Add support for configuring default `font-feature-settings` for a font family ([#&#8203;9039](https://github.com/tailwindlabs/tailwindcss/pull/9039))
-   Add standalone CLI build for 32-bit Linux on ARM (`node16-linux-armv7`) ([#&#8203;9084](https://github.com/tailwindlabs/tailwindcss/pull/9084))
-   Add future flag to disable color opacity utility plugins ([#&#8203;9088](https://github.com/tailwindlabs/tailwindcss/pull/9088))
-   Add negative value support for `outline-offset` ([#&#8203;9136](https://github.com/tailwindlabs/tailwindcss/pull/9136))
-   Add support for modifiers to `matchUtilities` ([#&#8203;9541](https://github.com/tailwindlabs/tailwindcss/pull/9541))
-   Allow negating utilities using `min`/`max`/`clamp` ([#&#8203;9237](https://github.com/tailwindlabs/tailwindcss/pull/9237))
-   Implement fallback plugins when there is ambiguity between plugins when using arbitrary values ([#&#8203;9376](https://github.com/tailwindlabs/tailwindcss/pull/9376))
-   Support `sort` function in `matchVariant` ([#&#8203;9423](https://github.com/tailwindlabs/tailwindcss/pull/9423))
-   Upgrade to `postcss-nested` v6.0 ([#&#8203;9546](https://github.com/tailwindlabs/tailwindcss/pull/9546))

##### Fixed

-   Use absolute paths when resolving changed files for resilience against working directory changes ([#&#8203;9032](https://github.com/tailwindlabs/tailwindcss/pull/9032))
-   Fix ring color utility generation when using `respectDefaultRingColorOpacity` ([#&#8203;9070](https://github.com/tailwindlabs/tailwindcss/pull/9070))
-   Sort tags before classes when `@apply`-ing a selector with joined classes ([#&#8203;9107](https://github.com/tailwindlabs/tailwindcss/pull/9107))
-   Remove invalid `outline-hidden` utility ([#&#8203;9147](https://github.com/tailwindlabs/tailwindcss/pull/9147))
-   Honor the `hidden` attribute on elements in preflight ([#&#8203;9174](https://github.com/tailwindlabs/tailwindcss/pull/9174))
-   Don't stop watching atomically renamed files ([#&#8203;9173](https://github.com/tailwindlabs/tailwindcss/pull/9173), [#&#8203;9215](https://github.com/tailwindlabs/tailwindcss/pull/9215))
-   Fix duplicate utilities issue causing memory leaks ([#&#8203;9208](https://github.com/tailwindlabs/tailwindcss/pull/9208))
-   Fix `fontFamily` config TypeScript types ([#&#8203;9214](https://github.com/tailwindlabs/tailwindcss/pull/9214))
-   Handle variants on complex selector utilities ([#&#8203;9262](https://github.com/tailwindlabs/tailwindcss/pull/9262))
-   Fix shared config mutation issue ([#&#8203;9294](https://github.com/tailwindlabs/tailwindcss/pull/9294))
-   Fix ordering of parallel variants ([#&#8203;9282](https://github.com/tailwindlabs/tailwindcss/pull/9282))
-   Handle variants in utility selectors using `:where()` and `:has()` ([#&#8203;9309](https://github.com/tailwindlabs/tailwindcss/pull/9309))
-   Improve data type analysis for arbitrary values ([#&#8203;9320](https://github.com/tailwindlabs/tailwindcss/pull/9320))
-   Don't emit generated utilities with invalid uses of theme functions ([#&#8203;9319](https://github.com/tailwindlabs/tailwindcss/pull/9319))
-   Revert change that only listened for stdin close on TTYs ([#&#8203;9331](https://github.com/tailwindlabs/tailwindcss/pull/9331))
-   Ignore unset values (like `null` or `undefined`) when resolving the classList for intellisense ([#&#8203;9385](https://github.com/tailwindlabs/tailwindcss/pull/9385))
-   Improve type checking for formal syntax ([#&#8203;9349](https://github.com/tailwindlabs/tailwindcss/pull/9349), [#&#8203;9448](https://github.com/tailwindlabs/tailwindcss/pull/9448))
-   Fix incorrect required `content` key in custom plugin configs ([#&#8203;9502](https://github.com/tailwindlabs/tailwindcss/pull/9502), [#&#8203;9545](https://github.com/tailwindlabs/tailwindcss/pull/9545))
-   Fix content path detection on Windows ([#&#8203;9569](https://github.com/tailwindlabs/tailwindcss/pull/9569))
-   Ensure `--content` is used in the CLI when passed ([#&#8203;9587](https://github.com/tailwindlabs/tailwindcss/pull/9587))

### [`v3.1.8`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.1.8)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.1.7...v3.1.8)

##### Fixed

-   Don’t prefix classes within reused arbitrary variants ([#&#8203;8992](https://github.com/tailwindlabs/tailwindcss/pull/8992))
-   Fix usage of alpha values inside single-named colors that are functions ([#&#8203;9008](https://github.com/tailwindlabs/tailwindcss/pull/9008))
-   Fix `@apply` of user utilities when negative and non-negative versions both exist ([#&#8203;9027](https://github.com/tailwindlabs/tailwindcss/pull/9027))

### [`v3.1.7`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.1.7)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.1.6...v3.1.7)

##### Fixed

-   Don't rewrite source maps for `@layer` rules ([#&#8203;8971](https://github.com/tailwindlabs/tailwindcss/pull/8971))

##### Added

-   Added types for `resolveConfig` ([#&#8203;8924](https://github.com/tailwindlabs/tailwindcss/pull/8924))

### [`v3.1.6`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.1.6)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.1.5...v3.1.6)

##### Fixed

-   Fix usage on Node 12.x ([b4e637e](https://github.com/tailwindlabs/tailwindcss/commit/b4e637e2e096a9d6f2210efba9541f6fd4f28e56))
-   Handle theme keys with slashes when using `theme()` in CSS ([#&#8203;8831](https://github.com/tailwindlabs/tailwindcss/pull/8831))

### [`v3.1.5`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.1.5)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.1.4...v3.1.5)

##### Added

-   Support configuring a default `font-weight` for each font size utility ([#&#8203;8763](https://github.com/tailwindlabs/tailwindcss/pull/8763))
-   Add support for alpha values in safe list ([#&#8203;8774](https://github.com/tailwindlabs/tailwindcss/pull/8774))

##### Fixed

-   Improve types to support fallback values in the CSS-in-JS syntax used in plugin APIs ([#&#8203;8762](https://github.com/tailwindlabs/tailwindcss/pull/8762))
-   Support including `tailwindcss` and `autoprefixer` in `postcss.config.js` in standalone CLI ([#&#8203;8769](https://github.com/tailwindlabs/tailwindcss/pull/8769))
-   Fix using special-characters as prefixes ([#&#8203;8772](https://github.com/tailwindlabs/tailwindcss/pull/8772))
-   Don’t prefix classes used within arbitrary variants ([#&#8203;8773](https://github.com/tailwindlabs/tailwindcss/pull/8773))
-   Add more explicit types for the default theme ([#&#8203;8780](https://github.com/tailwindlabs/tailwindcss/pull/8780))

### [`v3.1.4`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.1.4)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.1.3...v3.1.4)

##### Fixed

-   Provide default to `<alpha-value>` when using `theme()` ([#&#8203;8652](https://github.com/tailwindlabs/tailwindcss/pull/8652))
-   Detect arbitrary variants with quotes ([#&#8203;8687](https://github.com/tailwindlabs/tailwindcss/pull/8687))
-   Don’t add spaces around raw `/` that are preceded by numbers ([#&#8203;8688](https://github.com/tailwindlabs/tailwindcss/pull/8688))

### [`v3.1.3`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.1.3)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.1.2...v3.1.3)

##### Fixed

-   Fix extraction of multi-word utilities with arbitrary values and quotes ([#&#8203;8604](https://github.com/tailwindlabs/tailwindcss/pull/8604))
-   Fix casing of import of `corePluginList` type definition ([#&#8203;8587](https://github.com/tailwindlabs/tailwindcss/pull/8587))
-   Ignore PostCSS nodes returned by `addVariant` ([#&#8203;8608](https://github.com/tailwindlabs/tailwindcss/pull/8608))
-   Fix missing spaces around arithmetic operators ([#&#8203;8615](https://github.com/tailwindlabs/tailwindcss/pull/8615))
-   Detect alpha value in CSS `theme()` function when using quotes ([#&#8203;8625](https://github.com/tailwindlabs/tailwindcss/pull/8625))
-   Fix "Maximum call stack size exceeded" bug ([#&#8203;8636](https://github.com/tailwindlabs/tailwindcss/pull/8636))
-   Allow functions returning parallel variants to mutate the container ([#&#8203;8622](https://github.com/tailwindlabs/tailwindcss/pull/8622))
-   Remove text opacity CSS variables from `::marker` ([#&#8203;8622](https://github.com/tailwindlabs/tailwindcss/pull/8622))

### [`v3.1.2`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.1.2)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.1.1...v3.1.2)

##### Fixed

-   Ensure `\` is a valid arbitrary variant token ([#&#8203;8576](https://github.com/tailwindlabs/tailwindcss/pull/8576))
-   Enable `postcss-import` in the CLI by default in watch mode ([#&#8203;8574](https://github.com/tailwindlabs/tailwindcss/pull/8574), [#&#8203;8580](https://github.com/tailwindlabs/tailwindcss/pull/8580))

### [`v3.1.1`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.1.1)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.1.0...v3.1.1)

##### Fixed

-   Fix candidate extractor regression ([#&#8203;8558](https://github.com/tailwindlabs/tailwindcss/pull/8558))
-   Split `::backdrop` into separate defaults group ([#&#8203;8567](https://github.com/tailwindlabs/tailwindcss/pull/8567))
-   Fix postcss plugin type ([#&#8203;8564](https://github.com/tailwindlabs/tailwindcss/pull/8564))
-   Fix class detection in markdown code fences and slim templates ([#&#8203;8569](https://github.com/tailwindlabs/tailwindcss/pull/8569))

### [`v3.1.0`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.1.0)

[Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v3.0.24...v3.1.0)

We just released Tailwind CSS v3.1 — the first new feature release since v3.0 came out last year!

[Read the announcement post](https://tailwindcss.com/blog/tailwindcss-v3-1) for all the details, and [watch the YouTube video](https://www.youtube.com/watch?v=nOQyWbPO2Ds) for a tour of some of the highlights.

***

##### Added

-   Support PostCSS `Document` nodes ([#&#8203;7291](https://github.com/tailwindlabs/tailwindcss/pull/7291))
-   Add `text-start` and `text-end` utilities ([#&#8203;6656](https://github.com/tailwindlabs/tailwindcss/pull/6656))
-   Support customizing class name when using `darkMode: 'class'` ([#&#8203;5800](https://github.com/tailwindlabs/tailwindcss/pull/5800))
-   Add `--poll` option to the CLI ([#&#8203;7725](https://github.com/tailwindlabs/tailwindcss/pull/7725))
-   Add new `border-spacing` utilities ([#&#8203;7102](https://github.com/tailwindlabs/tailwindcss/pull/7102))
-   Add `enabled` variant ([#&#8203;7905](https://github.com/tailwindlabs/tailwindcss/pull/7905))
-   Add TypeScript types for the `tailwind.config.js` file ([#&#8203;7891](https://github.com/tailwindlabs/tailwindcss/pull/7891))
-   Add `backdrop` variant ([#&#8203;7924](https://github.com/tailwindlabs/tailwindcss/pull/7924), [#&#8203;8526](https://github.com/tailwindlabs/tailwindcss/pull/8526))
-   Add `grid-flow-dense` utility ([#&#8203;8193](https://github.com/tailwindlabs/tailwindcss/pull/8193))
-   Add `mix-blend-plus-lighter` utility ([#&#8203;8288](https://github.com/tailwindlabs/tailwindcss/pull/8288))
-   Add arbitrary variants ([#&#8203;8299](https://github.com/tailwindlabs/tailwindcss/pull/8299))
-   Add experimental `matchVariant` API ([#&#8203;8310](https://github.com/tailwindlabs/tailwindcss/pull/8310), [34fd0fb8](https://github.com/tailwindlabs/tailwindcss/commit/34fd0fb82aa574cddc5c7aa3ad7d1af5e3735e5d))
-   Add `prefers-contrast` media query variants ([#&#8203;8410](https://github.com/tailwindlabs/tailwindcss/pull/8410))
-   Add opacity support when referencing colors with `theme` function ([#&#8203;8416](https://github.com/tailwindlabs/tailwindcss/pull/8416))
-   Add `postcss-import` support to the CLI ([#&#8203;8437](https://github.com/tailwindlabs/tailwindcss/pull/8437))
-   Add `optional` variant ([#&#8203;8486](https://github.com/tailwindlabs/tailwindcss/pull/8486))
-   Add `<alpha-value>` placeholder support for custom colors ([#&#8203;8501](https://github.com/tailwindlabs/tailwindcss/pull/8501))

##### Fixed

-   Types: allow for arbitrary theme values (for 3rd party plugins) ([#&#8203;7926](https://github.com/tailwindlabs/tailwindcss/pull/7926))
-   Don’t split vars with numbers in them inside arbitrary values ([#&#8203;8091](https://github.com/tailwindlabs/tailwindcss/pull/8091))
-   Require matching prefix when detecting negatives ([#&#8203;8121](https://github.com/tailwindlabs/tailwindcss/pull/8121))
-   Handle duplicate At Rules without children ([#&#8203;8122](https://github.com/tailwindlabs/tailwindcss/pull/8122))
-   Allow arbitrary values with commas in `@apply` ([#&#8203;8125](https://github.com/tailwindlabs/tailwindcss/pull/8125))
-   Fix intellisense for plugins with multiple `@apply` rules ([#&#8203;8213](https://github.com/tailwindlabs/tailwindcss/pull/8213))
-   Improve type detection for arbitrary color values ([#&#8203;8201](https://github.com/tailwindlabs/tailwindcss/pull/8201))
-   Support PostCSS config options in config file in CLI ([#&#8203;8226](https://github.com/tailwindlabs/tailwindcss/pull/8226))
-   Remove default `[hidden]` style in preflight ([#&#8203;8248](https://github.com/tailwindlabs/tailwindcss/pull/8248))
-   Only check selectors containing base apply candidates for circular dependencies ([#&#8203;8222](https://github.com/tailwindlabs/tailwindcss/pull/8222))
-   Rewrite default class extractor ([#&#8203;8204](https://github.com/tailwindlabs/tailwindcss/pull/8204))
-   Move `important` selector to the front when `@apply`-ing selector-modifying variants in custom utilities ([#&#8203;8313](https://github.com/tailwindlabs/tailwindcss/pull/8313))
-   Error when registering an invalid custom variant ([#&#8203;8345](https://github.com/tailwindlabs/tailwindcss/pull/8345))
-   Create tailwind.config.cjs file in ESM package when running init ([#&#8203;8363](https://github.com/tailwindlabs/tailwindcss/pull/8363))
-   Fix `matchVariants` that use at-rules and placeholders ([#&#8203;8392](https://github.com/tailwindlabs/tailwindcss/pull/8392))
-   Improve types of the `tailwindcss/plugin` ([#&#8203;8400](https://github.com/tailwindlabs/tailwindcss/pull/8400))
-   Allow returning parallel variants from `addVariant` or `matchVariant` callback functions ([#&#8203;8455](https://github.com/tailwindlabs/tailwindcss/pull/8455))
-   Try using local `postcss` installation first in the CLI ([#&#8203;8270](https://github.com/tailwindlabs/tailwindcss/pull/8270))
-   Allow default ring color to be a function ([#&#8203;7587](https://github.com/tailwindlabs/tailwindcss/pull/7587))
-   Don't inherit `to` value from parent gradients ([#&#8203;8489](https://github.com/tailwindlabs/tailwindcss/pull/8489))
-   Remove process dependency from log functions ([#&#8203;8530](https://github.com/tailwindlabs/tailwindcss/pull/8530))
-   Ensure we can use `@import 'tailwindcss/...'` without node_modules ([#&#8203;8537](https://github.com/tailwindlabs/tailwindcss/pull/8537))

##### Changed

-   Only apply hover styles when supported (future) ([#&#8203;8394](https://github.com/tailwindlabs/tailwindcss/pull/8394))
-   Respect default ring color opacity (future) ([#&#8203;8448](https://github.com/tailwindlabs/tailwindcss/pull/8448), [3f4005e](https://github.com/tailwindlabs/tailwindcss/commit/3f4005e833445f7549219eb5ae89728cbb3a2630))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC4xNDIuNyIsInVwZGF0ZWRJblZlciI6IjM4LjE0Mi43IiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbXX0=-->

Reviewed-on: https://gitea.bruyant.xyz/alexandre/PaletteSwitcher/pulls/51
Co-authored-by: Renovate <[email protected]>
Co-committed-by: Renovate <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.