Skip to content

Showreel

A stack of frames that cuts to the next one every couple of seconds.

From the Kalme template — see it in context
Sunlit studio with a long shared desk

A new frame every two seconds, cut hard, as on film.

Installation

$ npx shadcn@latest add https://framebrick.co/r/showreel.json

Usage

import { Showreel } from "@/components/ui/showreel";

<Showreel
  className="aspect-[5/3] w-72"
  items={shots.map((shot) => <Image key={shot.src} src={shot.src} alt={shot.alt} fill />)}
/>

Props

PropTypeDefaultDescription
itemsReactNode[]—The frames. They are stacked and stretched, so give the frame a size through className.
intervalnumber2000Milliseconds each frame stays; 0 holds the first one.
pauseOnHoverbooleanfalseStop while the pointer is over it, so a frame cannot change mid-look.
  • There is no transition at all — the hard cut is the point. It reads as a reel running, not as a carousel.
  • With reduced motion it stays on the first frame: a timer is neither a transform nor a size animation, so MotionConfig would not stop it.
  • Frames out of view are `invisible`, which keeps them out of the accessibility tree, so a screen reader reads only the current one.

AI prompt

Paste into v0, Lovable, Bolt or Claude to rebuild this component in your own project.

Create a React + Tailwind CSS component called Showreel (Motion only for useReducedMotion).
- A rounded-lg frame with overflow-hidden and bg-muted, sized by className, holding every item absolutely stacked and
  stretched to fill it (object-cover for images).
- Every `interval` ms (default 2000) show the next item and wrap around. No transition, no fade: a hard cut.
- The items that are not current get Tailwind's `invisible` (visibility: hidden), which also removes them from the
  accessibility tree, so a screen reader reads only the current one.
- With useReducedMotion() true, or fewer than two items, or interval 0, stay on the first one.
- Optional pauseOnHover stops the timer while a mouse is over the frame.

Be the first to know

Get new templates and components first

One short email when we release a template or a free component. No spam — unsubscribe anytime.

We use your email only for Framebrick updates. Privacy policy