// Shared UI atoms for the edition — ink icons only. // The raw ♥ codepoint renders as a broken/arrow-ish glyph on some Android fonts, // so the heart, cross and arrow are inline SVG paths filled with currentColor. // // Reading-pass atoms (2026-08-31): ReadStamp, ReadAtButton and Headline live here // because the front page, the section pages and the reader pane all draw them and // they must not drift apart. export function HeartIcon({ size = 11 }) { return ( ); } export function CrossIcon({ size = 9 }) { return ( ); } // North-east arrow — the "leaves the paper" glyph. Also SVG for the same font reason. export function ArrowIcon({ size = 10 }) { return ( ); } const imgSrc = (u) => (u ? `/api/img?u=${encodeURIComponent(u)}` : null); // Photo sized by its context (.ft-sec img, .ft-brief-item img, .ft-story img). // No image -> ink hatching placeholder of the same box. export function Thumb({ story, eager = false }) { if (!story.image) return