Charcoal UI

Fold Text

Each line folds down into place like a hinge, from edge-on to flat, one after another as the block scrolls into view. A small spring overshoot makes it settle like a real hinge.

  • Category: Text
  • Licence: Charcoal UI Pro
  • Built with: React 19, Tailwind CSS 4, Motion
  • Dependencies: motion, clsx, tailwind-merge

Examples

Fold Text

Press Replay to fold it in again.

API reference

PropTypeDefaultDescription
linesstring[]—One string per line.
staggernumber0.12Seconds between lines.
durationnumber0.7Seconds for one line to fold flat.
oncebooleantrueAnimate the first time only.
hinge"top" | "bottom""top"Which edge the line swings on.
perspectivenumber900Perspective distance in px; smaller is more dramatic.
delaynumber0
asElementType"div"
classNamestring—
lineClassNamestring—

About Fold Text

Fold Text folds each line down into place like a hinge, from edge-on to flat, one after another as the block scrolls into view, with a small spring overshoot.

Fold Text is a text animation for React 19, styled with Tailwind CSS 4 and animated with Motion. It drops into Next.js, Vite, Remix or Astro through the shadcn CLI as a single file you own.

When to use Fold Text

  • Editorial headlines.
  • Section intros.
  • Quotes.
  • Agency case studies.

How it works

Lines rotateX from minus ninety degrees with perspective and a stagger. The text is plain lines in the DOM.

The real text stays in the page for screen readers and search engines; the animated letters are decorative copies marked aria-hidden. With prefers-reduced-motion on, it holds still or settles instantly instead of animating.

Customizing Fold Text

Every prop is documented in the API reference above with its type and default. The ones you will reach for first are listed here.

The Customize panel next to the preview lets you change stagger, duration, hinge, once live, and the Code tab updates to match, so the snippet you copy already carries your values.

  • lines (string[]): One string per line.
  • stagger (number, default 0.12): Seconds between lines.
  • duration (number, default 0.7): Seconds for one line to fold flat.
  • once (boolean, default true): Animate the first time only.
  • hinge ("top" | "bottom", default "top"): Which edge the line swings on.
  • perspective (number, default 900): Perspective distance in px; smaller is more dramatic.

The example on this page

  • Fold Text: Press Replay to fold it in again.

Goes well with Fold Text

These text pieces share its tokens and motion language, so they sit together on one page without clashing.

  • Scramble Text: React scramble text: characters cycle through glyphs before locking in
  • Rotating Text: React rotating text that rolls between words letter by letter and resizes smoothly
  • Highlight Text: React highlight text: a marker sweep, hand-drawn underline or scribbled circle on scroll
  • Text Morph: React text morph: shared letters glide to new spots while the rest blur in and out
  • Split Flap: A React split-flap display: every cell flips through the drum to its letter

Install Fold Text

npx shadcn@latest add @charcoal/fold-text

Fold Text is part of Charcoal UI Pro. One seat unlocks all 300 Pro components, 107 landing-page sections and 100 full templates, for every personal and client project, with updates included. Add the @charcoal registry once with your access token, then the command above copies fold-text.tsx into components/ui and installs clsx, tailwind-merge.

You own the file you install: no runtime package, no lock-in, nothing to keep in sync. Change it however your product needs.

See Charcoal UI Pro pricing · Pro setup

Frequently asked questions

Can fold text handle multiple lines?
Yes. Pass an array of lines and each folds down in turn with a stagger, landing with a small spring overshoot like a real hinge.
How do I install Fold Text?
Fold Text is part of Charcoal UI Pro. Add the @charcoal registry to components.json with your access token, then run npx shadcn@latest add @charcoal/fold-text. It copies fold-text.tsx into components/ui and installs motion, clsx, tailwind-merge.
Is Fold Text free for commercial use?
Fold Text needs a Charcoal UI Pro seat, monthly or a one-time lifetime price. A seat covers unlimited personal and commercial projects, including client work, and every future Pro component.
Does Fold Text work with Next.js?
Yes. It is a client component for React 19 styled with Tailwind CSS 4, so it works in the Next.js App Router and Pages Router, Vite, Remix and Astro.
Can an AI coding agent install Fold Text?
Yes. Connect the Charcoal UI MCP server (https://charcoalui.com/mcp) to Claude Code, Cursor or any MCP client; get_component returns Fold Text's props and get_install_command returns the exact command.

Fold Text as Markdown · llms.txt