import { Check, Trash } from "lucide-react"; import { memo, useMemo } from "react"; import { QuantityControl } from "./QuantityControl"; import { formatPrice } from "../../utils/helpers"; import { CartItem as CartItemType } from "src/api/types"; import { isVideo } from "../MondrianProductList"; import { Button } from "../ui/button"; interface CartItemProps { item: CartItemType; onQuantityChange: (itemId: string, quantity: number) => void; onRemoveItem: (itemId: string) => void; isLoading: boolean; hasBorder: boolean; } export const CartItem = memo(function CartItem({ item, onQuantityChange, onRemoveItem, isLoading, hasBorder, }: CartItemProps) { // Memoize discount calculation const discountPercent = useMemo(() => { if (!item.productVariant?.discountPrice || !item.productVariant?.price) { return null; } return Math.round( ((Number(item.productVariant.price) - Number(item.productVariant.discountPrice)) / Number(item.productVariant.price)) * 100 ); }, [item.productVariant?.discountPrice, item.productVariant?.price]); // Memoize video check const isVideoMedia = useMemo( () => isVideo(item.productVariant?.productImage || ""), [item.productVariant?.productImage] ); return (
{isVideoMedia ? (

قیمت واحد :

{formatPrice(item.productVariant?.price || "")} تومان

{discountPercent ? (

مقدار تخفیف :

{discountPercent}%

{formatPrice( ( Number(item.productVariant?.price) - Number(item.productVariant?.discountPrice) ).toString() )}{" "} تومان

) : null} {item?.productVariant?.stock && item?.productVariant?.stock > 0 ? (
onQuantityChange(item.id || "", item.quantity + 1) } onDecrease={() => onQuantityChange(item.id || "", item.quantity - 1) } onRemove={() => onRemoveItem(item.id || "")} />
) : (

محصول در حال حاضر موجود نیست

)}
); }); // Color Selector Component const ColorSelector = ({ color }: { color: string }) => ( <> {color && (

رنگ :

)} ); // Size Selector Component const SizeSelector = ({ size }: { size: string }) => ( <> {size && (

سایز :

{size}

)} );