Cross-Module Integration
Related Signals component
Related Signals component — documentation pending.
Complete
`<app-related-ecosystem-signals [block]="signalsBlock()" />` is the single shared component used across all 7 detail surfaces. It is a router — it switches on `signal.module` and renders the canonical card from each source module. Zero per-surface duplication.
The 7 module → card mapping
- opportunity
- <app-opportunity-card> — status-tinted, deadline pill, Apply CTA.
- founder
- <app-founder-card> — identity avatar + role + profile-status badge.
- file
- <app-founder-file-card> — 3:4 cover with SVG fallback + Best For + Download CTA.
- event
- <app-event-card variant="compact"> — date block + sector chips + country.
- startup
- <app-startup-card> — 16:9 logo canvas + sector/stage/country + Verified.
- editorial
- <app-editorial-card> — type eyebrow + title + dek + author + reading time.
- coverage
- <app-coverage-card> — 16:9 cover + coverage-kind chip + author/date.
The "Why" eyebrow above each card
Every signal carries a `reason` string that renders as a small eyebrow ABOVE the canonical card. Format: purple module-label chip + orange arrow + italic body text. Manual editorial reasons take priority; auto-generated reasons fall back to a localized template.
Three layouts
- strip (default) — 3-4 mixed-module signals. Swipe-scroll on mobile, 3-up grid desktop.
- grouped — 5-6 signals where ≥3 share a module. Per-module subheads.
- mixed (Phase 2) — Editorial narrative — first card featured, rest in grid. Currently falls back to strip.
