import { createFileRoute, Link } from '@tanstack/react-router' import { useState } from 'react' import { Plus, Scan, ChevronRight } from 'lucide-react' import { useQuery } from '@tanstack/react-query' import { z } from 'zod' import { tenantsApi } from '@/lib/api' import { useAuth, canWrite } from '@/lib/auth' import { Button } from '@/components/ui/button' import { FleetTable } from '@/components/fleet/FleetTable' import { DeviceFilters } from '@/components/fleet/DeviceFilters' import { AddDeviceForm } from '@/components/fleet/AddDeviceForm' const searchSchema = z.object({ search: z.string().optional(), status: z.string().optional(), sort_by: z.string().optional(), sort_dir: z.enum(['asc', 'desc']).optional(), page: z.number().int().positive().optional(), page_size: z.number().int().positive().optional(), }) export const Route = createFileRoute('/_authenticated/tenants/$tenantId/devices/')({ validateSearch: searchSchema, component: DevicesPage, }) function DevicesPage() { const { tenantId } = Route.useParams() const search = Route.useSearch() const { user } = useAuth() const [addOpen, setAddOpen] = useState(false) const { data: tenant } = useQuery({ queryKey: ['tenants', tenantId], queryFn: () => tenantsApi.get(tenantId), }) return (