Animated React carousels and galleries

Project index

An editorial project index with large photography: hover a project and its image arrives through a pixel, grain, gradient or mirror transition, then open it with one press.

Galleries, hover or press, Motion + GSAP

Install

npm i clsx gsap motion tailwind-merge && curl -o components/project-index.tsx https://motion-brew.com/r/project-index.tsx

One self contained file for React and Tailwind CSS: project-index.tsx. Or ask your AI agent to add it through the MCP server.

Usage

import { ProjectIndex } from "@/components/project-index";

export default function Work() {
  return (
    <ProjectIndex
      effect="pixel"
      projects={[
        { title: "Linden House", meta: "Residential, 2026", image: "/work/linden.jpg", href: "/work/linden" },
        { title: "Quiet Rooms", meta: "Interiors, 2025", image: "/work/quiet.jpg", href: "/work/quiet" },
      ]}
    />
  );
}

Props

PropTypeDefaultDescription
projectsProjectItem[]four samplestitle, meta, image, alt, href
eyebrowstring"Selected projects"Above the list
effect"pixel" \"grain" \"gradient" \"mirror""pixel"The image transition
durationnumber0.9Seconds
intensitynumber0.6How strong the effect is, 0 to 1
select"hover" \"click""hover"Focus a project on hover, or on press
imageSide"left" \"right""right"On wide cards
numbersbooleantrueShow 01, 02
metabooleantrueShow each meta line
autoplaybooleanfalseCycle on its own, paused while you are on it
intervalnumber4Seconds per project while autoplaying
parallaxnumber0.5How far the photo leans with the pointer
defaultIndexnumber0
onOpen(project, index) => voidA press on a row or the panel's button
classNamestring

More galleries

  • Prism carousel: An endless carousel circling through liquid glass lenses at both edges.
  • Tilt carousel: A looping row of photo cards that glides on its own: the middle one faces you while the rest turn away in 3D.
  • Depth carousel: A stack of cards receding into depth with motion blur.
  • Ribbon gallery: An endless ribbon of cards curved like a wraparound screen and tilted across the frame.

All animated react carousels and galleries