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.
PlanetaryProfile renders the developer bio as a space-themed card that physically tilts toward the cursor in 3D space. It combines Framer Motion’s useMotionValue, useSpring, and useTransform hooks to convert raw mouse coordinates into a smooth, spring-dampened rotation — no third-party tilt library required. On the left sits a circular avatar placeholder ringed by two independently spinning orbital bands; on the right, name, designation, bio, and a stats grid.
3D Tilt Mechanism
The tilt effect is built from four Framer Motion primitives chained together:Track raw mouse position with useMotionValue
Two
useMotionValue(0) instances hold the normalised cursor X and Y positions, both initialised to 0 (card centre).Smooth the values with useSpring
Each raw motion value is piped through
useSpring, which adds spring-physics easing so the card “catches up” to the cursor with natural inertia rather than snapping rigidly.Map spring values to rotation degrees with useTransform
useTransform maps the -0.5 → 0.5 normalised range to rotation angles in degrees. Note the axis swap: horizontal mouse movement drives rotateY; vertical drives rotateX.Mouse event handlers
<section> carries perspective-[2000px] (a Tailwind arbitrary value), which controls how dramatic the 3D foreshortening looks. A smaller value (e.g. perspective-[800px]) produces a more extreme tilt; a larger value flattens it.
Avatar Placeholder & Orbital Rings
The left column is a circular container withtranslateZ(50px) — pushing it 50 px toward the viewer in 3D space, creating parallax depth relative to the flatter right column.
motion.div orbital rings and the avatar placeholder itself:
Inner ring — 20 s clockwise
Outer ring — 30 s counter-clockwise
transform (set via inline style, not Framer Motion) to tilt them at a planetary-orbit angle before the rotation animation begins. The ease: "linear" keeps the spin perfectly constant — unlike easeInOut, which would cause the rings to oscillate in speed.
The
inset-[-20%] and inset-[-40%] classes make the rings overflow their container by 20 % and 40 % respectively, so they visually encircle the avatar without needing a larger wrapper.Avatar placeholder
Orbital stat labels
Two monospaced labels sit above and below the avatar circle, pinned with absolute positioning:Right Column — Bio Content
The right column sits attranslateZ(30px) — 20 px behind the avatar, adding a subtle parallax layer during tilt.
Name and designation
Bio paragraphs
Stats grid
<span> styled with Tailwind’s animate-pulse — change bg-aurora-mint to bg-red-400 and the text to "Off-Grid" to signal unavailability.
Where the Component is Rendered
PlanetaryProfile is used on the /about route, wrapped in a page layout defined in main.js:
"Stellar Cartography" and subheading live in main.js, not inside PlanetaryProfile itself.
Customisation Reference
Name & Title
Edit the
<h2> and <h3> strings directly in PlanetaryProfile.js. The name Alex Vance appears once inside an <h2>; the designation Frontend Architect appears once inside an <h3>.Bio Paragraphs
Two
<p> elements live inside a space-y-4 div in the right column. The second paragraph contains a styled <span> for the italic “digital experiences” phrase — preserve or repurpose it.MASS & ORBIT Labels
The
MASS: 1.4M LOC and ORBIT: 5 YRS EXP strings are in two absolutely-positioned <div> elements flanking the avatar circle. Update them to reflect your own stats.Location & Status
San Francisco, CA and Accepting Transmissions are plain text nodes inside the two glass-panel grid cells. Change status to "Off-Grid" and swap bg-aurora-mint → bg-red-400 on the pulse dot when unavailable.Tilt Intensity
Adjust the
[-15deg, 15deg] ranges in the two useTransform calls to reduce or increase maximum tilt angle. Lower values (e.g. [-8deg, 8deg]) produce a subtler effect.Avatar Photo
Replace the gradient placeholder
<div> with <img src="..." className="w-3/4 h-3/4 rounded-full object-cover" />. Remove the blur-sm and mix-blend-screen classes that were on the placeholder.