import React from "react"; import { useCurrentFrame, useVideoConfig, AbsoluteFill, interpolate, Easing, } from "remotion"; import type { RemotionScene } from "../Root"; import { THEMES } from "../base/theme/colors"; import { Background } from "../base/components/background"; import { SubtitleBar } from "../base/components/subtitle-bar"; import { AnimatedText } from "../base/components/animated-text"; import { Watermark } from "../base/components/watermark"; import { ProductShowcase } from "./components/product-showcase"; import { CTAOverlay } from "./components/cta-overlay"; interface MarketingSceneProps { scene: RemotionScene; sceneIndex: number; totalScenes: number; totalFrames: number; title: string; } const MarketingScene: React.FC = ({ scene, sceneIndex, totalScenes, totalFrames, title, }) => { const frame = useCurrentFrame(); const colors = THEMES.marketing; const fadeOpacity = interpolate( frame, [0, 8, scene.endFrame - scene.startFrame - 8, scene.endFrame - scene.startFrame], [0, 1, 1, 0], { extrapolateLeft: "clamp", extrapolateRight: "clamp" } ); const isLastScene = sceneIndex === totalScenes - 1; const featureKeyframes = scene.keyframes.filter( (kf) => kf.type === "text" || kf.type === "highlight" ); return ( {/* Decorative glow */}
{/* Brand label */}
{title}
{/* Content */}
{isLastScene ? ( // CTA scene ) : ( <> {featureKeyframes.length > 0 && ( kf.content)} accentColor={colors.primaryLight} /> )} )}
{scene.wordTimestamps.length > 0 && ( )} ); }; export default MarketingScene;