import { Link, usePage } from '@inertiajs/react'; import { LayoutGrid, LifeBuoy, Menu, Radio, Search, Shield, } from 'lucide-react'; import AppLogo from '@/components/app-logo'; import AppLogoIcon from '@/components/app-logo-icon'; import { Breadcrumbs } from '@/components/breadcrumbs'; import { LanguageSwitcher } from '@/components/language-switcher'; import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'; import { Button } from '@/components/ui/button'; import { DropdownMenu, DropdownMenuContent, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu'; import { NavigationMenu, NavigationMenuItem, NavigationMenuList, navigationMenuTriggerStyle, } from '@/components/ui/navigation-menu'; import { Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger, } from '@/components/ui/sheet'; import { Tooltip, TooltipContent, TooltipTrigger, } from '@/components/ui/tooltip'; import { UserMenuContent } from '@/components/user-menu-content'; import { useCurrentUrl } from '@/hooks/use-current-url'; import { useInitials } from '@/hooks/use-initials'; import { useTranslation } from '@/lib/translations'; import { cn } from '@/lib/utils'; import { dashboard, home } from '@/routes'; import { dashboard as adminDashboard } from '@/routes/admin'; import { index as adminSupportIndex } from '@/routes/admin/support'; import { index as supportIndex } from '@/routes/support'; import type { BreadcrumbItem, NavItem } from '@/types'; type Props = { breadcrumbs?: BreadcrumbItem[]; }; const activeItemStyles = 'bg-accent text-accent-foreground'; export function AppHeader({ breadcrumbs = [] }: Props) { const page = usePage(); const { auth, localization } = page.props; const getInitials = useInitials(); const { isCurrentUrl, whenCurrentUrl } = useCurrentUrl(); const { t } = useTranslation(); const mainNavItems: NavItem[] = [ { title: 'Live', href: home(), icon: Radio, }, { title: 'Studio', href: dashboard(), icon: LayoutGrid, }, { title: 'Contact admin', href: supportIndex(), icon: LifeBuoy, }, ]; if (auth.user?.is_admin) { mainNavItems.push({ title: 'Admin', href: adminDashboard(), icon: Shield, }); mainNavItems.push({ title: 'Support', href: adminSupportIndex(), icon: LifeBuoy, }); } return ( <>
{/* Mobile Menu */}
{t('Navigation menu')}
{mainNavItems.map((item) => ( {item.icon && ( )} {t(item.title)} ))}
{/* Desktop Navigation */}
{mainNavItems.map((item, index) => ( {item.icon && ( )} {t(item.title)} {isCurrentUrl(item.href) && (
)}
))}
{t('Live directory')}

{t('Live directory')}

{auth.user && ( )}
{breadcrumbs.length > 1 && (
)} ); }