// Resources.jsx — Verigo Global: Articles, Free Downloads // Article pages; gated PDF downloads const { V: RV, MAXW: RMW, FONT: RFT } = window; const ARTICLES = [ { id: 'a1', cat: 'Strategy', title: 'SOC 2 vs ISO 27001: Which Certification Should You Pursue First?', excerpt: 'Both are widely recognized, but they answer different questions for different buyers. Here is how to read the signals in your contracts and prospect list to pick the right starting point.', read: '8 min', standard: 'soc2', date: 'June 12, 2026' }, { id: 'a2', cat: 'CMMC 2.0', title: 'How to Scope a CUI Enclave — and Why It Changes Your Level 2 Cost', excerpt: 'The single highest-leverage decision in a CMMC 2.0 program is defining your CUI enclave. A well-scoped enclave can reduce the number of in-scope systems by 60–80%.', read: '6 min', standard: 'cmmc', date: 'June 3, 2026' }, { id: 'a3', cat: 'SOC 2', title: 'The Evidence Engine: How to Make Your Type II Observation Window Routine', excerpt: 'The observation window is not the problem. The scramble before it is. Embed evidence-producing controls into daily workflows so evidence exists continuously.', read: '7 min', standard: 'soc2', date: 'May 22, 2026' }, { id: 'a4', cat: 'HITRUST', title: 'HITRUST Made Legible: Understanding e1, i1, and r2 Without the Jargon', excerpt: 'HITRUST certifications come in three types with very different scope, cost, and assurance levels. This plain-language guide explains what each one tests.', read: '5 min', standard: 'hitrust', date: 'May 8, 2026' }, { id: 'a5', cat: 'ISO 27001', title: "Why ISO 27001:2022's Four-Theme Annex A Changes Your Implementation Approach", excerpt: 'Moving from 114 controls across 14 domains to 93 controls across four themes changes more than the numbering — 11 new controls were added and several key expectations expanded.', read: '6 min', standard: 'iso27001', date: 'April 17, 2026' }, { id: 'a6', cat: 'Risk Management', title: 'Risk Treatment in Practice: Accept, Mitigate, Transfer, or Avoid', excerpt: 'Every framework requires a risk treatment decision, but most documentation is vague. Learn how to make each option defensible under audit with worked examples.', read: '5 min', standard: null, date: 'April 2, 2026' }, { id: 'a7', cat: 'NIST CSF', title: 'NIST CSF Tiers vs Profiles: A Practical Guide to Using Both', excerpt: 'Tiers describe how you manage cybersecurity. Profiles describe what you do. Used together, they create a gap roadmap and a measurable implementation path.', read: '7 min', standard: 'nist', date: 'March 19, 2026' }, { id: 'a8', cat: 'Cross-framework', title: 'Certify Once, Reuse Everywhere: Multi-Framework Compliance Programs', excerpt: 'ISO 27001, SOC 2, CMMC 2.0, and NIST 800-171 share significant underlying controls. Learn how to sequence certifications for maximum evidence reuse.', read: '8 min', standard: null, date: 'March 5, 2026' }, ]; const DOWNLOADS = [ { id: 'd1', title: 'SOC 2 Readiness Checklist', format: 'PDF', desc: 'A structured pre-assessment checklist across all five Trust Services categories. Identify gaps before the observation window opens.', icon: 'clipboard', toolkit: 'soc2', tkLabel: 'SOC 2 Toolkit', tags: ['SOC 2', 'Type I & II'] }, { id: 'd2', title: 'CMMC 2.0 Level 2 Self-Assessment Scorecard', format: 'PDF', desc: 'A domain-by-domain scorecard across all 110 NIST SP 800-171 practices with a gap summary that feeds directly into your POA&M.', icon: 'layers', toolkit: 'cmmc', tkLabel: 'CMMC 2.0 Toolkit', tags: ['CMMC', 'Level 2', '800-171'] }, { id: 'd3', title: 'ISO 27001:2022 Gap Analysis Template', format: 'PDF', desc: 'Map your current state against all 93 Annex A:2022 controls across four themes. Includes applicability, implementation status, and evidence fields.', icon: 'doc', toolkit: 'iso27001', tkLabel: 'ISO 27001 Toolkit', tags: ['ISO 27001', '2022', 'Annex A'] }, { id: 'd4', title: 'Cross-Framework Control Mapping Guide', format: 'PDF', desc: 'A master cross-reference mapping ISO 27001 Annex A, the SOC 2 Common Criteria, NIST SP 800-171, and the NIST CSF functions.', icon: 'network', toolkit: null, tkLabel: null, tags: ['ISO 27001', 'SOC 2', 'CMMC', 'NIST'] }, { id: 'd5', title: 'NIST CSF v2.0 Profile Template', format: 'PDF', desc: 'Build your Current Profile and Target Profile across all six CSF v2.0 functions with a gap summary and prioritization column.', icon: 'target', toolkit: 'nist', tkLabel: 'NIST CSF Toolkit', tags: ['NIST CSF', 'v2.0', 'Profile'] }, { id: 'd6', title: 'HITRUST CSF Quick-Start Guide', format: 'PDF', desc: 'Plain-language guide to the HITRUST assessment process — selecting your type (e1/i1/r2), setting factors, and working with an External Assessor.', icon: 'heart', toolkit: 'hitrust', tkLabel: 'HITRUST Toolkit', tags: ['HITRUST', 'e1', 'i1', 'r2'] }, ]; const STD_MAP = { iso27001: '#4B4FD9', soc2: '#4B4FD9', cmmc: '#E8622A', hitrust: '#E8622A', nist: '#6B7280' }; /* ── LEAD CAPTURE ─────────────────────────────────────────── */ const RC_LEAD_KEY = 'verigo_toolkit_leads'; const RC_USER_KEY = 'verigo_toolkit_user'; function rcGetUser() { try { return JSON.parse(localStorage.getItem(RC_USER_KEY) || 'null'); } catch (e) { return null; } } function rcStoreLead(lead) { try { const rec = { ...lead, ts: new Date().toISOString() }; const all = JSON.parse(localStorage.getItem(RC_LEAD_KEY) || '[]'); all.push(rec); localStorage.setItem(RC_LEAD_KEY, JSON.stringify(all)); const prev = rcGetUser() || {}; const merged = { ...prev }; Object.keys(lead).forEach((k) => { if (k !== 'source' && lead[k]) merged[k] = lead[k]; }); localStorage.setItem(RC_USER_KEY, JSON.stringify(merged)); } catch (e) {} window.submitInquiry && window.submitInquiry({ form_type: lead.source || 'resources', name: lead.name, email: lead.email, company: lead.company, phone: lead.phone, metadata: lead, }); } /* ── HERO ─────────────────────────────────────────────────── */ const RcHero = () => (
Resources

Knowledge that accelerates compliance.

Practical guides and free tools — built by the practitioners who run compliance programs every day.

{[['Articles','#articles','file'],['Free Downloads','#downloads','arrow']].map(([label,href,icon],i)=>( e.currentTarget.style.opacity='0.85'} onMouseLeave={e=>e.currentTarget.style.opacity='1'}> {label} ))}
); /* ── ARTICLES ─────────────────────────────────────────────── */ const RcArticles = ({ onNav }) => (
{ARTICLES.map((a) => (
{ e.currentTarget.style.borderColor=RV.purple; e.currentTarget.style.transform='translateY(-2px)'; e.currentTarget.style.boxShadow='0 8px 24px rgba(0,0,0,0.07)'; }} onMouseLeave={e=>{ e.currentTarget.style.borderColor=RV.g200; e.currentTarget.style.transform='none'; e.currentTarget.style.boxShadow='none'; }} onClick={()=>{ window.location.href='Article.html?id='+a.id; }}>
{a.cat} {a.read}

{a.title}

{a.excerpt.slice(0,100)}…

{a.date} Read
))}
); /* ── FREE DOWNLOADS ───────────────────────────────────────── */ const RcDownloads = ({ onNav, onDownload }) => (
{DOWNLOADS.map((d) => (
{d.format}

{d.title}

{d.desc}

{d.tags.map((t,i)=>{t})}
onDownload(d)} style={{ flex:1, justifyContent:'center', fontSize:13.5, padding:'10px 16px' }}> Download free PDF {d.toolkit && onNav('toolkit:'+d.toolkit)} style={{ fontSize:13, padding:'10px 13px' }}>Full toolkit }
))}
); /* ── NEWSLETTER ───────────────────────────────────────────── */ const RcNewsletter = ({ onNav }) => (
Stay current

Compliance intelligence, delivered monthly.

Regulatory updates and practitioner notes — no marketing noise.

onNav('contact')}>Subscribe to the newsletter
); /* ── PAGE ─────────────────────────────────────────────────── */ const ResourcesPage = ({ onNav }) => { const [downloadModal, setDownloadModal] = React.useState(null); const contactOk = () => { try { return !!sessionStorage.getItem('verigo_contact_ok'); } catch (e) { return false; } }; const onDownload = (item) => { if (contactOk()) { window.RC_PDF.generate(item); } else { setDownloadModal(item); } }; const onDownloadModalSubmit = (form) => { rcStoreLead({ ...form, source: 'resource-download', resource: downloadModal.title }); try { sessionStorage.setItem('verigo_contact_ok', '1'); } catch (e) {} const item = downloadModal; setDownloadModal(null); setTimeout(() => window.RC_PDF.generate(item), 60); }; return (
{/* Download gate modal */} {downloadModal && ( setDownloadModal(null)} onSubmit={onDownloadModalSubmit} /> )}
); }; Object.assign(window, { ResourcesPage });