'use client'; import { useState } from 'react'; import Link from 'next/link'; import dynamic from 'next/dynamic'; import { usePathname } from 'next/navigation'; import { Video, FolderOpen, Building2, Settings, LogOut, User, Menu, Keyboard, LayoutDashboard, MessageSquareQuote, } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu'; import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'; import { Sheet, SheetContent, SheetTrigger, SheetTitle, SheetDescription } from '@/components/ui/sheet'; import { ThemeToggle } from '@/components/theme-toggle'; import { cn } from '@/lib/utils'; const KeyboardShortcutsModal = dynamic( () => import('@/components/keyboard-shortcuts-modal').then(mod => mod.KeyboardShortcutsModal), { ssr: false } ); interface NavItem { href: string; label: string; icon: React.ComponentType<{ className?: string }>; } const navItems: NavItem[] = [ { href: '/dashboard', label: 'Projects', icon: FolderOpen }, { href: '/workspaces', label: 'Workspaces', icon: Building2 }, ]; interface HeaderProps { user?: { name?: string | null; email?: string | null; image?: string | null; isAdmin?: boolean; } | null; } export function Header({ user }: HeaderProps) { const pathname = usePathname(); const [shortcutsOpen, setShortcutsOpen] = useState(false); // Hide header on video player pages — they use full viewport with their own back button const isVideoPage = /\/videos\/[^/]+($|\/compare)/.test(pathname) || pathname.startsWith('/watch/'); if (isVideoPage) return null; return (
{/* Mobile menu */} Navigation Menu Access your projects and workspaces {/* Logo */}
); }