Refactor the monolithic main-site contact page into a reusable <ContactForm> component that encapsulates the Turnstile widget, cooldown timer, email-verification flow, and tRPC submission. The main /contact route becomes a thin wrapper that supplies the site-specific disclaimer subline and Life-and-Lineage FAQ accordion (now exported as <LineageContactQuestions> for reuse). Add per-subdomain contact routes (gaze, inputhalo, lineage, nessa) that render the shared component, with site-aware subject prefix, recipient, heading, and PageHead metadata derived via useSite() from CONTACT_CONTEXT. Introduce src/lib/contact-config.ts (with tests) centralizing the contact recipient/sender addresses and subject building. The misc.sendContactRequest mutation accepts an optional subjectPrefix (defaulting to "freno.me") so inbound call sites continue emitting byte-identical legacy subjects, while subdomain submissions route distinct subjects (e.g. "[Gaze] Contact Request") to the same inbox.
21 lines
834 B
TypeScript
21 lines
834 B
TypeScript
import { ContactForm } from "~/components/ContactForm";
|
|
|
|
/**
|
|
* InputHalo contact page (`inputhalo.freno.me/contact`).
|
|
*
|
|
* Thin wrapper over the shared `<ContactForm>` (task 09). Site awareness —
|
|
* subject prefix `[InputHalo]`, recipient label, heading, and PageHead
|
|
* metadata — is derived from `useSite()` inside the component via
|
|
* `CONTACT_CONTEXT.inputhalo`, so this route needs no explicit props.
|
|
*
|
|
* vercel.json rewrites `inputhalo.freno.me/*` → the internal `/inputhalo/*`
|
|
* route prefix; the browser URL stays `inputhalo.freno.me/contact`.
|
|
*
|
|
* Acceptance: `inputhalo.localhost:3000/contact` renders the contact form
|
|
* with InputHalo branding; submissions email `michael@freno.me` with subject
|
|
* `[InputHalo] Contact Request`.
|
|
*/
|
|
export default function InputHaloContactPage() {
|
|
return <ContactForm />;
|
|
}
|