"use client"; // 클라이언트 훅(useState/useEffect)을 사용하여 세션 표시/로그아웃을 처리합니다. import Image from "next/image"; import Link from "next/link"; import { SearchBar } from "@/app/components/SearchBar"; import React from "react"; export function AppHeader() { const [categories, setCategories] = React.useState }>>([]); const [openSlug, setOpenSlug] = React.useState(null); const [mobileOpen, setMobileOpen] = React.useState(false); // 카테고리 로드 React.useEffect(() => { fetch("/api/categories", { cache: "no-store" }) .then((r) => r.json()) .then((d) => setCategories(d?.categories || [])) .catch(() => setCategories([])); }, []); return (
logo
{mobileOpen && (
setMobileOpen(false)}>
e.stopPropagation()}>
{categories.map((cat) => (
{cat.name}
{cat.boards.map((b) => ( setMobileOpen(false)} className="rounded px-2 py-1 text-neutral-700 hover:bg-neutral-100 hover:text-neutral-900"> {b.name} ))}
))}
)}
); }