From 0a58f8ae40a64ad26771383ce50cd9e197d57574 Mon Sep 17 00:00:00 2001 From: Luna Date: Sat, 27 Jun 2026 10:42:43 -0700 Subject: [PATCH] feat(theme): add 12 new themes (neon, goth, dev, cozy) --- src/theme.rs | 420 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 420 insertions(+) diff --git a/src/theme.rs b/src/theme.rs index b23de8a..c8633f7 100644 --- a/src/theme.rs +++ b/src/theme.rs @@ -5,9 +5,25 @@ pub const THEMES: &[(&str, &str)] = &[ ("light", "Light"), ("dracula", "Dracula"), ("trans", "Trans"), + // Catacomb / goth ("emo-nocturnal", "Emo: Nocturnal"), ("emo-coffin", "Emo: Coffin"), ("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, @@ -70,6 +86,18 @@ pub fn apply(ctx: &egui::Context, name: &str) { "emo-nocturnal" => emo_nocturnal(), "emo-coffin" => emo_coffin(), "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(), }; ctx.set_visuals(visuals); @@ -307,6 +335,398 @@ fn emo_scene_queen() -> egui::Visuals { 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)] mod tests { use super::*;