Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/digital-alchemy/llms.txt
Use this file to discover all available pages before exploring further.
SpellCircle is the centrepiece of the portfolio’s home (/) route. It renders a large square div (max-width 2xl, 1:1 aspect ratio) centred in the hero section and fills it with a Framer Motion–animated SVG that draws itself stroke-by-stroke before unveiling the site owner’s name and title.
The component takes no props — it is self-contained and purely decorative/introductory.
Visual Structure
The SVG viewport is fixed at400 × 400 with a drop-shadow filter that emits a soft turquoise glow (rgba(64,224,208,0.4)). Inside it, four elements are sequentially drawn:
| Layer | Element | Color | Notes |
|---|---|---|---|
| 1 | Outer circle (r=180) | #40E0D0 (60% opacity) | Solid stroke, strokeWidth=2 |
| 2 | Inner dashed circle (r=160) | #008080 | strokeDasharray="10 5", strokeWidth=1 |
| 3 | 10-pointed star polygon | #40E0D0 (80% opacity) | strokeWidth=1.5, fill none |
| 4 | Five anchor nodes | #40E0D0 stroke / #0f0c29 fill | r=6, spaced 72° apart at r=180 |
Animation System
The component uses a single Framer Motionvariants object applied to every motion.* SVG element via the custom prop:
custom value (0–4+) that staggers its draw delay. The full circle completes first, then the dashed ring, then the star, then each of the five nodes in quick succession.
After all SVG elements are drawn (approximately 3.5 s), the central text block fades in and de-blurs:
<h1>—"Morgana Ash"infont-serif, size5xl/7xl,text-parchment, with atext-glowutility class<p>—"Creative Developer & Digital Alchemist",text-turquoise,uppercase, wide letter-spacing
Usage in Context
SpellCircle is composed inside the HeroSection helper in main.js. Four Candle components are absolutely positioned around it as atmospheric decoration:
SpellCircle has no interactive states — it is a purely presentational entrance animation. It renders once on mount and does not reset on re-render.Implementation Notes
- The SVG
initial="hidden"/animate="visible"pair is set on themotion.svgparent, which propagates the variant context to everymotion.circle,motion.polygon, andmotion.circlechild. - The five anchor nodes are generated with an
.map()over[0, 72, 144, 216, 288]degrees, converting each to radians to compute(cx, cy)coordinates on ther=180circumference. pointer-events-noneis set on the surrounding herodivso the candles behind the circle never intercept mouse events.