"use client"; import { useState } from 'react'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Textarea } from '@/components/ui/textarea'; import { Badge } from '@/components/ui/badge'; import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger, } from '@/components/ui/dialog'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu'; import { Plus, Upload, Search, MoreHorizontal, Play, Pause, Wand2, Edit, Trash2, Volume2, User, } from 'lucide-react'; const mockActors = [ { id: 1, name: 'Sarah Chen', description: 'Professional corporate presenter with clear articulation', avatar: 'https://images.pexels.com/photos/774909/pexels-photo-774909.jpeg?auto=compress&cs=tinysrgb&w=200', voice: { type: 'generated', name: 'Professional Female', sample: 'Hello, I\'m Sarah and I\'ll be your guide through this presentation.', }, tags: ['corporate', 'professional', 'female'], createdAt: '2024-01-15', usageCount: 12, }, { id: 2, name: 'Dr. Marcus Webb', description: 'Expert educator with authoritative voice for technical content', avatar: 'https://images.pexels.com/photos/1222271/pexels-photo-1222271.jpeg?auto=compress&cs=tinysrgb&w=200', voice: { type: 'generated', name: 'Expert Male', sample: 'Welcome to today\'s lesson on advanced artificial intelligence.', }, tags: ['education', 'expert', 'male'], createdAt: '2024-01-12', usageCount: 8, }, { id: 3, name: 'Alex Rivera', description: 'Energetic host perfect for engaging, casual content', avatar: 'https://images.pexels.com/photos/1239291/pexels-photo-1239291.jpeg?auto=compress&cs=tinysrgb&w=200', voice: { type: 'uploaded', name: 'Custom Voice', sample: 'Hey everyone! Ready to dive into something amazing?', }, tags: ['casual', 'energetic', 'neutral'], createdAt: '2024-01-10', usageCount: 5, }, ]; const voiceTypes = [ 'Professional Female', 'Professional Male', 'Casual Female', 'Casual Male', 'Expert Female', 'Expert Male', 'Enthusiastic Neutral', ]; export function ActorsLibraryPage() { const [searchQuery, setSearchQuery] = useState(''); const [playingVoice, setPlayingVoice] = useState(null); const [newActorName, setNewActorName] = useState(''); const [newActorDescription, setNewActorDescription] = useState(''); const [newActorPrompt, setNewActorPrompt] = useState(''); const filteredActors = mockActors.filter(actor => actor.name.toLowerCase().includes(searchQuery.toLowerCase()) || actor.description.toLowerCase().includes(searchQuery.toLowerCase()) || actor.tags.some(tag => tag.toLowerCase().includes(searchQuery.toLowerCase())) ); const toggleVoicePlayback = (actorId: number) => { setPlayingVoice(playingVoice === actorId ? null : actorId); }; return (
{/* Header */}

Actors Library

Create and manage AI actors with custom voices for your videos

Create New Actor Upload Image AI Generated