snapcn
36 components
DocsComponentsTemplatesVideo EditorNewShowcaseMarketplaceRoadmapChangelog

Getting started

IntroductionInstallationAgent skill
GitHub

Star snapcn

Free, open-source components.

Production-ready Remotion animations, transitions and backgrounds — you own the code.

Star on GitHubXFollow

MIT licensed · own your code.

© 2026 snapcn

Loading
snapcn
36 components
DocsComponentsTemplatesVideo EditorNewShowcaseMarketplaceRoadmapChangelog

Getting started

IntroductionInstallationAgent skill
GitHub

Star snapcn

Free, open-source components.

Production-ready Remotion animations, transitions and backgrounds — you own the code.

Star on GitHubXFollow

MIT licensed · own your code.

© 2026 snapcn

DocsComponentsTemplatesVideo EditorNewShowcaseMarketplaceRoadmapChangelog
Getting startedIntroductionInstallationAgent skill

Roster Grant

Three rows of roster cards stream past a call to action, a pointer walks in and clicks it, and the monograms start turning to the accent one every seven frames

The "and everyone gets it" shot. The outer rows stream in opposite directions, the middle row parts around a single button, a pointer arrives and presses it, the button flips to the accent, and a beat later the roster starts lighting up — top row, middle, bottom, top, bottom, middle, one every seven frames, so it reads as a system granting rather than a list iterating.

The camera and the middle row run off one clock. Fitted separately off the reference, the pull-back wanted a 0.75s exponential and the gap the middle row leaves around the button wanted a 0.75s exponential; two eases that agree are one ease. The outer rows deliberately do not share it — the bottom row spends a quarter of its travel in the first 0.3s and the top row does not, so the two sides are never symmetric about the button and the frame never settles into a pattern.

Installation

pnpm
$ pnpm dlx shadcn@latest add @snapcn/roster-grant

Needs an existing Remotion project and a components.json. Two-minute setup if this is your first snapcn component.

Component code

The exact file shadcn add copies into your project.

Usage

// src/Root.tsx
import { Composition } from "remotion";
import { RosterGrant } from "@/components/snap-cn/roster-grant";

const Grant = () => (
  <RosterGrant
    label="Give access"
    rows={[
      [
        { name: "Alice Johnson", role: "Backend Engineer" },
        { name: "Frank Liu", role: "Data Engineer" },
        { name: "Bob Chen", role: "Frontend Engineer" },
        { name: "Noah Mitchel", role: "Growth Marketer" },
      ],
      // …two more rows; each repeats across the frame
    ]}
  />
);

export const RemotionRoot = () => (
  <Composition
    id="RosterGrant"
    component={Grant}
    durationInFrames={120}
    fps={30}
    width={1280}
    height={720}
    defaultProps={{}}
  />
);

Props

proptypedefaultwhat it does
rowsRosterEntry[][]the snapcn registryThree rows of { name, role, initials? }. Each row repeats across the frame; four entries per row is enough that no row visibly tiles.
labelstring"Install all"The button's copy. The button is content-sized, and the pointer's landing point moves with its trailing edge.
accentColorstringtheme.primaryThe colour the button and the monograms turn.
theme / modePartial<SnapCnTheme> / "light" | "dark"design systemToken overrides.
fontFamilystringInterA face from the registry's font list, or one you have loaded.
speednumber11 is the measured speed.

Timing

Every number is read off the reference at 30fps.

beatsecondswhat moves
settle0 – 3.0camera 1.184 → 1, middle row closing on the button
approach0 – 1.32pointer arrives, in two moves rather than one
press1.62 – 2.33button 1 → 0.931 → 1 — down in 0.18s, back in 0.53s
flip1.69button goes accent, on one frame, no crossfade
leave2.05 – 3.1pointer out to the bottom right
grant2.33 + 0.233none monogram per step
push3.0 – 4.0the whole scene pans left, accelerating

The press is three times as long coming up as going down. Symmetric, it stops feeling like a click and starts feeling like a bounce.

More in this category

  • Count GridA grid of cards rushes in under a horizontal smear and settles on five, then the camera pulls back a fraction while every empty cell fills in from the middle out and the count jumps from five to five hundred
  • Wordmark CutA wordmark twice the width of the frame, cooling from a lit gradient to ink as it settles, then a hard cut onto its last letters and the dot — nearer, shallower, and pushing in
  • Announce TitleA four-shot launch title — the eyebrow rushes past the camera on a receding type plane, the name assembles on paper, and a macro pan cuts wide as the tagline builds itself last word first
  • Status CycleA status pill whose label rolls behind a hard clip while its width springs past the target and back, then the field crossfades to a column of chips stepping up from below
  • Product HeroCinematic product-launch hero — two cards slide into formation as the headline reveals above
  • Orbit GalleryA ring of feature cards orbits a central product mark, each rotating upright as it swings to the front

Get the next component in your inbox

New free components as they ship, and the pro pack first when it lands. One email a week at most, never a sponsored one.