import Image from "next/image"; import Link from "next/link"; import { ArrowRight } from "lucide-react"; import { CategoryTiles } from "@/components/home/category-tiles"; import { HeroCarousel } from "@/components/home/hero-carousel"; import { TrustBar } from "@/components/home/trust-bar"; import { ProductCarousel } from "@/components/product/product-carousel"; import { Button } from "@/components/ui/button"; import { getCategories, getProducts } from "@/lib/headless/client"; // Sin esto, Next.js prerenderiza "/" en build time dentro del Dockerfile, // donde HEADLESS_PROVIDER/MEDUSA_* todavia no existen (solo se inyectan en // runtime via el Deployment) -- cae al provider mock y ese HTML queda // cacheado 1 año (visto en vivo: x-nextjs-prerender:1, s-maxage=31536000), // violando el flujo Admin -> revalidate del ADR 0005 justo en el home. export const dynamic = "force-dynamic"; export default async function HomePage() { const [products, categories] = await Promise.all([getProducts(), getCategories()]); const treasures = products.filter((product) => product.isNew || product.featured).slice(0, 8); // ADR 0010: el banner toma primero productos destacados (curaduria // explicita del admin via el flag "featured"); si no hay ninguno, // cae a los mismos "tesoros" (nuevos/destacados) de la seccion de // abajo para no repetir la logica de seleccion. Se exige ademas // "available" -- encontrado probando en vivo con un navegador real // (Playwright): un producto featured pero sin stock disponible salio // primero en el carrusel con boton "Comprar ahora" hacia una pagina // donde en realidad no se puede comprar. const featuredProducts = products.filter((product) => product.featured && product.available); const bannerProducts = featuredProducts.length > 0 ? featuredProducts : treasures.filter((product) => product.available); return <>
Novedades

Tesoros recién llegados

Desliza y encuentra nuevos favoritos.

Club ARI

Promociones, lanzamientos y mucha diversión.

Únete a nuestra comunidad y recibe primero las novedades del catálogo.

{/* No hay herramienta de generacion de imagenes disponible para crear un asset nuevo -- se reconstruye el mismo efecto (fondo punteado + fotos estilo polaroid) con CSS y fotos reales de producto ya existentes, en azul/amarillo de marca en vez del violeta original de promo-backpacks.webp. */}
; }