"use client"; import { useTranslations } from "next-intl"; interface AudioPlayerProps { trackTitle: string | null; isPlaying: boolean; progress: number; duration: number; playbackRate: number; continuousMode: boolean; onToggle: () => void; onSeek: (seconds: number) => void; onChangeRate: (rate: number) => void; onToggleContinuous: () => void; } const RATES = [0.5, 0.75, 1, 1.25, 1.5, 2]; function formatTime(seconds: number): string { const m = Math.floor(seconds / 60); const s = Math.floor(seconds % 60); return `${m}:${s.toString().padStart(2, "0")}`; } export function AudioPlayer({ trackTitle, isPlaying, progress, duration, playbackRate, continuousMode, onToggle, onSeek, onChangeRate, onToggleContinuous, }: AudioPlayerProps) { const t = useTranslations("audio"); if (!trackTitle) return null; const progressPercent = duration > 0 ? (progress / duration) * 100 : 0; return (
{/* Progress bar */}
{ const rect = e.currentTarget.getBoundingClientRect(); const ratio = (e.clientX - rect.left) / rect.width; onSeek(ratio * duration); }} >
{/* Play/Pause */} {/* Track info */}

{trackTitle}

{formatTime(progress)} / {formatTime(duration)}

{/* Speed selector */}
{t("speed")}:
{/* Continuous mode toggle */}
); }