mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
feat(videos): add X Launch scenes 5-7 (Privacy, Features, CTA)
This commit is contained in:
@@ -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>
|
||||
);
|
||||
};
|
||||
Reference in New Issue
Block a user