TheDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/sorcerer/llms.txt
Use this file to discover all available pages before exploring further.
Layout component is the structural backbone of Sorcerer’s single-page portfolio. It composes the fixed radial-gradient backdrop, the persistent CursorTrail, the MoonPhaseNav bar, and a mystical footer into a single cohesive shell that wraps every page of the application. Because it lives above the router, all globally visible chrome is mounted once and never unmounts during client-side navigation.
Usage
Layout is applied internally by the app’s root render — individual page components do not import or invoke it themselves. The router passes each page as children, and Layout renders it inside the <main> element.
Props
The page content to render inside the
<main> element. Children are elevated to z-10 so they always appear above the fixed gradient background layer. Any valid React node is accepted — typically a <Routes> tree.Structure
The component builds a layered stacking context so that decorative elements never obscure page content:| Layer | Element | z-index | Description |
|---|---|---|---|
| 0 | Fixed radial gradient <div> | z-0 | Full-viewport overlay; pointer-events-none so it never blocks clicks. Radiates velvet-purple/20 from the top, fading to midnight-base. |
| — | <CursorTrail /> | z-50 | Fixed cat cursor follower; rendered outside <main> so it overlays everything. |
| — | <MoonPhaseNav /> | inherits | Top navigation bar; also rendered outside <main> at document flow position. |
| 10 | <main> | z-10 | Flex column containing all page content and the footer. |
bg-midnight-base (#0a1f2e), min-h-screen, and overflow-hidden so the gradient never produces a scrollbar.
Footer
The footer is rendered at the bottom of<main> via mt-auto, ensuring it always sits at the viewport floor even on short pages. It uses font-serif and text-moonlight-silver/50 for a faded, arcane appearance.
new Date().getFullYear(), so it never needs a manual update.
Customizing the Footer
To change the footer copy, edit the two<p> strings directly in components/Layout.js:
2025) or a date range (2023–{new Date().getFullYear()}) as preferred.