import { Badge } from '@/components/ui/badge' import { Button } from '@/components/ui/button' import { TableCell, TableRow } from '@/components/ui/table' import type { Playlist } from '@/lib/api/services/playlists' import { formatDateDistanceToNow } from '@/utils/format-date' import { formatDuration } from '@/utils/format-duration' import { cn } from '@/lib/utils' import { Calendar, Clock, Edit, Heart, Music, Play, Trash2, User } from 'lucide-react' interface PlaylistRowProps { playlist: Playlist onEdit: (playlist: Playlist) => void onSetCurrent: (playlist: Playlist) => void onFavoriteToggle?: (playlistId: number, isFavorited: boolean) => void onDelete?: (playlist: Playlist) => void } export function PlaylistRow({ playlist, onEdit, onSetCurrent, onFavoriteToggle, onDelete }: PlaylistRowProps) { const handleFavoriteToggle = () => { if (onFavoriteToggle) { onFavoriteToggle(playlist.id, !playlist.is_favorited) } } return (
{playlist.name}
{playlist.description && (
{playlist.description}
)}
{playlist.genre ? ( {playlist.genre} ) : ( - )}
{playlist.user_name ? (
{playlist.user_name}
) : ( System )}
{playlist.sound_count}
{formatDuration(playlist.total_duration || 0)}
{formatDateDistanceToNow(playlist.created_at)}
{playlist.is_current && Current} {playlist.is_main && Main} {!playlist.is_current && !playlist.is_main && ( - )}
{onFavoriteToggle && ( )} {!playlist.is_current && ( )} {onDelete && !playlist.is_main && playlist.is_deletable && ( )}
) }