<!-- source-hash: bce89d098aaae5a0045e31b754508d2a -->
A client-side React page component that renders a detailed view of a product release, including metadata, changelog sections, linked roadmap/delivery tasks, media, and video content. It supports injectable components for app-specific rendering and pre-fetched data for admin preview.

## Key Components

### Exported Types
- **`ReleaseDetailPageProps`** — Main props interface; accepts `slug`, optional `initialData`, a `useRelease` hook, and injectable section components
- **`UseReleaseResult`** — Shape returned by the injected `useRelease` hook
- **`MarkdownRendererProps`**, **`RoadmapSectionProps`**, **`DeliverySectionProps`**, **`VideoSectionProps`**, **`VideoDisplaySectionProps`** — Props interfaces for each injectable section component
- **`RoadmapItem`**, **`DeliveryResponse`** — Re-exported canonical types for source compatibility

### Main Export
- **`ReleaseDetailPage`** — Primary page component; orchestrates data fetching, linked task loading, gallery state, and layout rendering

### Internal Helpers
- **`DefaultMarkdownRenderer`** — Fallback renderer using `whitespace-pre-wrap` when no `MarkdownRenderer` is injected

## Usage Example

```typescript
import { ReleaseDetailPage } from './release-detail-page';
import { useRelease } from '@/hooks/use-release';
import { MarkdownRenderer } from '@/components/markdown-renderer';
import { RoadmapSection } from '@/components/roadmap-section';

export default function ReleasePage({ params }: { params: { slug: string } }) {
  return (
    <ReleaseDetailPage
      slug={params.slug}
      useRelease={useRelease}
      MarkdownRenderer={MarkdownRenderer}
      RoadmapSection={RoadmapSection}
      roadmapApiEndpoint="/api/roadmap"
      deliveryApiEndpoint="/api/delivery"
      backButton={{ label: 'Back to releases', href: '/releases' }}
    />
  );
}
```

> **Note:** The `useRelease` hook must be provided at the app level to ensure it uses the correct `QueryClient`. When `initialData` is supplied, the hook is bypassed entirely — enabling admin preview without a network fetch.