import type { Metadata, Viewport } from "next"; import { Inter, Poppins } from "next/font/google"; import "./globals.css"; import { CartDrawer } from "@/components/cart/cart-drawer"; import { Footer } from "@/components/layout/footer"; import { Navbar } from "@/components/layout/navbar"; import { WishlistDrawer } from "@/components/wishlist/wishlist-drawer"; import { getCategories, getProducts } from "@/lib/headless/client"; // El Navbar (categorias/colecciones/predictive search) vive en este layout // compartido -- si alguna pagina futura queda estatica, este fetch se // congelaria con datos de build time (mock) igual que le paso al home // (ver app/page.tsx). Forzarlo aca protege el nav en cualquier ruta, no // solo en las que hoy ya son dinamicas por otro motivo (searchParams, etc.). export const dynamic = "force-dynamic"; export const metadata: Metadata = { metadataBase: new URL(process.env.NEXT_PUBLIC_SITE_URL ?? "https://shop.cruzcloud.net"), title: { default: "ARI Shopping | Juguetes, regalos y variedades", template: "%s | ARI Shopping" }, description: "Tienda online de juguetes, personajes, mochilas y regalos con atención personalizada.", openGraph: { title: "ARI Shopping", description: "Tesoros para cada aventura.", type: "website", locale: "es_CO" }, }; export const viewport: Viewport = { width: "device-width", initialScale: 1, themeColor: "#122844" }; // ADR 0008 ("Navy & Coral"): Poppins peso 700 para los "momentos de marca" // (wordmark, h1/h2, precio, CTA) + Inter para body/UI -- solo se carga el // peso 700, es el unico que usa --font-display. const inter = Inter({ subsets: ["latin"], variable: "--font-inter", display: "swap" }); const poppins = Poppins({ subsets: ["latin"], weight: ["700"], variable: "--font-poppins", display: "swap" }); export default async function RootLayout({ children }: Readonly<{ children: React.ReactNode }>) { const [products, categories] = await Promise.all([getProducts(), getCategories()]); return
{children}