import React from "react" import { Button } from "@/components/ui" import UploadZone from "./UploadZone" import RecordArea from "./RecordArea" import StepIndicator from "./StepIndicator" import { MAX_VOICE_NAME_LENGTH, MAX_VOICE_DESC_LENGTH } from "../constants/cloneModal" interface InputViewProps { voiceName: string voiceDescription: string selectedFile: File | null dragActive: boolean isRecording: boolean recordTime: number recordedBlob: Blob | null errorMessage: string canSubmit: boolean onVoiceNameChange: (value: string) => void onVoiceDescChange: (value: string) => void onDragActiveChange: (active: boolean) => void onFileSelect: (file: File | null, error: string) => void onRecordToggle: () => void onClose: () => void onSubmit: () => void } const INPUT_STEPS = ["上传/录制音频", "填写信息", "提交克隆"] const InputView: React.FC = ({ voiceName, voiceDescription, selectedFile, dragActive, isRecording, recordTime, recordedBlob, errorMessage, canSubmit, onVoiceNameChange, onVoiceDescChange, onDragActiveChange, onFileSelect, onRecordToggle, onClose, onSubmit, }) => { return (
{/* 步骤引导 */} {/* 音色名称 */}
onVoiceNameChange(e.target.value)} placeholder="输入音色名称(2-20字符)" maxLength={MAX_VOICE_NAME_LENGTH} />
{voiceName.length}/{MAX_VOICE_NAME_LENGTH}
{/* 上传区域 */}
{/* 或分隔 */}
{/* 录制区域 */}
{/* 音色描述 */}