feat(videos): add X Launch scenes 5-7 (Privacy, Features, CTA)

This commit is contained in:
SnapOtter
2026-05-08 16:44:46 +08:00
parent fe4309bad9
commit 30ad822853
3 changed files with 67 additions and 0 deletions
@@ -0,0 +1,31 @@
import type React from "react";
import { AbsoluteFill } from "remotion";
import { FeaturePill } from "@/components/FeaturePill";
const FEATURES = [
{ label: "Batch Processing", x: 340, y: 380, from: "left" as const },
{ label: "Pipeline Automation", x: 560, y: 380, from: "right" as const },
{ label: "REST API", x: 340, y: 440, from: "left" as const },
{ label: "55+ Input Formats", x: 560, y: 440, from: "right" as const },
{ label: "Image Editor", x: 340, y: 500, from: "left" as const },
{ label: "One Container", x: 560, y: 500, from: "right" as const },
{ label: "Multi-arch", x: 340, y: 560, from: "left" as const },
{ label: "15 AI Models", x: 560, y: 560, from: "right" as const },
];
export const FeatureBurstScene: React.FC = () => {
return (
<AbsoluteFill>
{FEATURES.map((f, i) => (
<FeaturePill
key={f.label}
label={f.label}
enterFrame={i * 8}
targetX={f.x}
targetY={f.y}
fromDirection={f.from}
/>
))}
</AbsoluteFill>
);
};
@@ -0,0 +1,11 @@
import type React from "react";
import { AbsoluteFill } from "remotion";
import { GitHubCTA } from "@/components/GitHubCTA";
export const GitHubCTAScene: React.FC = () => {
return (
<AbsoluteFill>
<GitHubCTA labelFrame={5} logoFrame={20} taglineFrame={40} ctaFrame={60} urlFrame={75} />
</AbsoluteFill>
);
};
@@ -0,0 +1,25 @@
import type React from "react";
import { AbsoluteFill } from "remotion";
import { RotatingTaglines } from "@/components/RotatingTaglines";
import { COLOR } from "@/lib/colors";
const TAGLINES = [
"No uploads to the cloud. Ever.",
"100% local processing.",
"Works fully offline.",
"Air-gapped ready.",
];
export const PrivacyBeatScene: React.FC = () => {
return (
<AbsoluteFill>
<RotatingTaglines
lines={TAGLINES}
startFrame={0}
framesPerLine={30}
fontSize={36}
color={COLOR.accent}
/>
</AbsoluteFill>
);
};