mirror of
https://github.com/ratatui-org/ratatui
synced 2024-11-26 14:40:30 +00:00
137 lines
3.8 KiB
Rust
137 lines
3.8 KiB
Rust
|
use ratatui::prelude::*;
|
||
|
|
||
|
pub struct Theme {
|
||
|
pub root: Style,
|
||
|
pub content: Style,
|
||
|
pub app_title: Style,
|
||
|
pub tabs: Style,
|
||
|
pub tabs_selected: Style,
|
||
|
pub borders: Style,
|
||
|
pub description: Style,
|
||
|
pub description_title: Style,
|
||
|
pub key_binding: KeyBinding,
|
||
|
pub logo: Logo,
|
||
|
pub email: Email,
|
||
|
pub traceroute: Traceroute,
|
||
|
pub recipe: Recipe,
|
||
|
}
|
||
|
|
||
|
pub struct KeyBinding {
|
||
|
pub key: Style,
|
||
|
pub description: Style,
|
||
|
}
|
||
|
|
||
|
pub struct Logo {
|
||
|
pub rat: Color,
|
||
|
pub rat_eye: Color,
|
||
|
pub rat_eye_alt: Color,
|
||
|
pub term: Color,
|
||
|
}
|
||
|
|
||
|
pub struct Email {
|
||
|
pub tabs: Style,
|
||
|
pub tabs_selected: Style,
|
||
|
pub inbox: Style,
|
||
|
pub item: Style,
|
||
|
pub selected_item: Style,
|
||
|
pub header: Style,
|
||
|
pub header_value: Style,
|
||
|
pub body: Style,
|
||
|
}
|
||
|
|
||
|
pub struct Traceroute {
|
||
|
pub header: Style,
|
||
|
pub selected: Style,
|
||
|
pub ping: Style,
|
||
|
pub map: Map,
|
||
|
}
|
||
|
|
||
|
pub struct Map {
|
||
|
pub style: Style,
|
||
|
pub color: Color,
|
||
|
pub path: Color,
|
||
|
pub source: Color,
|
||
|
pub destination: Color,
|
||
|
pub background_color: Color,
|
||
|
}
|
||
|
|
||
|
pub struct Recipe {
|
||
|
pub ingredients: Style,
|
||
|
pub ingredients_header: Style,
|
||
|
}
|
||
|
|
||
|
pub const THEME: Theme = Theme {
|
||
|
root: Style::new().bg(DARK_BLUE),
|
||
|
content: Style::new().bg(DARK_BLUE).fg(LIGHT_GRAY),
|
||
|
app_title: Style::new()
|
||
|
.fg(WHITE)
|
||
|
.bg(DARK_BLUE)
|
||
|
.add_modifier(Modifier::BOLD),
|
||
|
tabs: Style::new().fg(MID_GRAY).bg(DARK_BLUE),
|
||
|
tabs_selected: Style::new()
|
||
|
.fg(WHITE)
|
||
|
.bg(DARK_BLUE)
|
||
|
.add_modifier(Modifier::BOLD)
|
||
|
.add_modifier(Modifier::REVERSED),
|
||
|
borders: Style::new().fg(LIGHT_GRAY),
|
||
|
description: Style::new().fg(LIGHT_GRAY).bg(DARK_BLUE),
|
||
|
description_title: Style::new().fg(LIGHT_GRAY).add_modifier(Modifier::BOLD),
|
||
|
logo: Logo {
|
||
|
rat: WHITE,
|
||
|
rat_eye: BLACK,
|
||
|
rat_eye_alt: RED,
|
||
|
term: BLACK,
|
||
|
},
|
||
|
key_binding: KeyBinding {
|
||
|
key: Style::new().fg(BLACK).bg(DARK_GRAY),
|
||
|
description: Style::new().fg(DARK_GRAY).bg(BLACK),
|
||
|
},
|
||
|
email: Email {
|
||
|
tabs: Style::new().fg(MID_GRAY).bg(DARK_BLUE),
|
||
|
tabs_selected: Style::new()
|
||
|
.fg(WHITE)
|
||
|
.bg(DARK_BLUE)
|
||
|
.add_modifier(Modifier::BOLD),
|
||
|
inbox: Style::new().bg(DARK_BLUE).fg(LIGHT_GRAY),
|
||
|
item: Style::new().fg(LIGHT_GRAY),
|
||
|
selected_item: Style::new().fg(LIGHT_YELLOW),
|
||
|
header: Style::new().add_modifier(Modifier::BOLD),
|
||
|
header_value: Style::new().fg(LIGHT_GRAY),
|
||
|
body: Style::new().bg(DARK_BLUE).fg(LIGHT_GRAY),
|
||
|
},
|
||
|
traceroute: Traceroute {
|
||
|
header: Style::new()
|
||
|
.bg(DARK_BLUE)
|
||
|
.add_modifier(Modifier::BOLD)
|
||
|
.add_modifier(Modifier::UNDERLINED),
|
||
|
selected: Style::new().fg(LIGHT_YELLOW),
|
||
|
ping: Style::new().fg(WHITE),
|
||
|
map: Map {
|
||
|
style: Style::new().bg(DARK_BLUE),
|
||
|
background_color: DARK_BLUE,
|
||
|
color: LIGHT_GRAY,
|
||
|
path: LIGHT_BLUE,
|
||
|
source: LIGHT_GREEN,
|
||
|
destination: LIGHT_RED,
|
||
|
},
|
||
|
},
|
||
|
recipe: Recipe {
|
||
|
ingredients: Style::new().bg(DARK_BLUE).fg(LIGHT_GRAY),
|
||
|
ingredients_header: Style::new()
|
||
|
.add_modifier(Modifier::BOLD)
|
||
|
.add_modifier(Modifier::UNDERLINED),
|
||
|
},
|
||
|
};
|
||
|
|
||
|
const DARK_BLUE: Color = Color::Rgb(16, 24, 48);
|
||
|
const LIGHT_BLUE: Color = Color::Rgb(64, 96, 192);
|
||
|
const LIGHT_YELLOW: Color = Color::Rgb(192, 192, 96);
|
||
|
const LIGHT_GREEN: Color = Color::Rgb(64, 192, 96);
|
||
|
const LIGHT_RED: Color = Color::Rgb(192, 96, 96);
|
||
|
const RED: Color = Color::Indexed(160);
|
||
|
const BLACK: Color = Color::Indexed(232); // not really black, often #080808
|
||
|
const DARK_GRAY: Color = Color::Indexed(238);
|
||
|
const MID_GRAY: Color = Color::Indexed(244);
|
||
|
const LIGHT_GRAY: Color = Color::Indexed(250);
|
||
|
const WHITE: Color = Color::Indexed(255); // not really white, often #eeeeee
|