Skip to content

Contact Page

File: apps/landing/src/app/components/contact-page.tsx Route: /contact


Overview

The contact page is a full-featured form that submits inquiries to a Supabase Edge Function (send-contact-email).


Form Fields

FieldComponentType
Inquiry TypeRadioGroup + RadioGroupItemRadio selection
Full NameInputText
Work EmailInputEmail
PhoneInputTel
CompanyInputText
Job TitleInputText
LocationSelectDropdown (US cities)
MessageTextareaMulti-line

Shared UI Used

ComponentImport Source
Input@prosper/shared/components/ui/input
Textarea@prosper/shared/components/ui/textarea
Label@prosper/shared/components/ui/label
Button@prosper/shared/components/ui/button
RadioGroup, RadioGroupItem@prosper/shared/components/ui/radio-group
Select, SelectTrigger, SelectContent, SelectItem, SelectValue@prosper/shared/components/ui/select
PageHeaderLocal

State Management

  • Local useState for form data, submission state, success/error
  • No form library (react-hook-form) — manual handleInputChange

Styling Details

  • Labels use uppercase tracking: text-sm font-medium uppercase tracking-wider text-muted-foreground
  • Form layout: space-y-6 with grid-cols-2 for paired fields on desktop
  • Submit button: full-width on mobile, auto on desktop

Submission

const { data, error } = await supabase.functions.invoke("send-contact-email", {
body: { ...formData, inquiry_type: inquiryType },
});

On success, shows a thank-you message with a link back to the home page.