"use client"; import { memo, useCallback } from "react"; import { Plus, Minus, Trash2 } from "lucide-react"; import MediaContent from "@/components/shared/MediaContent"; import QuantityButton from "@/components/shared/QuantityButton"; import { cls } from "@/lib/utils"; export interface CartItem { id: string; name: string; variants?: string[]; price: string; quantity: number; imageSrc: string; imageAlt?: string; } interface ProductCartItemProps { item: CartItem; onQuantityChange?: (id: string, quantity: number) => void; onRemove?: (id: string) => void; className?: string; } const ProductCartItem = ({ item, onQuantityChange, onRemove, className = "", }: ProductCartItemProps) => { const handleIncrement = useCallback(() => { onQuantityChange?.(item.id, item.quantity + 1); }, [item.id, item.quantity, onQuantityChange]); const handleDecrement = useCallback(() => { if (item.quantity <= 1) return; onQuantityChange?.(item.id, item.quantity - 1); }, [item.id, item.quantity, onQuantityChange]); const handleRemove = useCallback(() => { onRemove?.(item.id); }, [item.id, onRemove]); return (

{item.name}

{item.variants && item.variants.length > 0 && (
{item.variants.map((variant) => (

{variant}

))}
)}

{item.price}

{item.quantity}
); }; ProductCartItem.displayName = "ProductCartItem"; export default memo(ProductCartItem);