/* ============================================================
FLORÍADE — Carrinho (contexto + gaveta)
============================================================ */
const { createContext, useContext, useState, useEffect, useCallback } = React;
const CartCtx = createContext(null);
const useCart = () => useContext(CartCtx);
function CartProvider({ children }){
const [items, setItems] = useState(()=>{
try{ return JSON.parse(localStorage.getItem("fl-cart")||"[]"); }catch{ return []; }
});
const [open, setOpen] = useState(false);
const [pulse, setPulse] = useState(0);
useEffect(()=>{ localStorage.setItem("fl-cart", JSON.stringify(items)); }, [items]);
const add = useCallback((id, qty=1)=>{
setItems(prev=>{
const f = prev.find(i=>i.id===id);
if(f) return prev.map(i=>i.id===id?{...i,qty:i.qty+qty}:i);
return [...prev,{id,qty}];
});
setPulse(p=>p+1);
},[]);
const setQty = useCallback((id,qty)=>{
setItems(prev=> qty<=0 ? prev.filter(i=>i.id!==id) : prev.map(i=>i.id===id?{...i,qty}:i));
},[]);
const remove = useCallback((id)=> setItems(prev=>prev.filter(i=>i.id!==id)),[]);
const clear = useCallback(()=> setItems([]),[]);
const count = items.reduce((s,i)=>s+i.qty,0);
const detailed = items.map(i=>({ ...i, p: PRODUCTS.find(p=>p.id===i.id) })).filter(i=>i.p);
const total = detailed.reduce((s,i)=>s+i.p.price*i.qty,0);
const value = { items, detailed, add, setQty, remove, clear, count, total, open, setOpen, pulse };
return