use ratatui::prelude::{Color, Modifier, Style};
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
pub enum Alignment {
#[default]
Left,
Center,
Right,
Justify,
}
#[derive(Debug, Clone)]
pub struct MarkdownStyle {
pub paragraph: Style,
pub paragraph_alignment: Alignment,
pub heading_1: Style,
pub heading_1_alignment: Alignment,
pub heading_2: Style,
pub heading_2_alignment: Alignment,
pub heading_3: Style,
pub heading_3_alignment: Alignment,
pub bold: Style,
pub italic: Style,
pub strikethrough: Style,
pub inline_code: Style,
pub code_block: Style,
pub code_block_bg: Color,
pub code_block_alignment: Alignment,
pub link: Style,
pub link_prefix: &'static str,
pub quote: Style,
pub quote_alignment: Alignment,
pub quote_indicator: &'static str,
pub image: Style,
pub image_prefix: &'static str,
pub list_bullet: &'static str,
pub ordered_template: &'static str,
pub hr_char: char,
pub hr_style: Style,
}
impl Default for MarkdownStyle {
fn default() -> Self {
let white = Color::Rgb(220, 220, 220);
let accent = Color::Rgb(98, 175, 239);
let dim = Color::Rgb(140, 140, 140);
let warm = Color::Rgb(229, 185, 115);
let green = Color::Rgb(140, 200, 140);
Self {
paragraph: Style::new().fg(white),
paragraph_alignment: Alignment::Left,
heading_1: Style::new().fg(accent).add_modifier(Modifier::BOLD),
heading_1_alignment: Alignment::Left,
heading_2: Style::new().fg(accent).add_modifier(Modifier::BOLD),
heading_2_alignment: Alignment::Left,
heading_3: Style::new().fg(accent).add_modifier(Modifier::BOLD),
heading_3_alignment: Alignment::Left,
bold: Style::new().add_modifier(Modifier::BOLD),
italic: Style::new().add_modifier(Modifier::ITALIC),
strikethrough: Style::new().add_modifier(Modifier::CROSSED_OUT),
inline_code: Style::new().fg(warm).bg(Color::Rgb(40, 40, 40)),
code_block: Style::new().fg(warm),
code_block_bg: Color::Rgb(25, 25, 25),
code_block_alignment: Alignment::Left,
link: Style::new().fg(accent).add_modifier(Modifier::UNDERLINED),
link_prefix: "🔗 ",
quote: Style::new().fg(dim),
quote_alignment: Alignment::Left,
quote_indicator: "▍ ",
image: Style::new().fg(green),
image_prefix: "🖼 ",
list_bullet: "• ",
ordered_template: "{}. ",
hr_char: '─',
hr_style: Style::new().fg(dim),
}
}
}