/* TDD — Contact page + App root */ const { useState: uS, useEffect: uE, useRef: uR } = React; /* ---------------- CONTACT ---------------- */ function ContactPage({ audience, setAudience, preferredTab }) { useReveal(); const d = window.TDD_DATA; const [tab, setTab] = uS(preferredTab || "visit"); const [submitted, setSubmitted] = uS(false); const [form, setForm] = uS({ name: "", email: "", phone: "", company: "", role: "", date: "", projectType: "Residential", brands: "", message: "", samples: "", }); uE(() => { if (preferredTab) setTab(preferredTab); }, [preferredTab]); function up(k) { return e => setForm(f => ({ ...f, [k]: e.target.value })); } function submit(e) { e.preventDefault(); setSubmitted(true); window.scrollTo({ top: 0, behavior: "smooth" }); } function reset() { setSubmitted(false); setForm(f => ({ ...f, message: "", brands: "", samples: "" })); } const tabs = [ { key: "visit", label: "Book a Studio Visit" }, { key: "samples", label: "Request Samples" }, { key: "trade", label: audience === "trade" ? "Project Enquiry" : "Project Enquiry" }, { key: "brochure", label: "Brochure" }, ]; const labelByTab = { visit: "Booked.", samples: "Samples requested.", trade: "Enquiry received.", brochure: "Brochure on its way.", }; const bodyByTab = { visit: "We'll reply within one studio day to confirm a time. If you have a project brief, hit reply on our message — we'll have the relevant racks pulled before you arrive.", samples: "Cuts are dispatched within 48 hours where stock allows; larger lengths follow. We'll send a tracking note once your samples leave the studio.", trade: "A senior member of the studio will respond within one business day. For procurement teams: please reply with the project schedule and we'll route accordingly.", brochure: "The current TDD library brochure is on its way to your inbox. Per-brand brochures available on the brand pages or by request.", }; return (
Choose what you need. We route trade and private enquiries through the same studio team — the form only changes what we have ready when you arrive or write back.
{bodyByTab[tab]}