The About page gives visitors a deeper introduction to the developer behind the portfolio. A decorative sigil SVG anchors the top of the page, followed by a multi-line biographical text that animates into view as the user scrolls. Three thematic stat counters — hours spent, hexes cast, and familiars befriended — sit below the bio as a playful alternative to the usual “years of experience” badges.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/web-weaver/llms.txt
Use this file to discover all available pages before exploring further.
Route
#/about or click the About link in the site navigation to reach this page.
Visual Layout
Sigil SVG
A decorative magical sigil rendered as an inline SVG at the top of the section. Sets the mystical tone before the reader reaches the text.
Animated Bio
The biographical paragraph is broken into individual lines. Each line fades and slides up into view as it enters the viewport, powered by Framer Motion’s
whileInView prop.Stat Counters
Three labelled counters displayed in a horizontal row: Hours Spent Stirring, Hexes Cast, and Familiars Befriended. Each counter is a large numeral with a caption beneath it.
Full-Width Layout
Content is centred in a single column with generous vertical padding. The dark background and subdued typography keep focus on the text.
Data & Configuration
All bio content and stat values live inassets/main.js. The bio is stored as an array of strings — one string per rendered line — so that Framer Motion can stagger the entrance animations line by line.
Customisation
Edit the bio copy
Open
assets/main.js and locate the P array. Each string in the array is one animated line. You can add, remove, or reorder lines freely. Keep individual strings at a comfortable reading length — very long strings may wrap awkwardly on mobile viewports.Update the stat counters
Find the
aboutStats array. Change value to your real figures and label to matching captions. You can also add or remove stat objects — the layout will reflow automatically.Replace the sigil
The sigil SVG is embedded inside the
SigilSVG component. Open that component file and replace the <path> data with your own SVG artwork. Keep viewBox consistent so sizing stays predictable.Key Components
| Component | Description | Docs |
|---|---|---|
Sigil | Decorative inline SVG sigil rendered at the top of the section | Sigil |
AnimatedBio | Maps over the P array and renders each line with a Framer Motion scroll-triggered entrance | Internal |
StatCounter | Displays a single numeric stat with a label; three instances are rendered side by side | Internal |
Interactive Behaviour
Animated paragraph reveal on scroll
Animated paragraph reveal on scroll
Each line in the
P array is wrapped in a Framer Motion motion.p element. The whileInView prop triggers an opacity fade and a y translate from 20px to 0 as each line enters the visible area of the browser. Lines are staggered so they appear one after another rather than all at once.The animation only fires once per page visit because viewport={{ once: true }} is set on the motion container. To allow the animation to replay every time the element re-enters the viewport, remove that prop.Stat counters
Stat counters
The three stat counters are purely presentational — they display static values from the
aboutStats array. They do not count up with an animated number transition by default. To add a count-up effect, integrate a library such as react-countup and trigger it onViewportEnter.The bio lines in array
P are rendered verbatim. Line breaks in the browser are controlled by the container width, not by the array boundaries — each array item is a separate <p> element, so there will always be a paragraph break between items.