No description
Find a file
Ifeanyi Madu ff8b2a0db9
Fix extraction of quoted arbitrary variants in v3 (#20374)
## Summary

Fixes #18387.

The v3 default extractor did not capture the complete candidate when a
standard variant preceded an arbitrary selector containing quoted
values, such as
`focus-visible:[&:not([aria-selected="true"])]:bg-red-500`.

The quote-aware pattern allowed quote characters in the standard-variant
portion, causing extraction to begin at the surrounding `class` or
`className` attribute and split the candidate. This change excludes
single and double quotes from that portion of the pattern while
continuing to allow quotes inside arbitrary variants.

Regression tests cover both single- and double-quoted selectors with
preceding `focus-visible` and `hover` variants.

[ci-all]

## Test plan

* `npx jest tests/default-extractor.test.js
tests/arbitrary-variants.test.js --runInBand`
* `npm test -- --runInBand`

Results:

* 86 test suites passed
* 1,060 tests passed
* 1 test marked todo
* 4 snapshots passed

---------

Co-authored-by: Robin Malfait <malfait.robin@gmail.com>
2026-08-03 15:57:26 +02:00
.github Fix prepare release workflow 2025-12-10 11:00:34 -05:00
integrations Fix native ESM config loading in v3 (#18938) 2025-09-16 14:03:09 -04:00
jest Print eventual lightning CSS parsing errors when the CSS matcher fail (#14034) 2024-07-23 14:40:11 +02:00
nesting Add types for the nesting plugin (#12269) 2023-10-23 15:49:22 -04:00
perf Performance improvements + memory leak fix (#3032) 2020-12-11 15:03:49 +01:00
scripts Cleanup oxide — Part #1 (#13304) 2024-03-21 18:23:31 +01:00
src Fix extraction of quoted arbitrary variants in v3 (#20374) 2026-08-03 15:57:26 +02:00
standalone-cli 3.4.19 2025-12-10 10:52:55 -05:00
stubs Use no value instead of blur(0px) for backdrop-blur-none and blur-none utilities (#13830) 2024-06-13 15:49:59 +02:00
tests Fix extraction of quoted arbitrary variants in v3 (#20374) 2026-08-03 15:57:26 +02:00
types Fix Plugin type issue (#14668) 2024-11-28 11:12:08 +01:00
.editorconfig Convert new stuff to use ES6 modules 2017-08-27 18:02:41 -04:00
.eslintignore Separate stable and oxide engines (#10359) 2023-01-19 11:58:25 -05:00
.eslintrc.json Remove duplicate prettier.config.js settings from .eslintrc.json (#5087) 2021-09-01 17:41:43 +02:00
.gitignore Add script for running integration tests 2023-01-21 11:28:24 -05:00
.swcrc Disable SWC “unused” minification 2023-04-25 17:42:58 -04:00
base.css Remove preflight CSS export in favor of base 2019-02-11 12:38:46 -05:00
CHANGELOG.md Fix extraction of quoted arbitrary variants in v3 (#20374) 2026-08-03 15:57:26 +02:00
colors.d.ts Add TypeScript types for the tailwind.config.js file (#7891) 2022-03-22 10:24:28 +01:00
colors.js Add default interop to public available functions (#6348) 2021-12-10 11:25:10 +01:00
components.css Move CSS files to root for easier imports 2018-03-13 10:05:24 -04:00
defaultConfig.d.ts Add TypeScript types for the tailwind.config.js file (#7891) 2022-03-22 10:24:28 +01:00
defaultConfig.js Add default interop to public available functions (#6348) 2021-12-10 11:25:10 +01:00
defaultTheme.d.ts Add more explicit types for the default theme (#8780) 2022-07-07 09:05:38 -04:00
defaultTheme.js Add default interop to public available functions (#6348) 2021-12-10 11:25:10 +01:00
LICENSE Update LICENSE 2022-02-05 15:22:47 -05:00
loadConfig.d.ts Enable ESM and TS based config files (#10785) 2023-03-15 17:04:18 -04:00
loadConfig.js Enable ESM and TS based config files (#10785) 2023-03-15 17:04:18 -04:00
package-lock.json 3.4.19 2025-12-10 10:52:55 -05:00
package.json 3.4.19 2025-12-10 10:52:55 -05:00
plugin.d.ts Make Config completely optional for plugins (#9502) 2022-10-07 10:45:22 -04:00
plugin.js Add default interop to public available functions (#6348) 2021-12-10 11:25:10 +01:00
prettier.config.js Add Prettier configuration file (prettier.config.js) (#3713) 2021-05-13 09:07:24 -04:00
README.md rename master to main 2024-08-07 17:18:38 +02:00
resolveConfig.d.ts Improve resolveConfig return type: merge themes (#12272) 2023-10-30 14:55:42 -04:00
resolveConfig.js Add default interop to public available functions (#6348) 2021-12-10 11:25:10 +01:00
screens.css Add screen.css file for postcss-import convenience 2019-05-12 10:36:59 -04:00
tailwind.css Undo accidental changes to CDN build process 2019-12-25 13:54:09 -05:00
turbo.json Cleanup oxide — Part #2 (#13312) 2024-03-22 17:12:14 +01:00
utilities.css Move CSS files to root for easier imports 2018-03-13 10:05:24 -04:00
variants.css JIT: Replace @tailwind screens with @tailwind variants (#4356) 2021-05-14 13:58:52 -04:00

Tailwind CSS

A utility-first CSS framework for rapidly building custom user interfaces.

Build Status Total Downloads Latest Release License


Documentation

For full documentation, visit tailwindcss.com.

Community

For help, discussion about best practices, or any other conversation that would benefit from being searchable:

Discuss Tailwind CSS on GitHub

For casual chit-chat with others using the framework:

Join the Tailwind CSS Discord Server

Contributing

If you're interested in contributing to Tailwind CSS, please read our contributing docs before submitting a pull request.