Files
tavernworks/blog_test/src/main.rs

105 lines
1.8 KiB
Rust
Raw Normal View History

use dioxus::prelude::*;
use bard::*;
const FAVICON: Asset = asset!("/assets/favicon.ico");
2025-09-28 20:25:19 -04:00
const BLOG: Asset = asset!("/assets/blog.css");
fn main()
{
#[cfg(feature = "server")]
{
let rt = tokio::runtime::Runtime::new().unwrap();
rt.block_on(async
{
let db_path = "/home/myrddin/cybermages/website/tavern.db";
let _ = bard::init_database(db_path).await;
});
}
LaunchBuilder::new().launch(App);
}
#[component]
fn App() -> Element
{
2025-09-28 20:25:19 -04:00
let custom_settings = BardSettings
{
blog_name: Some(String::from("Blog Test")),
stylesheet: StylesheetBehavior::Extend(BLOG),
};
provide_context(custom_settings);
rsx!
{
document::Link { rel: "icon", href: FAVICON }
Router::<Page> {}
}
}
/// Home page
#[component]
fn Home() -> Element
{
2025-09-28 20:25:19 -04:00
rsx! {
h1 { "Blog Test" }
}
}
/// This is the content for the About page.
#[component]
pub fn PageNotFound(route: Vec<String>) -> Element
{
2025-09-28 20:25:19 -04:00
rsx! {
h1 { "Page not found" }
p { "We are terribly sorry, but the page you requested doesn't exist." }
pre { color: "red", "log:\nattemped to navigate to: {route:?}" }
}
}
/// Shared navbar component.
#[component]
fn Navbar() -> Element
{
rsx! {
div {
id: "navbar",
Link {
to: Page::Home {},
"Home"
}
Link {
to: Page::Bard{ child: bard::Page::Blog { tag: String::from("all") }},
"Blog"
}
//a { href: "/blog/all", "Blog" }
}
Outlet::<Page> {}
}
}
#[derive(Debug, Clone, Routable, PartialEq)]
#[rustfmt::skip]
pub enum Page
{
#[layout(Navbar)]
#[route("/")]
Home {},
2025-09-25 11:37:36 -04:00
#[child("/blog")]
Bard
{
child: bard::Page
},
#[route("/:..route")]
PageNotFound { route: Vec<String> }
}