import React, { useState } from 'react'; import { Button } from '../../ui/button'; import { X, Search, Plus, Check } from 'lucide-react'; import { useToast } from '../../../context/ToastContext'; interface AddToPlaylistModalProps { onClose: () => void; onAdd: (playlistIds: string[]) => void; } // Mock user playlists const MOCK_USER_PLAYLISTS: any[] = [ { id: 'p1', title: 'Cyberpunk Essentials', creator: 'Cyber_Producer', userId: 'u1', is_public: true, cover_url: 'https://picsum.photos/100', track_count: 45, likes: 120, tags: [], }, { id: 'p2', title: 'Late Night Coding', creator: 'Cyber_Producer', userId: 'u1', is_public: false, cover_url: 'https://picsum.photos/101', track_count: 22, likes: 15, tags: [], }, { id: 'p3', title: 'Gym Phonk', creator: 'Cyber_Producer', userId: 'u1', is_public: true, cover_url: 'https://picsum.photos/102', track_count: 105, likes: 300, tags: [], }, ]; export const AddToPlaylistModal: React.FC = ({ onClose, onAdd, }) => { const { addToast } = useToast(); const [search, setSearch] = useState(''); const [selectedIds, setSelectedIds] = useState([]); const filteredPlaylists = MOCK_USER_PLAYLISTS.filter((p) => p.title.toLowerCase().includes(search.toLowerCase()), ); const toggleSelection = (id: string) => { setSelectedIds((prev) => prev.includes(id) ? prev.filter((pid) => pid !== id) : [...prev, id], ); }; const handleConfirm = () => { if (selectedIds.length === 0) return; onAdd(selectedIds); onClose(); }; return (

Add to Playlist

setSearch(e.target.value)} autoFocus />
{filteredPlaylists.map((playlist) => (
toggleSelection(playlist.id)} className={`flex items-center p-2 rounded cursor-pointer group transition-colors ${selectedIds.includes(playlist.id) ? 'bg-kodo-cyan/10' : 'hover:bg-white/5'}`} >
{playlist.title}
{playlist.track_count} tracks
{selectedIds.includes(playlist.id) && ( )}
))}
); };