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 (
Ningún equipo coincide con el filtro actual, así que la hoja de comparación está vacía. Quita un filtro o pide el diagnóstico y comparamos con el escenario a la vista.
); } return ( <> {/* ---------- móvil: fichas apiladas, no tabla ---------- */} {/* ---------- md en adelante: la tabla, con scroll propio ---------- */}
{COLUMNAS.map((encabezado) => ( ))} {productos.map((producto) => ( ))}
Comparación de la selección activa por categoría, clases de fuego, capacidad, agente y alcance declarado. Cada fila cierra con el enlace para cotizar ese equipo.
{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
); }