Skip to main content

Modules Documentation

Status & badge logic

How statuses transition and what badges render.

Complete

Unlike Calendar (with 7 EventStatus values) or Opportunity Radar (with 4 deadline states), Coverage has no lifecycle status. An article is either published (publishedAt is set, lives in production data) or it doesn’t exist publicly. The only signals that drive badge treatment are the kind enum and isFeatured boolean.

Kind → badge mapping

recap
Neutral journalism. Badge: "RECAP" in editorial blue. The default kind for most event coverage.
analysis
Editorial opinion + market interpretation. Badge: "ANALYSIS" in editorial amber. Carries explicit "Editorial perspective" disclosure on the article.
highlights
Visual + quote-driven shorter piece. Badge: "HIGHLIGHTS" in editorial green. bodyHtml is usually <600 words with multiple figures.
pitch-result
Structured outcomes (winners, term sheets, awards). Badge: "PITCH RESULT" in editorial purple. The body often includes a structured outcomes table (winner, runner-up, prizes).
sponsor-spotlight
Paid coverage product, clearly labelled. Badge: "SPONSORED" with a distinct background tint that persists on every card variant + a top-of-article disclosure ribbon. Same fact-check standard as editorial.

isFeatured → card variant

When isFeatured=true, the coverage card is rendered in the "large" variant — larger cover image, longer dek excerpt, and the kind badge is positioned at top-left instead of overlaid on the cover. The large variant is what appears in the Homepage featured rail and the top slot of an event details page when multiple coverage articles exist for the same event. Only one featured slot per surface per render.