Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/dev.void/llms.txt
Use this file to discover all available pages before exploring further.
AuroraNav is the primary navigation component for dev.void. It renders a full-width sticky header at the top of every page, providing links to all nine sections of the portfolio. On desktop viewports the links sit in a horizontal row; on smaller screens they collapse into a full-screen overlay menu toggled by a hamburger icon. The component must always be rendered inside a BrowserRouter because it reads the current path with React Router’s useLocation hook.
What it renders
The header contains three logical zones:- Logo / wordmark — a
Rocketicon followed by the Dev.Void brand text, both wrapped in a React Router<Link to="/">. - Desktop navigation (
hidden lg:flex) — a<nav>element containing one<Link>per route. The currently active link is identified by comparinguseLocation().pathnameto each route’spath. When a link is active, amotion.divwithlayoutId="nav-indicator"slides an animated aurora-teal underline beneath it using a spring transition (stiffness: 300, damping: 30). - Mobile hamburger (
lg:hidden) — a<button>that toggles the mobile menu open state. It shows aMenuicon when closed and anXicon when open, both fromlucide-react.
useEffect watches location.pathname and collapses the mobile menu automatically whenever the user navigates to a new route.
Scroll-aware background
Ascroll event listener tracks whether the page has scrolled past 50 px. While at the top, the header background is bg-transparent. After scrolling, it transitions to bg-space-950/80 backdrop-blur-md border-b border-aurora-teal/20 with a reduced vertical padding, creating a condensed, frosted-glass effect.
Navigation links
The full route table, in source order:| Label | Path | Space-themed alias in source |
|---|---|---|
| Home | / | Home |
| Stellar Cartography | /about | About |
| Probes & Payloads | /projects | Projects |
| Telemetry | /skills | Skills |
| Mission Log | /work | Work Experience |
| Anomalies | /case-studies | Case Studies |
| Field Notes | /blog | Blog |
| Crew Voices | /testimonials | Testimonials |
| Hailing Freq | /contact | Contact |
The labels rendered in the nav are the space-themed aliases (e.g. “Stellar Cartography” for About). The route paths themselves are conventional slugs (
/about, /projects, etc.).Mobile menu
On viewports narrower thanlg (1024 px), the desktop <nav> is hidden and the hamburger button appears. Tapping it mounts a motion.div that covers the screen below the header (fixed inset-0 top-[60px]) with a near-opaque deep-space background (bg-space-950/95 backdrop-blur-xl). The overlay animates in with opacity: 0 → 1 and y: -20 → 0 over 300 ms. Inside it, all nine links are stacked vertically and centred. The active link is highlighted in text-aurora-teal with a glow effect; inactive links are text-slate-400.
App integration
AuroraNav must sit inside the BrowserRouter provider (exported from the same module as H). In the app entry point, BrowserRouter wraps the entire application, with AuroraNav rendered as a direct sibling to the main content wrapper:
AuroraNav is position: fixed with z-index: 50, all page content must include pt-24 (6 rem) top padding to prevent it from being hidden behind the bar. The app wraps each page’s content in an animated motion.div with className="pt-24 min-h-screen relative z-10" to apply this offset consistently.
Customisation
Changing link labels or routes
All nine nav items are defined in a single array near the top ofAuroraNav.js. Edit the label or path fields to rename or re-route any entry:
Add a new route
Push a new object into the
navLinks array: { path: "/labs", label: "Deep Space Labs" }.Register the route
Add a matching
<Route path="/labs" element={...} /> inside the <Routes> block in main.js.Adjusting the scroll threshold
The header transitions from transparent to frosted-glass whenwindow.scrollY > 50. Change the 50 in the scroll listener inside the useEffect to any pixel value that suits your hero section height.
Swapping the active-link indicator style
The sliding underline is amotion.div with layoutId="nav-indicator". You can replace the teal bar with any element — for example, a glowing dot or a background highlight — by changing its className. The layoutId prop is what drives the shared-layout animation across links; keep it unique within the nav.