Pricing
Get Started
  • Introduction
  • Installation
  • MCP Server
  • Saved
Site
  • Builder (Beta)
  • Pricing
  • Roadmap
  • Affiliates
Browse
  • All Components80 New
Text34
  • 3D Letter Swap
  • 3D Text Reveal
  • ASCII Ripple
  • Bending Marquee
  • Blur Highlight
  • Cipher RevealNew
  • Domino LetteringNew
  • Elastic LetteringNew
  • Ghost TypeNew
  • Glitch Text
  • Glyph LotteryNew
  • Gravity LettersNew
  • Label OrbitNew
  • Luminous TypeNew
  • Mesh LetteringNew
  • Orbital TypeNew
  • Particle Text
  • Ribbon TypeNew
  • Rising InkNew
  • Shatter TypeNew
  • Signal TypeNew
  • Smoke TypeNew
  • Speeding Text
  • Spring LetteringNew
  • Staggered Text
  • Stipple TypeNew
  • Tessera TrailNew
  • Text Cube
  • Text MorphNew
  • Text Path
  • Text Scatter
  • Typographic WallNew
  • Vapor TypeNew
  • Wave LetteringNew
Backgrounds98
  • ASCII Tiles
  • Ascii Waves
  • Astral ShellNew
  • Aura Blob
  • Aurora Beam
  • Aurora Blur
  • Axial BeamNew
  • Binary OrbitsNew
  • Black Hole
  • Blinking Dots
  • Blinking Squares
  • Blurred Rays
  • Chroma Blinds
  • Chroma CurrentNew
  • Chroma Waves
  • Cloud AtlasNew
  • Color Loops
  • Concentric TidesNew
  • Contour TideNew
  • Dappled LightNew
  • Dither Wave
  • Dot Shift
  • Eclipse
  • Fading StarsNew
  • Falling Rays
  • Flame Paths
  • Fog Sphere
  • Glass Flow
  • Glass Tiles
  • Glimmer WrapNew
  • Glitter Warp
  • Glowing Ridges
  • Glowing Wave
  • Glue Dots
  • Glyph EmberNew
  • Glyph OrbNew
  • Glyph SonarNew
  • Glyph TideNew
  • Gradient Bars
  • Grain Wave
  • Halftone Vortex
  • Halftone Wave
  • Hexagonal VaultNew
  • Horizon BloomNew
  • Interference RibbonsNew
  • Landscape
  • Light Droplets
  • Lightspeed
  • Liquid Bars
  • Liquid Lines
  • Long Exposure
  • Luminous FilamentsNew
  • Metallic Swirl
  • Minimal Ripple
  • Mosaic
  • Mosaic Waves
  • Neon Reveal
  • Neural Flash
  • Neural Float
  • Neural Tunnel
  • Nexus RaysNew
  • Perspective Grid
  • Photon KnotNew
  • Pixel Rain
  • Prismatic SlatsNew
  • Radial Liquid
  • Ravine
  • Retro Lines
  • Ring FieldNew
  • Rising Lines
  • Rising Particles
  • Rolling Blinds
  • Rotating Stars
  • Rubber Fluid
  • Satin RidgesNew
  • Shader Waves
  • Shadow Bars
  • Silk Waves
  • Simple Swirl
  • Specter Orb
  • Spectral Clouds
  • Spectral DrapeNew
  • Spiral FunnelNew
  • Square Matrix
  • Squares Terminal
  • Squircle Shift
  • Star Swipe
  • Swirl Blend
  • Synaptic Shift
  • Tech Wall
  • Terminal RainNew
  • Thinking Dots
  • Twilight Lines
  • Vortex
  • Voxel ArcNew
  • Warp Twister
  • Watercolor
  • Wireframe Ball
3D & Shaders49
  • Agentic Ball
  • AI Blob
  • Album RailNew
  • Bend Gallery
  • Chrome OrbitNew
  • Circle Stack
  • Concave CarouselNew
  • Constellation GalleryNew
  • Contact SheetNew
  • Depth Card
  • Depth Image
  • Depth RibbonNew
  • Device
  • Dolly Gallery
  • Elastic ReelNew
  • Elastic StickerNew
  • Ember RevealNew
  • Expanding GridNew
  • Frame Border
  • Glass Reveal
  • Globe
  • Gradient Blob
  • Helix GalleryNew
  • Infinite Gallery
  • Inverted Dome
  • Iris GalleryNew
  • Lenticular Carousel
  • Momentum RingNew
  • Page Flip
  • Parallax Carousel
  • Particle Image
  • Particle Morph
  • Passage GalleryNew
  • Pixel Reveal
  • Pixel Sculpt
  • Pixelate Hover
  • Pond ImageNew
  • Portal
  • Prism CarouselNew
  • Rotating Cards
  • Scroll BendNew
  • Scroll Portal
  • Shader Card
  • Shader Reveal
  • Spin ShutterNew
  • Star Burst
  • Tumble Carousel
  • Twisting Gallery
  • Warped Card
Cursor Effects21
  • Arc CursorNew
  • Ascii Cursor
  • Celebration CursorNew
  • Chroma HaloNew
  • Cursor Wave
  • Custom Cursor
  • Dither Cursor
  • Drafting CursorNew
  • Glass Cursor
  • Glyph StreamNew
  • Grid Rise
  • Gyroscope CursorNew
  • Liquid Ascii
  • Parallax Pills
  • Pigment TrailNew
  • Pixel Magnet
  • Ribbon TrailNew
  • Smooth Cursor
  • Snapshot TrailNew
  • Stardust CursorNew
  • User Cursor
UI & Cards28
  • Animated List
  • Card Spread
  • Center Flow
  • Chroma Card
  • Circle Gallery
  • Circles
  • Click Stack
  • Comparison Slider
  • Credit Card
  • Draggable Grid
  • Frame Scrub
  • Gradient Carousel
  • Hover Preview
  • Liquid Swap
  • Loupe ImageNew
  • Magic Transform
  • Modal Cards
  • Orbit ReelNew
  • Parallax Cards
  • Preloader
  • Reel Gallery
  • Scroll Mask
  • Scroll Stack
  • Simple Graph
  • Skewed Carousel
  • Tile Reveal
  • Tilted Tiles
  • Tumble WallNew
  1. Docs
  2. Components
  3. 3D & Shaders
  4. Album Rail
PreviousAI Blob3D & ShadersNextBend Gallery3D & Shaders

Animated components, blocks, and templates for React. Pay once, ship stunning pages forever.

pro@reactbits.dev

Site

HomeBuilder (Beta)PricingTestimonialsFAQsRoadmapChangelogFree Components

Docs

IntroductionInstallationMCP ServerComponentsBlocksTemplates

Resources

AboutUse casesComparisonsAlternativesFor AI agents

Legal & Account

LoginAffiliateLicensePrivacyContact

© 2026 pro.reactbits.dev. All rights reserved.

Album Rail

A fan of album sleeves, each with a record tucked inside

album-rail-tw

Customize

Background
Accent
Vinyl
Aspect
1.00
Size
0.62
Spread
0.58
Stack
0.50
Fan
6.0°
Turn
22°
Depth
0.50
Visible
3
Radius
14px
Dim
0.45
Shadow
0.60
RPM
33
Interval
4.0s

Props

35
NameTypeDefaultDescription
items{ src: string; alt: string; title?: string; subtitle?: string; href?: string }[]built-in cover collectionCovers to show, in order. Images must allow cross-origin loading. Title and subtitle (the artist) caption the focused cover; href makes selecting it navigate when vinyl is off.
startIndexnumber0Index of the cover that starts in focus.
aspectnumber1Width divided by height of every cover. 1 is a square album sleeve; images are cropped to fill it.
sizenumber0.62Height of the focused cover as a fraction of the space above the caption.
spreadnumber0.58Distance from the focused cover to its first neighbours, as a fraction of the cover width.
stacknumber0.5How tightly the covers further out pack together. 0 spaces them evenly; 1 stacks them like a coverflow.
fannumber6Tilt of each neighbour in degrees, fanning the covers like a hand of cards.
turnnumber22How far the neighbours turn away from the viewer in degrees.
depthnumber0.5How far the neighbours recede and shrink behind the focused cover.
visiblenumber3Covers shown on each side of the focused one, from 1 to 5.
radiusnumber14Corner radius of the covers in pixels.
dimnumber0.45How much the covers away from the centre fade into the background. Hovering one brings it back.
shadownumber0.6Strength of the soft shadows the covers and the record cast on each other.
vinylbooleantrueEach cover holds a record. Hovering the focused cover lets the record peek out; clicking it, Enter or the play button slides it out and spins it.
vinylColorstring"#131116"Colour of the record. The label in its centre shows the album art.
accentColorstring"auto"Colour of the play button, or of the ruler marker when vinyl is off. "auto" picks the most vivid colour of the focused cover and adjusts it to the background; any CSS colour fixes it.
rpmnumber33Turntable speed of a playing record, in revolutions per minute.
autoplaybooleantrueMove to the next cover every interval seconds. Pauses while hovered, held or playing.
intervalnumber4Seconds between autoplay steps.
pauseOnHoverbooleantruePause autoplay while the pointer is over the rail.
loopbooleantrueWrap around at the ends. When false, the rail stops at the first and last cover.
draggablebooleantrueDrag or swipe the covers sideways, with momentum and snapping.
wheelbooleantrueScroll to move one cover per notch. Set false to leave page scrolling untouched.
captionsbooleantrueShow the title and artist of the focused cover. The caption slides with the rail as it moves.
controlsbooleantrueShow the ruler: one tick per album sliding with the rail, a play button at its centre and arrows at its ends. Drag or click the ruler to scrub.
backgroundColorstring"transparent"Background of the component. Text, controls and the fading covers adapt to it.
pausedbooleanfalseStops autoplay. Reduced-motion users get instant steps and a still record.
dprnumber2Maximum device pixel ratio for the canvas.
ariaLabelstring"Album rail…"Accessible description of the rail and how to use it.
onIndexChange(index) => void—Called when a different cover comes into focus.
onSelect(item, index) => void—Called when the focused cover is clicked or Enter is pressed. Clicking any other cover brings it into focus.
onPlayChange(index, playing) => void—Called when a record starts or stops playing.
ref{ next, previous, goTo, play, stop }—Imperative controls for moving through the rail and playing the focused record.
classNamestring—Classes for the root element. It fills its parent, with a 420px minimum height.
styleCSSProperties—Inline styles for the root element.
items{ src: string; alt: string; title?: string; subtitle?: string; href?: string }[]

Covers to show, in order. Images must allow cross-origin loading. Title and subtitle (the artist) caption the focused cover; href makes selecting it navigate when vinyl is off.

Defaultbuilt-in cover collection
startIndexnumber

Index of the cover that starts in focus.

Default0
aspectnumber

Width divided by height of every cover. 1 is a square album sleeve; images are cropped to fill it.

Default1
sizenumber

Height of the focused cover as a fraction of the space above the caption.

Default0.62
spreadnumber

Distance from the focused cover to its first neighbours, as a fraction of the cover width.

Default0.58
stacknumber

How tightly the covers further out pack together. 0 spaces them evenly; 1 stacks them like a coverflow.

Default0.5
fannumber

Tilt of each neighbour in degrees, fanning the covers like a hand of cards.

Default6
turnnumber

How far the neighbours turn away from the viewer in degrees.

Default22
depthnumber

How far the neighbours recede and shrink behind the focused cover.

Default0.5
visiblenumber

Covers shown on each side of the focused one, from 1 to 5.

Default3
radiusnumber

Corner radius of the covers in pixels.

Default14
dimnumber

How much the covers away from the centre fade into the background. Hovering one brings it back.

Default0.45
shadownumber

Strength of the soft shadows the covers and the record cast on each other.

Default0.6
vinylboolean

Each cover holds a record. Hovering the focused cover lets the record peek out; clicking it, Enter or the play button slides it out and spins it.

Defaulttrue
vinylColorstring

Colour of the record. The label in its centre shows the album art.

Default"#131116"
accentColorstring

Colour of the play button, or of the ruler marker when vinyl is off. "auto" picks the most vivid colour of the focused cover and adjusts it to the background; any CSS colour fixes it.

Default"auto"
rpmnumber

Turntable speed of a playing record, in revolutions per minute.

Default33
autoplayboolean

Move to the next cover every interval seconds. Pauses while hovered, held or playing.

Defaulttrue
intervalnumber

Seconds between autoplay steps.

Default4
pauseOnHoverboolean

Pause autoplay while the pointer is over the rail.

Defaulttrue
loopboolean

Wrap around at the ends. When false, the rail stops at the first and last cover.

Defaulttrue
draggableboolean

Drag or swipe the covers sideways, with momentum and snapping.

Defaulttrue
wheelboolean

Scroll to move one cover per notch. Set false to leave page scrolling untouched.

Defaulttrue
captionsboolean

Show the title and artist of the focused cover. The caption slides with the rail as it moves.

Defaulttrue
controlsboolean

Show the ruler: one tick per album sliding with the rail, a play button at its centre and arrows at its ends. Drag or click the ruler to scrub.

Defaulttrue
backgroundColorstring

Background of the component. Text, controls and the fading covers adapt to it.

Default"transparent"
pausedboolean

Stops autoplay. Reduced-motion users get instant steps and a still record.

Defaultfalse
dprnumber

Maximum device pixel ratio for the canvas.

Default2
ariaLabelstring

Accessible description of the rail and how to use it.

Default"Album rail…"
onIndexChange(index) => void

Called when a different cover comes into focus.

Default—
onSelect(item, index) => void

Called when the focused cover is clicked or Enter is pressed. Clicking any other cover brings it into focus.

Default—
onPlayChange(index, playing) => void

Called when a record starts or stops playing.

Default—
ref{ next, previous, goTo, play, stop }

Imperative controls for moving through the rail and playing the focused record.

Default—
classNamestring

Classes for the root element. It fills its parent, with a 420px minimum height.

Default—
styleCSSProperties

Inline styles for the root element.

Default—