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

Update Preflight html styles to include shadow DOM :host pseudo-class #11200

Merged

Conversation

brandonmcconnell
Copy link
Contributor

This PR simply replaces html with :root, :host to support all :root and :host contexts:

  • :root supports…
    • html (same as plainly using html)
    • SVG root scope
  • :host supports…
    • ShadowDOM shadow root scope

@jonathandewitt-dev
Copy link

This would be great for Tailwind in the Shadow DOM, especially for react-shadow-scope, which currently transforms the styles with a quick regex replace at runtime. This is a super simple low-impact change that could simplify things a lot.

Maybe worth noting, maybe not - but using Tailwind in shadow DOM would make global styles irrelevant, like the body tag and potentially some other cases too. In the spirit of generating only the CSS that's used, it might be nice to add a shadow DOM flag in the config.

@RobinMalfait RobinMalfait force-pushed the extend-root-styles-to-host branch from 2f3e79b to 457b0a6 Compare May 10, 2023 13:28
@brandonmcconnell
Copy link
Contributor Author

brandonmcconnell commented May 10, 2023

Which tests are failing? When I run npm run build && npm test locally, all tests pass.

@RobinMalfait Nvm after merging your recent sass and cssnano version bumps, the build errors disappear AFAICT

@jonathandewitt-dev
Copy link

Question: does this affect how the Tailwind config might add rules to this selector?

@brandonmcconnell
Copy link
Contributor Author

brandonmcconnell commented May 10, 2023

@jonathandewitt-dev no, I don't believe this preflight style affects how any selectors are built.

@RobinMalfait can you confirm this?

@jonathandewitt-dev
Copy link

That might be the desired result, actually. I can imagine a situation where someone is using Tailwind in the shadow DOM, but their configuration generates a stylesheet that targets selectors outside the scope. Like, the theme configuration, for example.

@RobinMalfait RobinMalfait force-pushed the extend-root-styles-to-host branch from 80e84b9 to 205dc2f Compare May 11, 2023 08:30
@RobinMalfait
Copy link
Member

@jonathandewitt-dev no, I don't believe this preflight style affects how any selectors are built.

@RobinMalfait can you confirm this?

It shouldn't affect this 👍


I rebased this PR on top of master such that we only have to look at a single commit instead of 10+ commits 👍

@brandonmcconnell
Copy link
Contributor Author

@RobinMalfait Thanks!

To @jonathandewitt-dev's point, I think he was asking if you use the config to override some default root-related styles like font-size or line-height, do those get applied to html as well, as that would require the same treatment if that's the case.

Although, to my knowledge, overriding any such values in the config only affects utilities and not any styles actually applied at the root.

Could you confirm this as well? Thanks again!

@jonathandewitt-dev
Copy link

That's precisely what I was asking, yep! Where Tailwind normally replaces styles on html or body, we should be sure to include (or exclude) the necessary parts for shadow encapsulated scopes where those styles would otherwise be inert.

I confirmed that the configuration does indeed modify styles in the html selector. I don't know how the compiler targets this, but I have to imagine it looks for html and modifies the rules from there, or else it adds a new html selector.

/** @type {import('tailwindcss').Config} */
module.exports = {
  content: [
    "./index.html",
    "./src/**/*.{js,ts,jsx,tsx}",
  ],
  theme: {
    extend: {
      fontFamily: {
        sans: ['Orbitron'],
      },
    },
  },
  plugins: [],
}

image

@brandonmcconnell
Copy link
Contributor Author

@jonathandewitt-dev Ooo interesting I wasn't aware it did that. I'll poke around the codebase a bit more to see if I can find where that's coming from.

@jonathandewitt-dev
Copy link

@brandonmcconnell you may want to include :scope either in addition to or in place of :root as according to this explanation of the new @scope rule:

@scope (.theme-black) {
  :scope {
    background-color: black;
    color: white;
  }         
  a {
    color: #35adce;
  }
}

:scope isn’t a new pseudo-class. Its been in browsers for years but was previously pretty pointless when used in a stylesheet because outside of a @scope block it always means the same as :root

@brandonmcconnell
Copy link
Contributor Author

@brandonmcconnell you may want to include :scope either in addition to or in place of :root as according to this explanation of the new @scope rule

I am not sure if adding :scope outside of an actual scope rule would have the desired effect, and it may actually add some of these root styles in places people might not expect. As :scoped styles are a bit more flexible, that may be better suited as a user-choice.

It may be worth considering making the root selector user configurable, so the default could be :root, :host, but then allow the user to change that to anything they like from their config.

@adamwathan
Copy link
Member

@brandonmcconnell Before we explore merging this, can you share some very concrete examples (with code + demos) of things that someone might want to do that currently don't work in Tailwind that would work when this is merged? Will make it a lot easier to make a decision on 👍

@brandonmcconnell
Copy link
Contributor Author

@adamwathan - In essence, this PR allows tailwind styles to permeate all scopes, even the ShadowDOM, rather than only the top document.

@jonathandewitt-dev made a solid point about the implications of this in regard to the ShadowDOM here: #11200 (comment)

@jonathandewitt-dev, could you share any other helpful examples or information contributing to the value of this change, seeing as you are the author of the package you mentioned?

@jonathandewitt-dev
Copy link

@adamwathan @brandonmcconnell

There's not much to add that I haven't already said, but just for a summary - adding :host will allow us to gracefully use encapsulated shadow scopes, because those scopes don't have access to global styles.

The use case is primarily to avoid clashing with other libraries. Tailwind depends on global CSS classes, which may collide with custom or other third party classes. For incremental adoption, or even just adoption in an isolated micro-frontend, it would help to have that two-way encapsulation that protects those styles from global collisions.

The package I authored is not popular, but the approach is not unusual. It might serve as an illustration of how this could be used in a real-world scenario.

image

What's happening above, under the hood, is Tailwind's main CSS file is being converted to a single constructed style sheet, which can then be adopted/shared by each of these shadow roots.

@brandonmcconnell
Copy link
Contributor Author

Thanks, @jonathandewitt-dev!

In short, the ShadowDOM is the primary way to set up custom web components (not to be confused with JS framework components), doesn't inherently have access to the global scope and cannot use Tailwind's preflight styles as they do not use an html element.

This PR retains support for the existing html scope and also supports all additional standard and ShadowDOM scopes.

Tailwind CSS. Everywhere you need it.

@adamwathan
Copy link
Member

I've never done any Shadow DOM stuff so forgive me for needing some real ELI5 explanations here with extremely concrete examples. What I'd love to see is a demo that shows something that is currently broken that I can open in my browser and see being broken and understand why that's surprising — does that make sense?

For example, based on what I'm getting out of what you guys are saying, it sounds like maybe one example of this could be that using the border class doesn't work properly in the Shadow DOM because our quirky border reset we apply in Preflight to make that work doesn't work in the Shadow DOM?

I literally don't even know how styling works in the Shadow DOM at all to be clear, I am absolutely and completely ignorant of this technology 😂

Is the idea here that if you mount a normal Tailwind-generated stylesheet within a shadow DOM tree, that the classes and stuff in that stylesheet work, but anything targeting html or body don't end up doing anything because those elements don't exist? I think that makes sense to me and I understand why it would be beneficial to make that work.

Are there any downsides or things that would break? Could anyone be relying on that behavior today deliberately?

@jonathandewitt-dev
Copy link

jonathandewitt-dev commented Sep 8, 2023

Sure thing! I think there is a multitiered answer to this question, so I'll try to explain in steps.

At its most basic, here is a minimal example of shadow DOM (this uses its declarative syntax, so no JS is needed here.)

<style> .container { background-color: red; } </style>

<div class="container">This is outside the shadow DOM. It honors global styles.</div>

<div>
  <template shadowrootmode="closed">
    <style> .container { font-size: 2rem; } </style>
    <div class="container">This is inside the shadow DOM. It inherits nothing from global styles. Styles defined inside here don't leak out of this scope.</div>
  </template>
</div>

<div class="container">Even after the shadow DOM above, the styles inside it don't cascade to affect the outside world.</div>

In the devtools, you'll see the shadow root appear differently, because it's more or less "hidden" away from the outside world.

image

Originally, shadow DOM was not exposed for developers to use. It was used to style things like the video playback controls in a <video> tag. (It would be pretty wonky if those controls were easily messed up by unexpected global styles.) Then the w3c collectively decided it would be useful to expose the shadow DOM to developers as a tool for strong encapsulation.

This is useful for Tailwind because it guarantees isolated scopes that cannot be touched by third-party styles. If a project is using Bootstrap, for example, you could still use Tailwind without worrying about whether it's compatible. Just basically ignore it, and guarantee your Tailwind styles look the same no matter where they're used.

<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-4bw+/aepP/YC94hEpVNVgiZdgIC5+VKNBQNGCHeKRQN+PtmoHDEXuppvnDJzQIu9" crossorigin="anonymous">

<x-tailwind>
  <template shadowrootmode="open">
    <style>/* tailwind styles here */</style>
    <div class="text-slate-900 font-extrabold text-2xl">
      Tailwind could be used inside the shadow DOM, instead of globally. This could be great for incremental adoption!
    </div>
  </template>
</x-tailwind>

Now, there's a couple problems here.

  1. It's repetitive to keep spitting ALL of tailwind into style tags
  2. The html selector doesn't select anything in shadow scopes

To resolve number 1 here is pretty interesting. Constructable Stylesheets allow you to use the browser's CSS parser to create a single stylesheet reference that can be passed around by JavaScript. You then can "adopt" these stylesheets from either the global document object in the DOM, or individual shadow roots. For example:

const tailwindEl = document.querySelector('x-tailwind');
const stylesheet = new CSSStyleSheet();
stylesheet.replaceSync(/* tailwind css string */);
tailwindEl.shadowRoot.adoptedStyleSheets = [stylesheet];

This is nothing Tailwind should specifically be responsible for, but since you wanted a detailed explanation, I figured I'd throw this in there too. My package essentially takes care of all this for you, with React.

Moving on to number 2, this part falls on Tailwind.

... anything targeting html or body don't end up doing anything because those elements don't exist?

Yes, each shadow root does not own its own html or body tags, so selecting them does nothing. The :host selector actually selects the outer element where the shadow root is attached. In the above case, that would select the <x-tailwind> element I made up.

You can demonstrate this issue in action:

<div>
  <template shadowrootmode="open">
    <style>
      html {
        line-height: 1.5;
        -webkit-text-size-adjust: 100%;
        -moz-tab-size: 4;
        -o-tab-size: 4;
        tab-size: 4;
        font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
        font-feature-settings: normal;
        font-variation-settings: normal;
      }
    </style>
    <div>
      The HTML selector doesn't select anything in this scope. Try swapping the <code>html</code> selector with the <code>:host</code> selector and watch what happens.
    </div>
  </template>
</div>

Are there any downsides or things that would break? Could anyone be relying on that behavior today deliberately?

When used at the global level, :root and html target the same element. As long as you're targeting both :root and :host, I can't think of any scenario where this could break something. But just in case I'm missing one, here's what I know about the behavior of :root versus html:

  • :root has a higher specificity level than html.
  • :root may target <html>, <svg>, <xml>, etc, depending on what document the CSS is styling.

Also worth mentioning, I think it would be useful to add a quick little all: initial; above all the :root, :host style rules to guarantee there's no contamination from the global scope. There are few things that can pass through a shadow DOM boundary, but nevertheless, more than zero. There may be some things that make sense to inherit, such as visibility or cursor.

But that may end up being branched off into its own separate conversation, tbh. Personally, I would be happy even with just html, :host.

brandonmcconnell and others added 2 commits September 8, 2023 10:24
Supports SVG root scope, ShadowDOM, and presumably other root scopes
@reinink reinink force-pushed the extend-root-styles-to-host branch from 87012b2 to 8640184 Compare September 8, 2023 14:24
@brandonmcconnell
Copy link
Contributor Author

@reinink Did you notice any adverse effects to using :root over html?

:root seemed like the better option to me second target any root scopes, like SVG roots, do Tailwind CSS Stylesheets could be imported and used directly within a SVG file. It also has the added perk that :root has higher specificity than html.


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

@jonathandewitt-dev
Copy link

After mulling it over, I suppose someone could be depending on that level of specificity. If somone added html overrides after the Tailwind stylesheet, their overrides may break.

@reinink
Copy link
Member

reinink commented Sep 8, 2023

Hey @jonathandewitt-dev, thanks so much for that detailed explanation. I meant to respond sooner after making those changes (actually had the following written up already), but got distracted with something else.

I think we've got a decent handle on how this shadow DOM stuff works now, and I think your last solution is actually the right approach — to use html, :host instead of :root, :host, since the primary motivation for this change is to support the shadow DOM.

Our concern with using :root is the higher specificity over html. If someone has made changes to their html styles, switching Preflight to use :root would prevent those overrides from working. For example, the user's custom line-height here would no longer be applied:

@tailwind base;

html {
  line-height: 1;
}

As for the suggestion to add all: initial; to the top of Preflight, this feels like it could cause similar breaking changes. I think for now if you're working with the shadow DOM, just insert this rule yourself, since that's trivial enough to do.

Given all that, I've gone ahead and updated this PR to use html, :host.

Thanks to you and @brandonmcconnell for this contribution 👍

@reinink reinink changed the title Extend preflight html styles to support other :root, :host scopes Update Preflight html styles to include shadow DOM :host pseudo-class Sep 8, 2023
thecrypticace pushed a commit that referenced this pull request Dec 18, 2023
…lass (#11200)

* Extend current preflight `html` styles to support other root/host scopes

Supports SVG root scope, ShadowDOM, and presumably other root scopes

* Replace `:root` with `html`

* Update tests

* Update changelog

---------

Co-authored-by: Jonathan Reinink <[email protected]>
@brandonmcconnell
Copy link
Contributor Author

@reinink I just stumbled across this old PR and realized that replacing :root with :where(:root) in your Play reduces its specificity, allowing both either :root or html to override the default style while also adding support for non-html :root contexts.

Not sure how helpful that would be, but let me know if you want me to put in a PR for that.

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.

5 participants