diff --git a/Sources/Slipstream/TailwindCSS/TailwindClassModifier.swift b/Sources/Slipstream/TailwindCSS/TailwindClassModifier.swift index f1a67080..d6c42c66 100644 --- a/Sources/Slipstream/TailwindCSS/TailwindClassModifier.swift +++ b/Sources/Slipstream/TailwindCSS/TailwindClassModifier.swift @@ -51,7 +51,12 @@ private struct TailwindClassModifierView: View { for child in shadowDOM.children() { for className in classNames.sorted() { if let condition { - try child.addClass("\(condition.tailwindClassModifiers):\(className)") + let modifiers = condition.tailwindClassModifiers + if modifiers.isEmpty { + try child.addClass(className) + } else { + try child.addClass("\(modifiers):\(className)") + } } else { try child.addClass(className) } diff --git a/Tests/SlipstreamTests/TailwindCSS/Spacing/PaddingTests.swift b/Tests/SlipstreamTests/TailwindCSS/Spacing/PaddingTests.swift index d86fecdf..fa947c5c 100644 --- a/Tests/SlipstreamTests/TailwindCSS/Spacing/PaddingTests.swift +++ b/Tests/SlipstreamTests/TailwindCSS/Spacing/PaddingTests.swift @@ -42,4 +42,13 @@ struct PaddingTests { )) == #"
"# ) } + + @Test func smallBreakpointProducesNoPrefix() throws { + // .small is treated as the base case in Tailwind's mobile-first model, + // so it should produce no prefix (not a stray colon like ":px-2") + try #expect( + renderHTML(Div {}.padding(.horizontal, 8, condition: .startingAt(.small))) + == #"
"# + ) + } }