import { 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]); const isVideoMedia = useMemo( () => isVideo(item.productVariant?.productImage || ""), [item.productVariant?.productImage] ); const color = item.productVariant?.color?.value !== "UNSELECTED" ? item.productVariant?.color?.info?.detail || "" : ""; const size = item.productVariant?.size?.value !== "UNSELECTED" ? item.productVariant?.size?.info?.detail || "" : ""; const effectivePrice = item.productVariant?.discountPrice || item.productVariant?.price || ""; const inStock = !!item?.productVariant?.stock && item.productVariant.stock > 0; return (
در حال حاضر موجود نیست