import type { CloudRegionSummary } from "@dci/core"; import { Badge, type BadgeTone } from "@/components/ui/badge"; import { api } from "@/lib/api"; import { routes } from "@/lib/routes"; export type CloudStatus = CloudRegionSummary["status"]; export const CLOUD_STATUSES: CloudStatus[] = ["operational", "announced", "restricted", "retired"]; export const CLOUD_STATUS_LABEL: Record = { operational: "Operational", announced: "Announced", restricted: "Restricted", retired: "Retired", }; const TONE: Record = { operational: "ok", announced: "info", restricted: "warn", retired: "neutral" }; export function CloudStatusBadge({ status, size = "xs" }: { status: CloudStatus; size?: "xs" | "sm" }) { return ( {CLOUD_STATUS_LABEL[status]} ); } /** iso2 → canonical country page href (falls back to the facility index filtered by country). */ export async function countryHrefMap(): Promise<(iso2: string | null | undefined) => string | null> { const c = await api.countries(); const map = new Map(); for (const x of c.items) map.set(x.iso2.toUpperCase(), x.slug); return (iso2) => { if (!iso2) return null; const slug = map.get(iso2.toUpperCase()); return slug ? routes.country(slug) : routes.datacenters(`country=${iso2.toUpperCase()}`); }; }