Loading...
Loading...
Compare original and translation side by side
shadcncomponents/snap-cn/shadcncomponents/snap-cn/npx create-video@latestundefinednpx create-video@latestundefined
`@snap-cn/<name>` is the canonical namespaced form. It needs no `registries` entry — the
namespace is in the shadcn registry directory. The plain registry URL
`https://snapcn.dev/r/<name>.json` also works.
`@snap-cn/<name>`是标准的命名空间格式,无需配置`registries`条目——命名空间已包含在shadcn注册表目录中。直接使用注册表URL`https://snapcn.dev/r/<name>.json`同样有效。registryDependenciesshadcnshadcn add @snap-cn/claude-chat@snap-cn/snap-cn-ui@snap-cn/caret@snap-cn/snap-cn-uiregistryDependenciesshadcnshadcn add @snap-cn/claude-chat@snap-cn/snap-cn-ui@snap-cn/caret@snap-cn/snap-cn-uisnapcnspeedfontSizecolorfontWeightsnap-cn-uistatestylevariantthemespeed@snap-cn/snap-cn-uisnapcnspeedfontSizecolorfontWeightsnap-cn-uistatestylevariantthemespeed@snap-cn/snap-cn-uireferences/components/references/components/index.mdUse forAvoid forreferences/components/<name>.md| Category | Tier | Use for |
|---|---|---|
| Text Animations | | Reveal/replace/emphasize text ( |
| Backgrounds & Effects | | Animated foundations, one-shot effects ( |
| Shaders | | WebGL shader backdrops, frame-driven for deterministic renders ( |
| Transitions & Wipes | | Swap between two scenes ( |
| UI Blocks | | Interface sims for product demos ( |
| AI & Social Cards | | Brand/product card scenes ( |
| UI Primitives | | shadcn-style primitives for video ( |
references/components/references/components/index.mdreferences/components/<name>.md| 分类 | 层级 | 适用场景 |
|---|---|---|
| 文本动画 | | 文本的显示/替换/强调效果( |
| 背景与特效 | | 动画基础层、一次性特效( |
| 着色器 | | WebGL着色器背景,基于帧驱动实现确定性渲染( |
| 转场与擦除效果 | | 两个场景之间的切换( |
| UI模块 | | 产品演示的界面模拟( |
| AI与社交卡片 | | 品牌/产品卡片场景( |
| UI原语 | | 适用于视频的shadcn风格原语( |
snapcnsnapcnPropsBlurOutUpPropsspeed?: number1frame * speedfontSizecolorfontWeightfromtoReactNodetransitionDurationclassName?: stringPropsBlurOutUpPropsspeed?: numberframe * speedfontSizecolorfontWeightfromtoReactNodetransitionDurationclassName?: stringsnap-cn-uisnap-cn-uispeedstate"open""closed"stylevariantsizetheme?: Partial<SnapCnTheme>speedstate"open""closed"stylevariantsizetheme?: Partial<SnapCnTheme>import { interpolate, spring, useCurrentFrame, useVideoConfig } from "remotion";
const opacity = interpolate(frame, [0, 30], [0, 1], { extrapolateRight: "clamp" });
const scale = spring({ fps, frame, config: { damping: 12, mass: 1, stiffness: 100 } });
// Deterministic randomness (NEVER Math.random())
import { random } from "@remotion/random";
const jitter = random(`seed-${frame}`);import { interpolate, spring, useCurrentFrame, useVideoConfig } from "remotion";
const opacity = interpolate(frame, [0, 30], [0, 1], { extrapolateRight: "clamp" });
const scale = spring({ fps, frame, config: { damping: 12, mass: 1, stiffness: 100 } });
// 确定性随机(绝对禁止使用Math.random())
import { random } from "@remotion/random";
const jitter = random(`seed-${frame}`);import { Sequence, Series } from "remotion";
<Sequence from={30} durationInFrames={60}>
<TextReveal text="Ship it in React" />
</Sequence>
<Series>
<Series.Sequence durationInFrames={60}><SceneA /></Series.Sequence>
<Series.Sequence durationInFrames={60}><SceneB /></Series.Sequence>
</Series>import { Sequence, Series } from "remotion";
<Sequence from={30} durationInFrames={60}>
<TextReveal text="Ship it in React" />
</Sequence>
<Series>
<Series.Sequence durationInFrames={60}><SceneA /></Series.Sequence>
<Series.Sequence durationInFrames={60}><SceneB /></Series.Sequence>
</Series>1280×720 @ 30fpsLengthcomponents/index.mdNatural lengthvibetechpremiumdatacleanplayfulsocialreferences/design.md1280×720 @ 30fpscomponents/index.mdvibetechpremiumdatacleanplayfulsocialreferences/design.mdletter-spacingtext-transform: uppercaseLaunchLAUNCHblur > ~24pxtracking-inmesh-gradient-bgreferences/design.mdreferences/motion-principles.mdletter-spacingtext-transform: uppercaseLaunchLAUNCHblur > ~24pxtracking-inmesh-gradient-bgreferences/design.mdreferences/motion-principles.mdfromtoReactNodetranslateYoverflow: hiddenMath.floor(frame / 15) % 2 === 0public/staticFile('cursor.svg')avatarUrl=""coverUrl=""Math.random()setIntervaltransformtopleftremotion-best-practicesfromtoReactNodetranslateYoverflow: hiddenMath.floor(frame / 15) % 2 === 0public/staticFile('cursor.svg')avatarUrl=""coverUrl=""Math.random()setIntervaltransformtopleftremotion-best-practicesreferences/anatomy.mdreferences/anatomy.mdreferences/archetypes/index.md<TransitionSeries>references/components/index.mdvibe<Sequence durationInFrames>mesh-gradient-bgreferences/anatomy.mdreferences/anatomy.mdreferences/anatomy.mdreferences/archetypes/index.md<TransitionSeries>references/components/index.mdvibe<Sequence durationInFrames>mesh-gradient-bgreferences/anatomy.mdreferences/anatomy.mdreferences/archetypes/index.mdreferences/components/index.mdUse forAvoid forreferences/components/<name>.mdreferences/design.mdreferences/motion-principles.mdreferences/anti-patterns.mdreferences/anatomy.mdreferences/archetypes/index.mdreferences/components/index.mdreferences/components/<name>.mdreferences/design.mdreferences/motion-principles.mdreferences/anti-patterns.md