TheDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/digital-alchemy/llms.txt
Use this file to discover all available pages before exploring further.
Layout component is the persistent site shell that wraps every page in Digital Alchemy. It renders a fixed top-header with navigation, an animated <main> content area that orchestrates page transitions, a fixed footer, and the ambient CursorWisp overlay. Every view component is mounted inside Layout via main.js.
Structure
Header
Fixed to the top (
fixed top-0 z-50). Contains the “M.A.” logo, desktop nav links, and a hamburger toggle for mobile. Uses mix-blend-difference so the text remains readable over any background.Main Content
Wrapped in Framer Motion’s
AnimatePresence with mode="wait". Each page enters and exits with a blur+opacity fade. The area has pt-32 to clear the fixed header and pb-24 to clear the fixed footer.Footer
Fixed to the bottom at
opacity-40. Displays the current year and the tagline “Crafted with magic” in small-caps uppercase.Background layers
The page background is composed of two stacked layers:bg-ink— a near-black#050505base applied to the<body>.- Mystic-glow radial gradient — a full-screen
position: fixedoverlay with a radial gradient centred on the page, rendered at 40% opacity, giving the impression of a glowing magical light source behind the content.
CursorWisp component is rendered directly inside Layout so it floats above all content on every route.
Page transition animation
AnimatePresence wraps the routed {children} with mode="wait", which ensures the current page’s exit animation completes before the next page starts entering. This prevents two pages from being visible simultaneously.
Each child page is wrapped in a motion.main that applies the following transition:
Navigation structure
The header contains a full set of nav items, each with an icon and a label styled insmall-caps uppercase. On desktop the active route shows an animated dot indicator that uses Framer Motion’s layoutId="nav-indicator" to slide smoothly between items as the route changes.
"/". On desktop the nav items render inline. On mobile they are hidden behind the hamburger toggle.
Mobile navigation
The mobile menu uses anAnimatePresence-controlled slide-down overlay. When the hamburger icon is tapped the overlay animates in; when dismissed it animates out. Each nav item inside the overlay enters with a staggered entrance:
onClick handler on each link) or when the hamburger is toggled a second time.
Usage
Layout wraps the entire <Routes> tree in main.js:
Layout itself does not manage routing state — it receives children from the router. The useLocation() hook inside Layout provides the current key passed to motion.main so Framer Motion can detect route changes and trigger the exit/enter sequence.