import {
Box,
Flex,
HStack,
HTMLChakraProps,
Icon,
IconButton,
Link,
chakra,
useColorMode,
useColorModeValue,
useDisclosure,
useUpdateEffect,
} from '@chakra-ui/react'
import { useScroll } from 'framer-motion'
import NextLink from 'next/link'
import { useEffect, useRef, useState } from 'react'
import { FaMoon, FaSun, FaYoutube } from 'react-icons/fa'
import Logo, { LogoIcon } from './logo'
import { MobileNavButton, MobileNavContent } from './mobile-nav'
import Search from './omni-search'
import SponsorButton from './sponsor-button'
import VersionSwitcher from './version-switcher'
import { DiscordIcon, GithubIcon } from 'components/icons'
import siteConfig from 'configs/site-config.json'
function HeaderContent() {
const mobileNav = useDisclosure()
const { toggleColorMode: toggleMode } = useColorMode()
const text = useColorModeValue('dark', 'light')
const SwitchIcon = useColorModeValue(FaMoon, FaSun)
const mobileNavBtnRef = useRef()
useUpdateEffect(() => {
mobileNavBtnRef.current?.focus()
}, [mobileNav.isOpen])
return (
<>
}
/>
>
)
}
function Header(props: HTMLChakraProps<'header'>) {
const { maxW = '8xl', maxWidth = '8xl' } = props
const ref = useRef()
const [y, setY] = useState(0)
const { height = 0 } = ref.current?.getBoundingClientRect() ?? {}
const { scrollY } = useScroll()
useEffect(() => {
return scrollY.onChange(() => setY(scrollY.get()))
}, [scrollY])
return (
height ? 'sm' : undefined}
transition='box-shadow 0.2s, background-color 0.2s'
pos='sticky'
top='0'
zIndex='11'
bg='white'
_dark={{ bg: 'gray.800' }}
left='0'
right='0'
width='full'
{...props}
>
)
}
export default Header