diff options
Diffstat (limited to 'ui/src/scaffold.rs')
| -rw-r--r-- | ui/src/scaffold.rs | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/ui/src/scaffold.rs b/ui/src/scaffold.rs index c563ee4..61e497a 100644 --- a/ui/src/scaffold.rs +++ b/ui/src/scaffold.rs @@ -4,9 +4,9 @@ Copyright (C) 2026 metamuffin <metamuffin.org> */ -use crate::RenderInfo; +use crate::{Page, RenderInfo, components::message::Message}; use jellycommon::{ - USER_THEME_ACCENT, + THEME_DARK, USER_THEME_ACCENT, USER_THEME_PRESET, routes::{ u_account_login, u_account_settings, u_admin_dashboard, u_home, u_items, u_node_slug, u_search, u_stats, @@ -14,21 +14,27 @@ use jellycommon::{ user::{USER_ADMIN, USER_NAME}, }; use jellyui_locale::{escape, tr}; -use markup::{Render, raw}; +use markup::raw; markup::define! { - Scaffold<'a, Main: Render>(ri: &'a RenderInfo<'a>, title: &'a str, main: Main, class: &'a str) { + Scaffold<'a>(page: &'a dyn Page) { + @let ri = page.ri(); @markup::doctype() html { head { - title { @title " - " @ri.config.brand } + title { @page.title() " - " @ri.config.brand } meta[name="viewport", content="width=device-width, initial-scale=1.0"]; link[rel="stylesheet", href="/assets/bundle.css"]; script[src="/assets/bundle.js"] {} } - body[class=class, style=format!("--accent-hue: {}", ri.user.and_then(|u|u.get(USER_THEME_ACCENT)).unwrap_or(277))] { + @let theme = ri.user.and_then(|u| u.get(USER_THEME_PRESET)).unwrap_or(THEME_DARK); + @let hue = ri.user.and_then(|u| u.get(USER_THEME_ACCENT)).unwrap_or(277); + body[class=format!("theme-{theme}"), style=format!("--accent-hue: {hue}")] { @Navbar { ri } - #main { @main } + @if let Some((kind, text)) = ri.message { + @Message { ri, kind, text } + } + #main { @page.render() } footer { p { @ri.config.brand " - " @ri.config.slogan " | powered by " a[href="https://codeberg.org/metamuffin/jellything"]{"Jellything"} } } @@ -50,11 +56,11 @@ markup::define! { @if let Some(user) = &ri.user { span { @raw(tr(ri.lang, "nav.username").replace("{name}", &format!("<b class=\"username\">{}</b>", escape(user.get(USER_NAME).unwrap_or("nameless user"))))) } " " @if user.has(USER_ADMIN.0) { - a.admin.hybrid_button[href=u_admin_dashboard()] { p {@tr(ri.lang, "nav.admin")} } " " + a.admin[href=u_admin_dashboard()] { p {@tr(ri.lang, "nav.admin")} } " " } - a.settings.hybrid_button[href=u_account_settings()] { p {@tr(ri.lang, "nav.settings")} } " " + a.settings[href=u_account_settings()] { p {@tr(ri.lang, "nav.settings")} } " " } else { - a.login.hybrid_button[href=u_account_login()] { p {@tr(ri.lang, "nav.login")} } + a.login[href=u_account_login()] { p {@tr(ri.lang, "nav.login")} } } } } |