Open Source · MIT / Apache-2.0

UI components for Rust,
done right.

The missing piece of the Rust web ecosystem. Ship accessible, production-quality interfaces in Leptos and Dioxus without rebuilding everything from scratch.

app.rs
use stratum_leptos::*;

#[component]
fn App() -> impl IntoView {
    view! {
        <ThemeProvider theme=Theme::default()>
            <Button variant=ButtonVariant::Primary>
                "Save changes"
            </Button>
        </ThemeProvider>
    }
}
50+
Components
676
Tests Passing
7
Themes
0
Unsafe Code

Use the layer you need.

Need full control? Use the headless primitives. Want to ship fast? Use styled components. Each layer works independently or together.

Your Application
stratum-leptos / stratum-dioxus
Framework adapters bridge your framework's reactivity model to NexusStratum components.
stratum-components
Styled Layer
Tailwind defaults. Override anything with a class prop.
stratum-theme
Design Tokens
Change one config — every component updates.
stratum-security
Security
XSS, CSP, CSRF, SRI baked into every render path.
stratum-primitives
Headless Layer
Pure logic. ARIA, keyboard, focus — zero styling.
stratum-core
Foundation
Component trait, event system, render output, ID generation.

See what's included.

View all

Same components. Your syntax.

Leptos
Signals, SSR, hydration.
dialog.rs
use stratum_leptos::*;

view! {
    <Dialog open=show>
        <DialogTitle>"Confirm"</DialogTitle>
        <Button on_click=handle>
            "Continue"
        </Button>
    </Dialog>
}
Dioxus
Hooks, web + desktop + mobile.
dialog.rs
use stratum_dioxus::*;

rsx! {
    Dialog { open: show,
        DialogTitle { "Confirm" }
        Button {
            on_click: handle,
            "Continue"
        }
    }
}

Start building in minutes.

Add NexusStratum to your Rust project and ship your first component in five lines of code.