aboutsummaryrefslogtreecommitdiff
path: root/ui/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'ui/src/lib.rs')
-rw-r--r--ui/src/lib.rs48
1 files changed, 43 insertions, 5 deletions
diff --git a/ui/src/lib.rs b/ui/src/lib.rs
index 67dc067..2521054 100644
--- a/ui/src/lib.rs
+++ b/ui/src/lib.rs
@@ -14,6 +14,34 @@ pub mod scaffold;
pub mod search;
pub mod settings;
pub mod stats;
+pub mod items;
+pub mod admin;
+
+use locale::Language;
+use markup::DynRender;
+use scaffold::{RenderInfo, Scaffold};
+use serde::{Deserialize, Serialize};
+use std::{
+ path::PathBuf,
+ sync::{LazyLock, Mutex},
+};
+
+#[rustfmt::skip]
+#[derive(Debug, Deserialize, Serialize, Default)]
+pub struct Config {
+ brand: String,
+ slogan: String,
+ asset_path: PathBuf,
+}
+
+static CONF: LazyLock<Config> = LazyLock::new(|| {
+ CONF_PRELOAD
+ .lock()
+ .unwrap()
+ .take()
+ .expect("cache config not preloaded. logic error")
+});
+static CONF_PRELOAD: Mutex<Option<Config>> = Mutex::new(None);
/// render as supertrait would be possible but is not
/// dyn compatible and I really dont want to expose generics
@@ -26,16 +54,26 @@ pub trait Page {
}
}
-use markup::DynRender;
-use scaffold::Scaffold;
-
-pub fn render_page(page: &dyn Page) -> String {
+pub fn render_page(page: &dyn Page, renderinfo: RenderInfo, lang: Language) -> String {
Scaffold {
lang,
- context,
+ renderinfo,
class: page.class().unwrap_or("aaaa"),
title: page.title(),
main: page.to_render(),
}
.to_string()
}
+
+pub struct CustomPage {
+ pub title: String,
+ pub body: String,
+}
+impl Page for CustomPage {
+ fn title(&self) -> String {
+ self.title.clone()
+ }
+ fn to_render(&self) -> DynRender {
+ markup::new!(@markup::raw(&self.body))
+ }
+}