import { Badge } from '@/components/ui/badge' import { Button } from '@/components/ui/button' import { Slider } from '@/components/ui/slider' import type { PlayerMode, PlayerState } from '@/lib/api/services/player' import { ArrowRight, ArrowRightToLine, List, Pause, Play, Repeat, Repeat1, Shuffle, SkipBack, SkipForward, Square, Volume2, VolumeX, } from 'lucide-react' import { memo, useMemo } from 'react' import { useRenderFlash } from '@/hooks/useRenderFlash' interface PlayerControlsProps { status: PlayerState['status'] mode: PlayerMode isLoading: boolean showPlaylistButton?: boolean volume?: number onPlayPause: () => void onStop: () => void onPrevious: () => void onNext: () => void onModeChange: () => void onTogglePlaylist?: () => void onVolumeChange?: (volume: number[]) => void onMute?: () => void variant?: 'normal' | 'maximized' | 'minimized' } export const PlayerControls = memo(function PlayerControls({ status, mode, isLoading, showPlaylistButton = false, volume, onPlayPause, onStop, onPrevious, onNext, onModeChange, onTogglePlaylist, onVolumeChange, onMute, variant = 'normal', }: PlayerControlsProps) { const isMinimized = variant === 'minimized' const isMaximized = variant === 'maximized' const flashClass = useRenderFlash([status, mode, volume], 'green') const modeIcon = useMemo(() => { switch (mode) { case 'continuous': return case 'loop': return case 'loop_one': return case 'random': return default: return } }, [mode]) const modeLabel = useMemo(() => mode.replace('_', ' '), [mode] ) if (isMinimized) { return (
{/* DEBUG: PlayerControls Minimized - GREEN FLASH */}
) } if (isMaximized) { return (
{/* DEBUG: PlayerControls Maximized - GREEN FLASH */} {/* Large Controls */}
{/* Secondary Controls */}
{modeLabel}
{volume !== undefined && onVolumeChange && onMute && (
{Math.round(volume)}%
)}
) } // Normal variant return (
{/* DEBUG: PlayerControls Normal - GREEN FLASH */} {/* Main Controls */}
{showPlaylistButton && onTogglePlaylist && ( )}
{/* Secondary Controls */}
{modeLabel} {volume !== undefined && onVolumeChange && onMute && (
)}
) })