import { useState, useEffect } from "react"; import { Link, useNavigate } from "react-router-dom"; import type { User, Project, DroneRegistration } from "../lib/api"; import { projectApi, droneApi } from "../lib/api"; import Clock from "../components/Clock"; import GadgetGrid from "../components/GadgetGrid"; function SystemReady() { return (
// SYSTEM READY
Please sign in to continue.
Accounts are administered. Contact your administrator for access.
Sign In
); } interface DashboardSidebarProps { onNavigate: (view: string, data?: unknown) => void; selectedDrone: DroneRegistration | null; onSelectDrone: (drone: DroneRegistration | null) => void; } function DroneInspector({ drone, onClose, }: { drone: DroneRegistration; onClose: () => void; }) { return (

Drone Inspector

Hostname
{drone.hostname}
Workspace
{drone.workspaceDir}
Status
{drone.status}
Registered
{new Date(drone.createdAt).toLocaleString()}
); } function DashboardSidebar({ onNavigate: _onNavigate, selectedDrone, onSelectDrone, }: DashboardSidebarProps) { const navigate = useNavigate(); const [projects, setProjects] = useState([]); const [drones, setDrones] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { loadData(); }, []); const loadData = async () => { try { const [projectsData, dronesData] = await Promise.all([ projectApi.getAll(), droneApi.getAll(), ]); setProjects(projectsData); setDrones(dronesData); } catch (err) { console.error("Failed to load dashboard data", err); } finally { setLoading(false); } }; return ( ); } interface HomeProps { user: User | null; } export default function Home({ user }: HomeProps) { const navigate = useNavigate(); const [selectedDrone, setSelectedDrone] = useState( null, ); if (!user) { return (
); } const mainContent = selectedDrone ? (
setSelectedDrone(null)} /> { if (view === "project" && typeof navigate === "function") { navigate("/projects"); } }} selectedDrone={selectedDrone} onSelectDrone={setSelectedDrone} />
) : (

Welcome, {user.displayName}!

Your dashboard is under construction.

Select a project or chat session from the sidebar to get started.

Open Project Manager
{ if (view === "project" && typeof navigate === "function") { navigate("/projects"); } }} selectedDrone={selectedDrone} onSelectDrone={setSelectedDrone} />
); return (
{mainContent}
); }