Adding and moving a lot of components.

This is the main thrust of the library. I know it is a lot of changes,
but I was running out of time and had to hammer them all in.
This commit is contained in:
2025-09-24 19:50:38 -04:00
parent f752fa17bf
commit 8f61185434
15 changed files with 558 additions and 545 deletions

View File

@ -7,39 +7,37 @@ use crate::page::Page;
const BLOG_CSS: Asset = asset!("/assets/css/blog.css");
fn convert_categories(categories: &str) -> HashSet<String>
{
if categories.is_empty() || categories == "all"
{
HashSet::new()
}
else
{
categories.split('+').map(|s| s.to_string()).collect()
}
categories
.split('+')
.filter(|s| !s.is_empty() && *s != "all")
.map(str::to_string)
.collect()
}
/// Blog page
#[component]
pub fn Blog(tag: String) -> Element
pub fn Blog(tag: ReadOnlySignal<String>) -> Element
{
let mut show_all: Signal<bool> =
use_signal(|| tag().is_empty() || tag() == "all");
let mut categories: Signal<HashSet<String>> =
use_signal(|| convert_categories(&tag));
use_signal(|| convert_categories(&tag()));
if *categories.read() != convert_categories(&tag)
use_effect(move ||
{
categories.set(convert_categories(&tag));
}
let new_tags = convert_categories(&tag());
categories.set(new_tags);
});
rsx! {
document::Stylesheet { href: BLOG_CSS }
println!("Blog Categories: {:?}", categories());
rsx!
{
main
{
class: "blog_style",
@ -49,12 +47,13 @@ pub fn Blog(tag: String) -> Element
BlogList
{
tags: categories
tags: categories.clone()
}
TagSelector
{
toggled_tags: categories
show_all: show_all.clone(),
toggled_tags: categories.clone()
}
}
}

8
bard/src/pages/mod.rs Normal file
View File

@ -0,0 +1,8 @@
mod blog;
mod post;
mod root;
pub use self::blog::Blog;
pub use self::post::Post;
pub use self::root::Root;

View File

@ -5,25 +5,15 @@ use crate::page::Page;
const BLOG_CSS: Asset = asset!("/assets/css/blog.css");
/// Blog page
#[component]
pub fn Post(slug: String) -> Element
pub fn Post(slug: ReadOnlySignal<String>) -> Element
{
// Create a copy of the current slug to detect changes.
let mut url_slug = use_signal(|| slug.clone());
let mut url_slug = use_signal(|| slug());
if *url_slug.read() != slug
rsx!
{
url_slug.set(slug.clone());
}
rsx! {
document::Stylesheet { href: BLOG_CSS }
main
{
class: "blog_style",

21
bard/src/pages/root.rs Normal file
View File

@ -0,0 +1,21 @@
use std::collections::HashSet;
use dioxus::prelude::*;
use crate::page::Page;
use crate::pages::Blog;
/// Blog page
#[component]
pub fn Root() -> Element
{
rsx!
{
Blog
{
tag: String::new()
}
}
}