Desktop optimized

Please maximize your browser window or use a larger screen to explore the component library.

Go to home

Curved Carousel

A high-performance WebGL scroll component. Creates an immersive, 3D cylindrical carousel of images that respond fluidly to scroll momentum anywhere on the container, utilizing custom GLSL shaders for kinetic RGB splitting, parallax texture sliding, and aerodynamic bending.

Last Modified:Aug 17, 2026

Install

CLI

curved-carousel
$pnpm dlx shadcn@latest add https://ui.satisium.com/r/curved-carousel.json

Or install a specific demo variant:

curved-carousel-demo
$pnpm dlx shadcn@latest add https://ui.satisium.com/r/curved-carousel-demo.json

Manual

1. Install Dependencies

Dependencies
$pnpm add three @react-three/fiber @react-three/drei gsap @gsap/react clsx tailwind-merge

2. Add Source Code

Props

PropTypeDefaultDescription
imagesstring[]RequiredArray of image URLs to load into the deck.
cardWidthRationumber0.35Percentage of screen width the card occupies on desktop.
cardAspectRationumber1.4Width-to-height ratio of the cards.
scrollSensitivitynumber0.005How heavily the scroll wheel affects movement.
lerpFactornumber0.08How buttery smooth the momentum is.
radiusMultipliernumber1.2The radius multiplier of the 3D cylinder.
centrifugalMultipliernumber0.4How much the cards bend physically when spinning fast.
parallaxIntensitynumber0.1Intensity of the internal texture slide (Parallax).
chromaticAberrationIntensitynumber0.004Intensity of the color split on scroll.
cornerRadiusnumber0.04SDF corner radius (0.0 to 0.5).
fadeMultipliernumber1.5How aggressively the cards fade as they move to the back.
dimmingMultipliernumber0.8How much the cards darken as they move to the back.