/* Ficha de libro: layout 2 columnas, datos técnicos, CTA Amazon, relacionados. */ (function () { const { useEffect } = React; function trackAmazon(book) { try { if (window.gtag) window.gtag("event", "amazon_click", { book_asin: book.asin, book_title: book.title }); } catch (e) {} } function fmtDate(iso) { try { return new Date(iso).toLocaleDateString("es-ES", { year: "numeric", month: "long" }); } catch (e) { return iso; } } function Detail({ slug, navigate }) { const book = window.FUN_BOOKS.find(b => b.slug === slug); useEffect(() => { window.scrollTo(0, 0); }, [slug]); if (!book) { return ( No encontramos ese libro navigate("libros")}>Volver al catálogo ); } const related = window.FUN_BOOKS .filter(b => b.asin !== book.asin && (b.category === book.category || b.bands.some(x => book.bands.includes(x)))) .sort((a, b) => (b.category === book.category) - (a.category === book.category)) .slice(0, 3); const specs = [ ["Páginas", book.pages ? `${book.pages}` : "—"], ["Formato", book.format], ["Dimensiones", book.dimensions], ["Publicado", fmtDate(book.publication_date)], ]; return ( {/* Breadcrumb */} { e.preventDefault(); navigate("home"); }}>Inicio { e.preventDefault(); navigate("libros"); }}>Libros {book.title} {/* Izquierda: portada */} {/* Derecha: información */} {book.age_range} años {book.category} {book.title} {book.rating_value.toFixed(1).replace(".", ",")} · {book.rating_count} reseñas en Amazon {book.description_short} {book.description_long} Qué encontrarás dentro {book.features.map((f, i) => ( {f} ))} {specs.map(([k, v]) => ( {k} {v} ))} trackAmazon(book)}> Comprar en Amazon Te llevamos a Amazon. Como Asociados, podemos recibir una pequeña comisión sin coste extra para ti. {/* Relacionados */} {related.length > 0 && ( También te puede gustar {related.map(b => navigate("libro/" + b.slug)} />)} )} ); } window.Detail = Detail; })();
{book.description_short}
{book.description_long}
Te llevamos a Amazon. Como Asociados, podemos recibir una pequeña comisión sin coste extra para ti.