Go to Shadcn Labs/snapcn
101 components
DocsComponentsTemplatesVideo EditorNewMCPNewRemotion StudioNewRoadmapChangelog
GitHub

Star snapcn

Free, open-source components.

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

Star on GitHubXFollow

46 MIT · 55 Pro · own your code.

© 2026 snapcn

DocsComponentsTemplatesVideo EditorNewMCPNewRemotion StudioNewRoadmapChangelog

Components

Every component in snapcn, ready to install.
Updated 6h ago
AllText & TitlesCaptionsLogosScreens & DevicesCharts & StatsSocial ProofScenesAI Chat Input
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro
Pro

Scenes

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 — top, middle, bottom, top, bottom, middle

Make a video
Type
Animation
Duration
4.0s
Category
Scenes
Source
snapcn

Install

$ npx shadcn@latest add @snapcn/roster-grant

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.

How it works

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.

Frequently asked questions

How do I add Roster Grant to a Remotion project?

Run npx shadcn@latest add @snapcn/roster-grant. The source is copied into components/snap-cn/ (or wherever your components.json points) with anything it depends on, and you own the code from then on — there is no runtime package to keep installed.

What is Roster Grant?

Roster Grant is a Remotion access granted animation for React. 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 — top, middle, bottom, top, bottom, middle.

What do I need before using Roster Grant?

An existing Remotion project (npx create-video@latest) with a components.json. shadcn init does not recognise Remotion, so the installation guide has you write that file by hand — it takes two minutes. The component is MIT licensed and free.