<!-- source-hash: 7fa49d7ef85ecd5ac09ebac9a632fbac -->
Renders a collapsible/expandable changelog section for product releases, supporting three display modes: default (always visible), collapsible (toggle open/closed), and preview-first (show first entry with fade-masked overflow).

## Key Components

### `ReleaseChangelogSection` (exported)
Main component accepting these key props:

| Prop | Type | Description |
|------|------|-------------|
| `title` | `string` | Section heading text |
| `entries` | `ChangelogEntry[]` | List of changelog items to render |
| `isBreaking` | `boolean` | Applies red styling for breaking changes |
| `collapsible` | `boolean` | Enables toggle open/close mode (wins over `previewFirst`) |
| `defaultCollapsed` | `boolean` | Initial collapsed state when `collapsible=true` (default: `true`) |
| `previewFirst` | `boolean` | Shows first entry fully, fades remaining with "Show N more" toggle |
| `icon` | `React.ReactNode` | Optional Lucide icon rendered before title |
| `SimpleMarkdownRenderer` | `ComponentType` | Injected markdown renderer for entry descriptions |

### `ChangelogEntryList` (internal)
Shared list renderer used by both default and preview-first branches. Renders each `ChangelogEntry` as a left-bordered list item with bold title and markdown-rendered description, with responsive typography tokens pinned via Tailwind `[&_p]:!` overrides.

## Usage Example

```typescript
import { ReleaseChangelogSection } from './release-changelog-section';
import { Sparkles } from 'lucide-react';

<ReleaseChangelogSection
  title="New Features"
  entries={[
    { title: "AI Ticketing", description: "Automated ticket routing via Mingo AI." },
    { title: "Client Portal", description: "Fae self-service dashboard launched." },
  ]}
  icon={<Sparkles className="w-5 h-5" />}
  previewFirst
  SimpleMarkdownRenderer={MyMarkdownRenderer}
/>

// Collapsible breaking-changes section
<ReleaseChangelogSection
  title="Breaking Changes"
  entries={breakingEntries}
  isBreaking
  collapsible
  defaultCollapsed={false}
  SimpleMarkdownRenderer={MyMarkdownRenderer}
/>
```

> **Note:** When both `collapsible` and `previewFirst` are passed, `collapsible` takes precedence. The `previewFirst` fade toggle resets automatically when `entries.length` changes.