Free As In

A big word is glossed line by line, each new line pushing the last one up.

Installation
$ pnpm dlx shadcn@latest add @remocn/free-as-in

Usage

tsx
// src/Root.tsx
import { Composition } from "remotion";
import { FreeAsIn } from "@/components/remocn/free-as-in";
 
const FreeAsInScene = () => <FreeAsIn word="Free" glosses={["as in beer.", "as in speech.", "as in no seats.", "as in yours."]} />;
 
export const RemotionRoot = () => (
  <Composition
    id="FreeAsIn"
    component={FreeAsInScene}
    durationInFrames={150}
    fps={30}
    width={1280}
    height={720}
  />
);

A big word fades in on the left, then a series of short glosses slide in one at a time beside it, each pushing the previous gloss up and dimming it; the last gloss lands in the accent color. Pass word and a glosses array. The gloss pacing stretches to fill the composition, so give it about 150 frames.

Props6

PropTypeDefault
word
string"Free"

The big headline word.

glosses
string[]DEFAULT_GLOSSES

Short lines that follow the word; the last one is highlighted.

accent
string—

Color of the last gloss; defaults to the theme accent.

background
string—

Stage background color; overrides the theme ground.

speed
number1

Playback speed multiplier.

theme
"dark" | "light""dark"

Light or dark palette.

  • wordstring

    The big headline word.

    Default"Free"

  • glossesstring[]

    Short lines that follow the word; the last one is highlighted.

    DefaultDEFAULT_GLOSSES

  • accentstring

    Color of the last gloss; defaults to the theme accent.

  • backgroundstring

    Stage background color; overrides the theme ground.

  • speednumber

    Playback speed multiplier.

    Default1

  • theme"dark" | "light"

    Light or dark palette.

    Default"dark"