| Crates.io | leptos_styling |
| lib.rs | leptos_styling |
| version | 0.3.1 |
| created_at | 2025-05-04 08:43:03.969324+00 |
| updated_at | 2025-12-25 19:15:55.127084+00 |
| description | A powerful styling solution for Leptos applications that enables seamless integration of CSS and SCSS stylesheets with type-safe class names and zero runtime overhead. |
| homepage | |
| repository | https://github.com/TimTom2016/leptos_styling |
| max_upload_size | |
| id | 1659462 |
| size | 82,336 |
Leptos Styling is a powerful styling solution for Leptos applications that enables seamless integration of CSS and SCSS stylesheets. It intelligently manages stylesheet embedding in both SSR (Server-Side Rendering) and CSR (Client-Side Rendering) modes.
This crate internally uses turf macros for efficient CSS processing and management.
Add the following to your Cargo.toml:
[dependencies]
leptos_styling = "0.3.0"
[features]
ssr = ["leptos_styling/ssr"]
use leptos::prelude::*;
use leptos_styling::{style_sheet, inline_style_sheet};
// Import from external CSS file
style_sheet!(green_button, "src/green_button.css", "green_button");
// Or define styles inline
inline_style_sheet! {red_button, "red_button",
.button {
background-color: red;
padding: 8px 16px;
border-radius: 4px;
}
}
#[component]
pub fn MyButtons() -> impl IntoView {
view! {
<div>
<button class=green_button::BUTTON>"Green Button"</button>
<button class=red_button::BUTTON>"Red Button"</button>
</div>
}
}
#[cfg(feature = "hydrate")]
#[wasm_bindgen::prelude::wasm_bindgen]
pub fn hydrate() {
// Initialize styling system
leptos_styling::init();
// Mount your app
leptos::mount::hydrate_body(App);
}
No special setup is required. Stylesheets are registered and managed automatically.
async fn main() {
let leptos_options = get_configuration(None).unwrap().leptos_options;
// Generate stylesheets (Required for SSR)
generate_style_sheets(leptos_options.clone());
let app = Router::new()
.leptos_routes(&leptos_options, routes, move || {
provide_meta_context();
view! { <App/> }
});
// Start your server...
}
#[component]
pub fn App() -> impl IntoView {
provide_meta_context();
view! {
<Html attr:lang="en"/>
<StyleSheets/> // Include this to inject styles
<Router>
// Your routes here
</Router>
}
}
| Flag | Description |
|---|---|
ssr |
Enable server-side rendering support |
csr |
Enable client-side rendering support |
| Leptos Styling | Leptos Version |
|---|---|
| 0.2.x - 0.3.x | 0.8 |
| 0.1.x | 0.7 |
We welcome contributions!
This project is licensed under the MIT License - see the LICENSE file for details.