Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/spooky-developer/llms.txt
Use this file to discover all available pages before exploring further.
Footer provides a consistent bottom bar on every page of the Spooky Developer portfolio. It displays a dynamic copyright notice and a ghost-icon button that lets visitors toggle haunt mode on or off. Because it sits at the end of the Layout flex column — after the flex-grow <main> element — it is naturally pushed to the bottom of the viewport on short pages and flows below the content on longer ones.
What it renders
The footer is a single<footer> element with two children arranged in a responsive flex row:
Copyright line
new Date().getFullYear(), so it always displays the current year without any manual updates. The text uses text-haunt-bone/60 — a muted warm-cream at 60 % opacity — to keep it readable without competing with page content.
Haunt-mode toggle button
toggleHaunt from the useHaunt() context hook. When haunt mode is active the ghost icon bounces (animate-bounce) and the label reads “Calm the haunt”; when inactive the icon is dimmed (opacity-50) and the label reads “Awaken the spirits”. The preference is persisted to localStorage by the HauntProvider, so the user’s choice survives page reloads.
Styling
The<footer> element carries the following Tailwind classes:
| Class | Purpose |
|---|---|
w-full py-8 px-6 | Full-width with comfortable vertical and horizontal padding |
mt-20 | Separates the footer from the last page section |
border-t border-haunt-moon/20 | Subtle teal top border as a visual divider |
flex flex-col md:flex-row justify-between items-center gap-4 | Stacks on mobile, splits left/right on desktop |
bg-haunt-bg/80 backdrop-blur-sm | Semi-transparent dark teal background with blur, matching the header treatment |
z-50 relative | Keeps the footer above the fixed Background layer |
Automatic inclusion
Footer is imported and rendered directly inside Layout. There is no need to add it to individual page components — it appears on every route automatically.
Customising the footer
All footer content lives incomponents/layout/Footer.js. Common modifications:
Adding social links
Add anchor tags before or after the copyright<div>:
Changing the copyright text
Edit the string inside the copyright<div>. The {new Date().getFullYear()} expression can be kept as-is for an auto-updating year.
Adding extra navigation links
ImportNavLink from react-router-dom and add links to internal routes: