reelcn
GitHubBack to landing

Pop in

Headline whose words scale up with a springy overshoot.

A preset of Text reveal.

PopIn, label
PopIn, label thumbnail, 16:9

Installation

npx shadcn add https://www.reelcn.dev/r/pop-in.json

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

Usage

<Center>
  <PopIn text="Now in beta" size={130} />
</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.
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

  • Energetic hooks, sales and launch callouts
  • Short labels that should feel lively

Avoid

Guides

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

Source

registry/items/pop-in.tsx
/**
 * @title Pop In
 * @category text
 * @description Headline whose words scale up with a springy overshoot.
 * @duration 30
 * @use Energetic hooks, sales and launch callouts
 * @use Short labels that should feel lively
 * @avoid Calm or premium tone. Use `blur-in`
 * @tags pop, bounce, spring, scale, energetic
 * @preset text-reveal
 * @example
 * <Center>
 *   <PopIn text="Now in beta" size={130} />
 * </Center>
 */
import { TextReveal, type TextRevealProps } from "./text-reveal";

export type PopInProps = Omit<TextRevealProps, "effect" | "motion">;

export function PopIn(props: PopInProps) {
  return <TextReveal scaleFrom={0.7} {...props} effect="scale" motion="bouncy" />;
}

On this page