use crate::{class::Class, format_class};
use dioxus::prelude::*;
use zino_core::{JsonValue, SharedString};
pub fn FixedWidthSpan(props: FixedWidthSpanProps) -> Element {
let class = format_class!(props, "is-inline-block");
let mut style = match props.width {
JsonValue::Number(value) => format!("width:{value}px;"),
JsonValue::String(value) => format!("width:{value};"),
_ => String::new(),
};
if let Some(alignment) = props.align.as_deref() {
style.push_str("text-align:");
style.push_str(alignment);
}
rsx! {
span {
class: "{class}",
style: "{style}",
{ props.children }
}
}
}
#[derive(Clone, PartialEq, Props)]
pub struct FixedWidthSpanProps {
#[props(into)]
pub class: Option<Class>,
#[props(into)]
pub width: JsonValue,
#[props(into)]
pub align: Option<SharedString>,
children: Element,
}