import { useState } from 'react' import { motion, AnimatePresence } from 'framer-motion' import { X, ShoppingCart } from 'lucide-react' const BASICS = ['salz', 'pfeffer', 'zucker', 'mehl', 'öl', 'wasser', 'essig'] interface Ingredient { name: string amount?: number unit?: string } interface Props { open: boolean onClose: () => void ingredients: Ingredient[] onSubmit: (selected: Ingredient[]) => void loading?: boolean } export function IngredientPickerModal({ open, onClose, ingredients, onSubmit, loading }: Props) { const [checked, setChecked] = useState>(() => new Set(ingredients.map((_, i) => i))) const toggle = (i: number) => { setChecked((prev) => { const next = new Set(prev) if (next.has(i)) next.delete(i) else next.add(i) return next }) } const selectAll = () => setChecked(new Set(ingredients.map((_, i) => i))) const selectNone = () => setChecked(new Set()) const deselectBasics = () => { setChecked((prev) => { const next = new Set(prev) ingredients.forEach((ing, i) => { if (BASICS.some((b) => ing.name.toLowerCase().includes(b))) { next.delete(i) } }) return next }) } const handleSubmit = () => { const selected = ingredients.filter((_, i) => checked.has(i)) if (selected.length > 0) onSubmit(selected) } return ( {open && ( e.stopPropagation()} > {/* Header */}

Zutaten auswählen

{/* Quick actions */}
{/* Ingredient list */}
{ingredients.map((ing, i) => ( ))}
{/* Submit */}
)}
) }