Mystery Haunting layers two animation systems: Framer Motion handles all route-level transitions and interactive component gestures, while Tailwind CSS provides looping utility animations for ambient effects like floating ghosts and rising bubbles. Understanding which system drives each effect makes it straightforward to tune, replace, or disable any animation in the site.Documentation 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.
Page Transition: 3D Book-Flip
Every route change plays a rotateY “book-flip” effect. The variants object that drives it lives directly in the Layout component:Tailwind Animation Utility Classes
Ambient looping animations are defined as Tailwind utilities intailwind.config.js under extend.animation and extend.keyframes. They are applied as class names directly on JSX elements.
| Class | Effect | Where Used |
|---|---|---|
animate-float-ghost | Floating up/down loop | Ghost icons on the landing page and projects page |
animate-bubble | Rising bubbles loop | Skills potion hover effect |
animate-pulse | Standard CSS pulse | Glowing windows on decorative house elements |
text-glow-teal | Neon teal text shadow | Active nav links, section headings |
animate-float-ghost or animate-bubble, update the corresponding @keyframes definition and animation shorthand in the Tailwind config, then rebuild.
Framer Motion whileHover Animations
Individual cards and interactive elements use Framer Motion’s whileHover prop for gesture-driven micro-animations:
-
Projects — Cards lift and rock on hover:
-
Skills — Potion bottles scale up and wobble:
-
Blog books — Book spines leap forward with a teal glow:
whileHover prop from the component.
Scroll-Triggered Animations
Work history cards use Framer Motion’swhileInView prop combined with viewport={{ once: true }} so each card animates in once as the user scrolls down the page and does not replay on subsequent scrolls. Apply the same pattern to any new section you add to preserve visual consistency:
All Framer Motion configuration is written inline in the JSX source. There is no separate animation config file. To modify any motion effect, edit the source component and run
npm run build to recompile.