pub fn icon<Msg>(icon: crate::ZsIcon) -> ViewNode<Msg> {
ViewNode::new(ViewNodeKind::Icon {
icon,
size: crate::ZsIconSize::Standard,
color: ColorRole::PrimaryText,
})
.flex(0.0)
}
impl<Msg> ViewNode<Msg> {
pub fn icon_size(mut self, size: crate::ZsIconSize) -> Self {
if let ViewNodeKind::Icon { size: current, .. } = &mut self.kind {
*current = size;
self.icon_role = None;
}
self
}
pub fn icon_role(mut self, role: crate::ZsIconRole) -> Self {
if matches!(self.kind, ViewNodeKind::Icon { .. }) { self.icon_role = Some(role); }
self
}
pub fn icon_color(mut self, color: ColorRole) -> Self {
if let ViewNodeKind::Icon { color: current, .. } = &mut self.kind {
*current = color;
}
self
}
}