feat(theme): add 12 new themes (neon, goth, dev, cozy)
This commit is contained in:
parent
01c258e6d2
commit
0a58f8ae40
1 changed files with 420 additions and 0 deletions
420
src/theme.rs
420
src/theme.rs
|
|
@ -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::*;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue