use ratatui::style::Color;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub struct Generation(pub u64);
impl Generation {
pub fn next(&self) -> Self {
Self(self.0 + 1)
}
}
pub trait RichTextTheme {
fn generation(&self) -> Generation;
fn get_text_color(&self) -> Color;
fn get_muted_text_color(&self) -> Color;
fn get_primary_color(&self) -> Color;
fn get_popup_selected_background(&self) -> Color;
fn get_popup_selected_text_color(&self) -> Color;
fn get_border_color(&self) -> Color;
fn get_focused_border_color(&self) -> Color;
fn get_secondary_color(&self) -> Color;
fn get_info_color(&self) -> Color;
fn get_background_color(&self) -> Color;
fn get_json_key_color(&self) -> Color;
fn get_json_string_color(&self) -> Color;
fn get_json_number_color(&self) -> Color;
fn get_json_bool_color(&self) -> Color;
fn get_json_null_color(&self) -> Color;
fn get_accent_yellow(&self) -> Color;
}
pub struct DefaultTheme;
impl RichTextTheme for DefaultTheme {
fn generation(&self) -> Generation {
Generation(1)
}
fn get_text_color(&self) -> Color {
Color::White
}
fn get_muted_text_color(&self) -> Color {
Color::DarkGray
}
fn get_primary_color(&self) -> Color {
Color::Cyan
}
fn get_secondary_color(&self) -> Color {
Color::Blue
}
fn get_info_color(&self) -> Color {
Color::LightBlue
}
fn get_background_color(&self) -> Color {
Color::Black
}
fn get_border_color(&self) -> Color {
Color::DarkGray
}
fn get_focused_border_color(&self) -> Color {
Color::White
}
fn get_popup_selected_background(&self) -> Color {
Color::DarkGray
}
fn get_popup_selected_text_color(&self) -> Color {
Color::White
}
fn get_json_key_color(&self) -> Color {
Color::LightCyan
}
fn get_json_string_color(&self) -> Color {
Color::Green
}
fn get_json_number_color(&self) -> Color {
Color::Yellow
}
fn get_json_bool_color(&self) -> Color {
Color::Magenta
}
fn get_json_null_color(&self) -> Color {
Color::DarkGray
}
fn get_accent_yellow(&self) -> Color {
Color::Yellow
}
}