Implementación
Cómo se construye
La regex que valida la ruta (content.config.ts), el comando que optimiza a AVIF antes de subir, y cómo la ProductCard monta el <img> con dimensiones fijas y carga según posición.
La validación es una sola línea: un z.string().regex(/^\/images\//) reutilizable (imagePath) que comparten image y gallery. Antes de subir, la foto se optimiza a AVIF con ImageMagick (q50, ~1280px) y se nombra con la keyword. Esos dos pasos —validar la ruta, optimizar el archivo— son el contrato de entrada de toda imagen del catálogo.
En el render, la ProductCard computa eager = priority || index < 4 y emite un <img> con width/height fijos (16:9), loading eager o lazy según el índice, y fetchpriority="high" solo si priority. Cero JavaScript: HTML estático generado en build. Abajo, las recetas: el esquema, el comando AVIF y el montaje del <img>.