Sub-fase 2 de Etapa 2 (ADR 0005 seccion 6). Navbar y CategoryTiles usaban arrays hardcodeados (Figuras/Peluches/Mochilas/Marvel) que ya no coinciden con los nombres reales de categoria en Medusa desde que se elimino legacyProductMeta (PR #29) -- todos esos links de navegacion quedaron rotos silenciosamente (0 productos al filtrar). - lib/headless: nuevo tipo Category + metodo getCategories() en CatalogProvider (medusa via /store/product-categories, mock deriva de su catalogo plano, shopify sin implementar como el resto de sus metodos). - Navbar: arbol real de categorias (6 raices/21 nodos), dropdown de hijos por raiz en desktop, lista anidada en el sheet movil. Colecciones del sheet ahora se derivan de los productos reales en vez de un array hardcodeado con 2 nombres obsoletos (Marvel/Frozen vs. los reales Universo Marvel/Reino de Frozen). - CategoryTiles: tiles de home por categoria raiz real; imagen solo donde ya existe asset, gradiente honesto donde no (no hay fotografia para las 6 raices todavia, deuda explicita del ADR). - catalog-client/catalog page: cuando el query param `category` es una raiz con hijos, se expande a los nombres reales de sus hijos para que el filtro (igualdad exacta de producto.category) siga funcionando -- sin esto, tiles/nav apuntando a una raiz mostrarian 0 productos porque ningun producto tiene la raiz asignada directamente. Co-Authored-By: Claude Sonnet 5 <[email protected]> Claude-Session: https://claude.ai/code/session_013dunTcReWMKhWgCPkvAVHD
29 lines
936 B
TypeScript
29 lines
936 B
TypeScript
import type { CatalogProvider, ProductFilters } from "@/lib/headless/types";
|
|
import { medusaCatalogProvider } from "@/lib/headless/providers/medusa";
|
|
import { mockCatalogProvider } from "@/lib/headless/providers/mock";
|
|
import { shopifyCatalogProvider } from "@/lib/headless/providers/shopify";
|
|
|
|
function provider(): CatalogProvider {
|
|
switch (process.env.HEADLESS_PROVIDER) {
|
|
case "shopify": return shopifyCatalogProvider;
|
|
case "medusa": return medusaCatalogProvider;
|
|
default: return mockCatalogProvider;
|
|
}
|
|
}
|
|
|
|
export async function getProducts(filters?: ProductFilters) {
|
|
return provider().getProducts(filters);
|
|
}
|
|
|
|
export async function getProductBySlug(slug: string) {
|
|
return provider().getProductBySlug(slug);
|
|
}
|
|
|
|
export async function searchProducts(query: string, limit?: number) {
|
|
return provider().searchProducts(query, limit);
|
|
}
|
|
|
|
export async function getCategories() {
|
|
return provider().getCategories();
|
|
}
|