Period Drop

A word rises out of its line, then a colored dot falls from above the frame, bounces with squash and stretch, and settles as the period

Installation
$ pnpm dlx shadcn@latest add @remocn/period-drop

Usage

tsx
// src/Root.tsx
import { AbsoluteFill, Composition } from "remotion";
import { PeriodDrop } from "@/components/remocn/period-drop";
 
const EndCard = () => (
  <AbsoluteFill style={{ backgroundColor: "#0a0a0a" }}>
    <PeriodDrop text="remocn" dotColor="#ff4d1a" />
  </AbsoluteFill>
);
 
export const RemotionRoot = () => (
  <Composition
    id="PeriodDrop"
    component={EndCard}
    durationInFrames={75}
    fps={30}
    width={1280}
    height={720}
  />
);

Each letter rises out of a clip at its line over 12 frames, two frames apart. At frame 20 the dot drops from above the frame and lands at frame 32 on the baseline right after the last letter. It bounces twice, each time leaving at 0.35 of its previous speed, and comes to rest at frame 47.

The dot stretches with its speed in flight and squashes on each impact, keeping its area. The stretch tops out at 1.3× and the squash at 0.78×; later impacts squash less. That is well past the 2–4% squash the motion principles suggest for UI, on purpose: the bounce is the effect.

The dot is an inline element after the word, so it lands wherever the word ends without measuring it. The component paints no background and centers the word in its parent. Sizes scale with height / 720.

Props9

PropTypeDefault
text
string"remocn"

The word before the period

fontSize
number160

Font size in reference px at 720p

fontWeight
number800

Font weight

fontFamily
stringInter

Font family

color
string"#fafafa"

Word color

dotColor
string"#D97757"

Color of the period

dotSize
number0.2

Period diameter in em

speed
number1

Timeline speed multiplier

className
string—

Optional className passed to the wrapper

  • textstring

    The word before the period

    Default"remocn"

  • fontSizenumber

    Font size in reference px at 720p

    Default160

  • fontWeightnumber

    Font weight

    Default800

  • fontFamilystring

    Font family

    DefaultInter

  • colorstring

    Word color

    Default"#fafafa"

  • dotColorstring

    Color of the period

    Default"#D97757"

  • dotSizenumber

    Period diameter in em

    Default0.2

  • speednumber

    Timeline speed multiplier

    Default1

  • classNamestring

    Optional className passed to the wrapper