Self-contained list view for product releases that handles fetching, filtering, pagination, and card rendering. Designed to be embedded with minimal configuration — the host provides an API endpoint and base path; all URL param reading, data fetching, and state management are handled internally.
## Key Components
### `ProductReleasesView` (default export)
Main list surface. Reads search/status/page URL params written by the section chrome, fetches from the configured endpoint via `useSelfFetch`, and renders a stable slot-count layout to prevent height shifts during loading.
### `ReleaseRow`
Internal per-release component that isolates per-item hook calls (`useChatRuntime`, `useEntityCardLink`, `useRouter`) outside the parent `.map()` loop to comply with Rules of Hooks. Resolves the card's navigation href via `resolveContentHref` and delegates navigation to `executeNavigationImperative`.
### `ProductReleaseCardExtras`
Exported type describing the per-release prop bundle the `buildCardProps` callback must return — all `ProductReleaseCardProps` fields except those the view supplies directly (`title`, `summary`, `version`, `size`, `anchorProps`, `onClick`, `className`).
## Usage Example
```typescript
// Minimal — uses all defaults (endpoint, basePath, rich card builder)
// Custom endpoint + SSR hydration
// Custom card props builder
({
formattedDate: formatDate(release.released_at),
releaseType: release.type,
})}
/>
```
## Configuration
| Prop | Default | Description |
|---|---|---|
| `endpoint` | `/api/releases` | GET endpoint; view appends `limit`, `offset`, `search`, `release_status` |
| `initialData` | — | SSR hydration payload; skips initial client fetch |
| `itemsPerPage` | `5` | Fixed slot count for stable layout |
| `basePath` | `/releases` | Fallback href prefix when `composeContentUrl` is not wired |
| `buildCardProps` | `buildProductReleaseCardProps` | Derive per-card metadata from a release object |
| `searchParamKey` | `'search'` | Must match the URL param written by the section chrome |
| `statusParamKey` | `'release_status'` | Status filter URL param key |
| `pageParamKey` | `'page'` | Pagination URL param key |