macro_rules! component {
(
$vis:vis $ElementName:ident $([$AttributeName:ident])? $({
$($attribute:ident $(: $atype:ty)?),* $(,)?
})?;
|$attributes:pat_param, $extra_attributes:pat_param, $children:pat_param| $body:expr
) => { ... };
}
Available on crate feature
typed
only.Expand description
Make a typed HTML node.
§Examples
§Passing Type-Checking
use html_node::typed::{self, elements::*};
typed::component! {
CustomBody {
r: u8,
g: u8,
b: u8,
width: i32,
};
|CustomBodyAttributes { r, g, b, width }, _, children| typed::html! {
<div style={format!("background-color: rgb({r}, {g}, {b}); width: {width}px;")}>
{ children }
</div>
}
}
let html = typed::html! {
<CustomBody component r=255 g=0 b=0 width=100>"Hello, world!"</CustomBody>
};
let expected = "\
<div style=\"background-color: rgb(255, 0, 0); width: 100px;\">\
Hello, world!\
</div>\
";
assert_eq!(html.to_string(), expected);