summaryrefslogtreecommitdiff
path: root/src/appearance.rs
diff options
context:
space:
mode:
authorpml68 <contact@pml68.dev>2025-04-28 10:59:52 +0200
committerpml68 <contact@pml68.dev>2025-04-28 23:45:43 +0200
commite17ce59fa4c907511f38795c342b2232a7bba26d (patch)
tree0bbeddd19696de817a97f2109bae316e3a564f3a /src/appearance.rs
parentfeat: switch to modified `iced_fontello` for custom Theme support (diff)
downloadiced-builder-e17ce59fa4c907511f38795c342b2232a7bba26d.tar.gz
feat: switch to fully custom, Material3-based theme
Diffstat (limited to '')
-rw-r--r--src/appearance.rs46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/appearance.rs b/src/appearance.rs
new file mode 100644
index 0000000..78e782d
--- /dev/null
+++ b/src/appearance.rs
@@ -0,0 +1,46 @@
+use std::sync::Arc;
+
+use material_theme::Theme;
+
+pub fn iced_theme_from_str(theme_name: &str) -> iced::Theme {
+ match theme_name {
+ "Light" => iced::Theme::Light,
+ "Dark" => iced::Theme::Dark,
+ "Dracula" => iced::Theme::Dracula,
+ "Nord" => iced::Theme::Nord,
+ "Solarized Light" => iced::Theme::SolarizedLight,
+ "Solarized Dark" => iced::Theme::SolarizedDark,
+ "Gruvbox Light" => iced::Theme::GruvboxLight,
+ "Gruvbox Dark" => iced::Theme::GruvboxDark,
+ "Catppuccin Latte" => iced::Theme::CatppuccinLatte,
+ "Catppuccin Frappé" => iced::Theme::CatppuccinFrappe,
+ "Catppuccin Macchiato" => iced::Theme::CatppuccinMacchiato,
+ "Catppuccin Mocha" => iced::Theme::CatppuccinMocha,
+ "Tokyo Night" => iced::Theme::TokyoNight,
+ "Tokyo Night Storm" => iced::Theme::TokyoNightStorm,
+ "Tokyo Night Light" => iced::Theme::TokyoNightLight,
+ "Kanagawa Wave" => iced::Theme::KanagawaWave,
+ "Kanagawa Dragon" => iced::Theme::KanagawaDragon,
+ "Kanagawa Lotus" => iced::Theme::KanagawaLotus,
+ "Moonfly" => iced::Theme::Moonfly,
+ "Nightfly" => iced::Theme::Nightfly,
+ "Oxocarbon" => iced::Theme::Oxocarbon,
+ "Ferra" => iced::Theme::Ferra,
+ _ => iced::Theme::default(),
+ }
+}
+
+#[derive(Debug, Clone)]
+pub struct Appearance {
+ pub selected: Theme,
+ pub all: Arc<[Theme]>,
+}
+
+impl Default for Appearance {
+ fn default() -> Self {
+ Self {
+ selected: Theme::default(),
+ all: Theme::ALL.into(),
+ }
+ }
+}