From f7d988e1827373d2c9440b03aa5d49190e2f3d8b Mon Sep 17 00:00:00 2001 From: Robin Malfait Date: Wed, 5 Mar 2025 22:06:26 +0100 Subject: [PATCH 1/3] add failing test --- crates/oxide/src/extractor/mod.rs | 1 + crates/oxide/src/extractor/named_utility_machine.rs | 2 ++ crates/oxide/src/extractor/utility_machine.rs | 1 + 3 files changed, 4 insertions(+) diff --git a/crates/oxide/src/extractor/mod.rs b/crates/oxide/src/extractor/mod.rs index b60720e25dda..0a5b972dcb08 100644 --- a/crates/oxide/src/extractor/mod.rs +++ b/crates/oxide/src/extractor/mod.rs @@ -297,6 +297,7 @@ mod tests { ("flex block", vec!["flex", "block"]), // Simple utility with dashes ("items-center", vec!["items-center"]), + ("items--center", vec!["items--center"]), // Simple utility with numbers ("px-2.5", vec!["px-2.5"]), // Arbitrary properties diff --git a/crates/oxide/src/extractor/named_utility_machine.rs b/crates/oxide/src/extractor/named_utility_machine.rs index 1284091b945c..c576413ea2f6 100644 --- a/crates/oxide/src/extractor/named_utility_machine.rs +++ b/crates/oxide/src/extractor/named_utility_machine.rs @@ -388,6 +388,8 @@ mod tests { ("a", vec!["a"]), // With dashes ("items-center", vec!["items-center"]), + // With double dashes + ("items--center", vec!["items--center"]), // With numbers ("px-5", vec!["px-5"]), ("px-2.5", vec!["px-2.5"]), diff --git a/crates/oxide/src/extractor/utility_machine.rs b/crates/oxide/src/extractor/utility_machine.rs index 98f76351e258..ea5241a2d4d9 100644 --- a/crates/oxide/src/extractor/utility_machine.rs +++ b/crates/oxide/src/extractor/utility_machine.rs @@ -219,6 +219,7 @@ mod tests { ("flex! block", vec!["flex!", "block"]), // With dashes ("items-center", vec!["items-center"]), + ("items--center", vec!["items--center"]), // Inside a string ("'flex'", vec!["flex"]), // Multiple utilities From 6dbc234360ca36b459c3e21ce49a6fba417d3483 Mon Sep 17 00:00:00 2001 From: Robin Malfait Date: Wed, 5 Mar 2025 22:06:34 +0100 Subject: [PATCH 2/3] allow consecutive dashes in named utility Some people using `--` inside of a utility name to give it some sort of namespace. This allows you to write `foo--bar`. --- crates/oxide/src/extractor/named_utility_machine.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/crates/oxide/src/extractor/named_utility_machine.rs b/crates/oxide/src/extractor/named_utility_machine.rs index c576413ea2f6..a7fab0407a64 100644 --- a/crates/oxide/src/extractor/named_utility_machine.rs +++ b/crates/oxide/src/extractor/named_utility_machine.rs @@ -171,7 +171,9 @@ impl Machine for NamedUtilityMachine { // ^ Invalid // E.g.: `flex-2` // ^ Valid - Class::AlphaLower | Class::AlphaUpper | Class::Number => { + // E.g.: `foo--bar` + // ^ Valid + Class::AlphaLower | Class::AlphaUpper | Class::Number | Class::Dash => { cursor.advance(); } From 992273ccb0db84b68f0774506eaa4eece8309b0d Mon Sep 17 00:00:00 2001 From: Robin Malfait Date: Wed, 5 Mar 2025 22:21:06 +0100 Subject: [PATCH 3/3] update changelog --- CHANGELOG.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a4406b1121c..31c8de14d10a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - _Experimental_: Add `user-valid` and `user-invalid` variants ([#12370](https://github.com/tailwindlabs/tailwindcss/pull/12370)) - _Experimental_: Add `wrap-anywhere`, `wrap-break-word`, and `wrap-normal` utilities ([#12128](https://github.com/tailwindlabs/tailwindcss/pull/12128)) +### Fixed + +- Ensure classes containing `--` are extracted correctly ([#16972](https://github.com/tailwindlabs/tailwindcss/pull/16972)) + ## [4.0.10] - 2025-03-05 ### Added @@ -41,7 +45,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Removed `max-w-auto` and `max-h-auto` utilities as they generate invalid CSS ([#16917](https://github.com/tailwindlabs/tailwindcss/pull/16917)) - Replaced the existing candidate extractor with a brand new extractor to improve maintainability, correctness, and performance ([#16306](https://github.com/tailwindlabs/tailwindcss/pull/16306)) - ## [4.0.9] - 2025-02-25 ### Fixed