The Contact page distils the portfolio’s theme down to its most interactive point: a form wrapped in ceremony. Rather than a plain contact form, theDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/spell-index/llms.txt
Use this file to discover all available pages before exploring further.
SummoningForm component places the input fields at the centre of an animated summoning circle drawn in SVG. The circle reacts to user input — geometric elements appear progressively as each field is filled in, and the outer ring animates its stroke-dashoffset to reflect overall form completion. It is both a functional form and a piece of interactive illustration.
Route
| Nav label | Plain label | Path |
|---|---|---|
| Send a Raven | Contact | /contact |
Page header
- Heading (h1):
Send a Raven— Cinzel typeface, amber - Subheading:
Complete the circle to initiate contact— teal, spaced uppercase
justify-center) in addition to being horizontally centred, making it the only full-screen-centred layout in the portfolio.
SummoningForm
The
SummoningForm component features a summoning circle visual design. The SVG circle is drawn behind the form fields and updates in real time as the user fills in each input — completing the circle as the ritual progresses.Form fields
The form contains three required inputs, each with a witchy label:| Field label | HTML type | Placeholder |
|---|---|---|
| True Name | text | Your true name (or developer alias) |
| Astral Address | email | you@realm.com |
| Incantation | textarea (4 rows) | Whisper your message into the void... |
Submit button
The submit button readsCast Spell with a Send icon (Lucide send). While submitting it changes to Summoning... and the icon is hidden. The button is disabled until all three fields contain a value (completedFields < 3) or while submission is in progress.
Summoning circle SVG
The circle SVG is positioned absolutely behind the form, rendering at 150% of the form width for an oversized, atmospheric effect. It uses three layers that activate progressively:First field filled (completedFields ≥ 1)
An upward-pointing triangle path appears:
M 100 10 L 178 145 L 22 145 Z in teal, stroke-width 1. Fades in over 1 second.Second field filled (completedFields ≥ 2)
A downward-pointing triangle path appears:
M 100 190 L 22 55 L 178 55 Z in teal, stroke-width 1. Fades in over 1 second, forming a Star of David / hexagram together with the first triangle.r="90") is always visible and animates its stroke-dashoffset from 565 down toward 0 as form completion rises from 0% to 100%:
Success state
On successful submission (after a simulated 2-second delay), the form fields are replaced by a full-overlay success screen that stays visible for 5 seconds:- A dashed amber circle rotates continuously (
rotate: 360, duration 10 s, infinite) - Inside it, a teal blur glow pulses
- Below it, the message “Message Sent into the Ether” appears in Cinzel amber
Testimonials note
The/testimonials route is a separate, valid page (nav label: “Testimony”) that renders three GhostQuote components in a flex-wrap layout. It does not share any UI with the Contact page but is positioned adjacently in the navigation order.
Sarah Jenkins
“I’ve never seen code written so cleanly. It was like watching a master illusionist at work. The bugs simply vanished.”Product Manager @ MysticTech
David Chen
“They took our chaotic, tangled legacy system and wove it into a beautiful, performant React application. Absolute sorcery.”CTO @ Ethereal Agency
Elena Rodriguez
“Not only did they deliver the project ahead of schedule, but the animations were so smooth I thought my screen was melting in a good way.”Founder @ Startup Void