// app.jsx, TEE explainer page v2
// new visual lang (light cool grey + navy + orange) + ELI5/Technical detail toggle
const { useState, useEffect, useMemo } = React;
const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
"lang": "de",
"level": "eli5",
"deepOpen": false
}/*EDITMODE-END*/;
const L_LABEL = {
en: { eli5: "ELI5", tech: "Technical" },
de: { eli5: "Einfach", tech: "Technisch" },
};
// ── Title with orange accent for emphasis. parts: ["plain", "accent", "plain", …]
function Title({ parts, className = "h1" }) {
return (
{parts.map((p, i) => (
i % 2 === 1
? {p}
: {p}
))}
);
}
// ── Merge ELI5 overrides into a section base
function leveled(base, eli5Block, level) {
if (level === "eli5" && eli5Block && eli5Block.eli5) {
return { ...base, ...eli5Block.eli5 };
}
return base;
}
// ── Stack two contents: one visible, one hidden but kept for height.
// Use inline style for opacity so the visible/hidden state stays consistent
// across re-renders even if a host environment style override interferes.
function LvlStack({ active, children }) {
const tech = children.tech;
const eli5 = children.eli5;
const techShown = active === "tech";
const eli5Shown = active === "eli5";
const cell = (shown) => ({
gridArea: "1 / 1",
opacity: shown ? 1 : 0,
visibility: shown ? "visible" : "hidden",
pointerEvents: shown ? "auto" : "none",
transition: "opacity 0.22s ease",
});
return (
);
}
// ── Level toggle (segmented control)
function LevelToggle({ value, onChange, lang, size = "sm" }) {
const lbl = L_LABEL[lang];
const eli5Ico = (
);
const techIco = (
);
return (
onChange("eli5")} className={value === "eli5" ? "active" : ""} role="tab" aria-selected={value === "eli5"}>
{eli5Ico}{lbl.eli5}
onChange("tech")} className={value === "tech" ? "active" : ""} role="tab" aria-selected={value === "tech"}>
{techIco}{lbl.tech}
);
}
function LangToggle({ lang, setLang }) {
return (
setLang("de")} className={`lang-btn${lang === "de" ? " lang-btn--active" : ""}`}>DE
{" · "}
setLang("en")} className={`lang-btn${lang === "en" ? " lang-btn--active" : ""}`}>EN
);
}
function TopBar({ lang, setLang, level, setLevel, t }) {
return (
);
}
function Hero({ t, L, level, setLevel, lang }) {
return (
{t.hero.meta1}
{t.hero.meta2}
{t.hero.meta3}
{t.hero.title[0]}
{t.hero.title[1]}{t.hero.title[2]} {t.hero.title[3]}
{t.hero.lede}
{t.hero.bottomLeft}
{t.hero.bottomRight}
{{
tech: ,
eli5: ,
}}
{lang === "de" ? "Wähle deine Tiefe" : "Choose your depth"}
);
}
function PromiseSection({ t, level }) {
const sec = leveled(t.promise, window.CONTENT_ELI5[t._lang]?.promise, level);
return (
{t.promise.eyebrow}
{{
tech: (
{t.promise.body.slice(0, 2).map((p, i) =>
{p}
)}
{t.promise.body.slice(2).map((p, i) =>
{p}
)}
),
eli5: (
{sec.body && sec.body.slice(0, 2).map((p, i) =>
{p}
)}
{sec.body && sec.body.slice(2).map((p, i) =>
{p}
)}
),
}}
);
}
function WhatSection({ t, L, level }) {
const sec = leveled(t.what, window.CONTENT_ELI5[t._lang]?.what, level);
const renderBody = (lede, lede2, bullets, fontBigger) => (
{lede}
{lede2 &&
{lede2}
}
{bullets.map((b, i) => (
◆
))}
);
return (
{t.what.eyebrow}
{{
tech: renderBody(t.what.lede, t.what.lede2, t.what.bullets, false),
eli5: renderBody(sec.lede, sec.lede2, sec.bullets, true),
}}
FIG. 02, {level === "eli5" ? sec.figLabel : t.what.figLabel}
{t.what.figCipher}
{t.what.figPlain}
{{
tech: ,
eli5: ,
}}
);
}
function CompareSection({ t, L, level }) {
const sec = leveled(t.compare, window.CONTENT_ELI5[t._lang]?.compare, level);
const modeKey = ["onprem", "cloud", "tee"];
const renderTable = (modes, stateLabels) => (
{modes.map((m, i) => (
{m.label}
{m.name}
{m.tag}
{m.foot}
))}
);
return (
{t.compare.eyebrow}
{level === "eli5" ? sec.lede : t.compare.lede}
{/* animated 3-panel diagram */}
{(level === "eli5" ? sec.modes : t.compare.modes).map((m, i) => (
{{
tech: ,
eli5: ,
}}
))}
{{
tech: renderTable(t.compare.modes, t.compare.stateLabels),
eli5: sec.modes ? renderTable(sec.modes, sec.stateLabels) : null,
}}
{level === "eli5" ? sec.footnote : t.compare.footnote}
);
}
function AttestSection({ t, L, level }) {
const sec = leveled(t.attest, window.CONTENT_ELI5[t._lang]?.attest, level);
const renderSteps = (steps) => (
{steps.map((s, i) => (
{s.n}
{s.k}
{s.v}
))}
);
return (
{t.attest.eyebrow}
{level === "eli5" ? sec.lede : t.attest.lede}
{{
tech: ,
eli5: ,
}}
{{
tech: renderSteps(t.attest.steps),
eli5: renderSteps(sec.steps),
}}
);
}
function TechSection({ t, level }) {
const sec = leveled(t.tech, window.CONTENT_ELI5[t._lang]?.tech, level);
return (
{t.tech.eyebrow}
{level === "eli5" ? sec.lede : t.tech.lede}
{t.tech.cards.map((c, i) => (
{c.logo}
{c.tags.map((tag, j) => {tag} )}
{c.title}
{c.desc}
))}
);
}
function ChallengesSection({ t, level }) {
const sec = leveled(t.challenges, window.CONTENT_ELI5[t._lang]?.challenges, level);
const renderItems = (items) => (
{items.map((c, i) => (
))}
);
return (
{t.challenges.eyebrow}
{level === "eli5" ? sec.lede : t.challenges.lede}
{{
tech: renderItems(t.challenges.items),
eli5: renderItems(sec.items),
}}
);
}
function DeepSection({ t, open, setOpen, level, lang }) {
// In ELI5, this section reduces to a small teaser of similar height.
return (
{t.deep.eyebrow}
{level === "eli5"
? (lang === "de"
? "Diese Sektion ist nur im Technisch‑Modus sichtbar. Wechseln Sie oben rechts, wenn Sie Register, Quotes und Schlüssel‑Freigabe sehen möchten."
: "This section is only shown in Technical mode. Flip the switch at the top to see registers, quotes, and key‑release patterns.")
: t.deep.lede}
{level === "tech" ? (
setOpen(!open)}>
{open ? t.deep.toggleClose : t.deep.toggleOpen}
+
{open && (
{t.deep.sections.map((s, i) => (
))}
)}
) : (
{lang === "de" ? "Im Einfach‑Modus ausgeblendet" : "Hidden in ELI5 mode"}
+
)}
);
}
function FutureSection({ t, level }) {
const sec = leveled(t.future, window.CONTENT_ELI5[t._lang]?.future, level);
return (
{t.future.eyebrow}
{{
tech: (
{t.future.lede}
“{t.future.pull}”
),
eli5: (
),
}}
FIG. 04, TEE TODAY · FHE TOMORROW
);
}
function FHEDiagram() {
return (
A · TEE: DECRYPTED INSIDE SILICON
B · FHE: NEVER DECRYPTED AT ALL
CLIENT
prompt
CIPHERTEXT
◆ TEE
plaintext + compute
decrypt → infer → re‑encrypt
CIPHERTEXT
↳ trusts the silicon
CLIENT
prompt
CIPHERTEXT
FHE
ciphertext × ciphertext
never sees a single token
CIPHERTEXT
↳ trusts only math
);
}
function Footer({ t }) {
return (
);
}
function App() {
const [tw, setTweak] = useTweaks(TWEAK_DEFAULTS);
const lang = tw.lang;
const level = tw.level || "eli5";
const setLang = (v) => setTweak("lang", v);
const setLevel = (v) => setTweak("level", v);
const [deepOpen, setDeepOpen] = useState(tw.deepOpen);
useEffect(() => { document.documentElement.lang = lang; }, [lang]);
useEffect(() => { setDeepOpen(tw.deepOpen); }, [tw.deepOpen]);
// Attach _lang so child components can look up overlays
const t = useMemo(() => {
const base = window.CONTENT[lang];
return { ...base, _lang: lang };
}, [lang]);
const L = t.diagram;
return (
<>
{ setDeepOpen(v); setTweak("deepOpen", v); }} level={level} lang={lang} />
>
);
}
ReactDOM.createRoot(document.getElementById("root")).render( );