import { FC, useState } from 'react'; import { useOnClickOutside, useRouteChange } from '../../../utils/hooks'; import { MainNav, type MainNavProps } from './main-nav'; import { Search, type SearchProps } from './search'; import { Settings, type SettingsProps } from './settings'; import styles from './toolbar.module.scss'; export type ToolbarProps = Pick & Pick & { /** * Set additional classnames to the toolbar wrapper. */ className?: string; /** * The main nav items. */ nav: MainNavProps['items']; }; /** * Toolbar component * * Render the website toolbar. */ export const Toolbar: FC = ({ ackeeStorageKey, className = '', motionStorageKey, nav, searchPage, }) => { const [isNavOpened, setIsNavOpened] = useState(false); const [isSearchOpened, setIsSearchOpened] = useState(false); const [isSettingsOpened, setIsSettingsOpened] = useState(false); const mainNavRef = useOnClickOutside( () => isNavOpened && setIsNavOpened(false) ); const searchRef = useOnClickOutside( () => isSearchOpened && setIsSearchOpened(false) ); const settingsRef = useOnClickOutside( () => isSettingsOpened && setIsSettingsOpened(false) ); useRouteChange(() => setIsSearchOpened(false)); return (
setIsNavOpened(!isNavOpened)} /> setIsSearchOpened(!isSearchOpened)} /> setIsSettingsOpened(!isSettingsOpened)} />
); };