1use std::io::{stdout, Write};
5use crossterm::style::{Color, SetBackgroundColor, SetForegroundColor, ResetColor};
6
7
8pub const RED: Color = Color::Rgb { r: 255, g: 0, b: 0 };
10pub const BLUE: Color = Color::Rgb { r: 0, g: 0, b: 255 };
11pub const GREEN: Color = Color::Rgb { r: 0, g: 255, b: 0 };
12pub const YELLOW: Color = Color::Rgb { r: 255, g: 255, b: 0 };
13pub const CYAN: Color = Color::Rgb { r: 0, g: 255, b: 255 };
14pub const MAGENTA: Color = Color::Rgb { r: 255, g: 0, b: 255 };
15pub const WHITE: Color = Color::Rgb { r: 255, g: 255, b: 255 };
16pub const BLACK: Color = Color::Rgb { r: 0, g: 0, b: 0 };
17pub const GREY: Color = Color::Rgb { r: 128, g: 128, b: 128 };
18pub const PINK: Color = Color::Rgb { r: 255, g: 105, b: 180 };
19pub const PURPLE: Color = Color::Rgb { r: 128, g: 0, b: 128 };
20pub const TEAL: Color = Color::Rgb { r: 0, g: 128, b: 128 };
21pub const ORANGE: Color = Color::Rgb { r: 255, g: 165, b: 0 };
22pub const BROWN: Color = Color::Rgb { r: 165, g: 42, b: 42 };
23pub const LIGHT_BLUE: Color = Color::Rgb { r: 173, g: 216, b: 230 };
24pub const LIGHT_GREEN: Color = Color::Rgb { r: 144, g: 238, b: 144 };
25pub const LIGHT_YELLOW: Color = Color::Rgb { r: 255, g: 255, b: 224 };
26pub const LIGHT_CYAN: Color = Color::Rgb { r: 224, g: 255, b: 255 };
27pub const LIGHT_MAGENTA: Color = Color::Rgb { r: 255, g: 224, b: 255 };
28pub const LIGHT_GREY: Color = Color::Rgb { r: 211, g: 211, b: 211 };
29pub const DARK_GREY: Color = Color::Rgb { r: 169, g: 169, b: 169 };
30pub const DARK_BLUE: Color = Color::Rgb { r: 0, g: 0, b: 139 };
31pub const DARK_ORANGE: Color = Color::Rgb { r: 255, g: 140, b: 0 };
32pub const DARK_PINK: Color = Color::Rgb { r: 255, g: 20, b: 147 };
33pub const DARK_PURPLE: Color = Color::Rgb { r: 75, g: 0, b: 130 };
34pub const DARK_TEAL: Color = Color::Rgb { r: 0, g: 139, b: 139 };
35pub const DARK_BROWN: Color = Color::Rgb { r: 101, g: 67, b: 33 };
36pub const DARK_LIGHT_BLUE: Color = Color::Rgb { r: 70, g: 130, b: 180 };
37pub const DARK_LIGHT_GREEN: Color = Color::Rgb { r: 50, g: 205, b: 50 };
38pub const DARK_LIGHT_YELLOW: Color = Color::Rgb { r: 255, g: 255, b: 224 };
39pub const DARK_LIGHT_CYAN: Color = Color::Rgb { r: 224, g: 255, b: 255 };
40pub const DARK_LIGHT_MAGENTA: Color = Color::Rgb { r: 255, g: 224, b: 255 };
41pub const DARK_LIGHT_GREY: Color = Color::Rgb { r: 211, g: 211, b: 211 };
42
43pub const COLOR_ERROR: Color = RED;
45pub const COLOR_WARNING: Color = ORANGE;
46pub const COLOR_SUCCESS: Color = GREEN;
47pub const COLOR_DEBUG: Color = GREY;
48pub const COLOR_INFO: Color = BLUE;
49pub const COLOR_TRACE: Color = LIGHT_GREY;
50pub const COLOR_DEFAULT: Color = WHITE;
51
52pub fn apply_theme(theme: &str) {
54 let mut stdout = stdout();
55
56 match theme {
57 "monochrome" => {
58 let _ = write!(stdout, "{}{}", SetForegroundColor(Color::Grey), SetBackgroundColor(Color::Black));
59 }
60 "default" => {
61 let _ = write!(stdout, "{}{}", SetForegroundColor(Color::White), SetBackgroundColor(Color::Black));
62 }
63 "inverted" => {
64 let _ = write!(stdout, "{}{}", SetForegroundColor(Color::Black), SetBackgroundColor(Color::White));
65 }
66 "blue" => {
67 let _ = write!(stdout, "{}{}", SetForegroundColor(Color::White), SetBackgroundColor(Color::Blue));
68 }
69 "green" => {
70 let _ = write!(stdout, "{}{}", SetForegroundColor(Color::Black), SetBackgroundColor(Color::Green));
71 }
72 _ => {
73 }
75 }
76
77 let _ = stdout.flush();
78}
79
80pub fn reset_theme() {
82 let _ = write!(stdout(), "{}", ResetColor);
83}