Storybook stories for the `ProgramCard` component, covering the three supported program doc types (`podcast`, `webinar`, `event`) at both `sm` (chat-dispatch) and `default` (catalog page) sizes.
## Key Components
| Export | Description |
|---|---|
| `ProgramCard` | Generic card component for program-type content entities |
| `DEFAULT_PROGRAM_CONFIGS` | Pre-built safe minimum configs per doc type (`podcast`, `webinar`, `event`) |
| `ChatColumnDecorator` | Storybook decorator that wraps stories in a chat column layout |
| `podcastItem` / `webinarItem` / `eventItem` | Fixture data for each program type |
## Stories
| Story | Size | Notes |
|---|---|---|
| `PodcastSm` | `sm` | Chat-dispatch rendering for podcast cards |
| `WebinarSm` | `sm` | Chat-dispatch rendering for webinar cards |
| `EventSm` | `sm` | Chat-dispatch rendering for event cards |
| `PodcastDefault` | `default` | Full density; used on the podcast catalog page, not inline in chat |
## Usage Example
```typescript
import { ProgramCard } from '../components/chat/entity-cards'
import { DEFAULT_PROGRAM_CONFIGS } from '../components/chat/entity-cards/program-card-defaults'
// Minimal chat-safe rendering (sm size used by chat dispatch)
// Override config per type for full catalog rendering
```
> **Note:** `DEFAULT_PROGRAM_CONFIGS[type]` ships a safe minimum config for compact chat rendering. Embedders can override per type with a full catalog config via the `config` prop.
## Source
[`ProgramCard.stories.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/ProgramCard.stories.tsx)