IntersectionObserver-backed lazy loader with skeleton placeholder and fit modes
| Prop | Type | Default | Description |
|---|---|---|---|
src | string | - | Image URL |
alt | string | - | Accessible alt text |
fit | "cover" | "contain" | "fill" | "cover" | Object-fit mode |
aspectRatio | string | null | null | CSS aspect-ratio (e.g. "16/9") |
preload | boolean | false | Load immediately without waiting for viewport entry |
priority | boolean | false | Alias for preload — marks above-the-fold images |
width | number | null | null | Explicit width in px |
height | number | null | null | Explicit height in px |