import React, {useEffect, useRef, useState} from 'react' import { ArrowUpRightIcon, MarkGithubIcon, MoonIcon, SearchIcon, SunIcon, ThreeBarsIcon, XIcon, } from '@primer/octicons-react' import {IconButton} from '@primer/react' import {Stack, Text} from '@primer/react-brand' import {clsx} from 'clsx' import type {PageMapItem} from 'nextra' import styles from './Header.module.css' import {NavDrawer} from '../nav-drawer/NavDrawer' import {useNavDrawerState} from '../nav-drawer/useNavDrawerState' import {useColorMode} from '../../context/color-modes/useColorMode' import type {DocsItem} from '../../../types' import {GlobalSearch} from '../global-search/GlobalSearch' import {FocusOn} from 'react-focus-on' import {LinksDropdown} from '../links-dropdown/LinksDropdown' import {useConfig} from '../../context/useConfig' type HeaderProps = { flatDocsDirectories: DocsItem[] siteTitle: string pageMap: PageMapItem[] } export function Header({siteTitle, flatDocsDirectories, pageMap}: HeaderProps) { const searchRef = useRef(null) const {colorMode, setColorMode} = useColorMode() const searchTriggerRef = useRef(null) const [isNavDrawerOpen, setIsNavDrawerOpen] = useNavDrawerState('768') const [isSearchOpen, setIsSearchOpen] = useState(false) const {headerLinks} = useConfig() useEffect(() => { document.documentElement.setAttribute('data-color-mode', colorMode) }, [colorMode]) const closeSearch = () => { setIsSearchOpen(false) setTimeout(() => { searchTriggerRef.current?.focus() }, 0) } return ( ) }