LabsPortfolio

Components

Carousels

Cover Flow

A 3D coverflow carousel with spring physics, drag-to-navigate, scroll-wheel support, keyboard navigation, and optional reflection and audio feedback.

All components
Tanjiro
Nezuko
Zenitsu
Inosuke
Giyu
Shinobu
Kanao
Mitsuri
Obanai
Sanemi
Shinazugawa
Tokito

Shinobu

Installation

Coming soon. Components will be available via the registry once checkout goes live.

Usage

<CoverFlow
  items={[
    { id: 1, image: "/cover1.webp", title: "Album One", subtitle: "Artist" },
    { id: 2, image: "/cover2.webp", title: "Album Two", subtitle: "Artist" },
    { id: 3, image: "/cover3.webp", title: "Album Three", subtitle: "Artist" },
  ]}
  itemWidth={320}
  itemHeight={320}
  enableReflection
  enableAudio
/>

Props

PropTypeDefaultDescription
items*CoverFlowItem[]Array of items. Each needs `id`, `image`, and `title`. Optional: `subtitle`.
itemWidthnumber400Width of each card in pixels.
itemHeightnumber400Height of each card in pixels.
stackSpacingnumber100Pixel gap between stacked off-center cards.
centerGapnumber250Pixel distance between the center card and its immediate neighbors.
rotationnumber50Y-axis rotation in degrees applied to off-center cards.
initialIndexnumber0Index of the card shown as active on first render.
enableReflectionbooleanfalseRender a glass-like reflection beneath each card.
enableClickToSnapbooleantrueClicking an off-center card snaps it to the active position.
enableScrollbooleantrueHorizontal scroll-wheel navigates between cards.
enableAudiobooleanfalsePlay a synthesized tick sound on each navigation step.
scrollThresholdnumber100Accumulated scroll delta required to advance one card.
reduceMotionbooleanOverride the system prefers-reduced-motion setting.
onIndexChange(index: number) => voidFired whenever the active index changes.
onItemClick(item: CoverFlowItem, index: number) => voidFired when the active (center) card is clicked.
renderImage(props: RenderImageProps) => ReactNodeCustom image renderer — pass Next.js `<Image>` here for framework-native optimisation.
classNamestringTailwind classes merged onto the root container.

Use cases

  • Music library

    Browse album art with a tactile 3D flip — classic iTunes-style navigation for a music or podcast app.

  • Product gallery

    Showcase product variants or catalogue items with depth and drama that flat carousels can't match.

  • Portfolio showcase

    Present case studies or project covers in a way that invites exploration rather than passive scrolling.

  • Media catalogue

    Game, film, or book cover browsers where the 3D perspective communicates hierarchy at a glance.