import type { ImageLoaderProps } from "next/image"; export default function sanityImageLoader({ src, width, quality }: ImageLoaderProps) { // If it's a local image (doesn't start with http), append width as query param // This satisfies Next.js requirement that loaders implement width if (!src.startsWith('http')) { return `${src}?w=${width}`; } // Only apply transformations to Sanity CDN images if (!src.includes('cdn.sanity.io')) { return `${src}?w=${width}`; } const url = new URL(src); url.searchParams.set('w', width.toString()); url.searchParams.set('q', (quality || 90).toString()); url.searchParams.set('fit', 'max'); url.searchParams.set('fm', 'webp'); return url.toString(); }