/* global React, CATALOGO, CAT_LABELS, detectarPatron, Placeholder, Eyebrow, Arr, HeartIcon, Reveal, useWishlist, useUI, waLink, CatProd */ const { useState, useMemo, useEffect } = React; function Ficha({ productId, setPage, openFicha, openModelo, goCatalog }) { const wl = useWishlist(); const pid = (productId || "").toString().toUpperCase(); const p = CATALOGO.find((x) => (x.id || "").toUpperCase() === pid); const [img, setImg] = useState(0); const tones = ["bone", "dark", "verde", "terra"]; useEffect(() => { window.scrollTo({ top: 0, behavior: "instant" }); setImg(0); }, [productId]); if (!p) { return (
Producto no encontrado

); } const patron = detectarPatron(p.variante); const isOn = wl.has(p.id); const others = CATALOGO.filter((x) => x.nombre === p.nombre && x.id !== p.id).slice(0, 4); const sameFamily = CATALOGO.filter((x) => x.categoria === p.categoria && x.id !== p.id).slice(0, 4); const msg = `Hola DAVA'S, me interesa "${p.nombre}${p.variante ? " — " + p.variante : ""}" (${p.id}) por $${p.precio.toLocaleString("es-CO")}. ¿Confirman disponibilidad?`; const shareUrl = `artedavas.com/producto/${p.id.toLowerCase()}`; return ( <>
Catálogo {" · "} {CAT_LABELS[p.categoria]} {" · "} {others.length ? openModelo(p.nombre)} style={{ cursor: "pointer", textDecoration: "underline" }}>{p.nombre} : {p.nombre}}
{tones.map((t, i) => ( ))}
{p.id} · {CAT_LABELS[p.categoria]} {patron ? · {patron} : null}

{p.nombre}

{p.variante ?
{p.variante}
: null}
$ {p.precio.toLocaleString("es-CO")}
Producción a pedido · ~15 días
Material tejido
{p.material || "—"}
Patrón
{patron || "—"}
Familia
{CAT_LABELS[p.categoria]}
Código
{p.id}

Tu pieza se empieza a tejer cuando tú la pides. Pieza tejida a mano sobre estructura de madera curada — cada combinación de modelo y patrón es un SKU único, no se configura en la web: se elige y se confirma por WhatsApp.

Pedir por WhatsApp
URL compartible: {shareUrl}
{others.length > 0 ? (
Otras versiones del modelo

Más {p.nombre}.

Mismo nombre, distinto dibujo. Toca cualquiera para ver su ficha, o entra al modelo completo.

{others.map((o) => ( ))}
) : (
También en {CAT_LABELS[p.categoria]}

Otras piezas de la familia.

Piezas distintas dentro de la misma categoría.

{sameFamily.map((o) => ( ))}
)} ); } window.Ficha = Ficha;