import Link from "next/link"; import { RielClases } from "@/components/marca/RielClases"; import { CATEGORIAS, type Producto } from "@/data/catalogo"; /** * HOJA DE COMPARACIÓN — recomendación 10.2 de la auditoría de marca. * * Sirve al comprador técnico, que compara antes de pedir precio. Se conserva, * pero con tres correcciones: * * · respeta los filtros activos: recibe la selección ya hecha, no el catálogo * completo; * · cada fila cierra con su propio botón de cotizar, para que comparar y * pedir cotización sean el mismo movimiento; * · en móvil no hay tabla. Una tabla de siete columnas en 320 px no se lee, * así que abajo de `md` se apilan fichas. * * El desplazamiento horizontal vive dentro del contenedor. El cuerpo de la * página nunca se desplaza en horizontal. */ const NOMBRE_CATEGORIA = new Map(CATEGORIAS.map((c) => [c.slug, c.nombre])); const COLUMNAS = [ "Producto", "Categoría", "Clases", "Capacidad", "Agente", "Alcance declarado", "Cotizar", ] as const; type Props = { productos: Producto[]; /** Sobre superficie clara. `true` por omisión: la evidencia va en papel. */ claro?: boolean; }; function SinDato({ texto = "Sin dato en la fuente", claro = true, }: { texto?: string; claro?: boolean; }) { return ( {texto} ); } export function TablaComparativa({ productos, claro = true }: Props) { if (productos.length === 0) { return (
{producto.nombre}
{producto.modelo ? ({producto.modelo}
) : null}| {encabezado} | ))}||||||
|---|---|---|---|---|---|---|
| {producto.nombre} {producto.modelo ? ( {producto.modelo} ) : null} Ficha completa | {NOMBRE_CATEGORIA.get(producto.categoria) ?? producto.categoria} |
{producto.clases.length > 0 ? (
|
{producto.capacidad ?? |
{producto.agente ?? |
{producto.alcance ?? |
Cotizar |