/* EnableUnion — page components */
/* ─────────── Hero section ─────────── */
function HeroSection({ t }) {
const h = t.home;
return (
{h.eyebrow}
{h.title_a}
{h.title_b}
{h.lede}
{h.meta.founded_val} · {h.meta.founded}
{h.meta.siege_val} · {h.meta.siege}
{h.meta.portfolio_val} · {h.meta.portfolio}
);
}
/* ─────────── About / mission section ─────────── */
function AboutSection({ t, num }) {
const a = t.about;
return (
{a.eyebrow}
{num || "Chapter I"}
{a.title_a} {a.title_b}
{a.lede_intro}
“{a.lede}”
{a.body.map((p, i) =>
{p}
)}
{a.pillars.map((p, i) => (
— {p.num} —
{p.title}
{p.body}
))}
);
}
/* ─────────── Products section ─────────── */
function ProductCard({ p }) {
return (
{p.meta_left}
{p.meta_right}
{p.image &&

}
{p.name}
{p.tagline}
{p.desc}
{p.features.map((f, i) => - {f}
)}
→ {p.cta}
);
}
function ProductsSection({ t, num, alt }) {
const p = t.products;
return (
{p.eyebrow}
{num || "Chapter II"}
{p.title_a} {p.title_b}
{p.lede}
);
}
/* ─────────── Contact section ─────────── */
function ContactSection({ t, num }) {
const c = t.contact;
return (
{c.eyebrow}
{num || "Chapter III"}
{c.title_a}
{c.title_b}
{c.lede}
{c.rows.map((r, i) => (
))}
);
}
/* ─────────── Pages: home, about, products, contact ─────────── */
function HomePage({ t }) {
return (
);
}
function PageHeader({ eyebrow, title_a, title_b, sub, updated }) {
return (
{eyebrow}
{title_a} {title_b}
{sub &&
{sub}
}
{updated &&
{updated}
}
);
}
function AboutPage({ t }) {
return (
);
}
function ProductsPage({ t }) {
return (
);
}
function ContactPage({ t }) {
return (
);
}
/* ─────────── Legal article shell ─────────── */
function slugify(s, i) {
const base = (s || "").toString()
.toLowerCase()
.normalize("NFD")
.replace(/[\u0300-\u036f]/g, "")
.replace(/[^a-z0-9]+/g, "-")
.replace(/^-|-$/g, "");
return (base || "section") + "-" + i;
}
function LegalArticle({ data }) {
return (
{data.sections.map((s, i) => {
const id = slugify(data.toc[i] || s.title, i);
return (
{s.num}
{s.title}
{(s.body || []).map((p, j) =>
{p}
)}
{s.list && (
{s.list.map((li, j) => - {li}
)}
)}
{s.dl && (
{s.dl.map(([k, v], j) => (
- {k}
- {v}
))}
)}
{(s.after || []).map((p, j) =>
{p}
)}
);
})}
);
}
function LegalPage({ t, kind }) {
const data = t[kind];
return (
);
}
/* expose */
Object.assign(window, {
HomePage, AboutPage, ProductsPage, ContactPage, LegalPage,
});