From 9fcafec3463f9bcbf4e722ddee1b5c8220689fad Mon Sep 17 00:00:00 2001 From: Matt Date: Mon, 6 Apr 2026 16:36:20 -0400 Subject: [PATCH] feat: add award-master route group layout and nav component Co-Authored-By: Claude Opus 4.6 (1M context) --- src/app/(award-master)/layout.tsx | 24 +++++++++++++++++++++ src/components/layouts/award-master-nav.tsx | 23 ++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 src/app/(award-master)/layout.tsx create mode 100644 src/components/layouts/award-master-nav.tsx diff --git a/src/app/(award-master)/layout.tsx b/src/app/(award-master)/layout.tsx new file mode 100644 index 0000000..92caca2 --- /dev/null +++ b/src/app/(award-master)/layout.tsx @@ -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 ( +
+ +
{children}
+
+ ) +} diff --git a/src/components/layouts/award-master-nav.tsx b/src/components/layouts/award-master-nav.tsx new file mode 100644 index 0000000..4760316 --- /dev/null +++ b/src/components/layouts/award-master-nav.tsx @@ -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 ( + + ) +}