The Blog page presents writing as a physical stack of journal pages left on a reading table — each card slightly askew, layered on top of the next, waiting to be picked up and read. Hovering a card peels it away from the stack and lifts it to the front, where it flattens and enlarges for easy reading.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/the-craft/llms.txt
Use this file to discover all available pages before exploring further.
Sample Blog Posts
Theposts array in Blog.js defines three entries in the starter kit:
Binding State with Zustand
Date: Oct 31, 2023Excerpt: “A treatise on lightweight state management rituals that avoid the heavy toll of Redux boilerplate.”Rotation: -3°
The Necromancy of Legacy Code
Date: Sep 15, 2023Excerpt: “How to safely resurrect and refactor ancient jQuery scripts without angering the original authors.”Rotation: 2°
Warding Your APIs
Date: Aug 02, 2023Excerpt: “Essential protective runes (JWTs) and rate-limiting spells to keep malicious bots at bay.”Rotation: -1°
Stacking Layout
Cards are rendered inside arelative w-full max-w-xl mx-auto mt-10 wrapper. Each card is position: absolute top-0 left-0 w-full — they all start at the same origin point and are offset downward by marginTop: index * 80px applied via the inline style prop.
Layering is controlled with zIndex: posts.length - index, so the first card (index 0) has the highest z-index and sits on top of the visual stack:
<div> at the end of the wrapper — style={{ height: $px }} — pushes the page height out to prevent the absolute-positioned cards from collapsing the scroll container.
Card Anatomy
Each card uses theparchment-texture class with heavy drop shadows. Inside, from left to right:
Ruled Margin Lines
Two
absolute vertical lines (top-0 bottom-0 left-8 w-px bg-blood/30 and top-0 bottom-0 left-10 w-px bg-blood/30) simulate the red ruled lines of a lined journal page.Hover Interaction
Each card’smotion.div uses a whileHover prop to lift the hovered card above the stack:
zIndex: 50 override in whileHover ensures the lifted card always renders on top, regardless of the static stacking order.
Entry Animation
Cards animate in from above the page on first render:0.2 * index seconds, so the top card appears first, then the second, then the third, creating a cascading drop effect as the page loads.
How to Add Posts
Edit theposts array at the top of Blog.js:
The
"Read Entry →" CTA is currently a <span> with no href. To link posts to real routes or external URLs, replace the <span> with an <a> or React Router <Link> and add a link field to each post object.