snapcn
23 components
DocsComponentsTemplatesVideo EditorShowcaseMarketplaceRoadmapChangelog

Getting started

IntroductionInstallationAgent skill
GitHub

Star snapcn

Free, open-source components.

Production-ready Remotion animations, transitions and backgrounds — you own the code.

Star on GitHubXFollow

MIT licensed · own your code.

© 2026 snapcn

DocsComponentsTemplatesVideo EditorShowcaseMarketplaceRoadmapChangelog
Getting startedIntroductionInstallationAgent skill

Text Build

Words enter one at a time while the already-placed words physically reflow to stay centered — on the x axis as a growing line or the y axis as a growing stack

Unlike a plain text reveal, every word that is already on screen moves to make room: each new word enters (from the right on axis="x", from above on axis="y") and pushes the placed words through a re-centered layout, with a soft blur pulse while they travel.

Installation

pnpm
$ pnpm dlx shadcn@latest add @snapcn/text-build

Component code

The exact file shadcn add copies into your project.

Usage

// src/Root.tsx
import { Composition } from "remotion";
import { TextBuild } from "@/components/snap-cn/text-build";

const TextBuildScene = () => (
  <TextBuild text="Ship. Test. Deploy. Repeat." axis="x" fontSize={72} />
);

export const RemotionRoot = () => (
  <Composition
    id="TextBuild"
    component={TextBuildScene}
    durationInFrames={75}
    fps={30}
    width={1280}
    height={720}
  />
);

Set axis="y" to build a centered stack of rows instead of a single line:

<TextBuild text="Build from above." axis="y" />

Props

PropTypeDefaultDescription
textrequired
string—Phrase to build; split into words on spaces
axis
"x" | "y""x"Build direction: "x" grows a centered line (measured word widths), "y" grows a centered stack of fontSize-tall rows
entryOffset
number88 (x) / 28 (y)Distance in px a new word travels in from — the right on x, above on y
gap
number10 (x) / 12 (y)Space in px between words (x) or between rows (y)
firstDuration
number10Frames the first word takes to settle
pushDuration
number13Frames each subsequent word takes to enter and push the layout
entryScale
number0.992Scale a word enters at before settling to 1
entryBlur
number3.5 (x) / 2.4 (y)Blur in px a word enters with
reflowBlur
number0.8Peak blur in px on already-placed words while they reflow
easing
[number, number, number, number][0.2, 0.8, 0.2, 1]Cubic-bezier control points used for every move
fontSize
number72Font size in pixels (also the row height on the y axis)
color
stringtheme.foregroundText color (any valid CSS color)
fontWeight
number600CSS font-weight
speed
number1Playback-rate multiplier applied to the frame clock
className
string—Optional className passed to the wrapping element
theme
Partial<SnapCnTheme>—Design-system token overrides. Anything you leave out falls back to the shadcn defaults
mode
"light" | "dark"—Which end of the design system to resolve tokens against