feat: add award-master route group layout and nav component
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
24
src/app/(award-master)/layout.tsx
Normal file
24
src/app/(award-master)/layout.tsx
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
import { requireRole } from '@/lib/auth-redirect'
|
||||||
|
import { AwardMasterNav } from '@/components/layouts/award-master-nav'
|
||||||
|
|
||||||
|
export const dynamic = 'force-dynamic'
|
||||||
|
|
||||||
|
export default async function AwardMasterLayout({
|
||||||
|
children,
|
||||||
|
}: {
|
||||||
|
children: React.ReactNode
|
||||||
|
}) {
|
||||||
|
const session = await requireRole('AWARD_MASTER', 'PROGRAM_ADMIN', 'SUPER_ADMIN')
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="min-h-screen bg-background">
|
||||||
|
<AwardMasterNav
|
||||||
|
user={{
|
||||||
|
name: session.user.name,
|
||||||
|
email: session.user.email,
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<main className="container-app py-6 lg:py-8">{children}</main>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
23
src/components/layouts/award-master-nav.tsx
Normal file
23
src/components/layouts/award-master-nav.tsx
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
'use client'
|
||||||
|
|
||||||
|
import { Home } from 'lucide-react'
|
||||||
|
import { RoleNav, type NavItem, type RoleNavUser } from '@/components/layouts/role-nav'
|
||||||
|
|
||||||
|
interface AwardMasterNavProps {
|
||||||
|
user: RoleNavUser
|
||||||
|
}
|
||||||
|
|
||||||
|
export function AwardMasterNav({ user }: AwardMasterNavProps) {
|
||||||
|
const navigation: NavItem[] = [
|
||||||
|
{ name: 'Dashboard', href: '/award-master', icon: Home },
|
||||||
|
]
|
||||||
|
|
||||||
|
return (
|
||||||
|
<RoleNav
|
||||||
|
navigation={navigation}
|
||||||
|
roleName="Award Master"
|
||||||
|
user={user}
|
||||||
|
basePath="/award-master"
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user