"use client"; import Image from "next/image"; import Link from "next/link"; import { usePathname } from "next/navigation"; import { useEffect, useState } from "react"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faBars, faChevronDown, faUser, faXmark } from "@fortawesome/free-solid-svg-icons"; import { businessDashboardUrl, customerDashboardUrl, navLinks, } from "@/lib/site-config"; type HeaderSession = { name: string; isAdmin: boolean; }; export default function Header() { const pathname = usePathname(); const [open, setOpen] = useState(false); const [scrolled, setScrolled] = useState(false); const [session, setSession] = useState(null); useEffect(() => { const onScroll = () => setScrolled(window.scrollY > 12); onScroll(); window.addEventListener("scroll", onScroll, { passive: true }); return () => window.removeEventListener("scroll", onScroll); }, []); useEffect(() => { const controller = new AbortController(); fetch("/api/auth/session", { credentials: "same-origin", signal: controller.signal, cache: "no-store", }) .then((response) => (response.ok ? response.json() : { user: null })) .then((data: { user?: HeaderSession | null }) => setSession(data.user || null)) .catch(() => undefined); return () => controller.abort(); }, []); useEffect(() => { if (!open) return; const previousOverflow = document.body.style.overflow; const closeOnEscape = (event: KeyboardEvent) => { if (event.key === "Escape") setOpen(false); }; document.body.style.overflow = "hidden"; window.addEventListener("keydown", closeOnEscape); return () => { document.body.style.overflow = previousOverflow; window.removeEventListener("keydown", closeOnEscape); }; }, [open]); return (
هدیه مزون
{session ? (
پروفایل من {session.isAdmin && ( مدیریت وبسایت )}
) : ( )} تماس با ما
); }