From 3023d3065e5e16bed67d8dbd64348bdefe73228a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 8 Feb 2026 02:22:46 +0000 Subject: [PATCH 1/6] Initial plan From bb97c18ba7cb693b4e89fd2ff51a7f3f881aff62 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 8 Feb 2026 02:30:25 +0000 Subject: [PATCH 2/6] Add ironhtml-tailwind crate with type-safe Tailwind utilities Co-authored-by: dannywillems <6018454+dannywillems@users.noreply.github.com> --- Cargo.toml | 1 + crates/ironhtml-tailwind/Cargo.toml | 16 + crates/ironhtml-tailwind/README.md | 176 +++++++++ .../examples/tailwind_demo.rs | 180 +++++++++ crates/ironhtml-tailwind/src/backgrounds.rs | 85 +++++ crates/ironhtml-tailwind/src/borders.rs | 208 +++++++++++ crates/ironhtml-tailwind/src/effects.rs | 117 ++++++ crates/ironhtml-tailwind/src/flexbox.rs | 98 +++++ crates/ironhtml-tailwind/src/grid.rs | 87 +++++ crates/ironhtml-tailwind/src/layout.rs | 139 +++++++ crates/ironhtml-tailwind/src/lib.rs | 344 ++++++++++++++++++ crates/ironhtml-tailwind/src/sizing.rs | 120 ++++++ crates/ironhtml-tailwind/src/spacing.rs | 197 ++++++++++ crates/ironhtml-tailwind/src/typography.rs | 224 ++++++++++++ 14 files changed, 1992 insertions(+) create mode 100644 crates/ironhtml-tailwind/Cargo.toml create mode 100644 crates/ironhtml-tailwind/README.md create mode 100644 crates/ironhtml-tailwind/examples/tailwind_demo.rs create mode 100644 crates/ironhtml-tailwind/src/backgrounds.rs create mode 100644 crates/ironhtml-tailwind/src/borders.rs create mode 100644 crates/ironhtml-tailwind/src/effects.rs create mode 100644 crates/ironhtml-tailwind/src/flexbox.rs create mode 100644 crates/ironhtml-tailwind/src/grid.rs create mode 100644 crates/ironhtml-tailwind/src/layout.rs create mode 100644 crates/ironhtml-tailwind/src/lib.rs create mode 100644 crates/ironhtml-tailwind/src/sizing.rs create mode 100644 crates/ironhtml-tailwind/src/spacing.rs create mode 100644 crates/ironhtml-tailwind/src/typography.rs diff --git a/Cargo.toml b/Cargo.toml index 555458b..d0a16ed 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,6 +14,7 @@ ironhtml-attributes = { path = "crates/ironhtml-attributes" } ironhtml = { path = "crates/ironhtml" } ironhtml-macro = { path = "crates/ironhtml-macro" } ironhtml-bootstrap = { path = "crates/ironhtml-bootstrap" } +ironhtml-tailwind = { path = "crates/ironhtml-tailwind" } proc-macro2 = "1" quote = "1" syn = { version = "2", features = ["full", "parsing", "extra-traits"] } diff --git a/crates/ironhtml-tailwind/Cargo.toml b/crates/ironhtml-tailwind/Cargo.toml new file mode 100644 index 0000000..25106b4 --- /dev/null +++ b/crates/ironhtml-tailwind/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "ironhtml-tailwind" +version.workspace = true +edition.workspace = true +license.workspace = true +repository.workspace = true +description = "Type-safe Tailwind CSS utilities for ironhtml with compile-time conflict detection" +keywords = ["html", "tailwind", "css", "type-safe"] +categories = ["web-programming"] + +[lints] +workspace = true + +[dependencies] +ironhtml.workspace = true +ironhtml-elements.workspace = true diff --git a/crates/ironhtml-tailwind/README.md b/crates/ironhtml-tailwind/README.md new file mode 100644 index 0000000..0173fc1 --- /dev/null +++ b/crates/ironhtml-tailwind/README.md @@ -0,0 +1,176 @@ +# ironhtml-tailwind + +Type-safe Tailwind CSS utilities for [ironhtml](https://github.com/LeakIX/ironhtml) with ergonomic API and full IDE support. + +## Features + +- **Type-safe**: All Tailwind utilities are strongly typed enums +- **Ergonomic**: Fluent API that integrates seamlessly with ironhtml +- **Responsive**: Built-in support for responsive breakpoints (sm, md, lg, xl, 2xl) +- **State variants**: Support for hover, focus, active, and other pseudo-classes +- **Arbitrary values**: Escape hatch for custom classes +- **No runtime overhead**: All abstractions compile away +- **no_std compatible**: Works in embedded and WASM environments + +## Quick Start + +Add to your `Cargo.toml`: + +```toml +[dependencies] +ironhtml = "1.0" +ironhtml-tailwind = "1.0" +``` + +## Usage + +### Basic Example + +```rust +use ironhtml::typed::Element; +use ironhtml_elements::Div; +use ironhtml_tailwind::*; + +let element = Element::
::new() + .tw(Padding::X(4)) // px-4 + .tw(TextAlign::Center) // text-center + .tw(Display::Flex) // flex + .tw(FontWeight::Bold); // font-bold + +let html = element.render(); +//
+``` + +### Responsive Design + +```rust +use ironhtml::typed::Element; +use ironhtml_elements::Div; +use ironhtml_tailwind::*; + +let element = Element::
::new() + .tw(Padding::X(4)) // Mobile: px-4 + .tw_md(Padding::X(8)) // Tablet: md:px-8 + .tw_lg(Padding::X(12)); // Desktop: lg:px-12 +``` + +### Interactive States + +```rust +use ironhtml::typed::Element; +use ironhtml_elements::Button; +use ironhtml_tailwind::*; + +let button = Element::