DocsKinetic Text Reveal

Kinetic Text Reveal

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.

Installation

pnpm dlx shadcn@latest add @componentry/kinetic-text-reveal

Dependencies: framer-motion clsx tailwind-merge

Usage

API Reference

PropTypeDefault
textstring

The text content to reveal.

—
splitBy"words" | "characters" | "lines"

How the text is segmented before animation.

"words"
direction"up" | "down" | "left" | "right"

Direction each segment travels from.

"up"
distancenumber

Travel distance in pixels for hidden segments.

20
staggernumber

Delay in seconds between animated segments.

0.075
staggerFrom"start" | "end" | "center" | "edges" | "random" | number

Origin point for the stagger wave.

"start"
transitionTransition

Framer Motion transition for each animated segment.

—
blurboolean

Whether hidden segments start blurred.

true
autoPlayboolean

Starts the reveal automatically after mount.

true
delaynumber

Automatic reveal delay in seconds.

0
classNamestring

Additional CSS classes for the outer element.

—
segmentClassNamestring

CSS classes applied to each animated text segment.

—
maskClassNamestring

CSS classes applied to each clipping wrapper.

—
onRevealStart() => void

Callback fired when the reveal begins.

—
onRevealComplete() => void

Callback fired after the last segment completes.

—

Keep in mind

This component is inspired by various open-source projects and patterns. Please verify licenses and implementation details before using in production.

Need a custom component?

I build bespoke UI components & websites tailored to your brand.

DM me on X
PreviousFlipping Word SwapNextLetter Cascade
Interfaces that move with intentInterfaces that move with intent
import { KineticTextReveal } from "@/components/ui/kinetic-text-reveal"
 
<KineticTextReveal
  text="Interfaces that move with intent"
  className="text-4xl font-bold tracking-tight"
/>