mod catalog;
mod custom;
use ratatui::style::Color;
use crate::Theme;
pub use catalog::*;
pub use custom::CustomTheme;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct ThemeData {
pub name: &'static str,
pub id: &'static str,
pub accent: Color,
pub accent_dim: Color,
pub text: Color,
pub text_dim: Color,
pub text_bright: Color,
pub success: Color,
pub error: Color,
pub warning: Color,
pub info: Color,
pub diff_added: Color,
pub diff_removed: Color,
pub diff_context: Color,
pub border: Color,
pub surface: Color,
}
impl std::fmt::Display for ThemeData {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{} ({})", self.name, self.id)
}
}
impl Theme for ThemeData {
fn name(&self) -> &str {
self.name
}
fn id(&self) -> &str {
self.id
}
fn accent(&self) -> Color {
self.accent
}
fn accent_dim(&self) -> Color {
self.accent_dim
}
fn text(&self) -> Color {
self.text
}
fn text_dim(&self) -> Color {
self.text_dim
}
fn text_bright(&self) -> Color {
self.text_bright
}
fn success(&self) -> Color {
self.success
}
fn error(&self) -> Color {
self.error
}
fn warning(&self) -> Color {
self.warning
}
fn info(&self) -> Color {
self.info
}
fn diff_added(&self) -> Color {
self.diff_added
}
fn diff_removed(&self) -> Color {
self.diff_removed
}
fn diff_context(&self) -> Color {
self.diff_context
}
fn border(&self) -> Color {
self.border
}
fn surface(&self) -> Color {
self.surface
}
}