diff options
Diffstat (limited to 'ui/src')
| -rw-r--r-- | ui/src/components/user.rs | 11 | ||||
| -rw-r--r-- | ui/src/lib.rs | 14 | ||||
| -rw-r--r-- | ui/src/scaffold.rs | 7 |
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 { |