2025-09-08 10:01:02 -04:00
|
|
|
use dioxus::prelude::*;
|
|
|
|
|
|
2025-09-24 19:50:38 -04:00
|
|
|
use crate::pages::{Blog, Post, Root};
|
2025-09-28 15:12:03 -04:00
|
|
|
use crate::settings::{BardSettings, StylesheetBehavior};
|
2025-09-08 10:01:02 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-09-24 19:50:38 -04:00
|
|
|
const BLOG_CSS: Asset = asset!("/assets/css/blog.css");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#[component]
|
|
|
|
|
fn BlogLayout() -> Element
|
|
|
|
|
{
|
2025-09-28 15:12:03 -04:00
|
|
|
// Retrieve the provided settings from context.
|
|
|
|
|
let settings = use_context::<BardSettings>();
|
|
|
|
|
|
2025-09-24 19:50:38 -04:00
|
|
|
rsx!
|
|
|
|
|
{
|
2025-09-28 15:12:03 -04:00
|
|
|
match settings.stylesheet
|
|
|
|
|
{
|
|
|
|
|
StylesheetBehavior::Override(asset) =>
|
|
|
|
|
{
|
|
|
|
|
rsx!
|
|
|
|
|
{
|
|
|
|
|
document::Stylesheet { href: asset }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
StylesheetBehavior::Extend(asset) =>
|
|
|
|
|
{
|
|
|
|
|
rsx!
|
|
|
|
|
{
|
|
|
|
|
document::Stylesheet { href: BLOG_CSS }
|
|
|
|
|
document::Stylesheet { href: asset }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
StylesheetBehavior::None =>
|
|
|
|
|
{
|
|
|
|
|
rsx!
|
|
|
|
|
{
|
|
|
|
|
document::Stylesheet { href: BLOG_CSS }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-09-24 19:50:38 -04:00
|
|
|
|
|
|
|
|
Outlet::<Page> {}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//#[derive(Debug, Clone, Routable, PartialEq, Eq, Hash, Debug, serde::Serialize, serde::Deserialize)]
|
2025-09-08 10:01:02 -04:00
|
|
|
#[derive(Debug, Clone, Routable, PartialEq)]
|
|
|
|
|
#[rustfmt::skip]
|
|
|
|
|
pub enum Page
|
|
|
|
|
{
|
2025-09-24 19:50:38 -04:00
|
|
|
#[layout(BlogLayout)]
|
|
|
|
|
#[route("/")]
|
|
|
|
|
Root { },
|
|
|
|
|
|
2025-09-08 12:48:01 -04:00
|
|
|
#[route("/:tag")]
|
2025-09-08 10:01:02 -04:00
|
|
|
Blog { tag: String },
|
|
|
|
|
|
2025-09-08 12:48:01 -04:00
|
|
|
#[route("/post/:slug")]
|
2025-09-08 10:01:02 -04:00
|
|
|
Post { slug: String},
|
|
|
|
|
}
|