The Contact page uses the Signal Transmitter theme — sending a message is framed as broadcasting a signal into the cosmos. A decorative animated beam pulses outward when the form is submitted, and the form transitions into a SIGNAL RECEIVED confirmation state once the submission is handled. Three social links (GitHub, LinkedIn, email) sit beneath the form as secondary contact options.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/aurora-borealis/llms.txt
Use this file to discover all available pages before exploring further.
What the Page Displays
The/contact route contains three parts:
- Contact form — three fields (name, email, message) with a submit button.
- Animated signal beam — a radial burst animation that plays on form submission.
- SIGNAL RECEIVED state — the form is replaced by a confirmation message after a successful submit.
Contact Form Fields
type="email" attribute on the email field also provides basic format validation without JavaScript.
Animated Signal Beam
When the form is submitted, asignalFired state variable is set to true, triggering a Framer Motion AnimatePresence animation:
- The beam starts at
scale: 0(a point at the center of the submit button) and expands toscale: 4while fading to transparent over 1.4 seconds. onAnimationCompletefires after the beam fades, settingshowConfirmationtotrueand revealing the confirmation message.- To adjust the beam’s spread speed, change
duration. To change the color of the beam, edit thebackgroundproperty on.signal-beamin the CSS (default is a radial gradient of#60a5fa→ transparent).
SIGNAL RECEIVED Confirmation State
After the beam animation completes, the form is replaced by a confirmation panel:<h2> text and <p> text inside the signal-received block. The “Send another signal” button calls resetForm, which sets both signalFired and showConfirmation back to false and clears the form fields.
Form Submission Handling
Integration Options
| Service | Approach |
|---|---|
| Formspree | Replace handleSubmit with a fetch POST to your Formspree endpoint. Free tier available. |
| EmailJS | Call emailjs.send() inside handleSubmit using your service, template, and public key. |
| Netlify Forms | Add netlify attribute to the <form> tag if deploying on Netlify — no code changes needed. |
| Custom API | POST the form data to your own Express/Next.js/Edge Function route and send via Nodemailer or Resend. |
Social Links
Below the form, three social links are rendered from aCONTACT_LINKS array:
href values for each platform. For the email link, change you@yourdomain.com to your actual address. The icon values are Lucide React components (Github, Linkedin, and Mail from lucide-react) imported at the top of main.js — swap them for any other Lucide icon to add or change platforms (e.g., Twitter/X, Dribbble).
Customization Checklist
Connect a form backend
Integrate Formspree, EmailJS, Netlify Forms, or a custom API endpoint into the
handleSubmit function before going live.Update social links
Replace all three
href values in CONTACT_LINKS with your real profile URLs and email address.Customize confirmation copy
Edit the
SIGNAL RECEIVED heading and follow-up paragraph to match your preferred tone and response-time commitment.Adjust beam animation timing
Change
duration on the signal beam’s transition to speed up or slow down the visual feedback on submit.Related Pages
Home
The hero page where social links are also surfaced as secondary CTAs.
About
The Flight Log career narrative — context visitors often read before reaching out.