From f4f3a16bca576c202887799066bd896863612e2b Mon Sep 17 00:00:00 2001 From: metamuffin Date: Tue, 24 Oct 2023 15:08:15 +0200 Subject: partial theme implementation --- server/src/routes/ui/layout.rs | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'server/src/routes/ui/layout.rs') diff --git a/server/src/routes/ui/layout.rs b/server/src/routes/ui/layout.rs index cdac09c..c4d1275 100644 --- a/server/src/routes/ui/layout.rs +++ b/server/src/routes/ui/layout.rs @@ -18,6 +18,7 @@ use crate::{ }; use futures::executor::block_on; use jellybase::CONF; +use jellycommon::user::Theme; use markup::{DynRender, Render}; use rocket::{ http::ContentType, @@ -27,7 +28,7 @@ use rocket::{ use std::io::Cursor; markup::define! { - Layout<'a, Main: Render>(title: String, main: Main, class: Option<&'a str>, session: Option) { + Layout<'a, Main: Render>(title: String, main: Main, class: &'a str, session: Option) { @markup::doctype() html { head { @@ -35,7 +36,7 @@ markup::define! { link[rel="stylesheet", href="/assets/style.css"]; script[src="/assets/bundle.js"] {} } - body[class=class.unwrap_or("")] { + body[class=class] { nav { h1 { a[href="/"] { @CONF.brand } } " " @if let Some(_) = session { @@ -102,7 +103,18 @@ impl<'r, Main: Render> Responder<'r, 'static> for LayoutPage
{ Layout { main: self.content, title: self.title, - class: self.class.as_deref(), + class: &format!( + "{} {}", + self.class.as_deref().unwrap_or(""), + match session + .as_ref() + .map(|s| s.user.theme) + .unwrap_or(Theme::Dark) + { + Theme::Dark => "theme-dark", + Theme::Light => "theme-light", + } + ), session, } .render(&mut out) -- cgit v1.2.3-70-g09d2