ns-ui

Scrubber Film Strip

Media scrubber rendered as a film strip: sprocket-holed edges, one cell per second, a gate-claw playhead that snaps hole-to-hole on a slow drag and releases into a continuous glide on a fast one, buffered range showing as faintly noise-filled exposed frames.

Use when a playback position control for audio/video where the physical claw-and-perforation metaphor communicates both position and buffered range, and where slow vs. fast scrubbing should visibly feel different (discrete frame-stepping vs. released continuous seek). Reach for slider-loupe instead for a generic single-value slider with no playback/buffer semantics — scrubber-film-strip is specifically a playback scrubber, not a value input.

Install

npx shadcn add https://design.helpmarq.com/r/scrubber-film-strip.json
  • slider
  • scrubber
  • media
  • video
  • svg
  • drag
  • keyboard
  • accessibility
  • form

ns-ui / scrubber-film-strip

Interview_master.mov
0:06 / 1:30

Drag slowly to feel the claw catch each perforation; drag fast and it releases into a continuous glide.

Props

PropTypeDefaultDescription
value?numberControlled position in seconds. Omit for uncontrolled (see defaultValue).
defaultValue?numberInitial position in seconds when uncontrolled. Default 0.
durationnumberTotal duration in seconds.
buffered?numberBuffered range from 0, in seconds. Default 0.
onValueChange?(value: number) => voidFires on every committed position change (drag, keyboard).
label?stringAccessible name for the slider. Default "Scrub position".
className?string