/* ATX Decon — About + Contact pages */ /* ========================= ABOUT ========================= */ function AboutPage({ go }) { const values = [ { icon: "fa-user-shield", h: "Care without judgment", p: "We handle every situation with respect and zero judgment — your circumstances stay yours." }, { icon: "fa-user-secret", h: "Total discretion", p: "Unmarked vehicles, confidential service, and respect for your privacy and your neighbors." }, { icon: "fa-certificate", h: "Certified rigor", p: "IICRC-certified technicians following industry-standard protocols on every single job." }, { icon: "fa-location-dot", h: "Local accountability", p: "We live here. We're your neighbors, and our name is on every job we do." }, ]; const stats = [ { n: "24/7", l: "Live response, every day of the year" }, { n: "45 min", l: "Average metro Austin response time" }, { n: "IICRC", l: "Certified, continually trained technicians" }, { n: "100%", l: "Licensed, bonded & insured" }, ]; return (
ABOUT US

A local team for Austin's hardest moments.

ATX Decon is an Austin-based decontamination and remediation company built on a simple belief: no one should have to face a biohazard, an infestation, or a hoarding situation alone — or be judged for it.

OUR STORY

Built to do the work others can't — with care.

We started ATX Decon because Austin families deserved a remediation company that answered the phone with a real, understanding voice — not an answering service — and showed up fast, fully equipped, and genuinely kind.

Today we handle the cleanups most people never think about until they need one: biohazard and trauma scenes, rodent and pest infestations, and hoarding environments. We bring certified expertise to the technical side, and patience and discretion to the human side.

WHAT WE STAND FOR

Four things we never compromise on.

{values.map((v, i) => (

{v.h}

{v.p}

))}
CREDENTIALS

Certified, insured, and accountable.

The credentials matter because the work is serious. Here's what stands behind every ATX Decon job.

); } /* ========================= CONTACT ========================= */ function ContactPage({ go }) { const [form, setForm] = React.useState({ name: "", phone: "", email: "", service: "", urgency: "soon", message: "" }); const [errors, setErrors] = React.useState({}); const [sent, setSent] = React.useState(false); const set = (k, v) => { setForm((f) => ({ ...f, [k]: v })); if (errors[k]) setErrors((e) => ({ ...e, [k]: null })); }; const validate = () => { const e = {}; if (!form.name.trim()) e.name = "Please tell us your name."; if (!form.phone.trim()) e.phone = "We need a number to reach you."; else if (form.phone.replace(/\D/g, "").length < 10) e.phone = "That doesn't look like a full phone number."; if (form.email.trim() && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(form.email)) e.email = "Please check this email address."; if (!form.service) e.service = "Let us know what you need help with."; if (!form.message.trim()) e.message = "A few words about the situation helps us prepare."; return e; }; const submit = (ev) => { ev.preventDefault(); const e = validate(); setErrors(e); if (Object.keys(e).length === 0) { setSent(true); window.scrollTo({ top: 0, behavior: "smooth" }); } }; const urgencyOpts = [ { v: "emergency", label: "It's an emergency", note: "Please call us" }, { v: "soon", label: "Soon — within days", note: "" }, { v: "exploring", label: "Just exploring", note: "" }, ]; return (
CONTACT US

Let's talk. We're here to help.

For an active emergency, call us — a specialist answers 24/7. For everything else, send a few details and we'll respond quickly with next steps and a free estimate.

24/7 EMERGENCY LINE {PHONE_DISPLAY}
HOURS
Open 24 / 7 / 365

SERVICE AREA
Austin & Central Texas

EMAIL
{EMAIL}

IICRC Insured Discreet
{sent ? (

Thank you, {form.name.split(" ")[0] || "we've got it"}.

Your request is in. An ATX Decon specialist will reach out shortly. If this becomes urgent in the meantime, please call us directly — we're available 24/7.

) : (
REQUEST A FREE ESTIMATE

Tell us what's going on.

Everything you share is confidential. There's no charge to talk.

set("name", e.target.value)} placeholder="First and last name" /> set("phone", e.target.value)} placeholder="(512) 000-0000" inputMode="tel" />
set("email", e.target.value)} placeholder="you@email.com" inputMode="email" />
{urgencyOpts.map((o) => ( ))}
Private & confidential. We never share your information.
)}
); } function Field({ label, hint, error, children }) { return ( ); } Object.assign(window, { AboutPage, ContactPage });