import { ImgHTMLAttributes, ReactNode, Ref } from 'react'; import { SlotClassNames, SlotStyles, DataProps } from '../types/slots.types.js'; /** The stand-ins Image renders in the image's place. The image itself is styled through `className` and `style`. */ export type ImageSlots = 'placeholder' | 'fallback'; export interface ImageProps extends DataProps, ImgHTMLAttributes { src: string; /** Read out by screen readers, and by the fallback when the image fails to load. Pass `''` for a purely decorative image. */ alt: string; /** A small version shown in the image's place until it has loaded, usually one the browser already has. Best in the same aspect ratio. */ thumbnail?: string; /** Shown in the image's place while it loads instead of the skeleton, until a `thumbnail` has loaded. `null` shows nothing. */ placeholder?: ReactNode; /** Shown in the image's place if it fails to load, instead of the built-in one. */ fallback?: ReactNode; /** The `` itself. */ ref?: Ref; classNames?: SlotClassNames; styles?: SlotStyles; }