1use crossterm::style::{Color, Stylize};
2
3pub const DEFAULT: Color = Color::Black;
5
6pub const RED: Color = Color::Rgb { r: 255, g: 0, b: 0 };
8pub const BLUE: Color = Color::Rgb { r: 0, g: 0, b: 255 };
9pub const GREEN: Color = Color::Rgb { r: 0, g: 255, b: 0 };
10pub const YELLOW: Color = Color::Rgb { r: 255, g: 255, b: 0 };
11pub const CYAN: Color = Color::Rgb { r: 0, g: 255, b: 255 };
12pub const MAGENTA: Color = Color::Rgb { r: 255, g: 0, b: 255 };
13pub const WHITE: Color = Color::Rgb { r: 255, g: 255, b: 255 };
14pub const BLACK: Color = Color::Rgb { r: 0, g: 0, b: 0 };
15pub const GREY: Color = Color::Rgb { r: 128, g: 128, b: 128 };
16pub const PINK: Color = Color::Rgb { r: 255, g: 105, b: 180 };
17pub const PURPLE: Color = Color::Rgb { r: 128, g: 0, b: 128 };
18pub const TEAL: Color = Color::Rgb { r: 0, g: 128, b: 128 };
19pub const ORANGE: Color = Color::Rgb { r: 255, g: 165, b: 0 };
20pub const BROWN: Color = Color::Rgb { r: 165, g: 42, b: 42 };
21pub const LIGHT_BLUE: Color = Color::Rgb { r: 0, g: 180, b: 255 };
22pub const LIGHT_GREEN: Color = Color::Rgb { r: 144, g: 238, b: 144 };
23pub const LIGHT_YELLOW: Color = Color::Rgb { r: 255, g: 255, b: 224 };
24pub const LIGHT_CYAN: Color = Color::Rgb { r: 224, g: 255, b: 255 };
25pub const LIGHT_MAGENTA: Color = Color::Rgb { r: 255, g: 224, b: 255 };
26pub const LIGHT_GREY: Color = Color::Rgb { r: 211, g: 211, b: 211 };
27pub const DARK_GREY: Color = Color::Rgb { r: 169, g: 169, b: 169 };
28pub const DARK_BLUE: Color = Color::Rgb { r: 0, g: 0, b: 139 };
29pub const DARK_ORANGE: Color = Color::Rgb { r: 255, g: 140, b: 0 };
30pub const DARK_PINK: Color = Color::Rgb { r: 255, g: 20, b: 147 };
31pub const DARK_PURPLE: Color = Color::Rgb { r: 75, g: 0, b: 130 };
32pub const DARK_TEAL: Color = Color::Rgb { r: 0, g: 139, b: 139 };
33pub const DARK_BROWN: Color = Color::Rgb { r: 101, g: 67, b: 33 };
34
35pub const COLOR_DEBUG: Color = GREY;
37pub const COLOR_INFO: Color = LIGHT_BLUE;
38pub const COLOR_WARNING: Color = ORANGE;
39pub const COLOR_ERROR: Color = RED;
40pub const COLOR_TRACE: Color = LIGHT_GREY;
41pub const COLOR_SUCCESS: Color = GREEN;
42
43pub fn list() -> Vec<(&'static str, Color)> {
45 vec![
46 ("Red", RED),
47 ("Green", GREEN),
48 ("Blue", BLUE),
49 ("Yellow", YELLOW),
50 ("Cyan", CYAN),
51 ("Magenta", MAGENTA),
52 ("White", WHITE),
53 ("Grey", GREY),
54 ("Black", BLACK),
55 ("Orange", ORANGE),
56 ("Pink", PINK),
57 ("Purple", PURPLE),
58 ("Teal", TEAL),
59 ("Brown", BROWN),
60 ("Light Blue", LIGHT_BLUE),
61 ("Light Green", LIGHT_GREEN),
62 ("Light Yellow", LIGHT_YELLOW),
63 ("Light Cyan", LIGHT_CYAN),
64 ("Light Magenta", LIGHT_MAGENTA),
65 ("Light Grey", LIGHT_GREY),
66 ("Dark Grey", DARK_GREY),
67 ("Dark Blue", DARK_BLUE),
68 ("Dark Orange", DARK_ORANGE),
69 ("Dark Pink", DARK_PINK),
70 ("Dark Purple", DARK_PURPLE),
71 ("Dark Teal", DARK_TEAL),
72 ("Dark Brown", DARK_BROWN)
73 ]
74}
75
76pub fn get(name: &str) -> Color {
78 list()
79 .into_iter()
80 .find(|(n, _)| n.eq_ignore_ascii_case(name))
81 .map(|(_, c)| c)
82 .unwrap_or(DEFAULT)
83}
84
85pub fn print() {
87 println!("Available Colors:");
88 for (name, color) in list() {
89 println!("{}", format!("{:<20}", name).with(color));
90 }
91}