use crate::render::Color;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct Theme {
pub palette: [Color; 6],
}
impl Theme {
pub const DARK: Theme = Theme {
palette: [
Color::Cyan,
Color::Yellow,
Color::Green,
Color::Magenta,
Color::Blue,
Color::Red,
],
};
pub const LIGHT: Theme = Theme {
palette: [
Color::Blue,
Color::Red,
Color::Green,
Color::Magenta,
Color::Cyan,
Color::Black,
],
};
pub fn detect() -> Theme {
let light = std::env::var("COLORFGBG")
.ok()
.and_then(|value| value.rsplit(';').next().map(str::to_string))
.is_some_and(|background| background == "7" || background == "15");
if light { Theme::LIGHT } else { Theme::DARK }
}
}
impl Default for Theme {
fn default() -> Theme {
Theme::DARK
}
}