import { useState } from 'react'
import { X, Plus, Minus } from 'lucide-react'
export default function ProductModal({ product, onClose, onAdd }) {
const [quantity, setQuantity] = useState(1)
const [selectedOptions, setSelectedOptions] = useState([])
const basePrice = product.digital_price ?? product.base_price
const hasDiscount = product.digital_discount > 0 && !product.digital_price
const displayPrice = hasDiscount
? basePrice * (1 - product.digital_discount / 100)
: basePrice
function toggleOption(opt) {
setSelectedOptions(prev =>
prev.find(o => o.id === opt.id)
? prev.filter(o => o.id !== opt.id)
: [...prev, opt]
)
}
const optionsTotal = selectedOptions.reduce((s, o) => s + (o.price || 0), 0)
const lineTotal = (displayPrice + optionsTotal) * quantity
return (
{/* Image */}
{(product.digital_image_url || product.image_url) && (

)}
{product.digital_name || product.name}
{product.digital_description && (
{product.digital_description}
)}
{/* Price */}
€{displayPrice.toFixed(2)}
{hasDiscount && (
€{basePrice.toFixed(2)}
)}
{hasDiscount && (
-{product.digital_discount}%
)}
{/* Quick options */}
{product.quick_options?.length > 0 && (
Options
{product.quick_options.map(opt => {
const active = selectedOptions.find(o => o.id === opt.id)
return (
)
})}
)}
{/* Quantity */}
Quantity
{quantity}
{/* Add to cart */}
{product.digital_available ? (
) : (
Currently unavailable
)}
)
}