WebberUI

Split Flap Board

Vestaboard-style mechanical split-flap character switching, flipping cell by cell into place, with rotation across multiple messages.

This is a WebberUI Pro component

Free during the launch campaign: sign up or sign in, then hit “Copy install command” in the preview above and it installs straight away — no payment, no credit card. The command below returns 401 while you are signed out.

How to install Pro components →See the plans →

The mechanical split-flap effect of an airport or railway station board. Each cell flips forward one step at a time along the character set from its current glyph, and the differing flip counts make the cells settle at staggered moments, producing the classic mechanical reveal ripple.

Loading preview…
npx shadcn@latest add "https://webberui.com/r/split-flap-board.json?t=<install token>"

Playground

Tune the props live — the code snippet updates as you go, so you can dial in the look you want before copying it.

46
70
45
<SplitFlapBoard />

Installation

npx shadcn@latest add "https://webberui.com/r/split-flap-board.json?t=<install token>"

Or, once registries are configured in components.json, install it as @webberui/split-flap-board.

Usage

import { SplitFlapBoard } from "@/components/ui/split-flap-board";

<SplitFlapBoard text="ON TIME" />

Multiple messages rotate automatically according to interval:

<SplitFlapBoard
  messages={["DEPARTURES", "NOW BOARDING", "GATE A12"]}
  interval={2600}
  cols={12}
/>

Use \n to break lines and lay out a multi-row board, and background and color to change the palette.

Props

PropTypeDefaultDescription
textstring""The text to display, with \n supported for line breaks; ignored when messages is provided
messagesstring[]Multiple messages rotated through in order
intervalnumber2800Rotation interval (milliseconds); only takes effect when messages has more than one entry
colsnumberlongest lineFixed column count; when omitted, the longest line across all messages is used
align"left" | "center""center"How each line is aligned within the columns
flipDurationnumber70Duration of a single flip (milliseconds); smaller flips faster
staggernumber45Additional start delay per column to the right (milliseconds)
sizenumber46Height of a single cell (pixels); width and font size are derived from it
charsetstringletters, digits, symbolsThe character set that can be flipped to; the first cell must be a space
backgroundstring"#161616"Flap background color
colorstring"#f5f5f4"Character color

Accessibility

  • When the user has "reduce motion" enabled at the system level, the flip animation is turned off and the final characters are shown directly
  • The board carries role="img" and an aria-label (the complete message text), and individual flap cells are hidden from assistive technology (aria-hidden)
  • The ripple is driven by pseudo-random start delays derived from the cell coordinates, avoiding SSR and client hydration mismatches

On this page