Measured entry

ruixen-card-stack

carousel3dmotion on file

A client-side React carousel that fans image cards into a layered depth effect. It ships as a shadcn registry component and supports drag gestures, arrow keys, autoplay, hover pause, dots, reduced motion, and custom card rendering. It uses Tailwind classes, Next.js Link, Motion, and Lucide React.

Specimen
Motion capture of the mounted demo, recorded by the harness. No audio track.
Harness screenshot of ruixen-card-stack at 375 pixels wide
Harness screenshot at 375 pixels wide. This viewport scrolled sideways.
Harness screenshot of ruixen-card-stack at 768 pixels wide
Harness screenshot at 768 pixels wide. This viewport scrolled sideways.
Harness screenshot of ruixen-card-stack at 1440 pixels wide
Harness screenshot at 1440 pixels wide. This viewport scrolled sideways.

Measured

Every value below was written by the harness on the run that produced the frames above. None of it is derived from the prose.

Harness measurements recorded for ruixen-card-stack
BuildOK
MountOK
Console errors5
Uncaught page errors0
Horizontal overflowflagged at 375, 768, 1440
Axe critical0
Axe serious0
Axe moderate0
Axe minor0
Gzip marginal84.0 KB (149.5 KB build, 65.5 KB baseline)
Bare modeOK
Provider requiredNO
Demo usedwritten from the component source API

What the harness recorded

CONSOLE

Failed to load resource: the server responded with a status of 404 (Not Found)

CONSOLE

Failed to load resource: the server responded with a status of 404 (Not Found)

CONSOLE

Failed to load resource: the server responded with a status of 404 (Not Found)

Verdict

A polished concept with useful controls and sensible reduced-motion behavior, but not a safe drop-in. Its fixed card sizing and fan offsets overflowed every tested viewport. Use it when the depth effect justifies responsive tuning and the added dependency weight.

Use it if

  • You want a cinematic card selector where the surrounding items provide visual context.
  • Your project already uses Next.js and Tailwind, and adding Motion is acceptable.
  • You can tune the exposed card geometry for the exact container where it will appear.

Skip it if

  • You need a drop-in responsive carousel that stays within its container without geometry changes.
  • You cannot accept the added animation-library weight for a single carousel.
  • Your interaction standard requires every clickable card to be a native keyboard control.
  • You need framework-neutral routing without replacing the built-in Next.js Link.

Install

Installation record for ruixen-card-stack
Declared dependenciesmotion, lucide-react
Missing on installnone
Bare installbuilds and mounts without the shadcn-style helpers
Providerno provider required in the harness

In a non-shadcn project, add Motion and Lucide React, provide Tailwind with the referenced theme utilities, and place the file behind a client boundary. Use Next.js for the bundled Link component or replace it with your router or an anchor. Supply valid image assets and tune the card geometry to prevent horizontal overflow.

Source and credit

This page is a review, not a copy. The component source lives with its author and this site does not republish it. Read the license before you use anything.

Alternatives

Other published entries for the carousel pattern, ordered by what they measured: mounts first, then clean axe scans, then bare-mode passes, then the smaller bundle.