synpad 0.1.0

A full-featured Matrix chat client built with Dioxus
use serde::{Deserialize, Serialize};

/// Theme selection.
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum Theme {
    Light,
    Dark,
    HighContrast,
    System,
}

/// Color palette for the light theme.
pub mod light {
    pub const BG_PRIMARY: &str = "#ffffff";
    pub const BG_SECONDARY: &str = "#f5f5f5";
    pub const BG_TERTIARY: &str = "#e8e8e8";
    pub const BG_CANVAS: &str = "#fafafa";

    pub const TEXT_PRIMARY: &str = "#17191c";
    pub const TEXT_SECONDARY: &str = "#737d8c";
    pub const TEXT_DISABLED: &str = "#c1c6cd";
    pub const TEXT_LINK: &str = "#0086e6";

    pub const ACCENT_PRIMARY: &str = "#0dbd8b";
    pub const ACCENT_DANGER: &str = "#ff5b55";
    pub const ACCENT_SUCCESS: &str = "#0dbd8b";
    pub const ACCENT_WARNING: &str = "#ffc56d";

    pub const BORDER_DEFAULT: &str = "#e3e8f0";
    pub const BORDER_FOCUSED: &str = "#0086e6";

    pub const AVATAR_COLORS: [&str; 8] = [
        "#0dbd8b", "#368bd6", "#ac3ba8", "#e64f7a",
        "#ff812d", "#2dc2c5", "#5c56f5", "#74d12c",
    ];
}

/// Color palette for the high contrast theme.
pub mod high_contrast {
    pub const BG_PRIMARY: &str = "#000000";
    pub const BG_SECONDARY: &str = "#1a1a1a";
    pub const BG_TERTIARY: &str = "#2d2d2d";
    pub const BG_CANVAS: &str = "#000000";

    pub const TEXT_PRIMARY: &str = "#ffffff";
    pub const TEXT_SECONDARY: &str = "#e0e0e0";
    pub const TEXT_DISABLED: &str = "#808080";
    pub const TEXT_LINK: &str = "#58a6ff";

    pub const ACCENT_PRIMARY: &str = "#00ff88";
    pub const ACCENT_DANGER: &str = "#ff4444";
    pub const ACCENT_SUCCESS: &str = "#00ff88";
    pub const ACCENT_WARNING: &str = "#ffff00";

    pub const BORDER_DEFAULT: &str = "#ffffff";
    pub const BORDER_FOCUSED: &str = "#58a6ff";

    pub const AVATAR_COLORS: [&str; 8] = [
        "#00ff88", "#58a6ff", "#ff69b4", "#ff4444",
        "#ff8800", "#00cccc", "#8888ff", "#88ff00",
    ];
}

/// Color palette for the dark theme.
pub mod dark {
    pub const BG_PRIMARY: &str = "#15191e";
    pub const BG_SECONDARY: &str = "#1c2026";
    pub const BG_TERTIARY: &str = "#21262c";
    pub const BG_CANVAS: &str = "#0d1117";

    pub const TEXT_PRIMARY: &str = "#ffffff";
    pub const TEXT_SECONDARY: &str = "#a9b2bc";
    pub const TEXT_DISABLED: &str = "#6b7785";
    pub const TEXT_LINK: &str = "#6cb6ff";

    pub const ACCENT_PRIMARY: &str = "#0dbd8b";
    pub const ACCENT_DANGER: &str = "#ff5b55";
    pub const ACCENT_SUCCESS: &str = "#0dbd8b";
    pub const ACCENT_WARNING: &str = "#ffc56d";

    pub const BORDER_DEFAULT: &str = "#2a3038";
    pub const BORDER_FOCUSED: &str = "#6cb6ff";

    pub const AVATAR_COLORS: [&str; 8] = [
        "#0dbd8b", "#368bd6", "#ac3ba8", "#e64f7a",
        "#ff812d", "#2dc2c5", "#5c56f5", "#74d12c",
    ];
}