modularize app and database internals
- Extract editor, form, export, and schema modules - Add database workflow integration tests
This commit is contained in:
79
src/ui/theme.rs
Normal file
79
src/ui/theme.rs
Normal file
@@ -0,0 +1,79 @@
|
||||
use ratatui::style::Color;
|
||||
|
||||
#[derive(Clone, Copy)]
|
||||
pub(super) struct Palette {
|
||||
pub primary: Color,
|
||||
pub accent: Color,
|
||||
pub canvas: Color,
|
||||
pub canvas_heading: Color,
|
||||
pub selection: Color,
|
||||
pub selection_foreground: Color,
|
||||
pub foreground: Color,
|
||||
}
|
||||
|
||||
pub(super) fn palette(theme: &str) -> Palette {
|
||||
match theme {
|
||||
"mono" => Palette {
|
||||
primary: Color::Black,
|
||||
accent: Color::White,
|
||||
canvas: Color::Gray,
|
||||
canvas_heading: Color::Black,
|
||||
selection: Color::DarkGray,
|
||||
selection_foreground: rgb(0xffffff),
|
||||
foreground: Color::Black,
|
||||
},
|
||||
"amber" => Palette {
|
||||
primary: Color::Black,
|
||||
accent: Color::Rgb(255, 191, 0),
|
||||
canvas: Color::Rgb(32, 24, 0),
|
||||
canvas_heading: Color::Rgb(255, 191, 0),
|
||||
selection: Color::Rgb(112, 56, 0),
|
||||
selection_foreground: rgb(0xffffff),
|
||||
foreground: Color::Rgb(255, 191, 0),
|
||||
},
|
||||
"greenscreen" => Palette {
|
||||
primary: Color::Black,
|
||||
accent: rgb(0x79a86b),
|
||||
canvas: rgb(0x030704),
|
||||
canvas_heading: rgb(0x9ac58d),
|
||||
selection: rgb(0x284b2f),
|
||||
selection_foreground: rgb(0xdce8d8),
|
||||
foreground: rgb(0x8fbd80),
|
||||
},
|
||||
"nord" => Palette {
|
||||
primary: rgb(0x2e3440),
|
||||
accent: rgb(0x88c0d0),
|
||||
canvas: rgb(0x3b4252),
|
||||
canvas_heading: rgb(0xeceff4),
|
||||
selection: rgb(0xeceff4),
|
||||
selection_foreground: rgb(0x2e3440),
|
||||
foreground: rgb(0xeceff4),
|
||||
},
|
||||
"catppuccin-mocha" => Palette {
|
||||
primary: rgb(0x181825),
|
||||
accent: rgb(0xcba6f7),
|
||||
canvas: rgb(0x1e1e2e),
|
||||
canvas_heading: rgb(0xcdd6f4),
|
||||
selection: rgb(0xcba6f7),
|
||||
selection_foreground: rgb(0x11111b),
|
||||
foreground: rgb(0xcdd6f4),
|
||||
},
|
||||
_ => Palette {
|
||||
primary: Color::Rgb(0, 0, 128),
|
||||
accent: Color::Cyan,
|
||||
canvas: Color::Rgb(192, 192, 192),
|
||||
canvas_heading: Color::Rgb(0, 0, 128),
|
||||
selection: Color::Rgb(128, 0, 0),
|
||||
selection_foreground: rgb(0xffffff),
|
||||
foreground: Color::Black,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
pub(super) const fn rgb(value: u32) -> Color {
|
||||
Color::Rgb(
|
||||
((value >> 16) & 0xff) as u8,
|
||||
((value >> 8) & 0xff) as u8,
|
||||
(value & 0xff) as u8,
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user