"use client"; import { use, useCallback } from "react"; import { useRouter } from "next/navigation"; import ReactLenis from "lenis/react"; import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen'; import FooterBaseCard from '@/components/sections/footer/FooterBaseCard'; import ProductDetailCard from "@/components/ecommerce/productDetail/ProductDetailCard"; import ProductCart from "@/components/ecommerce/cart/ProductCart"; import { useProductDetail } from "@/hooks/useProductDetail"; import { useCart } from "@/hooks/useCart"; import { useCheckout } from "@/hooks/useCheckout"; interface ProductPageProps { params: Promise<{ id: string }>; } export default function ProductPage({ params }: ProductPageProps) { const { id } = use(params); const router = useRouter(); const { product, isLoading, images, meta, variants, quantityVariant, selectedQuantity, createCartItem, } = useProductDetail(id); const { items: cartItems, isOpen: cartOpen, setIsOpen: setCartOpen, addItem, updateQuantity, removeItem, total: cartTotal, getCheckoutItems, } = useCart(); const { buyNow, checkout, isLoading: isCheckoutLoading } = useCheckout(); const handleAddToCart = useCallback(() => { const item = createCartItem(); if (item) { addItem(item); } }, [createCartItem, addItem]); const handleBuyNow = useCallback(() => { if (product) { buyNow(product, selectedQuantity); } }, [product, selectedQuantity, buyNow]); const handleCheckout = useCallback(async () => { if (cartItems.length === 0) return; const currentUrl = new URL(window.location.href); currentUrl.searchParams.set("success", "true"); await checkout(getCheckoutItems(), { successUrl: currentUrl.toString() }); }, [cartItems, checkout, getCheckoutItems]); if (isLoading) { return (

Loading product...

); } if (!product) { return (

Product not found

); } return (
0 ? variants : undefined} quantity={quantityVariant} ribbon={meta.ribbon} inventoryStatus={meta.inventoryStatus} inventoryQuantity={meta.inventoryQuantity} sku={meta.sku} buttons={[ { text: "Add To Cart", onClick: handleAddToCart }, { text: "Buy Now", onClick: handleBuyNow }, ]} />
setCartOpen(false)} items={cartItems} onQuantityChange={updateQuantity} onRemove={removeItem} total={`$${cartTotal}`} buttons={[ { text: isCheckoutLoading ? "Processing..." : "Check Out", onClick: handleCheckout, }, ]} />
); }