Compare commits

...

9 Commits

4 changed files with 66 additions and 30 deletions

View File

@ -334,6 +334,12 @@
height: auto; height: auto;
} }
.dark .md-content img:not(.blur-img-placeholder):not(.blur-img-full),
.dark .md-content .blur-img,
.dark .lightbox-img {
filter: brightness(0.9);
}
.md-content-img-zoomable { .md-content-img-zoomable {
cursor: zoom-in; cursor: zoom-in;
transition: opacity 0.2s ease-out; transition: opacity 0.2s ease-out;
@ -628,10 +634,6 @@
background: transparent; background: transparent;
} }
/* 暗色模式灰底 */
.dark .blur-img {
background: var(--color-paper-code-bg, #2a2a2a);
}
} }
@keyframes fadeIn { @keyframes fadeIn {

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

View File

@ -12,6 +12,7 @@ use dioxus::prelude::*;
use crate::api::posts::{search_posts, PostListResponse}; use crate::api::posts::{search_posts, PostListResponse};
use crate::components::post_card::PostCard; use crate::components::post_card::PostCard;
use crate::components::empty_state::EmptyState;
use crate::components::skeletons::delayed_skeleton::DelayedSkeleton; use crate::components::skeletons::delayed_skeleton::DelayedSkeleton;
use crate::components::skeletons::search_skeleton::SearchSkeleton; use crate::components::skeletons::search_skeleton::SearchSkeleton;
@ -72,7 +73,10 @@ pub fn Search() -> Element {
DelayedSkeleton { SearchSkeleton {} } DelayedSkeleton { SearchSkeleton {} }
} else if let Some(Ok(PostListResponse { posts, total: _ })) = search_res() { } else if let Some(Ok(PostListResponse { posts, total: _ })) = search_res() {
if posts.is_empty() { if posts.is_empty() {
div { class: "text-center text-paper-secondary py-20", "未找到相关文章" } EmptyState {
title: "未找到相关文章",
description: "换个关键词再试一次吧",
}
} else { } else {
for post in posts.iter() { for post in posts.iter() {
PostCard { key: "{post.id}", post: post.clone() } PostCard { key: "{post.id}", post: post.clone() }
@ -80,6 +84,15 @@ pub fn Search() -> Element {
} }
} else if search_res().as_ref().map(|r| r.is_err()).unwrap_or(false) { } else if search_res().as_ref().map(|r| r.is_err()).unwrap_or(false) {
div { class: "text-center text-red-500 dark:text-red-400 py-20", "搜索失败" } div { class: "text-center text-red-500 dark:text-red-400 py-20", "搜索失败" }
} else {
div { class: "flex flex-col items-center justify-center mt-24 mb-12 page-enter",
img {
class: "w-56 h-auto rounded-lg select-none dark:brightness-90",
src: "/images/xiantiaoxiaogou_02.webp",
alt: "空状态提示",
draggable: "false",
}
}
} }
} }
} }

View File

@ -18,6 +18,7 @@ use crate::api::posts::{get_posts_by_tag, list_tags, PostListResponse, TagListRe
use crate::components::post_card::PostCard; use crate::components::post_card::PostCard;
use crate::components::skeletons::delayed_skeleton::DelayedSkeleton; use crate::components::skeletons::delayed_skeleton::DelayedSkeleton;
use crate::components::skeletons::tags_skeleton::{TagDetailSkeleton, TagsSkeleton}; use crate::components::skeletons::tags_skeleton::{TagDetailSkeleton, TagsSkeleton};
use crate::components::empty_state::EmptyState;
use crate::router::Route; use crate::router::Route;
/// 标签云页面组件,对应路由 `/tags`。 /// 标签云页面组件,对应路由 `/tags`。
@ -49,6 +50,14 @@ fn TagsContent() -> Element {
match tags_data { match tags_data {
Some(Ok(tags)) => { Some(Ok(tags)) => {
if tags.is_empty() {
rsx! {
EmptyState {
title: "暂无标签",
description: "当前还没有任何标签。"
}
}
} else {
let total = tags.iter().map(|t| t.post_count).sum::<i64>(); let total = tags.iter().map(|t| t.post_count).sum::<i64>();
rsx! { rsx! {
div { class: "mt-2 text-base text-paper-secondary", div { class: "mt-2 text-base text-paper-secondary",
@ -74,6 +83,7 @@ fn TagsContent() -> Element {
} }
} }
} }
}
Some(Err(_)) => { Some(Err(_)) => {
rsx! { rsx! {
div { class: "text-center text-red-500 dark:text-red-400 py-20", "加载失败" } div { class: "text-center text-red-500 dark:text-red-400 py-20", "加载失败" }
@ -116,17 +126,28 @@ fn TagDetailContent(tag: String) -> Element {
match posts_data { match posts_data {
Some(Ok((posts, total))) => { Some(Ok((posts, total))) => {
if posts.is_empty() {
rsx! { rsx! {
div { class: "mt-2 text-base text-paper-secondary", EmptyState {
title: "暂无文章",
description: "该标签下还没有发布任何文章。"
}
}
} else {
rsx! {
div { class: "mt-2 mb-8 text-base text-paper-secondary",
"" ""
span { class: "font-medium text-paper-primary", "{total}" } span { class: "font-medium text-paper-primary", "{total}" }
" 篇文章" " 篇文章"
} }
div { class: "mt-8",
for post in posts.iter() { for post in posts.iter() {
PostCard { key: "{post.id}", post: post.clone() } PostCard { key: "{post.id}", post: post.clone() }
} }
} }
} }
}
}
Some(Err(_)) => { Some(Err(_)) => {
rsx! { rsx! {
div { class: "text-center text-red-500 dark:text-red-400 py-20", "加载失败" } div { class: "text-center text-red-500 dark:text-red-400 py-20", "加载失败" }