Compare commits

..

2 Commits

Author SHA1 Message Date
[Valentino Heman Budiarto]
08fa4324d9 . 2026-08-24 18:07:25 +07:00
[Valentino Heman Budiarto]
cd67c545df . 2026-08-24 18:03:33 +07:00

View File

@ -136,20 +136,26 @@ export default function RobotDashboard() {
<span className="w-3 h-3 rounded-full bg-red-500 animate-pulse"></span> <span className="w-3 h-3 rounded-full bg-red-500 animate-pulse"></span>
Live Feed Live Feed
</h2> </h2>
<div className="aspect-video bg-black rounded-lg overflow-hidden border border-gray-900 relative">
{/* eslint-disable-next-line @next/next/no-img-element */} {/* --- CONTAINER KAMERA YANG SUDAH DIPERBAIKI --- */}
<img <div className="aspect-4/3 md:aspect-video w-full bg-black rounded-lg overflow-hidden border border-gray-900 relative">
src={streamUrl} {/* eslint-disable-next-line @next/next/no-img-element */}
alt="Robot view" <img
// PERUBAHAN DI SINI: Posisi absolut ke kiri, hilangkan max-width, dan set object-position ke kiri src={streamUrl}
className="absolute top-0 left-0 h-full max-w-none object-cover" alt="Robot view"
style={{ width: '200%', objectPosition: 'left' }} className="absolute top-0 left-0 h-full max-w-none object-cover"
onError={(e) => { style={{
e.currentTarget.style.display = 'none'; width: '200%',
e.currentTarget.parentElement!.innerHTML = '<div class="text-red-400 text-center p-4">Kamera gagal dimuat.<br/>Pastikan Pi dan HP berada dalam jaringan Tailscale/Wi-Fi yang sama.</div>'; objectPosition: 'left center'
}} }}
/> onError={(e) => {
</div> e.currentTarget.style.display = 'none';
e.currentTarget.parentElement!.innerHTML = '<div class="text-red-400 text-center p-4">Kamera gagal dimuat.<br/>Pastikan Pi dan HP berada dalam jaringan Tailscale/Wi-Fi yang sama.</div>';
}}
/>
</div>
{/* ---------------------------------------------- */}
</div> </div>
<div className="bg-gray-800 rounded-xl p-4 border border-gray-700 shadow-xl flex flex-col"> <div className="bg-gray-800 rounded-xl p-4 border border-gray-700 shadow-xl flex flex-col">