'use client'; import React, { useState } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; import { X, FileText, Users, Video, Music, Scissors, Settings } from 'lucide-react'; import { cn } from '@/lib/utils'; import { ScriptTabContent } from './script-tab-content'; interface EditModalProps { isOpen: boolean; onClose: () => void; taskStatus: string; taskSketch: any[]; currentSketchIndex: number; onSketchSelect: (index: number) => void; } const tabs = [ { id: '1', label: '脚本', icon: FileText }, { id: '2', label: '角色', icon: Users }, { id: '3', label: '分镜视频', icon: Video }, { id: '4', label: '背景音', icon: Music }, { id: '5', label: '剪辑', icon: Scissors }, { id: 'settings', label: '设置', icon: Settings }, ]; export function EditModal({ isOpen, onClose, taskStatus, taskSketch, currentSketchIndex, onSketchSelect }: EditModalProps) { const [activeTab, setActiveTab] = useState('1'); const isTabDisabled = (tabId: string) => { if (tabId === 'settings') return false; return parseInt(tabId) > parseInt(taskStatus); }; const renderTabContent = () => { switch (activeTab) { case '1': return ( ); default: return (
{tabs.find(tab => tab.id === activeTab)?.label} 内容区域
); } }; return ( {isOpen && ( <> {/* 背景遮罩 */} {/* 弹窗内容 */}
{/* 标签栏 */}
{tabs.map((tab) => { const Icon = tab.icon; const disabled = isTabDisabled(tab.id); return ( !disabled && setActiveTab(tab.id)} whileHover={disabled ? undefined : { scale: 1.02 }} whileTap={disabled ? undefined : { scale: 0.98 }} > {tab.label} {activeTab === tab.id && ( )} ); })}
{/* 关闭按钮 */}
{/* 内容区域 */}
{renderTabContent()}
{/* 底部操作栏 */}
取消 保存
)}
); }