// Koder Design tokens — auto-generated. Do not edit by hand.
// Source: tools/design-gen/assets/css/base.css

//! Koder Design tokens for Rust consumers.
//!
//! See https://kds.koder.dev/api/v1/tokens.json for the canonical
//! live manifest. This file is the embedded snapshot.

use std::collections::HashMap;
use std::sync::OnceLock;

/// Light theme tokens. Raw CSS string values; consumers map them to
/// egui/iced/native paint values on demand.
pub fn light() -> &'static HashMap<&'static str, &'static str> {
    static MAP: OnceLock<HashMap<&'static str, &'static str>> = OnceLock::new();
    MAP.get_or_init(|| {
        let mut m = HashMap::new();
        m.insert("accent", "#1f3a93");
        m.insert("accent-on", "#ffffff");
        m.insert("bg", "#ffffff");
        m.insert("border", "#d4d4d9");
        m.insert("focus", "#0f3bd6");
        m.insert("fs-base", "16px");
        m.insert("radius-lg", "16px");
        m.insert("radius-md", "10px");
        m.insert("radius-sm", "6px");
        m.insert("shadow-1", "0 1px 2px rgba(0, 0, 0, 0.10), 0 2px 6px rgba(0, 0, 0, 0.06)");
        m.insert("surface", "#f5f5f7");
        m.insert("surface-2", "#eaeaee");
        m.insert("text", "#161616");
        m.insert("text-muted", "#4b4b4b");
        m
    })
}

/// Dark theme tokens.
pub fn dark() -> &'static HashMap<&'static str, &'static str> {
    static MAP: OnceLock<HashMap<&'static str, &'static str>> = OnceLock::new();
    MAP.get_or_init(|| {
        let mut m = HashMap::new();
        m.insert("accent", "#8ab4ff");
        m.insert("accent-on", "#0d0f12");
        m.insert("bg", "#0d0f12");
        m.insert("border", "#2a2f37");
        m.insert("focus", "#b8d1ff");
        m.insert("shadow-1", "0 1px 2px rgba(0, 0, 0, 0.5), 0 4px 12px rgba(0, 0, 0, 0.4)");
        m.insert("surface", "#14171c");
        m.insert("surface-2", "#1c2027");
        m.insert("text", "#f1f1f4");
        m.insert("text-muted", "#b9bcc4");
        m
    })
}

/// Common color tokens as 0xRRGGBB u32 values.
/// Wrap in egui::Color32 / iced::Color::from_rgb_u32 as needed.
pub mod light_color {
    pub const BG: u32 = 0xFFFFFF;
    pub const SURFACE: u32 = 0xF5F5F7;
    pub const SURFACE_2: u32 = 0xEAEAEE;
    pub const TEXT: u32 = 0x161616;
    pub const TEXT_MUTED: u32 = 0x4B4B4B;
    pub const ACCENT: u32 = 0x1F3A93;
    pub const ACCENT_ON: u32 = 0xFFFFFF;
    pub const BORDER: u32 = 0xD4D4D9;
    pub const FOCUS: u32 = 0x0F3BD6;
}

pub mod dark_color {
    pub const BG: u32 = 0x0D0F12;
    pub const SURFACE: u32 = 0x14171C;
    pub const SURFACE_2: u32 = 0x1C2027;
    pub const TEXT: u32 = 0xF1F1F4;
    pub const TEXT_MUTED: u32 = 0xB9BCC4;
    pub const ACCENT: u32 = 0x8AB4FF;
    pub const ACCENT_ON: u32 = 0x0D0F12;
    pub const BORDER: u32 = 0x2A2F37;
    pub const FOCUS: u32 = 0xB8D1FF;
}
