// Contact — Start a project. Sector-qualified enquiry with file-upload affordance. function Contact({ navigate, prefilledProject }) { const data = window.DS_DATA; const [enquiryType, setEnquiryType] = useState("new-project"); const [sector, setSector] = useState(prefilledProject ? data.projects.find((p) => p.id === prefilledProject)?.sector || "" : ""); const [budget, setBudget] = useState(""); const [files, setFiles] = useState([]); const [submitted, setSubmitted] = useState(false); const [form, setForm] = useState({ name: "", email: "", phone: "", company: "", location: "", timeline: "", message: "", }); const [errors, setErrors] = useState({}); const enquiryTypes = [ { id: "new-project", label: "New project" }, { id: "vendor", label: "Vendor" }, { id: "careers", label: "Careers" }, { id: "media", label: "Press / media" }, { id: "general", label: "General" }, ]; const budgets = [ "Under $250k", "$250k — $1M", "$1M — $5M", "$5M — $20M", "$20M+", "Prefer not to say", ]; const projectTypes = { hospitality: ["Restaurant", "Café", "Hotel public realm", "Bar / lounge"], commercial: ["Office HQ", "Retail / showroom", "Co-working"], residential: ["Villa (ground-up)", "Villa (fit-out)", "Penthouse", "Apartment"], healthcare: ["Clinic", "Specialist medical"], wellness: ["Spa", "Wellness centre"], tower: ["Mixed-use", "Residential tower", "Commercial tower"], }; const onFileDrop = (e) => { e.preventDefault(); const list = Array.from(e.dataTransfer.files); setFiles((f) => [...f, ...list]); }; const onFileChange = (e) => { const list = Array.from(e.target.files); setFiles((f) => [...f, ...list]); }; const submit = (e) => { e.preventDefault(); const errs = {}; if (!form.name) errs.name = "required"; if (!form.email) errs.email = "required"; if (!/.+@.+\..+/.test(form.email) && form.email) errs.email = "format"; if (enquiryType === "new-project" && !sector) errs.sector = "required"; if (enquiryType === "new-project" && !form.message) errs.message = "required"; setErrors(errs); if (Object.keys(errs).length === 0) setSubmitted(true); }; if (submitted) { return (
A sector lead will be in touch within two working days. If your brief is urgent, call us on {data.brand.phone}.
The more detail you share — scope, programme, drawings — the faster a sector lead can come back with a real build approach. We reply within two working days.