use pixtuoid_core::sprite::Rgb;

use super::*;

/// Gruvbox Dark — retro warm amber on dark brown.
/// Based on https://github.com/morhetz/gruvbox
/// bg: #282828, bg1: #3c3836, bg2: #504945, bg3: #665c54
/// fg: #ebdbb2, fg2: #d5c4a1, fg3: #bdae93, fg4: #a89984
/// Red: #fb4934, Green: #b8bb26, Yellow: #fabd2f
/// Blue: #83a598, Purple: #d3869b, Aqua: #8ec07c, Orange: #fe8019
pub static GRUVBOX: Theme = Theme {
    name: "gruvbox",
    kind: ThemeKind::Dark,
    surface: SurfaceColors {
        wall: Rgb {
            r: 40,
            g: 40,
            b: 40,
        },
        wall_trim: Rgb {
            r: 80,
            g: 73,
            b: 69,
        },
        baseboard: Rgb {
            r: 29,
            g: 32,
            b: 33,
        },
        carpet_base: Rgb {
            r: 60,
            g: 56,
            b: 54,
        },
        carpet_light: Rgb {
            r: 80,
            g: 73,
            b: 69,
        },
        carpet_dark: Rgb {
            r: 50,
            g: 48,
            b: 47,
        },
        window_frame: Rgb {
            r: 29,
            g: 32,
            b: 33,
        },
        bg_fallback: Rgb {
            r: 40,
            g: 40,
            b: 40,
        },
    },
    office: OfficeColors {
        room_wall_body: Rgb {
            r: 60,
            g: 56,
            b: 54,
        },
        room_wall_trim_light: Rgb {
            r: 102,
            g: 92,
            b: 84,
        },
        room_wall_trim_dark: Rgb {
            r: 29,
            g: 32,
            b: 33,
        },
        cubicle_divider: Rgb {
            r: 80,
            g: 73,
            b: 69,
        },
        runner_base: Rgb {
            r: 70,
            g: 60,
            b: 45,
        },
        runner_stripe: Rgb {
            r: 90,
            g: 75,
            b: 55,
        },
        runner_edge: Rgb {
            r: 50,
            g: 42,
            b: 32,
        },
        neon_panel_bg: Rgb {
            r: 29,
            g: 32,
            b: 33,
        },
        neon_frame_base: Rgb {
            r: 250,
            g: 189,
            b: 47,
        },
        building_dark: Rgb {
            r: 29,
            g: 32,
            b: 33,
        },
        building_light: Rgb {
            r: 85,
            g: 78,
            b: 72,
        },
        city_lit_windows: [
            Rgb {
                r: 250,
                g: 189,
                b: 47,
            },
            Rgb {
                r: 254,
                g: 128,
                b: 25,
            },
            Rgb {
                r: 184,
                g: 187,
                b: 38,
            },
        ],
        city_dark_window: Rgb {
            r: 29,
            g: 32,
            b: 33,
        },
        clock_rim: Rgb {
            r: 168,
            g: 153,
            b: 132,
        },
        clock_face: Rgb {
            r: 235,
            g: 219,
            b: 178,
        },
        clock_hand: Rgb {
            r: 40,
            g: 40,
            b: 40,
        },
        shadow: Rgb {
            r: 20,
            g: 20,
            b: 18,
        },
    },
    lighting: LightingColors {
        day_sky_a: Rgb {
            r: 130,
            g: 120,
            b: 105,
        },
        day_sky_b: Rgb {
            r: 155,
            g: 140,
            b: 125,
        },
        night_sky_a: Rgb {
            r: 20,
            g: 20,
            b: 20,
        },
        night_sky_b: Rgb {
            r: 29,
            g: 32,
            b: 33,
        },
        twilight_a: Rgb {
            r: 254,
            g: 128,
            b: 25,
        },
        twilight_b: Rgb {
            r: 250,
            g: 189,
            b: 47,
        },
        sun_spill: Rgb {
            r: 250,
            g: 189,
            b: 47,
        },
        ceiling_pool: Rgb {
            r: 235,
            g: 219,
            b: 178,
        },
        floor_lamp_halo: Rgb {
            r: 254,
            g: 128,
            b: 25,
        },
        night_tint: Rgb {
            r: 18,
            g: 18,
            b: 16,
        },
    },
    furniture: FurnitureColors {
        wood_top: Rgb {
            r: 80,
            g: 73,
            b: 69,
        },
        wood_trim: Rgb {
            r: 60,
            g: 56,
            b: 54,
        },
        rug_field: Rgb {
            r: 70,
            g: 45,
            b: 35,
        },
        rug_trim: Rgb {
            r: 50,
            g: 30,
            b: 22,
        },
        rug_accent: Rgb {
            r: 254,
            g: 128,
            b: 25,
        },
        magazine: Rgb {
            r: 131,
            g: 165,
            b: 152,
        },
        magazine_trim: Rgb {
            r: 66,
            g: 82,
            b: 76,
        },
        chair_seat: Rgb {
            r: 65,
            g: 60,
            b: 56,
        },
        chair_trim: Rgb {
            r: 45,
            g: 42,
            b: 38,
        },
        coffee_cup: Rgb {
            r: 168,
            g: 153,
            b: 132,
        },
        coffee_cup_shadow: Rgb {
            r: 146,
            g: 131,
            b: 116,
        },
    },
    effects: EffectColors {
        monitor_frame_lit: Rgb {
            r: 80,
            g: 73,
            b: 69,
        },
        sleep_z: Rgb {
            r: 131,
            g: 165,
            b: 152,
        },
        coffee_steam: Rgb {
            r: 168,
            g: 153,
            b: 132,
        },
        walking_dust: Rgb {
            r: 80,
            g: 73,
            b: 69,
        },
        waiting_bubble: Rgb {
            r: 250,
            g: 189,
            b: 47,
        },
    },
    tool_glow: ToolGlowColors {
        edit: Rgb {
            r: 131,
            g: 165,
            b: 152,
        },
        read: Rgb {
            r: 142,
            g: 192,
            b: 124,
        },
        bash: Rgb {
            r: 254,
            g: 128,
            b: 25,
        },
        agent: Rgb {
            r: 211,
            g: 134,
            b: 155,
        },
        grep: Rgb {
            r: 184,
            g: 187,
            b: 38,
        },
        default: Rgb {
            r: 131,
            g: 165,
            b: 152,
        },
    },
    ui: UiColors {
        label_active: Rgb {
            r: 184,
            g: 187,
            b: 38,
        },
        label_waiting: Rgb {
            r: 250,
            g: 189,
            b: 47,
        },
        label_idle: Rgb {
            r: 168,
            g: 153,
            b: 132,
        },
        label_exiting: Rgb {
            r: 102,
            g: 92,
            b: 84,
        },
        tooltip_bg: Rgb {
            r: 29,
            g: 32,
            b: 33,
        },
        tooltip_title: Rgb {
            r: 235,
            g: 219,
            b: 178,
        },
        tooltip_text: Rgb {
            r: 189,
            g: 174,
            b: 147,
        },
        tooltip_dim: Rgb {
            r: 146,
            g: 131,
            b: 116,
        },
        neon_brand: Rgb {
            r: 250,
            g: 189,
            b: 47,
        },
        neon_star: Rgb {
            r: 254,
            g: 128,
            b: 25,
        },
        neon_ticker: Rgb {
            r: 131,
            g: 165,
            b: 152,
        },
    },
    appliance: ApplianceColors {
        vending_body: Rgb {
            r: 45,
            g: 42,
            b: 38,
        },
        vending_panel: Rgb {
            r: 250,
            g: 189,
            b: 47,
        },
        vending_drinks: [
            Rgb {
                r: 254,
                g: 128,
                b: 25,
            },
            Rgb {
                r: 142,
                g: 192,
                b: 124,
            },
            Rgb {
                r: 184,
                g: 187,
                b: 38,
            },
            Rgb {
                r: 211,
                g: 134,
                b: 155,
            },
        ],
        vending_trim: Rgb {
            r: 180,
            g: 135,
            b: 85,
        },
        vending_dark: Rgb {
            r: 29,
            g: 32,
            b: 33,
        },
        printer_body: Rgb {
            r: 220,
            g: 210,
            b: 195,
        },
        printer_top: Rgb {
            r: 70,
            g: 65,
            b: 60,
        },
        printer_glass: Rgb {
            r: 131,
            g: 165,
            b: 152,
        },
        printer_paper: Rgb {
            r: 240,
            g: 235,
            b: 225,
        },
        printer_tray: Rgb {
            r: 145,
            g: 135,
            b: 125,
        },
        coats: [
            Rgb {
                r: 240,
                g: 140,
                b: 80,
            },
            Rgb {
                r: 131,
                g: 165,
                b: 152,
            },
            Rgb {
                r: 235,
                g: 200,
                b: 140,
            },
        ],
    },
    source: SourceColors {
        claude_code: Rgb {
            r: 0xfe,
            g: 0x80,
            b: 0x19,
        }, // gruvbox bright orange
        codex: Rgb {
            r: 0x83,
            g: 0xa5,
            b: 0x98,
        }, // gruvbox aqua
        reasonix: Rgb {
            r: 0xd3,
            g: 0x86,
            b: 0x9b,
        }, // gruvbox pink
        antigravity: Rgb {
            r: 0xb8,
            g: 0xbb,
            b: 0x26,
        }, // gruvbox bright yellow-green
    },
};
