"use client"; import { useRouter } from "next/navigation"; import { useAuth } from "../auth-context"; import { sharedStyles } from "../styles/shared"; type PageId = "counter" | "sum" | "profile" | "invites" | "audit" | "admin-invites"; interface HeaderProps { currentPage: PageId; } interface NavItem { id: PageId; label: string; href: string; regularOnly?: boolean; adminOnly?: boolean; } const REGULAR_NAV_ITEMS: NavItem[] = [ { id: "counter", label: "Counter", href: "/" }, { id: "sum", label: "Sum", href: "/sum" }, { id: "invites", label: "My Invites", href: "/invites", regularOnly: true }, { id: "profile", label: "My Profile", href: "/profile", regularOnly: true }, ]; const ADMIN_NAV_ITEMS: NavItem[] = [ { id: "audit", label: "Audit", href: "/audit", adminOnly: true }, { id: "admin-invites", label: "Invites", href: "/admin/invites", adminOnly: true }, ]; export function Header({ currentPage }: HeaderProps) { const { user, logout, hasRole } = useAuth(); const router = useRouter(); const isRegularUser = hasRole("regular"); const isAdminUser = hasRole("admin"); const handleLogout = async () => { await logout(); router.push("/login"); }; if (!user) return null; // For admin pages, show admin navigation if (isAdminUser && (currentPage === "audit" || currentPage === "admin-invites")) { return (
{ADMIN_NAV_ITEMS.map((item, index) => ( {index > 0 && } {item.id === currentPage ? ( {item.label} ) : ( {item.label} )} ))}
{user.email}
); } // For regular pages, build nav with links const visibleItems = REGULAR_NAV_ITEMS.filter( (item) => !item.regularOnly || isRegularUser ); return (
{visibleItems.map((item, index) => ( {index > 0 && } {item.id === currentPage ? ( {item.label} ) : ( {item.label} )} ))}
{user.email}
); }