Leptos UI
Macros to build UI components easily with Leptos and Tailwind CSS. Built on top of tw_merge.
Features
clx!: Creates components with childrenvoid!: Creates self-closing components (<img />,<input />, etc.)
Both support automatic data-name attributes and Tailwind CSS class merging, without class conflicts.
Example in Production
This crate is used in rust-ui.com — check it out to see Leptos UI and Tailwind CSS in action :)
Usage
Basic Component with clx!
// components/ui/card.rs
use *;
use clx;
pub use *;
// components/demos/demo_card.rs
Basic component with void!
use *;
use void;
// Define self-closing components
void!
void!
void!
VSCode Tailwind CSS IntelliSense
Enable autocomplete and conflict detection for Tailwind classes inside clx! and void! macros:
-
Install the "Tailwind CSS IntelliSense" Visual Studio Code extension
-
Add the following to your
settings.json:
This enables:
- Tailwind class autocomplete in Rust files
- Real-time conflict detection (e.g.,
w-full w-fit) - Hover documentation for Tailwind classes

Changelog
September 2025 - leptos_ui v0.2 Breaking Changes
We refactored the leptos_ui crate with breaking changes.
New macro system:
clx!: Elements with childrenvoid!: Self-closing elements (no children)
See MDN Docs for reference about void elements.
Attribute changes: Removed direct props from macros. Use attr:* and prop:* pattern instead:
// Define component
void!
// Before
<MyInput value=move || url.to_string readonly=true class="flex-1" />
// After
<MyInput prop:value=move || url.to_string attr:readonly=true class="flex-1" />
License
This project is licensed under the MIT License. See the LICENSE file for details.