diff options
Diffstat (limited to 'src/frontend')
-rw-r--r-- | src/frontend/mod.rs | 2 | ||||
-rw-r--r-- | src/frontend/pages/home.rs | 12 | ||||
-rw-r--r-- | src/frontend/pages/layout.rs | 20 | ||||
-rw-r--r-- | src/frontend/pages/mod.rs | 19 | ||||
-rw-r--r-- | src/frontend/style/master.css | 0 | ||||
-rw-r--r-- | src/frontend/style/mod.rs | 2 |
6 files changed, 55 insertions, 0 deletions
diff --git a/src/frontend/mod.rs b/src/frontend/mod.rs new file mode 100644 index 0000000..99c22f8 --- /dev/null +++ b/src/frontend/mod.rs @@ -0,0 +1,2 @@ +pub mod style; +pub mod pages; diff --git a/src/frontend/pages/home.rs b/src/frontend/pages/home.rs new file mode 100644 index 0000000..b7f1a12 --- /dev/null +++ b/src/frontend/pages/home.rs @@ -0,0 +1,12 @@ +use crate::frontend::pages::{layout::Layout, HtmlTemplate}; +use actix_web::{get, Responder}; + +#[get("/")] +async fn page_home() -> impl Responder { + HtmlTemplate(Layout { + title: "Home - Jellything", + main: markup::new! { + h1 { "It works!" } + }, + }) +} diff --git a/src/frontend/pages/layout.rs b/src/frontend/pages/layout.rs new file mode 100644 index 0000000..283721b --- /dev/null +++ b/src/frontend/pages/layout.rs @@ -0,0 +1,20 @@ +use markup::Render; + +markup::define! { + Layout<'a, Main: Render>(title: &'a str, main: Main) { + @markup::doctype() + html { + head { + title { @title } + link[rel="stylesheet", href="/assets/style.css"]; + } + body { + header { "Grain" } + #main { + @main + } + footer { span { "jellything" } } + } + } + } +} diff --git a/src/frontend/pages/mod.rs b/src/frontend/pages/mod.rs new file mode 100644 index 0000000..08e0e77 --- /dev/null +++ b/src/frontend/pages/mod.rs @@ -0,0 +1,19 @@ +use actix_web::{body::BoxBody, http::StatusCode, HttpResponseBuilder, Responder}; + +pub mod home; +pub mod layout; + +struct HtmlTemplate<T>(pub T); + +impl<T: markup::Render> Responder for HtmlTemplate<T> { + type Body = BoxBody; + + fn respond_to(self, req: &actix_web::HttpRequest) -> actix_web::HttpResponse<Self::Body> { + let mut out = String::new(); + self.0.render(&mut out).unwrap(); + + HttpResponseBuilder::new(StatusCode::OK) + .body(out) + .respond_to(req) + } +} diff --git a/src/frontend/style/master.css b/src/frontend/style/master.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/frontend/style/master.css diff --git a/src/frontend/style/mod.rs b/src/frontend/style/mod.rs new file mode 100644 index 0000000..180fe0e --- /dev/null +++ b/src/frontend/style/mod.rs @@ -0,0 +1,2 @@ + +pub const CSS_BUNDLE: &'static str = include_str!("master.css"); |