glim-tui 0.1.0

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() }
}