feat(theme): add 12 new themes (neon, goth, dev, cozy)

This commit is contained in:
Luna 2026-06-27 10:42:43 -07:00
parent 01c258e6d2
commit 0a58f8ae40

View file

@ -5,9 +5,25 @@ pub const THEMES: &[(&str, &str)] = &[
("light", "Light"), ("light", "Light"),
("dracula", "Dracula"), ("dracula", "Dracula"),
("trans", "Trans"), ("trans", "Trans"),
// Catacomb / goth
("emo-nocturnal", "Emo: Nocturnal"), ("emo-nocturnal", "Emo: Nocturnal"),
("emo-coffin", "Emo: Coffin"), ("emo-coffin", "Emo: Coffin"),
("emo-scene-queen", "Emo: Scene Queen"), ("emo-scene-queen", "Emo: Scene Queen"),
("cemetery-moss", "Cemetery Moss"),
("vampire", "Vampire"),
("witching-hour", "Witching Hour"),
// Neon / retro
("cyberpunk", "Cyberpunk"),
("synthwave", "Synthwave '84"),
("vaporwave", "Vaporwave"),
// Dev palettes
("nord", "Nord"),
("gruvbox", "Gruvbox"),
("tokyo-night", "Tokyo Night"),
// Cozy / light
("paper", "Paper"),
("honey", "Honey"),
("candlelight", "Candlelight"),
]; ];
/// Theme-aware semantic accent colors. egui `Visuals` has no slot for these, /// Theme-aware semantic accent colors. egui `Visuals` has no slot for these,
@ -70,6 +86,18 @@ pub fn apply(ctx: &egui::Context, name: &str) {
"emo-nocturnal" => emo_nocturnal(), "emo-nocturnal" => emo_nocturnal(),
"emo-coffin" => emo_coffin(), "emo-coffin" => emo_coffin(),
"emo-scene-queen" => emo_scene_queen(), "emo-scene-queen" => emo_scene_queen(),
"cemetery-moss" => cemetery_moss(),
"vampire" => vampire(),
"witching-hour" => witching_hour(),
"cyberpunk" => cyberpunk(),
"synthwave" => synthwave(),
"vaporwave" => vaporwave(),
"nord" => nord(),
"gruvbox" => gruvbox(),
"tokyo-night" => tokyo_night(),
"paper" => paper(),
"honey" => honey(),
"candlelight" => candlelight(),
_ => dark(), _ => dark(),
}; };
ctx.set_visuals(visuals); ctx.set_visuals(visuals);
@ -307,6 +335,398 @@ fn emo_scene_queen() -> egui::Visuals {
v v
} }
// === Neon / retro ===
// Magenta + electric cyan on black. Hacker HUD.
fn cyberpunk() -> egui::Visuals {
let mut v = egui::Visuals::dark();
v.panel_fill = hex(0x0a0a12);
v.window_fill = hex(0x0e0e18);
v.extreme_bg_color = hex(0x050508);
v.faint_bg_color = hex(0x14141f);
v.code_bg_color = hex(0x08080f);
v.selection.bg_fill = hex(0xff003c);
v.selection.stroke = Stroke::new(1.0, hex(0x00fff5));
v.hyperlink_color = hex(0x00fff5);
v.override_text_color = None;
v.widgets.noninteractive.bg_fill = hex(0x14141f);
v.widgets.noninteractive.weak_bg_fill = hex(0x0f0f18);
v.widgets.noninteractive.fg_stroke = Stroke::new(1.0, hex(0xc8c8e0));
v.widgets.noninteractive.bg_stroke = Stroke::new(1.0, hex(0x2a2a3a));
v.widgets.inactive.bg_fill = hex(0x1f0018);
v.widgets.inactive.weak_bg_fill = hex(0x180013);
v.widgets.inactive.fg_stroke = Stroke::new(1.0, hex(0xd0d0e8));
v.widgets.hovered.bg_fill = hex(0x6a0044);
v.widgets.hovered.weak_bg_fill = hex(0x500034);
v.widgets.hovered.fg_stroke = Stroke::new(1.5, hex(0x00fff5));
v.widgets.active.bg_fill = hex(0xff003c);
v.widgets.active.weak_bg_fill = hex(0xcc0030);
v.widgets.active.fg_stroke = Stroke::new(2.0, hex(0xffffff));
v.widgets.open.bg_fill = hex(0x6a0044);
v.window_stroke = Stroke::new(1.0, hex(0xff003c));
v.warn_fg_color = hex(0xfcee0a);
v.error_fg_color = hex(0xff003c);
v
}
// Sunset gradient on deep indigo.
fn synthwave() -> egui::Visuals {
let mut v = egui::Visuals::dark();
v.panel_fill = hex(0x2b0a3d);
v.window_fill = hex(0x330a48);
v.extreme_bg_color = hex(0x1a0529);
v.faint_bg_color = hex(0x3a1055);
v.code_bg_color = hex(0x220833);
v.selection.bg_fill = hex(0xff2a6d);
v.selection.stroke = Stroke::new(1.0, hex(0x05d9e8));
v.hyperlink_color = hex(0x05d9e8);
v.override_text_color = None;
v.widgets.noninteractive.bg_fill = hex(0x3a1055);
v.widgets.noninteractive.weak_bg_fill = hex(0x2e0c45);
v.widgets.noninteractive.fg_stroke = Stroke::new(1.0, hex(0xe8c0e0));
v.widgets.noninteractive.bg_stroke = Stroke::new(1.0, hex(0x5a1a7a));
v.widgets.inactive.bg_fill = hex(0x4a1466);
v.widgets.inactive.weak_bg_fill = hex(0x3c1055);
v.widgets.inactive.fg_stroke = Stroke::new(1.0, hex(0xf0d0e8));
v.widgets.hovered.bg_fill = hex(0x7a1a4a);
v.widgets.hovered.weak_bg_fill = hex(0x60143a);
v.widgets.hovered.fg_stroke = Stroke::new(1.5, hex(0xff9a3c));
v.widgets.active.bg_fill = hex(0xff2a6d);
v.widgets.active.weak_bg_fill = hex(0xcc2055);
v.widgets.active.fg_stroke = Stroke::new(2.0, hex(0xffffff));
v.widgets.open.bg_fill = hex(0x7a1a4a);
v.window_stroke = Stroke::new(1.0, hex(0xff2a6d));
v.warn_fg_color = hex(0xff9a3c);
v.error_fg_color = hex(0xff2a6d);
v
}
// Pastel pink + cyan + lavender on deep plum.
fn vaporwave() -> egui::Visuals {
let mut v = egui::Visuals::dark();
v.panel_fill = hex(0x1a0033);
v.window_fill = hex(0x200040);
v.extreme_bg_color = hex(0x10001f);
v.faint_bg_color = hex(0x28004e);
v.code_bg_color = hex(0x150028);
v.selection.bg_fill = hex(0xb967ff);
v.selection.stroke = Stroke::new(1.0, hex(0x01cdfe));
v.hyperlink_color = hex(0x01cdfe);
v.override_text_color = None;
v.widgets.noninteractive.bg_fill = hex(0x28004e);
v.widgets.noninteractive.weak_bg_fill = hex(0x1f003c);
v.widgets.noninteractive.fg_stroke = Stroke::new(1.0, hex(0xe0c0ff));
v.widgets.noninteractive.bg_stroke = Stroke::new(1.0, hex(0x4a0070));
v.widgets.inactive.bg_fill = hex(0x350060);
v.widgets.inactive.weak_bg_fill = hex(0x2a004f);
v.widgets.inactive.fg_stroke = Stroke::new(1.0, hex(0xf0d8ff));
v.widgets.hovered.bg_fill = hex(0x55008a);
v.widgets.hovered.weak_bg_fill = hex(0x440070);
v.widgets.hovered.fg_stroke = Stroke::new(1.5, hex(0x01cdfe));
v.widgets.active.bg_fill = hex(0xff71ce);
v.widgets.active.weak_bg_fill = hex(0xcc5aa6);
v.widgets.active.fg_stroke = Stroke::new(2.0, hex(0x1a0033));
v.widgets.open.bg_fill = hex(0x55008a);
v.window_stroke = Stroke::new(1.0, hex(0xff71ce));
v.warn_fg_color = hex(0x05ffa1);
v.error_fg_color = hex(0xff71ce);
v
}
// === Catacomb / goth ===
// Weathered stone + mossy green + bone.
fn cemetery_moss() -> egui::Visuals {
let mut v = egui::Visuals::dark();
v.panel_fill = hex(0x1a1f1a);
v.window_fill = hex(0x1e241e);
v.extreme_bg_color = hex(0x0f140f);
v.faint_bg_color = hex(0x242a24);
v.code_bg_color = hex(0x141814);
v.selection.bg_fill = hex(0x4a5d3a);
v.selection.stroke = Stroke::new(1.0, hex(0x7a8a6a));
v.hyperlink_color = hex(0x9aa86a);
v.override_text_color = None;
v.widgets.noninteractive.bg_fill = hex(0x242a24);
v.widgets.noninteractive.weak_bg_fill = hex(0x1f241f);
v.widgets.noninteractive.fg_stroke = Stroke::new(1.0, hex(0xb8b8a8));
v.widgets.noninteractive.bg_stroke = Stroke::new(1.0, hex(0x363a30));
v.widgets.inactive.bg_fill = hex(0x2a302a);
v.widgets.inactive.weak_bg_fill = hex(0x232823);
v.widgets.inactive.fg_stroke = Stroke::new(1.0, hex(0xc8c8b8));
v.widgets.hovered.bg_fill = hex(0x3a4530);
v.widgets.hovered.weak_bg_fill = hex(0x2e3826);
v.widgets.hovered.fg_stroke = Stroke::new(1.5, hex(0xaac08a));
v.widgets.active.bg_fill = hex(0x4a5d3a);
v.widgets.active.weak_bg_fill = hex(0x3a4a2e);
v.widgets.active.fg_stroke = Stroke::new(2.0, hex(0xd4d0c0));
v.widgets.open.bg_fill = hex(0x3a4530);
v.window_stroke = Stroke::new(1.0, hex(0x4a5d3a));
v.warn_fg_color = hex(0xc9a227);
v.error_fg_color = hex(0x8b1a2b);
v
}
// Deep wine burgundy + antique gold + black.
fn vampire() -> egui::Visuals {
let mut v = egui::Visuals::dark();
v.panel_fill = hex(0x0d0006);
v.window_fill = hex(0x120008);
v.extreme_bg_color = hex(0x070003);
v.faint_bg_color = hex(0x18000c);
v.code_bg_color = hex(0x0a0005);
v.selection.bg_fill = hex(0x5c0a1e);
v.selection.stroke = Stroke::new(1.0, hex(0xc9a227));
v.hyperlink_color = hex(0xc9a227);
v.override_text_color = None;
v.widgets.noninteractive.bg_fill = hex(0x18000c);
v.widgets.noninteractive.weak_bg_fill = hex(0x130009);
v.widgets.noninteractive.fg_stroke = Stroke::new(1.0, hex(0xd8c8a8));
v.widgets.noninteractive.bg_stroke = Stroke::new(1.0, hex(0x3a0014));
v.widgets.inactive.bg_fill = hex(0x200010);
v.widgets.inactive.weak_bg_fill = hex(0x19000c);
v.widgets.inactive.fg_stroke = Stroke::new(1.0, hex(0xe8d8b8));
v.widgets.hovered.bg_fill = hex(0x400018);
v.widgets.hovered.weak_bg_fill = hex(0x300012);
v.widgets.hovered.fg_stroke = Stroke::new(1.5, hex(0xc9a227));
v.widgets.active.bg_fill = hex(0x8b1a2b);
v.widgets.active.weak_bg_fill = hex(0x700020);
v.widgets.active.fg_stroke = Stroke::new(2.0, hex(0xe8d8b8));
v.widgets.open.bg_fill = hex(0x400018);
v.window_stroke = Stroke::new(1.0, hex(0x8b1a2b));
v.warn_fg_color = hex(0xc9a227);
v.error_fg_color = hex(0x8b1a2b);
v
}
// Midnight indigo + moonlight silver + arcane violet.
fn witching_hour() -> egui::Visuals {
let mut v = egui::Visuals::dark();
v.panel_fill = hex(0x0a0a1f);
v.window_fill = hex(0x0e0e28);
v.extreme_bg_color = hex(0x05050f);
v.faint_bg_color = hex(0x14142e);
v.code_bg_color = hex(0x08081a);
v.selection.bg_fill = hex(0x1a1a4a);
v.selection.stroke = Stroke::new(1.0, hex(0xb0b8d0));
v.hyperlink_color = hex(0xb0b8d0);
v.override_text_color = None;
v.widgets.noninteractive.bg_fill = hex(0x14142e);
v.widgets.noninteractive.weak_bg_fill = hex(0x101024);
v.widgets.noninteractive.fg_stroke = Stroke::new(1.0, hex(0xc0c8e0));
v.widgets.noninteractive.bg_stroke = Stroke::new(1.0, hex(0x2a2a55));
v.widgets.inactive.bg_fill = hex(0x1c1c3c);
v.widgets.inactive.weak_bg_fill = hex(0x161630);
v.widgets.inactive.fg_stroke = Stroke::new(1.0, hex(0xd0d8f0));
v.widgets.hovered.bg_fill = hex(0x2a2a5a);
v.widgets.hovered.weak_bg_fill = hex(0x20204a);
v.widgets.hovered.fg_stroke = Stroke::new(1.5, hex(0x6a4a8b));
v.widgets.active.bg_fill = hex(0x6a4a8b);
v.widgets.active.weak_bg_fill = hex(0x523a72);
v.widgets.active.fg_stroke = Stroke::new(2.0, hex(0xe8e8f8));
v.widgets.open.bg_fill = hex(0x2a2a5a);
v.window_stroke = Stroke::new(1.0, hex(0x6a4a8b));
v.warn_fg_color = hex(0xc9a227);
v.error_fg_color = hex(0x8b1a2b);
v
}
// === Dev palettes ===
// Arctic blues & greys.
fn nord() -> egui::Visuals {
let mut v = egui::Visuals::dark();
v.panel_fill = hex(0x2e3440);
v.window_fill = hex(0x3b4252);
v.extreme_bg_color = hex(0x1e222a);
v.faint_bg_color = hex(0x3b4252);
v.code_bg_color = hex(0x242933);
v.selection.bg_fill = hex(0x434c5e);
v.selection.stroke = Stroke::new(1.0, hex(0x88c0d0));
v.hyperlink_color = hex(0x88c0d0);
v.override_text_color = None;
v.widgets.noninteractive.bg_fill = hex(0x3b4252);
v.widgets.noninteractive.weak_bg_fill = hex(0x343b48);
v.widgets.noninteractive.fg_stroke = Stroke::new(1.0, hex(0xd8dee9));
v.widgets.noninteractive.bg_stroke = Stroke::new(1.0, hex(0x434c5e));
v.widgets.inactive.bg_fill = hex(0x434c5e);
v.widgets.inactive.weak_bg_fill = hex(0x3c4454);
v.widgets.inactive.fg_stroke = Stroke::new(1.0, hex(0xe5e9f0));
v.widgets.hovered.bg_fill = hex(0x4c566a);
v.widgets.hovered.weak_bg_fill = hex(0x424c60);
v.widgets.hovered.fg_stroke = Stroke::new(1.5, hex(0x88c0d0));
v.widgets.active.bg_fill = hex(0x88c0d0);
v.widgets.active.weak_bg_fill = hex(0x6fa6ba);
v.widgets.active.fg_stroke = Stroke::new(2.0, hex(0x2e3440));
v.widgets.open.bg_fill = hex(0x4c566a);
v.window_stroke = Stroke::new(1.0, hex(0x4c566a));
v.warn_fg_color = hex(0xebcb8b);
v.error_fg_color = hex(0xbf616a);
v
}
// Warm earthy retro groove.
fn gruvbox() -> egui::Visuals {
let mut v = egui::Visuals::dark();
v.panel_fill = hex(0x282828);
v.window_fill = hex(0x32302f);
v.extreme_bg_color = hex(0x1d2021);
v.faint_bg_color = hex(0x32302f);
v.code_bg_color = hex(0x1d2021);
v.selection.bg_fill = hex(0x504945);
v.selection.stroke = Stroke::new(1.0, hex(0xfe8019));
v.hyperlink_color = hex(0x83a598);
v.override_text_color = None;
v.widgets.noninteractive.bg_fill = hex(0x32302f);
v.widgets.noninteractive.weak_bg_fill = hex(0x2c2a29);
v.widgets.noninteractive.fg_stroke = Stroke::new(1.0, hex(0xd5c4a1));
v.widgets.noninteractive.bg_stroke = Stroke::new(1.0, hex(0x504945));
v.widgets.inactive.bg_fill = hex(0x504945);
v.widgets.inactive.weak_bg_fill = hex(0x44403c);
v.widgets.inactive.fg_stroke = Stroke::new(1.0, hex(0xebdbb2));
v.widgets.hovered.bg_fill = hex(0x665c54);
v.widgets.hovered.weak_bg_fill = hex(0x585048);
v.widgets.hovered.fg_stroke = Stroke::new(1.5, hex(0xfe8019));
v.widgets.active.bg_fill = hex(0xd65d0e);
v.widgets.active.weak_bg_fill = hex(0xaf4f0b);
v.widgets.active.fg_stroke = Stroke::new(2.0, hex(0xebdbb2));
v.widgets.open.bg_fill = hex(0x665c54);
v.window_stroke = Stroke::new(1.0, hex(0x665c54));
v.warn_fg_color = hex(0xfe9d44);
v.error_fg_color = hex(0xfb4934);
v
}
// Tokyo city lights. Blue/purple, clean.
fn tokyo_night() -> egui::Visuals {
let mut v = egui::Visuals::dark();
v.panel_fill = hex(0x1a1b26);
v.window_fill = hex(0x20202f);
v.extreme_bg_color = hex(0x12121c);
v.faint_bg_color = hex(0x24253a);
v.code_bg_color = hex(0x16161e);
v.selection.bg_fill = hex(0x33415c);
v.selection.stroke = Stroke::new(1.0, hex(0x7aa2f7));
v.hyperlink_color = hex(0x7aa2f7);
v.override_text_color = None;
v.widgets.noninteractive.bg_fill = hex(0x24253a);
v.widgets.noninteractive.weak_bg_fill = hex(0x1f2030);
v.widgets.noninteractive.fg_stroke = Stroke::new(1.0, hex(0xa9b1d6));
v.widgets.noninteractive.bg_stroke = Stroke::new(1.0, hex(0x3b4261));
v.widgets.inactive.bg_fill = hex(0x2a2b3e);
v.widgets.inactive.weak_bg_fill = hex(0x232436);
v.widgets.inactive.fg_stroke = Stroke::new(1.0, hex(0xc0caf5));
v.widgets.hovered.bg_fill = hex(0x363b54);
v.widgets.hovered.weak_bg_fill = hex(0x2d324a);
v.widgets.hovered.fg_stroke = Stroke::new(1.5, hex(0x7aa2f7));
v.widgets.active.bg_fill = hex(0x7aa2f7);
v.widgets.active.weak_bg_fill = hex(0x5c82d4);
v.widgets.active.fg_stroke = Stroke::new(2.0, hex(0x1a1b26));
v.widgets.open.bg_fill = hex(0x363b54);
v.window_stroke = Stroke::new(1.0, hex(0x3b4261));
v.warn_fg_color = hex(0xe0af68);
v.error_fg_color = hex(0xf7768e);
v
}
// === Cozy / light ===
// Aged paper + sepia ink.
fn paper() -> egui::Visuals {
let mut v = egui::Visuals::light();
v.panel_fill = hex(0xf4ecd8);
v.window_fill = hex(0xf8f0dc);
v.extreme_bg_color = hex(0xfef8e8);
v.faint_bg_color = hex(0xefe5cc);
v.code_bg_color = hex(0xe8dcc0);
v.selection.bg_fill = hex(0xd9c896);
v.selection.stroke = Stroke::new(1.0, hex(0x8b6f3a));
v.hyperlink_color = hex(0x6b4f2a);
v.override_text_color = None;
v.widgets.noninteractive.bg_fill = hex(0xefe5cc);
v.widgets.noninteractive.weak_bg_fill = hex(0xf2e9d2);
v.widgets.noninteractive.fg_stroke = Stroke::new(1.0, hex(0x3d2b1f));
v.widgets.noninteractive.bg_stroke = Stroke::new(1.0, hex(0xc4a86a));
v.widgets.inactive.bg_fill = hex(0xe2d4b0);
v.widgets.inactive.weak_bg_fill = hex(0xeadab4);
v.widgets.inactive.fg_stroke = Stroke::new(1.0, hex(0x2d1f15));
v.widgets.hovered.bg_fill = hex(0xd6c498);
v.widgets.hovered.weak_bg_fill = hex(0xddcaa8);
v.widgets.hovered.fg_stroke = Stroke::new(1.5, hex(0x3d2b1f));
v.widgets.active.bg_fill = hex(0x8b6f3a);
v.widgets.active.weak_bg_fill = hex(0xa18450);
v.widgets.active.fg_stroke = Stroke::new(2.0, hex(0xf4ecd8));
v.widgets.open.bg_fill = hex(0xd6c498);
v.window_stroke = Stroke::new(1.0, hex(0xc4a86a));
v.warn_fg_color = hex(0xb87420);
v.error_fg_color = hex(0x9a3a1a);
v
}
// Warm amber + gold + cream.
fn honey() -> egui::Visuals {
let mut v = egui::Visuals::light();
v.panel_fill = hex(0xfff4e0);
v.window_fill = hex(0xfff9ec);
v.extreme_bg_color = hex(0xffffff);
v.faint_bg_color = hex(0xffecc8);
v.code_bg_color = hex(0xffe6b8);
v.selection.bg_fill = hex(0xffd97a);
v.selection.stroke = Stroke::new(1.0, hex(0xb87420));
v.hyperlink_color = hex(0x9a5a10);
v.override_text_color = None;
v.widgets.noninteractive.bg_fill = hex(0xffecc8);
v.widgets.noninteractive.weak_bg_fill = hex(0xfff2d4);
v.widgets.noninteractive.fg_stroke = Stroke::new(1.0, hex(0x5c3818));
v.widgets.noninteractive.bg_stroke = Stroke::new(1.0, hex(0xe8a838));
v.widgets.inactive.bg_fill = hex(0xffdf9c);
v.widgets.inactive.weak_bg_fill = hex(0xffe6b0);
v.widgets.inactive.fg_stroke = Stroke::new(1.0, hex(0x4a2c10));
v.widgets.hovered.bg_fill = hex(0xffd166);
v.widgets.hovered.weak_bg_fill = hex(0xffdb84);
v.widgets.hovered.fg_stroke = Stroke::new(1.5, hex(0x4a2c10));
v.widgets.active.bg_fill = hex(0xe8a838);
v.widgets.active.weak_bg_fill = hex(0xc8902a);
v.widgets.active.fg_stroke = Stroke::new(2.0, hex(0xfff4e0));
v.widgets.open.bg_fill = hex(0xffd166);
v.window_stroke = Stroke::new(1.0, hex(0xe8a838));
v.warn_fg_color = hex(0xb87420);
v.error_fg_color = hex(0xa83a1a);
v
}
// Dim warm glow + toasted brown.
fn candlelight() -> egui::Visuals {
let mut v = egui::Visuals::light();
v.panel_fill = hex(0xf2e6d0);
v.window_fill = hex(0xf6ecd9);
v.extreme_bg_color = hex(0xfbf3e2);
v.faint_bg_color = hex(0xead8b8);
v.code_bg_color = hex(0xe2cea0);
v.selection.bg_fill = hex(0xd9b382);
v.selection.stroke = Stroke::new(1.0, hex(0x6b3f1e));
v.hyperlink_color = hex(0x5a3418);
v.override_text_color = None;
v.widgets.noninteractive.bg_fill = hex(0xead8b8);
v.widgets.noninteractive.weak_bg_fill = hex(0xeedec2);
v.widgets.noninteractive.fg_stroke = Stroke::new(1.0, hex(0x3a2818));
v.widgets.noninteractive.bg_stroke = Stroke::new(1.0, hex(0xa8703a));
v.widgets.inactive.bg_fill = hex(0xddc498);
v.widgets.inactive.weak_bg_fill = hex(0xe4ceaa);
v.widgets.inactive.fg_stroke = Stroke::new(1.0, hex(0x2d1a0c));
v.widgets.hovered.bg_fill = hex(0xd2ac6e);
v.widgets.hovered.weak_bg_fill = hex(0xdab880);
v.widgets.hovered.fg_stroke = Stroke::new(1.5, hex(0x2d1a0c));
v.widgets.active.bg_fill = hex(0xa8703a);
v.widgets.active.weak_bg_fill = hex(0x8c5a2c);
v.widgets.active.fg_stroke = Stroke::new(2.0, hex(0xf2e6d0));
v.widgets.open.bg_fill = hex(0xd2ac6e);
v.window_stroke = Stroke::new(1.0, hex(0xa8703a));
v.warn_fg_color = hex(0xb87420);
v.error_fg_color = hex(0x9a3a1a);
v
}
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::*; use super::*;