mod spacing;
use yew::{classes, function_component, html, AttrValue, Children, Classes, Html, Properties};
use zu_util::prop::ToAttr;
use crate::styles::flex_direction::FlexDirection;
use crate::styles::spacing::Spacing;
use crate::styles::CssClass;
#[derive(Debug, Clone, PartialEq, Properties)]
pub struct Props {
#[prop_or_default]
pub children: Children,
#[prop_or_default]
pub classes: Classes,
#[prop_or(AttrValue::from("div"))]
pub component: AttrValue,
#[prop_or_default]
pub direction: FlexDirection,
#[prop_or_default]
pub divider: Html,
#[prop_or_default]
pub spacing: Spacing,
#[prop_or_default]
pub style: AttrValue,
#[prop_or(false)]
pub use_flex_gap: bool,
}
#[function_component(Stack)]
pub fn stack(props: &Props) -> Html {
let root_cls = classes!(
"ZuStack-root",
props.direction.css_class(),
spacing::css_cls(props.spacing),
props.classes.clone(),
);
html! {
<@{props.component.to_string()}
class={root_cls}
style={props.style.to_attr()}>
{for props.children.iter()}
</@>
}
}