Skip to content
Image Effects

ContactSheet

A darkroom print of a whole roll: black film strips with sprocket holes and frame numbers on white paper. Hover a frame for a glass loupe, press it to circle it in red grease pencil. Arrow keys move between frames.

Download
  • React
  • Tailwind CSS v4
  • motion

Props

NameTypeDefaultWhat it does
framesContactSheetFrame[]โ€”Each has src, alt and an optional position, a CSS object-position. Two crops of one picture read as a burst.
perRownumber4Frames on each film strip.
pickednumber[][]Frames circled at the start, by index.
zoomnumber2.6How many times the loupe enlarges.
edgestring"SAFETY FILM 400"Printed on the film edge.
titlestring"Roll 12"Written on the paper margin and read by screen readers.
onPick(picked: number[]) => voidโ€”Called with the picked indexes after each press.
classNamestring"w-[32rem]"Set the width here. Everything scales with it.