// mb-club.jsx — Clube de benefícios (assinatura, estilo iFood Clube) const CLUB_BENEFITS = [ { ic: "bike", t: "Entrega grátis", d: "Em lojas selecionadas, sem taxa." }, { ic: "coin", t: "BemCash em dobro", d: "O dobro de cashback em todas as compras." }, { ic: "ticket", t: "Cupons exclusivos", d: "Ofertas só para membros, toda semana." }, { ic: "bolt", t: "Acesso antecipado", d: "Promoções e BemCash Turbo antes de todo mundo." }, { ic: "headset", t: "Atendimento prioritário", d: "Suporte na frente da fila." }, ]; const CLUB_PLANS = [ { id: "mensal", label: "Mensal", price: 9.9, per: "/mês", note: "Cancele quando quiser" }, { id: "anual", label: "Anual", price: 99, per: "/ano", note: "2 meses grátis", best: true }, ]; function ClubScreen({ member, onSubscribe, onCancel, onBack }) { const [plan, setPlan] = React.useState("anual"); const [loading, setLoading] = React.useState(false); // Planos reais da API const [apiPlans, setApiPlans] = React.useState(null); React.useEffect(() => { API.club.plans().then(d => { if (d.plans?.length) { setApiPlans(d.plans.map(p => ({ id: p.id, label: p.period === "mensal" ? "Mensal" : "Anual", price: parseFloat(p.price), per: p.period === "mensal" ? "/mês" : "/ano", note: p.period === "anual" ? "2 meses grátis" : "Cancele quando quiser", best: p.period === "anual", benefits: p.benefits || [], _raw: p, }))); setPlan(d.plans.find(p => p.period === "anual")?.id || d.plans[0]?.id); } }).catch(() => {}); }, []); const plans = apiPlans || CLUB_PLANS; const sel = plans.find(p => p.id === plan) || plans[0]; const handleSubscribe = async () => { if (!sel?._raw?.id) { onSubscribe(); return; } setLoading(true); try { await API.club.subscribe({ plan_id: sel._raw.id }); onSubscribe(); } catch (_) { onSubscribe(); } // fallback local finally { setLoading(false); } }; return (
{/* hero */}
CLUBE MORAR BEM

{member ? "Você é membro 🎉" : "Mais vantagens em cada compra"}

{member ? "Aproveite entrega grátis, BemCash em dobro e ofertas exclusivas." : "Assine o Clube e economize todo mês com benefícios exclusivos."}

{/* benefits */}
Seus benefícios
{CLUB_BENEFITS.map(b => (
{b.t}
{b.d}
{member && }
))}
{/* plans */} {!member && (
Escolha seu plano
{CLUB_PLANS.map(p => { const on = plan === p.id; return ( ); })}
)} {member && (
Plano Anual
Renova em 12 jun 2027
ATIVO
)}
{!member && (
{loading ? "Processando…" : "Assinar Clube"} {!loading && {money(sel?.price || 0)}{sel?.per}}
Renovação automática · cancele quando quiser
)}
); } Object.assign(window, { CLUB_BENEFITS, CLUB_PLANS, ClubScreen });