// EvaluationISO42001.jsx — Verigo Global: ISO 42001 online readiness evaluation (live, gated)
const { V: E2V, MAXW: E2MW, FONT: E2FT } = window;
const PREVIEW_THEMES42 = [
['briefcase', 'Policy & Organization', 68],
['target', 'Impact Assessment', 54],
['layers', 'AI System Life Cycle', 61],
['doc', 'Data & Transparency', 47],
];
/* ── PREVIEW DASHBOARD (illustrative, intro only) ────────── */
const ScorePreview42 = () => (
Overall maturity
Developing
16 of 38 controls need work before audit.
{PREVIEW_THEMES42.map(([ic, name, pct], i) => (
))}
);
/* ── INTRO STAGE ─────────────────────────────────────────── */
const EvalIntro42 = ({ onStart, onNav }) => {
const steps = [
['clipboard', 'Self-assessment', 'Answer 13 scoped statements across the ISO 42001 clauses and all five Annex A themes — about 10 minutes, no prep needed.'],
['gauge', 'Instant scoring', 'Get a weighted maturity score with a theme-by-theme breakdown showing exactly where you stand against the standard.'],
['flag', 'Mapped action plan', 'Every gap links straight to the toolkit document, policy, or procedure that closes it — so you know the next move.'],
];
return (
onNav('toolkit:iso42001')} style={{ background: 'none', border: 'none', cursor: 'pointer', color: '#7A7A8A', fontSize: 13, fontWeight: 600, padding: 0, fontFamily: E2FT }}>ISO 42001 Toolkit
/
Online Evaluation
13 questions · ~10 minutes · free
Know where you stand on ISO 42001.
Measure your current state against ISO/IEC 42001:2023 in about ten minutes. Get an instant maturity score and a prioritized action plan mapped straight to the toolkit documents that close each gap.
Start the evaluation
onNav('contact')}>Talk to a practitioner
Free and confidential. We'll ask for a few details so we can send your results.
{steps.map(([ic, t, d], i) => (
{String(i + 1).padStart(2, '0')}
{t}
{d}
))}
Start the evaluation
);
};
/* ── SCOPE FORM (company details + scope, before the quiz) ─ */
const SCOPE_FIELDS42 = {
industry: ['Software / SaaS', 'Financial services', 'Healthcare', 'Manufacturing', 'Professional services', 'Government / public sector', 'Retail / e-commerce', 'Other'],
employees: ['1–50', '51–200', '201–1,000', '1,000+'],
region: ['United States', 'United Kingdom', 'European Union', 'India', 'Singapore', 'Other'],
locations: ['1 site', '2–5 sites', '6–20 sites', '20+ sites'],
target: ['Within 3 months', 'Within 6 months', '6–12 months', '12+ months', 'Just exploring'],
};
const e2Input = { fontFamily: E2FT, fontSize: 14, color: E2V.black, background: '#fff', border: `1.5px solid ${E2V.g200}`, borderRadius: 8, padding: '11px 14px', outline: 'none', width: '100%' };
const e2Label = { fontSize: 12.5, fontWeight: 600, color: E2V.black, display: 'block', marginBottom: 7 };
const e2Select = { ...e2Input, appearance: 'none', backgroundImage: "url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%239A9AAA' stroke-width='2.5'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E\")", backgroundRepeat: 'no-repeat', backgroundPosition: 'right 12px center', paddingRight: 32, cursor: 'pointer' };
const ScopeForm42 = ({ onSubmit, onBack }) => {
const u = (() => { try { return window.TK_ISO42001.getUser() || {}; } catch (e) { return {}; } })();
const [f, setF] = React.useState({
company: u.company || '', name: u.name || '', email: u.email || '', phone: u.phone || '', role: u.role || '',
industry: u.industry || SCOPE_FIELDS42.industry[0], employees: u.employees || SCOPE_FIELDS42.employees[0],
region: u.region || SCOPE_FIELDS42.region[0], locations: u.locations || SCOPE_FIELDS42.locations[0],
systems: u.systems || '', certs: u.certs || '', target: u.target || SCOPE_FIELDS42.target[1],
});
const set = (k, v) => setF((p) => ({ ...p, [k]: v }));
const text = (k, lbl, props = {}) => {lbl} set(k, e.target.value)} {...props} />
;
const sel = (k, lbl) => {lbl} set(k, e.target.value)}>{SCOPE_FIELDS42[k].map((o) => {o} )}
;
return (
Step 1 of 2 · Scope your assessment
Tell us about your organization
A few details set the scope and let us tailor your results and quote. Then you’ll move on to the technical evaluation.
);
};
/* ── PAGE ────────────────────────────────────────────────── */
const EvaluationISO42001Page = ({ onNav }) => {
const [stage, setStage] = React.useState('intro'); // intro | scope | quiz | results
const [gate, setGate] = React.useState(false);
const [results, setResults] = React.useState(null);
const [user, setUser] = React.useState(null);
React.useEffect(() => { try { setUser(window.TK_ISO42001.getUser()); } catch (e) {} }, []);
const contactOk = () => { try { return !!sessionStorage.getItem('verigo_contact_ok_iso42001'); } catch (e) { return false; } };
const requestStart = () => {
if (contactOk()) { setUser(window.TK_ISO42001.getUser()); setStage('scope'); window.scrollTo({ top: 0 }); }
else { setGate(true); }
};
const onGateSubmit = (form) => {
window.TK_ISO42001.storeLead({ ...form, source: 'evaluation' });
try { sessionStorage.setItem('verigo_contact_ok_iso42001', '1'); } catch (e) {}
setUser(window.TK_ISO42001.getUser());
setGate(false);
setStage('scope');
window.scrollTo({ top: 0 });
};
const onScopeSubmit = (form) => {
window.TK_ISO42001.storeLead({ ...form, source: 'evaluation-scope' });
setUser(window.TK_ISO42001.getUser());
setStage('quiz');
window.scrollTo({ top: 0 });
};
const onComplete = (res) => { setResults(res); setStage('results'); window.scrollTo({ top: 0 }); };
const retake = () => { setResults(null); setStage('quiz'); window.scrollTo({ top: 0 }); };
return (
{stage === 'intro' && }
{stage === 'scope' && { setStage('intro'); window.scrollTo({ top: 0 }); }} />}
{stage === 'quiz' && { setStage('intro'); window.scrollTo({ top: 0 }); }} />}
{stage === 'results' && results && }
{gate && (
setGate(false)}
onSubmit={onGateSubmit} />
)}
);
};
Object.assign(window, { EvaluationISO42001Page });