fix(ecommerce): miniaturas recortaban fotos verticales + tamaño de fuente de descripción
Build and Push Frontend / Escaneo de Secretos (Gitleaks) (push) Successful in 26s
Build and Push Frontend / Construir y Subir Imagen (push) Successful in 7m11s

- Miniaturas pasan de object-cover a object-contain: fotos con
  relación de aspecto muy vertical (confirmado en vivo: 933x1500 en
  este catálogo) perdían cabeza o pies al forzar el recorte cuadrado.
  Reportado por el usuario viendo las miniaturas de un producto real.
- La descripción del producto bajaba de 18px (text-lg, mismo tamaño
  que un párrafo de apertura de página completa como /envios) a 16px
  (text-base) -- se veía desproporcionada al lado del resto de la
  columna de compra en el layout de 3 columnas.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_012Y4df3Z7odr9Cg8F2nw6uV
This commit is contained in:
devopsandClaude Sonnet 5 committed 2026-09-14 01:29:02 +00:00
1 parent 567ee30e1f
commit 8889fd9ea2
2 files changed
+8 -2

No files matched your search

@@ -55,7 +55,7 @@ export default async function ProductPage({ params }: ProductPageProps) {
<div className="min-w-0"> <div className="min-w-0">
<span className="text-xs font-black uppercase tracking-[.18em] text-ari-coral">{product.category} · {product.collection}</span> <span className="text-xs font-black uppercase tracking-[.18em] text-ari-coral">{product.category} · {product.collection}</span>
<h1 className="mt-3 text-4xl font-black tracking-tight sm:text-6xl">{product.name}</h1> <h1 className="mt-3 text-4xl font-black tracking-tight sm:text-6xl">{product.name}</h1>
<p className="mt-5 text-lg leading-8 text-slate-600">{product.description}</p> <p className="mt-5 text-base leading-7 text-slate-600">{product.description}</p>
{/* Antes escondido detrás de un click en el acordeón -- {/* Antes escondido detrás de un click en el acordeón --
siempre visible, estilo Amazon, con los mismos datos siempre visible, estilo Amazon, con los mismos datos
reales que ya existían (marca/edad/categoría/colección), reales que ya existían (marca/edad/categoría/colección),
@@ -118,7 +118,13 @@ export function ProductGallery({ images, name }: { images: string[]; name: strin
miniaturas sin wrappear puede forzar overflow horizontal en toda miniaturas sin wrappear puede forzar overflow horizontal en toda
la pagina en mobile. */} la pagina en mobile. */}
<div className="order-2 flex gap-3 overflow-x-auto lg:order-1 lg:flex-col"> <div className="order-2 flex gap-3 overflow-x-auto lg:order-1 lg:flex-col">
{images.map((image) => <button type="button" key={image} onClick={() => { setSelected(image); reset(); }} onMouseEnter={() => { setSelected(image); reset(); }} className={`relative aspect-square w-20 shrink-0 overflow-hidden rounded-2xl border-2 ${selected === image ? "border-fuchsia-500" : "border-transparent"}`}><Image src={image} alt="" fill sizes="80px" className="object-cover" /></button>)} {/* object-contain (no object-cover): fotos de producto con relacion
de aspecto muy vertical (ej. 933x1500, confirmado en vivo para
este catalogo) perdian la cabeza o los pies recortados al forzar
el cuadrado con cover -- reportado por el usuario viendo las
miniaturas. contain deja la miniatura completa siempre, con
"letterbox" del mismo bg-slate-50 que usa la imagen principal. */}
{images.map((image) => <button type="button" key={image} onClick={() => { setSelected(image); reset(); }} onMouseEnter={() => { setSelected(image); reset(); }} className={`relative aspect-square w-20 shrink-0 overflow-hidden rounded-2xl border-2 bg-slate-50 ${selected === image ? "border-fuchsia-500" : "border-transparent"}`}><Image src={image} alt="" fill sizes="80px" className="object-contain" /></button>)}
</div> </div>
<div className="relative order-1 lg:order-2"> <div className="relative order-1 lg:order-2">
<Dialog open={open} onOpenChange={changeOpen}> <Dialog open={open} onOpenChange={changeOpen}>