'use client'; import { useState } from 'react'; import { motion } from 'framer-motion'; import { FaEdit, FaTrash, FaPlus } from 'react-icons/fa'; import { useAlbums } from '@/lib/AlbumsContext'; import { Album } from '@/lib/types'; import { formatPrice } from '@/lib/utils'; import AdminLayout from '@/components/AdminLayout'; import AddAlbumModal from '@/components/AddAlbumModal'; import EditAlbumModal from '@/components/EditAlbumModal'; import DeleteConfirmationModal from '@/components/DeleteConfirmationModal'; export default function AdminAlbumsPage() { const { albums, addAlbum, updateAlbum, deleteAlbum } = useAlbums(); const [showAddModal, setShowAddModal] = useState(false); const [showEditModal, setShowEditModal] = useState(false); const [showDeleteModal, setShowDeleteModal] = useState(false); const [selectedAlbum, setSelectedAlbum] = useState(null); const handleAddAlbum = async (album: Album) => { try { await addAlbum(album); setShowAddModal(false); } catch (error) { console.error('Error adding album:', error); alert('Failed to add album'); } }; const handleEditAlbum = async (albumId: string, album: Album) => { try { await updateAlbum(albumId, album); setShowEditModal(false); setSelectedAlbum(null); } catch (error) { console.error('Error updating album:', error); alert('Failed to update album'); } }; const handleDeleteAlbum = async () => { if (selectedAlbum) { try { await deleteAlbum(selectedAlbum.id); setShowDeleteModal(false); setSelectedAlbum(null); } catch (error) { console.error('Error deleting album:', error); alert('Failed to delete album'); } } }; const openEditModal = (album: Album) => { setSelectedAlbum(album); setShowEditModal(true); }; const openDeleteModal = (album: Album) => { setSelectedAlbum(album); setShowDeleteModal(true); }; return (
{/* Header */}

Album Management

Manage your music catalog • {albums.length} albums

setShowAddModal(true)} className="px-6 py-3 bg-gradient-to-r from-accent-cyan to-accent-cyan/80 hover:from-accent-cyan/90 hover:to-accent-cyan/70 rounded-lg font-semibold text-white transition-all glow-cyan flex items-center gap-2" > Add New Album
{/* Albums Grid */}
{albums.map((album, index) => (
{/* Album Cover */}
{album.title}
{/* Album Info */}

{album.title}

{album.year} • {album.genre}

{album.description}

{album.songs.length} tracks {formatPrice(album.price)}
{/* Actions */}
openEditModal(album)} className="p-2 bg-accent-cyan/20 hover:bg-accent-cyan/30 rounded-lg text-accent-cyan transition-colors" aria-label="Edit album" > openDeleteModal(album)} className="p-2 bg-red-500/20 hover:bg-red-500/30 rounded-lg text-red-400 transition-colors" aria-label="Delete album" >
{/* Track List */}

Tracks:

{album.songs.slice(0, 3).map((song, idx) => (
{idx + 1}. {song.title} {song.duration}
))} {album.songs.length > 3 && (

+{album.songs.length - 3} more tracks

)}
))}
{/* Modals */} setShowAddModal(false)} onAdd={handleAddAlbum} /> { setShowEditModal(false); setSelectedAlbum(null); }} onUpdate={handleEditAlbum} /> { setShowDeleteModal(false); setSelectedAlbum(null); }} onConfirm={handleDeleteAlbum} />
); }