yewprint 0.4.1

Port of blueprintjs.com to Yew
Documentation
use yew::prelude::*;

#[derive(Clone, PartialEq, Properties)]
pub struct RadioProps {
    #[prop_or_default]
    pub disabled: bool,
    #[prop_or_default]
    pub inline: bool,
    #[prop_or_default]
    pub large: bool,
    #[prop_or(false)]
    pub checked: bool,
    #[prop_or_default]
    pub name: Option<AttrValue>,
    #[prop_or_default]
    pub onchange: Callback<Event>,
    #[prop_or_default]
    pub label: Html,
    #[prop_or_default]
    pub value: Option<AttrValue>,
    #[prop_or_default]
    pub class: Classes,
}

#[function_component(Radio)]
pub fn radio(
    RadioProps {
        disabled,
        inline,
        large,
        checked,
        name,
        onchange,
        label,
        value,
        class,
    }: &RadioProps,
) -> Html {
    html! {
        <label
            class={classes!(
                "bp3-control",
                "bp3-radio",
                disabled.then_some("bp3-disabled"),
                inline.then_some("bp3-inline"),
                large.then_some("bp3-large"),
                class.clone(),
            )}
        >
            <input
                type="radio"
                {onchange}
                disabled={*disabled}
                {value}
                checked={*checked}
                {name}
            />
            <span
                class={classes!("bp3-control-indicator")}
            >
            </span>
            {label.clone()}
        </label>
    }
}