From 3207c8ea57eac714417494e06ce0f82864b7ff1e Mon Sep 17 00:00:00 2001 From: Vika Date: Sun, 20 Apr 2025 08:25:57 +0300 Subject: WIP: Theme support Kittybox can now ship with several different stylesheets, provided by the renderer. Unknown stylesheets fall back to the default one, which is the same Kittybox has shipped since its inception. There's also a settings field for custom CSS, but it's not exposed anywhere yet. Change-Id: I2850dace5c40f9fed04b4651c551a861df5b83d3 --- src/database/settings.rs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/database') diff --git a/src/database/settings.rs b/src/database/settings.rs index 792a155..77e5821 100644 --- a/src/database/settings.rs +++ b/src/database/settings.rs @@ -1,3 +1,5 @@ +pub use kittybox_frontend_renderer::themes::ThemeName; + mod private { pub trait Sealed {} } @@ -61,3 +63,20 @@ impl Setting for Webring { Self(data) } } + +#[derive(Debug, Default, serde::Serialize, serde::Deserialize, Clone, Copy, PartialEq, Eq)] +/// Theme setting for Kittybox, specifying the stylesheet used for laying out the website. +pub struct Theme(ThemeName); +impl private::Sealed for Theme {} +impl Setting for Theme { + type Data = ThemeName; + const ID: &'static str = "theme"; + + fn into_inner(self) -> Self::Data { + self.0 + } + + fn new(data: Self::Data) -> Self { + Self(data) + } +} -- cgit 1.4.1