"use client" import { useState } from "react" import { useRef, useEffect } from "react" import { Upload, X, Check } from "lucide-react" import { Button } from "@/components/ui/button" const COMIC_STYLES = [ { id: "american-modern", name: "American Modern" }, { id: "manga", name: "Manga" }, { id: "noir", name: "Noir" }, { id: "vintage", name: "Vintage" }, ] interface StoryInputProps { prompt: string setPrompt: (prompt: string) => void style: string setStyle: (style: string) => void characterFiles: File[] setCharacterFiles: (files: File[]) => void } export function StoryInput({ prompt, setPrompt, style, setStyle, characterFiles, setCharacterFiles }: StoryInputProps) { const [previews, setPreviews] = useState([]) const [showPreview, setShowPreview] = useState(null) const [showStyleDropdown, setShowStyleDropdown] = useState(false) const fileInputRef = useRef(null) const handleFiles = (newFiles: FileList | null) => { if (!newFiles) return const validFiles = Array.from(newFiles).filter((file) => file.type.startsWith("image/")) const totalFiles = [...characterFiles, ...validFiles].slice(0, 2) // Max 2 files setCharacterFiles(totalFiles) // Generate previews for all files const newPreviews: string[] = [] totalFiles.forEach((file, index) => { const reader = new FileReader() reader.onload = (e) => { newPreviews[index] = e.target?.result as string if (newPreviews.filter(Boolean).length === totalFiles.length) { setPreviews([...newPreviews]) } } reader.readAsDataURL(file) }) } const removeFile = (index: number) => { const newFiles = characterFiles.filter((_, i) => i !== index) const newPreviews = previews.filter((_, i) => i !== index) setCharacterFiles(newFiles) setPreviews(newPreviews) setShowPreview(null) if (fileInputRef.current) { fileInputRef.current.value = "" } } useEffect(() => { const handleClickOutside = (event: MouseEvent) => { const target = event.target as HTMLElement if (!target.closest(".dropdown-container")) { setShowStyleDropdown(false) } } document.addEventListener("mousedown", handleClickOutside) return () => document.removeEventListener("mousedown", handleClickOutside) }, []) return ( <>