Compare commits

...
Author SHA1 Message Date
devops a4dd1c444a fix(ecommerce): corrige error de tipos que rompia el build de CI
npm run build fallaba en CI (runs 201 y 202, ambos commits que incluian
hero-carousel.tsx) con 'slide is possibly undefined' -- indexar
slides[index] con TypeScript estricto (noUncheckedIndexedAccess) tipa
el resultado como Slide | undefined aunque el indice siempre sea
valido en runtime (useState(0) + modulo en el autoplay + clicks solo
a indices validos).

Como el build nunca genero una imagen nueva, Argo seguia sirviendo
v1.0.197 (el commit anterior al carrusel) -- el hero y los tiles-scrim
en produccion nunca reflejaron estos dos cambios ya mergeados a main.
Este fix desbloquea ambos builds.
2026-08-28 17:56:09 +00:00
devops a3913ce457 Merge fix/adr0008-tiles-scrim-pastel into main
Build and Push Frontend / Escaneo de Secretos (Gitleaks) (push) Successful in 20s
Build and Push Frontend / Construir y Subir Imagen (push) Failing after 3m28s
2026-08-28 17:41:49 +00:00
devops 503d714ea4 fix(ecommerce): tiles con foto usan franja tintada con su propio pastel
Reportado en produccion: las tarjetas con foto (Juguetes, Mochilas)
usaban una franja de degradado blanca generica para el texto, y se
veian desconectadas de las tarjetas solidas vecinas (rosa, verde,
etc.) de la misma seccion. La franja ahora usa el mismo pastel
asignado a esa categoria (from-amber-100 / from-sky-100) en vez de
blanco, y se agranda ligeramente (h-2/5 -> h-3/5) para mas presencia.
2026-08-28 17:41:47 +00:00
devops afd6991519 Merge fix/adr0008-hero-carrusel-azul into main
Build and Push Frontend / Escaneo de Secretos (Gitleaks) (push) Successful in 19s
Build and Push Frontend / Construir y Subir Imagen (push) Failing after 3m59s
2026-08-28 17:37:44 +00:00
2 changed files with 9 additions and 4 deletions

No files matched your search

@@ -4,7 +4,7 @@ import { ArrowUpRight } from "lucide-react";
import type { Category } from "@/lib/headless/types";
import { cn } from "@/lib/utils";
type TileContent = { subtitle: string; image?: string; color: string };
type TileContent = { subtitle: string; image?: string; color: string; scrim?: string };
// No hay fotografia real todavia para las 6 categorias raiz de la taxonomia
// (ver ADR 0005) -- solo se mapean imagen/subtitulo para las que ya tienen
@@ -15,8 +15,8 @@ type TileContent = { subtitle: string; image?: string; color: string };
// un tono pastel distinto por categoria, no una escala de marca (serian
// todos casi iguales), pero coordinados en la misma temperatura suave.
const tileContent: Record<string, TileContent> = {
juguetes: { subtitle: "Personajes que inspiran", image: "/images/categories/figuras.webp", color: "bg-amber-100" },
"mochilas-y-morrales": { subtitle: "Estilo para cada aventura", image: "/images/categories/mochilas.webp", color: "bg-sky-100" },
juguetes: { subtitle: "Personajes que inspiran", image: "/images/categories/figuras.webp", color: "bg-amber-100", scrim: "from-amber-100" },
"mochilas-y-morrales": { subtitle: "Estilo para cada aventura", image: "/images/categories/mochilas.webp", color: "bg-sky-100", scrim: "from-sky-100" },
"bebes-y-primera-infancia": { subtitle: "Primeros descubrimientos", color: "bg-rose-100" },
educativos: { subtitle: "Aprender jugando", color: "bg-emerald-100" },
"accion-y-aventura": { subtitle: "Para explorar sin límites", color: "bg-orange-100" },
@@ -40,7 +40,11 @@ export function PromoTile({ category, className = "" }: { category: Category; cl
{content.image && (
<>
<Image src={content.image} alt={category.name} fill sizes="(max-width: 640px) 100vw, (max-width: 1024px) 33vw, 16vw" className="object-cover transition duration-500 group-hover:scale-105" />
<div className="absolute inset-x-0 bottom-0 h-2/5 bg-gradient-to-t from-white/95 via-white/70 to-transparent" />
{/* Franja tintada con el pastel propio de la categoria (no
blanco generico) -- sin esto la tarjeta con foto se veia
desconectada de las tarjetas solidas vecinas, reportado
en produccion. */}
<div className={`absolute inset-x-0 bottom-0 h-3/5 bg-gradient-to-t ${content.scrim ?? "from-white"} via-white/50 to-transparent`} />
</>
)}
<div className="absolute inset-x-0 bottom-0 flex items-end justify-between p-6 text-slate-900">
@@ -61,6 +61,7 @@ export function HeroCarousel() {
}, [reduceMotion]);
const slide = slides[index];
if (!slide) return null;
const Icon = slide.icon;
return (