import { useTheme } from 'next-themes'
import Link from 'next/link'
import { useRouter } from 'next/router'
import React, { useState } from 'react'
import { useWindowSize } from 'react-use'
import { useIsLoggedIn, useIsUserLoading } from 'common'
import { Button, buttonVariants, cn } from 'ui'
import {
NavigationMenu,
NavigationMenuContent,
NavigationMenuItem,
NavigationMenuLink,
NavigationMenuList,
NavigationMenuTrigger,
} from 'ui/src/components/shadcn/ui/navigation-menu'
import ScrollProgress from '~/components/ScrollProgress'
import { getMenu } from '~/data/nav'
import GitHubButton from './GitHubButton'
import HamburgerButton from './HamburgerMenu'
import MenuItem from './MenuItem'
import MobileMenu from './MobileMenu'
import RightClickBrandLogo from './RightClickBrandLogo'
interface Props {
hideNavbar: boolean
}
const Nav = (props: Props) => {
const { resolvedTheme } = useTheme()
const router = useRouter()
const { width } = useWindowSize()
const [open, setOpen] = useState(false)
const isLoggedIn = useIsLoggedIn()
const isUserLoading = useIsUserLoading()
const menu = getMenu()
const isHomePage = router.pathname === '/'
const isLaunchWeekPage = router.pathname.includes('/launch-week')
const isLaunchWeekXPage = router.pathname === '/launch-week/x'
const isGAWeekSection = router.pathname.startsWith('/ga-week')
const hasStickySubnav = isLaunchWeekXPage || isGAWeekSection || isLaunchWeekPage
const showLaunchWeekNavMode = (isLaunchWeekPage || isGAWeekSection) && !open
React.useEffect(() => {
if (open) {
// Prevent scrolling on mount
document.body.style.overflow = 'hidden'
} else {
document.body.style.overflow = 'auto'
}
}, [open])
// Close mobile menu when desktop
React.useEffect(() => {
if (width >= 1024) setOpen(false)
}, [width])
if (props.hideNavbar) {
return null
}
const showDarkLogo = isLaunchWeekPage || resolvedTheme?.includes('dark')! || isHomePage
return (
<>
{/*