41 lines
1.5 KiB
TypeScript
41 lines
1.5 KiB
TypeScript
import Link from 'next/link'
|
|
import { Card } from '@/components/ui'
|
|
import { Users, Shield, Settings as SettingsIcon } from 'lucide-react'
|
|
|
|
const sections = [
|
|
{ href: '/settings/users', label: '用户管理', description: '管理系统用户与账号', icon: Users },
|
|
{ href: '/settings/roles', label: '角色权限', description: '配置角色与权限', icon: Shield },
|
|
]
|
|
|
|
export default function SettingsPage() {
|
|
return (
|
|
<div className="space-y-6">
|
|
<div>
|
|
<h1 className="text-2xl font-bold text-slate-900 dark:text-slate-100">系统设置</h1>
|
|
<p className="text-slate-500 dark:text-slate-400 mt-1">系统参数与管理配置</p>
|
|
</div>
|
|
|
|
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
|
|
{sections.map(s => {
|
|
const Icon = s.icon
|
|
return (
|
|
<Link key={s.href} href={s.href}>
|
|
<Card className="p-5 hover:border-blue-500/50 transition-colors cursor-pointer">
|
|
<div className="flex items-center gap-4">
|
|
<div className="w-10 h-10 rounded-lg bg-blue-500/10 flex items-center justify-center">
|
|
<Icon size={20} className="text-blue-500" />
|
|
</div>
|
|
<div>
|
|
<h3 className="font-medium text-slate-900 dark:text-slate-100">{s.label}</h3>
|
|
<p className="text-sm text-slate-500 dark:text-slate-400">{s.description}</p>
|
|
</div>
|
|
</div>
|
|
</Card>
|
|
</Link>
|
|
)
|
|
})}
|
|
</div>
|
|
</div>
|
|
)
|
|
}
|