Files
make-comics/app/page.tsx
T
2025-12-27 23:33:04 +01:00

71 lines
2.5 KiB
TypeScript

"use client";
import { Navbar } from "@/components/landing/navbar";
import { Footer } from "@/components/landing/footer";
import { LandingHero } from "@/components/landing/hero-section";
import { ComicCreationForm } from "@/components/landing/comic-creation-form";
import { ComicPreview } from "@/components/landing/comic-preview";
import { useState, useEffect } from "react";
export default function Home() {
const [currentPage, setCurrentPage] = useState(1);
const [prompt, setPrompt] = useState("");
const [style, setStyle] = useState("noir");
const [characterFiles, setCharacterFiles] = useState<File[]>([]);
const [isLoading, setIsLoading] = useState(false);
// Auto-loop through pages every 6 seconds
useEffect(() => {
const interval = setInterval(() => {
setCurrentPage((prev) => (prev === 4 ? 1 : prev + 1));
}, 6000);
return () => clearInterval(interval);
}, []);
const goToPage = (page: number) => {
setCurrentPage(page);
};
return (
<div className="min-h-screen bg-background flex flex-col overflow-hidden relative">
{/* Background gradient blurs */}
<div className="fixed inset-0 overflow-hidden pointer-events-none -z-10">
<div className="absolute top-[-10%] left-[-10%] w-[40%] h-[40%] bg-indigo/10 rounded-full blur-[120px]" />
<div className="absolute bottom-[-10%] right-[-10%] w-[40%] h-[40%] bg-blue-900/10 rounded-full blur-[120px]" />
</div>
<Navbar />
<main className="flex-1 flex flex-col lg:flex-row min-h-[calc(100vh-4rem)]">
{/* Left: Controls & Input */}
<div className="w-full lg:w-1/2 flex flex-col justify-center px-4 sm:px-6 lg:px-12 xl:px-20 py-4 sm:py-6 relative">
<div className="max-w-xl mx-auto lg:mx-0 w-full z-10">
<LandingHero />
<div className="space-y-4 sm:space-y-5 mt-4 sm:mt-5">
<div className="opacity-0 animate-fade-in-up animation-delay-100">
<ComicCreationForm
prompt={prompt}
setPrompt={setPrompt}
style={style}
setStyle={setStyle}
characterFiles={characterFiles}
setCharacterFiles={setCharacterFiles}
isLoading={isLoading}
setIsLoading={setIsLoading}
/>
</div>
</div>
</div>
</div>
{/* Right: Visual Preview / Canvas */}
<ComicPreview currentPage={currentPage} goToPage={goToPage} />
</main>
<Footer />
</div>
);
}