'use client' import { useState, useEffect } from 'react' import Image from 'next/image' import Link from '@/components/ui/Link' import { Menu, X, Server, Zap, Users, LogOut, Settings, MessageSquare, BookOpen, Search, Edit, Tag, } from 'lucide-react' import { Button } from '@/components/ui/button' import { ThemeToggle } from '@/components/theme-toggle' import { useAuth } from '@/contexts/AuthContext' import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu' import { Logo } from '@/components/Logo' export function Header() { const [isMenuOpen, setIsMenuOpen] = useState(false) const [isClient, setIsClient] = useState(false) const { user, logout, loading } = useAuth() // Ensure we only render auth-dependent content after hydration useEffect(() => { setIsClient(true) }, []) const navigation = [ { name: 'Home', href: '/', icon: Server }, { name: 'Services', href: '/services', icon: Zap }, { name: 'Topics', href: '/topics', icon: BookOpen }, { name: 'Tools', href: '/tools', icon: Users }, { name: 'About', href: '/about', icon: Users }, { name: 'Feedback', href: '/feedback', icon: MessageSquare }, ] return (
{/* Logo */}
SiliconPin
{/* Desktop Navigation */} {/* Actions */}
{/* Theme Toggle */}
{/* Auth Section */} {!isClient || loading ? ( // Show loading state during SSR and initial load
) : user ? ( Profile Dashboard Create Topic Search Topics logout()} className="text-red-600"> Sign Out ) : (
)} {/* Mobile Menu Button */}
{/* Mobile Menu */} {isMenuOpen && (
)}
) }