import Link from "next/link"; import { t } from "@lingui/core/macro"; import { useEffect, useState } from "react"; import { twMerge } from "tailwind-merge"; import Button from "~/components/Button"; const Header = ({ isLoggedIn }: { isLoggedIn: boolean }) => { const [isMenuOpen, setIsMenuOpen] = useState(false); const desktopMenuItems = [ { label: t`Roadmap`, href: "/kan/roadmap", openInNewTab: true, }, { label: t`Features`, href: "/#features" }, { label: t`Pricing`, href: "/pricing" }, { label: t`Docs`, href: "https://docs.kan.bn", openInNewTab: true, }, ]; const mobileMenuItems = [ { label: t`Roadmap`, href: "/kan/roadmap", openInNewTab: true, group: "Product", }, { label: t`Features`, href: "/#features", group: "Product" }, { label: t`Pricing`, href: "/pricing", group: "Product" }, { label: t`Documentation`, href: "https://docs.kan.bn", openInNewTab: true, group: "Resources", }, { label: t`FAQ`, href: "/#faq", group: "Resources" }, { label: t`Contact`, href: "mailto:support@kan.bn", group: "Resources" }, ]; // Group mobile menu items by their group property const groupedMenuItems = mobileMenuItems.reduce( (acc, item) => { (acc[item.group] ??= []).push(item); return acc; }, {} as Record, ); const toggleMenu = () => { setIsMenuOpen(!isMenuOpen); }; useEffect(() => { document.documentElement.classList.toggle("overflow-hidden", isMenuOpen); document.body.classList.toggle("overflow-hidden", isMenuOpen); return () => { document.documentElement.classList.remove("overflow-hidden"); document.body.classList.remove("overflow-hidden"); }; }, [isMenuOpen]); return ( <>

kan.bn

{/* Desktop Menu */}
{desktopMenuItems.map((item) => ( {item.label} ))}
{isLoggedIn ? ( ) : (
)}
{/* Hamburger Menu Button */}
{/* Mobile Menu Overlay */}
{Object.entries(groupedMenuItems).map(([group, items]) => (
{group}
{items.map((item) => ( setIsMenuOpen(false)} > {item.label} ))}
))}
); }; export default Header;