import type { Metadata } from "next"; import { Suspense } from "react"; import { Map as MapIcon } from "lucide-react"; import { FacilityFilterBar } from "@/components/facility-filters"; import { FacilityTable } from "@/components/facility-table"; import { Button } from "@/components/ui/button"; import { Page, PageHeader } from "@/components/ui/card"; import { Pagination } from "@/components/ui/pagination"; import { OfflineNotice } from "@/components/ui/states"; import { api } from "@/lib/api"; import { fmtInt } from "@/lib/format"; import { filtersToQuery, parseFilters } from "@/lib/query"; import { routes } from "@/lib/routes"; export const revalidate = 120; export const metadata: Metadata = { title: "Data centers", description: "Filterable index of data center facilities worldwide: operator, market, country, status, capacity, type and confidence.", alternates: { canonical: "/datacenters" }, }; const PER_PAGE = 50; export default async function DatacentersPage({ searchParams }: { searchParams: Promise> }) { const sp = await searchParams; const filters = parseFilters(sp); const page = filters.page ?? 1; const query = { ...filters, page, per_page: filters.per_page ?? PER_PAGE, sort: filters.sort ?? "mw", order: filters.order ?? (filters.sort === "name" ? "asc" : "desc") }; const res = await api.facilities(query); const hrefFor = (p: number) => routes.datacenters(filtersToQuery({ ...filters, page: p })); const mapQs = filtersToQuery({ ...filters, page: undefined, per_page: undefined, sort: undefined, order: undefined }); return ( Open in map } /> {!res.ok && }
); }