import { useState } from "react" import PropTypes from "prop-types" import Link from "next/link" import { useRouter } from "next/router" import { getButtonAppearance } from "utils/button" import { mediaPropTypes, linkPropTypes, buttonLinkPropTypes } from "utils/types" import { MdMenu } from "react-icons/md" import MobileNavMenu from "./mobile-nav-menu" import ButtonLink from "./button-link" import NextImage from "./image" import CustomLink from "./custom-link" import LocaleSwitch from "../locale-switch" const Navbar = ({ navbar, pageContext }) => { const router = useRouter() const [mobileMenuIsShown, setMobileMenuIsShown] = useState(false) return ( <> {/* The actual navbar */} {/* Content aligned to the left */} {/* List of links on desktop */} {navbar.links.map((navLink) => ( {navLink.text} ))} {/* Locale Switch Mobile */} {pageContext.localizedPaths && ( )} {/* Hamburger menu on mobile */} setMobileMenuIsShown(true)} className="p-1 block md:hidden" > {/* CTA button on desktop */} {navbar.button && ( )} {/* Locale Switch Desktop */} {pageContext.localizedPaths && ( )} {/* Mobile navigation menu panel */} {mobileMenuIsShown && ( setMobileMenuIsShown(false)} /> )} > ) } Navbar.propTypes = { navbar: PropTypes.shape({ logo: PropTypes.shape({ image: mediaPropTypes, url: PropTypes.string, }), links: PropTypes.arrayOf(linkPropTypes), button: buttonLinkPropTypes, }), initialLocale: PropTypes.string, } export default Navbar