function useCart() { const [cart, setCart] = useGlobalStates('cart'); const addItem = (product) => { const existing = cart.items.find(i => i.id === product.id); let newItems; if (existing) { newItems = cart.items.map(i => i.id === product.id ? { ...i, quantity: i.quantity + 1 } : i ); } else { newItems = [...cart.items, { ...product, quantity: 1 }]; } const total = newItems.reduce( (sum, i) => sum + i.price * i.quantity, 0 ); setCart({ items: newItems, total }); }; const removeItem = (productId) => { const newItems = cart.items.filter(i => i.id !== productId); const total = newItems.reduce( (sum, i) => sum + i.price * i.quantity, 0 ); setCart({ items: newItems, total }); }; const clearCart = () => { setCart({ items: [], total: 0 }); }; return { cart, addItem, removeItem, clearCart }; } // Utilisation function ProductCard({ product }) { const { addItem } = useCart(); return (

{product.label}

{product.price} €

); } function CartIcon() { const { cart } = useCart(); const itemCount = cart.items.reduce((sum, i) => sum + i.quantity, 0); return 🛒 {itemCount}; }