'use client'; import Image from "next/image" import { PlusCircledIcon } from "@radix-ui/react-icons" import { useRouter } from 'next/navigation'; import { cn } from "@/lib/utils" import { ContextMenu, ContextMenuContent, ContextMenuItem, ContextMenuSeparator, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, } from "../../components/ui/context-menu" import { Artist } from "@/lib/navidrome" import { useNavidrome } from "./NavidromeContext" import { useAudioPlayer } from "@/app/components/AudioPlayerContext"; import { getNavidromeAPI } from "@/lib/navidrome"; interface ArtistIconProps extends React.HTMLAttributes { artist: Artist size?: number } export function ArtistIcon({ artist, size = 150, className, ...props }: ArtistIconProps) { const router = useRouter(); const { addArtistToQueue } = useAudioPlayer(); const { playlists, starItem, unstarItem } = useNavidrome(); const api = getNavidromeAPI(); const handleClick = () => { router.push(`/artist/${artist.id}`); }; const handleAddToQueue = () => { addArtistToQueue(artist.id); }; const handleStar = () => { if (artist.starred) { unstarItem(artist.id, 'artist'); } else { starItem(artist.id, 'artist'); } }; // Get cover art URL with proper fallback const artistImageUrl = artist.coverArt ? api.getCoverArtUrl(artist.coverArt, 200) : '/default-user.jpg'; return (
{artist.name}
{artist.starred ? 'Remove from Favorites' : 'Add to Favorites'} Add to Playlist New Playlist {playlists.map((playlist) => ( {playlist.name} ))} Add All Songs to Queue Play Next Play Later {artist.starred ? '★ Starred' : '☆ Star'} Share

{artist.name}

{artist.albumCount} albums

); }