Type Repeater
An After Effects style repeater on a word, where copies unfold into a tunnel, a spiral or a fan behind it, breathe, then fold back into the word
$ pnpm dlx shadcn@latest add @remocn/type-repeaterUsage
// src/Root.tsx
import { AbsoluteFill, Composition } from "remotion";
import { TypeRepeater } from "@/components/remocn/type-repeater";
const Beat = () => (
<AbsoluteFill style={{ backgroundColor: "#ff4d1a" }}>
<TypeRepeater text="Repeat" mode="tunnel" color="#111111" accent="#fafafa" />
</AbsoluteFill>
);
export const RemotionRoot = () => (
<Composition
id="TypeRepeater"
component={Beat}
durationInFrames={100}
fps={30}
width={1280}
height={720}
/>
);Copy 0 is the word itself and never moves. Every further copy gets one more step of the mode's transform, scaled by the spread:
tunnelgrows each copy by 1.2× around the center, a zoom tunnel behind the word.spiralgrows each copy by 1.1× and turns it 12°.fanturns copies 11° to alternating sides around a pivot below the word.
The word comes in over ten frames. The spread opens over frames 10 to 34 with
a small overshoot, breathes by 6% until frame 70, and folds back to zero by
frame 90. Copies step from color toward accent and fade with their index.
With outline on, the copies are outlines built from their filled glyphs by
an SVG filter, which keeps the variable font's overlapping contours out of
sight.
The component paints no background and centers the word in its parent. Sizes
scale with height / 720.
Props11
| Prop | Type | Default |
|---|---|---|
| text | string"Repeat" The word to repeat | |
| mode | "tunnel" | "spiral" | "fan""tunnel" The repeater transform | |
| copies | number12 Number of copies including the word | |
| fontSize | number110 Font size in reference px at 720p | |
| fontWeight | number800 Font weight | |
| fontFamily | stringInter Font family | |
| color | string"#fafafa" Color of the word and the first copies | |
| accent | string"#D97757" Color the last copy steps to | |
| outline | booleantrue Draw the copies as outlines | |
| speed | number1 Timeline speed multiplier | |
| className | string— Optional className passed to the wrapper | |
- textstring
The word to repeat
Default
"Repeat" - mode"tunnel" | "spiral" | "fan"
The repeater transform
Default
"tunnel" - copiesnumber
Number of copies including the word
Default
12 - fontSizenumber
Font size in reference px at 720p
Default
110 - fontWeightnumber
Font weight
Default
800 - fontFamilystring
Font family
Default
Inter - colorstring
Color of the word and the first copies
Default
"#fafafa" - accentstring
Color the last copy steps to
Default
"#D97757" - outlineboolean
Draw the copies as outlines
Default
true - speednumber
Timeline speed multiplier
Default
1 - classNamestring
Optional className passed to the wrapper