import { HoverCard, HoverCardContent, HoverCardTrigger, } from "@openstatus/ui/components/ui/hover-card"; import { cn } from "@openstatus/ui/lib/utils"; export type Timing = { dns: number; connect: number; tls: number; ttfb: number; transfer: number; }; export function HoverCardTiming({ timing, latency, }: { timing: Timing; latency: number; }) { const phasesTotal = Object.values(timing).reduce((acc, v) => acc + v, 0) || latency || 1; return (
{Object.entries(timing).map(([key, value], index) => (
))}
); } export function HoverCardTimingContent({ timing, latency, }: { timing: Timing; latency: number; }) { return (
{Object.entries(timing).map(([key, value], index) => { return (
{key}
{`${new Intl.NumberFormat("en-US", { maximumFractionDigits: 2, }).format((value / (latency || 1)) * 100)}%`}
{new Intl.NumberFormat("en-US", { maximumFractionDigits: 3, }).format(value)} ms
); })}
); }