Captions
Compositions
- Hero Device Assemble
- Ecosystem Constellation
- Infinite Bento Pan
- Product Launch Trailer
- Browser Flow
- AI Generation Canvas
- AI Generate Overlay
- Live Code Compilation
- Terminal To Browser Deploy
- Image Expand To Fullscreen
- Format Morph
- Node Reveal
- Dashboard Populate
- Pipeline Journey
- Pricing Tier Focus
- Landing Code Showcase
Core Primitives
Transitions
Typography
- Blur Reveal
- Staggered Fade Up
- Masked Slide Reveal
- Tracking In
- Inline Highlight
- Marker Highlight
- Shimmer Sweep
- Typewriter
- Text Fade Replace
- Slot Machine Roll
- Infinite Marquee
- Perspective Marquee
- Matrix Decode
- RGB Glitch Text
- Strikethrough Replace
- Blur Out Up
- Bottom Up Letters
- Top Down Letters
- Per Character Rise
- Soft Blur In
- Micro Scale Fade
- Scale Down Fade
- Focus Blur Resolve
- Spring Scale In
- Line by Line Slide
- Mask Reveal Up
- Short Slide Right
Prerequisites
A project with Editframe set up.
Video components
Run the following command to add any video component:
$ pnpm dlx shadcn@latest add @framecn/cursor-flow
Import and use the component:
import { CursorFlow } from "@/components/framecn/cursor-flow";
export function DemoVideo() {
return <CursorFlow />;
}UI primitives
UI components and blocks install the same way. The shared framecn-ui core installs automatically as a registryDependencies entry — you do not need to install it separately.
$ pnpm dlx shadcn@latest add @framecn/button
Blocks pull in nested primitives automatically:
$ pnpm dlx shadcn@latest add @framecn/chat-flow
What gets written
| Path | Contents |
|---|---|
components/framecn/<name>.tsx | The component or block |
components/framecn/use-<name>-transition.ts | Transition hook for smooth motion (UI components) |
lib/framecn-ui/ | Shared core — timeline helpers, theme, color utilities, motion helpers |
All files are copied into your project. You own the code — edit any file freely to suit your video.
UI usage
Import and wrap in a Timegroup:
import { Timegroup } from "@editframe/react";
import { Button } from "@/components/framecn/button";
export function Scene() {
return (
<Timegroup duration="3s" mode="fixed">
<Button
from="idle"
state="success"
duration="24frames"
label="Continue"
/>
</Timegroup>
);
}See Concepts for the UI mental model.