/* eslint-disable max-statements */ import type { FC } from 'react'; import { useBoolean, useOnClickOutside, useRouteChange, } from '../../../utils/hooks'; import { MainNavItem, type MainNavItemProps } from './main-nav'; import { Search, type SearchProps } from './search'; import { Settings } from './settings'; import styles from './toolbar.module.scss'; export type ToolbarProps = Pick & { /** * Set additional classnames to the toolbar wrapper. */ className?: string; /** * The main nav items. */ nav: MainNavItemProps['items']; }; /** * Toolbar component * * Render the website toolbar. */ export const Toolbar: FC = ({ className = '', nav, searchPage, }) => { const { deactivate: deactivateMainNav, state: isMainNavOpen, toggle: toggleMainNav, } = useBoolean(false); const { deactivate: deactivateSearch, state: isSearchOpen, toggle: toggleSearch, } = useBoolean(false); const { deactivate: deactivateSettings, state: isSettingsOpen, toggle: toggleSettings, } = useBoolean(false); const mainNavRef = useOnClickOutside( () => isMainNavOpen && deactivateMainNav() ); const searchRef = useOnClickOutside( () => isSearchOpen && deactivateSearch() ); const settingsRef = useOnClickOutside( () => isSettingsOpen && deactivateSettings() ); useRouteChange(deactivateSearch); return (
); };