Add Dracula, Nord, Solarized and Grubvox variants to Theme

This commit is contained in:
Var Bhat 2023-12-22 02:10:53 +05:30 committed by Héctor Ramón Jiménez
parent 6492d9d927
commit 04b9dc4e2d
No known key found for this signature in database
GPG key ID: 7CC46565708259A7
3 changed files with 160 additions and 19 deletions

View file

@ -23,6 +23,12 @@ struct Styling {
enum ThemeType {
Light,
Dark,
Nord,
GruvboxLight,
GruvboxDark,
Dracula,
SolarizedLight,
SolarizedDark,
Custom,
}
@ -53,6 +59,12 @@ impl Sandbox for Styling {
self.theme = match theme {
ThemeType::Light => Theme::Light,
ThemeType::Dark => Theme::Dark,
ThemeType::Nord => Theme::Nord,
ThemeType::GruvboxLight => Theme::GruvboxLight,
ThemeType::GruvboxDark => Theme::GruvboxDark,
ThemeType::Dracula => Theme::Dracula,
ThemeType::SolarizedLight => Theme::SolarizedLight,
ThemeType::SolarizedDark => Theme::SolarizedDark,
ThemeType::Custom => Theme::custom(
String::from("Custom"),
theme::Palette {
@ -74,24 +86,39 @@ impl Sandbox for Styling {
}
fn view(&self) -> Element<Message> {
let choose_theme =
[ThemeType::Light, ThemeType::Dark, ThemeType::Custom]
.iter()
.fold(
column![text("Choose a theme:")].spacing(10),
|column, theme| {
column.push(radio(
format!("{theme:?}"),
*theme,
Some(match self.theme {
Theme::Light => ThemeType::Light,
Theme::Dark => ThemeType::Dark,
Theme::Custom { .. } => ThemeType::Custom,
}),
Message::ThemeChanged,
))
},
);
let choose_theme = [
ThemeType::Light,
ThemeType::Dark,
ThemeType::Nord,
ThemeType::Dracula,
ThemeType::SolarizedLight,
ThemeType::SolarizedDark,
ThemeType::GruvboxLight,
ThemeType::GruvboxDark,
ThemeType::Custom,
]
.iter()
.fold(
column![text("Choose a theme:")].spacing(10),
|column, theme| {
column.push(radio(
format!("{theme:?}"),
*theme,
Some(match self.theme {
Theme::Light => ThemeType::Light,
Theme::Dark => ThemeType::Dark,
Theme::Dracula => ThemeType::Dracula,
Theme::Nord => ThemeType::Nord,
Theme::SolarizedLight => ThemeType::SolarizedLight,
Theme::SolarizedDark => ThemeType::SolarizedDark,
Theme::GruvboxLight => ThemeType::GruvboxLight,
Theme::GruvboxDark => ThemeType::GruvboxDark,
Theme::Custom { .. } => ThemeType::Custom,
}),
Message::ThemeChanged,
))
},
);
let text_input = text_input("Type something...", &self.input_value)
.on_input(Message::InputChanged)