"use client"; import Link from "next/link"; import { useState } from "react"; import { useRouter } from "next/navigation"; import { appConfig } from '@/config/app.config'; import { toast } from "sonner"; // Import shared components import { Connector } from "@/components/shared/layout/curvy-rect"; import HeroFlame from "@/components/shared/effects/flame/hero-flame"; import AsciiExplosion from "@/components/shared/effects/flame/ascii-explosion"; import { HeaderProvider } from "@/components/shared/header/HeaderContext"; // Import hero section components import HomeHeroBackground from "@/components/app/(home)/sections/hero/Background/Background"; import { BackgroundOuterPiece } from "@/components/app/(home)/sections/hero/Background/BackgroundOuterPiece"; import HomeHeroBadge from "@/components/app/(home)/sections/hero/Badge/Badge"; import HomeHeroPixi from "@/components/app/(home)/sections/hero/Pixi/Pixi"; import HomeHeroTitle from "@/components/app/(home)/sections/hero/Title/Title"; import HeroInputSubmitButton from "@/components/app/(home)/sections/hero-input/Button/Button"; import Globe from "@/components/app/(home)/sections/hero-input/_svg/Globe"; // Import header components import HeaderBrandKit from "@/components/shared/header/BrandKit/BrandKit"; import HeaderWrapper from "@/components/shared/header/Wrapper/Wrapper"; import HeaderDropdownWrapper from "@/components/shared/header/Dropdown/Wrapper/Wrapper"; import GithubIcon from "@/components/shared/header/Github/_svg/GithubIcon"; import ButtonUI from "@/components/ui/shadcn/button" export default function HomePage() { const [url, setUrl] = useState(""); const [selectedStyle, setSelectedStyle] = useState("1"); const [selectedModel, setSelectedModel] = useState(appConfig.ai.defaultModel); const [isValidUrl, setIsValidUrl] = useState(false); const router = useRouter(); // Simple URL validation const validateUrl = (urlString: string) => { if (!urlString) return false; // Basic URL pattern - accepts domains with or without protocol const urlPattern = /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/; return urlPattern.test(urlString.toLowerCase()); }; const styles = [ { id: "1", name: "Glassmorphism", description: "Frosted glass effect" }, { id: "2", name: "Neumorphism", description: "Soft 3D shadows" }, { id: "3", name: "Brutalism", description: "Bold and raw" }, { id: "4", name: "Minimalist", description: "Clean and simple" }, { id: "5", name: "Dark Mode", description: "Dark theme design" }, { id: "6", name: "Gradient Rich", description: "Vibrant gradients" }, { id: "7", name: "3D Depth", description: "Dimensional layers" }, { id: "8", name: "Retro Wave", description: "80s inspired" }, ]; const models = appConfig.ai.availableModels.map(model => ({ id: model, name: appConfig.ai.modelDisplayNames[model] || model, })); const handleSubmit = () => { if (!url.trim()) { toast.error("Please enter a URL"); return; } // Store the configuration in sessionStorage sessionStorage.setItem('targetUrl', url); sessionStorage.setItem('selectedStyle', selectedStyle); sessionStorage.setItem('selectedModel', selectedModel); sessionStorage.setItem('autoStart', 'true'); // Set flag to auto-start generation // Redirect to the generation interface router.push('/generation'); }; return (
{/* Header/Navigation Section */}
{/* Hero Section */}

Re-imagine any website, in seconds.

e.preventDefault()} > Powered by Firecrawl.
{/* Mini Playground Input */}
{/* Hero Input Component */}
{ setUrl(e.target.value); setIsValidUrl(validateUrl(e.target.value)); }} onKeyDown={(e) => { if (e.key === "Enter") { e.preventDefault(); handleSubmit(); } }} />
{ e.preventDefault(); handleSubmit(); }} > 0} />
{/* Options Section - Only show when valid URL */}
{/* Style Selector */}
{styles.map((style, index) => ( ))}
{/* Model Selector Dropdown and Additional Instructions */}
{/* Model Dropdown */} {/* Additional Instructions */} sessionStorage.setItem('additionalInstructions', e.target.value)} />
); }