'use client' import { Button } from '@/components/ui/button' import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu' import { Maximize2, Minimize2, Monitor, Volume2, VolumeX, Settings, X, RefreshCw, Signal, SignalLow, SignalMedium, Keyboard, MousePointer2, Loader2, CheckCircle2 } from 'lucide-react' interface Session { id: string machine_id: string | null machine_name: string | null started_at: string } type ConnectionState = 'connecting' | 'connected' | 'disconnected' | 'error' interface ViewerToolbarProps { session: Session | null connectionState: ConnectionState isFullscreen: boolean quality: 'high' | 'medium' | 'low' isMuted: boolean onToggleFullscreen: () => void onQualityChange: (quality: 'high' | 'medium' | 'low') => void onToggleMute: () => void onDisconnect: () => void onReconnect: () => void } export function ViewerToolbar({ session, connectionState, isFullscreen, quality, isMuted, onToggleFullscreen, onQualityChange, onToggleMute, onDisconnect, onReconnect, }: ViewerToolbarProps) { const getQualityIcon = () => { switch (quality) { case 'high': return Signal case 'medium': return SignalMedium case 'low': return SignalLow } } const getConnectionBadge = () => { switch (connectionState) { case 'connecting': return ( Connecting ) case 'connected': return ( Connected ) case 'disconnected': return ( Disconnected ) case 'error': return ( Error ) } } const QualityIcon = getQualityIcon() return (
{/* Left section */}
{session?.machine_name || 'Remote Machine'}
{getConnectionBadge()}
{/* Right section */}
{/* Input indicators */}
{/* Quality selector */} Stream Quality onQualityChange('high')}> High {quality === 'high' && } onQualityChange('medium')}> Medium {quality === 'medium' && } onQualityChange('low')}> Low {quality === 'low' && } {/* Mute toggle */} {/* Fullscreen toggle */} {/* Reconnect */} {connectionState === 'disconnected' && ( )} {/* Disconnect */}
) }