Accessible, memoized React carousel component for displaying mixed media (images, videos, YouTube embeds) with dot pagination, keyboard navigation, touch swipe support, and broken-image fallback handling. ## Key Components ### `MediaCarousel` (default export) A `memo`-wrapped component implementing the canonical slide viewer used across OpenFrame homepage categories, vendor screenshots, profiles, and Reddit embeds. **Props (`MediaCarouselProps`):** | Prop | Type | Default | Description | |---|---|---|---| | `media` | `MediaItem[]` | — | Array of slide descriptors | | `aspectRatio` | `'16/9' \| '4/3' \| '3/2' \| '1/1'` | `'16/9'` | Container aspect ratio | | `showArrows` | `boolean` | `true` | Hover-revealed prev/next arrows | | `objectFit` | `'contain' \| 'cover'` | `'contain'` | Image fit within container | | `posterPriority` | `boolean` | `false` | Eager-loads first slide (LCP optimization) | | `transformImageSrc` | `(url: string) => string` | — | URL rewrite hook (e.g. proxy `http://` sources) | | `reserveDotRow` | `boolean` | `false` | Always reserves dot-row height to prevent layout shift on media set swaps | ### Internal Helpers | Function | Description | |---|---| | `renderVideo` | Routes `video`/`youtube` items through the `