Menghubungkan ke Robot...
{/* Stream Kamera */}
{ e.currentTarget.style.display = 'none'; }} />
{/* Indikator Status Perekaman */}
{(isRecordingRef.current || isPlayingRef.current) && (
{/* OVERLAY: FULLSCREEN TOGGLE */}
{/* OVERLAY: BOTTOM LEFT (MOVEMENT CONTROLS) */}
{isRecordingRef.current && MEREKAM}
{isPlayingRef.current && MEMUTAR RUTE}
)}
{/* OVERLAY: TOP BAR */}
{controlMode === 'pc-mobile' ? (
) : (
)}
{/* OVERLAY: BOTTOM RIGHT (ACTION CONTROLS) */}
0.1 ? 'bg-white text-slate-900 border-slate-900' : 'bg-slate-900/50 text-white border-white/50 backdrop-blur-sm'}`}>LT
0.1 ? 'bg-white text-slate-900 border-slate-900' : 'bg-slate-900/50 text-white border-white/50 backdrop-blur-sm'}`}>RT
L
R
{[
{ action: 'RECORD', pc: 'V', gp: 'B', color: 'bg-[#f87171] shadow-[4px_4px_0_#b91c1c]', activeColor: 'active:bg-red-500', gpState: gpVisuals.btnB },
{ action: 'SAVE', pc: 'B', gp: 'Y', color: 'bg-[#fbbf24] shadow-[4px_4px_0_#d97706]', activeColor: 'active:bg-amber-500', gpState: gpVisuals.btnY },
{ action: 'PLAY_FWD', pc: 'N', gp: 'A', color: 'bg-[#34d399] shadow-[4px_4px_0_#047857]', activeColor: 'active:bg-emerald-500', gpState: gpVisuals.btnA },
{ action: 'PLAY_REV', pc: 'M', gp: 'X', color: 'bg-[#60a5fa] shadow-[4px_4px_0_#1d4ed8]', activeColor: 'active:bg-blue-500', gpState: gpVisuals.btnX }
].map((btn) => (
{btn.action === 'PLAY_FWD' ? 'PLAY' : btn.action === 'PLAY_REV' ? 'R-PLAY' : btn.action}
))}