1use crossterm::style::{Color, Stylize};
2
3pub fn list_named_colors() -> Vec<(&'static str, Color)> {
4 vec![
5 ("Red", Color::Red),
6 ("Green", Color::Green),
7 ("Blue", Color::Blue),
8 ("Yellow", Color::Yellow),
9 ("Cyan", Color::Cyan),
10 ("Magenta", Color::Magenta),
11 ("White", Color::White),
12 ("Grey", Color::Grey),
13 ("Black", Color::Black),
14 ("Orange", Color::Rgb { r: 255, g: 165, b: 0 }),
15 ("Pink", Color::Rgb { r: 255, g: 105, b: 180 }),
16 ("Purple", Color::Rgb { r: 128, g: 0, b: 128 }),
17 ("Teal", Color::Rgb { r: 0, g: 128, b: 128 }),
18 ("Brown", Color::Rgb { r: 139, g: 69, b: 19 }),
19 ("Light Blue", Color::Rgb { r: 173, g: 216, b: 230 }),
20 ("Light Green", Color::Rgb { r: 144, g: 238, b: 144 }),
21 ("Light Yellow", Color::Rgb { r: 255, g: 255, b: 224 }),
22 ("Light Cyan", Color::Rgb { r: 224, g: 255, b: 255 }),
23 ("Light Magenta", Color::Rgb { r: 255, g: 224, b: 255 }),
24 ("Light Grey", Color::Rgb { r: 211, g: 211, b: 211 }),
25 ("Dark Grey", Color::Rgb { r: 169, g: 169, b: 169 }),
26 ("Dark Blue", Color::Rgb { r: 0, g: 0, b: 139 }),
27 ("Dark Orange", Color::Rgb { r: 255, g: 140, b: 0 }),
28 ("Dark Pink", Color::Rgb { r: 255, g: 20, b: 147 }),
29 ("Dark Purple", Color::Rgb { r: 75, g: 0, b: 130 }),
30 ("Dark Teal", Color::Rgb { r: 0, g: 139, b: 139 }),
31 ("Dark Brown", Color::Rgb { r: 101, g: 67, b: 33 }),
32 ]
33}
34
35
36pub fn print_color_swatch() {
37 println!("Color Swatch:");
38 for (name, color) in list_named_colors() {
39 println!("{}", format!("{:<15}", name).with(color));
40 }
41}
42
43
44pub fn get_color_by_name(name: &str) -> Option<Color> {
45 list_named_colors()
46 .into_iter()
47 .find(|(n, _)| n.eq_ignore_ascii_case(name))
48 .map(|(_, c)| c)
49}