Pure presentation component for displaying investor update entities across three density variants (`default`, `sm`, `portrait`), with no internal click logic — callers provide the resolved `href`. ## Key Components | Export | Description | |---|---| | `InvestorUpdateCard` | Main card component rendering one of three layouts based on the `size` prop | | `InvestorUpdateCardSkeleton` | Loading placeholder matching the card's layout for `default`/`portrait` or `sm` density | | `InvestorUpdateCardProps` | Props interface defining the card's API | **Size variants:** - **`default`** — Full card using `AdminContentCard` with cover image, title, summary, badge, and period meta - **`sm`** — Compact horizontal layout (`EntityPortraitCard`-style) with image slot, title, update number badge, period subtitle, and truncated summary - **`portrait`** — Rail/strip layout delegated to `EntityPortraitCard`, with optional content-type chip controlled by `showTypeBadge` ## Usage Example ```typescript import { InvestorUpdateCard, InvestorUpdateCardSkeleton } from './investor-update-card' // Default density // Compact horizontal (e.g., list/feed rows) // Portrait rail (mixed-type content strips) // Loading state ``` **Key behaviours:** - Falls back to a generated placeholder image via `useEntityCardPlaceholder` when `featured_image` is absent; aspect ratio is `square` for `sm`, `wide` otherwise - Tab target and `rel` are resolved by `useEntityCardLink`, supporting cross-platform dispatch via `targetPlatform` - Image `onError` hides broken images gracefully in the `sm` variant ## Source [`investor-update-card.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/investor-update-card.tsx)