"use client"; import { ScrollReveal } from "@/components/ScrollReveal"; import { useInView } from "@/hooks/useInView"; import { useMockupProgress } from "@/hooks/useMockupProgress"; function LayersIcon({ className }: { className?: string }) { return ( ); } function SlidersIcon({ className }: { className?: string }) { return ( ); } function CloudUploadIcon({ className }: { className?: string }) { return ( ); } function ImageIcon({ className }: { className?: string }) { return ( ); } function AudioIcon({ className }: { className?: string }) { return ( ); } const STEPS = [ { number: 1, title: "Single/Batch creation", desc: "One image, many audios, each becomes a separate video.", Icon: LayersIcon, }, { number: 2, title: "Per-video settings", desc: "Title, tags, privacy, and category for every upload.", Icon: SlidersIcon, }, { number: 3, title: "Direct upload", desc: "Connect YouTube once and publish automatically.", Icon: CloudUploadIcon, }, ] as const; function CheckIcon({ className }: { className?: string }) { return ( ); } function AppMockup() { const phaseOneMs = 3000; const phaseTwoMs = 2000; const initialWidth = "20%"; const midWidth = "45%"; const { ref, inView } = useInView(); const { phase, processed, transitionMs } = useMockupProgress(inView, phaseOneMs, phaseTwoMs); const width = phase === 0 ? initialWidth : phase === 1 ? midWidth : "100%"; return (
{processed ? ( "Processed" ) : ( <> Processing . . . > )}
{desc}
From a single track to a full batch, Songs2YT walks you through creating and publishing videos to YouTube without touching a video editor.