"use client"; import { useState, useRef, useEffect } from "react"; import { Container } from "@/components/layout/Container"; import { Button } from "@/components/ui/Button"; import { FormField } from "@/components/ui/FormField"; import { KNOWN_SCHOOLS } from "@/data/schools"; export default function ContactForm() { const [name, setName] = useState(""); const [email, setEmail] = useState(""); const [phone, setPhone] = useState(""); const [institution, setInstitution] = useState(""); const [institutionOpen, setInstitutionOpen] = useState(false); const [message, setMessage] = useState(""); const [submitted, setSubmitted] = useState(false); const institutionRef = useRef(null); useEffect(() => { function handleClickOutside(e: MouseEvent) { if (institutionRef.current && !institutionRef.current.contains(e.target as Node)) { setInstitutionOpen(false); } } document.addEventListener("mousedown", handleClickOutside); return () => document.removeEventListener("mousedown", handleClickOutside); }, []); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); // TODO: Replace with Airtable form embed once URL is available setSubmitted(true); }; if (submitted) { return (

Thank you!

Your message has been sent.

); } const inputClasses = "w-full rounded-lg border border-border bg-white px-4 py-3 text-sm text-foreground placeholder:text-muted-foreground focus:border-brand focus:outline-none focus:ring-2 focus:ring-brand/20"; return (

Contact us.

Email:{" "} contact@micromelon.com.au

setName(e.target.value)} /> setEmail(e.target.value)} /> setPhone(e.target.value)} /> {/* School search combobox */}
{ setInstitution(e.target.value); setInstitutionOpen(true); }} onFocus={() => setInstitutionOpen(true)} placeholder="Search or type your school name" className={inputClasses} autoComplete="off" /> {institutionOpen && institution.length > 0 && (() => { const query = institution.toLowerCase(); const matches = KNOWN_SCHOOLS.filter((s) => s.toLowerCase().includes(query)); const exactMatch = KNOWN_SCHOOLS.some((s) => s.toLowerCase() === query); if (matches.length === 0 && !exactMatch) return null; if (matches.length === 1 && matches[0].toLowerCase() === query) return null; return (
    {matches.map((school) => (
  • ))}
); })()}
setMessage(e.target.value)} />
); }