Components / Button
Button
Clickable, focusable button with styles, sizes, icons, loading and selected states.
Example
The component itself, running in WebAssembly, beside its code in a playground. Try it.
Code
use ravenrs::prelude::*;
fn button() -> impl View {
let clicks = State::new(0);
let add = clicks.clone();
VStack::new((
HStack::new((
Button::new("Save").on_click(move || add.update(|n| *n += 1)),
Button::new("Cancel").style(ButtonStyle::Secondary),
Button::new("Show more").style(ButtonStyle::Ghost),
Button::new("Delete").style(ButtonStyle::Danger).icon(IconName::Trash2),
))
.spacing(8.0)
.wrap(),
HStack::new((
Button::new("Upload").style(ButtonStyle::Secondary).loading(true),
Button::new("Show grid").style(ButtonStyle::Secondary).selected(true),
Button::new("Open").style(ButtonStyle::Ghost).shortcut("F8"),
))
.spacing(8.0)
.wrap(),
Text::bound(&clicks, |n| format!("Saved {n} times")).foreground(Semantic::InkMuted),
))
.spacing(12.0)
}