trptk/lib/sanityImageLoader.ts
2026-02-24 17:14:07 +01:00

23 lines
728 B
TypeScript

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