// Layout compartilhado das páginas de Segurança & Compliance.
// Cada página define window.LEGAL_PAGE = { slug, title, intro:[..], sections:[{ title, blocks:[..] }], updated }
// Blocos: 'texto' → parágrafo · ['a','b'] → lista · { h: 'Subtítulo' } → subtítulo · { note: 'texto' } → destaque
const LEGAL_PAGES = [
{ slug: 'trust-center', label: 'Trust Center' },
{ slug: 'seguranca-da-informacao', label: 'Segurança da Informação' },
{ slug: 'politica-de-privacidade', label: 'Política de Privacidade' },
{ slug: 'lgpd', label: 'LGPD' },
{ slug: 'compliance-etica', label: 'Compliance & Ética' }
];
function legalSlugify(s) { return s.toLowerCase().normalize('NFD').replace(/[\u0300-\u036f]/g, '').replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, ''); }
function LegalText({ text }) {
const m = text.match(/^([^:]{2,48}):\s(.+)$/);
if (m) return <>{m[1]}: {m[2]}>;
return text;
}
function LegalBlock({ b }) {
if (typeof b === 'string') return
;
if (Array.isArray(b)) return (
);
if (b && b.cards) return ;
if (b && b.link) return {b.link} →
;
if (b && b.pills) return {b.pills.map((p) => {p})}
;
if (b && b.h) return {b.h}
;
if (b && b.note) return
;
return
;
}
function LegalPage() {
const page = window.LEGAL_PAGE;
const sections = page.sections.map((s) => ({ ...s, id: legalSlugify(s.title) }));
const [active, setActive] = React.useState(sections[0] && sections[0].id);
React.useEffect(() => {
const onScroll = () => {
let cur = sections[0] && sections[0].id;
for (const s of sections) { const el = document.getElementById(s.id); if (el && el.getBoundingClientRect().top < 160) cur = s.id; }
setActive(cur);
};
window.addEventListener('scroll', onScroll, { passive: true });
return () => window.removeEventListener('scroll', onScroll);
}, []);
const jump = (e, id) => { e.preventDefault(); const el = document.getElementById(id); if (el) window.scrollTo({ top: el.getBoundingClientRect().top + window.scrollY - 110, behavior: 'smooth' }); };
return (
SEGURANÇA & COMPLIANCE · TS CORP
{page.title}
{(page.intro || []).map((p, i) =>
{p}
)}
{sections.map((s, i) =>
{s.title}
{s.blocks.map((b, j) => )}
)}
{page.updated && {page.updated}
}
);
}
function LegalApp() {
return (<>>);
}
Object.assign(window, { LegalApp, LEGAL_PAGES });