#![allow(non_snake_case)]

//! Example: README.md showcase
//!
//! The example from the README.md.

use dioxus::prelude::*;

fn main() {
    dioxus_desktop::launch(app);
}

fn app(cx: Scope) -> Element {
    cx.render(rsx! {
        Button {
            a: "asd".to_string(),
            c: "asd".to_string(),
            d: Some("asd".to_string()),
            e: "asd".to_string(),
        }
    })
}

type SthElse<T> = Option<T>;

#[derive(Props, PartialEq)]
struct ButtonProps {
    a: String,

    #[props(default)]
    b: String,

    c: Option<String>,

    #[props(!optional)]
    d: Option<String>,

    #[props(optional)]
    e: SthElse<String>,
}

fn Button(cx: Scope<ButtonProps>) -> Element {
    cx.render(rsx! {
        button {
            "{cx.props.a} | "
            "{cx.props.b:?} | "
            "{cx.props.c:?} | "
            "{cx.props.d:?} | "
            "{cx.props.e:?}"
        }
    })
}