/** * Composant TrackListSelectionActions * Barre d'actions pour les pistes sélectionnées */ import { Play, Trash2, Heart, Download, MoreVertical, X } from 'lucide-react'; import { cn } from '@/lib/utils'; export interface TrackListSelectionActionsProps { selectedCount: number; onPlay?: (trackIds: string[]) => void; onDelete?: (trackIds: string[]) => void; onLike?: (trackIds: string[]) => void; onDownload?: (trackIds: string[]) => void; onMore?: (trackIds: string[]) => void; onClearSelection?: () => void; selectedTrackIds: string[]; className?: string; } export function TrackListSelectionActions({ selectedCount, onPlay, onDelete, onLike, onDownload, onMore, onClearSelection, selectedTrackIds, className, }: TrackListSelectionActionsProps) { if (selectedCount === 0) { return null; } const handlePlay = () => { onPlay?.(selectedTrackIds); }; const handleDelete = () => { onDelete?.(selectedTrackIds); }; const handleLike = () => { onLike?.(selectedTrackIds); }; const handleDownload = () => { onDownload?.(selectedTrackIds); }; const handleMore = () => { onMore?.(selectedTrackIds); }; const actionButtonClass = [ 'p-2 rounded-md', 'transition-[background-color,transform] duration-[var(--duration-normal)]', 'hover:bg-primary-foreground/15 focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-foreground/40 focus-visible:ring-offset-2 focus-visible:ring-offset-primary', 'active:scale-95', ].join(' '); return (
1 ? 's' : ''} sélectionnée${selectedCount > 1 ? 's' : ''}`} >
{selectedCount} piste{selectedCount > 1 ? 's' : ''} sélectionnée {selectedCount > 1 ? 's' : ''}
{onPlay && ( )} {onLike && ( )} {onDownload && ( )} {onDelete && ( )} {onMore && ( )}
{onClearSelection && ( )}
); } export default TrackListSelectionActions;