"use client" import { TriangleAlert, Satellite } from "lucide-react" import { cn } from "@/lib/utils" /** * TargetDistance — ren visningskomponent for gjenstående avstand til grønn. * * "Dum" med vilje: den mottar ferdigregnede tall som props. Ingen GPS, * ingen fetch, ingen kart. Følger TeeCups clubhouse-palett (grønn/oransje * aksenter, samme korthjørner/skygge-stil som resten av scorekortet). */ export type TargetDistanceProps = { distances: { front: number // meter middle: number back: number } | null // null = ingen koordinatdata for dette hullet (normal, forventet tilstand) nearestHazard?: { label: string // f.eks. "Bunker (front)" distanceMeters: number } | null isLive: boolean // true = tallene oppdateres kontinuerlig fra GPS akkurat nå /** "compact" = badge ved siden av GIR-merket, "full" = eget panel. */ size?: "compact" | "full" className?: string } /** Liten "oppdateres live"-indikator: pulserende prikk + tekst (aldri kun farge). */ function LiveStatus({ isLive, compact }: { isLive: boolean; compact?: boolean }) { return ( {isLive ? ( <> {compact ? "Live" : "Oppdateres live"} > ) : ( <> {compact ? "Sist målt" : "Ikke live — sist målte posisjon"} > )} ) } /** Hindring-linje: kun synlig når det finnes en relevant hindring. Oransje varsel, ikke rødt. */ function HazardLine({ hazard, compact, }: { hazard: { label: string; distanceMeters: number } compact?: boolean }) { return (
{hazard.label}: {hazard.distanceMeters} m
) } /** En avstandskolonne (Front/Midt/Bak). Alltid tekst-label + tall + enhet. */ function DistanceColumn({ label, value, emphasized, compact, }: { label: string value: number emphasized?: boolean compact?: boolean }) { return (