Echo Stack
A word focuses in at the center while outline copies of it unfold above and below and keep drifting, like the one clear line on a spinning drum
$ pnpm dlx shadcn@latest add @remocn/echo-stackUsage
// src/Root.tsx
import { AbsoluteFill, Composition } from "remotion";
import { EchoStack } from "@/components/remocn/echo-stack";
const Beat = () => (
<AbsoluteFill style={{ backgroundColor: "#0a0a0a" }}>
<EchoStack text="Bold." />
</AbsoluteFill>
);
export const RemotionRoot = () => (
<Composition
id="EchoStack"
component={Beat}
durationInFrames={120}
fps={30}
width={1280}
height={720}
/>
);The word focuses in over 14 frames. From frame 8 the echoes unfold out of it:
the column starts compressed and opens to its full pitch by frame 26. After
that the column keeps scrolling one row every cycle frames in direction,
and loops without a seam. Echoes are hidden while they pass behind the word
and fade out toward the edges, so only about echoes rows show on each side.
The echo outline is built from the filled glyphs with an SVG filter rather than
a text stroke. Variable fonts keep overlapping contours inside letters like M
and K, and a text stroke draws them. The component paints no background and
centers the word in its parent. Sizes scale with height / 720.
| Prop | Type | Default | Description |
|---|---|---|---|
text | string | "Bold." | The word at the center |
fontSize | number | 170 | Font size in reference px at 720p |
fontWeight | number | 800 | Font weight |
fontFamily | string | Inter | Font family |
color | string | "#fafafa" | Color of the main word |
echoColor | string | same as color | Outline color of the echoes |
echoes | number | 3 | Echo rows on each side before they fade out |
echoOpacity | number | 0.35 | Opacity of the nearest echo |
strokeWidth | number | 1.5 | Echo outline width in reference px |
direction | "up" | "down" | "up" | Which way the column drifts |
cycle | number | 60 | Frames for the column to move one row |
speed | number | 1 | Timeline speed multiplier |
className | string | — | Optional className passed to the wrapper |
Selection SnapNew
A thin word in a loose viewfinder snaps into a design-tool selection while it goes from Thin to Black, pops its handles and counts up a size badge
Type WallNew
Rows of one word fill the frame, run in alternating directions at different speeds in heavy, narrow and outline faces, with an accent band through the middle