"use client"; import * as React from "react" import { cn } from "@/lib/utils" import Link from "next/link" import { useState, useEffect } from "react" import { usePathname } from "next/navigation" interface HeaderProps { className?: string isLoggedIn?: boolean isAdmin?: boolean } const navigation = [ { name: 'Home', href: '/', current: false, requiresAuth: false }, { name: 'Pricing', href: '/pricing', current: false, requiresAuth: false }, { name: 'FAQ', href: '/faq', current: false, requiresAuth: false }, { name: 'Dashboard', href: '/dashboard', current: false, requiresAuth: false }, { name: 'Projects', href: '/projects', current: false, requiresAuth: true }, { name: 'Calendar', href: '/calendar', current: false, requiresAuth: false }, { name: 'Reports', href: '/reports', current: false, requiresAuth: true }, ] export function Header({ className, isLoggedIn = false, isAdmin = false }: HeaderProps) { const [mobileMenuOpen, setMobileMenuOpen] = useState(false) const [profileOpen, setProfileOpen] = useState(false) const [activeNavItem, setActiveNavItem] = useState(null) // Use usePathname for client-side navigation let pathname = usePathname() // Update activeNavItem when pathname changes useEffect(() => { if (pathname) { setActiveNavItem(pathname) } }, [pathname]) // Only render the header after the pathname is available if (!pathname) { return null } return (
{/* Mobile menu */} {mobileMenuOpen && (
{navigation.map((item) => { const isCurrent = activeNavItem === item.href return ( (item.requiresAuth ? (isLoggedIn || isAdmin) : true) && ( {item.name} ) ) })}
{isLoggedIn && (
User Name
user@example.com
Your Profile Settings Sign out
)}
)}
) }