Reemplaza hero-bento.tsx (grid estatico de 3 tarjetas en fucsia/rosa/ rojo/violeta del esquema arcoiris original, nunca migrado -- sub-fase 4 del ADR 0008 pendiente) por hero-carousel.tsx: un slide a la vez sobre fondo azul de marca (--color-ari-marino) para los tres mensajes promocionales existentes, con dots de paginacion clicables abajo (patron pedido explicitamente por el usuario) y autoplay cada 6s (respeta prefers-reduced-motion). Actualiza app/page.tsx para usar el componente nuevo y elimina hero-bento.tsx.
22 lines
2.5 KiB
TypeScript
22 lines
2.5 KiB
TypeScript
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);
|
|
return <><HeroCarousel /><TrustBar /><div className="content-auto"><CategoryTiles categories={categories} /></div><section className="content-auto mx-auto max-w-7xl px-4 py-14"><div className="mb-8 flex items-end justify-between gap-5"><div><span className="text-xs font-black uppercase tracking-[.18em] text-fuchsia-600">Novedades</span><h2 className="mt-2 text-4xl font-black tracking-tight sm:text-5xl">Tesoros recién llegados</h2><p className="mt-3 text-slate-500">Desliza y encuentra nuevos favoritos.</p></div><Button asChild variant="outline" className="hidden sm:inline-flex"><Link href="/catalog">Ver catálogo <ArrowRight className="size-4" /></Link></Button></div><ProductCarousel products={treasures} /></section><section className="content-auto mx-auto max-w-7xl px-4 pb-20"><div className="grid overflow-hidden rounded-[2rem] bg-gradient-to-r from-cyan-500 via-blue-600 to-violet-600 text-white shadow-2xl lg:grid-cols-[1fr_.7fr]"><div className="p-8 sm:p-12"><span className="text-xs font-black uppercase tracking-[.18em] text-yellow-300">Club ARI</span><h2 className="mt-3 text-4xl font-black tracking-tight sm:text-6xl">Promociones, lanzamientos y mucha diversión.</h2><p className="mt-5 max-w-xl text-white/80">Únete a nuestra comunidad y recibe primero las novedades del catálogo.</p><Button variant="yellow" size="lg" className="mt-7">Quiero unirme</Button></div><div className="min-h-64 bg-[url('/images/promo/promo-backpacks.webp')] bg-cover bg-center" /></div></section></>;
|
|
}
|