Feat: refactoring codebase

This commit is contained in:
2026-02-16 16:26:57 +01:00
parent b60703aa16
commit 773c7bbd1c
25 changed files with 1047 additions and 5360 deletions

View File

@@ -1,6 +1,8 @@
//! Centralized color definitions for Cagire TUI.
//! Supports multiple color schemes with runtime switching.
pub mod palette;
pub mod build;
mod catppuccin_latte;
mod catppuccin_mocha;
mod dracula;
@@ -27,32 +29,32 @@ use std::cell::RefCell;
pub struct ThemeEntry {
pub id: &'static str,
pub label: &'static str,
pub colors: fn() -> ThemeColors,
pub palette: fn() -> palette::Palette,
}
pub const THEMES: &[ThemeEntry] = &[
ThemeEntry { id: "CatppuccinMocha", label: "Catppuccin Mocha", colors: catppuccin_mocha::theme },
ThemeEntry { id: "CatppuccinLatte", label: "Catppuccin Latte", colors: catppuccin_latte::theme },
ThemeEntry { id: "Nord", label: "Nord", colors: nord::theme },
ThemeEntry { id: "Dracula", label: "Dracula", colors: dracula::theme },
ThemeEntry { id: "GruvboxDark", label: "Gruvbox Dark", colors: gruvbox_dark::theme },
ThemeEntry { id: "Monokai", label: "Monokai", colors: monokai::theme },
ThemeEntry { id: "MonochromeBlack", label: "Monochrome (Black)", colors: monochrome_black::theme },
ThemeEntry { id: "MonochromeWhite", label: "Monochrome (White)", colors: monochrome_white::theme },
ThemeEntry { id: "PitchBlack", label: "Pitch Black", colors: pitch_black::theme },
ThemeEntry { id: "TokyoNight", label: "Tokyo Night", colors: tokyo_night::theme },
ThemeEntry { id: "RosePine", label: "Rosé Pine", colors: rose_pine::theme },
ThemeEntry { id: "Kanagawa", label: "Kanagawa", colors: kanagawa::theme },
ThemeEntry { id: "Fairyfloss", label: "Fairyfloss", colors: fairyfloss::theme },
ThemeEntry { id: "HotDogStand", label: "Hot Dog Stand", colors: hot_dog_stand::theme },
ThemeEntry { id: "LetzLight", label: "Letz Light", colors: letz_light::theme },
ThemeEntry { id: "Ember", label: "Ember", colors: ember::theme },
ThemeEntry { id: "Eden", label: "Eden", colors: eden::theme },
ThemeEntry { id: "Georges", label: "Georges", colors: georges::theme },
ThemeEntry { id: "CatppuccinMocha", label: "Catppuccin Mocha", palette: catppuccin_mocha::palette },
ThemeEntry { id: "CatppuccinLatte", label: "Catppuccin Latte", palette: catppuccin_latte::palette },
ThemeEntry { id: "Nord", label: "Nord", palette: nord::palette },
ThemeEntry { id: "Dracula", label: "Dracula", palette: dracula::palette },
ThemeEntry { id: "GruvboxDark", label: "Gruvbox Dark", palette: gruvbox_dark::palette },
ThemeEntry { id: "Monokai", label: "Monokai", palette: monokai::palette },
ThemeEntry { id: "MonochromeBlack", label: "Monochrome (Black)", palette: monochrome_black::palette },
ThemeEntry { id: "MonochromeWhite", label: "Monochrome (White)", palette: monochrome_white::palette },
ThemeEntry { id: "PitchBlack", label: "Pitch Black", palette: pitch_black::palette },
ThemeEntry { id: "TokyoNight", label: "Tokyo Night", palette: tokyo_night::palette },
ThemeEntry { id: "RosePine", label: "Rosé Pine", palette: rose_pine::palette },
ThemeEntry { id: "Kanagawa", label: "Kanagawa", palette: kanagawa::palette },
ThemeEntry { id: "Fairyfloss", label: "Fairyfloss", palette: fairyfloss::palette },
ThemeEntry { id: "HotDogStand", label: "Hot Dog Stand", palette: hot_dog_stand::palette },
ThemeEntry { id: "LetzLight", label: "Letz Light", palette: letz_light::palette },
ThemeEntry { id: "Ember", label: "Ember", palette: ember::palette },
ThemeEntry { id: "Eden", label: "Eden", palette: eden::palette },
ThemeEntry { id: "Georges", label: "Georges", palette: georges::palette },
];
thread_local! {
static CURRENT_THEME: RefCell<ThemeColors> = RefCell::new((THEMES[0].colors)());
static CURRENT_THEME: RefCell<ThemeColors> = RefCell::new(build::build(&(THEMES[0].palette)()));
}
pub fn get() -> ThemeColors {