/* 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 (
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) => (
{/* name strap */}
2 ? 0 : 60,
display: "flex", flexDirection: "column", boxShadow: "var(--shadow-md)",
borderRadius: "var(--sweep-sm)", overflow: "hidden", fontFamily: "var(--font-ui)" }}>
))}
);
}
/* ---------- 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 (
);
}
/* ---------- Countdown chip: retired — replaced by RailCountdown in rails.jsx ---------- */
Object.assign(window, {
HeroLowerThird, OTSBox, MultiBox, PhonePanel, MapInlay,
LocatorBox, AttributionBox, L3_VARIANTS,
});