'use client'
import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'
import { Button } from '@/components/ui/button'
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuTrigger,
} from '@/components/ui/dropdown-menu'
import { ThemeToggle } from 'fumadocs-ui/components/layout/theme-toggle'
import type { HomeLayoutProps } from 'fumadocs-ui/layouts/home'
import type { LinkItemType } from 'fumadocs-ui/layouts/links'
import { replaceOrDefault } from 'fumadocs-ui/layouts/shared'
import { LogIn, LogOut, Settings, Shield, Tv, User } from 'lucide-react'
import { signIn, signOut, useSession } from 'next-auth/react'
import Link from 'next/link'
import { Fragment } from 'react'
import { Menu, MenuContent, MenuLinkItem, MenuTrigger } from './home/menu'
import {
NavbarLink,
NavbarMenu,
NavbarMenuContent,
NavbarMenuLink,
NavbarMenuTrigger,
} from './home/navbar'
import { Navbar } from './home/navbar'
import { LargeSearchToggle, SearchToggle } from './search-toggle'
export function Header({
nav: { enableSearch = true, ...nav } = {},
finalLinks,
themeSwitch,
}: HomeLayoutProps & {
finalLinks: LinkItemType[]
}) {
const { data: session, status } = useSession()
const isAuthenticated = status === 'authenticated'
const isAdmin = isAuthenticated && session?.user?.role === 'admin'
const navItems = finalLinks.filter((item) =>
['nav', 'all'].includes(item.on ?? 'all')
)
const menuItems = finalLinks.filter((item) =>
['menu', 'all'].includes(item.on ?? 'all')
)
return (
Logs
View and manage logs
Releases
Manage releases
OBS Control Panel
Stream widget controls
{session.user.name}
{navItems
.filter((item) => !isSecondary(item))
.map((item, i) => (
{navItems.filter(isSecondary).map((item, i) => (
{child.text}
{child.description ? ({child.description}
) : null} > )}