/* ============================================================
EDITORIAL INDEX — top sections
============================================================ */
const PORTRAIT = "images/ema-hero.jpg";
const INDEX_ITEMS = {
lt: [
{ n: "01", t: "Apie", href: "#about", m: "Kas aš esu" },
{ n: "02", t: "Mintys", href: "#mintys", m: "Blogas" },
{ n: "03", t: "Kaip dirbu", href: "#how", m: "Procesas" },
{ n: "04", t: "Konsultacija", href: "#services", m: "Paslaugos" },
{ n: "05", t: "Atsiliepimai", href: "#voices", m: "Žmonės" },
{ n: "06", t: "Investicija", href: "#investment", m: "Kainos" },
{ n: "07", t: "Susisiekti", href: "#contact", m: "Pradžia" }
],
en: [
{ n: "01", t: "About", href: "#about", m: "Who I am" },
{ n: "02", t: "Reflections", href: "#mintys", m: "Blog" },
{ n: "03", t: "How I Work", href: "#how", m: "The process" },
{ n: "04", t: "Sessions", href: "#services", m: "Services" },
{ n: "05", t: "Voices", href: "#voices", m: "People" },
{ n: "06", t: "Investment", href: "#investment", m: "Pricing" },
{ n: "07", t: "Get in touch", href: "#contact", m: "Begin" }
]
};
function RunningHead({ lang, setLang, onOpenIndex }) {
const scrolled = useScrolled();
return (
ema.v2x.lt
Vilnius · Zoom
Nº 01 — 2026
/
);
}
function IndexOverlay({ lang, open, onClose }) {
const items = INDEX_ITEMS[lang];
useEffect(() => {
const onKey = (e) => { if (e.key === "Escape") onClose(); };
document.addEventListener("keydown", onKey);
return () => document.removeEventListener("keydown", onKey);
}, [onClose]);
return (
{lang === "lt" ? "Turinys — ema.v2x.lt" : "Index — ema.v2x.lt"}
{lang === "lt" ? "Archetipai · Sąmoningumas · Savęs pažinimas" : "Archetypes · Consciousness · Self-knowledge"}
Est. 10+ {lang === "lt" ? "metų" : "yrs"}
);
}
function Cover({ c, lang, variant }) {
const h = c.hero;
const mh = Ema.live
;
const statement = (
{h.h1a} {h.h1aItalic}
{h.h1b} {h.h1bRegular}
);
const actionsLight = (
);
const actionsDark = (
);
const lines = INDEX_ITEMS[lang].slice(1, 5);
/* ---- FULL-BLEED COVER (Vogue) ---- */
if (variant === "fullbleed") {
return (
Nº 01 — 2026 · Vilnius / Zoom
{h.label}
{lines.map((l) => (
{l.n}{l.t}
))}
{mh}
{statement}
{actionsLight}
);
}
/* ---- SPREAD (editorial split) ---- */
if (variant === "spread") {
return (
Ema — Fig. 01
Nº 01 — 2026
{h.label}
Ema.live
{statement}
{h.sub.split("\n\n")[0]}
{actionsDark}
{c.about.credentials.map((cr, i) => {cr})}
);
}
/* ---- MASTHEAD (logotype lockup) ---- */
return (
{h.label.replace(/ · /g, " · ")}
{lang === "lt" ? "Individualios konsultacijos" : "Individual practice"}
{lang === "lt" ? "Jungo analitinė perspektyva" : "Jungian perspective"}
Ema.live
{statement}
{h.sub.split("\n\n")[0]}
{actionsDark}
{h.micro}
{lang === "lt" ? "Slink žemyn — 01" : "Scroll — 01"}
);
}
function CredentialMarquee({ c }) {
return ;
}
function About({ c, lang }) {
const a = c.about;
return (
Nº 01
{a.label}
{a.h2a} {a.h2bItalic}
Ema
Fig. 02
{a.story.map((b, i) => {
if (b.t === "lead") return {b.x}
;
if (b.t === "ask") return {b.x}
;
if (b.t === "emph") return {b.x}
;
if (b.t === "leadin") return {b.x}
;
if (b.t === "bigq") return {b.x}
;
return {b.x}
;
})}
{a.credentials.map((cr, i) => {cr})}
);
}
function PullQuote({ c, lang }) {
const a = c.about;
const parts = a.quote.split(/(?<=\.)\s+/);
return (
“
{parts.map((p, i) => i === parts.length - 1
? {p}
: {p} )}
{lang === "lt" ? "Mano požiūris" : "My approach"}
Ema · ema.v2x.lt
);
}
Object.assign(window, { RunningHead, IndexOverlay, Cover, CredentialMarquee, About, PullQuote });