The Lab replaces the conventional skills bar chart with something considerably more dramatic: a row of SVG potion bottles, each one filled to a level that corresponds to the developer’s proficiency in a given technology. The page header readsDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/mystery-haunting/llms.txt
Use this file to discover all available pages before exploring further.
THE LAB with the subtitle Potions, Poisons, and Programming Languages. Every bottle has its own color, its own fill level, and its own hover state — hover over any bottle to watch bubbles rise through the liquid and see the toxicity percentage materialize beneath the glass.
Skills Roster
The following skills are displayed in The Lab, each represented by a uniquely colored potion bottle:| Skill | Level | Color |
|---|---|---|
| React | 90% | #2dd4bf (ghost teal) |
| TypeScript | 85% | #f97316 (pumpkin orange) |
| Node.js | 75% | #4ade80 (lime green) |
| CSS/Tailwind | 95% | #a855f7 (arcane purple) |
| GraphQL | 65% | #ec4899 (hot pink) |
| Python | 50% | #eab308 (sulfur yellow) |
Potion Bottle Mechanics
Each bottle is built from a custom SVG path that renders a potion bottle silhouette — rounded base, narrow neck, and a cork stopper at the top. The liquid fill is implemented as an SVG<rect> (or <clipPath>-masked region) whose height animates upward from zero to the skill’s level value on component mount.
| Animation property | Value |
|---|---|
| Mount animation | Fill height from 0% to level% |
| Duration | 2s |
| Easing | ease-out |
| Trigger | Component mount (runs once) |
color field in the skills array, making each bottle visually distinct on the shelf.
Hover Behavior
Hovering a bottle triggers a compound interaction managed by Framer Motion:- Jiggle — the bottle performs a brief
scaleandrotatejiggle viawhileHover, mimicking the feeling of picking up a potion - Bubble particles — small circular SVG elements rise from the bottom of the liquid toward the neck, each with a staggered animation delay so they appear in sequence rather than all at once
- Toxicity label — a text element fades in below the bottle showing the skill level formatted as a toxicity percentage (e.g.,
Toxicity: 90%)
y keyframe animation from inside the bottle to above the liquid surface, combined with an opacity fade-out as they approach the cork.
Shelf Layout
All bottles are mounted on a horizontal wooden shelf. The shelf is a full-width SVG element rendered at the bottom of the bottle group, featuring:- A flat horizontal plank surface the bottles rest on
- Wooden bracket supports on each side, rendered as angled SVG shapes
- A subtle drop shadow beneath the plank to give the shelf visual depth
Customization
How to add or change skills
How to add or change skills
Skills are defined in an array of objects. Each entry requires a Each entry in the array produces one potion bottle on the shelf. The bottle’s fill height, liquid color, and toxicity label all derive from the
name, a level (0–100), and a color (CSS hex string). Add, remove, or reorder entries to update the shelf.level and color values — no other changes are needed when adding a new skill.