From ca1c4565715add6daa77b616f238fcd41fcdc3ca Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Sat, 22 Feb 2025 22:47:15 -0500 Subject: [PATCH] Pass the nav links in the PageHeader render context. --- default_environment/stylesheet/main.css | 2 +- .../templates/html/page_header.dust | 4 +++- src/context/blog_post_page.rs | 6 +++++ src/context/blog_stream.rs | 6 +++++ src/context/page.rs | 6 +++++ src/context/page_header.rs | 24 ++++++++++++++++++- 6 files changed, 45 insertions(+), 3 deletions(-) diff --git a/default_environment/stylesheet/main.css b/default_environment/stylesheet/main.css index d8c5b26..8fb44b0 100644 --- a/default_environment/stylesheet/main.css +++ b/default_environment/stylesheet/main.css @@ -118,7 +118,7 @@ body { background: var(--header-nav-regular-background-color); padding: 0 0.5rem; transition-property: background, color; - transition-duration: 0.2s; + transition-duration: 0.1s; transition-timing-function: ease-out; &:hover { diff --git a/default_environment/templates/html/page_header.dust b/default_environment/templates/html/page_header.dust index dd8f9d3..ecc6604 100644 --- a/default_environment/templates/html/page_header.dust +++ b/default_environment/templates/html/page_header.dust @@ -2,6 +2,8 @@ {.website_title} {! TODO: Additional links? Probably using the nav semantic element. !} diff --git a/src/context/blog_post_page.rs b/src/context/blog_post_page.rs index eb81bd9..643975c 100644 --- a/src/context/blog_post_page.rs +++ b/src/context/blog_post_page.rs @@ -61,6 +61,12 @@ render!( render_context.output_file, "", )?), + Some(get_web_path( + render_context.config, + render_context.output_root_directory, + render_context.output_file, + "about_me", + )?), ); let link_to_blog_post = get_web_path( render_context.config, diff --git a/src/context/blog_stream.rs b/src/context/blog_stream.rs index 635575e..7844fee 100644 --- a/src/context/blog_stream.rs +++ b/src/context/blog_stream.rs @@ -59,6 +59,12 @@ render!( render_context.output_file, "", )?), + Some(get_web_path( + render_context.config, + render_context.output_root_directory, + render_context.output_file, + "about_me", + )?), ); let children = original diff --git a/src/context/page.rs b/src/context/page.rs index be4108d..f6094b8 100644 --- a/src/context/page.rs +++ b/src/context/page.rs @@ -40,6 +40,12 @@ render!(RenderPage, IPage, original, render_context, { render_context.output_file, "", )?), + Some(get_web_path( + render_context.config, + render_context.output_root_directory, + render_context.output_file, + "about_me", + )?), ); let link_to_blog_post = get_web_path( render_context.config, diff --git a/src/context/page_header.rs b/src/context/page_header.rs index 0115e9c..d7b3596 100644 --- a/src/context/page_header.rs +++ b/src/context/page_header.rs @@ -7,13 +7,35 @@ use serde::Serialize; pub(crate) struct PageHeader { website_title: Option, home_link: Option, + nav_links: Vec, +} + +/// A link in the top-right of the page. +#[derive(Debug, Serialize)] +#[serde(tag = "type")] +#[serde(rename = "nav_link")] +pub(crate) struct NavLink { + text: Option, + url: Option, } impl PageHeader { - pub(crate) fn new(website_title: Option, home_link: Option) -> PageHeader { + pub(crate) fn new( + website_title: Option, + home_link: Option, + about_me_link: Option, + ) -> PageHeader { PageHeader { website_title, home_link, + nav_links: about_me_link + .map(|url| { + vec![NavLink { + text: Some("About Me".to_owned()), + url: Some(url), + }] + }) + .unwrap_or_default(), } } }