Leptos
Using NexusStratum with Leptos 0.8+.
Setup
Cargo.toml
[dependencies]
stratum = { version = "0.1", features = ["leptos", "tailwind", "icons"] }Basic Usage
app.rs
use stratum_leptos::*;
#[component]
fn App() -> impl IntoView {
view! {
<ThemeProvider theme=Theme::default()>
<Button>"Click me"</Button>
</ThemeProvider>
}
}What stratum-leptos Provides
- StratumAdapter — converts DOM events to
ComponentEvent, renders ARIA attributes - ThemeContext — provides theme to all children via Leptos context
- ToasterContext — manages toast notifications
- All component re-exports —
use stratum_leptos::*gives you everything
Event Conversion
events.rs
use stratum_leptos::StratumAdapter;
// Convert a Leptos keyboard event to stratum ComponentEvent
let event = StratumAdapter::keydown_event(
"Enter", false, false, false, false
);
// Convert a click
let event = StratumAdapter::click_event(100.0, 200.0, 0);Dark Mode
dark.rs
use stratum_leptos::provider::{ThemeContext, DarkMode};
let ctx = ThemeContext::new(Theme::default(), DarkMode::System);
let css = ctx.css_variables(); // includes @media prefers-color-scheme