import React, { useContext, useEffect, useState } from 'react'; import { MenuContext } from '@gdsc-dju/styled-components-theme'; import MenuIcon from '../MenuIcon'; import SideMenu from '../SideMenu/SideMenu'; import ThemeButton from '../ThemeButton'; import NavigationLogo from './NavigationLogo'; import { NavigationProps } from './props'; import { ButtonWrapper, LinkWrapper, MenuButtonWrapper, NavInner, NavLogoContainer, NavLogoContainerInner, NavTaskWrapper, NavWrapper, StyledLi, } from './styled'; export type NavigationRoutes = Array<{ route: string; title: string; }>; const Navigation = ({ routes, title, customLogo, themeButtonActive = true, pointColor = 'blue900', menuPosition = 'right', router, sideMenu, rightElement, }: NavigationProps) => { const [currentLocation, setLocation] = useState(); const { isMenuOpen, toggleMenu } = useContext(MenuContext); useEffect(() => { setLocation(location.pathname); }, [location.pathname]); const routeHandler = (route: string) => { router && router(route); }; return ( {(menuPosition === 'left' || menuPosition === 'left-mobile-only') && ( toggleMenu()} > )} routeHandler('/')} customLogo={customLogo} pointColor={pointColor} /> {routes && ( {routes.map((link) => { const isRoute = currentLocation?.includes(link.route); return ( routeHandler(link.route)} > {link.title} ); })} )} {rightElement && <>{rightElement}} {themeButtonActive && } {(menuPosition === 'right' || menuPosition === 'right-mobile-only') && ( )} {/* eslint-disable-next-line react/no-children-prop */} ); }; export default Navigation;