TheDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/v-doom/llms.txt
Use this file to discover all available pages before exploring further.
Navigation component renders a persistent fixed bar across the top of every page. It displays the V. DOOM logo on the left and the six main route links on the right, using React Router’s <NavLink> for active-state detection. A Framer Motion shared-layout animation slides an amber dot beneath whichever link is currently active, and a mix-blend-difference blend mode ensures the nav text remains legible over any background color the particle canvas happens to produce.
Route Links
The navigation is driven by a staticnavLinks array. Each entry maps a route path to its occult-flavored display label:
<NavLink>. Both className and children accept render callbacks that receive the isActive flag. The className callback applies font and color classes; the children callback renders the label text and conditionally mounts the active indicator:
Active Indicator
When a link is active, a small amber dot appears beneath it. This dot is a Framer Motion element that uses a shared layout animation — identified bylayoutId="nav-indicator" — to smoothly slide from one link to the next whenever the active route changes.
Because all instances share the same layoutId, Framer Motion treats them as a single element that physically moves across the DOM rather than fading one out and another in. The result is a dot that appears to glide between nav items as you navigate the site. A boxShadow glow (0 0 8px 2px rgba(245, 178, 91, 0.6)) is applied via style to give the dot a soft amber radiance.
The layout animation is automatic — no additional configuration is required. Framer Motion infers the start and end positions from the DOM positions of the
layoutId elements.mix-blend-difference
The nav bar container appliesmix-blend-difference to its CSS mix-blend-mode property:
mix-blend-difference subtracts the background pixel color from the foreground pixel color. In practice this means:
- Over a dark background the nav text appears light
- Over a light background the nav text appears dark
- The effect is continuous — as the animated particle background shifts, the nav text contrast adjusts in real time with zero JavaScript
mix-blend-difference operates on the composited pixel values, so it only takes effect when the nav element overlaps the layers below it. If you add an opaque full-width header background, the blend mode will have no visible effect against that background.Mobile Behavior
The route link list is hidden on viewports narrower than themd breakpoint (768 px) using Tailwind’s responsive prefix:
'/' remains visible at all screen sizes.
To add a mobile menu, replace the hidden <ul> with a controlled drawer or sheet component:
Customizing Labels
The display labels innavLinks are entirely independent of the route paths — renaming them has no routing side effects. Open components/Navigation.js and edit the label values directly: