/* RADAR1 — inset dressings layered over the hero video */ const DS = window.Radar1DesignSystem_1f4661; /* ---------- Lower third variants ---------- */ const L3_VARIANTS = { story: { kicker: "TOP STORY", accent: "var(--radar-red)", headline: "Fed signals two rate cuts by year end", subline: "Chair Whitmore: 'confidence inflation is returning to target'" }, weather: { kicker: "WEATHER ALERT", accent: "var(--signal-amber)", headline: "Flash flood warning for Tampa Bay until 21:00 ET", subline: "Radar estimates 3–5 in. rainfall through evening" }, live: { kicker: "LIVE · WARSAW", accent: "var(--radar-red)", headline: "Poland closes eastern airspace to civilian traffic", subline: "Marta Kowal · Radar1 Europe correspondent" }, analysis:{ kicker: "ANALYSIS", accent: "var(--signal-violet)", headline: "What Article 4 means — and what it doesn't", subline: "Dr. Elena Brandt · Security policy, KCL" }, }; function HeroLowerThird({ variant = "story", situation = false }) { let v = L3_VARIANTS[variant] || L3_VARIANTS.story; if (situation && window.R1DATA.situation) v = { kicker: window.R1DATA.situation.kicker, accent: "var(--radar-red)", headline: window.R1DATA.situation.headline, subline: window.R1DATA.situation.subline || "" }; return (
); } /* ---------- Frame-attached boxes (sit OUTSIDE the inlay, hugging its edges) ---------- */ /* upper-right: live location indicator + local time */ function LocatorBox({ text, tz, h24 }) { const now = useNow(); return (
LIVE {text} {fmtTime(now, tz, h24)}
); } /* lower-right: subdued source / attribution */ function AttributionBox({ text }) { return (
SOURCE · {text}
); } /* ---------- Over-the-shoulder graphic ---------- */ function OTSBox() { useLucide([]); return (
{Array.from({ length: 5 }, (_, i) => )}
MARKETS
Rate-cut rally lifts S&P to record
); } /* ---------- Two box / multibox ---------- */ const BOX_DEFS = [ { scene: "studio", strap: "MAYA OKONKWO", sub: "RADAR1 ANCHOR · NEW YORK", accent: "var(--radar-red)" }, { scene: "field", strap: "MARTA KOWAL", sub: "LIVE · WARSAW", accent: "var(--radar-red)", live: true }, { scene: "presser", strap: "DEVON PRICE", sub: "LIVE · BRUSSELS", accent: "var(--radar-red)", live: true }, ]; function MultiBox({ count = 2 }) { const boxes = BOX_DEFS.slice(0, count); return (
RADAR1
{boxes.map((b, i) => (
{b.live && (
LIVE
)}
{/* name strap */}
2 ? 0 : 60, display: "flex", flexDirection: "column", boxShadow: "var(--shadow-md)", borderRadius: "var(--sweep-sm)", overflow: "hidden", fontFamily: "var(--font-ui)" }}>
{b.strap}
{b.sub}
))}
); } /* ---------- On the phone ---------- */ function PhonePanel() { useLucide([]); const bars = React.useMemo(() => Array.from({ length: 26 }, (_, i) => i), []); return (
ON THE PHONE LIVE
Amb. Katrine Holm
Former NATO Deputy Secretary General
{/* waveform */}
{bars.map((i) => ( ))}
); } /* ---------- Inlay locator map (radar-scope style) ---------- */ function MapInlay() { return (
{/* ping */}
TAMPA, FL
STORM TRACK NNE 12 MPH
); } /* ---------- Countdown chip: retired — replaced by RailCountdown in rails.jsx ---------- */ Object.assign(window, { HeroLowerThird, OTSBox, MultiBox, PhonePanel, MapInlay, LocatorBox, AttributionBox, L3_VARIANTS, });