// ToolkitNIST.jsx — Verigo Global: NIST CSF v2.0 implementation toolkit page const { V: TV, MAXW: TMW, FONT: TFT } = window; const N_ACCENT = TV.g600; const N_ACCENTBG = TV.g100; /* ── BREADCRUMB ──────────────────────────────────────────── */ const NiCrumb = ({ onNav }) => (
/ / NIST CSF Toolkit
); const niCrumbBtn = {background:'none',border:'none',cursor:'pointer',color:'#7A7A8A',fontSize:13,fontWeight:600,padding:0,fontFamily:"'DM Sans', system-ui, sans-serif"}; /* ── HERO ────────────────────────────────────────────────── */ const NiHero = ({ onNav }) => (
US Gov Foundation NIST CSF v2.0

The NIST CSF toolkit, ready to deploy.

A complete, practitioner-maintained document set — 14 policies, 12 procedures, and subcategory templates across all six CSF v2.0 functions — tailored to your organization so you implement the framework without starting from a blank page.

onNav('evaluation')}>Start the readiness evaluation document.getElementById('downloads')?.scrollIntoView({behavior:'smooth',block:'start'})}>See what's inside
Inside the toolkit
{[['doc','14','Approval-ready policies'],['file','12','Operational procedures'],['layers',String(window.TK_NIST.CTRL_COUNT),'CSF v2.0 subcategory templates'],['clipboard','120+','Profiles, tier checklists & samples']].map(([ic,n,l],i)=>(
{n}
{l}
))}
); /* ── OVERVIEW ────────────────────────────────────────────── */ const NiOverview = () => (
Overview

All six functions covered — from Govern to Recover.

The Verigo NIST CSF v2.0 toolkit is the document backbone of a structured cybersecurity program. NIST CSF v2.0 added the Govern function as the sixth pillar — this toolkit covers all six, with subcategory templates across every outcome statement from GV.OC-01 to RC.CO-04.

Each artefact is tailored to your sector, scope, and target tier — embedded into how you operate, the Compliance by Design way, so your current profile generates evidence continuously.

{[['compass','Profile-driven','Built around current and target profiles — so your implementation roadmap comes straight from the gap between the two.'],['network','Multi-framework ready','Subcategories are mapped to ISO 27001, HIPAA, PCI-DSS, and FISMA so evidence is reused across programs.'],['refresh','v2.0 native','Fully aligned to NIST CSF v2.0, including the new Govern function and the updated subcategory structure.']].map(([ic,t,d],i)=>(

{t}

{d}

))}
); /* ── COVERAGE ────────────────────────────────────────────── */ const NiCoverage = () => (
Four implementation tiers
{window.TK_NIST.TIERS.map((t,i)=>{const pop=!!t.popular;return(
{t.id} {pop&&Target}
{t.name.split(' — ')[1]}

{t.blurb}

);})}
Six CSF functions · {window.TK_NIST.CTRL_COUNT} subcategories
{window.TK_NIST.FUNCS.map((f,i)=>{ const count=f.cats.reduce((a,c)=>a+c.items.length,0); return(
{f.fn}
{f.name}
{count} subcategories
); })}
); /* ── CONTENTS EXPLORER ────────────────────────────────────── */ const NiContents = ({ onDownload, unlocked }) => { const [tab, setTab] = React.useState('policies'); const A = window.TK_NIST.ASSETS; const tabs = [['policies','Policies',A.policies.count],['procedures','Procedures',A.procedures.count],['controls','Subcategory Templates',A.controls.count]]; const meta = A[tab]; const renderList = () => { if (tab === 'controls') return (
{window.TK_NIST.FUNCS.map((f,fi)=>(
{f.fn} · {f.name}
{f.cats.map((c,ci)=>(
{c.cat} · {c.name}
{c.items.map(([id,t],k)=>(
{id} {t}
))}
))}
))}
); const list = tab==='policies'?window.TK_NIST.POLICIES:window.TK_NIST.PROCEDURES; return (
{list.map(([t,d],i)=>(
{String(i+1).padStart(2,'0')}
{t}
{d}
))}
); }; return (
{tabs.map(([id,label,count])=>())}
{meta.label}
{meta.blurb}
onDownload(tab)} style={{flexShrink:0}}> {unlocked?`Download PDF · ${meta.count} ${meta.unit}`:`Download PDF (${meta.count} ${meta.unit})`}
{renderList()}
); }; /* ── PRICING ──────────────────────────────────────────────── */ const NiPricing = ({ onNav }) => { const TIERS = window.TK_NIST.PKG_TIERS; const baseFmt = window.TK_NIST.fmtPrice(window.TK_NIST.QUOTE_BASE.price); return (
{TIERS.map((t,i)=>{ const pop=!!t.popular; return (
{pop&&
Most popular
}
{t.name}

{t.tagline}

{(t.features||[]).slice(0,4).map((f,fi)=>(
{f}
))}
); })}
onNav('checkout')}>Build custom package Starts from {baseFmt} · add only what you need · live pricing
); }; /* ── EVAL BAND ────────────────────────────────────────────── */ const NiEvalBand = ({ onNav }) => (
Online evaluation · tier-aware

Know where you stand across all six functions.

Our NIST CSF evaluation scores your current state across all six functions — and maps every gap straight to the toolkit subcategory that closes it.

onNav('evaluation')}>Start the evaluation onNav('evaluation')}>See how it works
{[['target','Pick your target tier','Tier 1–4 — your choice shapes the evaluation depth and recommendations.'],['gauge','Get your readiness score','Instant maturity score across GV, ID, PR, DE, RS, and RC.'],['flag','Build your target profile','Every gap maps to the subcategory template that closes it.']].map(([ic,t,d],i)=>(
{String(i+1).padStart(2,'0')}

{t}

{d}

))}
); /* ── PAGE ────────────────────────────────────────────────── */ const ToolkitNISTPage = ({ onNav }) => { const [modalAsset, setModalAsset] = React.useState(null); const [unlocked, setUnlocked] = React.useState(false); const sessionOk = () => { try { return !!sessionStorage.getItem('verigo_dl_ok'); } catch(e) { return false; } }; React.useEffect(() => { if (sessionOk()) setUnlocked(true); }, []); const onDownload = (asset) => { if (sessionOk()) window.TK_NIST.generatePDF(asset, window.TK_NIST.getUser()||{}); else setModalAsset(asset); }; const onModalSubmit = (form) => { window.TK_NIST.storeLead(form); try{sessionStorage.setItem('verigo_dl_ok','1');}catch(e){} setUnlocked(true); const a=modalAsset; setModalAsset(null); setTimeout(()=>window.TK_NIST.generatePDF(a,form),60); }; const A = modalAsset ? window.TK_NIST.ASSETS[modalAsset] : null; return (
{A && setModalAsset(null)} onSubmit={onModalSubmit} />}
); }; Object.assign(window, { ToolkitNISTPage });