'use client' import { SiderHeader } from '.' import { useChatStore } from '../store' import { useState } from 'react' import { Checkbox } from '@/components/ui/checkbox' import { Button } from '@/components/ui/button' import { cn } from '@/lib/utils' import { Avatar, AvatarImage, AvatarFallback } from '@/components/ui/avatar' type VoiceGender = 'all' | 'male' | 'female' type VoiceActorItem = { id: number name: string description: string avatarUrl: string gender: 'male' | 'female' } export default function VoiceActor() { const setSideBar = useChatStore((store) => store.setSideBar) // 语音演员列表(静态数据) const voiceActors: VoiceActorItem[] = [ { id: 1, name: 'Voice Actor 1', description: 'Have a role-playing conversation with AI', avatarUrl: 'https://i.pravatar.cc/150?img=1', gender: 'female', }, { id: 2, name: 'Voice Actor 2', description: 'Have a role-playing conversation with AI', avatarUrl: 'https://i.pravatar.cc/150?img=2', gender: 'female', }, { id: 3, name: 'Voice Actor 3', description: 'Have a role-playing conversation with AI', avatarUrl: 'https://i.pravatar.cc/150?img=3', gender: 'male', }, { id: 4, name: 'Voice Actor 4', description: 'Have a role-playing conversation with AI', avatarUrl: 'https://i.pravatar.cc/150?img=4', gender: 'female', }, { id: 5, name: 'Voice Actor 5', description: 'Have a role-playing conversation with AI', avatarUrl: 'https://i.pravatar.cc/150?img=5', gender: 'male', }, { id: 6, name: 'Voice Actor 6', description: 'Have a role-playing conversation with AI', avatarUrl: 'https://i.pravatar.cc/150?img=6', gender: 'female', }, { id: 7, name: 'Voice Actor 7', description: 'Have a role-playing conversation with AI', avatarUrl: 'https://i.pravatar.cc/150?img=7', gender: 'male', }, ] const [selectedGender, setSelectedGender] = useState('all') const [selectedActorId, setSelectedActorId] = useState(1) const [loading, setLoading] = useState(false) // 根据性别过滤演员列表 const filteredActors = voiceActors.filter((actor) => { if (selectedGender === 'all') return true return actor.gender === selectedGender }) const handleConfirm = async () => { setLoading(true) try { // TODO: 调用实际的 API 保存语音演员设置 // await updateVoiceActor({ voiceActorId: selectedActorId }) console.log('Selected voice actor:', selectedActorId) // 模拟延迟 await new Promise((resolve) => setTimeout(resolve, 500)) setSideBar('profile') } catch (error) { console.error(error) } finally { setLoading(false) } } return (
{/* Gender Tabs */}
{[ { value: 'all' as const, label: 'All' }, { value: 'male' as const, label: 'Male' }, { value: 'female' as const, label: 'Female' }, ].map((tab) => ( ))}
{/* Voice Actor List */}
{filteredActors.map((actor) => (
setSelectedActorId(actor.id)} > {actor.name.charAt(0)}
{actor.name}
{actor.description}
))}
{/* Footer Buttons */}
) }