/** * @copyright nhcarrigan * @license Naomi's Public License * @author Naomi Carrigan */ "use client"; import { faBars, faTimes, faSun, faMoon, } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import Image from "next/image"; import { usePathname } from "next/navigation"; import React, { type JSX, useState, useEffect, useCallback } from "react"; import { NavItems } from "../config/NavItems"; import { Rule } from "./rule"; /** * Conditionally renders the navigation component when * not on the home page. * @returns A JSX element. */ export const Navigation = (): JSX.Element | null => { const [ isOpen, setIsOpen ] = useState(false); const [ isDarkMode, setIsDarkMode ] = useState(false); useEffect(() => { const storedTheme = localStorage.getItem("theme"); if (storedTheme === "dark") { document.documentElement.classList.add("dark"); setIsDarkMode(true); } else { document.documentElement.classList.remove("dark"); setIsDarkMode(false); } }, []); const toggleMenu = useCallback((): void => { setIsOpen(!isOpen); }, [ isOpen ]); const toggleDarkMode = useCallback((): void => { document.documentElement.classList.toggle("dark", !isDarkMode); localStorage.setItem("theme", isDarkMode ? "light" : "dark"); setIsDarkMode(!isDarkMode); }, [ isDarkMode ]); const pathname = usePathname(); const isRootPath = pathname === "/"; if (isRootPath) { return null; } return (
{isOpen ?
{NavItems.map((item, index) => { return ( {index % 2 === 1 ? "🩷" : "🩵"} {item.text} ); })}
: null}
); };