'use client'; import * as React from 'react'; import { ChevronDown, ChevronUp } from 'lucide-react'; import { CircularKnob } from '@/components/ui/CircularKnob'; import { MasterFader } from './MasterFader'; import { cn } from '@/lib/utils/cn'; export interface MasterControlsProps { volume: number; pan: number; peakLevel: number; rmsLevel: number; isClipping: boolean; isMuted?: boolean; collapsed?: boolean; // For collapsible on mobile/small screens onVolumeChange: (volume: number) => void; onPanChange: (pan: number) => void; onMuteToggle: () => void; onResetClip?: () => void; onToggleCollapse?: () => void; className?: string; } export function MasterControls({ volume, pan, peakLevel, rmsLevel, isClipping, isMuted = false, collapsed = false, onVolumeChange, onPanChange, onMuteToggle, onResetClip, onToggleCollapse, className, }: MasterControlsProps) { // Collapsed view - minimal controls if (collapsed) { return (
Master
{onToggleCollapse && ( )}
0.95 ? 'bg-red-500' : peakLevel > 0.8 ? 'bg-yellow-500' : 'bg-green-500' )} style={{ width: `${peakLevel * 100}%` }} />
); } return (
{/* Master Label with collapse button */}
Master
{onToggleCollapse && ( )}
{/* Pan Control */} { if (Math.abs(value) < 0.01) return 'C'; if (value < 0) return `${Math.abs(value * 100).toFixed(0)}L`; return `${(value * 100).toFixed(0)}R`; }} /> {/* Master Fader with Integrated Meters */} {/* Mute Button */}
); }