Prmbr/src/app/admin/layout.tsx
2025-08-03 10:46:36 +08:00

51 lines
1.2 KiB
TypeScript

'use client'
import { useUser } from '@/hooks/useUser'
import { useRouter } from 'next/navigation'
import { useEffect } from 'react'
import { useTranslations } from 'next-intl'
export default function AdminLayout({
children,
}: {
children: React.ReactNode
}) {
const { userData, loading } = useUser()
const router = useRouter()
const t = useTranslations('admin')
useEffect(() => {
if (!loading && (!userData || !userData.isAdmin)) {
router.push('/')
}
}, [userData, loading, router])
if (loading) {
return (
<div className="min-h-screen bg-background">
<div className="flex items-center justify-center h-screen">
<div className="animate-spin rounded-full h-8 w-8 border-b-2 border-primary"></div>
</div>
</div>
)
}
if (!userData || !userData.isAdmin) {
return null
}
return (
<div className="min-h-screen bg-background">
<div className="border-b border-border bg-card">
<div className="container mx-auto px-4 py-4">
<h1 className="text-2xl font-bold text-foreground">
{t('dashboard')}
</h1>
</div>
</div>
<div className="container mx-auto px-4 py-8">
{children}
</div>
</div>
)
}