"use client"; import Image from "next/image"; import Link from "next/link"; import { useRouter } from "next/navigation"; import { useEffect, useState } from "react"; import { useAuth } from "@/context/AuthContext"; import { useCart } from "@/context/CartContext"; const drawerLinkCls = "block text-[#2f2f2f] no-underline text-[1.05rem] font-medium px-2 py-[0.65rem] rounded-md transition-colors hover:bg-[rgba(47,47,47,0.1)]"; const navLinkCls = "text-[#2f2f2f] no-underline text-[1.05rem] font-semibold px-4 py-2 rounded-md transition-all duration-[250ms] hover:bg-white/25"; const cartBtnCls = "relative inline-flex items-center text-[1.4rem] no-underline mr-2 px-[0.4rem] py-[0.2rem] rounded-md transition-colors hover:bg-white/20"; const cartBadgeCls = "absolute -top-1 -right-1.5 bg-[#e53935] text-white rounded-full text-[0.65rem] font-bold min-w-[18px] h-[18px] flex items-center justify-center px-[3px] leading-none"; function CartIcon({ itemCount, onClick }) { return ( 🛒 {itemCount > 0 && ( {itemCount > 99 ? "99+" : itemCount} )} ); } export default function DisplayNav() { const { user, logout, loading } = useAuth(); const { itemCount, selectedStoreId, setStoreId } = useCart(); const router = useRouter(); const [stores, setStores] = useState([]); const [menuOpen, setMenuOpen] = useState(false); useEffect(() => { fetch("/api/v1/stores?size=100") .then((r) => (r.ok ? r.json() : null)) .then((data) => { if (data) setStores(data.content ?? []); }) .catch(() => {}); }, []); function handleLogout() { logout(); router.push("/"); setMenuOpen(false); } function closeMenu() { setMenuOpen(false); } const storeSelect = (extraCls = "") => user && stores.length > 0 && ( { setStoreId(e.target.value || null); if (extraCls) closeMenu(); }} > All Stores {stores.map((s) => {s.storeName})} ); return ( {/* Desktop nav links */} Home Adopt Store Appointments Help Contact {/* Desktop auth */} {storeSelect("mr-2 max-w-[160px]")} {user && } {loading ? null : user ? ( <> Hello, {(user.fullName || user.username).split(" ")[0]} Log Out > ) : ( <> Log In Register > )} {/* Mobile bar: cart + hamburger */} {user && } setMenuOpen((o) => !o)} > {/* Mobile dropdown drawer */} {menuOpen && ( Home Adopt Store Appointments Help Contact {storeSelect("w-full mb-1")} {loading ? null : user ? ( <> My Profile ({user.fullName || user.username}) Log Out > ) : ( <> Log In Register > )} )} ); }