import { createFileRoute, Link } from '@tanstack/react-router' import { useQuery } from '@tanstack/react-query' import { sitesApi } from '@/lib/api' import { MapPin, ArrowLeft } from 'lucide-react' import { Button } from '@/components/ui/button' import { cn } from '@/lib/utils' export const Route = createFileRoute('/_authenticated/tenants/$tenantId/sites/$siteId')({ component: SiteDetailPage, }) function SiteDetailPage() { const { tenantId, siteId } = Route.useParams() const { data: site, isLoading } = useQuery({ queryKey: ['sites', tenantId, siteId], queryFn: () => sitesApi.get(tenantId, siteId), }) if (isLoading) { return (
) } if (!site) { return
Site not found
} return (
{/* Header with back link */}
{/* Site info card */}

{site.name}

{site.address && (
Address: {site.address}
)} {site.latitude != null && site.longitude != null && (
Coordinates: {site.latitude}, {site.longitude}
)} {site.elevation != null && (
Elevation: {site.elevation} m
)} {site.notes && (
Notes:

{site.notes}

)}
{/* Health stats summary */}

{site.device_count}

Devices

{site.online_count}

Online

= 90 ? 'text-green-500' : site.online_percent >= 50 ? 'text-yellow-500' : 'text-red-500', )} > {site.online_percent.toFixed(0)}%

Online %

0 && 'text-red-500')}> {site.alert_count}

Alerts

{/* Placeholder for device list -- Phase 14 will add full site dashboard */}

Assigned Devices

{site.device_count > 0 ? `${site.device_count} device${site.device_count !== 1 ? 's' : ''} assigned to this site. Full device list coming in site dashboard.` : 'No devices assigned to this site yet. Assign devices from the fleet page.'}

) }