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}
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 (
);
}