import { FC, useState } from 'react'; import useOnClickOutside from '../../../utils/hooks/use-on-click-outside'; import useRouteChange from '../../../utils/hooks/use-route-change'; import MainNav, { type MainNavProps } from '../toolbar/main-nav'; import Search, { type SearchProps } from '../toolbar/search'; import Settings, { type SettingsProps } from '../toolbar/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. */ 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)} className={styles.modal} ref={mainNavRef} /> setIsSearchOpened(!isSearchOpened)} className={`${styles.modal} ${styles['modal--search']}`} ref={searchRef} /> setIsSettingsOpened(!isSettingsOpened)} tooltipClassName={styles.tooltip} />
); }; export default Toolbar;