// sections-bot.jsx — OrderForm, Pickup+Map, Payment, Founder, FAQ, Footer const { useState: useS2, useRef: useR2 } = React; // ───────────────────────────────────────────────────────────────────────────── function OrderForm({ presetTier, onClear }) { const tierMap = { single: { qty: 1, price: 5 }, five: { qty: 5, price: 22 }, ten: { qty: 10, price: 40 }, }; const [tier, setTier] = useS2(presetTier || 'five'); const [name, setName] = useS2(''); const [contact, setContact] = useS2(''); const [carrier, setCarrier] = useS2(''); const [pay, setPay] = useS2('Venmo'); const [pickup, setPickup] = useS2(''); const [notes, setNotes] = useS2(''); const [submitted, setSubmitted] = useS2(false); const [done, setDone] = useS2(false); const [orderErr, setOrderErr] = useS2(false); React.useEffect(() => { if (presetTier) setTier(presetTier); }, [presetTier]); const total = tierMap[tier].price; const qty = tierMap[tier].qty; // Detect if contact looks like a phone number vs email const contactIsPhone = contact.length > 0 && !contact.includes('@') && /\d{7,}/.test(contact.replace(/\D/g,'')); const carriers = [ { value: 'att', label: 'AT&T' }, { value: 'tmobile', label: 'T-Mobile' }, { value: 'verizon', label: 'Verizon' }, { value: 'visible', label: 'Visible' }, { value: 'cricket', label: 'Cricket' }, { value: 'metro', label: 'Metro by T-Mobile' }, { value: 'boost', label: 'Boost Mobile' }, { value: 'fi', label: 'Google Fi' }, { value: 'other', label: 'Other / Skip text' }, ]; const submit = (e) => { e.preventDefault(); setSubmitted(true); setOrderErr(false); fetch('/order.php', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ name, contact, carrier, pack: `${qty} bar${qty > 1 ? 's' : ''} (${tier})`, price: String(total), payment: pay, pickup: pickup || '—', notes: notes || '—', }), }) .then(r => r.json()) .then(d => { if (d.success) { setDone(true); } else { setOrderErr(true); setSubmitted(false); } }) .catch(() => { setOrderErr(true); setSubmitted(false); }); }; const inputStyle = { width: '100%', padding: '14px 16px', borderRadius: 10, border: '1px solid var(--line-strong)', background: 'var(--paper)', fontFamily: 'var(--sans)', fontSize: 15, color: 'var(--ink)', outline: 'none', }; const labelStyle = { fontFamily: 'var(--mono)', fontSize: 11, letterSpacing: '.14em', textTransform: 'uppercase', color: 'var(--ink-mute)', display: 'block', marginBottom: 8 }; return (
Order

Reserve your bars.

Send your order through the form. Ela will confirm by text within a few hours and arrange pickup in Frisco.

How it works
    {[ ['Send order', 'Fill the form. Pick your pack and payment method.'], ['Get confirmed', 'Ela replies with pickup window and total.'], ['Pickup + pay', 'Stop by the porch. Pay on arrival or in advance.'], ].map((s, i) => (
  1. 0{i+1}
    {s[0]}
    {s[1]}
  2. ))}
{Object.entries(tierMap).map(([k, v]) => ( ))}
setName(e.target.value)} required placeholder="Jordan Reeves" />
{ setContact(e.target.value); setCarrier(''); }} required placeholder="(214) 555-0102" />

Enter a phone number to get a text confirmation, or an email address for an email confirmation.

{contactIsPhone && (

Needed to send your text confirmation. "Other" skips the text.

)}
{['Venmo','Zelle','Apple Pay','PayPal','Cash'].map(p => ( ))}
setPickup(e.target.value)} placeholder="Saturday afternoon, or anytime this week" />