30 lines
962 B
TypeScript
30 lines
962 B
TypeScript
import Link from 'next/link';
|
|
import { t } from '@/lib/i18n';
|
|
|
|
type Item = { href: string; label: string; adminOnly?: boolean };
|
|
|
|
const ITEMS: Item[] = [
|
|
{ href: '/admin', label: t('admin.overview'), adminOnly: true },
|
|
{ href: '/admin/posts', label: t('admin.posts') },
|
|
{ href: '/admin/docs', label: t('admin.docs') },
|
|
{ href: '/admin/audit', label: t('admin.audit'), adminOnly: true },
|
|
{ href: '/admin/users', label: t('admin.users'), adminOnly: true },
|
|
];
|
|
|
|
export function AdminNav({ role }: { role: string }) {
|
|
const items = ITEMS.filter((item) => !item.adminOnly || role === 'admin');
|
|
return (
|
|
<nav className="flex flex-wrap gap-1 md:flex-col" aria-label="Admin">
|
|
{items.map((item) => (
|
|
<Link
|
|
key={item.href}
|
|
href={item.href}
|
|
className="rounded-lg px-3 py-2 text-sm font-medium hover:bg-black/5 dark:hover:bg-white/10"
|
|
>
|
|
{item.label}
|
|
</Link>
|
|
))}
|
|
</nav>
|
|
);
|
|
}
|