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 {
11 r: 255,
12 g: 255,
13 b: 0,
14};
15pub const CYAN: Color = Color::Rgb {
16 r: 0,
17 g: 255,
18 b: 255,
19};
20pub const MAGENTA: Color = Color::Rgb {
21 r: 255,
22 g: 0,
23 b: 255,
24};
25pub const WHITE: Color = Color::Rgb {
26 r: 255,
27 g: 255,
28 b: 255,
29};
30pub const BLACK: Color = Color::Rgb { r: 0, g: 0, b: 0 };
31pub const GREY: Color = Color::Rgb {
32 r: 128,
33 g: 128,
34 b: 128,
35};
36pub const PINK: Color = Color::Rgb {
37 r: 255,
38 g: 105,
39 b: 180,
40};
41pub const PURPLE: Color = Color::Rgb {
42 r: 128,
43 g: 0,
44 b: 128,
45};
46pub const TEAL: Color = Color::Rgb {
47 r: 0,
48 g: 128,
49 b: 128,
50};
51pub const ORANGE: Color = Color::Rgb {
52 r: 255,
53 g: 165,
54 b: 0,
55};
56pub const BROWN: Color = Color::Rgb {
57 r: 165,
58 g: 42,
59 b: 42,
60};
61pub const LIGHT_BLUE: Color = Color::Rgb {
62 r: 0,
63 g: 180,
64 b: 255,
65};
66pub const LIGHT_GREEN: Color = Color::Rgb {
67 r: 144,
68 g: 238,
69 b: 144,
70};
71pub const LIGHT_YELLOW: Color = Color::Rgb {
72 r: 255,
73 g: 255,
74 b: 224,
75};
76pub const LIGHT_CYAN: Color = Color::Rgb {
77 r: 224,
78 g: 255,
79 b: 255,
80};
81pub const LIGHT_MAGENTA: Color = Color::Rgb {
82 r: 255,
83 g: 224,
84 b: 255,
85};
86pub const LIGHT_GREY: Color = Color::Rgb {
87 r: 211,
88 g: 211,
89 b: 211,
90};
91pub const DARK_GREY: Color = Color::Rgb {
92 r: 169,
93 g: 169,
94 b: 169,
95};
96pub const DARK_BLUE: Color = Color::Rgb { r: 0, g: 0, b: 139 };
97pub const DARK_ORANGE: Color = Color::Rgb {
98 r: 255,
99 g: 140,
100 b: 0,
101};
102pub const DARK_PINK: Color = Color::Rgb {
103 r: 255,
104 g: 20,
105 b: 147,
106};
107pub const DARK_PURPLE: Color = Color::Rgb {
108 r: 75,
109 g: 0,
110 b: 130,
111};
112pub const DARK_TEAL: Color = Color::Rgb {
113 r: 0,
114 g: 139,
115 b: 139,
116};
117pub const DARK_BROWN: Color = Color::Rgb {
118 r: 101,
119 g: 67,
120 b: 33,
121};
122
123pub const COLOR_DEBUG: Color = GREY;
125pub const COLOR_STATUS: Color = CYAN;
126pub const COLOR_INFO: Color = LIGHT_BLUE;
127pub const COLOR_WARNING: Color = ORANGE;
128pub const COLOR_ERROR: Color = RED;
129pub const COLOR_TRACE: Color = LIGHT_GREY;
130pub const COLOR_SUCCESS: Color = GREEN;
131pub const COLOR_NOTICE: Color = Color::Rgb {
132 r: (255),
133 g: (90),
134 b: (0),
135};
136
137pub fn list() -> Vec<(&'static str, Color)> {
139 vec![
140 ("Red", RED),
141 ("Green", GREEN),
142 ("Blue", BLUE),
143 ("Yellow", YELLOW),
144 ("Cyan", CYAN),
145 ("Magenta", MAGENTA),
146 ("White", WHITE),
147 ("Grey", GREY),
148 ("Black", BLACK),
149 ("Orange", ORANGE),
150 ("Pink", PINK),
151 ("Purple", PURPLE),
152 ("Teal", TEAL),
153 ("Brown", BROWN),
154 ("Light Blue", LIGHT_BLUE),
155 ("Light Green", LIGHT_GREEN),
156 ("Light Yellow", LIGHT_YELLOW),
157 ("Light Cyan", LIGHT_CYAN),
158 ("Light Magenta", LIGHT_MAGENTA),
159 ("Light Grey", LIGHT_GREY),
160 ("Dark Grey", DARK_GREY),
161 ("Dark Blue", DARK_BLUE),
162 ("Dark Orange", DARK_ORANGE),
163 ("Dark Pink", DARK_PINK),
164 ("Dark Purple", DARK_PURPLE),
165 ("Dark Teal", DARK_TEAL),
166 ("Dark Brown", DARK_BROWN),
167 ]
168}
169
170pub fn get(name: &str) -> Color {
172 list()
173 .into_iter()
174 .find(|(n, _)| n.eq_ignore_ascii_case(name))
175 .map(|(_, c)| c)
176 .unwrap_or(DEFAULT)
177}
178
179pub fn print() {
181 println!("Available Colors:");
182 for (name, color) in list() {
183 println!("{}", format!("{name:<20}").with(color));
184 }
185}