Registration Payment

import React, { useState, useEffect } from "react";

export default function SweepstakesApp() {
const [name, setName] = useState("");
const [email, setEmail] = useState("");
const [phone, setPhone] = useState("");
const [address, setAddress] = useState("");
const [zip, setZip] = useState("");
const [dob, setDob] = useState("");
const [accepted, setAccepted] = useState(false);
const [paymentMethod, setPaymentMethod] = useState("Free Entry");
const [termsOpen, setTermsOpen] = useState(false);
const [submitting, setSubmitting] = useState(false);
const [message, setMessage] = useState(null);
const [leads, setLeads] = useState(() => {
try {
const raw = localStorage.getItem("demo_sweepstakes_leads");
return raw ? JSON.parse(raw) : [];
} catch (e) {
return [];
}
});

useEffect(() => {
localStorage.setItem("demo_sweepstakes_leads", JSON.stringify(leads));
}, [leads]);

function validateForm() {
if (!name.trim()) return "Please enter your full name.";
if (!/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(email)) return "Enter a valid email.";
if (!phone.trim()) return "Please enter your phone number.";
if (!address.trim()) return "Please enter your full mailing address.";
if (!accepted) return "You must accept the Official Rules & Privacy Policy to enter.";
if (!isEligibleDOB(dob)) return "You must be 18 years or older to enter.";
return null;
}

function isEligibleDOB(dobStr) {
if (!dobStr) return false;
const dobDate = new Date(dobStr);
if (isNaN(dobDate)) return false;
const ageDifMs = Date.now() - dobDate.getTime();
const ageDate = new Date(ageDifMs);
const age = Math.abs(ageDate.getUTCFullYear() - 1970);
return age >= 18;
}

async function submitLead(e) {
e && e.preventDefault();
setMessage(null);
const error = validateForm();
if (error) {
setMessage({ type: "error", text: error });
return;
}
setSubmitting(true);

const payload = {
name: name.trim(),
email: email.trim().toLowerCase(),
phone: phone.trim(),
address: address.trim(),
zip: zip.trim(),
dob: dob,
paymentMethod,
submittedAt: new Date().toISOString(),
};

try {
setLeads((prev) => [payload, ...prev].slice(0, 10000));
setMessage({ type: "success", text: "Thanks! Your entry has been received. Check your email for confirmation." });
setName("");
setEmail("");
setPhone("");
setAddress("");
setZip("");
setDob("");
setPaymentMethod("Free Entry");
setAccepted(false);
} catch (err) {
console.error(err);
setMessage({ type: "error", text: "We couldn't process your entry. Please try again later." });
} finally {
setSubmitting(false);
}
}

return (

{/* LEFT: Hero */}

logo

Win a Dream Prize — Enter Now

No purchase necessary. Open to legal residents aged 18+. Official Rules apply.

One entry is FREE. Additional entries can be purchased for $9.99 each.

  • • Simple, fast entry — one click to enter.
  • • Secure: CAPTCHA & fraud detection recommended.
  • • Winner notified by email + phone.

{/* RIGHT: Form */}


setName(e.target.value)} className="mt-1 block w-full rounded-md border-gray-300 shadow-sm p-2" placeholder="Jane Doe" />

setPhone(e.target.value)} className="mt-1 block w-full rounded-md border-gray-300 shadow-sm p-2" placeholder="(555) 555-5555" />

setEmail(e.target.value)} className="mt-1 block w-full rounded-md border-gray-300 shadow-sm p-2" placeholder="you@example.com" />