import React, { useState, useEffect } from 'react'; import { Play, Star } from 'lucide-react'; import { SubsonicSong } from '../api/subsonic'; import { Track, usePlayerStore } from '../store/playerStore'; import { useTranslation } from 'react-i18next'; function formatDuration(seconds: number): string { const m = Math.floor(seconds / 60); const s = seconds % 60; return `${m}:${s.toString().padStart(2, '0')}`; } function codecLabel(song: { suffix?: string; bitRate?: number }): string { const parts: string[] = []; if (song.suffix) parts.push(song.suffix.toUpperCase()); if (song.bitRate) parts.push(`${song.bitRate} kbps`); return parts.join(' · '); } function StarRating({ value, onChange }: { value: number; onChange: (r: number) => void }) { const { t } = useTranslation(); const [hover, setHover] = React.useState(0); return (