SummoningForm is the contact form component — a three-field form wrapped in an animated GlowFrame, with styled labels referencing rune icons. It ships with a mocked submission handler that you replace with a real form backend once you’re ready to go live. All state is managed internally; the component takes no props.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/sys.witch-v2/llms.txt
Use this file to discover all available pages before exploring further.
Fields
| Field ID | Label | Type | Required |
|---|---|---|---|
name | Entity Identifier | text | Yes |
email | Return Frequency | email | Yes |
message | Transmission Payload | textarea | Yes |
font-mono uppercase tracking — consistent with the portfolio’s occult-terminal aesthetic.
Submission States
SummoningForm cycles through three visual states during the submit flow:- Idle — The full form is visible and interactive. The submit button reads “Send The Signal.”
- Submitting — The button label switches to “Channeling…”, the button pulses with
animate-pulse, and the button isdisabledto prevent duplicate submissions. - Success — The form is replaced by a confirmation view: a
Sigilwith idrune-4, size64, colormagenta, the heading “Signal Transmitted”, and the subtext “The message has entered the void.” The confirmation view animates in from{ opacity: 0, scale: 0.9 }to{ opacity: 1, scale: 1 }. After 3 seconds, the form resets to idle.
Mock vs Real Submission
The component ships with a mock handler that simulates the submit delay and success state without calling any backend:fetch call when you’re ready. Here’s an example using Formspree:
SummoningForm accepts no props — all state is managed internally. To pre-fill fields or handle the response differently, edit the component source at
components/contact/SummoningForm.js.