Files
Reflect/feels-promo/src/Root.tsx
2026-01-26 18:03:51 -06:00

171 lines
5.9 KiB
TypeScript

import { Composition } from "remotion";
import { FeelsPromoV1 } from "./FeelsPromo";
import { ConceptASelfAwareness } from "./ConceptA-SelfAwareness";
import { ConceptBNoJournalJournal } from "./ConceptB-NoJournalJournal";
import { ConceptCYearInFeelings } from "./ConceptC-YearInFeelings";
import { ConceptDAlwaysThere } from "./ConceptD-AlwaysThere";
import { ConceptEMakeItYours } from "./ConceptE-MakeItYours";
import { ConceptFPrivacyFirst } from "./ConceptF-PrivacyFirst";
import { ConceptGStreakEffect } from "./ConceptG-StreakEffect";
// Wild concepts
import { ConceptHMoodHeist } from "./ConceptH-MoodHeist";
import { ConceptIRetroArcade } from "./ConceptI-RetroArcade";
import { ConceptJConspiracy } from "./ConceptJ-Conspiracy";
import { ConceptKSportsCenter } from "./ConceptK-SportsCenter";
import { ConceptLMusical } from "./ConceptL-Musical";
export const RemotionRoot: React.FC = () => {
const fps = 30;
// V1 calculations
const sceneDuration = 3.5 * fps;
const transitionDuration = Math.round(0.6 * fps);
const outroDuration = Math.round(2.5 * fps);
const v1TotalDuration =
sceneDuration * 7 + outroDuration - transitionDuration * 7;
return (
<>
{/* ═══════════════════════════════════════════════════════════════
ORIGINAL PROMO
═══════════════════════════════════════════════════════════════ */}
<Composition
id="FeelsPromoV1"
component={FeelsPromoV1}
durationInFrames={v1TotalDuration}
fps={fps}
width={1080}
height={1920}
/>
{/* ═══════════════════════════════════════════════════════════════
STANDARD CONCEPTS (A-G)
═══════════════════════════════════════════════════════════════ */}
{/* Concept A: 30 Seconds to Self-Awareness */}
<Composition
id="ConceptA-SelfAwareness"
component={ConceptASelfAwareness}
durationInFrames={Math.round(30 * fps)}
fps={fps}
width={1080}
height={1920}
/>
{/* Concept B: The No-Journal Journal (20s) */}
<Composition
id="ConceptB-NoJournalJournal"
component={ConceptBNoJournalJournal}
durationInFrames={Math.round(20 * fps)}
fps={fps}
width={1080}
height={1920}
/>
{/* Concept C: Your Year in Feelings (15s) */}
<Composition
id="ConceptC-YearInFeelings"
component={ConceptCYearInFeelings}
durationInFrames={Math.round(15 * fps)}
fps={fps}
width={1080}
height={1920}
/>
{/* Concept D: Always There (25s) */}
<Composition
id="ConceptD-AlwaysThere"
component={ConceptDAlwaysThere}
durationInFrames={Math.round(25 * fps)}
fps={fps}
width={1080}
height={1920}
/>
{/* Concept E: Make It Yours (20s) */}
<Composition
id="ConceptE-MakeItYours"
component={ConceptEMakeItYours}
durationInFrames={Math.round(20 * fps)}
fps={fps}
width={1080}
height={1920}
/>
{/* Concept F: Privacy First (15s) */}
<Composition
id="ConceptF-PrivacyFirst"
component={ConceptFPrivacyFirst}
durationInFrames={Math.round(15 * fps)}
fps={fps}
width={1080}
height={1920}
/>
{/* Concept G: The Streak Effect (20s) */}
<Composition
id="ConceptG-StreakEffect"
component={ConceptGStreakEffect}
durationInFrames={Math.round(20 * fps)}
fps={fps}
width={1080}
height={1920}
/>
{/* ═══════════════════════════════════════════════════════════════
WILD CONCEPTS (H-L) - OFF THE WALL CREATIVE
═══════════════════════════════════════════════════════════════ */}
{/* Concept H: The Mood Heist (25s) - Ocean's Eleven style thriller */}
<Composition
id="ConceptH-MoodHeist"
component={ConceptHMoodHeist}
durationInFrames={Math.round(25 * fps)}
fps={fps}
width={1080}
height={1920}
/>
{/* Concept I: Retro Arcade Feels (20s) - 8-bit video game */}
<Composition
id="ConceptI-RetroArcade"
component={ConceptIRetroArcade}
durationInFrames={Math.round(20 * fps)}
fps={fps}
width={1080}
height={1920}
/>
{/* Concept J: The Feels Conspiracy (20s) - Dark documentary thriller */}
<Composition
id="ConceptJ-Conspiracy"
component={ConceptJConspiracy}
durationInFrames={Math.round(20 * fps)}
fps={fps}
width={1080}
height={1920}
/>
{/* Concept K: Sports Center Emotions (20s) - ESPN broadcast parody */}
<Composition
id="ConceptK-SportsCenter"
component={ConceptKSportsCenter}
durationInFrames={Math.round(20 * fps)}
fps={fps}
width={1080}
height={1920}
/>
{/* Concept L: Feelings The Musical (25s) - Broadway musical number */}
<Composition
id="ConceptL-Musical"
component={ConceptLMusical}
durationInFrames={Math.round(25 * fps)}
fps={fps}
width={1080}
height={1920}
/>
</>
);
};