'use client' import { useState, useEffect } from 'react' import Link from 'next/link' import { usePathname } from 'next/navigation' import { Search, Menu, X } from 'lucide-react' import type { Category } from '@/lib/types' interface Props { categories: Category[] } export default function NavbarClient({ categories }: Props) { const pathname = usePathname() const [menuOpen, setMenuOpen] = useState(false) useEffect(() => { setMenuOpen(false) }, [pathname]) useEffect(() => { if (menuOpen) { document.body.style.overflow = 'hidden' } else { document.body.style.overflow = '' } return () => { document.body.style.overflow = '' } }, [menuOpen]) function openSearch() { window.dispatchEvent(new CustomEvent('kotobane:open-search')) } return ( <> {/* Mobile overlay */} {menuOpen && (
setMenuOpen(false)} />
{/* Overlay header */}
言羽
{/* Category list */}
{categories.map((cat) => { const isActive = pathname.startsWith(`/${cat.slug}`) return ( {cat.name} {cat.description && ( {cat.description} )} ) })}
)} ) }