Files
tavernworks/bard/src/pages/blog.rs

63 lines
1.0 KiB
Rust
Raw Normal View History

use std::collections::HashSet;
use dioxus::prelude::*;
use crate::components::{BlogList, TagSelector};
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()
}
}
/// Blog page
#[component]
pub fn Blog(tag: String) -> Element
{
let mut categories: Signal<HashSet<String>> =
use_signal(|| convert_categories(&tag));
if *categories.read() != convert_categories(&tag)
{
categories.set(convert_categories(&tag));
}
rsx! {
document::Stylesheet { href: BLOG_CSS }
main
{
class: "blog_style",
div
{
class: "page_content",
BlogList
{
tags: categories
}
TagSelector
{
toggled_tags: categories
}
}
}
}
}