macro_rules! classes {
($($class:expr),+ $(,)?) => { ... };
}Expand description
Merges multiple CSS class values into a single space-separated string.
This macro accepts any number of expressions that implement ClassPart. Values are joined with spaces, and
empty or None values are automatically skipped.
ยงExamples
Basic usage with string literals and optional classes:
use plait::{html, classes, render};
let is_active = true;
let variant = Some("primary");
let html = render(html! {
div(class: classes!(
"btn",
if is_active { "active" } else { "" },
variant,
)) {
"Button"
}
});
assert_eq!(html, "<div class=\"btn active primary\">Button</div>");Using classes! inside a component:
use plait::{component, html, classes, render};
component! {
fn Button(variant: Option<&str>) {
button(class: classes!("btn", variant), #attrs) {
#children
}
}
}
let html = render(html! {
@Button(variant: Some("btn-primary")) { "Submit" }
});
assert_eq!(html, "<button class=\"btn btn-primary\">Submit</button>");