Typed Split Wipe

A centered cursorless type build exits through opposing fixed-layout glyph wipes

Installation

$ pnpm dlx shadcn@latest add @remocn/typed-split-wipe

Usage

The enter renders only the currently typed substring, so every hard character step remains centered. At exitAt, the component switches to a visually identical fixed layout. The prefix clips from right to left and suffix words clip from left to right with a stagger. While those gaps open, the anchor travels left by anchorShift, making the empty spaces on its two sides deliberately uneven before it closes last from both sides.

// src/Root.tsx
import { Composition } from "remotion";
import { TypedSplitWipe } from "@/components/remocn/typed-split-wipe";
 
const TypedSplitWipeScene = () => (
  <TypedSplitWipe
    prefix="Introducing"
    anchor="X"
    suffix="Ads MCP"
  />
);
 
export const RemotionRoot = () => (
  <Composition
    id="TypedSplitWipe"
    component={TypedSplitWipeScene}
    durationInFrames={75}
    fps={30}
    width={1280}
    height={720}
  />
);

With Backdrop

The component is transparent. The reference uses warm white text on an almost-black field.

import { Composition } from "remotion";
import { Backdrop } from "@/components/remocn/backdrop";
import { TypedSplitWipe } from "@/components/remocn/typed-split-wipe";
 
const TypedSplitWipeScene = () => (
  <Backdrop fill={{ type: "color", value: "#101010" }}>
    <TypedSplitWipe
      prefix="Introducing"
      anchor="X"
      suffix="Ads MCP"
    />
  </Backdrop>
);
 
export const RemotionRoot = () => (
  <Composition
    id="TypedSplitWipe"
    component={TypedSplitWipeScene}
    durationInFrames={75}
    fps={30}
    width={1280}
    height={720}
  />
);

Props

PropTypeDefaultDescription
prefixrequired
stringLeading text typed first and clipped right-to-left on exit
anchorrequired
stringCentral segment that remains visible longest
suffixrequired
stringSpace-delimited trailing words clipped left-to-right with a stagger
typeFrames
number30Frames used to type the complete line
exitAt
number50Frame on which the segmented exit begins
exitFrames
number20Frames used by the prefix wipe and final anchor close
wordStagger
number4Delay in frames between suffix word wipes
anchorShift
number-72Horizontal anchor travel in pixels during the prefix wipe
fontSize
number42Font size in pixels
fontWeight
number400CSS font-weight
color
string"#e8e8e8"Text color
speed
number1Playback speed multiplier
className
stringOptional className passed to the text container