// CART PAGE — mobile ready function CartPage({ lang, cart, setCart, setPage, session }) { const settings = Store.getSettings(); const t = lang === 'pt' ? { title: 'Carrinho', empty: 'O seu carrinho está vazio.', shopNow: 'Ir às Compras', subtotal: 'Subtotal', delivery: 'Entrega', free: 'Grátis', total: 'Total', checkout: 'Finalizar Encomenda', freeOver: `Portes grátis acima de ${settings.freeDeliveryOver}€`, loginRequired: 'Entrar para finalizar' } : { title: 'Cart', empty: 'Your cart is empty.', shopNow: 'Go Shopping', subtotal: 'Subtotal', delivery: 'Delivery', free: 'Free', total: 'Total', checkout: 'Checkout', freeOver: `Free delivery over €${settings.freeDeliveryOver}`, loginRequired: 'Sign in to checkout' }; const updateQty = (id, delta) => { const updated = cart.map(item => item.id === id ? { ...item, qty: Math.max(1, item.qty + delta) } : item ); setCart(updated); Store.saveCart(updated); }; const removeItem = (id) => { const updated = cart.filter(item => item.id !== id); setCart(updated); Store.saveCart(updated); }; const subtotal = cart.reduce((s, i) => s + i.price * i.qty, 0); const deliveryFee = subtotal >= settings.freeDeliveryOver ? 0 : settings.deliveryFee; const total = subtotal + deliveryFee; if (cart.length === 0) return (
🛒

{t.empty}

setPage('shop')}>{t.shopNow}
); return (
{t.title} {/* Responsive grid: items + summary */}
{/* Items list */}
{cart.map(item => (

{item.name}

{item.price.toFixed(2)}€
{/* Qty */}
{item.qty}
{(item.price * item.qty).toFixed(2)}€
))}
{/* Summary card */}

{lang === 'pt' ? 'Resumo' : 'Summary'}

{[[t.subtotal, `${subtotal.toFixed(2)}€`], [t.delivery, deliveryFee === 0 ? t.free : `${deliveryFee.toFixed(2)}€`]].map(([label, val]) => (
{label}{val}
))}
{t.total}{total.toFixed(2)}€
{t.freeOver}
{session ? ( setPage('checkout')} full>{t.checkout} ) : ( setPage('auth')} full>{t.loginRequired} )}
); } Object.assign(window, { CartPage });