/* ============ News — media coverage / press list ============ */ function formatNewsDate(d) { if (!d) return ""; const m = /^(\d{4})-(\d{2})-(\d{2})/.exec(d); return m ? `${m[1]}.${m[2]}.${m[3]}` : d; } function NewsCard({ n, idx }) { const [ref, seen] = useInView(); const hasLink = !!n.url; const Tag = hasLink ? "a" : "div"; const linkProps = hasLink ? { href: n.url, target: "_blank", rel: "noopener noreferrer" } : {}; return (
{n.image ? {n.title : } {n.type && {n.type}}
{formatNewsDate(n.date)} {n.outlet && {n.outlet}}

{n.title}{hasLink && READ →}

{n.excerpt &&

{n.excerpt}

}
); } function NewsSection() { const data = ((window.HASHBIT_DATA && window.HASHBIT_DATA.news) || []) .filter(n => n.published !== false) .slice() .sort((a, b) => (b.date || "").localeCompare(a.date || "")); if (!data.length) return null; return (
04 News
{String(data.length).padStart(2, "0")} ARTICLES
{data.map((n, i) => )}
); } Object.assign(window, { NewsSection });