Video

A product video with light and dark sources.

Source

Product demo

The notebook clip follows the site theme.

Open a notebook beside your current page.

Manual playback

Set autoPlay={false} to show the poster and native controls. The video starts when the user presses play.

Usage

These are defaults, not laws. Break one when you have a good reason, or when it makes the design more cohesive or more interesting.

  • Use Video for video files. For Wistia, use WistiaVideo.
  • Give every video a label. For speech, add caption tracks.
  • Set darkSrc when the clip shows UI, so it matches dark mode.
  • Autoplay clips are muted and loop. Autoplay is off for users who prefer reduced motion.

API

Video is a site component. It accepts native video props and forwards its ref to the video element.

Video

PropTypeDefaultDescription
srcstring–Required. The direct video URL for light mode and the fallback for dark mode.
darkSrcstring–The direct video URL for dark mode.
poster / darkPosterstring–Poster images. Dark mode uses darkPoster when supplied.
labelstring–Required. The accessible name of the video.
captionReactNode–Visible text below the video. Also describes the video for assistive technology.
framebooleantrueAdds the shared glass surface, border, and shadow.
loading'lazy' | 'eager''lazy'Sets when the video receives its source.
autoPlaybooleantrueStarts playback near the viewport unless reduced motion is active.
loopbooleanautoPlayRepeats the clip. Set false to play it once.
muted / playsInlinebooleantrueMutes sound and permits inline playback.
controlsboolean!autoPlay || reduced motionOverrides native control visibility. Autoplay clips without native controls show a play/pause button unless reduced motion is active.
preload'none' | 'metadata' | 'auto''none'Sets the browser preload hint after the source attaches.
className / wrapperClassNamestring–Styles the video or its outer figure.
childrenReactNode–Native track elements for timed captions or descriptions. Do not add source elements; use src and darkSrc.