'use client'
import { Button } from '@/components/ui/button'
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuLabel,
DropdownMenuSeparator,
DropdownMenuTrigger,
} from '@/components/ui/dropdown-menu'
import {
Maximize2,
Minimize2,
Monitor,
Signal,
SignalLow,
SignalMedium,
Keyboard,
MousePointer2,
Loader2,
CheckCircle2,
RefreshCw,
X,
Clipboard,
FolderOpen,
ChevronDown,
MessageSquare,
Zap,
} from 'lucide-react'
interface MonitorInfo {
index: number
width: number
height: number
primary: boolean
}
interface Session {
id: string
machineId: string | null
machineName: string | null
startedAt: string
}
type ConnectionState = 'connecting' | 'waiting' | 'connected' | 'disconnected' | 'error'
interface ViewerToolbarProps {
session: Session | null
connectionState: ConnectionState
isFullscreen: boolean
quality: 'high' | 'medium' | 'low'
isMuted: boolean
monitors: MonitorInfo[]
activeMonitor: number
onToggleFullscreen: () => void
onQualityChange: (quality: 'high' | 'medium' | 'low') => void
onToggleMute: () => void
onDisconnect: () => void
onReconnect: () => void
onCtrlAltDel: () => void
onClipboardPaste: () => void
onMonitorChange: (index: number) => void
onToggleFileTransfer: () => void
onToggleChat: () => void
onWakeOnLan?: () => void
machineName?: string
}
export function ViewerToolbar({
session,
connectionState,
isFullscreen,
quality,
monitors,
activeMonitor,
onToggleFullscreen,
onQualityChange,
onDisconnect,
onReconnect,
onCtrlAltDel,
onClipboardPaste,
onMonitorChange,
onToggleFileTransfer,
onToggleChat,
onWakeOnLan,
}: ViewerToolbarProps) {
const connected = connectionState === 'connected'
const getQualityIcon = () => {
switch (quality) {
case 'high': return Signal
case 'medium': return SignalMedium
case 'low': return SignalLow
}
}
const getConnectionBadge = () => {
switch (connectionState) {
case 'connecting':
return (