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;
}