use crate::ViewExt;
use nami::{Computed, Signal, signal::IntoComputed};
use waterui_core::View;
use waterui_core::configurable;
use waterui_core::handler::AnyViewBuilder;
use waterui_graphics::color::Color;
#[derive(Debug)]
pub struct BadgeConfig {
pub value: Computed<i32>,
pub content: AnyViewBuilder,
pub color: Computed<Color>,
}
configurable!(
Badge,
BadgeConfig
);
impl Badge {
pub fn new(value: impl IntoComputed<i32>, content: impl View + Clone) -> Self {
Self(BadgeConfig {
value: value.into_computed(),
content: AnyViewBuilder::new(move || content.clone().anyview()),
color: Color::default().into_computed(),
})
}
#[must_use]
pub fn color(mut self, color: impl Signal<Output = Color>) -> Self {
self.0.color = color.into_computed();
self
}
}