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 { 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> = 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 } } } } }