Split-Flap Board

Sleep in Paris, wake in Vienna
About this component

Split-Flap Board

A departure board of CSS 3D split-flap characters that flick through random glyphs before settling on each phrase, rippling across the columns and cycling through a list. Columns, rows, timing, flip count, ripple, capitals and the flap, ink and split colors are props. Transforms only from one loop that sleeps between phrases; it pauses offscreen and shows the first phrase still for reduced motion.

Usage

The import and the props worth knowing about, in one place.

import { SplitFlap } from "@/components/beste/component/split-flap";

<div className="rounded-2xl bg-[#121211] p-6">
  <SplitFlap phrases={["Sleep in Paris, wake in Vienna", "Lisbon to Madrid, 22:05"]} />
</div>

<SplitFlap
  phrases={["Now boarding", "Platform 4"]}
  columns={12}          // characters per row
  interval={4000}       // milliseconds per phrase
  flips={3}             // random glyphs before each character settles
  stagger={0.8}         // a slower ripple across the board
  flapColor="#1b2a3a"
  inkColor="#ffd166"
/>

Props

Read from the component's own type, so this cannot drift from what it accepts.

PropTypeDefaultDescription
phrases*string[]—Phrases the board flips through, wrapped into rows automatically
columnsnumber—Characters per row
rowsnumber—Most rows a phrase may take
intervalnumber—Milliseconds each phrase stays on the board
flipsnumber—Most random glyphs a cell shows before it settles
staggernumber—How far the flips ripple across the board, 0 (all at once) to 1 (a slow wave)
uppercaseboolean—Show phrases in capitals, the way departure boards set them
flapColorstring—Color of the flaps
inkColorstring—Color of the characters
splitColorstring—Color of the hairline split across each flap
pausedboolean—Freeze the board on its current phrase
classNamestring—

More Text components

View all Text

Seen from across the street. Read by someone in a hurry. Remembered for years after.