import { Plus } from "lucide-react"; import { Button } from "../ui/button"; import { QuantityControl } from "../cart/QuantityControl"; import { ProductVariantDrawer } from "./ProductVariantDrawer"; import { useState } from "react"; import { useColorAttributes } from "~/requestHandler/use-product-hooks"; interface ProductVariant { color: string; size: string; quantity: number; } interface ProductVariantsSectionProps { productVariants: ProductVariant[]; setProductVariants: (variants: ProductVariant[]) => void; onUpdateVariantQuantity: (index: number, newQuantity: number) => void; } export const ProductVariantsSection: React.FC = ({ productVariants, setProductVariants, onUpdateVariantQuantity, }: ProductVariantsSectionProps) => { const { data: colorAttributes } = useColorAttributes(); // Handle variants const [isVariantDrawerOpen, setIsVariantDrawerOpen] = useState(false); const [variantDrawerKey, setVariantDrawerKey] = useState(0); const [isEditingVariants, setIsEditingVariants] = useState(false); const handleAddVariantClick = () => { setVariantDrawerKey(Date.now()); setIsEditingVariants(productVariants.length > 0); setIsVariantDrawerOpen(true); }; return ( <>

ویژگی‌های محصول:

{/* Variants Preview */} {productVariants.length > 0 && (

انواع محصول ({productVariants.length} نوع):

{productVariants.map((variant, index) => { return (
{/* Display color only if not unselected */} {variant.color !== "unselected" && (
{(() => { try { const colorInfo = colorAttributes?.find( (c) => c.value === variant.color ); return ( colorInfo?.info?.persian || variant.color ); } catch { return variant.color; } })()}
)} {/* Display size only if not unselected */} {variant.size !== "unselected" && (
سایز: {variant.size}
)} {/* Show general text when both are unselected */} {variant.color === "unselected" && variant.size === "unselected" && ( محصول کلی )}
{ onUpdateVariantQuantity(index, newQuantity); }} onIncrease={() => { onUpdateVariantQuantity(index, variant.quantity + 1); }} onDecrease={() => { if (variant.quantity > 0) { onUpdateVariantQuantity( index, variant.quantity - 1 ); } }} />
); })}
مجموع موجودی: {productVariants.reduce((sum, v) => sum + v.quantity, 0)}{" "} عدد
)}
{/* Product Variant Drawer */} { setIsVariantDrawerOpen(false); setIsEditingVariants(false); }} onSave={(variants) => { setProductVariants( variants.filter((variant) => variant.quantity > 0) ); setVariantDrawerKey(Date.now()); setIsEditingVariants(false); }} initialVariants={isEditingVariants ? productVariants : []} /> ); };