2 releases
Uses new Rust 2024
| 0.13.2 | Mar 30, 2026 |
|---|---|
| 0.13.0 | Mar 16, 2026 |
#1969 in GUI
Used in dioxus-nox
34KB
351 lines
dioxus-nox-drawer
⚠️ Disclaimer: This crate was entirely generated by AI (Claude) as part of a personal learning project. It has not been battle-tested in production and may contain bugs or unsound abstractions. Use at your own risk and exercise extreme caution before depending on it in anything that matters.
Headless drawer/sheet primitive that slides from any edge.
Quick start
use dioxus::prelude::*;
use dioxus_nox_drawer::*;
#[component]
fn App() -> Element {
let mut open = use_signal(|| false);
rsx! {
button { onclick: move |_| open.set(true), "Open Drawer" }
drawer::Root {
open: *open.read(),
on_close: move |_| open.set(false),
side: DrawerSide::Right,
drawer::Overlay {}
drawer::Content {
h2 { "Drawer content" }
}
}
}
}
Data attributes
| Attribute | Component | Values |
|---|---|---|
data-state |
Root, Content | "open" | "closed" |
data-side |
Content | "left" | "right" | "bottom" | "top" |
dioxus-nox-drawer
Headless drawer/sheet primitive for Dioxus that slides from any edge.
Features
- Compound component pattern:
drawer::Root/drawer::Overlay/drawer::Content - Four sides: Left, Right (default), Bottom, Top
- Focus trap, scroll lock, background inert
- Configurable: ESC close, overlay close
Usage
use dioxus::prelude::*;
use dioxus_nox_drawer::*;
#[component]
fn App() -> Element {
let mut open = use_signal(|| false);
rsx! {
button { onclick: move |_| open.set(true), "Open" }
drawer::Root {
open: *open.read(),
on_close: move |_| open.set(false),
side: DrawerSide::Bottom,
drawer::Overlay {}
drawer::Content {
h2 { "Sheet content" }
}
}
}
}
Dependencies
~7–16MB
~243K SLoC