// Kits / Offers screen
const KITS = [
{
id: 'basic',
name: 'Basic',
contents: '1 álbum + 10 saquetas',
cromos: '~70 cromos',
price: 14.99, original: 15.62,
color: '#7e8b89',
badge: null,
sachets: 10,
img: 'uploads/kit-basic.png',
},
{
id: 'inicial',
name: 'Inicial',
contents: '1 álbum + 1 caixa',
cromos: '30 saquetas · 210 cromos',
price: 29.99, original: 39.90,
color: '#3b8c6e',
badge: 'POPULAR',
sachets: 30,
img: 'uploads/kit-inicial.png',
},
{
id: 'campeao',
name: 'Campeão',
contents: '1 álbum + 2 caixas',
cromos: '60 saquetas · 420 cromos',
price: 39.99, original: 59.90,
color: '#d6263a',
badge: 'MAIS VENDIDO',
sachets: 60,
img: 'uploads/kit-campeao.png',
},
{
id: 'colecionador',
name: 'Colecionador',
contents: '1 álbum + 3 caixas',
cromos: '90 saquetas · 630 cromos',
price: 59.99, original: 80.00,
color: '#ffc83d',
badge: 'MELHOR VALOR',
sachets: 90,
img: 'uploads/kit-colecionador.png',
},
];
window.KITS = KITS;
function Offers({ discount, recommended, onPick }) {
const [selected, setSelected] = React.useState(null);
const recId = recommended.toLowerCase().normalize('NFD').replace(/[\u0300-\u036f]/g, '');
React.useEffect(() => {
// Pre-select recommended kit
const k = KITS.find((x) => x.id.startsWith(recId)) || KITS[2];
setSelected(k.id);
}, [recId]);
return (
{/* Top discount banner */}
-{discount}%
DESCONTO APLICADO · EXPIRA EM 14:23
{KITS.map((k) => {
const isSelected = selected === k.id;
const discountedPrice = (k.price * (1 - discount / 100)).toFixed(2);
const isRecommended = k.id.startsWith(recId);
return (
);
})}
{/* Continue */}
{
const k = KITS.find((x) => x.id === selected);
onPick(k);
}}>
Continuar → Checkout
{/* Reassurance */}
{[
'🔒 Pagamento 100% seguro · MB Way, Multibanco, Cartão',
'📦 Envio CTT registado · 24-48h em Portugal',
'🔄 Garantia 30 dias · Devolução grátis',
'🇵🇹 Stock e suporte em Portugal',
].map((t, i) =>
{t}
)}
);
}
Object.assign(window, { Offers, KITS });