glim-tui 0.2.1

A TUI for monitoring GitLab CI/CD pipelines and projects
use ratatui::prelude::*;

#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)]
#[allow(dead_code)]
pub enum Gruvbox {
    Dark0Hard,
    Dark0,
    Dark0Soft,
    Dark1,
    Dark2,
    Dark3,
    Dark4,
    Gray245,
    Gray244,
    Light0Hard,
    Light0,
    Light0Soft,
    Light1,
    Light2,
    Light3,
    Light4,
    RedBright,
    GreenBright,
    YellowBright,
    BlueBright,
    PurpleBright,
    AquaBright,
    OrangeBright,
    Red,
    Green,
    Yellow,
    Blue,
    Purple,
    Aqua,
    Orange,
    RedDim,
    GreenDim,
    YellowDim,
    BlueDim,
    PurpleDim,
    AquaDim,
    OrangeDim,
}

impl Gruvbox {
    const fn color(&self) -> Color {
        match self {
            Gruvbox::Dark0Hard => Color::from_u32(0x1d2021),
            Gruvbox::Dark0 => Color::from_u32(0x282828),
            Gruvbox::Dark0Soft => Color::from_u32(0x32302f),
            Gruvbox::Dark1 => Color::from_u32(0x3c3836),
            Gruvbox::Dark2 => Color::from_u32(0x504945),
            Gruvbox::Dark3 => Color::from_u32(0x665c54),
            Gruvbox::Dark4 => Color::from_u32(0x7c6f64),
            Gruvbox::Gray245 => Color::from_u32(0x928374),
            Gruvbox::Gray244 => Color::from_u32(0x928374),
            Gruvbox::Light0Hard => Color::from_u32(0xf9f5d7),
            Gruvbox::Light0 => Color::from_u32(0xfbf1c7),
            Gruvbox::Light0Soft => Color::from_u32(0xf2e5bc),
            Gruvbox::Light1 => Color::from_u32(0xebdbb2),
            Gruvbox::Light2 => Color::from_u32(0xd5c4a1),
            Gruvbox::Light3 => Color::from_u32(0xbdae93),
            Gruvbox::Light4 => Color::from_u32(0xa89984),
            Gruvbox::RedBright => Color::from_u32(0xfb4934),
            Gruvbox::GreenBright => Color::from_u32(0xb8bb26),
            Gruvbox::YellowBright => Color::from_u32(0xfabd2f),
            Gruvbox::BlueBright => Color::from_u32(0x83a598),
            Gruvbox::PurpleBright => Color::from_u32(0xd3869b),
            Gruvbox::AquaBright => Color::from_u32(0x8ec07c),
            Gruvbox::OrangeBright => Color::from_u32(0xfe8019),
            Gruvbox::Red => Color::from_u32(0xcc241d),
            Gruvbox::Green => Color::from_u32(0x98971a),
            Gruvbox::Yellow => Color::from_u32(0xd79921),
            Gruvbox::Blue => Color::from_u32(0x458588),
            Gruvbox::Purple => Color::from_u32(0xb16286),
            Gruvbox::Aqua => Color::from_u32(0x689d6a),
            Gruvbox::Orange => Color::from_u32(0xd65d0e),
            Gruvbox::RedDim => Color::from_u32(0x9d0006),
            Gruvbox::GreenDim => Color::from_u32(0x79740e),
            Gruvbox::YellowDim => Color::from_u32(0xb57614),
            Gruvbox::BlueDim => Color::from_u32(0x076678),
            Gruvbox::PurpleDim => Color::from_u32(0x8f3f71),
            Gruvbox::AquaDim => Color::from_u32(0x427b58),
            Gruvbox::OrangeDim => Color::from_u32(0xaf3a03),
        }
    }
}

impl From<Gruvbox> for Color {
    fn from(val: Gruvbox) -> Color {
        val.color()
    }
}