Some checks failed
CI Check / check (push) Has been cancelled
- 创建统一UI三层架构系统(基础层、颜色层、组合层) - 拆分Admin页面为独立Tab组件(MonitorTab、UsersTab、DepartmentsTab等) - 提取公共逻辑到Hooks(useToast、useDataFetch、useUserOperations等) - 提取工具函数(validators、formatters、api等) - 创建统一弹窗组件(Modal)和useModal Hook - 添加错误边界和统一状态组件 - 完善类型定义和可访问性支持 - 更新文档(优化记录、优化计划、更新日志)
43 lines
1.2 KiB
TypeScript
43 lines
1.2 KiB
TypeScript
'use client'
|
|
|
|
import { useEffect } from 'react'
|
|
import { useSession } from 'next-auth/react'
|
|
import { useRouter } from 'next/navigation'
|
|
import Header from '@/components/Header'
|
|
import AppearanceSettingsPanel from '../_components/AppearanceSettingsPanel'
|
|
|
|
export default function SystemSettingsPage() {
|
|
const { data: session, status } = useSession()
|
|
const router = useRouter()
|
|
|
|
useEffect(() => {
|
|
if (status === 'unauthenticated') {
|
|
router.replace('/login')
|
|
} else if (status === 'authenticated' && session?.user?.role !== 'ADMIN') {
|
|
router.replace('/')
|
|
}
|
|
}, [status, session, router])
|
|
|
|
if (status === 'loading') {
|
|
return (
|
|
<div className="min-h-screen flex items-center justify-center bg-slate-50 dark:bg-slate-900">
|
|
<div className="text-sm text-slate-500 dark:text-slate-400">正在加载外观设置...</div>
|
|
</div>
|
|
)
|
|
}
|
|
|
|
if (!session || session.user?.role !== 'ADMIN') {
|
|
return null
|
|
}
|
|
|
|
return (
|
|
<div className="min-h-screen bg-slate-50 dark:bg-slate-900">
|
|
<Header session={session} />
|
|
<main className="container mx-auto px-4 py-8 max-w-6xl space-y-8">
|
|
<AppearanceSettingsPanel sessionUser={session.user as any} variant="standalone" />
|
|
</main>
|
|
</div>
|
|
)
|
|
}
|
|
|