TheDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/dyed-in-the-wool/llms.txt
Use this file to discover all available pages before exploring further.
Home component (internally function G) is the first thing visitors see. It renders a full-viewport hero section that communicates the portfolio’s handcrafted aesthetic through layered motion — drifting color blobs, an SVG gradient headline, and a spiral tie-dye canvas backdrop.
What It Displays
The layout stacks four visual layers from back to front:- TieDyeBackground — a full-bleed canvas element rendered with
variant="spiral"andopacity={0.6}, giving the page its signature swirling texture. - Animated blobs — three absolutely-positioned
divelements (dye-light,dye-magenta,dye-ocean) that slowly drift in the background using the global CSSanimate-blobkeyframe animation. Each blob has a staggeredanimationDelay(0 s, 2 s, 4 s). - Headline — the large text “DYED IN / THE WOOL” is rendered with an SVG
linearGradientoverlay that transitions from teal → magenta → ocean, clipped over the “DYED IN” span. The entire headline animates in as one unit via a scale + opacity spring. - Tagline + CTA — the subheading “Hand-dyed code, made in small batches” fades in above the headline, followed by a “Dive In” button that navigates to
/projects.
Content Data
The copy lives inline inside the component. To update it, locate the strings directly in the component body:Animation Details
| Element | Technique | Details |
|---|---|---|
Blob 1 (dye-light) | CSS animate-blob keyframe | Drifts on an infinite CSS animation cycle |
Blob 2 (dye-magenta) | CSS animate-blob keyframe | animationDelay: "2s" for offset phase |
Blob 3 (dye-ocean) | CSS animate-blob keyframe | animationDelay: "4s", slower feel |
Headline (h1) | Framer Motion initial → animate | scale: 0.9 → 1, opacity: 0 → 1 via spring with bounce: 0.4 |
| SVG gradient | Static SVG linearGradient | Fixed color stops — teal #2dd4bf, magenta #db2777, ocean #0369a1; no animation |
| Tagline | Framer Motion initial → animate | opacity: 0 → 1, y: 20 → 0, delayed 200 ms |
| Body copy | Framer Motion initial → animate | opacity: 0 → 1, delayed 600 ms |
| CTA button | Framer Motion initial → animate | opacity: 0 → 1, y: 20 → 0, delayed 800 ms; whileHover: scale 1.05, whileTap: scale 0.95 |
Customization
Change the tagline or body copy Locate the string literals in the component and replace them directly:navigate('/projects') via React Router. Update the path string to redirect elsewhere:
TieDyeBackground accepts a variant prop. The Home page uses "spiral" — switch to "bullseye" or "crumple" for a different texture:
animate-blob CSS keyframe. Adjust the animation-duration in the stylesheet to slow or speed up the drift:
The three blob colors (
dye-light, dye-magenta, dye-ocean) are CSS custom-property utility classes. Their base colors are defined in the global stylesheet — changing them there will update the blobs on every page that uses them.