aboutsummaryrefslogtreecommitdiff
path: root/ui/src
diff options
context:
space:
mode:
Diffstat (limited to 'ui/src')
-rw-r--r--ui/src/components/user.rs11
-rw-r--r--ui/src/lib.rs14
-rw-r--r--ui/src/scaffold.rs7
3 files changed, 25 insertions, 7 deletions
diff --git a/ui/src/components/user.rs b/ui/src/components/user.rs
index 600af22..cf1c123 100644
--- a/ui/src/components/user.rs
+++ b/ui/src/components/user.rs
@@ -30,6 +30,17 @@ markup::define! {
input[type="password", id="password", name="password"];
input[type="submit", value=tr(ri.lang, "settings.update")];
}
+ form[method="POST", action=u_account_settings()] {
+ fieldset {
+ legend { @tr(ri.lang, "tag.Utpr") }
+ @for preset in [THEME_DARK, THEME_LIGHT] {
+ label { input[type="radio", name="theme_preset", value=preset.to_string(), checked=user.get(USER_THEME_PRESET) == Some(preset)]; @tr(ri.lang, &format!("tag.Utpr.{preset}")) } br;
+ }
+ }
+ label[for="accent"] { @tr(ri.lang, "tag.Utac") }
+ input[type="range", id="accent", name="theme_accent", min=0, max=360, step=1, value=user.get(USER_THEME_ACCENT)];
+ input[type="submit", value=tr(ri.lang, "settings.update")];
+ }
// h2 { @tr(ri.lang, "settings.appearance") }
// form[method="POST", action=u_account_settings()] {
diff --git a/ui/src/lib.rs b/ui/src/lib.rs
index f32657d..d74df51 100644
--- a/ui/src/lib.rs
+++ b/ui/src/lib.rs
@@ -35,14 +35,20 @@ pub struct RenderInfo<'a> {
}
pub fn render_view(ri: RenderInfo<'_>, view: Object<'_>) -> String {
+ let theme = ri
+ .user
+ .and_then(|u| u.get(USER_THEME_PRESET))
+ .unwrap_or(THEME_DARK);
Scaffold {
ri: &ri,
main: View { ri: &ri, view },
title: view.get(VIEW_TITLE).unwrap_or_default(),
- class: if view.has(VIEW_PLAYER.0) {
- "theme-purple player"
- } else {
- "theme-purple"
+ class: match (theme, view.has(VIEW_PLAYER.0)) {
+ (THEME_DARK, true) => "theme-dark player",
+ (THEME_DARK, false) => "theme-dark",
+ (THEME_LIGHT, true) => "theme-light player",
+ (THEME_LIGHT, false) => "theme-light",
+ _ => "theme-dark",
},
}
.to_string()
diff --git a/ui/src/scaffold.rs b/ui/src/scaffold.rs
index 4fc7d60..c563ee4 100644
--- a/ui/src/scaffold.rs
+++ b/ui/src/scaffold.rs
@@ -6,9 +6,10 @@
use crate::RenderInfo;
use jellycommon::{
+ USER_THEME_ACCENT,
routes::{
- u_account_login, u_account_logout, u_account_settings, u_admin_dashboard, u_home, u_items,
- u_node_slug, u_search, u_stats,
+ u_account_login, u_account_settings, u_admin_dashboard, u_home, u_items, u_node_slug,
+ u_search, u_stats,
},
user::{USER_ADMIN, USER_NAME},
};
@@ -25,7 +26,7 @@ markup::define! {
link[rel="stylesheet", href="/assets/bundle.css"];
script[src="/assets/bundle.js"] {}
}
- body[class=class] {
+ body[class=class, style=format!("--accent-hue: {}", ri.user.and_then(|u|u.get(USER_THEME_ACCENT)).unwrap_or(277))] {
@Navbar { ri }
#main { @main }
footer {