Reel

A composable, Instagram-style Reel component with progress indicators and navigation controls.

Installation

npx love-ui@latest add reel

Usage

import { Reel, ReelContent, ReelItem, ReelVideo, ReelImage, ReelProgress, ReelControls, ReelPlayButton, ReelMuteButton, ReelPreviousButton, ReelNextButton, ReelNavigation, ReelOverlay, ReelHeader, ReelFooter } from "@/components/reel"
<Reel items={reelItems}>
  <ReelProgress />
  <ReelContent>
    {(item) => (
      <ReelItem>
        <ReelVideo src={item.videoUrl} />
        <ReelOverlay>
          <ReelHeader>{item.title}</ReelHeader>
          <ReelFooter>{item.description}</ReelFooter>
        </ReelOverlay>
      </ReelItem>
    )}
  </ReelContent>
  <ReelControls>
    <ReelPlayButton />
    <ReelMuteButton />
    <ReelPreviousButton />
    <ReelNextButton />
  </ReelControls>
  <ReelNavigation />
</Reel>

Features

  • Full-height, 9:16 aspect ratio container optimized for vertical video
  • Progress indicators showing current and total reels
  • Automatic video playback with seamless transitions
  • Support for both video and image content
  • Customizable controls for play/pause, mute/unmute, and navigation
  • Touch-friendly navigation by tapping left/right sides
  • Composable architecture for custom overlays and content
  • Header and footer sections for metadata display
  • Social media-style interactions support
  • Keyboard accessibility for all controls
  • Auto-advance to next reel when current finishes
  • Responsive design that scales with viewport height

Examples

Reel with Images

Display a series of images with automatic timing and transitions.

Custom Reel

Fully customized reel with social media-style interface including author info, likes, comments, and share buttons.

Minimal Reel

Simple reel with just video content, progress bar, and navigation.