#![allow(non_snake_case)] use dioxus::prelude::*; fn main() { dioxus_desktop::launch(App); } pub fn App(cx: Scope) -> Element { cx.render(rsx!( Empty {}, Children {}, Fragments {}, Attributes {}, VariableAttributes {}, CustomAttributes {}, Formatting {}, Expression {}, )) } pub fn Empty(cx: Scope) -> Element { // ANCHOR: empty cx.render(rsx!(div {})) // ANCHOR_END: empty } pub fn Children(cx: Scope) -> Element { // ANCHOR: children cx.render(rsx!(ol { li {"First Item"} li {"Second Item"} li {"Third Item"} })) // ANCHOR_END: children } pub fn Fragments(cx: Scope) -> Element { // ANCHOR: fragments cx.render(rsx!( p {"First Item"}, p {"Second Item"}, Fragment { span { "a group" }, span { "of three" }, span { "items" }, } )) // ANCHOR_END: fragments } pub fn Attributes(cx: Scope) -> Element { // ANCHOR: attributes cx.render(rsx!(a { href: "https://www.youtube.com/watch?v=dQw4w9WgXcQ", class: "primary_button", "Log In" })) // ANCHOR_END: attributes } pub fn VariableAttributes(cx: Scope) -> Element { // ANCHOR: variable_attributes let written_in_rust = true; let button_type = "button"; cx.render(rsx!(button { disabled: "{written_in_rust}", class: "{button_type}", "Rewrite it in rust" })) // ANCHOR_END: variable_attributes } pub fn CustomAttributes(cx: Scope) -> Element { // ANCHOR: custom_attributes cx.render(rsx!(b { "customAttribute": "value", "Rust is Cool" })) // ANCHOR_END: custom_attributes } pub fn Formatting(cx: Scope) -> Element { // ANCHOR: formatting let coordinates = (42, 0); let country = "es"; cx.render(rsx!(div { class: "country-{country}", "Coordinates: {coordinates:?}", // arbitrary expressions are allowed, // as long as they don't contain `{}` div { "{country.to_uppercase()}" }, div { "{7*6}" }, })) // ANCHOR_END: formatting } pub fn Expression(cx: Scope) -> Element { // ANCHOR: expression let text = "Dioxus"; cx.render(rsx!(span { text.to_uppercase() })) // ANCHOR_END: expression }