use super::types::ToastSeverity;
pub const MLC_BG: (u8, u8, u8) = (20, 24, 33);
pub const MLC_BG_ALPHA: f64 = 0.92;
pub const MLC_ACCENT: (u8, u8, u8) = (59, 130, 246);
pub const MLC_BORDER_ALPHA: f64 = 0.6;
pub const MLC_TITLE_ALPHA: f64 = 1.0;
pub const MLC_TEXT: (u8, u8, u8) = (220, 220, 230);
pub const MLC_TEXT_ALPHA: f64 = 0.85;
pub const MLC_SHADOW: (u8, u8, u8) = (0, 0, 0);
pub const MLC_SHADOW_ALPHA: f64 = 0.4;
pub fn rgba(rgb: (u8, u8, u8), alpha: f64) -> String {
format!("rgba({},{},{},{:.2})", rgb.0, rgb.1, rgb.2, alpha)
}
pub fn accent_rgb(sev: ToastSeverity) -> (u8, u8, u8) {
match sev {
ToastSeverity::Info => MLC_ACCENT, ToastSeverity::Success => (34, 197, 94), ToastSeverity::Warning => (234, 179, 8), ToastSeverity::Error => (239, 68, 68), }
}
pub trait ToastTheme {
fn bg_info(&self) -> &str;
fn bg_success(&self) -> &str;
fn bg_warning(&self) -> &str;
fn bg_error(&self) -> &str;
fn text(&self) -> &str;
fn bg_for(&self, sev: ToastSeverity) -> &str {
match sev {
ToastSeverity::Info => self.bg_info(),
ToastSeverity::Success => self.bg_success(),
ToastSeverity::Warning => self.bg_warning(),
ToastSeverity::Error => self.bg_error(),
}
}
}
#[derive(Default)]
pub struct DefaultToastTheme;
impl ToastTheme for DefaultToastTheme {
fn bg_info(&self) -> &str { "#3b82f6" } fn bg_success(&self) -> &str { "#22c55e" }
fn bg_warning(&self) -> &str { "#eab308" }
fn bg_error(&self) -> &str { "#ef4444" }
fn text(&self) -> &str { "#dcdce6" } }