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 |