setShowTooltip(true)}
onMouseLeave={() => setShowTooltip(false)}
{...props}
>
{/* Debug tooltip overlay */}
{showTooltip && !isLoading && !hasError && (
{variant && (
variant
{variant}
)}
url:
{imageUrl || url}
{naturalDim && (
rendered:
{naturalDim.width}x{naturalDim.height}
)}
{dim && (
declared:
{dim.width}x{dim.height}
)}
{variant && originalUrl && (
original:
{originalUrl}
)}
{sha256 && (
sha256:
{sha256}
)}
)}
{/* Spacer: transparent image to maintain dimensions when image is loading */}
{isLoading && dim?.width && dim?.height && (

)}
{displaySkeleton && (
{thumbHash ? (
) : blurHash ? (
) : (
)}
)}
{!hasError && (

)}
{hasError &&
(typeof errorPlaceholder === 'string' ? (

) : (
{errorPlaceholder}
))}
)
}
const blurHashWidth = 32
const blurHashHeight = 32
function BlurHashCanvas({ blurHash, className = '' }: { blurHash: string; className?: string }) {
const canvasRef = useRef