Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/v-doom/llms.txt
Use this file to discover all available pages before exploring further.
RuneCircle is a decorative inline SVG component that renders a layered occult sigil — concentric circles, a hexagram formed from two overlapping triangles, and four cardinal cross marks — and animates each element drawing itself into existence using Framer Motion’s pathLength spring transitions. It is used on the Home page as a large, semi-transparent background glyph positioned behind the hero heading.
Props
Additional Tailwind CSS classes applied to the outer
<div> wrapper. Used to position, scale, and control the opacity of the entire sigil. The SVG itself always fills its container at max-w-md and opacity-80.Usage
The component is used once on the Home page, centered and scaled behind the hero heading:| Class | Effect |
|---|---|
absolute | Takes the element out of flow so it sits behind the heading text |
top-1/2 left-1/2 | Anchors the top-left corner to the center of the parent |
-translate-x-1/2 -translate-y-1/2 | Shifts it back by half its own size, perfectly centering it |
scale-150 | Scales up to 1.5× on mobile so it fills the hero area |
md:scale-[2] | Scales to 2× on medium screens and above |
opacity-30 | Renders at 30% opacity — visible but clearly subordinate to the heading |
pointer-events-none | Passes all mouse and touch events through to content underneath |
The parent element must have
position: relative (or any non-static position) for absolute to work correctly. On the Home page this is handled by the hero section wrapper.SVG Structure
The SVG is400×400 with a viewBox="0 0 400 400", making it fully resolution-independent. It is composed of five distinct visual layers, each animated independently:
Outer violet circle
A solid-stroke circle (
r=190) in violet (#6B3FA0) with a soft purple glow via drop-shadow. This is the primary bounding ring of the sigil.Inner amber dashed circle
A dashed circle (
r=170, strokeDasharray="5 5") in amber (#F5B25B). The dash pattern gives the impression of segmented runic script.Upward triangle
A large equilateral triangle in bone (
#EDE6D3) pointing upward, drawn as a path from apex (200, 30) to base corners (347, 285) and (53, 285).Downward triangle
An inverted triangle in bone (
#EDE6D3) pointing downward. Overlaid on the upward triangle, the two together form a hexagram (six-pointed star).<div> sits behind the SVG and fades in after the draw animation completes, adding depth:
Animation
Each SVG path uses Framer Motion’spathLength variant to draw itself from nothing (pathLength: 0, opacity: 0) to fully visible (pathLength: 1, opacity: 1). A custom prop staggers the start time of each element:
custom value):
| Element | custom | Approx. start |
|---|---|---|
| Outer violet circle | 0 | 1.0 s |
| Inner amber dashed circle | 1 | 1.5 s |
| Upward triangle | 2 | 2.0 s |
| Downward triangle | 2.5 | 2.25 s |
| Cardinal marks | 3.0 – 3.6 | 2.5 – 2.8 s |
| Background glow | — | 3.0 s (separate) |
Customizing the Animation
Change draw speed — adjustduration in the pathLength transition:
custom:
bounce value (0 = no overshoot, 1 = maximum spring bounce):