'use client'; import { useState, useEffect } from 'react'; import { createPortal } from 'react-dom'; import { motion, AnimatePresence } from 'framer-motion'; import { Pencil, Check, X, RefreshCw, Clock, ArrowRight, Wand2, Image as ImageIcon, Mic, Maximize2, Sparkles } from 'lucide-react'; interface SceneCardProps { scene: { id: string; order: number; title?: string; narrationText: string; visualPrompt: string; subtitleText?: string; duration: number; transitionType: string; mediaAssets?: Array<{ id: string; type: string; url?: string }>; }; isEditable: boolean; isRendering?: boolean; onUpdate?: (sceneId: string, data: { narrationText?: string; visualPrompt?: string; subtitleText?: string }) => void; onRegenerate?: (sceneId: string) => void; onGenerateImage?: (sceneId: string, customPrompt?: string) => void; onUpscaleImage?: (sceneId: string) => void; isRegenerating?: boolean; isGeneratingImage?: boolean; isUpscalingImage?: boolean; } export function SceneCard({ scene, isEditable, isRendering = false, onUpdate, onRegenerate, onGenerateImage, onUpscaleImage, isRegenerating, isGeneratingImage, isUpscalingImage, }: SceneCardProps) { const [isEditing, setIsEditing] = useState(false); const [editNarration, setEditNarration] = useState(scene.narrationText); const [editVisual, setEditVisual] = useState(scene.visualPrompt); const [lightboxOpen, setLightboxOpen] = useState(false); const [mounted, setMounted] = useState(false); useEffect(() => { setMounted(true); }, []); const handleSave = () => { onUpdate?.(scene.id, { narrationText: editNarration, visualPrompt: editVisual, subtitleText: editNarration, }); // If user edited visual prompt, and maybe wants to generate, they can click generate visual later. setIsEditing(false); }; const handleCancel = () => { setEditNarration(scene.narrationText); setEditVisual(scene.visualPrompt); setIsEditing(false); }; const thumbnailAsset = scene.mediaAssets?.find(a => a.type === 'THUMBNAIL'); return (
{/* Header */}
{scene.order}

{scene.title || `Sahne ${scene.order}`}

{scene.duration}s {scene.transitionType.toLowerCase()}
{/* Aksiyon butonları */} {!isEditing && (
)}
{isEditing ? ( {/* Narrasyon düzenleme */}