/* engage.jsx — RSVP + Guestbook */ const { useState: useStateEng, useEffect: useEffectEng } = React; function Rsvp() { const [form, setForm] = useStateEng({ name: '', status: '', guests: '1', note: '' }); const [done, setDone] = useStateEng(false); const [count, setCount] = useStateEng(0); const set = (k) => (e) => setForm({ ...form, [k]: e.target.value }); const loadCount = async () => { const all = await R50.getRsvps(); setCount(all.filter((r) => r.status === 'yes').reduce((n, r) => n + (parseInt(r.guests, 10) || 1), 0)); }; useEffectEng(() => { loadCount(); }, []); const submit = async (e) => { if (!form.name.trim() || !form.status) return; await R50.addRsvp(form); await loadCount(); setDone(true); if (form.status === 'yes' && window.R50FX) { const r = e && e.currentTarget ? e.currentTarget.getBoundingClientRect() : null; window.R50FX.confetti(r ? { x: r.left + r.width / 2, y: r.top } : {}); } }; return (
Kindly Reply by June 14th

Will you join us?

{count > 0 &&

{count} {count === 1 ? 'guest is' : 'guests are'} already celebrating 🥂

}
{done ? (
{form.status === 'yes' ? "We can't wait to see you!" : "We'll miss you dearly."}

{form.status === 'yes' ? Thank you, {form.name.split(' ')[0]}. Your reply is in — see you on July 11th. : `Thank you for letting us know, ${form.name.split(' ')[0]}. You'll be with us in spirit.`}

) : ( <>
{form.status === 'yes' && (
)}