reelcn
GitHubBack to landing

Mask reveal

Headline whose words slide up from behind an invisible edge, as if uncovered by a mask.

A preset of Text reveal.

MaskReveal, headline
MaskReveal, headline thumbnail, 16:9

Installation

npx shadcn add https://www.reelcn.dev/r/mask-reveal.json

Files land in src/reelcn/ with the items it builds on.

Usage

<Center>
  <MaskReveal text="Made for vertical first" />
</Center>

Props

PropTypeDescription
font"mono" | "heading" | "body"
delaynumberFrames to wait before entering.
durationnumberEnter duration in frames. Defaults to 0.6s. Some items reuse duration for an unrelated local timing. See that item's own prop docs.
exitnumber | booleanExit at the end of the parent `<Sequence>`. false keeps it on screen, a number sets the exit length in frames.
motionMotionPersonalityOverride the theme's motion personality.
posterbooleanRenders fully entered, with no exit: for a still frame or thumbnail. Defaults to false.
holdFramesnumberDelays the start of the exit window by this many frames, for a minimum on-screen hold. Defaults to 0.
staggernumberFrames between units. Defaults at 30fps: char 1, word 2, line 5.
styleCSSProperties
classNamestring
text*string
split"word" | "char" | "line"What staggers in. line splits on "\n".
sizenumberFont size in design units.
weightnumber
colorstring
accentColorstring
accentWordsstring[]Words painted in the accent color. Case and punctuation are ignored.
align"left" | "right" | "center"
from"left" | "right" | "below" | "above"Where rise, blur and mask units travel in from.
orderStaggerOrderWhich unit enters first.
scaleFromnumberStarting scale for the scale effect: below 1 grows in, above 1 slams down.

Built from

Use

  • Editorial and cinematic titles
  • Crisp reveals where fading would feel soft

Avoid

  • Multi-line statements that should arrive line by line. Use line-slide

Guides

Components take their colors from a theme, their timing from motion props and their layout from the canvas.

Source

registry/items/mask-reveal.tsx
/**
 * @title Mask Reveal
 * @category text
 * @description Headline whose words slide up from behind an invisible edge, as if uncovered by a mask.
 * @duration 30
 * @use Editorial and cinematic titles
 * @use Crisp reveals where fading would feel soft
 * @avoid Multi-line statements that should arrive line by line. Use `line-slide`
 * @tags mask, clip, reveal, editorial, headline
 * @preset text-reveal
 * @example
 * <Center>
 *   <MaskReveal text="Made for vertical first" />
 * </Center>
 */
import { TextReveal, type TextRevealProps } from "./text-reveal";

export type MaskRevealProps = Omit<TextRevealProps, "effect">;

export function MaskReveal(props: MaskRevealProps) {
  return <TextReveal {...props} effect="mask" />;
}

On this page