- 新增 /tags 页面:展示所有标签及文章数量,按字母排序 - 新增 /tags/:tag 动态路由:展示该标签下的文章列表 - Post/POSTS 改为 pub,供 tags 模块复用 - NavItem 高亮也匹配 TagDetailPage - 修复 CSS 路径为绝对路径,解决子路由下样式失效 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
59 lines
1.2 KiB
Rust
59 lines
1.2 KiB
Rust
use dioxus::prelude::*;
|
|
|
|
use crate::pages::admin::AdminPage;
|
|
use crate::pages::archives::ArchivesPage;
|
|
use crate::pages::home::HomePage;
|
|
use crate::pages::login::LoginPage;
|
|
use crate::pages::register::RegisterPage;
|
|
use crate::pages::tags::{TagsPage, TagDetailPage};
|
|
use crate::theme::{Theme, ThemePreload, use_theme_provider};
|
|
|
|
#[derive(Clone, Routable, Debug, PartialEq)]
|
|
pub enum Route {
|
|
#[route("/")]
|
|
HomePage {},
|
|
#[route("/login")]
|
|
LoginPage {},
|
|
#[route("/register")]
|
|
RegisterPage {},
|
|
#[route("/admin")]
|
|
AdminPage {},
|
|
#[route("/archives")]
|
|
ArchivesPage {},
|
|
#[route("/tags")]
|
|
TagsPage {},
|
|
#[route("/tags/:tag")]
|
|
TagDetailPage { tag: String },
|
|
#[route("/search")]
|
|
SearchPage {},
|
|
#[route("/about")]
|
|
AboutPage {},
|
|
}
|
|
|
|
#[component]
|
|
pub fn AppRouter() -> Element {
|
|
let theme = use_theme_provider();
|
|
let theme_class = match theme() {
|
|
Theme::Dark => "dark",
|
|
Theme::Light => "",
|
|
};
|
|
|
|
rsx! {
|
|
div {
|
|
class: "{theme_class}",
|
|
ThemePreload {}
|
|
Router::<Route> {}
|
|
}
|
|
}
|
|
}
|
|
|
|
#[component]
|
|
pub fn SearchPage() -> Element {
|
|
rsx! { "Search" }
|
|
}
|
|
|
|
#[component]
|
|
pub fn AboutPage() -> Element {
|
|
rsx! { "About" }
|
|
}
|