Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/groovy/llms.txt
Use this file to discover all available pages before exploring further.
VinylRecord is the centrepiece of the portfolio’s project showcase section. It presents each project as a vinyl record album: the outer face shows the album art (cover colour, title, description), hovering causes the record disc to peek out from the right edge, and clicking the cover splits it open — the cover slides left, the disc slides right and spins continuously, and an inner-sleeve panel fades in with a full description and technology tags.
Props
The album title displayed on the cover and repeated on the inner sleeve label. Typically the project name.
A short description of the project. Shown on the inner sleeve when the record is opened.
An array of technology or tool names. Each entry is rendered as a small pill/tag on the inner sleeve track listing.
The background fill colour of the album cover, supplied as a CSS hex string (e.g.
"#c2410c"). Used as the backgroundColor style on the cover panel.The accent colour of the circular label at the centre of the vinyl disc (e.g.
"#fbbf24"). Should contrast with the dark grooves of the disc.Animation States
Three interaction states are tracked viaisHovered and isFlipped (useState):
| State | isHovered | isFlipped | Visual result |
|---|---|---|---|
| Idle | false | false | Album cover visible, disc hidden behind it |
| Hovered | true | false | Disc peeks out: x: 40px, rotate: 45deg |
| Flipped / Playing | — | true | Cover slides x: -160px; disc slides x: 160px and spins infinitely; inner sleeve fades in |
isFlipped: true) resets everything to the idle state.
The infinite spin on the disc uses a Framer Motion
animate keyframe cycle: rotate goes from 0 to 360 with duration: 3 and repeat: Infinity, ease: 'linear'. This is applied only when isFlipped is true; when the record closes the rotation resets gracefully via a spring.