maud-extensions 0.5.0

Component, inline CSS/JS, and font helper macros for Maud views.
Documentation
use maud::{Markup, Render, html};
use maud_extensions::ComponentBuilder;

#[derive(ComponentBuilder)]
struct Banner<'a> {
    label: &'a str,
    #[slot]
    header: Option<Markup>,
    #[slot(default)]
    body: Markup,
}

impl<'a> Render for Banner<'a> {
    fn render(&self) -> Markup {
        html! {
            section {
                @if let Some(header) = &self.header {
                    header { (header) }
                }
                p data-label=(self.label) { (self.body) }
            }
        }
    }
}

struct Heading;

impl Render for Heading {
    fn render(&self) -> Markup {
        html! { h1 { "Heads up" } }
    }
}

fn main() {
    let _ = Banner::new()
        .label("notice")
        .header(Heading)
        .body(html! { "Body" })
        .build()
        .render();
}