A polished text reveal that splits copy by words, characters, or lines, then brings each segment in with readable directional motion, soft blur, and configurable stagger timing.
pnpm dlx shadcn@latest add @componentry/kinetic-text-reveal| Property | Type | Default |
|---|---|---|
textThe text content to reveal. | string | — |
splitByHow the text is segmented before animation. | "words" | "characters" | "lines" | "words" |
directionDirection each segment travels from. | "up" | "down" | "left" | "right" | "up" |
distanceTravel distance in pixels for hidden segments. | number | 20 |
staggerDelay in seconds between animated segments. | number | 0.075 |
staggerFromOrigin point for the stagger wave. | "start" | "end" | "center" | "edges" | "random" | number | "start" |
transitionFramer Motion transition for each animated segment. | Transition | — |
blurWhether hidden segments start blurred. | boolean | true |
autoPlayStarts the reveal automatically after mount. | boolean | true |
delayAutomatic reveal delay in seconds. | number | 0 |
classNameAdditional CSS classes for the outer element. | string | — |
segmentClassNameCSS classes applied to each animated text segment. | string | — |
maskClassNameCSS classes applied to each clipping wrapper. | string | — |
onRevealStartCallback fired when the reveal begins. | () => void | — |
onRevealCompleteCallback fired after the last segment completes. | () => void | — |
View source
Keep in mind
Need a custom component?
I build bespoke UI components & websites tailored to your brand.
import { KineticTextReveal } from "@/components/ui/kinetic-text-reveal"<KineticTextReveal
text="Interfaces that move with intent"
className="text-4xl font-bold tracking-tight"
/>