diff --git a/src/components/Navbar.astro b/src/components/Navbar.astro index a952fb0..43d94d1 100644 --- a/src/components/Navbar.astro +++ b/src/components/Navbar.astro @@ -23,7 +23,7 @@ const { navbarDisplay = "normal" } = Astro.props as Props; class:list={[ "mx-auto border-b-1 border-solid px-4 shadow-lg transition", navbarDisplay == "transparent" - ? "border-gray-500 bg-transparent" + ? "should-be-transparent border-gray-500 bg-transparent" : "border-white bg-white dark:border-gray-700 dark:bg-gray-700 dark:text-white" ]} > @@ -53,8 +53,10 @@ const { navbarDisplay = "normal" } = Astro.props as Props; class:list={[ "font-header font-medium uppercase transition hover:text-gray-300", pathName === link.href - ? "text-primary" - : "text-gray-500 dark:text-white" + ? "text-primary navbar-desktop-link-current" + : navbarDisplay === "transparent" + ? "navbar-desktop-link text-gray-500" + : "navbar-desktop-link text-gray-500 dark:text-white" ]} aria-current={pathName === link.href ? "page" : undefined} > @@ -120,10 +122,42 @@ const { navbarDisplay = "normal" } = Astro.props as Props; const toggleMenu = () => { const toggle = document.getElementById("menu-toggle"); const mobileMenu = document.getElementById("mobile-menu"); + const navbar = document.getElementById("navbar-lg"); if (toggle && mobileMenu) { toggle.addEventListener("click", () => { mobileMenu.classList.toggle("hidden"); + + if (navbar) { + const menuIsShowing = !mobileMenu.classList.contains("hidden"); + const shouldBeTransparent = navbar.classList.contains( + "should-be-transparent" + ); + + if (!shouldBeTransparent) { + return; + } + + if (menuIsShowing) { + navbar.classList.remove("bg-transparent", "border-gray-500"); + navbar.classList.add( + "bg-white", + "border-white", + "dark:bg-gray-700", + "dark:border-gray-700", + "dark:text-white" + ); + } else { + navbar.classList.add("bg-transparent", "border-gray-500"); + navbar.classList.remove( + "bg-white", + "border-white", + "dark:bg-gray-700", + "dark:border-gray-700", + "dark:text-white" + ); + } + } }); } }; @@ -137,6 +171,9 @@ const { navbarDisplay = "normal" } = Astro.props as Props;