// desidium-model.jsx — full talent profile page, exported to window const { useEffect: useEffectMD } = React; function ModelDetail({ model, lang, motion, onBack, onNav, goContact }) { const m = I18N.model; useEffectMD(() => { window.scrollTo(0, 0); }, [model.id]); const divName = model.div === "twin" ? L(m.twinName, lang) : L(m.soulName, lang); const idx = MODELS.findIndex((x) => x.id === model.id); const next = MODELS[(idx + 1) % MODELS.length]; const ph = (model.photos || []); return (
{/* HERO */}
{divName} · {L(model.cat, lang)}

{model.name}

{L(model.tagline, lang)}

{model.langs.join(" · ")} {L(model.avail, lang)}
{/* ABOUT / DESCRIPTION */}
{L(m.about, lang)}

{L(model.desc, lang)}

{L(m.s_niche, lang)}
{L(model.niche, lang)}
{/* GALLERY */}
{L(m.gallery, lang)}
{ph[0] && } {ph[1] && } {ph[2] && } {ph[3] && }
{/* HISTORY & MOTIVATION */}
{L(m.history, lang)}

{L(model.history, lang)}

{L(m.motivation, lang)}

{L(model.motivation, lang)}

{/* SPECS */}
{L(m.specs, lang)}
{[[m.s_division, divName],[m.s_niche, L(model.niche,lang)],[m.s_langs, model.langs.join(" · ")],[m.s_avail, L(model.avail,lang)]].map(([k,v],i)=>(
{L(k,lang)}
{v}
))}
{/* CTA */}
{L(m.cta_label, lang)}

{L(m.cta_pre, lang)} {model.name}.

{L(m.cta_sub, lang)}

); } Object.assign(window, { ModelDetail });