refactor(web): 残留自制控件统一替换为 antd 组件

- 状态点自制徽标改用 Badge,回收站剩余天数紧急态改用红色 Tag
- 危险按钮改用 danger 属性并补充语言,text+danger 不套实心红样式
- 后台搜索框改 antd Input 前缀形态,删除手写容器与聚焦环样式
- 加载态统一 Spin/Skeleton(Table 用 loading),空态统一 Empty
- Segmented 选项计数改用 Badge count,弱化为 muted 灰
- 首页分页说明改 Pagination showTotal,笔记错误态改 Empty 承接布局
- 代码块复制按钮改 antd Button 并增加「已复制」反馈,修复悬浮不显示
- 博客/后台图标按钮与溢出菜单触发器统一为 antd Button type=text
This commit is contained in:
2026-09-09 15:37:36 +08:00
parent 969d537aee
commit 92d89717c5
11 changed files with 219 additions and 283 deletions
+3 -3
View File
@@ -1,7 +1,7 @@
import { lazy, Suspense, useEffect, useState } from 'react'
import type { ReactNode } from 'react'
import { Navigate, Route, Routes } from 'react-router'
import { App as AntdApp, ConfigProvider } from 'antd'
import { App as AntdApp, ConfigProvider, Spin } from 'antd'
import zhCN from 'antd/locale/zh_CN'
import { useAuth } from './lib/auth'
import { useTheme } from './lib/theme'
@@ -45,7 +45,7 @@ function AntdProvider({ children }: { children: ReactNode }) {
function RequireAuth({ children }: { children: ReactNode }) {
const { authenticated, loading } = useAuth()
if (loading) {
return <div className="pn-loading">加载中…</div>
return <div className="pn-loading"><Spin size="large" /></div>
}
if (!authenticated) {
return <Navigate to="/admin/login" replace />
@@ -56,7 +56,7 @@ function RequireAuth({ children }: { children: ReactNode }) {
export default function App() {
return (
<AntdProvider>
<Suspense fallback={<div className="pn-loading">加载中…</div>}>
<Suspense fallback={<div className="pn-loading"><Spin size="large" /></div>}>
<Routes>
<Route element={<BlogLayout />}>
<Route path="/" element={<Home />} />