import React, { useState } from 'react'; import { Play, Pause, SkipBack, SkipForward, Shuffle, Repeat, Volume2, VolumeX, Gauge, SlidersHorizontal, } from 'lucide-react'; import { useAudio } from '../../context/AudioContext'; import { PlaybackSpeedModal } from './PlaybackSpeedModal'; import { VisualizerSettingsModal } from './VisualizerSettingsModal'; interface PlayerControlsProps { layout?: 'compact' | 'full'; } export const PlayerControls: React.FC = ({ layout = 'compact', }) => { const { isPlaying, togglePlay, nextTrack, prevTrack, shuffle, toggleShuffle, repeatMode, toggleRepeat, volume, setVolume, isMuted, toggleMute, playbackRate: _playbackRate, } = useAudio(); const [showSpeed, setShowSpeed] = useState(false); const [showVisualizer, setShowVisualizer] = useState(false); return (
{/* 1. Playback Modifiers */}
{/* 2. Main Transport */}
{/* 3. Volume & Speed */}
{layout === 'full' && ( <> )} {/* Volume */}
{ const rect = e.currentTarget.getBoundingClientRect(); setVolume(((e.clientX - rect.left) / rect.width) * 100); }} >
{/* Modals Positioned Relative */} {showSpeed && ( setShowSpeed(false)} /> )} {showVisualizer && ( setShowVisualizer(false)} /> )}
); };