import { AbsoluteFill, interpolate, spring, useCurrentFrame, useVideoConfig, Img, staticFile } from "remotion"; import { BitcoinEffect } from "../components/BitcoinEffect"; import { AnimatedLogo } from "../components/AnimatedLogo"; export const OutroScene: React.FC = () => { const frame = useCurrentFrame(); const { fps } = useVideoConfig(); // Logo animation at top const logoSpring = spring({ frame, fps, config: { damping: 200 }, }); const logoOpacity = interpolate(logoSpring, [0, 1], [0, 1]); const logoY = interpolate(logoSpring, [0, 1], [-50, 0]); // Main SVG Logo const svgSpring = spring({ frame: frame - 0.5 * fps, fps, config: { damping: 15, stiffness: 100 }, }); const svgScale = interpolate(svgSpring, [0, 1], [0.8, 1]); const svgOpacity = interpolate(svgSpring, [0, 1], [0, 1]); // URL Animation - delayed and prominent const urlSpring = spring({ frame: frame - 2 * fps, fps, config: { damping: 20, stiffness: 100 }, }); const urlScale = interpolate(urlSpring, [0, 1], [0.5, 1]); const urlOpacity = interpolate(urlSpring, [0, 1], [0, 1]); // URL pulsing effect const urlPulse = interpolate( Math.sin((frame - 2 * fps) * 0.05), [-1, 1], [1, 1.05] ); // Call to action const ctaSpring = spring({ frame: frame - 1 * fps, fps, config: { damping: 200 }, }); const ctaOpacity = interpolate(ctaSpring, [0, 1], [0, 1]); const ctaY = interpolate(ctaSpring, [0, 1], [30, 0]); // Footer appears last const footerSpring = spring({ frame: frame - 4 * fps, fps, config: { damping: 200 }, }); const footerOpacity = interpolate(footerSpring, [0, 1], [0, 1]); return ( {/* Wallpaper Background */}
{/* Bitcoin Effect */} {/* Animated Logo Top */}
{/* Content */}
{/* EINUNDZWANZIG Logo SVG */}
{/* Call to Action Text */}

Werde jetzt Mitglied!

{/* URL - MAIN FOCUS - Very Large and Prominent */}
{/* Glow effect behind URL */}
{/* URL Container with border */}

verein.einundzwanzig.space

{/* Accent line */}
{/* Footer Info */}

Mitglieder-Vorteile:

🔗 Nostr Relay • ✓ NIP-05 • ⚡ Lightning Watchtower

); };