"use client"; import Link from "next/link"; import { useEffect, useState } from "react"; import { createPortal } from "react-dom"; import { customerContinueCheckoutUrl } from "@/lib/customer"; import { useCart } from "@/lib/cart"; import { formatPrice } from "@/lib/format"; import { PLACEHOLDER } from "@/lib/data"; import { useSession } from "@/lib/session"; import { IconClose } from "./Icons"; import { Media } from "./Media"; type Props = { open: boolean; onClose: () => void; }; export function CartPopup({ open, onClose }: Props) { const { isAuthenticated } = useSession(); const { items, itemCount, total, removeItem, setQuantity } = useCart(); const [mounted, setMounted] = useState(false); useEffect(() => { setMounted(true); }, []); useEffect(() => { if (!open) return; const onKeyDown = (event: KeyboardEvent) => { if (event.key === "Escape") onClose(); }; document.addEventListener("keydown", onKeyDown); document.body.style.overflow = "hidden"; return () => { document.removeEventListener("keydown", onKeyDown); document.body.style.overflow = ""; }; }, [open, onClose]); if (!mounted || !open) return null; const continueHref = customerContinueCheckoutUrl(isAuthenticated, items); return createPortal(
{itemCount.toLocaleString("fa-IR")} کالا
)}سبد خرید شما خالی است