TypeScript 55.4%
Python 43.2%
SQL 1.2%
1import Link from "next/link";2import { api } from "@/lib/api";3import { fmtInt } from "@/lib/format";4import { Bar, Empty, Panel } from "./ui";56/** Homepage rail: Global Observation Coverage Score by sector (server component). */7export async function CoverageRail() {8 const c = await api.coverage();9 return (10 <Panel title={<span>Observation coverage {c ? <span className={`font-mono ${c.global_score >= 60 ? "text-signal" : "text-high"}`}>{c.global_score.toFixed(1)}</span> : null}</span>} dense action={<Link href="/coverage" className="text-[11px] text-fg-subtle hover:text-fg">coverage →</Link>}>11 {!c || !c.sectors.length ? (12 <Empty>Coverage universes are loading.</Empty>13 ) : (14 <ul className="px-3 py-1.5 text-[12px]">15 {c.sectors.slice(0, 10).map((s) => (16 <li key={s.sector} className="grid grid-cols-[7.5rem_1fr_2.5rem] items-center gap-2 py-0.5">17 <Link href={`/coverage/${s.sector}`} className="truncate text-fg-muted hover:text-fg" title={`${fmtInt(s.covered)} / ${fmtInt(s.members)} observed`}>{s.label}</Link>18 <Bar value={s.score} tone={s.score >= 80 ? "signal" : s.score >= 60 ? "high" : s.score >= 40 ? "mid" : "info"} />19 <span className="text-right font-mono tabular text-fg-muted">{Math.round(s.score)}%</span>20 </li>21 ))}22 <li className="pt-1 text-[10.5px] text-fg-subtle">{fmtInt(c.covered)} / {fmtInt(c.members)} organizations · {fmtInt(c.monitored.shadow)} sensors in shadow</li>23 </ul>24 )}25 </Panel>26 );27}28